From 307b6692c9786b35059ae85f571dfd82a8b05fc5 Mon Sep 17 00:00:00 2001 From: pulumi-bot Date: Tue, 1 Oct 2024 00:13:23 +0000 Subject: [PATCH 1/2] make tfgen --- examples/go.mod | 6 +- examples/go.sum | 8 +- provider/cmd/pulumi-resource-gcp/schema.json | 346 +++++++++---------- provider/go.mod | 8 +- provider/go.sum | 12 +- sdk/go.mod | 4 + sdk/go.sum | 4 +- 7 files changed, 200 insertions(+), 188 deletions(-) diff --git a/examples/go.mod b/examples/go.mod index 7d14576c7d..7acfd8f185 100644 --- a/examples/go.mod +++ b/examples/go.mod @@ -6,7 +6,7 @@ require ( github.com/pulumi/pulumi-gcp/sdk/v6 v6.67.0 github.com/pulumi/pulumi-gcp/sdk/v8 v8.0.0-00010101000000-000000000000 github.com/pulumi/pulumi/pkg/v3 v3.133.0 - github.com/pulumi/pulumi/sdk/v3 v3.133.0 + github.com/pulumi/pulumi/sdk/v3 v3.134.1 github.com/stretchr/testify v1.9.0 ) @@ -185,3 +185,7 @@ require ( gopkg.in/yaml.v3 v3.0.1 // indirect lukechampine.com/frand v1.4.2 // indirect ) + +replace github.com/pulumi/pulumi/pkg/v3 => github.com/pulumi/pulumi/pkg/v3 v3.134.2-0.20240930184128-135d6264bcc6 + +replace github.com/pulumi/pulumi/sdk/v3 => github.com/pulumi/pulumi/sdk/v3 v3.134.2-0.20240930184128-135d6264bcc6 diff --git a/examples/go.sum b/examples/go.sum index 4e02caba90..b51f20bb6a 100644 --- a/examples/go.sum +++ b/examples/go.sum @@ -349,10 +349,10 @@ github.com/pulumi/esc v0.10.0 h1:jzBKzkLVW0mePeanDRfqSQoCJ5yrkux0jIwAkUxpRKE= github.com/pulumi/esc v0.10.0/go.mod h1:2Bfa+FWj/xl8CKqRTWbWgDX0SOD4opdQgvYSURTGK2c= github.com/pulumi/pulumi-gcp/sdk/v6 v6.67.0 h1:toKDTQrGp11iU3FQsxqFN+1fgxx4GQFvsmLbUe9++B8= github.com/pulumi/pulumi-gcp/sdk/v6 v6.67.0/go.mod h1:0H6CtMuOB754n2Yzu6XqHqeU99fmH/fsBUKLsMic2OY= -github.com/pulumi/pulumi/pkg/v3 v3.133.0 h1:j1rd7ToLZIQc5H0427ISOXSbOIIemZ6B0MXtRhQ38Yg= -github.com/pulumi/pulumi/pkg/v3 v3.133.0/go.mod h1:JtMAnrsFIccO138WcMfPdhO0PioDukKihnZC0xTRLwo= -github.com/pulumi/pulumi/sdk/v3 v3.133.0 h1:o+7dbJZY9BVgAjOF5GYIWgjp/zpKAgWZwD4pPjUMXKQ= -github.com/pulumi/pulumi/sdk/v3 v3.133.0/go.mod h1:J5kQEX8v87aeUhk6NdQXnjCo1DbiOnOiL3Sf2DuDda8= +github.com/pulumi/pulumi/pkg/v3 v3.134.2-0.20240930184128-135d6264bcc6 h1:mM4RGu/JnhW/d2kZuwaksOIisw5ff620k2c1wFbmW5Y= +github.com/pulumi/pulumi/pkg/v3 v3.134.2-0.20240930184128-135d6264bcc6/go.mod h1:Be8oFq0YzWMXCq7BN3+YO18XzYjQzowHr8DmtT2sMQE= +github.com/pulumi/pulumi/sdk/v3 v3.134.2-0.20240930184128-135d6264bcc6 h1:Hsll4DRkGnzT8kTsSdWDlcd9hs690aKoJNpoXVvhO2o= +github.com/pulumi/pulumi/sdk/v3 v3.134.2-0.20240930184128-135d6264bcc6/go.mod h1:J5kQEX8v87aeUhk6NdQXnjCo1DbiOnOiL3Sf2DuDda8= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= diff --git a/provider/cmd/pulumi-resource-gcp/schema.json b/provider/cmd/pulumi-resource-gcp/schema.json index 02350b5350..ea3bbd9e7e 100644 --- a/provider/cmd/pulumi-resource-gcp/schema.json +++ b/provider/cmd/pulumi-resource-gcp/schema.json @@ -117371,7 +117371,7 @@ } }, "gcp:alloydb/cluster:Cluster": { - "description": "## Example Usage\n\n### Alloydb Cluster Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultNetwork = new gcp.compute.Network(\"default\", {name: \"alloydb-cluster\"});\nconst _default = new gcp.alloydb.Cluster(\"default\", {\n clusterId: \"alloydb-cluster\",\n location: \"us-central1\",\n networkConfig: {\n network: defaultNetwork.id,\n },\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_network = gcp.compute.Network(\"default\", name=\"alloydb-cluster\")\ndefault = gcp.alloydb.Cluster(\"default\",\n cluster_id=\"alloydb-cluster\",\n location=\"us-central1\",\n network_config={\n \"network\": default_network.id,\n })\nproject = gcp.organizations.get_project()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultNetwork = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"alloydb-cluster\",\n });\n\n var @default = new Gcp.Alloydb.Cluster(\"default\", new()\n {\n ClusterId = \"alloydb-cluster\",\n Location = \"us-central1\",\n NetworkConfig = new Gcp.Alloydb.Inputs.ClusterNetworkConfigArgs\n {\n Network = defaultNetwork.Id,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/alloydb\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdefaultNetwork, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"alloydb-cluster\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = alloydb.NewCluster(ctx, \"default\", \u0026alloydb.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"alloydb-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNetworkConfig: \u0026alloydb.ClusterNetworkConfigArgs{\n\t\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.alloydb.Cluster;\nimport com.pulumi.gcp.alloydb.ClusterArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterNetworkConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultNetwork = new Network(\"defaultNetwork\", NetworkArgs.builder()\n .name(\"alloydb-cluster\")\n .build());\n\n var default_ = new Cluster(\"default\", ClusterArgs.builder()\n .clusterId(\"alloydb-cluster\")\n .location(\"us-central1\")\n .networkConfig(ClusterNetworkConfigArgs.builder()\n .network(defaultNetwork.id())\n .build())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:alloydb:Cluster\n properties:\n clusterId: alloydb-cluster\n location: us-central1\n networkConfig:\n network: ${defaultNetwork.id}\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: alloydb-cluster\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Alloydb Cluster Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {name: \"alloydb-cluster-full\"});\nconst full = new gcp.alloydb.Cluster(\"full\", {\n clusterId: \"alloydb-cluster-full\",\n location: \"us-central1\",\n networkConfig: {\n network: _default.id,\n },\n databaseVersion: \"POSTGRES_15\",\n initialUser: {\n user: \"alloydb-cluster-full\",\n password: \"alloydb-cluster-full\",\n },\n continuousBackupConfig: {\n enabled: true,\n recoveryWindowDays: 14,\n },\n automatedBackupPolicy: {\n location: \"us-central1\",\n backupWindow: \"1800s\",\n enabled: true,\n weeklySchedule: {\n daysOfWeeks: [\"MONDAY\"],\n startTimes: [{\n hours: 23,\n minutes: 0,\n seconds: 0,\n nanos: 0,\n }],\n },\n quantityBasedRetention: {\n count: 1,\n },\n labels: {\n test: \"alloydb-cluster-full\",\n },\n },\n labels: {\n test: \"alloydb-cluster-full\",\n },\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\", name=\"alloydb-cluster-full\")\nfull = gcp.alloydb.Cluster(\"full\",\n cluster_id=\"alloydb-cluster-full\",\n location=\"us-central1\",\n network_config={\n \"network\": default.id,\n },\n database_version=\"POSTGRES_15\",\n initial_user={\n \"user\": \"alloydb-cluster-full\",\n \"password\": \"alloydb-cluster-full\",\n },\n continuous_backup_config={\n \"enabled\": True,\n \"recovery_window_days\": 14,\n },\n automated_backup_policy={\n \"location\": \"us-central1\",\n \"backup_window\": \"1800s\",\n \"enabled\": True,\n \"weekly_schedule\": {\n \"days_of_weeks\": [\"MONDAY\"],\n \"start_times\": [{\n \"hours\": 23,\n \"minutes\": 0,\n \"seconds\": 0,\n \"nanos\": 0,\n }],\n },\n \"quantity_based_retention\": {\n \"count\": 1,\n },\n \"labels\": {\n \"test\": \"alloydb-cluster-full\",\n },\n },\n labels={\n \"test\": \"alloydb-cluster-full\",\n })\nproject = gcp.organizations.get_project()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"alloydb-cluster-full\",\n });\n\n var full = new Gcp.Alloydb.Cluster(\"full\", new()\n {\n ClusterId = \"alloydb-cluster-full\",\n Location = \"us-central1\",\n NetworkConfig = new Gcp.Alloydb.Inputs.ClusterNetworkConfigArgs\n {\n Network = @default.Id,\n },\n DatabaseVersion = \"POSTGRES_15\",\n InitialUser = new Gcp.Alloydb.Inputs.ClusterInitialUserArgs\n {\n User = \"alloydb-cluster-full\",\n Password = \"alloydb-cluster-full\",\n },\n ContinuousBackupConfig = new Gcp.Alloydb.Inputs.ClusterContinuousBackupConfigArgs\n {\n Enabled = true,\n RecoveryWindowDays = 14,\n },\n AutomatedBackupPolicy = new Gcp.Alloydb.Inputs.ClusterAutomatedBackupPolicyArgs\n {\n Location = \"us-central1\",\n BackupWindow = \"1800s\",\n Enabled = true,\n WeeklySchedule = new Gcp.Alloydb.Inputs.ClusterAutomatedBackupPolicyWeeklyScheduleArgs\n {\n DaysOfWeeks = new[]\n {\n \"MONDAY\",\n },\n StartTimes = new[]\n {\n new Gcp.Alloydb.Inputs.ClusterAutomatedBackupPolicyWeeklyScheduleStartTimeArgs\n {\n Hours = 23,\n Minutes = 0,\n Seconds = 0,\n Nanos = 0,\n },\n },\n },\n QuantityBasedRetention = new Gcp.Alloydb.Inputs.ClusterAutomatedBackupPolicyQuantityBasedRetentionArgs\n {\n Count = 1,\n },\n Labels = \n {\n { \"test\", \"alloydb-cluster-full\" },\n },\n },\n Labels = \n {\n { \"test\", \"alloydb-cluster-full\" },\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/alloydb\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"alloydb-cluster-full\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = alloydb.NewCluster(ctx, \"full\", \u0026alloydb.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"alloydb-cluster-full\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNetworkConfig: \u0026alloydb.ClusterNetworkConfigArgs{\n\t\t\t\tNetwork: _default.ID(),\n\t\t\t},\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_15\"),\n\t\t\tInitialUser: \u0026alloydb.ClusterInitialUserArgs{\n\t\t\t\tUser: pulumi.String(\"alloydb-cluster-full\"),\n\t\t\t\tPassword: pulumi.String(\"alloydb-cluster-full\"),\n\t\t\t},\n\t\t\tContinuousBackupConfig: \u0026alloydb.ClusterContinuousBackupConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\tRecoveryWindowDays: pulumi.Int(14),\n\t\t\t},\n\t\t\tAutomatedBackupPolicy: \u0026alloydb.ClusterAutomatedBackupPolicyArgs{\n\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\tBackupWindow: pulumi.String(\"1800s\"),\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\tWeeklySchedule: \u0026alloydb.ClusterAutomatedBackupPolicyWeeklyScheduleArgs{\n\t\t\t\t\tDaysOfWeeks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"MONDAY\"),\n\t\t\t\t\t},\n\t\t\t\t\tStartTimes: alloydb.ClusterAutomatedBackupPolicyWeeklyScheduleStartTimeArray{\n\t\t\t\t\t\t\u0026alloydb.ClusterAutomatedBackupPolicyWeeklyScheduleStartTimeArgs{\n\t\t\t\t\t\t\tHours: pulumi.Int(23),\n\t\t\t\t\t\t\tMinutes: pulumi.Int(0),\n\t\t\t\t\t\t\tSeconds: pulumi.Int(0),\n\t\t\t\t\t\t\tNanos: pulumi.Int(0),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tQuantityBasedRetention: \u0026alloydb.ClusterAutomatedBackupPolicyQuantityBasedRetentionArgs{\n\t\t\t\t\tCount: pulumi.Int(1),\n\t\t\t\t},\n\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\"test\": pulumi.String(\"alloydb-cluster-full\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"test\": pulumi.String(\"alloydb-cluster-full\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.alloydb.Cluster;\nimport com.pulumi.gcp.alloydb.ClusterArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterNetworkConfigArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterInitialUserArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterContinuousBackupConfigArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterAutomatedBackupPolicyArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterAutomatedBackupPolicyWeeklyScheduleArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterAutomatedBackupPolicyQuantityBasedRetentionArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"alloydb-cluster-full\")\n .build());\n\n var full = new Cluster(\"full\", ClusterArgs.builder()\n .clusterId(\"alloydb-cluster-full\")\n .location(\"us-central1\")\n .networkConfig(ClusterNetworkConfigArgs.builder()\n .network(default_.id())\n .build())\n .databaseVersion(\"POSTGRES_15\")\n .initialUser(ClusterInitialUserArgs.builder()\n .user(\"alloydb-cluster-full\")\n .password(\"alloydb-cluster-full\")\n .build())\n .continuousBackupConfig(ClusterContinuousBackupConfigArgs.builder()\n .enabled(true)\n .recoveryWindowDays(14)\n .build())\n .automatedBackupPolicy(ClusterAutomatedBackupPolicyArgs.builder()\n .location(\"us-central1\")\n .backupWindow(\"1800s\")\n .enabled(true)\n .weeklySchedule(ClusterAutomatedBackupPolicyWeeklyScheduleArgs.builder()\n .daysOfWeeks(\"MONDAY\")\n .startTimes(ClusterAutomatedBackupPolicyWeeklyScheduleStartTimeArgs.builder()\n .hours(23)\n .minutes(0)\n .seconds(0)\n .nanos(0)\n .build())\n .build())\n .quantityBasedRetention(ClusterAutomatedBackupPolicyQuantityBasedRetentionArgs.builder()\n .count(1)\n .build())\n .labels(Map.of(\"test\", \"alloydb-cluster-full\"))\n .build())\n .labels(Map.of(\"test\", \"alloydb-cluster-full\"))\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n full:\n type: gcp:alloydb:Cluster\n properties:\n clusterId: alloydb-cluster-full\n location: us-central1\n networkConfig:\n network: ${default.id}\n databaseVersion: POSTGRES_15\n initialUser:\n user: alloydb-cluster-full\n password: alloydb-cluster-full\n continuousBackupConfig:\n enabled: true\n recoveryWindowDays: 14\n automatedBackupPolicy:\n location: us-central1\n backupWindow: 1800s\n enabled: true\n weeklySchedule:\n daysOfWeeks:\n - MONDAY\n startTimes:\n - hours: 23\n minutes: 0\n seconds: 0\n nanos: 0\n quantityBasedRetention:\n count: 1\n labels:\n test: alloydb-cluster-full\n labels:\n test: alloydb-cluster-full\n default:\n type: gcp:compute:Network\n properties:\n name: alloydb-cluster-full\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Alloydb Cluster Restore\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nresources:\n source:\n type: gcp:alloydb:Cluster\n properties:\n clusterId: alloydb-source-cluster\n location: us-central1\n network: ${default.id}\n initialUser:\n password: alloydb-source-cluster\n sourceInstance:\n type: gcp:alloydb:Instance\n name: source\n properties:\n cluster: ${source.name}\n instanceId: alloydb-instance\n instanceType: PRIMARY\n machineConfig:\n cpuCount: 2\n options:\n dependson:\n - ${vpcConnection}\n sourceBackup:\n type: gcp:alloydb:Backup\n name: source\n properties:\n backupId: alloydb-backup\n location: us-central1\n clusterName: ${source.name}\n options:\n dependson:\n - ${sourceInstance}\n restoredFromBackup:\n type: gcp:alloydb:Cluster\n name: restored_from_backup\n properties:\n clusterId: alloydb-backup-restored\n location: us-central1\n networkConfig:\n network: ${default.id}\n restoreBackupSource:\n backupName: ${sourceBackup.name}\n restoredViaPitr:\n type: gcp:alloydb:Cluster\n name: restored_via_pitr\n properties:\n clusterId: alloydb-pitr-restored\n location: us-central1\n networkConfig:\n network: ${default.id}\n restoreContinuousBackupSource:\n cluster: ${source.name}\n pointInTime: 2023-08-03T19:19:00.094Z\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: alloydb-source-cluster\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 16\n network: ${default.id}\n vpcConnection:\n type: gcp:servicenetworking:Connection\n name: vpc_connection\n properties:\n network: ${default.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAlloc.name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n default:\n fn::invoke:\n Function: gcp:compute:getNetwork\n Arguments:\n name: alloydb-network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Alloydb Secondary Cluster Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {name: \"alloydb-secondary-cluster\"});\nconst primary = new gcp.alloydb.Cluster(\"primary\", {\n clusterId: \"alloydb-primary-cluster\",\n location: \"us-central1\",\n networkConfig: {\n network: _default.id,\n },\n});\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"alloydb-secondary-cluster\",\n addressType: \"INTERNAL\",\n purpose: \"VPC_PEERING\",\n prefixLength: 16,\n network: _default.id,\n});\nconst vpcConnection = new gcp.servicenetworking.Connection(\"vpc_connection\", {\n network: _default.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAlloc.name],\n});\nconst primaryInstance = new gcp.alloydb.Instance(\"primary\", {\n cluster: primary.name,\n instanceId: \"alloydb-primary-instance\",\n instanceType: \"PRIMARY\",\n machineConfig: {\n cpuCount: 2,\n },\n}, {\n dependsOn: [vpcConnection],\n});\nconst secondary = new gcp.alloydb.Cluster(\"secondary\", {\n clusterId: \"alloydb-secondary-cluster\",\n location: \"us-east1\",\n networkConfig: {\n network: _default.id,\n },\n clusterType: \"SECONDARY\",\n continuousBackupConfig: {\n enabled: false,\n },\n secondaryConfig: {\n primaryClusterName: primary.name,\n },\n}, {\n dependsOn: [primaryInstance],\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\", name=\"alloydb-secondary-cluster\")\nprimary = gcp.alloydb.Cluster(\"primary\",\n cluster_id=\"alloydb-primary-cluster\",\n location=\"us-central1\",\n network_config={\n \"network\": default.id,\n })\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"alloydb-secondary-cluster\",\n address_type=\"INTERNAL\",\n purpose=\"VPC_PEERING\",\n prefix_length=16,\n network=default.id)\nvpc_connection = gcp.servicenetworking.Connection(\"vpc_connection\",\n network=default.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_alloc.name])\nprimary_instance = gcp.alloydb.Instance(\"primary\",\n cluster=primary.name,\n instance_id=\"alloydb-primary-instance\",\n instance_type=\"PRIMARY\",\n machine_config={\n \"cpu_count\": 2,\n },\n opts = pulumi.ResourceOptions(depends_on=[vpc_connection]))\nsecondary = gcp.alloydb.Cluster(\"secondary\",\n cluster_id=\"alloydb-secondary-cluster\",\n location=\"us-east1\",\n network_config={\n \"network\": default.id,\n },\n cluster_type=\"SECONDARY\",\n continuous_backup_config={\n \"enabled\": False,\n },\n secondary_config={\n \"primary_cluster_name\": primary.name,\n },\n opts = pulumi.ResourceOptions(depends_on=[primary_instance]))\nproject = gcp.organizations.get_project()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"alloydb-secondary-cluster\",\n });\n\n var primary = new Gcp.Alloydb.Cluster(\"primary\", new()\n {\n ClusterId = \"alloydb-primary-cluster\",\n Location = \"us-central1\",\n NetworkConfig = new Gcp.Alloydb.Inputs.ClusterNetworkConfigArgs\n {\n Network = @default.Id,\n },\n });\n\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"alloydb-secondary-cluster\",\n AddressType = \"INTERNAL\",\n Purpose = \"VPC_PEERING\",\n PrefixLength = 16,\n Network = @default.Id,\n });\n\n var vpcConnection = new Gcp.ServiceNetworking.Connection(\"vpc_connection\", new()\n {\n Network = @default.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAlloc.Name,\n },\n });\n\n var primaryInstance = new Gcp.Alloydb.Instance(\"primary\", new()\n {\n Cluster = primary.Name,\n InstanceId = \"alloydb-primary-instance\",\n InstanceType = \"PRIMARY\",\n MachineConfig = new Gcp.Alloydb.Inputs.InstanceMachineConfigArgs\n {\n CpuCount = 2,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vpcConnection,\n },\n });\n\n var secondary = new Gcp.Alloydb.Cluster(\"secondary\", new()\n {\n ClusterId = \"alloydb-secondary-cluster\",\n Location = \"us-east1\",\n NetworkConfig = new Gcp.Alloydb.Inputs.ClusterNetworkConfigArgs\n {\n Network = @default.Id,\n },\n ClusterType = \"SECONDARY\",\n ContinuousBackupConfig = new Gcp.Alloydb.Inputs.ClusterContinuousBackupConfigArgs\n {\n Enabled = false,\n },\n SecondaryConfig = new Gcp.Alloydb.Inputs.ClusterSecondaryConfigArgs\n {\n PrimaryClusterName = primary.Name,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n primaryInstance,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/alloydb\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"alloydb-secondary-cluster\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimary, err := alloydb.NewCluster(ctx, \"primary\", \u0026alloydb.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"alloydb-primary-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNetworkConfig: \u0026alloydb.ClusterNetworkConfigArgs{\n\t\t\t\tNetwork: _default.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"alloydb-secondary-cluster\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvpcConnection, err := servicenetworking.NewConnection(ctx, \"vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: _default.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tprivateIpAlloc.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryInstance, err := alloydb.NewInstance(ctx, \"primary\", \u0026alloydb.InstanceArgs{\n\t\t\tCluster: primary.Name,\n\t\t\tInstanceId: pulumi.String(\"alloydb-primary-instance\"),\n\t\t\tInstanceType: pulumi.String(\"PRIMARY\"),\n\t\t\tMachineConfig: \u0026alloydb.InstanceMachineConfigArgs{\n\t\t\t\tCpuCount: pulumi.Int(2),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = alloydb.NewCluster(ctx, \"secondary\", \u0026alloydb.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"alloydb-secondary-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-east1\"),\n\t\t\tNetworkConfig: \u0026alloydb.ClusterNetworkConfigArgs{\n\t\t\t\tNetwork: _default.ID(),\n\t\t\t},\n\t\t\tClusterType: pulumi.String(\"SECONDARY\"),\n\t\t\tContinuousBackupConfig: \u0026alloydb.ClusterContinuousBackupConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(false),\n\t\t\t},\n\t\t\tSecondaryConfig: \u0026alloydb.ClusterSecondaryConfigArgs{\n\t\t\t\tPrimaryClusterName: primary.Name,\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tprimaryInstance,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.alloydb.Cluster;\nimport com.pulumi.gcp.alloydb.ClusterArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterNetworkConfigArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.alloydb.Instance;\nimport com.pulumi.gcp.alloydb.InstanceArgs;\nimport com.pulumi.gcp.alloydb.inputs.InstanceMachineConfigArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterContinuousBackupConfigArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterSecondaryConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"alloydb-secondary-cluster\")\n .build());\n\n var primary = new Cluster(\"primary\", ClusterArgs.builder()\n .clusterId(\"alloydb-primary-cluster\")\n .location(\"us-central1\")\n .networkConfig(ClusterNetworkConfigArgs.builder()\n .network(default_.id())\n .build())\n .build());\n\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"alloydb-secondary-cluster\")\n .addressType(\"INTERNAL\")\n .purpose(\"VPC_PEERING\")\n .prefixLength(16)\n .network(default_.id())\n .build());\n\n var vpcConnection = new Connection(\"vpcConnection\", ConnectionArgs.builder()\n .network(default_.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAlloc.name())\n .build());\n\n var primaryInstance = new Instance(\"primaryInstance\", InstanceArgs.builder()\n .cluster(primary.name())\n .instanceId(\"alloydb-primary-instance\")\n .instanceType(\"PRIMARY\")\n .machineConfig(InstanceMachineConfigArgs.builder()\n .cpuCount(2)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(vpcConnection)\n .build());\n\n var secondary = new Cluster(\"secondary\", ClusterArgs.builder()\n .clusterId(\"alloydb-secondary-cluster\")\n .location(\"us-east1\")\n .networkConfig(ClusterNetworkConfigArgs.builder()\n .network(default_.id())\n .build())\n .clusterType(\"SECONDARY\")\n .continuousBackupConfig(ClusterContinuousBackupConfigArgs.builder()\n .enabled(false)\n .build())\n .secondaryConfig(ClusterSecondaryConfigArgs.builder()\n .primaryClusterName(primary.name())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(primaryInstance)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:alloydb:Cluster\n properties:\n clusterId: alloydb-primary-cluster\n location: us-central1\n networkConfig:\n network: ${default.id}\n primaryInstance:\n type: gcp:alloydb:Instance\n name: primary\n properties:\n cluster: ${primary.name}\n instanceId: alloydb-primary-instance\n instanceType: PRIMARY\n machineConfig:\n cpuCount: 2\n options:\n dependson:\n - ${vpcConnection}\n secondary:\n type: gcp:alloydb:Cluster\n properties:\n clusterId: alloydb-secondary-cluster\n location: us-east1\n networkConfig:\n network: ${default.id}\n clusterType: SECONDARY\n continuousBackupConfig:\n enabled: false\n secondaryConfig:\n primaryClusterName: ${primary.name}\n options:\n dependson:\n - ${primaryInstance}\n default:\n type: gcp:compute:Network\n properties:\n name: alloydb-secondary-cluster\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: alloydb-secondary-cluster\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 16\n network: ${default.id}\n vpcConnection:\n type: gcp:servicenetworking:Connection\n name: vpc_connection\n properties:\n network: ${default.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAlloc.name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCluster can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/clusters/{{cluster_id}}`\n\n* `{{project}}/{{location}}/{{cluster_id}}`\n\n* `{{location}}/{{cluster_id}}`\n\n* `{{cluster_id}}`\n\nWhen using the `pulumi import` command, Cluster can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:alloydb/cluster:Cluster default projects/{{project}}/locations/{{location}}/clusters/{{cluster_id}}\n```\n\n```sh\n$ pulumi import gcp:alloydb/cluster:Cluster default {{project}}/{{location}}/{{cluster_id}}\n```\n\n```sh\n$ pulumi import gcp:alloydb/cluster:Cluster default {{location}}/{{cluster_id}}\n```\n\n```sh\n$ pulumi import gcp:alloydb/cluster:Cluster default {{cluster_id}}\n```\n\n", + "description": "## Example Usage\n\n### Alloydb Cluster Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultNetwork = new gcp.compute.Network(\"default\", {name: \"alloydb-cluster\"});\nconst _default = new gcp.alloydb.Cluster(\"default\", {\n clusterId: \"alloydb-cluster\",\n location: \"us-central1\",\n networkConfig: {\n network: defaultNetwork.id,\n },\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_network = gcp.compute.Network(\"default\", name=\"alloydb-cluster\")\ndefault = gcp.alloydb.Cluster(\"default\",\n cluster_id=\"alloydb-cluster\",\n location=\"us-central1\",\n network_config={\n \"network\": default_network.id,\n })\nproject = gcp.organizations.get_project()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultNetwork = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"alloydb-cluster\",\n });\n\n var @default = new Gcp.Alloydb.Cluster(\"default\", new()\n {\n ClusterId = \"alloydb-cluster\",\n Location = \"us-central1\",\n NetworkConfig = new Gcp.Alloydb.Inputs.ClusterNetworkConfigArgs\n {\n Network = defaultNetwork.Id,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/alloydb\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdefaultNetwork, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"alloydb-cluster\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = alloydb.NewCluster(ctx, \"default\", \u0026alloydb.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"alloydb-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNetworkConfig: \u0026alloydb.ClusterNetworkConfigArgs{\n\t\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.alloydb.Cluster;\nimport com.pulumi.gcp.alloydb.ClusterArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterNetworkConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultNetwork = new Network(\"defaultNetwork\", NetworkArgs.builder()\n .name(\"alloydb-cluster\")\n .build());\n\n var default_ = new Cluster(\"default\", ClusterArgs.builder()\n .clusterId(\"alloydb-cluster\")\n .location(\"us-central1\")\n .networkConfig(ClusterNetworkConfigArgs.builder()\n .network(defaultNetwork.id())\n .build())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:alloydb:Cluster\n properties:\n clusterId: alloydb-cluster\n location: us-central1\n networkConfig:\n network: ${defaultNetwork.id}\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: alloydb-cluster\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Alloydb Cluster Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {name: \"alloydb-cluster-full\"});\nconst full = new gcp.alloydb.Cluster(\"full\", {\n clusterId: \"alloydb-cluster-full\",\n location: \"us-central1\",\n networkConfig: {\n network: _default.id,\n },\n databaseVersion: \"POSTGRES_15\",\n initialUser: {\n user: \"alloydb-cluster-full\",\n password: \"alloydb-cluster-full\",\n },\n continuousBackupConfig: {\n enabled: true,\n recoveryWindowDays: 14,\n },\n automatedBackupPolicy: {\n location: \"us-central1\",\n backupWindow: \"1800s\",\n enabled: true,\n weeklySchedule: {\n daysOfWeeks: [\"MONDAY\"],\n startTimes: [{\n hours: 23,\n minutes: 0,\n seconds: 0,\n nanos: 0,\n }],\n },\n quantityBasedRetention: {\n count: 1,\n },\n labels: {\n test: \"alloydb-cluster-full\",\n },\n },\n labels: {\n test: \"alloydb-cluster-full\",\n },\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\", name=\"alloydb-cluster-full\")\nfull = gcp.alloydb.Cluster(\"full\",\n cluster_id=\"alloydb-cluster-full\",\n location=\"us-central1\",\n network_config={\n \"network\": default.id,\n },\n database_version=\"POSTGRES_15\",\n initial_user={\n \"user\": \"alloydb-cluster-full\",\n \"password\": \"alloydb-cluster-full\",\n },\n continuous_backup_config={\n \"enabled\": True,\n \"recovery_window_days\": 14,\n },\n automated_backup_policy={\n \"location\": \"us-central1\",\n \"backup_window\": \"1800s\",\n \"enabled\": True,\n \"weekly_schedule\": {\n \"days_of_weeks\": [\"MONDAY\"],\n \"start_times\": [{\n \"hours\": 23,\n \"minutes\": 0,\n \"seconds\": 0,\n \"nanos\": 0,\n }],\n },\n \"quantity_based_retention\": {\n \"count\": 1,\n },\n \"labels\": {\n \"test\": \"alloydb-cluster-full\",\n },\n },\n labels={\n \"test\": \"alloydb-cluster-full\",\n })\nproject = gcp.organizations.get_project()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"alloydb-cluster-full\",\n });\n\n var full = new Gcp.Alloydb.Cluster(\"full\", new()\n {\n ClusterId = \"alloydb-cluster-full\",\n Location = \"us-central1\",\n NetworkConfig = new Gcp.Alloydb.Inputs.ClusterNetworkConfigArgs\n {\n Network = @default.Id,\n },\n DatabaseVersion = \"POSTGRES_15\",\n InitialUser = new Gcp.Alloydb.Inputs.ClusterInitialUserArgs\n {\n User = \"alloydb-cluster-full\",\n Password = \"alloydb-cluster-full\",\n },\n ContinuousBackupConfig = new Gcp.Alloydb.Inputs.ClusterContinuousBackupConfigArgs\n {\n Enabled = true,\n RecoveryWindowDays = 14,\n },\n AutomatedBackupPolicy = new Gcp.Alloydb.Inputs.ClusterAutomatedBackupPolicyArgs\n {\n Location = \"us-central1\",\n BackupWindow = \"1800s\",\n Enabled = true,\n WeeklySchedule = new Gcp.Alloydb.Inputs.ClusterAutomatedBackupPolicyWeeklyScheduleArgs\n {\n DaysOfWeeks = new[]\n {\n \"MONDAY\",\n },\n StartTimes = new[]\n {\n new Gcp.Alloydb.Inputs.ClusterAutomatedBackupPolicyWeeklyScheduleStartTimeArgs\n {\n Hours = 23,\n Minutes = 0,\n Seconds = 0,\n Nanos = 0,\n },\n },\n },\n QuantityBasedRetention = new Gcp.Alloydb.Inputs.ClusterAutomatedBackupPolicyQuantityBasedRetentionArgs\n {\n Count = 1,\n },\n Labels = \n {\n { \"test\", \"alloydb-cluster-full\" },\n },\n },\n Labels = \n {\n { \"test\", \"alloydb-cluster-full\" },\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/alloydb\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"alloydb-cluster-full\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = alloydb.NewCluster(ctx, \"full\", \u0026alloydb.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"alloydb-cluster-full\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNetworkConfig: \u0026alloydb.ClusterNetworkConfigArgs{\n\t\t\t\tNetwork: _default.ID(),\n\t\t\t},\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_15\"),\n\t\t\tInitialUser: \u0026alloydb.ClusterInitialUserArgs{\n\t\t\t\tUser: pulumi.String(\"alloydb-cluster-full\"),\n\t\t\t\tPassword: pulumi.String(\"alloydb-cluster-full\"),\n\t\t\t},\n\t\t\tContinuousBackupConfig: \u0026alloydb.ClusterContinuousBackupConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\tRecoveryWindowDays: pulumi.Int(14),\n\t\t\t},\n\t\t\tAutomatedBackupPolicy: \u0026alloydb.ClusterAutomatedBackupPolicyArgs{\n\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\tBackupWindow: pulumi.String(\"1800s\"),\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\tWeeklySchedule: \u0026alloydb.ClusterAutomatedBackupPolicyWeeklyScheduleArgs{\n\t\t\t\t\tDaysOfWeeks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"MONDAY\"),\n\t\t\t\t\t},\n\t\t\t\t\tStartTimes: alloydb.ClusterAutomatedBackupPolicyWeeklyScheduleStartTimeArray{\n\t\t\t\t\t\t\u0026alloydb.ClusterAutomatedBackupPolicyWeeklyScheduleStartTimeArgs{\n\t\t\t\t\t\t\tHours: pulumi.Int(23),\n\t\t\t\t\t\t\tMinutes: pulumi.Int(0),\n\t\t\t\t\t\t\tSeconds: pulumi.Int(0),\n\t\t\t\t\t\t\tNanos: pulumi.Int(0),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tQuantityBasedRetention: \u0026alloydb.ClusterAutomatedBackupPolicyQuantityBasedRetentionArgs{\n\t\t\t\t\tCount: pulumi.Int(1),\n\t\t\t\t},\n\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\"test\": pulumi.String(\"alloydb-cluster-full\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"test\": pulumi.String(\"alloydb-cluster-full\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.alloydb.Cluster;\nimport com.pulumi.gcp.alloydb.ClusterArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterNetworkConfigArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterInitialUserArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterContinuousBackupConfigArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterAutomatedBackupPolicyArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterAutomatedBackupPolicyWeeklyScheduleArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterAutomatedBackupPolicyQuantityBasedRetentionArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"alloydb-cluster-full\")\n .build());\n\n var full = new Cluster(\"full\", ClusterArgs.builder()\n .clusterId(\"alloydb-cluster-full\")\n .location(\"us-central1\")\n .networkConfig(ClusterNetworkConfigArgs.builder()\n .network(default_.id())\n .build())\n .databaseVersion(\"POSTGRES_15\")\n .initialUser(ClusterInitialUserArgs.builder()\n .user(\"alloydb-cluster-full\")\n .password(\"alloydb-cluster-full\")\n .build())\n .continuousBackupConfig(ClusterContinuousBackupConfigArgs.builder()\n .enabled(true)\n .recoveryWindowDays(14)\n .build())\n .automatedBackupPolicy(ClusterAutomatedBackupPolicyArgs.builder()\n .location(\"us-central1\")\n .backupWindow(\"1800s\")\n .enabled(true)\n .weeklySchedule(ClusterAutomatedBackupPolicyWeeklyScheduleArgs.builder()\n .daysOfWeeks(\"MONDAY\")\n .startTimes(ClusterAutomatedBackupPolicyWeeklyScheduleStartTimeArgs.builder()\n .hours(23)\n .minutes(0)\n .seconds(0)\n .nanos(0)\n .build())\n .build())\n .quantityBasedRetention(ClusterAutomatedBackupPolicyQuantityBasedRetentionArgs.builder()\n .count(1)\n .build())\n .labels(Map.of(\"test\", \"alloydb-cluster-full\"))\n .build())\n .labels(Map.of(\"test\", \"alloydb-cluster-full\"))\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n full:\n type: gcp:alloydb:Cluster\n properties:\n clusterId: alloydb-cluster-full\n location: us-central1\n networkConfig:\n network: ${default.id}\n databaseVersion: POSTGRES_15\n initialUser:\n user: alloydb-cluster-full\n password: alloydb-cluster-full\n continuousBackupConfig:\n enabled: true\n recoveryWindowDays: 14\n automatedBackupPolicy:\n location: us-central1\n backupWindow: 1800s\n enabled: true\n weeklySchedule:\n daysOfWeeks:\n - MONDAY\n startTimes:\n - hours: 23\n minutes: 0\n seconds: 0\n nanos: 0\n quantityBasedRetention:\n count: 1\n labels:\n test: alloydb-cluster-full\n labels:\n test: alloydb-cluster-full\n default:\n type: gcp:compute:Network\n properties:\n name: alloydb-cluster-full\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Alloydb Cluster Restore\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nresources:\n source:\n type: gcp:alloydb:Cluster\n properties:\n clusterId: alloydb-source-cluster\n location: us-central1\n network: ${default.id}\n initialUser:\n password: alloydb-source-cluster\n sourceInstance:\n type: gcp:alloydb:Instance\n name: source\n properties:\n cluster: ${source.name}\n instanceId: alloydb-instance\n instanceType: PRIMARY\n machineConfig:\n cpuCount: 2\n options:\n dependson:\n - ${vpcConnection}\n sourceBackup:\n type: gcp:alloydb:Backup\n name: source\n properties:\n backupId: alloydb-backup\n location: us-central1\n clusterName: ${source.name}\n options:\n dependson:\n - ${sourceInstance}\n restoredFromBackup:\n type: gcp:alloydb:Cluster\n name: restored_from_backup\n properties:\n clusterId: alloydb-backup-restored\n location: us-central1\n networkConfig:\n network: ${default.id}\n restoreBackupSource:\n backupName: ${sourceBackup.name}\n restoredViaPitr:\n type: gcp:alloydb:Cluster\n name: restored_via_pitr\n properties:\n clusterId: alloydb-pitr-restored\n location: us-central1\n networkConfig:\n network: ${default.id}\n restoreContinuousBackupSource:\n cluster: ${source.name}\n pointInTime: 2023-08-03T19:19:00.094Z\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: alloydb-source-cluster\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 16\n network: ${default.id}\n vpcConnection:\n type: gcp:servicenetworking:Connection\n name: vpc_connection\n properties:\n network: ${default.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAlloc.name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n default:\n fn::invoke:\n Function: gcp:compute:getNetwork\n Arguments:\n name: alloydb-network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Alloydb Secondary Cluster Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {name: \"alloydb-secondary-cluster\"});\nconst primary = new gcp.alloydb.Cluster(\"primary\", {\n clusterId: \"alloydb-primary-cluster\",\n location: \"us-central1\",\n networkConfig: {\n network: _default.id,\n },\n});\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"alloydb-secondary-cluster\",\n addressType: \"INTERNAL\",\n purpose: \"VPC_PEERING\",\n prefixLength: 16,\n network: _default.id,\n});\nconst vpcConnection = new gcp.servicenetworking.Connection(\"vpc_connection\", {\n network: _default.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAlloc.name],\n});\nconst primaryInstance = new gcp.alloydb.Instance(\"primary\", {\n cluster: primary.name,\n instanceId: \"alloydb-primary-instance\",\n instanceType: \"PRIMARY\",\n machineConfig: {\n cpuCount: 2,\n },\n}, {\n dependsOn: [vpcConnection],\n});\nconst secondary = new gcp.alloydb.Cluster(\"secondary\", {\n clusterId: \"alloydb-secondary-cluster\",\n location: \"us-east1\",\n networkConfig: {\n network: _default.id,\n },\n clusterType: \"SECONDARY\",\n continuousBackupConfig: {\n enabled: false,\n },\n secondaryConfig: {\n primaryClusterName: primary.name,\n },\n}, {\n dependsOn: [primaryInstance],\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\", name=\"alloydb-secondary-cluster\")\nprimary = gcp.alloydb.Cluster(\"primary\",\n cluster_id=\"alloydb-primary-cluster\",\n location=\"us-central1\",\n network_config={\n \"network\": default.id,\n })\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"alloydb-secondary-cluster\",\n address_type=\"INTERNAL\",\n purpose=\"VPC_PEERING\",\n prefix_length=16,\n network=default.id)\nvpc_connection = gcp.servicenetworking.Connection(\"vpc_connection\",\n network=default.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_alloc.name])\nprimary_instance = gcp.alloydb.Instance(\"primary\",\n cluster=primary.name,\n instance_id=\"alloydb-primary-instance\",\n instance_type=\"PRIMARY\",\n machine_config={\n \"cpu_count\": 2,\n },\n opts = pulumi.ResourceOptions(depends_on=[vpc_connection]))\nsecondary = gcp.alloydb.Cluster(\"secondary\",\n cluster_id=\"alloydb-secondary-cluster\",\n location=\"us-east1\",\n network_config={\n \"network\": default.id,\n },\n cluster_type=\"SECONDARY\",\n continuous_backup_config={\n \"enabled\": False,\n },\n secondary_config={\n \"primary_cluster_name\": primary.name,\n },\n opts = pulumi.ResourceOptions(depends_on=[primary_instance]))\nproject = gcp.organizations.get_project()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"alloydb-secondary-cluster\",\n });\n\n var primary = new Gcp.Alloydb.Cluster(\"primary\", new()\n {\n ClusterId = \"alloydb-primary-cluster\",\n Location = \"us-central1\",\n NetworkConfig = new Gcp.Alloydb.Inputs.ClusterNetworkConfigArgs\n {\n Network = @default.Id,\n },\n });\n\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"alloydb-secondary-cluster\",\n AddressType = \"INTERNAL\",\n Purpose = \"VPC_PEERING\",\n PrefixLength = 16,\n Network = @default.Id,\n });\n\n var vpcConnection = new Gcp.ServiceNetworking.Connection(\"vpc_connection\", new()\n {\n Network = @default.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAlloc.Name,\n },\n });\n\n var primaryInstance = new Gcp.Alloydb.Instance(\"primary\", new()\n {\n Cluster = primary.Name,\n InstanceId = \"alloydb-primary-instance\",\n InstanceType = \"PRIMARY\",\n MachineConfig = new Gcp.Alloydb.Inputs.InstanceMachineConfigArgs\n {\n CpuCount = 2,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vpcConnection,\n },\n });\n\n var secondary = new Gcp.Alloydb.Cluster(\"secondary\", new()\n {\n ClusterId = \"alloydb-secondary-cluster\",\n Location = \"us-east1\",\n NetworkConfig = new Gcp.Alloydb.Inputs.ClusterNetworkConfigArgs\n {\n Network = @default.Id,\n },\n ClusterType = \"SECONDARY\",\n ContinuousBackupConfig = new Gcp.Alloydb.Inputs.ClusterContinuousBackupConfigArgs\n {\n Enabled = false,\n },\n SecondaryConfig = new Gcp.Alloydb.Inputs.ClusterSecondaryConfigArgs\n {\n PrimaryClusterName = primary.Name,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n primaryInstance,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/alloydb\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"alloydb-secondary-cluster\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimary, err := alloydb.NewCluster(ctx, \"primary\", \u0026alloydb.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"alloydb-primary-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNetworkConfig: \u0026alloydb.ClusterNetworkConfigArgs{\n\t\t\t\tNetwork: _default.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"alloydb-secondary-cluster\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvpcConnection, err := servicenetworking.NewConnection(ctx, \"vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: _default.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tprivateIpAlloc.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryInstance, err := alloydb.NewInstance(ctx, \"primary\", \u0026alloydb.InstanceArgs{\n\t\t\tCluster: primary.Name,\n\t\t\tInstanceId: pulumi.String(\"alloydb-primary-instance\"),\n\t\t\tInstanceType: pulumi.String(\"PRIMARY\"),\n\t\t\tMachineConfig: \u0026alloydb.InstanceMachineConfigArgs{\n\t\t\t\tCpuCount: pulumi.Int(2),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = alloydb.NewCluster(ctx, \"secondary\", \u0026alloydb.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"alloydb-secondary-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-east1\"),\n\t\t\tNetworkConfig: \u0026alloydb.ClusterNetworkConfigArgs{\n\t\t\t\tNetwork: _default.ID(),\n\t\t\t},\n\t\t\tClusterType: pulumi.String(\"SECONDARY\"),\n\t\t\tContinuousBackupConfig: \u0026alloydb.ClusterContinuousBackupConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(false),\n\t\t\t},\n\t\t\tSecondaryConfig: \u0026alloydb.ClusterSecondaryConfigArgs{\n\t\t\t\tPrimaryClusterName: primary.Name,\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tprimaryInstance,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.alloydb.Cluster;\nimport com.pulumi.gcp.alloydb.ClusterArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterNetworkConfigArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.alloydb.Instance;\nimport com.pulumi.gcp.alloydb.InstanceArgs;\nimport com.pulumi.gcp.alloydb.inputs.InstanceMachineConfigArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterContinuousBackupConfigArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterSecondaryConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"alloydb-secondary-cluster\")\n .build());\n\n var primary = new Cluster(\"primary\", ClusterArgs.builder()\n .clusterId(\"alloydb-primary-cluster\")\n .location(\"us-central1\")\n .networkConfig(ClusterNetworkConfigArgs.builder()\n .network(default_.id())\n .build())\n .build());\n\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"alloydb-secondary-cluster\")\n .addressType(\"INTERNAL\")\n .purpose(\"VPC_PEERING\")\n .prefixLength(16)\n .network(default_.id())\n .build());\n\n var vpcConnection = new Connection(\"vpcConnection\", ConnectionArgs.builder()\n .network(default_.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAlloc.name())\n .build());\n\n var primaryInstance = new Instance(\"primaryInstance\", InstanceArgs.builder()\n .cluster(primary.name())\n .instanceId(\"alloydb-primary-instance\")\n .instanceType(\"PRIMARY\")\n .machineConfig(InstanceMachineConfigArgs.builder()\n .cpuCount(2)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(vpcConnection)\n .build());\n\n var secondary = new Cluster(\"secondary\", ClusterArgs.builder()\n .clusterId(\"alloydb-secondary-cluster\")\n .location(\"us-east1\")\n .networkConfig(ClusterNetworkConfigArgs.builder()\n .network(default_.id())\n .build())\n .clusterType(\"SECONDARY\")\n .continuousBackupConfig(ClusterContinuousBackupConfigArgs.builder()\n .enabled(false)\n .build())\n .secondaryConfig(ClusterSecondaryConfigArgs.builder()\n .primaryClusterName(primary.name())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(primaryInstance)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:alloydb:Cluster\n properties:\n clusterId: alloydb-primary-cluster\n location: us-central1\n networkConfig:\n network: ${default.id}\n primaryInstance:\n type: gcp:alloydb:Instance\n name: primary\n properties:\n cluster: ${primary.name}\n instanceId: alloydb-primary-instance\n instanceType: PRIMARY\n machineConfig:\n cpuCount: 2\n options:\n dependson:\n - ${vpcConnection}\n secondary:\n type: gcp:alloydb:Cluster\n properties:\n clusterId: alloydb-secondary-cluster\n location: us-east1\n networkConfig:\n network: ${default.id}\n clusterType: SECONDARY\n continuousBackupConfig:\n enabled: false\n secondaryConfig:\n primaryClusterName: ${primary.name}\n options:\n dependson:\n - ${primaryInstance}\n default:\n type: gcp:compute:Network\n properties:\n name: alloydb-secondary-cluster\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: alloydb-secondary-cluster\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 16\n network: ${default.id}\n vpcConnection:\n type: gcp:servicenetworking:Connection\n name: vpc_connection\n properties:\n network: ${default.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAlloc.name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCluster can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/clusters/{{cluster_id}}`\n\n* `{{project}}/{{location}}/{{cluster_id}}`\n\n* `{{location}}/{{cluster_id}}`\n\n* `{{cluster_id}}`\n\nWhen using the `pulumi import` command, Cluster can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:alloydb/cluster:Cluster default projects/{{project}}/locations/{{location}}/clusters/{{cluster_id}}\n```\n\n```sh\n$ pulumi import gcp:alloydb/cluster:Cluster default {{project}}/{{location}}/{{cluster_id}}\n```\n\n```sh\n$ pulumi import gcp:alloydb/cluster:Cluster default {{location}}/{{cluster_id}}\n```\n\n```sh\n$ pulumi import gcp:alloydb/cluster:Cluster default {{cluster_id}}\n```\n\n", "properties": { "annotations": { "type": "object", @@ -117836,7 +117836,7 @@ } }, "gcp:alloydb/instance:Instance": { - "description": "## Example Usage\n\n### Alloydb Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultNetwork = new gcp.compute.Network(\"default\", {name: \"alloydb-network\"});\nconst defaultCluster = new gcp.alloydb.Cluster(\"default\", {\n clusterId: \"alloydb-cluster\",\n location: \"us-central1\",\n networkConfig: {\n network: defaultNetwork.id,\n },\n initialUser: {\n password: \"alloydb-cluster\",\n },\n});\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"alloydb-cluster\",\n addressType: \"INTERNAL\",\n purpose: \"VPC_PEERING\",\n prefixLength: 16,\n network: defaultNetwork.id,\n});\nconst vpcConnection = new gcp.servicenetworking.Connection(\"vpc_connection\", {\n network: defaultNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAlloc.name],\n});\nconst _default = new gcp.alloydb.Instance(\"default\", {\n cluster: defaultCluster.name,\n instanceId: \"alloydb-instance\",\n instanceType: \"PRIMARY\",\n machineConfig: {\n cpuCount: 2,\n },\n}, {\n dependsOn: [vpcConnection],\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_network = gcp.compute.Network(\"default\", name=\"alloydb-network\")\ndefault_cluster = gcp.alloydb.Cluster(\"default\",\n cluster_id=\"alloydb-cluster\",\n location=\"us-central1\",\n network_config={\n \"network\": default_network.id,\n },\n initial_user={\n \"password\": \"alloydb-cluster\",\n })\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"alloydb-cluster\",\n address_type=\"INTERNAL\",\n purpose=\"VPC_PEERING\",\n prefix_length=16,\n network=default_network.id)\nvpc_connection = gcp.servicenetworking.Connection(\"vpc_connection\",\n network=default_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_alloc.name])\ndefault = gcp.alloydb.Instance(\"default\",\n cluster=default_cluster.name,\n instance_id=\"alloydb-instance\",\n instance_type=\"PRIMARY\",\n machine_config={\n \"cpu_count\": 2,\n },\n opts = pulumi.ResourceOptions(depends_on=[vpc_connection]))\nproject = gcp.organizations.get_project()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultNetwork = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"alloydb-network\",\n });\n\n var defaultCluster = new Gcp.Alloydb.Cluster(\"default\", new()\n {\n ClusterId = \"alloydb-cluster\",\n Location = \"us-central1\",\n NetworkConfig = new Gcp.Alloydb.Inputs.ClusterNetworkConfigArgs\n {\n Network = defaultNetwork.Id,\n },\n InitialUser = new Gcp.Alloydb.Inputs.ClusterInitialUserArgs\n {\n Password = \"alloydb-cluster\",\n },\n });\n\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"alloydb-cluster\",\n AddressType = \"INTERNAL\",\n Purpose = \"VPC_PEERING\",\n PrefixLength = 16,\n Network = defaultNetwork.Id,\n });\n\n var vpcConnection = new Gcp.ServiceNetworking.Connection(\"vpc_connection\", new()\n {\n Network = defaultNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAlloc.Name,\n },\n });\n\n var @default = new Gcp.Alloydb.Instance(\"default\", new()\n {\n Cluster = defaultCluster.Name,\n InstanceId = \"alloydb-instance\",\n InstanceType = \"PRIMARY\",\n MachineConfig = new Gcp.Alloydb.Inputs.InstanceMachineConfigArgs\n {\n CpuCount = 2,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vpcConnection,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/alloydb\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdefaultNetwork, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"alloydb-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultCluster, err := alloydb.NewCluster(ctx, \"default\", \u0026alloydb.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"alloydb-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNetworkConfig: \u0026alloydb.ClusterNetworkConfigArgs{\n\t\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\t},\n\t\t\tInitialUser: \u0026alloydb.ClusterInitialUserArgs{\n\t\t\t\tPassword: pulumi.String(\"alloydb-cluster\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"alloydb-cluster\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvpcConnection, err := servicenetworking.NewConnection(ctx, \"vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tprivateIpAlloc.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = alloydb.NewInstance(ctx, \"default\", \u0026alloydb.InstanceArgs{\n\t\t\tCluster: defaultCluster.Name,\n\t\t\tInstanceId: pulumi.String(\"alloydb-instance\"),\n\t\t\tInstanceType: pulumi.String(\"PRIMARY\"),\n\t\t\tMachineConfig: \u0026alloydb.InstanceMachineConfigArgs{\n\t\t\t\tCpuCount: pulumi.Int(2),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.alloydb.Cluster;\nimport com.pulumi.gcp.alloydb.ClusterArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterNetworkConfigArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterInitialUserArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.alloydb.Instance;\nimport com.pulumi.gcp.alloydb.InstanceArgs;\nimport com.pulumi.gcp.alloydb.inputs.InstanceMachineConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultNetwork = new Network(\"defaultNetwork\", NetworkArgs.builder()\n .name(\"alloydb-network\")\n .build());\n\n var defaultCluster = new Cluster(\"defaultCluster\", ClusterArgs.builder()\n .clusterId(\"alloydb-cluster\")\n .location(\"us-central1\")\n .networkConfig(ClusterNetworkConfigArgs.builder()\n .network(defaultNetwork.id())\n .build())\n .initialUser(ClusterInitialUserArgs.builder()\n .password(\"alloydb-cluster\")\n .build())\n .build());\n\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"alloydb-cluster\")\n .addressType(\"INTERNAL\")\n .purpose(\"VPC_PEERING\")\n .prefixLength(16)\n .network(defaultNetwork.id())\n .build());\n\n var vpcConnection = new Connection(\"vpcConnection\", ConnectionArgs.builder()\n .network(defaultNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAlloc.name())\n .build());\n\n var default_ = new Instance(\"default\", InstanceArgs.builder()\n .cluster(defaultCluster.name())\n .instanceId(\"alloydb-instance\")\n .instanceType(\"PRIMARY\")\n .machineConfig(InstanceMachineConfigArgs.builder()\n .cpuCount(2)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(vpcConnection)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:alloydb:Instance\n properties:\n cluster: ${defaultCluster.name}\n instanceId: alloydb-instance\n instanceType: PRIMARY\n machineConfig:\n cpuCount: 2\n options:\n dependson:\n - ${vpcConnection}\n defaultCluster:\n type: gcp:alloydb:Cluster\n name: default\n properties:\n clusterId: alloydb-cluster\n location: us-central1\n networkConfig:\n network: ${defaultNetwork.id}\n initialUser:\n password: alloydb-cluster\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: alloydb-network\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: alloydb-cluster\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 16\n network: ${defaultNetwork.id}\n vpcConnection:\n type: gcp:servicenetworking:Connection\n name: vpc_connection\n properties:\n network: ${defaultNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAlloc.name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Alloydb Secondary Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {name: \"alloydb-secondary-network\"});\nconst primary = new gcp.alloydb.Cluster(\"primary\", {\n clusterId: \"alloydb-primary-cluster\",\n location: \"us-central1\",\n networkConfig: {\n network: _default.id,\n },\n});\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"alloydb-secondary-instance\",\n addressType: \"INTERNAL\",\n purpose: \"VPC_PEERING\",\n prefixLength: 16,\n network: _default.id,\n});\nconst vpcConnection = new gcp.servicenetworking.Connection(\"vpc_connection\", {\n network: _default.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAlloc.name],\n});\nconst primaryInstance = new gcp.alloydb.Instance(\"primary\", {\n cluster: primary.name,\n instanceId: \"alloydb-primary-instance\",\n instanceType: \"PRIMARY\",\n machineConfig: {\n cpuCount: 2,\n },\n}, {\n dependsOn: [vpcConnection],\n});\nconst secondary = new gcp.alloydb.Cluster(\"secondary\", {\n clusterId: \"alloydb-secondary-cluster\",\n location: \"us-east1\",\n networkConfig: {\n network: defaultGoogleComputeNetwork.id,\n },\n clusterType: \"SECONDARY\",\n continuousBackupConfig: {\n enabled: false,\n },\n secondaryConfig: {\n primaryClusterName: primary.name,\n },\n deletionPolicy: \"FORCE\",\n}, {\n dependsOn: [primaryInstance],\n});\nconst secondaryInstance = new gcp.alloydb.Instance(\"secondary\", {\n cluster: secondary.name,\n instanceId: \"alloydb-secondary-instance\",\n instanceType: secondary.clusterType,\n machineConfig: {\n cpuCount: 2,\n },\n}, {\n dependsOn: [vpcConnection],\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\", name=\"alloydb-secondary-network\")\nprimary = gcp.alloydb.Cluster(\"primary\",\n cluster_id=\"alloydb-primary-cluster\",\n location=\"us-central1\",\n network_config={\n \"network\": default.id,\n })\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"alloydb-secondary-instance\",\n address_type=\"INTERNAL\",\n purpose=\"VPC_PEERING\",\n prefix_length=16,\n network=default.id)\nvpc_connection = gcp.servicenetworking.Connection(\"vpc_connection\",\n network=default.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_alloc.name])\nprimary_instance = gcp.alloydb.Instance(\"primary\",\n cluster=primary.name,\n instance_id=\"alloydb-primary-instance\",\n instance_type=\"PRIMARY\",\n machine_config={\n \"cpu_count\": 2,\n },\n opts = pulumi.ResourceOptions(depends_on=[vpc_connection]))\nsecondary = gcp.alloydb.Cluster(\"secondary\",\n cluster_id=\"alloydb-secondary-cluster\",\n location=\"us-east1\",\n network_config={\n \"network\": default_google_compute_network[\"id\"],\n },\n cluster_type=\"SECONDARY\",\n continuous_backup_config={\n \"enabled\": False,\n },\n secondary_config={\n \"primary_cluster_name\": primary.name,\n },\n deletion_policy=\"FORCE\",\n opts = pulumi.ResourceOptions(depends_on=[primary_instance]))\nsecondary_instance = gcp.alloydb.Instance(\"secondary\",\n cluster=secondary.name,\n instance_id=\"alloydb-secondary-instance\",\n instance_type=secondary.cluster_type,\n machine_config={\n \"cpu_count\": 2,\n },\n opts = pulumi.ResourceOptions(depends_on=[vpc_connection]))\nproject = gcp.organizations.get_project()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"alloydb-secondary-network\",\n });\n\n var primary = new Gcp.Alloydb.Cluster(\"primary\", new()\n {\n ClusterId = \"alloydb-primary-cluster\",\n Location = \"us-central1\",\n NetworkConfig = new Gcp.Alloydb.Inputs.ClusterNetworkConfigArgs\n {\n Network = @default.Id,\n },\n });\n\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"alloydb-secondary-instance\",\n AddressType = \"INTERNAL\",\n Purpose = \"VPC_PEERING\",\n PrefixLength = 16,\n Network = @default.Id,\n });\n\n var vpcConnection = new Gcp.ServiceNetworking.Connection(\"vpc_connection\", new()\n {\n Network = @default.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAlloc.Name,\n },\n });\n\n var primaryInstance = new Gcp.Alloydb.Instance(\"primary\", new()\n {\n Cluster = primary.Name,\n InstanceId = \"alloydb-primary-instance\",\n InstanceType = \"PRIMARY\",\n MachineConfig = new Gcp.Alloydb.Inputs.InstanceMachineConfigArgs\n {\n CpuCount = 2,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vpcConnection,\n },\n });\n\n var secondary = new Gcp.Alloydb.Cluster(\"secondary\", new()\n {\n ClusterId = \"alloydb-secondary-cluster\",\n Location = \"us-east1\",\n NetworkConfig = new Gcp.Alloydb.Inputs.ClusterNetworkConfigArgs\n {\n Network = defaultGoogleComputeNetwork.Id,\n },\n ClusterType = \"SECONDARY\",\n ContinuousBackupConfig = new Gcp.Alloydb.Inputs.ClusterContinuousBackupConfigArgs\n {\n Enabled = false,\n },\n SecondaryConfig = new Gcp.Alloydb.Inputs.ClusterSecondaryConfigArgs\n {\n PrimaryClusterName = primary.Name,\n },\n DeletionPolicy = \"FORCE\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n primaryInstance,\n },\n });\n\n var secondaryInstance = new Gcp.Alloydb.Instance(\"secondary\", new()\n {\n Cluster = secondary.Name,\n InstanceId = \"alloydb-secondary-instance\",\n InstanceType = secondary.ClusterType,\n MachineConfig = new Gcp.Alloydb.Inputs.InstanceMachineConfigArgs\n {\n CpuCount = 2,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vpcConnection,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/alloydb\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"alloydb-secondary-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimary, err := alloydb.NewCluster(ctx, \"primary\", \u0026alloydb.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"alloydb-primary-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNetworkConfig: \u0026alloydb.ClusterNetworkConfigArgs{\n\t\t\t\tNetwork: _default.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"alloydb-secondary-instance\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvpcConnection, err := servicenetworking.NewConnection(ctx, \"vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: _default.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tprivateIpAlloc.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryInstance, err := alloydb.NewInstance(ctx, \"primary\", \u0026alloydb.InstanceArgs{\n\t\t\tCluster: primary.Name,\n\t\t\tInstanceId: pulumi.String(\"alloydb-primary-instance\"),\n\t\t\tInstanceType: pulumi.String(\"PRIMARY\"),\n\t\t\tMachineConfig: \u0026alloydb.InstanceMachineConfigArgs{\n\t\t\t\tCpuCount: pulumi.Int(2),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondary, err := alloydb.NewCluster(ctx, \"secondary\", \u0026alloydb.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"alloydb-secondary-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-east1\"),\n\t\t\tNetworkConfig: \u0026alloydb.ClusterNetworkConfigArgs{\n\t\t\t\tNetwork: pulumi.Any(defaultGoogleComputeNetwork.Id),\n\t\t\t},\n\t\t\tClusterType: pulumi.String(\"SECONDARY\"),\n\t\t\tContinuousBackupConfig: \u0026alloydb.ClusterContinuousBackupConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(false),\n\t\t\t},\n\t\t\tSecondaryConfig: \u0026alloydb.ClusterSecondaryConfigArgs{\n\t\t\t\tPrimaryClusterName: primary.Name,\n\t\t\t},\n\t\t\tDeletionPolicy: pulumi.String(\"FORCE\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tprimaryInstance,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = alloydb.NewInstance(ctx, \"secondary\", \u0026alloydb.InstanceArgs{\n\t\t\tCluster: secondary.Name,\n\t\t\tInstanceId: pulumi.String(\"alloydb-secondary-instance\"),\n\t\t\tInstanceType: secondary.ClusterType,\n\t\t\tMachineConfig: \u0026alloydb.InstanceMachineConfigArgs{\n\t\t\t\tCpuCount: pulumi.Int(2),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.alloydb.Cluster;\nimport com.pulumi.gcp.alloydb.ClusterArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterNetworkConfigArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.alloydb.Instance;\nimport com.pulumi.gcp.alloydb.InstanceArgs;\nimport com.pulumi.gcp.alloydb.inputs.InstanceMachineConfigArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterContinuousBackupConfigArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterSecondaryConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"alloydb-secondary-network\")\n .build());\n\n var primary = new Cluster(\"primary\", ClusterArgs.builder()\n .clusterId(\"alloydb-primary-cluster\")\n .location(\"us-central1\")\n .networkConfig(ClusterNetworkConfigArgs.builder()\n .network(default_.id())\n .build())\n .build());\n\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"alloydb-secondary-instance\")\n .addressType(\"INTERNAL\")\n .purpose(\"VPC_PEERING\")\n .prefixLength(16)\n .network(default_.id())\n .build());\n\n var vpcConnection = new Connection(\"vpcConnection\", ConnectionArgs.builder()\n .network(default_.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAlloc.name())\n .build());\n\n var primaryInstance = new Instance(\"primaryInstance\", InstanceArgs.builder()\n .cluster(primary.name())\n .instanceId(\"alloydb-primary-instance\")\n .instanceType(\"PRIMARY\")\n .machineConfig(InstanceMachineConfigArgs.builder()\n .cpuCount(2)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(vpcConnection)\n .build());\n\n var secondary = new Cluster(\"secondary\", ClusterArgs.builder()\n .clusterId(\"alloydb-secondary-cluster\")\n .location(\"us-east1\")\n .networkConfig(ClusterNetworkConfigArgs.builder()\n .network(defaultGoogleComputeNetwork.id())\n .build())\n .clusterType(\"SECONDARY\")\n .continuousBackupConfig(ClusterContinuousBackupConfigArgs.builder()\n .enabled(false)\n .build())\n .secondaryConfig(ClusterSecondaryConfigArgs.builder()\n .primaryClusterName(primary.name())\n .build())\n .deletionPolicy(\"FORCE\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(primaryInstance)\n .build());\n\n var secondaryInstance = new Instance(\"secondaryInstance\", InstanceArgs.builder()\n .cluster(secondary.name())\n .instanceId(\"alloydb-secondary-instance\")\n .instanceType(secondary.clusterType())\n .machineConfig(InstanceMachineConfigArgs.builder()\n .cpuCount(2)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(vpcConnection)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:alloydb:Cluster\n properties:\n clusterId: alloydb-primary-cluster\n location: us-central1\n networkConfig:\n network: ${default.id}\n primaryInstance:\n type: gcp:alloydb:Instance\n name: primary\n properties:\n cluster: ${primary.name}\n instanceId: alloydb-primary-instance\n instanceType: PRIMARY\n machineConfig:\n cpuCount: 2\n options:\n dependson:\n - ${vpcConnection}\n secondary:\n type: gcp:alloydb:Cluster\n properties:\n clusterId: alloydb-secondary-cluster\n location: us-east1\n networkConfig:\n network: ${defaultGoogleComputeNetwork.id}\n clusterType: SECONDARY\n continuousBackupConfig:\n enabled: false\n secondaryConfig:\n primaryClusterName: ${primary.name}\n deletionPolicy: FORCE\n options:\n dependson:\n - ${primaryInstance}\n secondaryInstance:\n type: gcp:alloydb:Instance\n name: secondary\n properties:\n cluster: ${secondary.name}\n instanceId: alloydb-secondary-instance\n instanceType: ${secondary.clusterType}\n machineConfig:\n cpuCount: 2\n options:\n dependson:\n - ${vpcConnection}\n default:\n type: gcp:compute:Network\n properties:\n name: alloydb-secondary-network\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: alloydb-secondary-instance\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 16\n network: ${default.id}\n vpcConnection:\n type: gcp:servicenetworking:Connection\n name: vpc_connection\n properties:\n network: ${default.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAlloc.name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/clusters/{{cluster}}/instances/{{instance_id}}`\n\n* `{{project}}/{{location}}/{{cluster}}/{{instance_id}}`\n\n* `{{location}}/{{cluster}}/{{instance_id}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:alloydb/instance:Instance default projects/{{project}}/locations/{{location}}/clusters/{{cluster}}/instances/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:alloydb/instance:Instance default {{project}}/{{location}}/{{cluster}}/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:alloydb/instance:Instance default {{location}}/{{cluster}}/{{instance_id}}\n```\n\n", + "description": "## Example Usage\n\n### Alloydb Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultNetwork = new gcp.compute.Network(\"default\", {name: \"alloydb-network\"});\nconst defaultCluster = new gcp.alloydb.Cluster(\"default\", {\n clusterId: \"alloydb-cluster\",\n location: \"us-central1\",\n networkConfig: {\n network: defaultNetwork.id,\n },\n initialUser: {\n password: \"alloydb-cluster\",\n },\n});\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"alloydb-cluster\",\n addressType: \"INTERNAL\",\n purpose: \"VPC_PEERING\",\n prefixLength: 16,\n network: defaultNetwork.id,\n});\nconst vpcConnection = new gcp.servicenetworking.Connection(\"vpc_connection\", {\n network: defaultNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAlloc.name],\n});\nconst _default = new gcp.alloydb.Instance(\"default\", {\n cluster: defaultCluster.name,\n instanceId: \"alloydb-instance\",\n instanceType: \"PRIMARY\",\n machineConfig: {\n cpuCount: 2,\n },\n}, {\n dependsOn: [vpcConnection],\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_network = gcp.compute.Network(\"default\", name=\"alloydb-network\")\ndefault_cluster = gcp.alloydb.Cluster(\"default\",\n cluster_id=\"alloydb-cluster\",\n location=\"us-central1\",\n network_config={\n \"network\": default_network.id,\n },\n initial_user={\n \"password\": \"alloydb-cluster\",\n })\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"alloydb-cluster\",\n address_type=\"INTERNAL\",\n purpose=\"VPC_PEERING\",\n prefix_length=16,\n network=default_network.id)\nvpc_connection = gcp.servicenetworking.Connection(\"vpc_connection\",\n network=default_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_alloc.name])\ndefault = gcp.alloydb.Instance(\"default\",\n cluster=default_cluster.name,\n instance_id=\"alloydb-instance\",\n instance_type=\"PRIMARY\",\n machine_config={\n \"cpu_count\": 2,\n },\n opts = pulumi.ResourceOptions(depends_on=[vpc_connection]))\nproject = gcp.organizations.get_project()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultNetwork = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"alloydb-network\",\n });\n\n var defaultCluster = new Gcp.Alloydb.Cluster(\"default\", new()\n {\n ClusterId = \"alloydb-cluster\",\n Location = \"us-central1\",\n NetworkConfig = new Gcp.Alloydb.Inputs.ClusterNetworkConfigArgs\n {\n Network = defaultNetwork.Id,\n },\n InitialUser = new Gcp.Alloydb.Inputs.ClusterInitialUserArgs\n {\n Password = \"alloydb-cluster\",\n },\n });\n\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"alloydb-cluster\",\n AddressType = \"INTERNAL\",\n Purpose = \"VPC_PEERING\",\n PrefixLength = 16,\n Network = defaultNetwork.Id,\n });\n\n var vpcConnection = new Gcp.ServiceNetworking.Connection(\"vpc_connection\", new()\n {\n Network = defaultNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAlloc.Name,\n },\n });\n\n var @default = new Gcp.Alloydb.Instance(\"default\", new()\n {\n Cluster = defaultCluster.Name,\n InstanceId = \"alloydb-instance\",\n InstanceType = \"PRIMARY\",\n MachineConfig = new Gcp.Alloydb.Inputs.InstanceMachineConfigArgs\n {\n CpuCount = 2,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vpcConnection,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/alloydb\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdefaultNetwork, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"alloydb-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultCluster, err := alloydb.NewCluster(ctx, \"default\", \u0026alloydb.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"alloydb-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNetworkConfig: \u0026alloydb.ClusterNetworkConfigArgs{\n\t\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\t},\n\t\t\tInitialUser: \u0026alloydb.ClusterInitialUserArgs{\n\t\t\t\tPassword: pulumi.String(\"alloydb-cluster\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"alloydb-cluster\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvpcConnection, err := servicenetworking.NewConnection(ctx, \"vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tprivateIpAlloc.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = alloydb.NewInstance(ctx, \"default\", \u0026alloydb.InstanceArgs{\n\t\t\tCluster: defaultCluster.Name,\n\t\t\tInstanceId: pulumi.String(\"alloydb-instance\"),\n\t\t\tInstanceType: pulumi.String(\"PRIMARY\"),\n\t\t\tMachineConfig: \u0026alloydb.InstanceMachineConfigArgs{\n\t\t\t\tCpuCount: pulumi.Int(2),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.alloydb.Cluster;\nimport com.pulumi.gcp.alloydb.ClusterArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterNetworkConfigArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterInitialUserArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.alloydb.Instance;\nimport com.pulumi.gcp.alloydb.InstanceArgs;\nimport com.pulumi.gcp.alloydb.inputs.InstanceMachineConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultNetwork = new Network(\"defaultNetwork\", NetworkArgs.builder()\n .name(\"alloydb-network\")\n .build());\n\n var defaultCluster = new Cluster(\"defaultCluster\", ClusterArgs.builder()\n .clusterId(\"alloydb-cluster\")\n .location(\"us-central1\")\n .networkConfig(ClusterNetworkConfigArgs.builder()\n .network(defaultNetwork.id())\n .build())\n .initialUser(ClusterInitialUserArgs.builder()\n .password(\"alloydb-cluster\")\n .build())\n .build());\n\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"alloydb-cluster\")\n .addressType(\"INTERNAL\")\n .purpose(\"VPC_PEERING\")\n .prefixLength(16)\n .network(defaultNetwork.id())\n .build());\n\n var vpcConnection = new Connection(\"vpcConnection\", ConnectionArgs.builder()\n .network(defaultNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAlloc.name())\n .build());\n\n var default_ = new Instance(\"default\", InstanceArgs.builder()\n .cluster(defaultCluster.name())\n .instanceId(\"alloydb-instance\")\n .instanceType(\"PRIMARY\")\n .machineConfig(InstanceMachineConfigArgs.builder()\n .cpuCount(2)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(vpcConnection)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:alloydb:Instance\n properties:\n cluster: ${defaultCluster.name}\n instanceId: alloydb-instance\n instanceType: PRIMARY\n machineConfig:\n cpuCount: 2\n options:\n dependson:\n - ${vpcConnection}\n defaultCluster:\n type: gcp:alloydb:Cluster\n name: default\n properties:\n clusterId: alloydb-cluster\n location: us-central1\n networkConfig:\n network: ${defaultNetwork.id}\n initialUser:\n password: alloydb-cluster\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: alloydb-network\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: alloydb-cluster\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 16\n network: ${defaultNetwork.id}\n vpcConnection:\n type: gcp:servicenetworking:Connection\n name: vpc_connection\n properties:\n network: ${defaultNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAlloc.name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Alloydb Secondary Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {name: \"alloydb-secondary-network\"});\nconst primary = new gcp.alloydb.Cluster(\"primary\", {\n clusterId: \"alloydb-primary-cluster\",\n location: \"us-central1\",\n networkConfig: {\n network: _default.id,\n },\n});\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"alloydb-secondary-instance\",\n addressType: \"INTERNAL\",\n purpose: \"VPC_PEERING\",\n prefixLength: 16,\n network: _default.id,\n});\nconst vpcConnection = new gcp.servicenetworking.Connection(\"vpc_connection\", {\n network: _default.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAlloc.name],\n});\nconst primaryInstance = new gcp.alloydb.Instance(\"primary\", {\n cluster: primary.name,\n instanceId: \"alloydb-primary-instance\",\n instanceType: \"PRIMARY\",\n machineConfig: {\n cpuCount: 2,\n },\n}, {\n dependsOn: [vpcConnection],\n});\nconst secondary = new gcp.alloydb.Cluster(\"secondary\", {\n clusterId: \"alloydb-secondary-cluster\",\n location: \"us-east1\",\n networkConfig: {\n network: defaultGoogleComputeNetwork.id,\n },\n clusterType: \"SECONDARY\",\n continuousBackupConfig: {\n enabled: false,\n },\n secondaryConfig: {\n primaryClusterName: primary.name,\n },\n deletionPolicy: \"FORCE\",\n}, {\n dependsOn: [primaryInstance],\n});\nconst secondaryInstance = new gcp.alloydb.Instance(\"secondary\", {\n cluster: secondary.name,\n instanceId: \"alloydb-secondary-instance\",\n instanceType: secondary.clusterType,\n machineConfig: {\n cpuCount: 2,\n },\n}, {\n dependsOn: [vpcConnection],\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\", name=\"alloydb-secondary-network\")\nprimary = gcp.alloydb.Cluster(\"primary\",\n cluster_id=\"alloydb-primary-cluster\",\n location=\"us-central1\",\n network_config={\n \"network\": default.id,\n })\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"alloydb-secondary-instance\",\n address_type=\"INTERNAL\",\n purpose=\"VPC_PEERING\",\n prefix_length=16,\n network=default.id)\nvpc_connection = gcp.servicenetworking.Connection(\"vpc_connection\",\n network=default.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_alloc.name])\nprimary_instance = gcp.alloydb.Instance(\"primary\",\n cluster=primary.name,\n instance_id=\"alloydb-primary-instance\",\n instance_type=\"PRIMARY\",\n machine_config={\n \"cpu_count\": 2,\n },\n opts = pulumi.ResourceOptions(depends_on=[vpc_connection]))\nsecondary = gcp.alloydb.Cluster(\"secondary\",\n cluster_id=\"alloydb-secondary-cluster\",\n location=\"us-east1\",\n network_config={\n \"network\": default_google_compute_network[\"id\"],\n },\n cluster_type=\"SECONDARY\",\n continuous_backup_config={\n \"enabled\": False,\n },\n secondary_config={\n \"primary_cluster_name\": primary.name,\n },\n deletion_policy=\"FORCE\",\n opts = pulumi.ResourceOptions(depends_on=[primary_instance]))\nsecondary_instance = gcp.alloydb.Instance(\"secondary\",\n cluster=secondary.name,\n instance_id=\"alloydb-secondary-instance\",\n instance_type=secondary.cluster_type,\n machine_config={\n \"cpu_count\": 2,\n },\n opts = pulumi.ResourceOptions(depends_on=[vpc_connection]))\nproject = gcp.organizations.get_project()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"alloydb-secondary-network\",\n });\n\n var primary = new Gcp.Alloydb.Cluster(\"primary\", new()\n {\n ClusterId = \"alloydb-primary-cluster\",\n Location = \"us-central1\",\n NetworkConfig = new Gcp.Alloydb.Inputs.ClusterNetworkConfigArgs\n {\n Network = @default.Id,\n },\n });\n\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"alloydb-secondary-instance\",\n AddressType = \"INTERNAL\",\n Purpose = \"VPC_PEERING\",\n PrefixLength = 16,\n Network = @default.Id,\n });\n\n var vpcConnection = new Gcp.ServiceNetworking.Connection(\"vpc_connection\", new()\n {\n Network = @default.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAlloc.Name,\n },\n });\n\n var primaryInstance = new Gcp.Alloydb.Instance(\"primary\", new()\n {\n Cluster = primary.Name,\n InstanceId = \"alloydb-primary-instance\",\n InstanceType = \"PRIMARY\",\n MachineConfig = new Gcp.Alloydb.Inputs.InstanceMachineConfigArgs\n {\n CpuCount = 2,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vpcConnection,\n },\n });\n\n var secondary = new Gcp.Alloydb.Cluster(\"secondary\", new()\n {\n ClusterId = \"alloydb-secondary-cluster\",\n Location = \"us-east1\",\n NetworkConfig = new Gcp.Alloydb.Inputs.ClusterNetworkConfigArgs\n {\n Network = defaultGoogleComputeNetwork.Id,\n },\n ClusterType = \"SECONDARY\",\n ContinuousBackupConfig = new Gcp.Alloydb.Inputs.ClusterContinuousBackupConfigArgs\n {\n Enabled = false,\n },\n SecondaryConfig = new Gcp.Alloydb.Inputs.ClusterSecondaryConfigArgs\n {\n PrimaryClusterName = primary.Name,\n },\n DeletionPolicy = \"FORCE\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n primaryInstance,\n },\n });\n\n var secondaryInstance = new Gcp.Alloydb.Instance(\"secondary\", new()\n {\n Cluster = secondary.Name,\n InstanceId = \"alloydb-secondary-instance\",\n InstanceType = secondary.ClusterType,\n MachineConfig = new Gcp.Alloydb.Inputs.InstanceMachineConfigArgs\n {\n CpuCount = 2,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vpcConnection,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/alloydb\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"alloydb-secondary-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimary, err := alloydb.NewCluster(ctx, \"primary\", \u0026alloydb.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"alloydb-primary-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNetworkConfig: \u0026alloydb.ClusterNetworkConfigArgs{\n\t\t\t\tNetwork: _default.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"alloydb-secondary-instance\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvpcConnection, err := servicenetworking.NewConnection(ctx, \"vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: _default.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tprivateIpAlloc.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryInstance, err := alloydb.NewInstance(ctx, \"primary\", \u0026alloydb.InstanceArgs{\n\t\t\tCluster: primary.Name,\n\t\t\tInstanceId: pulumi.String(\"alloydb-primary-instance\"),\n\t\t\tInstanceType: pulumi.String(\"PRIMARY\"),\n\t\t\tMachineConfig: \u0026alloydb.InstanceMachineConfigArgs{\n\t\t\t\tCpuCount: pulumi.Int(2),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondary, err := alloydb.NewCluster(ctx, \"secondary\", \u0026alloydb.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"alloydb-secondary-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-east1\"),\n\t\t\tNetworkConfig: \u0026alloydb.ClusterNetworkConfigArgs{\n\t\t\t\tNetwork: pulumi.Any(defaultGoogleComputeNetwork.Id),\n\t\t\t},\n\t\t\tClusterType: pulumi.String(\"SECONDARY\"),\n\t\t\tContinuousBackupConfig: \u0026alloydb.ClusterContinuousBackupConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(false),\n\t\t\t},\n\t\t\tSecondaryConfig: \u0026alloydb.ClusterSecondaryConfigArgs{\n\t\t\t\tPrimaryClusterName: primary.Name,\n\t\t\t},\n\t\t\tDeletionPolicy: pulumi.String(\"FORCE\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tprimaryInstance,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = alloydb.NewInstance(ctx, \"secondary\", \u0026alloydb.InstanceArgs{\n\t\t\tCluster: secondary.Name,\n\t\t\tInstanceId: pulumi.String(\"alloydb-secondary-instance\"),\n\t\t\tInstanceType: secondary.ClusterType,\n\t\t\tMachineConfig: \u0026alloydb.InstanceMachineConfigArgs{\n\t\t\t\tCpuCount: pulumi.Int(2),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.alloydb.Cluster;\nimport com.pulumi.gcp.alloydb.ClusterArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterNetworkConfigArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.alloydb.Instance;\nimport com.pulumi.gcp.alloydb.InstanceArgs;\nimport com.pulumi.gcp.alloydb.inputs.InstanceMachineConfigArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterContinuousBackupConfigArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterSecondaryConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"alloydb-secondary-network\")\n .build());\n\n var primary = new Cluster(\"primary\", ClusterArgs.builder()\n .clusterId(\"alloydb-primary-cluster\")\n .location(\"us-central1\")\n .networkConfig(ClusterNetworkConfigArgs.builder()\n .network(default_.id())\n .build())\n .build());\n\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"alloydb-secondary-instance\")\n .addressType(\"INTERNAL\")\n .purpose(\"VPC_PEERING\")\n .prefixLength(16)\n .network(default_.id())\n .build());\n\n var vpcConnection = new Connection(\"vpcConnection\", ConnectionArgs.builder()\n .network(default_.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAlloc.name())\n .build());\n\n var primaryInstance = new Instance(\"primaryInstance\", InstanceArgs.builder()\n .cluster(primary.name())\n .instanceId(\"alloydb-primary-instance\")\n .instanceType(\"PRIMARY\")\n .machineConfig(InstanceMachineConfigArgs.builder()\n .cpuCount(2)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(vpcConnection)\n .build());\n\n var secondary = new Cluster(\"secondary\", ClusterArgs.builder()\n .clusterId(\"alloydb-secondary-cluster\")\n .location(\"us-east1\")\n .networkConfig(ClusterNetworkConfigArgs.builder()\n .network(defaultGoogleComputeNetwork.id())\n .build())\n .clusterType(\"SECONDARY\")\n .continuousBackupConfig(ClusterContinuousBackupConfigArgs.builder()\n .enabled(false)\n .build())\n .secondaryConfig(ClusterSecondaryConfigArgs.builder()\n .primaryClusterName(primary.name())\n .build())\n .deletionPolicy(\"FORCE\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(primaryInstance)\n .build());\n\n var secondaryInstance = new Instance(\"secondaryInstance\", InstanceArgs.builder()\n .cluster(secondary.name())\n .instanceId(\"alloydb-secondary-instance\")\n .instanceType(secondary.clusterType())\n .machineConfig(InstanceMachineConfigArgs.builder()\n .cpuCount(2)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(vpcConnection)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:alloydb:Cluster\n properties:\n clusterId: alloydb-primary-cluster\n location: us-central1\n networkConfig:\n network: ${default.id}\n primaryInstance:\n type: gcp:alloydb:Instance\n name: primary\n properties:\n cluster: ${primary.name}\n instanceId: alloydb-primary-instance\n instanceType: PRIMARY\n machineConfig:\n cpuCount: 2\n options:\n dependson:\n - ${vpcConnection}\n secondary:\n type: gcp:alloydb:Cluster\n properties:\n clusterId: alloydb-secondary-cluster\n location: us-east1\n networkConfig:\n network: ${defaultGoogleComputeNetwork.id}\n clusterType: SECONDARY\n continuousBackupConfig:\n enabled: false\n secondaryConfig:\n primaryClusterName: ${primary.name}\n deletionPolicy: FORCE\n options:\n dependson:\n - ${primaryInstance}\n secondaryInstance:\n type: gcp:alloydb:Instance\n name: secondary\n properties:\n cluster: ${secondary.name}\n instanceId: alloydb-secondary-instance\n instanceType: ${secondary.clusterType}\n machineConfig:\n cpuCount: 2\n options:\n dependson:\n - ${vpcConnection}\n default:\n type: gcp:compute:Network\n properties:\n name: alloydb-secondary-network\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: alloydb-secondary-instance\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 16\n network: ${default.id}\n vpcConnection:\n type: gcp:servicenetworking:Connection\n name: vpc_connection\n properties:\n network: ${default.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAlloc.name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/clusters/{{cluster}}/instances/{{instance_id}}`\n\n* `{{project}}/{{location}}/{{cluster}}/{{instance_id}}`\n\n* `{{location}}/{{cluster}}/{{instance_id}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:alloydb/instance:Instance default projects/{{project}}/locations/{{location}}/clusters/{{cluster}}/instances/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:alloydb/instance:Instance default {{project}}/{{location}}/{{cluster}}/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:alloydb/instance:Instance default {{location}}/{{cluster}}/{{instance_id}}\n```\n\n", "properties": { "annotations": { "type": "object", @@ -118222,7 +118222,7 @@ } }, "gcp:alloydb/user:User": { - "description": "A database user in an AlloyDB cluster.\n\n\nTo get more information about User, see:\n\n* [API documentation](https://cloud.google.com/alloydb/docs/reference/rest/v1/projects.locations.clusters.users/create)\n* How-to Guides\n * [AlloyDB](https://cloud.google.com/alloydb/docs/)\n\n## Example Usage\n\n### Alloydb User Builtin\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultCluster = new gcp.alloydb.Cluster(\"default\", {\n clusterId: \"alloydb-cluster\",\n location: \"us-central1\",\n networkConfig: {\n network: defaultGoogleComputeNetwork.id,\n },\n initialUser: {\n password: \"cluster_secret\",\n },\n});\nconst defaultNetwork = new gcp.compute.Network(\"default\", {name: \"alloydb-network\"});\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"alloydb-cluster\",\n addressType: \"INTERNAL\",\n purpose: \"VPC_PEERING\",\n prefixLength: 16,\n network: defaultNetwork.id,\n});\nconst vpcConnection = new gcp.servicenetworking.Connection(\"vpc_connection\", {\n network: defaultNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAlloc.name],\n});\nconst _default = new gcp.alloydb.Instance(\"default\", {\n cluster: defaultCluster.name,\n instanceId: \"alloydb-instance\",\n instanceType: \"PRIMARY\",\n}, {\n dependsOn: [vpcConnection],\n});\nconst project = gcp.organizations.getProject({});\nconst user1 = new gcp.alloydb.User(\"user1\", {\n cluster: defaultCluster.name,\n userId: \"user1\",\n userType: \"ALLOYDB_BUILT_IN\",\n password: \"user_secret\",\n databaseRoles: [\"alloydbsuperuser\"],\n}, {\n dependsOn: [_default],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_cluster = gcp.alloydb.Cluster(\"default\",\n cluster_id=\"alloydb-cluster\",\n location=\"us-central1\",\n network_config={\n \"network\": default_google_compute_network[\"id\"],\n },\n initial_user={\n \"password\": \"cluster_secret\",\n })\ndefault_network = gcp.compute.Network(\"default\", name=\"alloydb-network\")\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"alloydb-cluster\",\n address_type=\"INTERNAL\",\n purpose=\"VPC_PEERING\",\n prefix_length=16,\n network=default_network.id)\nvpc_connection = gcp.servicenetworking.Connection(\"vpc_connection\",\n network=default_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_alloc.name])\ndefault = gcp.alloydb.Instance(\"default\",\n cluster=default_cluster.name,\n instance_id=\"alloydb-instance\",\n instance_type=\"PRIMARY\",\n opts = pulumi.ResourceOptions(depends_on=[vpc_connection]))\nproject = gcp.organizations.get_project()\nuser1 = gcp.alloydb.User(\"user1\",\n cluster=default_cluster.name,\n user_id=\"user1\",\n user_type=\"ALLOYDB_BUILT_IN\",\n password=\"user_secret\",\n database_roles=[\"alloydbsuperuser\"],\n opts = pulumi.ResourceOptions(depends_on=[default]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultCluster = new Gcp.Alloydb.Cluster(\"default\", new()\n {\n ClusterId = \"alloydb-cluster\",\n Location = \"us-central1\",\n NetworkConfig = new Gcp.Alloydb.Inputs.ClusterNetworkConfigArgs\n {\n Network = defaultGoogleComputeNetwork.Id,\n },\n InitialUser = new Gcp.Alloydb.Inputs.ClusterInitialUserArgs\n {\n Password = \"cluster_secret\",\n },\n });\n\n var defaultNetwork = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"alloydb-network\",\n });\n\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"alloydb-cluster\",\n AddressType = \"INTERNAL\",\n Purpose = \"VPC_PEERING\",\n PrefixLength = 16,\n Network = defaultNetwork.Id,\n });\n\n var vpcConnection = new Gcp.ServiceNetworking.Connection(\"vpc_connection\", new()\n {\n Network = defaultNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAlloc.Name,\n },\n });\n\n var @default = new Gcp.Alloydb.Instance(\"default\", new()\n {\n Cluster = defaultCluster.Name,\n InstanceId = \"alloydb-instance\",\n InstanceType = \"PRIMARY\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vpcConnection,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var user1 = new Gcp.Alloydb.User(\"user1\", new()\n {\n Cluster = defaultCluster.Name,\n UserId = \"user1\",\n UserType = \"ALLOYDB_BUILT_IN\",\n Password = \"user_secret\",\n DatabaseRoles = new[]\n {\n \"alloydbsuperuser\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @default,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/alloydb\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdefaultCluster, err := alloydb.NewCluster(ctx, \"default\", \u0026alloydb.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"alloydb-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNetworkConfig: \u0026alloydb.ClusterNetworkConfigArgs{\n\t\t\t\tNetwork: pulumi.Any(defaultGoogleComputeNetwork.Id),\n\t\t\t},\n\t\t\tInitialUser: \u0026alloydb.ClusterInitialUserArgs{\n\t\t\t\tPassword: pulumi.String(\"cluster_secret\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultNetwork, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"alloydb-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"alloydb-cluster\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvpcConnection, err := servicenetworking.NewConnection(ctx, \"vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tprivateIpAlloc.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = alloydb.NewInstance(ctx, \"default\", \u0026alloydb.InstanceArgs{\n\t\t\tCluster: defaultCluster.Name,\n\t\t\tInstanceId: pulumi.String(\"alloydb-instance\"),\n\t\t\tInstanceType: pulumi.String(\"PRIMARY\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = alloydb.NewUser(ctx, \"user1\", \u0026alloydb.UserArgs{\n\t\t\tCluster: defaultCluster.Name,\n\t\t\tUserId: pulumi.String(\"user1\"),\n\t\t\tUserType: pulumi.String(\"ALLOYDB_BUILT_IN\"),\n\t\t\tPassword: pulumi.String(\"user_secret\"),\n\t\t\tDatabaseRoles: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"alloydbsuperuser\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\t_default,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.alloydb.Cluster;\nimport com.pulumi.gcp.alloydb.ClusterArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterNetworkConfigArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterInitialUserArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.alloydb.Instance;\nimport com.pulumi.gcp.alloydb.InstanceArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.alloydb.User;\nimport com.pulumi.gcp.alloydb.UserArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultCluster = new Cluster(\"defaultCluster\", ClusterArgs.builder()\n .clusterId(\"alloydb-cluster\")\n .location(\"us-central1\")\n .networkConfig(ClusterNetworkConfigArgs.builder()\n .network(defaultGoogleComputeNetwork.id())\n .build())\n .initialUser(ClusterInitialUserArgs.builder()\n .password(\"cluster_secret\")\n .build())\n .build());\n\n var defaultNetwork = new Network(\"defaultNetwork\", NetworkArgs.builder()\n .name(\"alloydb-network\")\n .build());\n\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"alloydb-cluster\")\n .addressType(\"INTERNAL\")\n .purpose(\"VPC_PEERING\")\n .prefixLength(16)\n .network(defaultNetwork.id())\n .build());\n\n var vpcConnection = new Connection(\"vpcConnection\", ConnectionArgs.builder()\n .network(defaultNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAlloc.name())\n .build());\n\n var default_ = new Instance(\"default\", InstanceArgs.builder()\n .cluster(defaultCluster.name())\n .instanceId(\"alloydb-instance\")\n .instanceType(\"PRIMARY\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(vpcConnection)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var user1 = new User(\"user1\", UserArgs.builder()\n .cluster(defaultCluster.name())\n .userId(\"user1\")\n .userType(\"ALLOYDB_BUILT_IN\")\n .password(\"user_secret\")\n .databaseRoles(\"alloydbsuperuser\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:alloydb:Instance\n properties:\n cluster: ${defaultCluster.name}\n instanceId: alloydb-instance\n instanceType: PRIMARY\n options:\n dependson:\n - ${vpcConnection}\n defaultCluster:\n type: gcp:alloydb:Cluster\n name: default\n properties:\n clusterId: alloydb-cluster\n location: us-central1\n networkConfig:\n network: ${defaultGoogleComputeNetwork.id}\n initialUser:\n password: cluster_secret\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: alloydb-network\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: alloydb-cluster\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 16\n network: ${defaultNetwork.id}\n vpcConnection:\n type: gcp:servicenetworking:Connection\n name: vpc_connection\n properties:\n network: ${defaultNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAlloc.name}\n user1:\n type: gcp:alloydb:User\n properties:\n cluster: ${defaultCluster.name}\n userId: user1\n userType: ALLOYDB_BUILT_IN\n password: user_secret\n databaseRoles:\n - alloydbsuperuser\n options:\n dependson:\n - ${default}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Alloydb User Iam\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultNetwork = new gcp.compute.Network(\"default\", {name: \"alloydb-network\"});\nconst defaultCluster = new gcp.alloydb.Cluster(\"default\", {\n clusterId: \"alloydb-cluster\",\n location: \"us-central1\",\n networkConfig: {\n network: defaultNetwork.id,\n },\n initialUser: {\n password: \"cluster_secret\",\n },\n});\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"alloydb-cluster\",\n addressType: \"INTERNAL\",\n purpose: \"VPC_PEERING\",\n prefixLength: 16,\n network: defaultNetwork.id,\n});\nconst vpcConnection = new gcp.servicenetworking.Connection(\"vpc_connection\", {\n network: defaultNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAlloc.name],\n});\nconst _default = new gcp.alloydb.Instance(\"default\", {\n cluster: defaultCluster.name,\n instanceId: \"alloydb-instance\",\n instanceType: \"PRIMARY\",\n}, {\n dependsOn: [vpcConnection],\n});\nconst project = gcp.organizations.getProject({});\nconst user2 = new gcp.alloydb.User(\"user2\", {\n cluster: defaultCluster.name,\n userId: \"user2@foo.com\",\n userType: \"ALLOYDB_IAM_USER\",\n databaseRoles: [\"alloydbiamuser\"],\n}, {\n dependsOn: [_default],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_network = gcp.compute.Network(\"default\", name=\"alloydb-network\")\ndefault_cluster = gcp.alloydb.Cluster(\"default\",\n cluster_id=\"alloydb-cluster\",\n location=\"us-central1\",\n network_config={\n \"network\": default_network.id,\n },\n initial_user={\n \"password\": \"cluster_secret\",\n })\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"alloydb-cluster\",\n address_type=\"INTERNAL\",\n purpose=\"VPC_PEERING\",\n prefix_length=16,\n network=default_network.id)\nvpc_connection = gcp.servicenetworking.Connection(\"vpc_connection\",\n network=default_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_alloc.name])\ndefault = gcp.alloydb.Instance(\"default\",\n cluster=default_cluster.name,\n instance_id=\"alloydb-instance\",\n instance_type=\"PRIMARY\",\n opts = pulumi.ResourceOptions(depends_on=[vpc_connection]))\nproject = gcp.organizations.get_project()\nuser2 = gcp.alloydb.User(\"user2\",\n cluster=default_cluster.name,\n user_id=\"user2@foo.com\",\n user_type=\"ALLOYDB_IAM_USER\",\n database_roles=[\"alloydbiamuser\"],\n opts = pulumi.ResourceOptions(depends_on=[default]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultNetwork = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"alloydb-network\",\n });\n\n var defaultCluster = new Gcp.Alloydb.Cluster(\"default\", new()\n {\n ClusterId = \"alloydb-cluster\",\n Location = \"us-central1\",\n NetworkConfig = new Gcp.Alloydb.Inputs.ClusterNetworkConfigArgs\n {\n Network = defaultNetwork.Id,\n },\n InitialUser = new Gcp.Alloydb.Inputs.ClusterInitialUserArgs\n {\n Password = \"cluster_secret\",\n },\n });\n\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"alloydb-cluster\",\n AddressType = \"INTERNAL\",\n Purpose = \"VPC_PEERING\",\n PrefixLength = 16,\n Network = defaultNetwork.Id,\n });\n\n var vpcConnection = new Gcp.ServiceNetworking.Connection(\"vpc_connection\", new()\n {\n Network = defaultNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAlloc.Name,\n },\n });\n\n var @default = new Gcp.Alloydb.Instance(\"default\", new()\n {\n Cluster = defaultCluster.Name,\n InstanceId = \"alloydb-instance\",\n InstanceType = \"PRIMARY\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vpcConnection,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var user2 = new Gcp.Alloydb.User(\"user2\", new()\n {\n Cluster = defaultCluster.Name,\n UserId = \"user2@foo.com\",\n UserType = \"ALLOYDB_IAM_USER\",\n DatabaseRoles = new[]\n {\n \"alloydbiamuser\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @default,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/alloydb\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdefaultNetwork, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"alloydb-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultCluster, err := alloydb.NewCluster(ctx, \"default\", \u0026alloydb.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"alloydb-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNetworkConfig: \u0026alloydb.ClusterNetworkConfigArgs{\n\t\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\t},\n\t\t\tInitialUser: \u0026alloydb.ClusterInitialUserArgs{\n\t\t\t\tPassword: pulumi.String(\"cluster_secret\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"alloydb-cluster\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvpcConnection, err := servicenetworking.NewConnection(ctx, \"vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tprivateIpAlloc.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = alloydb.NewInstance(ctx, \"default\", \u0026alloydb.InstanceArgs{\n\t\t\tCluster: defaultCluster.Name,\n\t\t\tInstanceId: pulumi.String(\"alloydb-instance\"),\n\t\t\tInstanceType: pulumi.String(\"PRIMARY\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = alloydb.NewUser(ctx, \"user2\", \u0026alloydb.UserArgs{\n\t\t\tCluster: defaultCluster.Name,\n\t\t\tUserId: pulumi.String(\"user2@foo.com\"),\n\t\t\tUserType: pulumi.String(\"ALLOYDB_IAM_USER\"),\n\t\t\tDatabaseRoles: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"alloydbiamuser\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\t_default,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.alloydb.Cluster;\nimport com.pulumi.gcp.alloydb.ClusterArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterNetworkConfigArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterInitialUserArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.alloydb.Instance;\nimport com.pulumi.gcp.alloydb.InstanceArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.alloydb.User;\nimport com.pulumi.gcp.alloydb.UserArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultNetwork = new Network(\"defaultNetwork\", NetworkArgs.builder()\n .name(\"alloydb-network\")\n .build());\n\n var defaultCluster = new Cluster(\"defaultCluster\", ClusterArgs.builder()\n .clusterId(\"alloydb-cluster\")\n .location(\"us-central1\")\n .networkConfig(ClusterNetworkConfigArgs.builder()\n .network(defaultNetwork.id())\n .build())\n .initialUser(ClusterInitialUserArgs.builder()\n .password(\"cluster_secret\")\n .build())\n .build());\n\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"alloydb-cluster\")\n .addressType(\"INTERNAL\")\n .purpose(\"VPC_PEERING\")\n .prefixLength(16)\n .network(defaultNetwork.id())\n .build());\n\n var vpcConnection = new Connection(\"vpcConnection\", ConnectionArgs.builder()\n .network(defaultNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAlloc.name())\n .build());\n\n var default_ = new Instance(\"default\", InstanceArgs.builder()\n .cluster(defaultCluster.name())\n .instanceId(\"alloydb-instance\")\n .instanceType(\"PRIMARY\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(vpcConnection)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var user2 = new User(\"user2\", UserArgs.builder()\n .cluster(defaultCluster.name())\n .userId(\"user2@foo.com\")\n .userType(\"ALLOYDB_IAM_USER\")\n .databaseRoles(\"alloydbiamuser\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:alloydb:Instance\n properties:\n cluster: ${defaultCluster.name}\n instanceId: alloydb-instance\n instanceType: PRIMARY\n options:\n dependson:\n - ${vpcConnection}\n defaultCluster:\n type: gcp:alloydb:Cluster\n name: default\n properties:\n clusterId: alloydb-cluster\n location: us-central1\n networkConfig:\n network: ${defaultNetwork.id}\n initialUser:\n password: cluster_secret\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: alloydb-network\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: alloydb-cluster\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 16\n network: ${defaultNetwork.id}\n vpcConnection:\n type: gcp:servicenetworking:Connection\n name: vpc_connection\n properties:\n network: ${defaultNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAlloc.name}\n user2:\n type: gcp:alloydb:User\n properties:\n cluster: ${defaultCluster.name}\n userId: user2@foo.com\n userType: ALLOYDB_IAM_USER\n databaseRoles:\n - alloydbiamuser\n options:\n dependson:\n - ${default}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUser can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/clusters/{{cluster}}/users/{{user_id}}`\n\n* `{{project}}/{{location}}/{{cluster}}/{{user_id}}`\n\n* `{{location}}/{{cluster}}/{{user_id}}`\n\nWhen using the `pulumi import` command, User can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:alloydb/user:User default projects/{{project}}/locations/{{location}}/clusters/{{cluster}}/users/{{user_id}}\n```\n\n```sh\n$ pulumi import gcp:alloydb/user:User default {{project}}/{{location}}/{{cluster}}/{{user_id}}\n```\n\n```sh\n$ pulumi import gcp:alloydb/user:User default {{location}}/{{cluster}}/{{user_id}}\n```\n\n", + "description": "A database user in an AlloyDB cluster.\n\n\nTo get more information about User, see:\n\n* [API documentation](https://cloud.google.com/alloydb/docs/reference/rest/v1/projects.locations.clusters.users/create)\n* How-to Guides\n * [AlloyDB](https://cloud.google.com/alloydb/docs/)\n\n## Example Usage\n\n### Alloydb User Builtin\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultCluster = new gcp.alloydb.Cluster(\"default\", {\n clusterId: \"alloydb-cluster\",\n location: \"us-central1\",\n networkConfig: {\n network: defaultGoogleComputeNetwork.id,\n },\n initialUser: {\n password: \"cluster_secret\",\n },\n});\nconst defaultNetwork = new gcp.compute.Network(\"default\", {name: \"alloydb-network\"});\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"alloydb-cluster\",\n addressType: \"INTERNAL\",\n purpose: \"VPC_PEERING\",\n prefixLength: 16,\n network: defaultNetwork.id,\n});\nconst vpcConnection = new gcp.servicenetworking.Connection(\"vpc_connection\", {\n network: defaultNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAlloc.name],\n});\nconst _default = new gcp.alloydb.Instance(\"default\", {\n cluster: defaultCluster.name,\n instanceId: \"alloydb-instance\",\n instanceType: \"PRIMARY\",\n}, {\n dependsOn: [vpcConnection],\n});\nconst project = gcp.organizations.getProject({});\nconst user1 = new gcp.alloydb.User(\"user1\", {\n cluster: defaultCluster.name,\n userId: \"user1\",\n userType: \"ALLOYDB_BUILT_IN\",\n password: \"user_secret\",\n databaseRoles: [\"alloydbsuperuser\"],\n}, {\n dependsOn: [_default],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_cluster = gcp.alloydb.Cluster(\"default\",\n cluster_id=\"alloydb-cluster\",\n location=\"us-central1\",\n network_config={\n \"network\": default_google_compute_network[\"id\"],\n },\n initial_user={\n \"password\": \"cluster_secret\",\n })\ndefault_network = gcp.compute.Network(\"default\", name=\"alloydb-network\")\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"alloydb-cluster\",\n address_type=\"INTERNAL\",\n purpose=\"VPC_PEERING\",\n prefix_length=16,\n network=default_network.id)\nvpc_connection = gcp.servicenetworking.Connection(\"vpc_connection\",\n network=default_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_alloc.name])\ndefault = gcp.alloydb.Instance(\"default\",\n cluster=default_cluster.name,\n instance_id=\"alloydb-instance\",\n instance_type=\"PRIMARY\",\n opts = pulumi.ResourceOptions(depends_on=[vpc_connection]))\nproject = gcp.organizations.get_project()\nuser1 = gcp.alloydb.User(\"user1\",\n cluster=default_cluster.name,\n user_id=\"user1\",\n user_type=\"ALLOYDB_BUILT_IN\",\n password=\"user_secret\",\n database_roles=[\"alloydbsuperuser\"],\n opts = pulumi.ResourceOptions(depends_on=[default]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultCluster = new Gcp.Alloydb.Cluster(\"default\", new()\n {\n ClusterId = \"alloydb-cluster\",\n Location = \"us-central1\",\n NetworkConfig = new Gcp.Alloydb.Inputs.ClusterNetworkConfigArgs\n {\n Network = defaultGoogleComputeNetwork.Id,\n },\n InitialUser = new Gcp.Alloydb.Inputs.ClusterInitialUserArgs\n {\n Password = \"cluster_secret\",\n },\n });\n\n var defaultNetwork = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"alloydb-network\",\n });\n\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"alloydb-cluster\",\n AddressType = \"INTERNAL\",\n Purpose = \"VPC_PEERING\",\n PrefixLength = 16,\n Network = defaultNetwork.Id,\n });\n\n var vpcConnection = new Gcp.ServiceNetworking.Connection(\"vpc_connection\", new()\n {\n Network = defaultNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAlloc.Name,\n },\n });\n\n var @default = new Gcp.Alloydb.Instance(\"default\", new()\n {\n Cluster = defaultCluster.Name,\n InstanceId = \"alloydb-instance\",\n InstanceType = \"PRIMARY\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vpcConnection,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var user1 = new Gcp.Alloydb.User(\"user1\", new()\n {\n Cluster = defaultCluster.Name,\n UserId = \"user1\",\n UserType = \"ALLOYDB_BUILT_IN\",\n Password = \"user_secret\",\n DatabaseRoles = new[]\n {\n \"alloydbsuperuser\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @default,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/alloydb\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdefaultCluster, err := alloydb.NewCluster(ctx, \"default\", \u0026alloydb.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"alloydb-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNetworkConfig: \u0026alloydb.ClusterNetworkConfigArgs{\n\t\t\t\tNetwork: pulumi.Any(defaultGoogleComputeNetwork.Id),\n\t\t\t},\n\t\t\tInitialUser: \u0026alloydb.ClusterInitialUserArgs{\n\t\t\t\tPassword: pulumi.String(\"cluster_secret\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultNetwork, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"alloydb-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"alloydb-cluster\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvpcConnection, err := servicenetworking.NewConnection(ctx, \"vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tprivateIpAlloc.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = alloydb.NewInstance(ctx, \"default\", \u0026alloydb.InstanceArgs{\n\t\t\tCluster: defaultCluster.Name,\n\t\t\tInstanceId: pulumi.String(\"alloydb-instance\"),\n\t\t\tInstanceType: pulumi.String(\"PRIMARY\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = alloydb.NewUser(ctx, \"user1\", \u0026alloydb.UserArgs{\n\t\t\tCluster: defaultCluster.Name,\n\t\t\tUserId: pulumi.String(\"user1\"),\n\t\t\tUserType: pulumi.String(\"ALLOYDB_BUILT_IN\"),\n\t\t\tPassword: pulumi.String(\"user_secret\"),\n\t\t\tDatabaseRoles: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"alloydbsuperuser\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\t_default,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.alloydb.Cluster;\nimport com.pulumi.gcp.alloydb.ClusterArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterNetworkConfigArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterInitialUserArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.alloydb.Instance;\nimport com.pulumi.gcp.alloydb.InstanceArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.alloydb.User;\nimport com.pulumi.gcp.alloydb.UserArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultCluster = new Cluster(\"defaultCluster\", ClusterArgs.builder()\n .clusterId(\"alloydb-cluster\")\n .location(\"us-central1\")\n .networkConfig(ClusterNetworkConfigArgs.builder()\n .network(defaultGoogleComputeNetwork.id())\n .build())\n .initialUser(ClusterInitialUserArgs.builder()\n .password(\"cluster_secret\")\n .build())\n .build());\n\n var defaultNetwork = new Network(\"defaultNetwork\", NetworkArgs.builder()\n .name(\"alloydb-network\")\n .build());\n\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"alloydb-cluster\")\n .addressType(\"INTERNAL\")\n .purpose(\"VPC_PEERING\")\n .prefixLength(16)\n .network(defaultNetwork.id())\n .build());\n\n var vpcConnection = new Connection(\"vpcConnection\", ConnectionArgs.builder()\n .network(defaultNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAlloc.name())\n .build());\n\n var default_ = new Instance(\"default\", InstanceArgs.builder()\n .cluster(defaultCluster.name())\n .instanceId(\"alloydb-instance\")\n .instanceType(\"PRIMARY\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(vpcConnection)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var user1 = new User(\"user1\", UserArgs.builder()\n .cluster(defaultCluster.name())\n .userId(\"user1\")\n .userType(\"ALLOYDB_BUILT_IN\")\n .password(\"user_secret\")\n .databaseRoles(\"alloydbsuperuser\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:alloydb:Instance\n properties:\n cluster: ${defaultCluster.name}\n instanceId: alloydb-instance\n instanceType: PRIMARY\n options:\n dependson:\n - ${vpcConnection}\n defaultCluster:\n type: gcp:alloydb:Cluster\n name: default\n properties:\n clusterId: alloydb-cluster\n location: us-central1\n networkConfig:\n network: ${defaultGoogleComputeNetwork.id}\n initialUser:\n password: cluster_secret\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: alloydb-network\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: alloydb-cluster\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 16\n network: ${defaultNetwork.id}\n vpcConnection:\n type: gcp:servicenetworking:Connection\n name: vpc_connection\n properties:\n network: ${defaultNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAlloc.name}\n user1:\n type: gcp:alloydb:User\n properties:\n cluster: ${defaultCluster.name}\n userId: user1\n userType: ALLOYDB_BUILT_IN\n password: user_secret\n databaseRoles:\n - alloydbsuperuser\n options:\n dependson:\n - ${default}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Alloydb User Iam\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultNetwork = new gcp.compute.Network(\"default\", {name: \"alloydb-network\"});\nconst defaultCluster = new gcp.alloydb.Cluster(\"default\", {\n clusterId: \"alloydb-cluster\",\n location: \"us-central1\",\n networkConfig: {\n network: defaultNetwork.id,\n },\n initialUser: {\n password: \"cluster_secret\",\n },\n});\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"alloydb-cluster\",\n addressType: \"INTERNAL\",\n purpose: \"VPC_PEERING\",\n prefixLength: 16,\n network: defaultNetwork.id,\n});\nconst vpcConnection = new gcp.servicenetworking.Connection(\"vpc_connection\", {\n network: defaultNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAlloc.name],\n});\nconst _default = new gcp.alloydb.Instance(\"default\", {\n cluster: defaultCluster.name,\n instanceId: \"alloydb-instance\",\n instanceType: \"PRIMARY\",\n}, {\n dependsOn: [vpcConnection],\n});\nconst project = gcp.organizations.getProject({});\nconst user2 = new gcp.alloydb.User(\"user2\", {\n cluster: defaultCluster.name,\n userId: \"user2@foo.com\",\n userType: \"ALLOYDB_IAM_USER\",\n databaseRoles: [\"alloydbiamuser\"],\n}, {\n dependsOn: [_default],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_network = gcp.compute.Network(\"default\", name=\"alloydb-network\")\ndefault_cluster = gcp.alloydb.Cluster(\"default\",\n cluster_id=\"alloydb-cluster\",\n location=\"us-central1\",\n network_config={\n \"network\": default_network.id,\n },\n initial_user={\n \"password\": \"cluster_secret\",\n })\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"alloydb-cluster\",\n address_type=\"INTERNAL\",\n purpose=\"VPC_PEERING\",\n prefix_length=16,\n network=default_network.id)\nvpc_connection = gcp.servicenetworking.Connection(\"vpc_connection\",\n network=default_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_alloc.name])\ndefault = gcp.alloydb.Instance(\"default\",\n cluster=default_cluster.name,\n instance_id=\"alloydb-instance\",\n instance_type=\"PRIMARY\",\n opts = pulumi.ResourceOptions(depends_on=[vpc_connection]))\nproject = gcp.organizations.get_project()\nuser2 = gcp.alloydb.User(\"user2\",\n cluster=default_cluster.name,\n user_id=\"user2@foo.com\",\n user_type=\"ALLOYDB_IAM_USER\",\n database_roles=[\"alloydbiamuser\"],\n opts = pulumi.ResourceOptions(depends_on=[default]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultNetwork = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"alloydb-network\",\n });\n\n var defaultCluster = new Gcp.Alloydb.Cluster(\"default\", new()\n {\n ClusterId = \"alloydb-cluster\",\n Location = \"us-central1\",\n NetworkConfig = new Gcp.Alloydb.Inputs.ClusterNetworkConfigArgs\n {\n Network = defaultNetwork.Id,\n },\n InitialUser = new Gcp.Alloydb.Inputs.ClusterInitialUserArgs\n {\n Password = \"cluster_secret\",\n },\n });\n\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"alloydb-cluster\",\n AddressType = \"INTERNAL\",\n Purpose = \"VPC_PEERING\",\n PrefixLength = 16,\n Network = defaultNetwork.Id,\n });\n\n var vpcConnection = new Gcp.ServiceNetworking.Connection(\"vpc_connection\", new()\n {\n Network = defaultNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAlloc.Name,\n },\n });\n\n var @default = new Gcp.Alloydb.Instance(\"default\", new()\n {\n Cluster = defaultCluster.Name,\n InstanceId = \"alloydb-instance\",\n InstanceType = \"PRIMARY\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vpcConnection,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var user2 = new Gcp.Alloydb.User(\"user2\", new()\n {\n Cluster = defaultCluster.Name,\n UserId = \"user2@foo.com\",\n UserType = \"ALLOYDB_IAM_USER\",\n DatabaseRoles = new[]\n {\n \"alloydbiamuser\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @default,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/alloydb\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdefaultNetwork, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"alloydb-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultCluster, err := alloydb.NewCluster(ctx, \"default\", \u0026alloydb.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"alloydb-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNetworkConfig: \u0026alloydb.ClusterNetworkConfigArgs{\n\t\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\t},\n\t\t\tInitialUser: \u0026alloydb.ClusterInitialUserArgs{\n\t\t\t\tPassword: pulumi.String(\"cluster_secret\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"alloydb-cluster\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvpcConnection, err := servicenetworking.NewConnection(ctx, \"vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tprivateIpAlloc.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = alloydb.NewInstance(ctx, \"default\", \u0026alloydb.InstanceArgs{\n\t\t\tCluster: defaultCluster.Name,\n\t\t\tInstanceId: pulumi.String(\"alloydb-instance\"),\n\t\t\tInstanceType: pulumi.String(\"PRIMARY\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = alloydb.NewUser(ctx, \"user2\", \u0026alloydb.UserArgs{\n\t\t\tCluster: defaultCluster.Name,\n\t\t\tUserId: pulumi.String(\"user2@foo.com\"),\n\t\t\tUserType: pulumi.String(\"ALLOYDB_IAM_USER\"),\n\t\t\tDatabaseRoles: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"alloydbiamuser\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\t_default,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.alloydb.Cluster;\nimport com.pulumi.gcp.alloydb.ClusterArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterNetworkConfigArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterInitialUserArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.alloydb.Instance;\nimport com.pulumi.gcp.alloydb.InstanceArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.alloydb.User;\nimport com.pulumi.gcp.alloydb.UserArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultNetwork = new Network(\"defaultNetwork\", NetworkArgs.builder()\n .name(\"alloydb-network\")\n .build());\n\n var defaultCluster = new Cluster(\"defaultCluster\", ClusterArgs.builder()\n .clusterId(\"alloydb-cluster\")\n .location(\"us-central1\")\n .networkConfig(ClusterNetworkConfigArgs.builder()\n .network(defaultNetwork.id())\n .build())\n .initialUser(ClusterInitialUserArgs.builder()\n .password(\"cluster_secret\")\n .build())\n .build());\n\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"alloydb-cluster\")\n .addressType(\"INTERNAL\")\n .purpose(\"VPC_PEERING\")\n .prefixLength(16)\n .network(defaultNetwork.id())\n .build());\n\n var vpcConnection = new Connection(\"vpcConnection\", ConnectionArgs.builder()\n .network(defaultNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAlloc.name())\n .build());\n\n var default_ = new Instance(\"default\", InstanceArgs.builder()\n .cluster(defaultCluster.name())\n .instanceId(\"alloydb-instance\")\n .instanceType(\"PRIMARY\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(vpcConnection)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var user2 = new User(\"user2\", UserArgs.builder()\n .cluster(defaultCluster.name())\n .userId(\"user2@foo.com\")\n .userType(\"ALLOYDB_IAM_USER\")\n .databaseRoles(\"alloydbiamuser\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:alloydb:Instance\n properties:\n cluster: ${defaultCluster.name}\n instanceId: alloydb-instance\n instanceType: PRIMARY\n options:\n dependson:\n - ${vpcConnection}\n defaultCluster:\n type: gcp:alloydb:Cluster\n name: default\n properties:\n clusterId: alloydb-cluster\n location: us-central1\n networkConfig:\n network: ${defaultNetwork.id}\n initialUser:\n password: cluster_secret\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: alloydb-network\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: alloydb-cluster\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 16\n network: ${defaultNetwork.id}\n vpcConnection:\n type: gcp:servicenetworking:Connection\n name: vpc_connection\n properties:\n network: ${defaultNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAlloc.name}\n user2:\n type: gcp:alloydb:User\n properties:\n cluster: ${defaultCluster.name}\n userId: user2@foo.com\n userType: ALLOYDB_IAM_USER\n databaseRoles:\n - alloydbiamuser\n options:\n dependson:\n - ${default}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUser can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/clusters/{{cluster}}/users/{{user_id}}`\n\n* `{{project}}/{{location}}/{{cluster}}/{{user_id}}`\n\n* `{{location}}/{{cluster}}/{{user_id}}`\n\nWhen using the `pulumi import` command, User can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:alloydb/user:User default projects/{{project}}/locations/{{location}}/clusters/{{cluster}}/users/{{user_id}}\n```\n\n```sh\n$ pulumi import gcp:alloydb/user:User default {{project}}/{{location}}/{{cluster}}/{{user_id}}\n```\n\n```sh\n$ pulumi import gcp:alloydb/user:User default {{location}}/{{cluster}}/{{user_id}}\n```\n\n", "properties": { "cluster": { "type": "string", @@ -119782,7 +119782,7 @@ } }, "gcp:apigee/addonsConfig:AddonsConfig": { - "description": "Configures the add-ons for the Apigee organization. The existing add-on configuration will be fully replaced.\n\n\nTo get more information about AddonsConfig, see:\n\n* [API documentation](https://cloud.google.com/apigee/docs/reference/apis/apigee/rest/v1/organizations#setaddons)\n* How-to Guides\n * [Creating an API organization](https://cloud.google.com/apigee/docs/api-platform/get-started/create-org)\n\n## Example Usage\n\n### Apigee Addons Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst testOrganization = new gcp.apigee.AddonsConfig(\"test_organization\", {\n org: \"test_organization\",\n addonsConfig: {\n apiSecurityConfig: {\n enabled: true,\n },\n monetizationConfig: {\n enabled: true,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest_organization = gcp.apigee.AddonsConfig(\"test_organization\",\n org=\"test_organization\",\n addons_config={\n \"api_security_config\": {\n \"enabled\": True,\n },\n \"monetization_config\": {\n \"enabled\": True,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testOrganization = new Gcp.Apigee.AddonsConfig(\"test_organization\", new()\n {\n Org = \"test_organization\",\n AddonsConfigDetails = new Gcp.Apigee.Inputs.AddonsConfigAddonsConfigArgs\n {\n ApiSecurityConfig = new Gcp.Apigee.Inputs.AddonsConfigAddonsConfigApiSecurityConfigArgs\n {\n Enabled = true,\n },\n MonetizationConfig = new Gcp.Apigee.Inputs.AddonsConfigAddonsConfigMonetizationConfigArgs\n {\n Enabled = true,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/apigee\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := apigee.NewAddonsConfig(ctx, \"test_organization\", \u0026apigee.AddonsConfigArgs{\n\t\t\tOrg: pulumi.String(\"test_organization\"),\n\t\t\tAddonsConfig: \u0026apigee.AddonsConfigAddonsConfigArgs{\n\t\t\t\tApiSecurityConfig: \u0026apigee.AddonsConfigAddonsConfigApiSecurityConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tMonetizationConfig: \u0026apigee.AddonsConfigAddonsConfigMonetizationConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.apigee.AddonsConfig;\nimport com.pulumi.gcp.apigee.AddonsConfigArgs;\nimport com.pulumi.gcp.apigee.inputs.AddonsConfigAddonsConfigArgs;\nimport com.pulumi.gcp.apigee.inputs.AddonsConfigAddonsConfigApiSecurityConfigArgs;\nimport com.pulumi.gcp.apigee.inputs.AddonsConfigAddonsConfigMonetizationConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testOrganization = new AddonsConfig(\"testOrganization\", AddonsConfigArgs.builder()\n .org(\"test_organization\")\n .addonsConfig(AddonsConfigAddonsConfigArgs.builder()\n .apiSecurityConfig(AddonsConfigAddonsConfigApiSecurityConfigArgs.builder()\n .enabled(true)\n .build())\n .monetizationConfig(AddonsConfigAddonsConfigMonetizationConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testOrganization:\n type: gcp:apigee:AddonsConfig\n name: test_organization\n properties:\n org: test_organization\n addonsConfig:\n apiSecurityConfig:\n enabled: true\n monetizationConfig:\n enabled: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Apigee Addons Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst current = gcp.organizations.getClientConfig({});\nconst apigee = new gcp.projects.Service(\"apigee\", {\n project: current.then(current =\u003e current.project),\n service: \"apigee.googleapis.com\",\n});\nconst compute = new gcp.projects.Service(\"compute\", {\n project: current.then(current =\u003e current.project),\n service: \"compute.googleapis.com\",\n});\nconst servicenetworking = new gcp.projects.Service(\"servicenetworking\", {\n project: current.then(current =\u003e current.project),\n service: \"servicenetworking.googleapis.com\",\n});\nconst apigeeNetwork = new gcp.compute.Network(\"apigee_network\", {\n name: \"apigee-network\",\n project: current.then(current =\u003e current.project),\n}, {\n dependsOn: [compute],\n});\nconst apigeeRange = new gcp.compute.GlobalAddress(\"apigee_range\", {\n name: \"apigee-range\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: apigeeNetwork.id,\n project: current.then(current =\u003e current.project),\n});\nconst apigeeVpcConnection = new gcp.servicenetworking.Connection(\"apigee_vpc_connection\", {\n network: apigeeNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [apigeeRange.name],\n});\nconst org = new gcp.apigee.Organization(\"org\", {\n analyticsRegion: \"us-central1\",\n projectId: current.then(current =\u003e current.project),\n authorizedNetwork: apigeeNetwork.id,\n billingType: \"EVALUATION\",\n}, {\n dependsOn: [\n apigeeVpcConnection,\n apigee,\n ],\n});\nconst testOrganization = new gcp.apigee.AddonsConfig(\"test_organization\", {\n org: org.name,\n addonsConfig: {\n integrationConfig: {\n enabled: true,\n },\n apiSecurityConfig: {\n enabled: true,\n },\n connectorsPlatformConfig: {\n enabled: true,\n },\n monetizationConfig: {\n enabled: true,\n },\n advancedApiOpsConfig: {\n enabled: true,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncurrent = gcp.organizations.get_client_config()\napigee = gcp.projects.Service(\"apigee\",\n project=current.project,\n service=\"apigee.googleapis.com\")\ncompute = gcp.projects.Service(\"compute\",\n project=current.project,\n service=\"compute.googleapis.com\")\nservicenetworking = gcp.projects.Service(\"servicenetworking\",\n project=current.project,\n service=\"servicenetworking.googleapis.com\")\napigee_network = gcp.compute.Network(\"apigee_network\",\n name=\"apigee-network\",\n project=current.project,\n opts = pulumi.ResourceOptions(depends_on=[compute]))\napigee_range = gcp.compute.GlobalAddress(\"apigee_range\",\n name=\"apigee-range\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=apigee_network.id,\n project=current.project)\napigee_vpc_connection = gcp.servicenetworking.Connection(\"apigee_vpc_connection\",\n network=apigee_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[apigee_range.name])\norg = gcp.apigee.Organization(\"org\",\n analytics_region=\"us-central1\",\n project_id=current.project,\n authorized_network=apigee_network.id,\n billing_type=\"EVALUATION\",\n opts = pulumi.ResourceOptions(depends_on=[\n apigee_vpc_connection,\n apigee,\n ]))\ntest_organization = gcp.apigee.AddonsConfig(\"test_organization\",\n org=org.name,\n addons_config={\n \"integration_config\": {\n \"enabled\": True,\n },\n \"api_security_config\": {\n \"enabled\": True,\n },\n \"connectors_platform_config\": {\n \"enabled\": True,\n },\n \"monetization_config\": {\n \"enabled\": True,\n },\n \"advanced_api_ops_config\": {\n \"enabled\": True,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Gcp.Organizations.GetClientConfig.Invoke();\n\n var apigee = new Gcp.Projects.Service(\"apigee\", new()\n {\n Project = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n ServiceName = \"apigee.googleapis.com\",\n });\n\n var compute = new Gcp.Projects.Service(\"compute\", new()\n {\n Project = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n ServiceName = \"compute.googleapis.com\",\n });\n\n var servicenetworking = new Gcp.Projects.Service(\"servicenetworking\", new()\n {\n Project = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n ServiceName = \"servicenetworking.googleapis.com\",\n });\n\n var apigeeNetwork = new Gcp.Compute.Network(\"apigee_network\", new()\n {\n Name = \"apigee-network\",\n Project = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n compute,\n },\n });\n\n var apigeeRange = new Gcp.Compute.GlobalAddress(\"apigee_range\", new()\n {\n Name = \"apigee-range\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = apigeeNetwork.Id,\n Project = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n });\n\n var apigeeVpcConnection = new Gcp.ServiceNetworking.Connection(\"apigee_vpc_connection\", new()\n {\n Network = apigeeNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n apigeeRange.Name,\n },\n });\n\n var org = new Gcp.Apigee.Organization(\"org\", new()\n {\n AnalyticsRegion = \"us-central1\",\n ProjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n AuthorizedNetwork = apigeeNetwork.Id,\n BillingType = \"EVALUATION\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n apigeeVpcConnection,\n apigee,\n },\n });\n\n var testOrganization = new Gcp.Apigee.AddonsConfig(\"test_organization\", new()\n {\n Org = org.Name,\n AddonsConfigDetails = new Gcp.Apigee.Inputs.AddonsConfigAddonsConfigArgs\n {\n IntegrationConfig = new Gcp.Apigee.Inputs.AddonsConfigAddonsConfigIntegrationConfigArgs\n {\n Enabled = true,\n },\n ApiSecurityConfig = new Gcp.Apigee.Inputs.AddonsConfigAddonsConfigApiSecurityConfigArgs\n {\n Enabled = true,\n },\n ConnectorsPlatformConfig = new Gcp.Apigee.Inputs.AddonsConfigAddonsConfigConnectorsPlatformConfigArgs\n {\n Enabled = true,\n },\n MonetizationConfig = new Gcp.Apigee.Inputs.AddonsConfigAddonsConfigMonetizationConfigArgs\n {\n Enabled = true,\n },\n AdvancedApiOpsConfig = new Gcp.Apigee.Inputs.AddonsConfigAddonsConfigAdvancedApiOpsConfigArgs\n {\n Enabled = true,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/apigee\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := organizations.GetClientConfig(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigee, err := projects.NewService(ctx, \"apigee\", \u0026projects.ServiceArgs{\n\t\t\tProject: pulumi.String(current.Project),\n\t\t\tService: pulumi.String(\"apigee.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcompute, err := projects.NewService(ctx, \"compute\", \u0026projects.ServiceArgs{\n\t\t\tProject: pulumi.String(current.Project),\n\t\t\tService: pulumi.String(\"compute.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewService(ctx, \"servicenetworking\", \u0026projects.ServiceArgs{\n\t\t\tProject: pulumi.String(current.Project),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeNetwork, err := compute.NewNetwork(ctx, \"apigee_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"apigee-network\"),\n\t\t\tProject: pulumi.String(current.Project),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcompute,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeRange, err := compute.NewGlobalAddress(ctx, \"apigee_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"apigee-range\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t\tProject: pulumi.String(current.Project),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeVpcConnection, err := servicenetworking.NewConnection(ctx, \"apigee_vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tapigeeRange.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\torg, err := apigee.NewOrganization(ctx, \"org\", \u0026apigee.OrganizationArgs{\n\t\t\tAnalyticsRegion: pulumi.String(\"us-central1\"),\n\t\t\tProjectId: pulumi.String(current.Project),\n\t\t\tAuthorizedNetwork: apigeeNetwork.ID(),\n\t\t\tBillingType: pulumi.String(\"EVALUATION\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapigeeVpcConnection,\n\t\t\tapigee,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigee.NewAddonsConfig(ctx, \"test_organization\", \u0026apigee.AddonsConfigArgs{\n\t\t\tOrg: org.Name,\n\t\t\tAddonsConfig: \u0026apigee.AddonsConfigAddonsConfigArgs{\n\t\t\t\tIntegrationConfig: \u0026apigee.AddonsConfigAddonsConfigIntegrationConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tApiSecurityConfig: \u0026apigee.AddonsConfigAddonsConfigApiSecurityConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tConnectorsPlatformConfig: \u0026apigee.AddonsConfigAddonsConfigConnectorsPlatformConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tMonetizationConfig: \u0026apigee.AddonsConfigAddonsConfigMonetizationConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tAdvancedApiOpsConfig: \u0026apigee.AddonsConfigAddonsConfigAdvancedApiOpsConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.projects.Service;\nimport com.pulumi.gcp.projects.ServiceArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.apigee.Organization;\nimport com.pulumi.gcp.apigee.OrganizationArgs;\nimport com.pulumi.gcp.apigee.AddonsConfig;\nimport com.pulumi.gcp.apigee.AddonsConfigArgs;\nimport com.pulumi.gcp.apigee.inputs.AddonsConfigAddonsConfigArgs;\nimport com.pulumi.gcp.apigee.inputs.AddonsConfigAddonsConfigIntegrationConfigArgs;\nimport com.pulumi.gcp.apigee.inputs.AddonsConfigAddonsConfigApiSecurityConfigArgs;\nimport com.pulumi.gcp.apigee.inputs.AddonsConfigAddonsConfigConnectorsPlatformConfigArgs;\nimport com.pulumi.gcp.apigee.inputs.AddonsConfigAddonsConfigMonetizationConfigArgs;\nimport com.pulumi.gcp.apigee.inputs.AddonsConfigAddonsConfigAdvancedApiOpsConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = OrganizationsFunctions.getClientConfig();\n\n var apigee = new Service(\"apigee\", ServiceArgs.builder()\n .project(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .service(\"apigee.googleapis.com\")\n .build());\n\n var compute = new Service(\"compute\", ServiceArgs.builder()\n .project(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .service(\"compute.googleapis.com\")\n .build());\n\n var servicenetworking = new Service(\"servicenetworking\", ServiceArgs.builder()\n .project(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .service(\"servicenetworking.googleapis.com\")\n .build());\n\n var apigeeNetwork = new Network(\"apigeeNetwork\", NetworkArgs.builder()\n .name(\"apigee-network\")\n .project(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .build(), CustomResourceOptions.builder()\n .dependsOn(compute)\n .build());\n\n var apigeeRange = new GlobalAddress(\"apigeeRange\", GlobalAddressArgs.builder()\n .name(\"apigee-range\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(apigeeNetwork.id())\n .project(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .build());\n\n var apigeeVpcConnection = new Connection(\"apigeeVpcConnection\", ConnectionArgs.builder()\n .network(apigeeNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(apigeeRange.name())\n .build());\n\n var org = new Organization(\"org\", OrganizationArgs.builder()\n .analyticsRegion(\"us-central1\")\n .projectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .authorizedNetwork(apigeeNetwork.id())\n .billingType(\"EVALUATION\")\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n apigeeVpcConnection,\n apigee)\n .build());\n\n var testOrganization = new AddonsConfig(\"testOrganization\", AddonsConfigArgs.builder()\n .org(org.name())\n .addonsConfig(AddonsConfigAddonsConfigArgs.builder()\n .integrationConfig(AddonsConfigAddonsConfigIntegrationConfigArgs.builder()\n .enabled(true)\n .build())\n .apiSecurityConfig(AddonsConfigAddonsConfigApiSecurityConfigArgs.builder()\n .enabled(true)\n .build())\n .connectorsPlatformConfig(AddonsConfigAddonsConfigConnectorsPlatformConfigArgs.builder()\n .enabled(true)\n .build())\n .monetizationConfig(AddonsConfigAddonsConfigMonetizationConfigArgs.builder()\n .enabled(true)\n .build())\n .advancedApiOpsConfig(AddonsConfigAddonsConfigAdvancedApiOpsConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n apigee:\n type: gcp:projects:Service\n properties:\n project: ${current.project}\n service: apigee.googleapis.com\n compute:\n type: gcp:projects:Service\n properties:\n project: ${current.project}\n service: compute.googleapis.com\n servicenetworking:\n type: gcp:projects:Service\n properties:\n project: ${current.project}\n service: servicenetworking.googleapis.com\n apigeeNetwork:\n type: gcp:compute:Network\n name: apigee_network\n properties:\n name: apigee-network\n project: ${current.project}\n options:\n dependson:\n - ${compute}\n apigeeRange:\n type: gcp:compute:GlobalAddress\n name: apigee_range\n properties:\n name: apigee-range\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${apigeeNetwork.id}\n project: ${current.project}\n apigeeVpcConnection:\n type: gcp:servicenetworking:Connection\n name: apigee_vpc_connection\n properties:\n network: ${apigeeNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${apigeeRange.name}\n org:\n type: gcp:apigee:Organization\n properties:\n analyticsRegion: us-central1\n projectId: ${current.project}\n authorizedNetwork: ${apigeeNetwork.id}\n billingType: EVALUATION\n options:\n dependson:\n - ${apigeeVpcConnection}\n - ${apigee}\n testOrganization:\n type: gcp:apigee:AddonsConfig\n name: test_organization\n properties:\n org: ${org.name}\n addonsConfig:\n integrationConfig:\n enabled: true\n apiSecurityConfig:\n enabled: true\n connectorsPlatformConfig:\n enabled: true\n monetizationConfig:\n enabled: true\n advancedApiOpsConfig:\n enabled: true\nvariables:\n current:\n fn::invoke:\n Function: gcp:organizations:getClientConfig\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAddonsConfig can be imported using any of these accepted formats:\n\n* `organizations/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, AddonsConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:apigee/addonsConfig:AddonsConfig default organizations/{{name}}\n```\n\n```sh\n$ pulumi import gcp:apigee/addonsConfig:AddonsConfig default {{name}}\n```\n\n", + "description": "Configures the add-ons for the Apigee organization. The existing add-on configuration will be fully replaced.\n\n\nTo get more information about AddonsConfig, see:\n\n* [API documentation](https://cloud.google.com/apigee/docs/reference/apis/apigee/rest/v1/organizations#setaddons)\n* How-to Guides\n * [Creating an API organization](https://cloud.google.com/apigee/docs/api-platform/get-started/create-org)\n\n## Example Usage\n\n### Apigee Addons Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst testOrganization = new gcp.apigee.AddonsConfig(\"test_organization\", {\n org: \"test_organization\",\n addonsConfig: {\n apiSecurityConfig: {\n enabled: true,\n },\n monetizationConfig: {\n enabled: true,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest_organization = gcp.apigee.AddonsConfig(\"test_organization\",\n org=\"test_organization\",\n addons_config={\n \"api_security_config\": {\n \"enabled\": True,\n },\n \"monetization_config\": {\n \"enabled\": True,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testOrganization = new Gcp.Apigee.AddonsConfig(\"test_organization\", new()\n {\n Org = \"test_organization\",\n AddonsConfigDetails = new Gcp.Apigee.Inputs.AddonsConfigAddonsConfigArgs\n {\n ApiSecurityConfig = new Gcp.Apigee.Inputs.AddonsConfigAddonsConfigApiSecurityConfigArgs\n {\n Enabled = true,\n },\n MonetizationConfig = new Gcp.Apigee.Inputs.AddonsConfigAddonsConfigMonetizationConfigArgs\n {\n Enabled = true,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/apigee\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := apigee.NewAddonsConfig(ctx, \"test_organization\", \u0026apigee.AddonsConfigArgs{\n\t\t\tOrg: pulumi.String(\"test_organization\"),\n\t\t\tAddonsConfig: \u0026apigee.AddonsConfigAddonsConfigArgs{\n\t\t\t\tApiSecurityConfig: \u0026apigee.AddonsConfigAddonsConfigApiSecurityConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tMonetizationConfig: \u0026apigee.AddonsConfigAddonsConfigMonetizationConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.apigee.AddonsConfig;\nimport com.pulumi.gcp.apigee.AddonsConfigArgs;\nimport com.pulumi.gcp.apigee.inputs.AddonsConfigAddonsConfigArgs;\nimport com.pulumi.gcp.apigee.inputs.AddonsConfigAddonsConfigApiSecurityConfigArgs;\nimport com.pulumi.gcp.apigee.inputs.AddonsConfigAddonsConfigMonetizationConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var testOrganization = new AddonsConfig(\"testOrganization\", AddonsConfigArgs.builder()\n .org(\"test_organization\")\n .addonsConfig(AddonsConfigAddonsConfigArgs.builder()\n .apiSecurityConfig(AddonsConfigAddonsConfigApiSecurityConfigArgs.builder()\n .enabled(true)\n .build())\n .monetizationConfig(AddonsConfigAddonsConfigMonetizationConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testOrganization:\n type: gcp:apigee:AddonsConfig\n name: test_organization\n properties:\n org: test_organization\n addonsConfig:\n apiSecurityConfig:\n enabled: true\n monetizationConfig:\n enabled: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Apigee Addons Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst current = gcp.organizations.getClientConfig({});\nconst apigee = new gcp.projects.Service(\"apigee\", {\n project: current.then(current =\u003e current.project),\n service: \"apigee.googleapis.com\",\n});\nconst compute = new gcp.projects.Service(\"compute\", {\n project: current.then(current =\u003e current.project),\n service: \"compute.googleapis.com\",\n});\nconst servicenetworking = new gcp.projects.Service(\"servicenetworking\", {\n project: current.then(current =\u003e current.project),\n service: \"servicenetworking.googleapis.com\",\n});\nconst apigeeNetwork = new gcp.compute.Network(\"apigee_network\", {\n name: \"apigee-network\",\n project: current.then(current =\u003e current.project),\n}, {\n dependsOn: [compute],\n});\nconst apigeeRange = new gcp.compute.GlobalAddress(\"apigee_range\", {\n name: \"apigee-range\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: apigeeNetwork.id,\n project: current.then(current =\u003e current.project),\n});\nconst apigeeVpcConnection = new gcp.servicenetworking.Connection(\"apigee_vpc_connection\", {\n network: apigeeNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [apigeeRange.name],\n});\nconst org = new gcp.apigee.Organization(\"org\", {\n analyticsRegion: \"us-central1\",\n projectId: current.then(current =\u003e current.project),\n authorizedNetwork: apigeeNetwork.id,\n billingType: \"EVALUATION\",\n}, {\n dependsOn: [\n apigeeVpcConnection,\n apigee,\n ],\n});\nconst testOrganization = new gcp.apigee.AddonsConfig(\"test_organization\", {\n org: org.name,\n addonsConfig: {\n integrationConfig: {\n enabled: true,\n },\n apiSecurityConfig: {\n enabled: true,\n },\n connectorsPlatformConfig: {\n enabled: true,\n },\n monetizationConfig: {\n enabled: true,\n },\n advancedApiOpsConfig: {\n enabled: true,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncurrent = gcp.organizations.get_client_config()\napigee = gcp.projects.Service(\"apigee\",\n project=current.project,\n service=\"apigee.googleapis.com\")\ncompute = gcp.projects.Service(\"compute\",\n project=current.project,\n service=\"compute.googleapis.com\")\nservicenetworking = gcp.projects.Service(\"servicenetworking\",\n project=current.project,\n service=\"servicenetworking.googleapis.com\")\napigee_network = gcp.compute.Network(\"apigee_network\",\n name=\"apigee-network\",\n project=current.project,\n opts = pulumi.ResourceOptions(depends_on=[compute]))\napigee_range = gcp.compute.GlobalAddress(\"apigee_range\",\n name=\"apigee-range\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=apigee_network.id,\n project=current.project)\napigee_vpc_connection = gcp.servicenetworking.Connection(\"apigee_vpc_connection\",\n network=apigee_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[apigee_range.name])\norg = gcp.apigee.Organization(\"org\",\n analytics_region=\"us-central1\",\n project_id=current.project,\n authorized_network=apigee_network.id,\n billing_type=\"EVALUATION\",\n opts = pulumi.ResourceOptions(depends_on=[\n apigee_vpc_connection,\n apigee,\n ]))\ntest_organization = gcp.apigee.AddonsConfig(\"test_organization\",\n org=org.name,\n addons_config={\n \"integration_config\": {\n \"enabled\": True,\n },\n \"api_security_config\": {\n \"enabled\": True,\n },\n \"connectors_platform_config\": {\n \"enabled\": True,\n },\n \"monetization_config\": {\n \"enabled\": True,\n },\n \"advanced_api_ops_config\": {\n \"enabled\": True,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Gcp.Organizations.GetClientConfig.Invoke();\n\n var apigee = new Gcp.Projects.Service(\"apigee\", new()\n {\n Project = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n ServiceName = \"apigee.googleapis.com\",\n });\n\n var compute = new Gcp.Projects.Service(\"compute\", new()\n {\n Project = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n ServiceName = \"compute.googleapis.com\",\n });\n\n var servicenetworking = new Gcp.Projects.Service(\"servicenetworking\", new()\n {\n Project = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n ServiceName = \"servicenetworking.googleapis.com\",\n });\n\n var apigeeNetwork = new Gcp.Compute.Network(\"apigee_network\", new()\n {\n Name = \"apigee-network\",\n Project = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n compute,\n },\n });\n\n var apigeeRange = new Gcp.Compute.GlobalAddress(\"apigee_range\", new()\n {\n Name = \"apigee-range\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = apigeeNetwork.Id,\n Project = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n });\n\n var apigeeVpcConnection = new Gcp.ServiceNetworking.Connection(\"apigee_vpc_connection\", new()\n {\n Network = apigeeNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n apigeeRange.Name,\n },\n });\n\n var org = new Gcp.Apigee.Organization(\"org\", new()\n {\n AnalyticsRegion = \"us-central1\",\n ProjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n AuthorizedNetwork = apigeeNetwork.Id,\n BillingType = \"EVALUATION\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n apigeeVpcConnection,\n apigee,\n },\n });\n\n var testOrganization = new Gcp.Apigee.AddonsConfig(\"test_organization\", new()\n {\n Org = org.Name,\n AddonsConfigDetails = new Gcp.Apigee.Inputs.AddonsConfigAddonsConfigArgs\n {\n IntegrationConfig = new Gcp.Apigee.Inputs.AddonsConfigAddonsConfigIntegrationConfigArgs\n {\n Enabled = true,\n },\n ApiSecurityConfig = new Gcp.Apigee.Inputs.AddonsConfigAddonsConfigApiSecurityConfigArgs\n {\n Enabled = true,\n },\n ConnectorsPlatformConfig = new Gcp.Apigee.Inputs.AddonsConfigAddonsConfigConnectorsPlatformConfigArgs\n {\n Enabled = true,\n },\n MonetizationConfig = new Gcp.Apigee.Inputs.AddonsConfigAddonsConfigMonetizationConfigArgs\n {\n Enabled = true,\n },\n AdvancedApiOpsConfig = new Gcp.Apigee.Inputs.AddonsConfigAddonsConfigAdvancedApiOpsConfigArgs\n {\n Enabled = true,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/apigee\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := organizations.GetClientConfig(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigee, err := projects.NewService(ctx, \"apigee\", \u0026projects.ServiceArgs{\n\t\t\tProject: pulumi.String(current.Project),\n\t\t\tService: pulumi.String(\"apigee.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcompute, err := projects.NewService(ctx, \"compute\", \u0026projects.ServiceArgs{\n\t\t\tProject: pulumi.String(current.Project),\n\t\t\tService: pulumi.String(\"compute.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewService(ctx, \"servicenetworking\", \u0026projects.ServiceArgs{\n\t\t\tProject: pulumi.String(current.Project),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeNetwork, err := compute.NewNetwork(ctx, \"apigee_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"apigee-network\"),\n\t\t\tProject: pulumi.String(current.Project),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcompute,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeRange, err := compute.NewGlobalAddress(ctx, \"apigee_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"apigee-range\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t\tProject: pulumi.String(current.Project),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeVpcConnection, err := servicenetworking.NewConnection(ctx, \"apigee_vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tapigeeRange.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\torg, err := apigee.NewOrganization(ctx, \"org\", \u0026apigee.OrganizationArgs{\n\t\t\tAnalyticsRegion: pulumi.String(\"us-central1\"),\n\t\t\tProjectId: pulumi.String(current.Project),\n\t\t\tAuthorizedNetwork: apigeeNetwork.ID(),\n\t\t\tBillingType: pulumi.String(\"EVALUATION\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapigeeVpcConnection,\n\t\t\tapigee,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigee.NewAddonsConfig(ctx, \"test_organization\", \u0026apigee.AddonsConfigArgs{\n\t\t\tOrg: org.Name,\n\t\t\tAddonsConfig: \u0026apigee.AddonsConfigAddonsConfigArgs{\n\t\t\t\tIntegrationConfig: \u0026apigee.AddonsConfigAddonsConfigIntegrationConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tApiSecurityConfig: \u0026apigee.AddonsConfigAddonsConfigApiSecurityConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tConnectorsPlatformConfig: \u0026apigee.AddonsConfigAddonsConfigConnectorsPlatformConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tMonetizationConfig: \u0026apigee.AddonsConfigAddonsConfigMonetizationConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tAdvancedApiOpsConfig: \u0026apigee.AddonsConfigAddonsConfigAdvancedApiOpsConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.projects.Service;\nimport com.pulumi.gcp.projects.ServiceArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.apigee.Organization;\nimport com.pulumi.gcp.apigee.OrganizationArgs;\nimport com.pulumi.gcp.apigee.AddonsConfig;\nimport com.pulumi.gcp.apigee.AddonsConfigArgs;\nimport com.pulumi.gcp.apigee.inputs.AddonsConfigAddonsConfigArgs;\nimport com.pulumi.gcp.apigee.inputs.AddonsConfigAddonsConfigIntegrationConfigArgs;\nimport com.pulumi.gcp.apigee.inputs.AddonsConfigAddonsConfigApiSecurityConfigArgs;\nimport com.pulumi.gcp.apigee.inputs.AddonsConfigAddonsConfigConnectorsPlatformConfigArgs;\nimport com.pulumi.gcp.apigee.inputs.AddonsConfigAddonsConfigMonetizationConfigArgs;\nimport com.pulumi.gcp.apigee.inputs.AddonsConfigAddonsConfigAdvancedApiOpsConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = OrganizationsFunctions.getClientConfig();\n\n var apigee = new Service(\"apigee\", ServiceArgs.builder()\n .project(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .service(\"apigee.googleapis.com\")\n .build());\n\n var compute = new Service(\"compute\", ServiceArgs.builder()\n .project(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .service(\"compute.googleapis.com\")\n .build());\n\n var servicenetworking = new Service(\"servicenetworking\", ServiceArgs.builder()\n .project(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .service(\"servicenetworking.googleapis.com\")\n .build());\n\n var apigeeNetwork = new Network(\"apigeeNetwork\", NetworkArgs.builder()\n .name(\"apigee-network\")\n .project(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .build(), CustomResourceOptions.builder()\n .dependsOn(compute)\n .build());\n\n var apigeeRange = new GlobalAddress(\"apigeeRange\", GlobalAddressArgs.builder()\n .name(\"apigee-range\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(apigeeNetwork.id())\n .project(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .build());\n\n var apigeeVpcConnection = new Connection(\"apigeeVpcConnection\", ConnectionArgs.builder()\n .network(apigeeNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(apigeeRange.name())\n .build());\n\n var org = new Organization(\"org\", OrganizationArgs.builder()\n .analyticsRegion(\"us-central1\")\n .projectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .authorizedNetwork(apigeeNetwork.id())\n .billingType(\"EVALUATION\")\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n apigeeVpcConnection,\n apigee)\n .build());\n\n var testOrganization = new AddonsConfig(\"testOrganization\", AddonsConfigArgs.builder()\n .org(org.name())\n .addonsConfig(AddonsConfigAddonsConfigArgs.builder()\n .integrationConfig(AddonsConfigAddonsConfigIntegrationConfigArgs.builder()\n .enabled(true)\n .build())\n .apiSecurityConfig(AddonsConfigAddonsConfigApiSecurityConfigArgs.builder()\n .enabled(true)\n .build())\n .connectorsPlatformConfig(AddonsConfigAddonsConfigConnectorsPlatformConfigArgs.builder()\n .enabled(true)\n .build())\n .monetizationConfig(AddonsConfigAddonsConfigMonetizationConfigArgs.builder()\n .enabled(true)\n .build())\n .advancedApiOpsConfig(AddonsConfigAddonsConfigAdvancedApiOpsConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n apigee:\n type: gcp:projects:Service\n properties:\n project: ${current.project}\n service: apigee.googleapis.com\n compute:\n type: gcp:projects:Service\n properties:\n project: ${current.project}\n service: compute.googleapis.com\n servicenetworking:\n type: gcp:projects:Service\n properties:\n project: ${current.project}\n service: servicenetworking.googleapis.com\n apigeeNetwork:\n type: gcp:compute:Network\n name: apigee_network\n properties:\n name: apigee-network\n project: ${current.project}\n options:\n dependson:\n - ${compute}\n apigeeRange:\n type: gcp:compute:GlobalAddress\n name: apigee_range\n properties:\n name: apigee-range\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${apigeeNetwork.id}\n project: ${current.project}\n apigeeVpcConnection:\n type: gcp:servicenetworking:Connection\n name: apigee_vpc_connection\n properties:\n network: ${apigeeNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${apigeeRange.name}\n org:\n type: gcp:apigee:Organization\n properties:\n analyticsRegion: us-central1\n projectId: ${current.project}\n authorizedNetwork: ${apigeeNetwork.id}\n billingType: EVALUATION\n options:\n dependson:\n - ${apigeeVpcConnection}\n - ${apigee}\n testOrganization:\n type: gcp:apigee:AddonsConfig\n name: test_organization\n properties:\n org: ${org.name}\n addonsConfig:\n integrationConfig:\n enabled: true\n apiSecurityConfig:\n enabled: true\n connectorsPlatformConfig:\n enabled: true\n monetizationConfig:\n enabled: true\n advancedApiOpsConfig:\n enabled: true\nvariables:\n current:\n fn::invoke:\n Function: gcp:organizations:getClientConfig\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAddonsConfig can be imported using any of these accepted formats:\n\n* `organizations/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, AddonsConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:apigee/addonsConfig:AddonsConfig default organizations/{{name}}\n```\n\n```sh\n$ pulumi import gcp:apigee/addonsConfig:AddonsConfig default {{name}}\n```\n\n", "properties": { "addonsConfig": { "$ref": "#/types/gcp:apigee/AddonsConfigAddonsConfig:AddonsConfigAddonsConfig", @@ -119842,7 +119842,7 @@ } }, "gcp:apigee/endpointAttachment:EndpointAttachment": { - "description": "Apigee Endpoint Attachment.\n\n\nTo get more information about EndpointAttachment, see:\n\n* [API documentation](https://cloud.google.com/apigee/docs/reference/apis/apigee/rest/v1/organizations.endpointAttachments/create)\n* How-to Guides\n * [Creating an environment](https://cloud.google.com/apigee/docs/api-platform/get-started/create-environment)\n\n## Example Usage\n\n### Apigee Endpoint Attachment Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst current = gcp.organizations.getClientConfig({});\nconst apigeeNetwork = new gcp.compute.Network(\"apigee_network\", {name: \"apigee-network\"});\nconst apigeeRange = new gcp.compute.GlobalAddress(\"apigee_range\", {\n name: \"apigee-range\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: apigeeNetwork.id,\n});\nconst apigeeVpcConnection = new gcp.servicenetworking.Connection(\"apigee_vpc_connection\", {\n network: apigeeNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [apigeeRange.name],\n});\nconst apigeeOrg = new gcp.apigee.Organization(\"apigee_org\", {\n analyticsRegion: \"us-central1\",\n projectId: current.then(current =\u003e current.project),\n authorizedNetwork: apigeeNetwork.id,\n}, {\n dependsOn: [apigeeVpcConnection],\n});\nconst apigeeEndpointAttachment = new gcp.apigee.EndpointAttachment(\"apigee_endpoint_attachment\", {\n orgId: apigeeOrg.id,\n endpointAttachmentId: \"test1\",\n location: \"{google_compute_service_attachment location}\",\n serviceAttachment: \"{google_compute_service_attachment id}\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncurrent = gcp.organizations.get_client_config()\napigee_network = gcp.compute.Network(\"apigee_network\", name=\"apigee-network\")\napigee_range = gcp.compute.GlobalAddress(\"apigee_range\",\n name=\"apigee-range\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=apigee_network.id)\napigee_vpc_connection = gcp.servicenetworking.Connection(\"apigee_vpc_connection\",\n network=apigee_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[apigee_range.name])\napigee_org = gcp.apigee.Organization(\"apigee_org\",\n analytics_region=\"us-central1\",\n project_id=current.project,\n authorized_network=apigee_network.id,\n opts = pulumi.ResourceOptions(depends_on=[apigee_vpc_connection]))\napigee_endpoint_attachment = gcp.apigee.EndpointAttachment(\"apigee_endpoint_attachment\",\n org_id=apigee_org.id,\n endpoint_attachment_id=\"test1\",\n location=\"{google_compute_service_attachment location}\",\n service_attachment=\"{google_compute_service_attachment id}\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Gcp.Organizations.GetClientConfig.Invoke();\n\n var apigeeNetwork = new Gcp.Compute.Network(\"apigee_network\", new()\n {\n Name = \"apigee-network\",\n });\n\n var apigeeRange = new Gcp.Compute.GlobalAddress(\"apigee_range\", new()\n {\n Name = \"apigee-range\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = apigeeNetwork.Id,\n });\n\n var apigeeVpcConnection = new Gcp.ServiceNetworking.Connection(\"apigee_vpc_connection\", new()\n {\n Network = apigeeNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n apigeeRange.Name,\n },\n });\n\n var apigeeOrg = new Gcp.Apigee.Organization(\"apigee_org\", new()\n {\n AnalyticsRegion = \"us-central1\",\n ProjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n AuthorizedNetwork = apigeeNetwork.Id,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n apigeeVpcConnection,\n },\n });\n\n var apigeeEndpointAttachment = new Gcp.Apigee.EndpointAttachment(\"apigee_endpoint_attachment\", new()\n {\n OrgId = apigeeOrg.Id,\n EndpointAttachmentId = \"test1\",\n Location = \"{google_compute_service_attachment location}\",\n ServiceAttachment = \"{google_compute_service_attachment id}\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/apigee\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := organizations.GetClientConfig(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeNetwork, err := compute.NewNetwork(ctx, \"apigee_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"apigee-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeRange, err := compute.NewGlobalAddress(ctx, \"apigee_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"apigee-range\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeVpcConnection, err := servicenetworking.NewConnection(ctx, \"apigee_vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tapigeeRange.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeOrg, err := apigee.NewOrganization(ctx, \"apigee_org\", \u0026apigee.OrganizationArgs{\n\t\t\tAnalyticsRegion: pulumi.String(\"us-central1\"),\n\t\t\tProjectId: pulumi.String(current.Project),\n\t\t\tAuthorizedNetwork: apigeeNetwork.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapigeeVpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigee.NewEndpointAttachment(ctx, \"apigee_endpoint_attachment\", \u0026apigee.EndpointAttachmentArgs{\n\t\t\tOrgId: apigeeOrg.ID(),\n\t\t\tEndpointAttachmentId: pulumi.String(\"test1\"),\n\t\t\tLocation: pulumi.String(\"{google_compute_service_attachment location}\"),\n\t\t\tServiceAttachment: pulumi.String(\"{google_compute_service_attachment id}\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.apigee.Organization;\nimport com.pulumi.gcp.apigee.OrganizationArgs;\nimport com.pulumi.gcp.apigee.EndpointAttachment;\nimport com.pulumi.gcp.apigee.EndpointAttachmentArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = OrganizationsFunctions.getClientConfig();\n\n var apigeeNetwork = new Network(\"apigeeNetwork\", NetworkArgs.builder()\n .name(\"apigee-network\")\n .build());\n\n var apigeeRange = new GlobalAddress(\"apigeeRange\", GlobalAddressArgs.builder()\n .name(\"apigee-range\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(apigeeNetwork.id())\n .build());\n\n var apigeeVpcConnection = new Connection(\"apigeeVpcConnection\", ConnectionArgs.builder()\n .network(apigeeNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(apigeeRange.name())\n .build());\n\n var apigeeOrg = new Organization(\"apigeeOrg\", OrganizationArgs.builder()\n .analyticsRegion(\"us-central1\")\n .projectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .authorizedNetwork(apigeeNetwork.id())\n .build(), CustomResourceOptions.builder()\n .dependsOn(apigeeVpcConnection)\n .build());\n\n var apigeeEndpointAttachment = new EndpointAttachment(\"apigeeEndpointAttachment\", EndpointAttachmentArgs.builder()\n .orgId(apigeeOrg.id())\n .endpointAttachmentId(\"test1\")\n .location(\"{google_compute_service_attachment location}\")\n .serviceAttachment(\"{google_compute_service_attachment id}\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n apigeeNetwork:\n type: gcp:compute:Network\n name: apigee_network\n properties:\n name: apigee-network\n apigeeRange:\n type: gcp:compute:GlobalAddress\n name: apigee_range\n properties:\n name: apigee-range\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${apigeeNetwork.id}\n apigeeVpcConnection:\n type: gcp:servicenetworking:Connection\n name: apigee_vpc_connection\n properties:\n network: ${apigeeNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${apigeeRange.name}\n apigeeOrg:\n type: gcp:apigee:Organization\n name: apigee_org\n properties:\n analyticsRegion: us-central1\n projectId: ${current.project}\n authorizedNetwork: ${apigeeNetwork.id}\n options:\n dependson:\n - ${apigeeVpcConnection}\n apigeeEndpointAttachment:\n type: gcp:apigee:EndpointAttachment\n name: apigee_endpoint_attachment\n properties:\n orgId: ${apigeeOrg.id}\n endpointAttachmentId: test1\n location: '{google_compute_service_attachment location}'\n serviceAttachment: '{google_compute_service_attachment id}'\nvariables:\n current:\n fn::invoke:\n Function: gcp:organizations:getClientConfig\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nEndpointAttachment can be imported using any of these accepted formats:\n\n* `{{org_id}}/endpointAttachments/{{endpoint_attachment_id}}`\n\n* `{{org_id}}/{{endpoint_attachment_id}}`\n\nWhen using the `pulumi import` command, EndpointAttachment can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:apigee/endpointAttachment:EndpointAttachment default {{org_id}}/endpointAttachments/{{endpoint_attachment_id}}\n```\n\n```sh\n$ pulumi import gcp:apigee/endpointAttachment:EndpointAttachment default {{org_id}}/{{endpoint_attachment_id}}\n```\n\n", + "description": "Apigee Endpoint Attachment.\n\n\nTo get more information about EndpointAttachment, see:\n\n* [API documentation](https://cloud.google.com/apigee/docs/reference/apis/apigee/rest/v1/organizations.endpointAttachments/create)\n* How-to Guides\n * [Creating an environment](https://cloud.google.com/apigee/docs/api-platform/get-started/create-environment)\n\n## Example Usage\n\n### Apigee Endpoint Attachment Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst current = gcp.organizations.getClientConfig({});\nconst apigeeNetwork = new gcp.compute.Network(\"apigee_network\", {name: \"apigee-network\"});\nconst apigeeRange = new gcp.compute.GlobalAddress(\"apigee_range\", {\n name: \"apigee-range\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: apigeeNetwork.id,\n});\nconst apigeeVpcConnection = new gcp.servicenetworking.Connection(\"apigee_vpc_connection\", {\n network: apigeeNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [apigeeRange.name],\n});\nconst apigeeOrg = new gcp.apigee.Organization(\"apigee_org\", {\n analyticsRegion: \"us-central1\",\n projectId: current.then(current =\u003e current.project),\n authorizedNetwork: apigeeNetwork.id,\n}, {\n dependsOn: [apigeeVpcConnection],\n});\nconst apigeeEndpointAttachment = new gcp.apigee.EndpointAttachment(\"apigee_endpoint_attachment\", {\n orgId: apigeeOrg.id,\n endpointAttachmentId: \"test1\",\n location: \"{google_compute_service_attachment location}\",\n serviceAttachment: \"{google_compute_service_attachment id}\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncurrent = gcp.organizations.get_client_config()\napigee_network = gcp.compute.Network(\"apigee_network\", name=\"apigee-network\")\napigee_range = gcp.compute.GlobalAddress(\"apigee_range\",\n name=\"apigee-range\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=apigee_network.id)\napigee_vpc_connection = gcp.servicenetworking.Connection(\"apigee_vpc_connection\",\n network=apigee_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[apigee_range.name])\napigee_org = gcp.apigee.Organization(\"apigee_org\",\n analytics_region=\"us-central1\",\n project_id=current.project,\n authorized_network=apigee_network.id,\n opts = pulumi.ResourceOptions(depends_on=[apigee_vpc_connection]))\napigee_endpoint_attachment = gcp.apigee.EndpointAttachment(\"apigee_endpoint_attachment\",\n org_id=apigee_org.id,\n endpoint_attachment_id=\"test1\",\n location=\"{google_compute_service_attachment location}\",\n service_attachment=\"{google_compute_service_attachment id}\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Gcp.Organizations.GetClientConfig.Invoke();\n\n var apigeeNetwork = new Gcp.Compute.Network(\"apigee_network\", new()\n {\n Name = \"apigee-network\",\n });\n\n var apigeeRange = new Gcp.Compute.GlobalAddress(\"apigee_range\", new()\n {\n Name = \"apigee-range\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = apigeeNetwork.Id,\n });\n\n var apigeeVpcConnection = new Gcp.ServiceNetworking.Connection(\"apigee_vpc_connection\", new()\n {\n Network = apigeeNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n apigeeRange.Name,\n },\n });\n\n var apigeeOrg = new Gcp.Apigee.Organization(\"apigee_org\", new()\n {\n AnalyticsRegion = \"us-central1\",\n ProjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n AuthorizedNetwork = apigeeNetwork.Id,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n apigeeVpcConnection,\n },\n });\n\n var apigeeEndpointAttachment = new Gcp.Apigee.EndpointAttachment(\"apigee_endpoint_attachment\", new()\n {\n OrgId = apigeeOrg.Id,\n EndpointAttachmentId = \"test1\",\n Location = \"{google_compute_service_attachment location}\",\n ServiceAttachment = \"{google_compute_service_attachment id}\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/apigee\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := organizations.GetClientConfig(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeNetwork, err := compute.NewNetwork(ctx, \"apigee_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"apigee-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeRange, err := compute.NewGlobalAddress(ctx, \"apigee_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"apigee-range\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeVpcConnection, err := servicenetworking.NewConnection(ctx, \"apigee_vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tapigeeRange.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeOrg, err := apigee.NewOrganization(ctx, \"apigee_org\", \u0026apigee.OrganizationArgs{\n\t\t\tAnalyticsRegion: pulumi.String(\"us-central1\"),\n\t\t\tProjectId: pulumi.String(current.Project),\n\t\t\tAuthorizedNetwork: apigeeNetwork.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapigeeVpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigee.NewEndpointAttachment(ctx, \"apigee_endpoint_attachment\", \u0026apigee.EndpointAttachmentArgs{\n\t\t\tOrgId: apigeeOrg.ID(),\n\t\t\tEndpointAttachmentId: pulumi.String(\"test1\"),\n\t\t\tLocation: pulumi.String(\"{google_compute_service_attachment location}\"),\n\t\t\tServiceAttachment: pulumi.String(\"{google_compute_service_attachment id}\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.apigee.Organization;\nimport com.pulumi.gcp.apigee.OrganizationArgs;\nimport com.pulumi.gcp.apigee.EndpointAttachment;\nimport com.pulumi.gcp.apigee.EndpointAttachmentArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = OrganizationsFunctions.getClientConfig();\n\n var apigeeNetwork = new Network(\"apigeeNetwork\", NetworkArgs.builder()\n .name(\"apigee-network\")\n .build());\n\n var apigeeRange = new GlobalAddress(\"apigeeRange\", GlobalAddressArgs.builder()\n .name(\"apigee-range\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(apigeeNetwork.id())\n .build());\n\n var apigeeVpcConnection = new Connection(\"apigeeVpcConnection\", ConnectionArgs.builder()\n .network(apigeeNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(apigeeRange.name())\n .build());\n\n var apigeeOrg = new Organization(\"apigeeOrg\", OrganizationArgs.builder()\n .analyticsRegion(\"us-central1\")\n .projectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .authorizedNetwork(apigeeNetwork.id())\n .build(), CustomResourceOptions.builder()\n .dependsOn(apigeeVpcConnection)\n .build());\n\n var apigeeEndpointAttachment = new EndpointAttachment(\"apigeeEndpointAttachment\", EndpointAttachmentArgs.builder()\n .orgId(apigeeOrg.id())\n .endpointAttachmentId(\"test1\")\n .location(\"{google_compute_service_attachment location}\")\n .serviceAttachment(\"{google_compute_service_attachment id}\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n apigeeNetwork:\n type: gcp:compute:Network\n name: apigee_network\n properties:\n name: apigee-network\n apigeeRange:\n type: gcp:compute:GlobalAddress\n name: apigee_range\n properties:\n name: apigee-range\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${apigeeNetwork.id}\n apigeeVpcConnection:\n type: gcp:servicenetworking:Connection\n name: apigee_vpc_connection\n properties:\n network: ${apigeeNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${apigeeRange.name}\n apigeeOrg:\n type: gcp:apigee:Organization\n name: apigee_org\n properties:\n analyticsRegion: us-central1\n projectId: ${current.project}\n authorizedNetwork: ${apigeeNetwork.id}\n options:\n dependson:\n - ${apigeeVpcConnection}\n apigeeEndpointAttachment:\n type: gcp:apigee:EndpointAttachment\n name: apigee_endpoint_attachment\n properties:\n orgId: ${apigeeOrg.id}\n endpointAttachmentId: test1\n location: '{google_compute_service_attachment location}'\n serviceAttachment: '{google_compute_service_attachment id}'\nvariables:\n current:\n fn::invoke:\n Function: gcp:organizations:getClientConfig\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nEndpointAttachment can be imported using any of these accepted formats:\n\n* `{{org_id}}/endpointAttachments/{{endpoint_attachment_id}}`\n\n* `{{org_id}}/{{endpoint_attachment_id}}`\n\nWhen using the `pulumi import` command, EndpointAttachment can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:apigee/endpointAttachment:EndpointAttachment default {{org_id}}/endpointAttachments/{{endpoint_attachment_id}}\n```\n\n```sh\n$ pulumi import gcp:apigee/endpointAttachment:EndpointAttachment default {{org_id}}/{{endpoint_attachment_id}}\n```\n\n", "properties": { "connectionState": { "type": "string", @@ -119950,7 +119950,7 @@ } }, "gcp:apigee/envGroup:EnvGroup": { - "description": "An `Environment group` in Apigee.\n\n\nTo get more information about Envgroup, see:\n\n* [API documentation](https://cloud.google.com/apigee/docs/reference/apis/apigee/rest/v1/organizations.envgroups/create)\n* How-to Guides\n * [Creating an environment](https://cloud.google.com/apigee/docs/api-platform/get-started/create-environment)\n\n## Example Usage\n\n### Apigee Environment Group Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst current = gcp.organizations.getClientConfig({});\nconst apigeeNetwork = new gcp.compute.Network(\"apigee_network\", {name: \"apigee-network\"});\nconst apigeeRange = new gcp.compute.GlobalAddress(\"apigee_range\", {\n name: \"apigee-range\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: apigeeNetwork.id,\n});\nconst apigeeVpcConnection = new gcp.servicenetworking.Connection(\"apigee_vpc_connection\", {\n network: apigeeNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [apigeeRange.name],\n});\nconst apigeeOrg = new gcp.apigee.Organization(\"apigee_org\", {\n analyticsRegion: \"us-central1\",\n projectId: current.then(current =\u003e current.project),\n authorizedNetwork: apigeeNetwork.id,\n}, {\n dependsOn: [apigeeVpcConnection],\n});\nconst envGrp = new gcp.apigee.EnvGroup(\"env_grp\", {\n name: \"my-envgroup\",\n hostnames: [\"abc.foo.com\"],\n orgId: apigeeOrg.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncurrent = gcp.organizations.get_client_config()\napigee_network = gcp.compute.Network(\"apigee_network\", name=\"apigee-network\")\napigee_range = gcp.compute.GlobalAddress(\"apigee_range\",\n name=\"apigee-range\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=apigee_network.id)\napigee_vpc_connection = gcp.servicenetworking.Connection(\"apigee_vpc_connection\",\n network=apigee_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[apigee_range.name])\napigee_org = gcp.apigee.Organization(\"apigee_org\",\n analytics_region=\"us-central1\",\n project_id=current.project,\n authorized_network=apigee_network.id,\n opts = pulumi.ResourceOptions(depends_on=[apigee_vpc_connection]))\nenv_grp = gcp.apigee.EnvGroup(\"env_grp\",\n name=\"my-envgroup\",\n hostnames=[\"abc.foo.com\"],\n org_id=apigee_org.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Gcp.Organizations.GetClientConfig.Invoke();\n\n var apigeeNetwork = new Gcp.Compute.Network(\"apigee_network\", new()\n {\n Name = \"apigee-network\",\n });\n\n var apigeeRange = new Gcp.Compute.GlobalAddress(\"apigee_range\", new()\n {\n Name = \"apigee-range\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = apigeeNetwork.Id,\n });\n\n var apigeeVpcConnection = new Gcp.ServiceNetworking.Connection(\"apigee_vpc_connection\", new()\n {\n Network = apigeeNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n apigeeRange.Name,\n },\n });\n\n var apigeeOrg = new Gcp.Apigee.Organization(\"apigee_org\", new()\n {\n AnalyticsRegion = \"us-central1\",\n ProjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n AuthorizedNetwork = apigeeNetwork.Id,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n apigeeVpcConnection,\n },\n });\n\n var envGrp = new Gcp.Apigee.EnvGroup(\"env_grp\", new()\n {\n Name = \"my-envgroup\",\n Hostnames = new[]\n {\n \"abc.foo.com\",\n },\n OrgId = apigeeOrg.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/apigee\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := organizations.GetClientConfig(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeNetwork, err := compute.NewNetwork(ctx, \"apigee_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"apigee-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeRange, err := compute.NewGlobalAddress(ctx, \"apigee_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"apigee-range\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeVpcConnection, err := servicenetworking.NewConnection(ctx, \"apigee_vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tapigeeRange.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeOrg, err := apigee.NewOrganization(ctx, \"apigee_org\", \u0026apigee.OrganizationArgs{\n\t\t\tAnalyticsRegion: pulumi.String(\"us-central1\"),\n\t\t\tProjectId: pulumi.String(current.Project),\n\t\t\tAuthorizedNetwork: apigeeNetwork.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapigeeVpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigee.NewEnvGroup(ctx, \"env_grp\", \u0026apigee.EnvGroupArgs{\n\t\t\tName: pulumi.String(\"my-envgroup\"),\n\t\t\tHostnames: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"abc.foo.com\"),\n\t\t\t},\n\t\t\tOrgId: apigeeOrg.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.apigee.Organization;\nimport com.pulumi.gcp.apigee.OrganizationArgs;\nimport com.pulumi.gcp.apigee.EnvGroup;\nimport com.pulumi.gcp.apigee.EnvGroupArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = OrganizationsFunctions.getClientConfig();\n\n var apigeeNetwork = new Network(\"apigeeNetwork\", NetworkArgs.builder()\n .name(\"apigee-network\")\n .build());\n\n var apigeeRange = new GlobalAddress(\"apigeeRange\", GlobalAddressArgs.builder()\n .name(\"apigee-range\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(apigeeNetwork.id())\n .build());\n\n var apigeeVpcConnection = new Connection(\"apigeeVpcConnection\", ConnectionArgs.builder()\n .network(apigeeNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(apigeeRange.name())\n .build());\n\n var apigeeOrg = new Organization(\"apigeeOrg\", OrganizationArgs.builder()\n .analyticsRegion(\"us-central1\")\n .projectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .authorizedNetwork(apigeeNetwork.id())\n .build(), CustomResourceOptions.builder()\n .dependsOn(apigeeVpcConnection)\n .build());\n\n var envGrp = new EnvGroup(\"envGrp\", EnvGroupArgs.builder()\n .name(\"my-envgroup\")\n .hostnames(\"abc.foo.com\")\n .orgId(apigeeOrg.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n apigeeNetwork:\n type: gcp:compute:Network\n name: apigee_network\n properties:\n name: apigee-network\n apigeeRange:\n type: gcp:compute:GlobalAddress\n name: apigee_range\n properties:\n name: apigee-range\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${apigeeNetwork.id}\n apigeeVpcConnection:\n type: gcp:servicenetworking:Connection\n name: apigee_vpc_connection\n properties:\n network: ${apigeeNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${apigeeRange.name}\n apigeeOrg:\n type: gcp:apigee:Organization\n name: apigee_org\n properties:\n analyticsRegion: us-central1\n projectId: ${current.project}\n authorizedNetwork: ${apigeeNetwork.id}\n options:\n dependson:\n - ${apigeeVpcConnection}\n envGrp:\n type: gcp:apigee:EnvGroup\n name: env_grp\n properties:\n name: my-envgroup\n hostnames:\n - abc.foo.com\n orgId: ${apigeeOrg.id}\nvariables:\n current:\n fn::invoke:\n Function: gcp:organizations:getClientConfig\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nEnvgroup can be imported using any of these accepted formats:\n\n* `{{org_id}}/envgroups/{{name}}`\n\n* `{{org_id}}/{{name}}`\n\nWhen using the `pulumi import` command, Envgroup can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:apigee/envGroup:EnvGroup default {{org_id}}/envgroups/{{name}}\n```\n\n```sh\n$ pulumi import gcp:apigee/envGroup:EnvGroup default {{org_id}}/{{name}}\n```\n\n", + "description": "An `Environment group` in Apigee.\n\n\nTo get more information about Envgroup, see:\n\n* [API documentation](https://cloud.google.com/apigee/docs/reference/apis/apigee/rest/v1/organizations.envgroups/create)\n* How-to Guides\n * [Creating an environment](https://cloud.google.com/apigee/docs/api-platform/get-started/create-environment)\n\n## Example Usage\n\n### Apigee Environment Group Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst current = gcp.organizations.getClientConfig({});\nconst apigeeNetwork = new gcp.compute.Network(\"apigee_network\", {name: \"apigee-network\"});\nconst apigeeRange = new gcp.compute.GlobalAddress(\"apigee_range\", {\n name: \"apigee-range\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: apigeeNetwork.id,\n});\nconst apigeeVpcConnection = new gcp.servicenetworking.Connection(\"apigee_vpc_connection\", {\n network: apigeeNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [apigeeRange.name],\n});\nconst apigeeOrg = new gcp.apigee.Organization(\"apigee_org\", {\n analyticsRegion: \"us-central1\",\n projectId: current.then(current =\u003e current.project),\n authorizedNetwork: apigeeNetwork.id,\n}, {\n dependsOn: [apigeeVpcConnection],\n});\nconst envGrp = new gcp.apigee.EnvGroup(\"env_grp\", {\n name: \"my-envgroup\",\n hostnames: [\"abc.foo.com\"],\n orgId: apigeeOrg.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncurrent = gcp.organizations.get_client_config()\napigee_network = gcp.compute.Network(\"apigee_network\", name=\"apigee-network\")\napigee_range = gcp.compute.GlobalAddress(\"apigee_range\",\n name=\"apigee-range\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=apigee_network.id)\napigee_vpc_connection = gcp.servicenetworking.Connection(\"apigee_vpc_connection\",\n network=apigee_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[apigee_range.name])\napigee_org = gcp.apigee.Organization(\"apigee_org\",\n analytics_region=\"us-central1\",\n project_id=current.project,\n authorized_network=apigee_network.id,\n opts = pulumi.ResourceOptions(depends_on=[apigee_vpc_connection]))\nenv_grp = gcp.apigee.EnvGroup(\"env_grp\",\n name=\"my-envgroup\",\n hostnames=[\"abc.foo.com\"],\n org_id=apigee_org.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Gcp.Organizations.GetClientConfig.Invoke();\n\n var apigeeNetwork = new Gcp.Compute.Network(\"apigee_network\", new()\n {\n Name = \"apigee-network\",\n });\n\n var apigeeRange = new Gcp.Compute.GlobalAddress(\"apigee_range\", new()\n {\n Name = \"apigee-range\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = apigeeNetwork.Id,\n });\n\n var apigeeVpcConnection = new Gcp.ServiceNetworking.Connection(\"apigee_vpc_connection\", new()\n {\n Network = apigeeNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n apigeeRange.Name,\n },\n });\n\n var apigeeOrg = new Gcp.Apigee.Organization(\"apigee_org\", new()\n {\n AnalyticsRegion = \"us-central1\",\n ProjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n AuthorizedNetwork = apigeeNetwork.Id,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n apigeeVpcConnection,\n },\n });\n\n var envGrp = new Gcp.Apigee.EnvGroup(\"env_grp\", new()\n {\n Name = \"my-envgroup\",\n Hostnames = new[]\n {\n \"abc.foo.com\",\n },\n OrgId = apigeeOrg.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/apigee\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := organizations.GetClientConfig(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeNetwork, err := compute.NewNetwork(ctx, \"apigee_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"apigee-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeRange, err := compute.NewGlobalAddress(ctx, \"apigee_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"apigee-range\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeVpcConnection, err := servicenetworking.NewConnection(ctx, \"apigee_vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tapigeeRange.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeOrg, err := apigee.NewOrganization(ctx, \"apigee_org\", \u0026apigee.OrganizationArgs{\n\t\t\tAnalyticsRegion: pulumi.String(\"us-central1\"),\n\t\t\tProjectId: pulumi.String(current.Project),\n\t\t\tAuthorizedNetwork: apigeeNetwork.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapigeeVpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigee.NewEnvGroup(ctx, \"env_grp\", \u0026apigee.EnvGroupArgs{\n\t\t\tName: pulumi.String(\"my-envgroup\"),\n\t\t\tHostnames: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"abc.foo.com\"),\n\t\t\t},\n\t\t\tOrgId: apigeeOrg.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.apigee.Organization;\nimport com.pulumi.gcp.apigee.OrganizationArgs;\nimport com.pulumi.gcp.apigee.EnvGroup;\nimport com.pulumi.gcp.apigee.EnvGroupArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = OrganizationsFunctions.getClientConfig();\n\n var apigeeNetwork = new Network(\"apigeeNetwork\", NetworkArgs.builder()\n .name(\"apigee-network\")\n .build());\n\n var apigeeRange = new GlobalAddress(\"apigeeRange\", GlobalAddressArgs.builder()\n .name(\"apigee-range\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(apigeeNetwork.id())\n .build());\n\n var apigeeVpcConnection = new Connection(\"apigeeVpcConnection\", ConnectionArgs.builder()\n .network(apigeeNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(apigeeRange.name())\n .build());\n\n var apigeeOrg = new Organization(\"apigeeOrg\", OrganizationArgs.builder()\n .analyticsRegion(\"us-central1\")\n .projectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .authorizedNetwork(apigeeNetwork.id())\n .build(), CustomResourceOptions.builder()\n .dependsOn(apigeeVpcConnection)\n .build());\n\n var envGrp = new EnvGroup(\"envGrp\", EnvGroupArgs.builder()\n .name(\"my-envgroup\")\n .hostnames(\"abc.foo.com\")\n .orgId(apigeeOrg.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n apigeeNetwork:\n type: gcp:compute:Network\n name: apigee_network\n properties:\n name: apigee-network\n apigeeRange:\n type: gcp:compute:GlobalAddress\n name: apigee_range\n properties:\n name: apigee-range\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${apigeeNetwork.id}\n apigeeVpcConnection:\n type: gcp:servicenetworking:Connection\n name: apigee_vpc_connection\n properties:\n network: ${apigeeNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${apigeeRange.name}\n apigeeOrg:\n type: gcp:apigee:Organization\n name: apigee_org\n properties:\n analyticsRegion: us-central1\n projectId: ${current.project}\n authorizedNetwork: ${apigeeNetwork.id}\n options:\n dependson:\n - ${apigeeVpcConnection}\n envGrp:\n type: gcp:apigee:EnvGroup\n name: env_grp\n properties:\n name: my-envgroup\n hostnames:\n - abc.foo.com\n orgId: ${apigeeOrg.id}\nvariables:\n current:\n fn::invoke:\n Function: gcp:organizations:getClientConfig\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nEnvgroup can be imported using any of these accepted formats:\n\n* `{{org_id}}/envgroups/{{name}}`\n\n* `{{org_id}}/{{name}}`\n\nWhen using the `pulumi import` command, Envgroup can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:apigee/envGroup:EnvGroup default {{org_id}}/envgroups/{{name}}\n```\n\n```sh\n$ pulumi import gcp:apigee/envGroup:EnvGroup default {{org_id}}/{{name}}\n```\n\n", "properties": { "hostnames": { "type": "array", @@ -120234,7 +120234,7 @@ } }, "gcp:apigee/environment:Environment": { - "description": "An `Environment` in Apigee.\n\n\nTo get more information about Environment, see:\n\n* [API documentation](https://cloud.google.com/apigee/docs/reference/apis/apigee/rest/v1/organizations.environments/create)\n* How-to Guides\n * [Creating an environment](https://cloud.google.com/apigee/docs/api-platform/get-started/create-environment)\n\n## Example Usage\n\n### Apigee Environment Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst current = gcp.organizations.getClientConfig({});\nconst apigeeNetwork = new gcp.compute.Network(\"apigee_network\", {name: \"apigee-network\"});\nconst apigeeRange = new gcp.compute.GlobalAddress(\"apigee_range\", {\n name: \"apigee-range\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: apigeeNetwork.id,\n});\nconst apigeeVpcConnection = new gcp.servicenetworking.Connection(\"apigee_vpc_connection\", {\n network: apigeeNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [apigeeRange.name],\n});\nconst apigeeOrg = new gcp.apigee.Organization(\"apigee_org\", {\n analyticsRegion: \"us-central1\",\n projectId: current.then(current =\u003e current.project),\n authorizedNetwork: apigeeNetwork.id,\n}, {\n dependsOn: [apigeeVpcConnection],\n});\nconst env = new gcp.apigee.Environment(\"env\", {\n name: \"my-environment\",\n description: \"Apigee Environment\",\n displayName: \"environment-1\",\n orgId: apigeeOrg.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncurrent = gcp.organizations.get_client_config()\napigee_network = gcp.compute.Network(\"apigee_network\", name=\"apigee-network\")\napigee_range = gcp.compute.GlobalAddress(\"apigee_range\",\n name=\"apigee-range\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=apigee_network.id)\napigee_vpc_connection = gcp.servicenetworking.Connection(\"apigee_vpc_connection\",\n network=apigee_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[apigee_range.name])\napigee_org = gcp.apigee.Organization(\"apigee_org\",\n analytics_region=\"us-central1\",\n project_id=current.project,\n authorized_network=apigee_network.id,\n opts = pulumi.ResourceOptions(depends_on=[apigee_vpc_connection]))\nenv = gcp.apigee.Environment(\"env\",\n name=\"my-environment\",\n description=\"Apigee Environment\",\n display_name=\"environment-1\",\n org_id=apigee_org.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Gcp.Organizations.GetClientConfig.Invoke();\n\n var apigeeNetwork = new Gcp.Compute.Network(\"apigee_network\", new()\n {\n Name = \"apigee-network\",\n });\n\n var apigeeRange = new Gcp.Compute.GlobalAddress(\"apigee_range\", new()\n {\n Name = \"apigee-range\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = apigeeNetwork.Id,\n });\n\n var apigeeVpcConnection = new Gcp.ServiceNetworking.Connection(\"apigee_vpc_connection\", new()\n {\n Network = apigeeNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n apigeeRange.Name,\n },\n });\n\n var apigeeOrg = new Gcp.Apigee.Organization(\"apigee_org\", new()\n {\n AnalyticsRegion = \"us-central1\",\n ProjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n AuthorizedNetwork = apigeeNetwork.Id,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n apigeeVpcConnection,\n },\n });\n\n var env = new Gcp.Apigee.Environment(\"env\", new()\n {\n Name = \"my-environment\",\n Description = \"Apigee Environment\",\n DisplayName = \"environment-1\",\n OrgId = apigeeOrg.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/apigee\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := organizations.GetClientConfig(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeNetwork, err := compute.NewNetwork(ctx, \"apigee_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"apigee-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeRange, err := compute.NewGlobalAddress(ctx, \"apigee_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"apigee-range\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeVpcConnection, err := servicenetworking.NewConnection(ctx, \"apigee_vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tapigeeRange.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeOrg, err := apigee.NewOrganization(ctx, \"apigee_org\", \u0026apigee.OrganizationArgs{\n\t\t\tAnalyticsRegion: pulumi.String(\"us-central1\"),\n\t\t\tProjectId: pulumi.String(current.Project),\n\t\t\tAuthorizedNetwork: apigeeNetwork.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapigeeVpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigee.NewEnvironment(ctx, \"env\", \u0026apigee.EnvironmentArgs{\n\t\t\tName: pulumi.String(\"my-environment\"),\n\t\t\tDescription: pulumi.String(\"Apigee Environment\"),\n\t\t\tDisplayName: pulumi.String(\"environment-1\"),\n\t\t\tOrgId: apigeeOrg.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.apigee.Organization;\nimport com.pulumi.gcp.apigee.OrganizationArgs;\nimport com.pulumi.gcp.apigee.Environment;\nimport com.pulumi.gcp.apigee.EnvironmentArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = OrganizationsFunctions.getClientConfig();\n\n var apigeeNetwork = new Network(\"apigeeNetwork\", NetworkArgs.builder()\n .name(\"apigee-network\")\n .build());\n\n var apigeeRange = new GlobalAddress(\"apigeeRange\", GlobalAddressArgs.builder()\n .name(\"apigee-range\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(apigeeNetwork.id())\n .build());\n\n var apigeeVpcConnection = new Connection(\"apigeeVpcConnection\", ConnectionArgs.builder()\n .network(apigeeNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(apigeeRange.name())\n .build());\n\n var apigeeOrg = new Organization(\"apigeeOrg\", OrganizationArgs.builder()\n .analyticsRegion(\"us-central1\")\n .projectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .authorizedNetwork(apigeeNetwork.id())\n .build(), CustomResourceOptions.builder()\n .dependsOn(apigeeVpcConnection)\n .build());\n\n var env = new Environment(\"env\", EnvironmentArgs.builder()\n .name(\"my-environment\")\n .description(\"Apigee Environment\")\n .displayName(\"environment-1\")\n .orgId(apigeeOrg.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n apigeeNetwork:\n type: gcp:compute:Network\n name: apigee_network\n properties:\n name: apigee-network\n apigeeRange:\n type: gcp:compute:GlobalAddress\n name: apigee_range\n properties:\n name: apigee-range\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${apigeeNetwork.id}\n apigeeVpcConnection:\n type: gcp:servicenetworking:Connection\n name: apigee_vpc_connection\n properties:\n network: ${apigeeNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${apigeeRange.name}\n apigeeOrg:\n type: gcp:apigee:Organization\n name: apigee_org\n properties:\n analyticsRegion: us-central1\n projectId: ${current.project}\n authorizedNetwork: ${apigeeNetwork.id}\n options:\n dependson:\n - ${apigeeVpcConnection}\n env:\n type: gcp:apigee:Environment\n properties:\n name: my-environment\n description: Apigee Environment\n displayName: environment-1\n orgId: ${apigeeOrg.id}\nvariables:\n current:\n fn::invoke:\n Function: gcp:organizations:getClientConfig\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nEnvironment can be imported using any of these accepted formats:\n\n* `{{org_id}}/environments/{{name}}`\n\n* `{{org_id}}/{{name}}`\n\nWhen using the `pulumi import` command, Environment can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:apigee/environment:Environment default {{org_id}}/environments/{{name}}\n```\n\n```sh\n$ pulumi import gcp:apigee/environment:Environment default {{org_id}}/{{name}}\n```\n\n", + "description": "An `Environment` in Apigee.\n\n\nTo get more information about Environment, see:\n\n* [API documentation](https://cloud.google.com/apigee/docs/reference/apis/apigee/rest/v1/organizations.environments/create)\n* How-to Guides\n * [Creating an environment](https://cloud.google.com/apigee/docs/api-platform/get-started/create-environment)\n\n## Example Usage\n\n### Apigee Environment Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst current = gcp.organizations.getClientConfig({});\nconst apigeeNetwork = new gcp.compute.Network(\"apigee_network\", {name: \"apigee-network\"});\nconst apigeeRange = new gcp.compute.GlobalAddress(\"apigee_range\", {\n name: \"apigee-range\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: apigeeNetwork.id,\n});\nconst apigeeVpcConnection = new gcp.servicenetworking.Connection(\"apigee_vpc_connection\", {\n network: apigeeNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [apigeeRange.name],\n});\nconst apigeeOrg = new gcp.apigee.Organization(\"apigee_org\", {\n analyticsRegion: \"us-central1\",\n projectId: current.then(current =\u003e current.project),\n authorizedNetwork: apigeeNetwork.id,\n}, {\n dependsOn: [apigeeVpcConnection],\n});\nconst env = new gcp.apigee.Environment(\"env\", {\n name: \"my-environment\",\n description: \"Apigee Environment\",\n displayName: \"environment-1\",\n orgId: apigeeOrg.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncurrent = gcp.organizations.get_client_config()\napigee_network = gcp.compute.Network(\"apigee_network\", name=\"apigee-network\")\napigee_range = gcp.compute.GlobalAddress(\"apigee_range\",\n name=\"apigee-range\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=apigee_network.id)\napigee_vpc_connection = gcp.servicenetworking.Connection(\"apigee_vpc_connection\",\n network=apigee_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[apigee_range.name])\napigee_org = gcp.apigee.Organization(\"apigee_org\",\n analytics_region=\"us-central1\",\n project_id=current.project,\n authorized_network=apigee_network.id,\n opts = pulumi.ResourceOptions(depends_on=[apigee_vpc_connection]))\nenv = gcp.apigee.Environment(\"env\",\n name=\"my-environment\",\n description=\"Apigee Environment\",\n display_name=\"environment-1\",\n org_id=apigee_org.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Gcp.Organizations.GetClientConfig.Invoke();\n\n var apigeeNetwork = new Gcp.Compute.Network(\"apigee_network\", new()\n {\n Name = \"apigee-network\",\n });\n\n var apigeeRange = new Gcp.Compute.GlobalAddress(\"apigee_range\", new()\n {\n Name = \"apigee-range\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = apigeeNetwork.Id,\n });\n\n var apigeeVpcConnection = new Gcp.ServiceNetworking.Connection(\"apigee_vpc_connection\", new()\n {\n Network = apigeeNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n apigeeRange.Name,\n },\n });\n\n var apigeeOrg = new Gcp.Apigee.Organization(\"apigee_org\", new()\n {\n AnalyticsRegion = \"us-central1\",\n ProjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n AuthorizedNetwork = apigeeNetwork.Id,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n apigeeVpcConnection,\n },\n });\n\n var env = new Gcp.Apigee.Environment(\"env\", new()\n {\n Name = \"my-environment\",\n Description = \"Apigee Environment\",\n DisplayName = \"environment-1\",\n OrgId = apigeeOrg.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/apigee\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := organizations.GetClientConfig(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeNetwork, err := compute.NewNetwork(ctx, \"apigee_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"apigee-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeRange, err := compute.NewGlobalAddress(ctx, \"apigee_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"apigee-range\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeVpcConnection, err := servicenetworking.NewConnection(ctx, \"apigee_vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tapigeeRange.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeOrg, err := apigee.NewOrganization(ctx, \"apigee_org\", \u0026apigee.OrganizationArgs{\n\t\t\tAnalyticsRegion: pulumi.String(\"us-central1\"),\n\t\t\tProjectId: pulumi.String(current.Project),\n\t\t\tAuthorizedNetwork: apigeeNetwork.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapigeeVpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigee.NewEnvironment(ctx, \"env\", \u0026apigee.EnvironmentArgs{\n\t\t\tName: pulumi.String(\"my-environment\"),\n\t\t\tDescription: pulumi.String(\"Apigee Environment\"),\n\t\t\tDisplayName: pulumi.String(\"environment-1\"),\n\t\t\tOrgId: apigeeOrg.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.apigee.Organization;\nimport com.pulumi.gcp.apigee.OrganizationArgs;\nimport com.pulumi.gcp.apigee.Environment;\nimport com.pulumi.gcp.apigee.EnvironmentArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = OrganizationsFunctions.getClientConfig();\n\n var apigeeNetwork = new Network(\"apigeeNetwork\", NetworkArgs.builder()\n .name(\"apigee-network\")\n .build());\n\n var apigeeRange = new GlobalAddress(\"apigeeRange\", GlobalAddressArgs.builder()\n .name(\"apigee-range\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(apigeeNetwork.id())\n .build());\n\n var apigeeVpcConnection = new Connection(\"apigeeVpcConnection\", ConnectionArgs.builder()\n .network(apigeeNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(apigeeRange.name())\n .build());\n\n var apigeeOrg = new Organization(\"apigeeOrg\", OrganizationArgs.builder()\n .analyticsRegion(\"us-central1\")\n .projectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .authorizedNetwork(apigeeNetwork.id())\n .build(), CustomResourceOptions.builder()\n .dependsOn(apigeeVpcConnection)\n .build());\n\n var env = new Environment(\"env\", EnvironmentArgs.builder()\n .name(\"my-environment\")\n .description(\"Apigee Environment\")\n .displayName(\"environment-1\")\n .orgId(apigeeOrg.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n apigeeNetwork:\n type: gcp:compute:Network\n name: apigee_network\n properties:\n name: apigee-network\n apigeeRange:\n type: gcp:compute:GlobalAddress\n name: apigee_range\n properties:\n name: apigee-range\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${apigeeNetwork.id}\n apigeeVpcConnection:\n type: gcp:servicenetworking:Connection\n name: apigee_vpc_connection\n properties:\n network: ${apigeeNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${apigeeRange.name}\n apigeeOrg:\n type: gcp:apigee:Organization\n name: apigee_org\n properties:\n analyticsRegion: us-central1\n projectId: ${current.project}\n authorizedNetwork: ${apigeeNetwork.id}\n options:\n dependson:\n - ${apigeeVpcConnection}\n env:\n type: gcp:apigee:Environment\n properties:\n name: my-environment\n description: Apigee Environment\n displayName: environment-1\n orgId: ${apigeeOrg.id}\nvariables:\n current:\n fn::invoke:\n Function: gcp:organizations:getClientConfig\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nEnvironment can be imported using any of these accepted formats:\n\n* `{{org_id}}/environments/{{name}}`\n\n* `{{org_id}}/{{name}}`\n\nWhen using the `pulumi import` command, Environment can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:apigee/environment:Environment default {{org_id}}/environments/{{name}}\n```\n\n```sh\n$ pulumi import gcp:apigee/environment:Environment default {{org_id}}/{{name}}\n```\n\n", "properties": { "apiProxyType": { "type": "string", @@ -120650,7 +120650,7 @@ } }, "gcp:apigee/environmentKeyvaluemaps:EnvironmentKeyvaluemaps": { - "description": "Collection of key/value string pairs.\n\n\nTo get more information about EnvironmentKeyvaluemaps, see:\n\n* [API documentation](https://cloud.google.com/apigee/docs/reference/apis/apigee/rest/v1/organizations.environments.keyvaluemaps/create)\n* How-to Guides\n * [Using key value maps](https://cloud.google.com/apigee/docs/api-platform/cache/key-value-maps)\n\n## Example Usage\n\n### Apigee Environment Keyvaluemaps Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst current = gcp.organizations.getClientConfig({});\nconst apigeeNetwork = new gcp.compute.Network(\"apigee_network\", {name: \"apigee-network\"});\nconst apigeeRange = new gcp.compute.GlobalAddress(\"apigee_range\", {\n name: \"apigee-range\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: apigeeNetwork.id,\n});\nconst apigeeVpcConnection = new gcp.servicenetworking.Connection(\"apigee_vpc_connection\", {\n network: apigeeNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [apigeeRange.name],\n});\nconst apigeeOrg = new gcp.apigee.Organization(\"apigee_org\", {\n analyticsRegion: \"us-central1\",\n projectId: current.then(current =\u003e current.project),\n authorizedNetwork: apigeeNetwork.id,\n}, {\n dependsOn: [apigeeVpcConnection],\n});\nconst apigeeEnvironment = new gcp.apigee.Environment(\"apigee_environment\", {\n orgId: apigeeOrg.id,\n name: \"tf-test-env\",\n description: \"Apigee Environment\",\n displayName: \"Apigee Environment\",\n});\nconst apigeeInstance = new gcp.apigee.Instance(\"apigee_instance\", {\n name: \"tf-test-instance\",\n location: \"us-central1\",\n orgId: apigeeOrg.id,\n});\nconst apigeeInstanceAttachment = new gcp.apigee.InstanceAttachment(\"apigee_instance_attachment\", {\n instanceId: apigeeInstance.id,\n environment: apigeeEnvironment.name,\n});\nconst apigeeEnvironmentKeyvaluemaps = new gcp.apigee.EnvironmentKeyvaluemaps(\"apigee_environment_keyvaluemaps\", {\n envId: apigeeEnvironment.id,\n name: \"tf-test-env-kvms\",\n}, {\n dependsOn: [\n apigeeOrg,\n apigeeEnvironment,\n apigeeInstance,\n apigeeInstanceAttachment,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncurrent = gcp.organizations.get_client_config()\napigee_network = gcp.compute.Network(\"apigee_network\", name=\"apigee-network\")\napigee_range = gcp.compute.GlobalAddress(\"apigee_range\",\n name=\"apigee-range\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=apigee_network.id)\napigee_vpc_connection = gcp.servicenetworking.Connection(\"apigee_vpc_connection\",\n network=apigee_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[apigee_range.name])\napigee_org = gcp.apigee.Organization(\"apigee_org\",\n analytics_region=\"us-central1\",\n project_id=current.project,\n authorized_network=apigee_network.id,\n opts = pulumi.ResourceOptions(depends_on=[apigee_vpc_connection]))\napigee_environment = gcp.apigee.Environment(\"apigee_environment\",\n org_id=apigee_org.id,\n name=\"tf-test-env\",\n description=\"Apigee Environment\",\n display_name=\"Apigee Environment\")\napigee_instance = gcp.apigee.Instance(\"apigee_instance\",\n name=\"tf-test-instance\",\n location=\"us-central1\",\n org_id=apigee_org.id)\napigee_instance_attachment = gcp.apigee.InstanceAttachment(\"apigee_instance_attachment\",\n instance_id=apigee_instance.id,\n environment=apigee_environment.name)\napigee_environment_keyvaluemaps = gcp.apigee.EnvironmentKeyvaluemaps(\"apigee_environment_keyvaluemaps\",\n env_id=apigee_environment.id,\n name=\"tf-test-env-kvms\",\n opts = pulumi.ResourceOptions(depends_on=[\n apigee_org,\n apigee_environment,\n apigee_instance,\n apigee_instance_attachment,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Gcp.Organizations.GetClientConfig.Invoke();\n\n var apigeeNetwork = new Gcp.Compute.Network(\"apigee_network\", new()\n {\n Name = \"apigee-network\",\n });\n\n var apigeeRange = new Gcp.Compute.GlobalAddress(\"apigee_range\", new()\n {\n Name = \"apigee-range\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = apigeeNetwork.Id,\n });\n\n var apigeeVpcConnection = new Gcp.ServiceNetworking.Connection(\"apigee_vpc_connection\", new()\n {\n Network = apigeeNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n apigeeRange.Name,\n },\n });\n\n var apigeeOrg = new Gcp.Apigee.Organization(\"apigee_org\", new()\n {\n AnalyticsRegion = \"us-central1\",\n ProjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n AuthorizedNetwork = apigeeNetwork.Id,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n apigeeVpcConnection,\n },\n });\n\n var apigeeEnvironment = new Gcp.Apigee.Environment(\"apigee_environment\", new()\n {\n OrgId = apigeeOrg.Id,\n Name = \"tf-test-env\",\n Description = \"Apigee Environment\",\n DisplayName = \"Apigee Environment\",\n });\n\n var apigeeInstance = new Gcp.Apigee.Instance(\"apigee_instance\", new()\n {\n Name = \"tf-test-instance\",\n Location = \"us-central1\",\n OrgId = apigeeOrg.Id,\n });\n\n var apigeeInstanceAttachment = new Gcp.Apigee.InstanceAttachment(\"apigee_instance_attachment\", new()\n {\n InstanceId = apigeeInstance.Id,\n Environment = apigeeEnvironment.Name,\n });\n\n var apigeeEnvironmentKeyvaluemaps = new Gcp.Apigee.EnvironmentKeyvaluemaps(\"apigee_environment_keyvaluemaps\", new()\n {\n EnvId = apigeeEnvironment.Id,\n Name = \"tf-test-env-kvms\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n apigeeOrg,\n apigeeEnvironment,\n apigeeInstance,\n apigeeInstanceAttachment,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/apigee\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := organizations.GetClientConfig(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeNetwork, err := compute.NewNetwork(ctx, \"apigee_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"apigee-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeRange, err := compute.NewGlobalAddress(ctx, \"apigee_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"apigee-range\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeVpcConnection, err := servicenetworking.NewConnection(ctx, \"apigee_vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tapigeeRange.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeOrg, err := apigee.NewOrganization(ctx, \"apigee_org\", \u0026apigee.OrganizationArgs{\n\t\t\tAnalyticsRegion: pulumi.String(\"us-central1\"),\n\t\t\tProjectId: pulumi.String(current.Project),\n\t\t\tAuthorizedNetwork: apigeeNetwork.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapigeeVpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeEnvironment, err := apigee.NewEnvironment(ctx, \"apigee_environment\", \u0026apigee.EnvironmentArgs{\n\t\t\tOrgId: apigeeOrg.ID(),\n\t\t\tName: pulumi.String(\"tf-test-env\"),\n\t\t\tDescription: pulumi.String(\"Apigee Environment\"),\n\t\t\tDisplayName: pulumi.String(\"Apigee Environment\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeInstance, err := apigee.NewInstance(ctx, \"apigee_instance\", \u0026apigee.InstanceArgs{\n\t\t\tName: pulumi.String(\"tf-test-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tOrgId: apigeeOrg.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeInstanceAttachment, err := apigee.NewInstanceAttachment(ctx, \"apigee_instance_attachment\", \u0026apigee.InstanceAttachmentArgs{\n\t\t\tInstanceId: apigeeInstance.ID(),\n\t\t\tEnvironment: apigeeEnvironment.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigee.NewEnvironmentKeyvaluemaps(ctx, \"apigee_environment_keyvaluemaps\", \u0026apigee.EnvironmentKeyvaluemapsArgs{\n\t\t\tEnvId: apigeeEnvironment.ID(),\n\t\t\tName: pulumi.String(\"tf-test-env-kvms\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapigeeOrg,\n\t\t\tapigeeEnvironment,\n\t\t\tapigeeInstance,\n\t\t\tapigeeInstanceAttachment,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.apigee.Organization;\nimport com.pulumi.gcp.apigee.OrganizationArgs;\nimport com.pulumi.gcp.apigee.Environment;\nimport com.pulumi.gcp.apigee.EnvironmentArgs;\nimport com.pulumi.gcp.apigee.Instance;\nimport com.pulumi.gcp.apigee.InstanceArgs;\nimport com.pulumi.gcp.apigee.InstanceAttachment;\nimport com.pulumi.gcp.apigee.InstanceAttachmentArgs;\nimport com.pulumi.gcp.apigee.EnvironmentKeyvaluemaps;\nimport com.pulumi.gcp.apigee.EnvironmentKeyvaluemapsArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = OrganizationsFunctions.getClientConfig();\n\n var apigeeNetwork = new Network(\"apigeeNetwork\", NetworkArgs.builder()\n .name(\"apigee-network\")\n .build());\n\n var apigeeRange = new GlobalAddress(\"apigeeRange\", GlobalAddressArgs.builder()\n .name(\"apigee-range\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(apigeeNetwork.id())\n .build());\n\n var apigeeVpcConnection = new Connection(\"apigeeVpcConnection\", ConnectionArgs.builder()\n .network(apigeeNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(apigeeRange.name())\n .build());\n\n var apigeeOrg = new Organization(\"apigeeOrg\", OrganizationArgs.builder()\n .analyticsRegion(\"us-central1\")\n .projectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .authorizedNetwork(apigeeNetwork.id())\n .build(), CustomResourceOptions.builder()\n .dependsOn(apigeeVpcConnection)\n .build());\n\n var apigeeEnvironment = new Environment(\"apigeeEnvironment\", EnvironmentArgs.builder()\n .orgId(apigeeOrg.id())\n .name(\"tf-test-env\")\n .description(\"Apigee Environment\")\n .displayName(\"Apigee Environment\")\n .build());\n\n var apigeeInstance = new Instance(\"apigeeInstance\", InstanceArgs.builder()\n .name(\"tf-test-instance\")\n .location(\"us-central1\")\n .orgId(apigeeOrg.id())\n .build());\n\n var apigeeInstanceAttachment = new InstanceAttachment(\"apigeeInstanceAttachment\", InstanceAttachmentArgs.builder()\n .instanceId(apigeeInstance.id())\n .environment(apigeeEnvironment.name())\n .build());\n\n var apigeeEnvironmentKeyvaluemaps = new EnvironmentKeyvaluemaps(\"apigeeEnvironmentKeyvaluemaps\", EnvironmentKeyvaluemapsArgs.builder()\n .envId(apigeeEnvironment.id())\n .name(\"tf-test-env-kvms\")\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n apigeeOrg,\n apigeeEnvironment,\n apigeeInstance,\n apigeeInstanceAttachment)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n apigeeNetwork:\n type: gcp:compute:Network\n name: apigee_network\n properties:\n name: apigee-network\n apigeeRange:\n type: gcp:compute:GlobalAddress\n name: apigee_range\n properties:\n name: apigee-range\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${apigeeNetwork.id}\n apigeeVpcConnection:\n type: gcp:servicenetworking:Connection\n name: apigee_vpc_connection\n properties:\n network: ${apigeeNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${apigeeRange.name}\n apigeeOrg:\n type: gcp:apigee:Organization\n name: apigee_org\n properties:\n analyticsRegion: us-central1\n projectId: ${current.project}\n authorizedNetwork: ${apigeeNetwork.id}\n options:\n dependson:\n - ${apigeeVpcConnection}\n apigeeEnvironment:\n type: gcp:apigee:Environment\n name: apigee_environment\n properties:\n orgId: ${apigeeOrg.id}\n name: tf-test-env\n description: Apigee Environment\n displayName: Apigee Environment\n apigeeInstance:\n type: gcp:apigee:Instance\n name: apigee_instance\n properties:\n name: tf-test-instance\n location: us-central1\n orgId: ${apigeeOrg.id}\n apigeeInstanceAttachment:\n type: gcp:apigee:InstanceAttachment\n name: apigee_instance_attachment\n properties:\n instanceId: ${apigeeInstance.id}\n environment: ${apigeeEnvironment.name}\n apigeeEnvironmentKeyvaluemaps:\n type: gcp:apigee:EnvironmentKeyvaluemaps\n name: apigee_environment_keyvaluemaps\n properties:\n envId: ${apigeeEnvironment.id}\n name: tf-test-env-kvms\n options:\n dependson:\n - ${apigeeOrg}\n - ${apigeeEnvironment}\n - ${apigeeInstance}\n - ${apigeeInstanceAttachment}\nvariables:\n current:\n fn::invoke:\n Function: gcp:organizations:getClientConfig\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nEnvironmentKeyvaluemaps can be imported using any of these accepted formats:\n\n* `{{env_id}}/keyvaluemaps/{{name}}`\n\n* `{{env_id}}/{{name}}`\n\nWhen using the `pulumi import` command, EnvironmentKeyvaluemaps can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:apigee/environmentKeyvaluemaps:EnvironmentKeyvaluemaps default {{env_id}}/keyvaluemaps/{{name}}\n```\n\n```sh\n$ pulumi import gcp:apigee/environmentKeyvaluemaps:EnvironmentKeyvaluemaps default {{env_id}}/{{name}}\n```\n\n", + "description": "Collection of key/value string pairs.\n\n\nTo get more information about EnvironmentKeyvaluemaps, see:\n\n* [API documentation](https://cloud.google.com/apigee/docs/reference/apis/apigee/rest/v1/organizations.environments.keyvaluemaps/create)\n* How-to Guides\n * [Using key value maps](https://cloud.google.com/apigee/docs/api-platform/cache/key-value-maps)\n\n## Example Usage\n\n### Apigee Environment Keyvaluemaps Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst current = gcp.organizations.getClientConfig({});\nconst apigeeNetwork = new gcp.compute.Network(\"apigee_network\", {name: \"apigee-network\"});\nconst apigeeRange = new gcp.compute.GlobalAddress(\"apigee_range\", {\n name: \"apigee-range\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: apigeeNetwork.id,\n});\nconst apigeeVpcConnection = new gcp.servicenetworking.Connection(\"apigee_vpc_connection\", {\n network: apigeeNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [apigeeRange.name],\n});\nconst apigeeOrg = new gcp.apigee.Organization(\"apigee_org\", {\n analyticsRegion: \"us-central1\",\n projectId: current.then(current =\u003e current.project),\n authorizedNetwork: apigeeNetwork.id,\n}, {\n dependsOn: [apigeeVpcConnection],\n});\nconst apigeeEnvironment = new gcp.apigee.Environment(\"apigee_environment\", {\n orgId: apigeeOrg.id,\n name: \"tf-test-env\",\n description: \"Apigee Environment\",\n displayName: \"Apigee Environment\",\n});\nconst apigeeInstance = new gcp.apigee.Instance(\"apigee_instance\", {\n name: \"tf-test-instance\",\n location: \"us-central1\",\n orgId: apigeeOrg.id,\n});\nconst apigeeInstanceAttachment = new gcp.apigee.InstanceAttachment(\"apigee_instance_attachment\", {\n instanceId: apigeeInstance.id,\n environment: apigeeEnvironment.name,\n});\nconst apigeeEnvironmentKeyvaluemaps = new gcp.apigee.EnvironmentKeyvaluemaps(\"apigee_environment_keyvaluemaps\", {\n envId: apigeeEnvironment.id,\n name: \"tf-test-env-kvms\",\n}, {\n dependsOn: [\n apigeeOrg,\n apigeeEnvironment,\n apigeeInstance,\n apigeeInstanceAttachment,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncurrent = gcp.organizations.get_client_config()\napigee_network = gcp.compute.Network(\"apigee_network\", name=\"apigee-network\")\napigee_range = gcp.compute.GlobalAddress(\"apigee_range\",\n name=\"apigee-range\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=apigee_network.id)\napigee_vpc_connection = gcp.servicenetworking.Connection(\"apigee_vpc_connection\",\n network=apigee_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[apigee_range.name])\napigee_org = gcp.apigee.Organization(\"apigee_org\",\n analytics_region=\"us-central1\",\n project_id=current.project,\n authorized_network=apigee_network.id,\n opts = pulumi.ResourceOptions(depends_on=[apigee_vpc_connection]))\napigee_environment = gcp.apigee.Environment(\"apigee_environment\",\n org_id=apigee_org.id,\n name=\"tf-test-env\",\n description=\"Apigee Environment\",\n display_name=\"Apigee Environment\")\napigee_instance = gcp.apigee.Instance(\"apigee_instance\",\n name=\"tf-test-instance\",\n location=\"us-central1\",\n org_id=apigee_org.id)\napigee_instance_attachment = gcp.apigee.InstanceAttachment(\"apigee_instance_attachment\",\n instance_id=apigee_instance.id,\n environment=apigee_environment.name)\napigee_environment_keyvaluemaps = gcp.apigee.EnvironmentKeyvaluemaps(\"apigee_environment_keyvaluemaps\",\n env_id=apigee_environment.id,\n name=\"tf-test-env-kvms\",\n opts = pulumi.ResourceOptions(depends_on=[\n apigee_org,\n apigee_environment,\n apigee_instance,\n apigee_instance_attachment,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Gcp.Organizations.GetClientConfig.Invoke();\n\n var apigeeNetwork = new Gcp.Compute.Network(\"apigee_network\", new()\n {\n Name = \"apigee-network\",\n });\n\n var apigeeRange = new Gcp.Compute.GlobalAddress(\"apigee_range\", new()\n {\n Name = \"apigee-range\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = apigeeNetwork.Id,\n });\n\n var apigeeVpcConnection = new Gcp.ServiceNetworking.Connection(\"apigee_vpc_connection\", new()\n {\n Network = apigeeNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n apigeeRange.Name,\n },\n });\n\n var apigeeOrg = new Gcp.Apigee.Organization(\"apigee_org\", new()\n {\n AnalyticsRegion = \"us-central1\",\n ProjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n AuthorizedNetwork = apigeeNetwork.Id,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n apigeeVpcConnection,\n },\n });\n\n var apigeeEnvironment = new Gcp.Apigee.Environment(\"apigee_environment\", new()\n {\n OrgId = apigeeOrg.Id,\n Name = \"tf-test-env\",\n Description = \"Apigee Environment\",\n DisplayName = \"Apigee Environment\",\n });\n\n var apigeeInstance = new Gcp.Apigee.Instance(\"apigee_instance\", new()\n {\n Name = \"tf-test-instance\",\n Location = \"us-central1\",\n OrgId = apigeeOrg.Id,\n });\n\n var apigeeInstanceAttachment = new Gcp.Apigee.InstanceAttachment(\"apigee_instance_attachment\", new()\n {\n InstanceId = apigeeInstance.Id,\n Environment = apigeeEnvironment.Name,\n });\n\n var apigeeEnvironmentKeyvaluemaps = new Gcp.Apigee.EnvironmentKeyvaluemaps(\"apigee_environment_keyvaluemaps\", new()\n {\n EnvId = apigeeEnvironment.Id,\n Name = \"tf-test-env-kvms\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n apigeeOrg,\n apigeeEnvironment,\n apigeeInstance,\n apigeeInstanceAttachment,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/apigee\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := organizations.GetClientConfig(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeNetwork, err := compute.NewNetwork(ctx, \"apigee_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"apigee-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeRange, err := compute.NewGlobalAddress(ctx, \"apigee_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"apigee-range\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeVpcConnection, err := servicenetworking.NewConnection(ctx, \"apigee_vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tapigeeRange.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeOrg, err := apigee.NewOrganization(ctx, \"apigee_org\", \u0026apigee.OrganizationArgs{\n\t\t\tAnalyticsRegion: pulumi.String(\"us-central1\"),\n\t\t\tProjectId: pulumi.String(current.Project),\n\t\t\tAuthorizedNetwork: apigeeNetwork.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapigeeVpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeEnvironment, err := apigee.NewEnvironment(ctx, \"apigee_environment\", \u0026apigee.EnvironmentArgs{\n\t\t\tOrgId: apigeeOrg.ID(),\n\t\t\tName: pulumi.String(\"tf-test-env\"),\n\t\t\tDescription: pulumi.String(\"Apigee Environment\"),\n\t\t\tDisplayName: pulumi.String(\"Apigee Environment\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeInstance, err := apigee.NewInstance(ctx, \"apigee_instance\", \u0026apigee.InstanceArgs{\n\t\t\tName: pulumi.String(\"tf-test-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tOrgId: apigeeOrg.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeInstanceAttachment, err := apigee.NewInstanceAttachment(ctx, \"apigee_instance_attachment\", \u0026apigee.InstanceAttachmentArgs{\n\t\t\tInstanceId: apigeeInstance.ID(),\n\t\t\tEnvironment: apigeeEnvironment.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigee.NewEnvironmentKeyvaluemaps(ctx, \"apigee_environment_keyvaluemaps\", \u0026apigee.EnvironmentKeyvaluemapsArgs{\n\t\t\tEnvId: apigeeEnvironment.ID(),\n\t\t\tName: pulumi.String(\"tf-test-env-kvms\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapigeeOrg,\n\t\t\tapigeeEnvironment,\n\t\t\tapigeeInstance,\n\t\t\tapigeeInstanceAttachment,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.apigee.Organization;\nimport com.pulumi.gcp.apigee.OrganizationArgs;\nimport com.pulumi.gcp.apigee.Environment;\nimport com.pulumi.gcp.apigee.EnvironmentArgs;\nimport com.pulumi.gcp.apigee.Instance;\nimport com.pulumi.gcp.apigee.InstanceArgs;\nimport com.pulumi.gcp.apigee.InstanceAttachment;\nimport com.pulumi.gcp.apigee.InstanceAttachmentArgs;\nimport com.pulumi.gcp.apigee.EnvironmentKeyvaluemaps;\nimport com.pulumi.gcp.apigee.EnvironmentKeyvaluemapsArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = OrganizationsFunctions.getClientConfig();\n\n var apigeeNetwork = new Network(\"apigeeNetwork\", NetworkArgs.builder()\n .name(\"apigee-network\")\n .build());\n\n var apigeeRange = new GlobalAddress(\"apigeeRange\", GlobalAddressArgs.builder()\n .name(\"apigee-range\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(apigeeNetwork.id())\n .build());\n\n var apigeeVpcConnection = new Connection(\"apigeeVpcConnection\", ConnectionArgs.builder()\n .network(apigeeNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(apigeeRange.name())\n .build());\n\n var apigeeOrg = new Organization(\"apigeeOrg\", OrganizationArgs.builder()\n .analyticsRegion(\"us-central1\")\n .projectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .authorizedNetwork(apigeeNetwork.id())\n .build(), CustomResourceOptions.builder()\n .dependsOn(apigeeVpcConnection)\n .build());\n\n var apigeeEnvironment = new Environment(\"apigeeEnvironment\", EnvironmentArgs.builder()\n .orgId(apigeeOrg.id())\n .name(\"tf-test-env\")\n .description(\"Apigee Environment\")\n .displayName(\"Apigee Environment\")\n .build());\n\n var apigeeInstance = new Instance(\"apigeeInstance\", InstanceArgs.builder()\n .name(\"tf-test-instance\")\n .location(\"us-central1\")\n .orgId(apigeeOrg.id())\n .build());\n\n var apigeeInstanceAttachment = new InstanceAttachment(\"apigeeInstanceAttachment\", InstanceAttachmentArgs.builder()\n .instanceId(apigeeInstance.id())\n .environment(apigeeEnvironment.name())\n .build());\n\n var apigeeEnvironmentKeyvaluemaps = new EnvironmentKeyvaluemaps(\"apigeeEnvironmentKeyvaluemaps\", EnvironmentKeyvaluemapsArgs.builder()\n .envId(apigeeEnvironment.id())\n .name(\"tf-test-env-kvms\")\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n apigeeOrg,\n apigeeEnvironment,\n apigeeInstance,\n apigeeInstanceAttachment)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n apigeeNetwork:\n type: gcp:compute:Network\n name: apigee_network\n properties:\n name: apigee-network\n apigeeRange:\n type: gcp:compute:GlobalAddress\n name: apigee_range\n properties:\n name: apigee-range\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${apigeeNetwork.id}\n apigeeVpcConnection:\n type: gcp:servicenetworking:Connection\n name: apigee_vpc_connection\n properties:\n network: ${apigeeNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${apigeeRange.name}\n apigeeOrg:\n type: gcp:apigee:Organization\n name: apigee_org\n properties:\n analyticsRegion: us-central1\n projectId: ${current.project}\n authorizedNetwork: ${apigeeNetwork.id}\n options:\n dependson:\n - ${apigeeVpcConnection}\n apigeeEnvironment:\n type: gcp:apigee:Environment\n name: apigee_environment\n properties:\n orgId: ${apigeeOrg.id}\n name: tf-test-env\n description: Apigee Environment\n displayName: Apigee Environment\n apigeeInstance:\n type: gcp:apigee:Instance\n name: apigee_instance\n properties:\n name: tf-test-instance\n location: us-central1\n orgId: ${apigeeOrg.id}\n apigeeInstanceAttachment:\n type: gcp:apigee:InstanceAttachment\n name: apigee_instance_attachment\n properties:\n instanceId: ${apigeeInstance.id}\n environment: ${apigeeEnvironment.name}\n apigeeEnvironmentKeyvaluemaps:\n type: gcp:apigee:EnvironmentKeyvaluemaps\n name: apigee_environment_keyvaluemaps\n properties:\n envId: ${apigeeEnvironment.id}\n name: tf-test-env-kvms\n options:\n dependson:\n - ${apigeeOrg}\n - ${apigeeEnvironment}\n - ${apigeeInstance}\n - ${apigeeInstanceAttachment}\nvariables:\n current:\n fn::invoke:\n Function: gcp:organizations:getClientConfig\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nEnvironmentKeyvaluemaps can be imported using any of these accepted formats:\n\n* `{{env_id}}/keyvaluemaps/{{name}}`\n\n* `{{env_id}}/{{name}}`\n\nWhen using the `pulumi import` command, EnvironmentKeyvaluemaps can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:apigee/environmentKeyvaluemaps:EnvironmentKeyvaluemaps default {{env_id}}/keyvaluemaps/{{name}}\n```\n\n```sh\n$ pulumi import gcp:apigee/environmentKeyvaluemaps:EnvironmentKeyvaluemaps default {{env_id}}/{{name}}\n```\n\n", "properties": { "envId": { "type": "string", @@ -120698,7 +120698,7 @@ } }, "gcp:apigee/environmentKeyvaluemapsEntries:EnvironmentKeyvaluemapsEntries": { - "description": "Creates key value entries in a key value map scoped to an environment.\n\n\nTo get more information about EnvironmentKeyvaluemapsEntries, see:\n\n* [API documentation](https://cloud.google.com/apigee/docs/reference/apis/apigee/rest/v1/organizations.keyvaluemaps.entries/create)\n* How-to Guides\n * [Using key value maps](https://cloud.google.com/apigee/docs/api-platform/cache/key-value-maps)\n\n## Example Usage\n\n### Apigee Environment Keyvaluemaps Entries Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst current = gcp.organizations.getClientConfig({});\nconst apigeeNetwork = new gcp.compute.Network(\"apigee_network\", {name: \"apigee-network\"});\nconst apigeeRange = new gcp.compute.GlobalAddress(\"apigee_range\", {\n name: \"apigee-range\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: apigeeNetwork.id,\n});\nconst apigeeVpcConnection = new gcp.servicenetworking.Connection(\"apigee_vpc_connection\", {\n network: apigeeNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [apigeeRange.name],\n});\nconst apigeeOrg = new gcp.apigee.Organization(\"apigee_org\", {\n analyticsRegion: \"us-central1\",\n projectId: current.then(current =\u003e current.project),\n authorizedNetwork: apigeeNetwork.id,\n}, {\n dependsOn: [apigeeVpcConnection],\n});\nconst apigeeEnvironment = new gcp.apigee.Environment(\"apigee_environment\", {\n orgId: apigeeOrg.id,\n name: \"tf-test-env\",\n description: \"Apigee Environment\",\n displayName: \"Apigee Environment\",\n});\nconst apigeeInstance = new gcp.apigee.Instance(\"apigee_instance\", {\n name: \"tf-test-instance\",\n location: \"us-central1\",\n orgId: apigeeOrg.id,\n});\nconst apigeeInstanceAttachment = new gcp.apigee.InstanceAttachment(\"apigee_instance_attachment\", {\n instanceId: apigeeInstance.id,\n environment: apigeeEnvironment.name,\n});\nconst apigeeEnvironmentKeyvaluemaps = new gcp.apigee.EnvironmentKeyvaluemaps(\"apigee_environment_keyvaluemaps\", {\n envId: createApigeeEnvironment.id,\n name: \"tf-test-env-kvms\",\n}, {\n dependsOn: [\n apigeeOrg,\n apigeeEnvironment,\n apigeeInstance,\n apigeeInstanceAttachment,\n ],\n});\nconst apigeeEnvironmentKeyvaluemapsEntries = new gcp.apigee.EnvironmentKeyvaluemapsEntries(\"apigee_environment_keyvaluemaps_entries\", {\n envKeyvaluemapId: apigeeEnvironmentKeyvaluemaps.id,\n name: \"testName\",\n value: \"testValue\",\n}, {\n dependsOn: [\n apigeeOrg,\n apigeeEnvironment,\n apigeeInstance,\n apigeeInstanceAttachment,\n apigeeEnvironmentKeyvaluemaps,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncurrent = gcp.organizations.get_client_config()\napigee_network = gcp.compute.Network(\"apigee_network\", name=\"apigee-network\")\napigee_range = gcp.compute.GlobalAddress(\"apigee_range\",\n name=\"apigee-range\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=apigee_network.id)\napigee_vpc_connection = gcp.servicenetworking.Connection(\"apigee_vpc_connection\",\n network=apigee_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[apigee_range.name])\napigee_org = gcp.apigee.Organization(\"apigee_org\",\n analytics_region=\"us-central1\",\n project_id=current.project,\n authorized_network=apigee_network.id,\n opts = pulumi.ResourceOptions(depends_on=[apigee_vpc_connection]))\napigee_environment = gcp.apigee.Environment(\"apigee_environment\",\n org_id=apigee_org.id,\n name=\"tf-test-env\",\n description=\"Apigee Environment\",\n display_name=\"Apigee Environment\")\napigee_instance = gcp.apigee.Instance(\"apigee_instance\",\n name=\"tf-test-instance\",\n location=\"us-central1\",\n org_id=apigee_org.id)\napigee_instance_attachment = gcp.apigee.InstanceAttachment(\"apigee_instance_attachment\",\n instance_id=apigee_instance.id,\n environment=apigee_environment.name)\napigee_environment_keyvaluemaps = gcp.apigee.EnvironmentKeyvaluemaps(\"apigee_environment_keyvaluemaps\",\n env_id=create_apigee_environment[\"id\"],\n name=\"tf-test-env-kvms\",\n opts = pulumi.ResourceOptions(depends_on=[\n apigee_org,\n apigee_environment,\n apigee_instance,\n apigee_instance_attachment,\n ]))\napigee_environment_keyvaluemaps_entries = gcp.apigee.EnvironmentKeyvaluemapsEntries(\"apigee_environment_keyvaluemaps_entries\",\n env_keyvaluemap_id=apigee_environment_keyvaluemaps.id,\n name=\"testName\",\n value=\"testValue\",\n opts = pulumi.ResourceOptions(depends_on=[\n apigee_org,\n apigee_environment,\n apigee_instance,\n apigee_instance_attachment,\n apigee_environment_keyvaluemaps,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Gcp.Organizations.GetClientConfig.Invoke();\n\n var apigeeNetwork = new Gcp.Compute.Network(\"apigee_network\", new()\n {\n Name = \"apigee-network\",\n });\n\n var apigeeRange = new Gcp.Compute.GlobalAddress(\"apigee_range\", new()\n {\n Name = \"apigee-range\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = apigeeNetwork.Id,\n });\n\n var apigeeVpcConnection = new Gcp.ServiceNetworking.Connection(\"apigee_vpc_connection\", new()\n {\n Network = apigeeNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n apigeeRange.Name,\n },\n });\n\n var apigeeOrg = new Gcp.Apigee.Organization(\"apigee_org\", new()\n {\n AnalyticsRegion = \"us-central1\",\n ProjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n AuthorizedNetwork = apigeeNetwork.Id,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n apigeeVpcConnection,\n },\n });\n\n var apigeeEnvironment = new Gcp.Apigee.Environment(\"apigee_environment\", new()\n {\n OrgId = apigeeOrg.Id,\n Name = \"tf-test-env\",\n Description = \"Apigee Environment\",\n DisplayName = \"Apigee Environment\",\n });\n\n var apigeeInstance = new Gcp.Apigee.Instance(\"apigee_instance\", new()\n {\n Name = \"tf-test-instance\",\n Location = \"us-central1\",\n OrgId = apigeeOrg.Id,\n });\n\n var apigeeInstanceAttachment = new Gcp.Apigee.InstanceAttachment(\"apigee_instance_attachment\", new()\n {\n InstanceId = apigeeInstance.Id,\n Environment = apigeeEnvironment.Name,\n });\n\n var apigeeEnvironmentKeyvaluemaps = new Gcp.Apigee.EnvironmentKeyvaluemaps(\"apigee_environment_keyvaluemaps\", new()\n {\n EnvId = createApigeeEnvironment.Id,\n Name = \"tf-test-env-kvms\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n apigeeOrg,\n apigeeEnvironment,\n apigeeInstance,\n apigeeInstanceAttachment,\n },\n });\n\n var apigeeEnvironmentKeyvaluemapsEntries = new Gcp.Apigee.EnvironmentKeyvaluemapsEntries(\"apigee_environment_keyvaluemaps_entries\", new()\n {\n EnvKeyvaluemapId = apigeeEnvironmentKeyvaluemaps.Id,\n Name = \"testName\",\n Value = \"testValue\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n apigeeOrg,\n apigeeEnvironment,\n apigeeInstance,\n apigeeInstanceAttachment,\n apigeeEnvironmentKeyvaluemaps,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/apigee\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := organizations.GetClientConfig(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeNetwork, err := compute.NewNetwork(ctx, \"apigee_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"apigee-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeRange, err := compute.NewGlobalAddress(ctx, \"apigee_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"apigee-range\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeVpcConnection, err := servicenetworking.NewConnection(ctx, \"apigee_vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tapigeeRange.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeOrg, err := apigee.NewOrganization(ctx, \"apigee_org\", \u0026apigee.OrganizationArgs{\n\t\t\tAnalyticsRegion: pulumi.String(\"us-central1\"),\n\t\t\tProjectId: pulumi.String(current.Project),\n\t\t\tAuthorizedNetwork: apigeeNetwork.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapigeeVpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeEnvironment, err := apigee.NewEnvironment(ctx, \"apigee_environment\", \u0026apigee.EnvironmentArgs{\n\t\t\tOrgId: apigeeOrg.ID(),\n\t\t\tName: pulumi.String(\"tf-test-env\"),\n\t\t\tDescription: pulumi.String(\"Apigee Environment\"),\n\t\t\tDisplayName: pulumi.String(\"Apigee Environment\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeInstance, err := apigee.NewInstance(ctx, \"apigee_instance\", \u0026apigee.InstanceArgs{\n\t\t\tName: pulumi.String(\"tf-test-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tOrgId: apigeeOrg.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeInstanceAttachment, err := apigee.NewInstanceAttachment(ctx, \"apigee_instance_attachment\", \u0026apigee.InstanceAttachmentArgs{\n\t\t\tInstanceId: apigeeInstance.ID(),\n\t\t\tEnvironment: apigeeEnvironment.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeEnvironmentKeyvaluemaps, err := apigee.NewEnvironmentKeyvaluemaps(ctx, \"apigee_environment_keyvaluemaps\", \u0026apigee.EnvironmentKeyvaluemapsArgs{\n\t\t\tEnvId: pulumi.Any(createApigeeEnvironment.Id),\n\t\t\tName: pulumi.String(\"tf-test-env-kvms\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapigeeOrg,\n\t\t\tapigeeEnvironment,\n\t\t\tapigeeInstance,\n\t\t\tapigeeInstanceAttachment,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigee.NewEnvironmentKeyvaluemapsEntries(ctx, \"apigee_environment_keyvaluemaps_entries\", \u0026apigee.EnvironmentKeyvaluemapsEntriesArgs{\n\t\t\tEnvKeyvaluemapId: apigeeEnvironmentKeyvaluemaps.ID(),\n\t\t\tName: pulumi.String(\"testName\"),\n\t\t\tValue: pulumi.String(\"testValue\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapigeeOrg,\n\t\t\tapigeeEnvironment,\n\t\t\tapigeeInstance,\n\t\t\tapigeeInstanceAttachment,\n\t\t\tapigeeEnvironmentKeyvaluemaps,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.apigee.Organization;\nimport com.pulumi.gcp.apigee.OrganizationArgs;\nimport com.pulumi.gcp.apigee.Environment;\nimport com.pulumi.gcp.apigee.EnvironmentArgs;\nimport com.pulumi.gcp.apigee.Instance;\nimport com.pulumi.gcp.apigee.InstanceArgs;\nimport com.pulumi.gcp.apigee.InstanceAttachment;\nimport com.pulumi.gcp.apigee.InstanceAttachmentArgs;\nimport com.pulumi.gcp.apigee.EnvironmentKeyvaluemaps;\nimport com.pulumi.gcp.apigee.EnvironmentKeyvaluemapsArgs;\nimport com.pulumi.gcp.apigee.EnvironmentKeyvaluemapsEntries;\nimport com.pulumi.gcp.apigee.EnvironmentKeyvaluemapsEntriesArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = OrganizationsFunctions.getClientConfig();\n\n var apigeeNetwork = new Network(\"apigeeNetwork\", NetworkArgs.builder()\n .name(\"apigee-network\")\n .build());\n\n var apigeeRange = new GlobalAddress(\"apigeeRange\", GlobalAddressArgs.builder()\n .name(\"apigee-range\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(apigeeNetwork.id())\n .build());\n\n var apigeeVpcConnection = new Connection(\"apigeeVpcConnection\", ConnectionArgs.builder()\n .network(apigeeNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(apigeeRange.name())\n .build());\n\n var apigeeOrg = new Organization(\"apigeeOrg\", OrganizationArgs.builder()\n .analyticsRegion(\"us-central1\")\n .projectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .authorizedNetwork(apigeeNetwork.id())\n .build(), CustomResourceOptions.builder()\n .dependsOn(apigeeVpcConnection)\n .build());\n\n var apigeeEnvironment = new Environment(\"apigeeEnvironment\", EnvironmentArgs.builder()\n .orgId(apigeeOrg.id())\n .name(\"tf-test-env\")\n .description(\"Apigee Environment\")\n .displayName(\"Apigee Environment\")\n .build());\n\n var apigeeInstance = new Instance(\"apigeeInstance\", InstanceArgs.builder()\n .name(\"tf-test-instance\")\n .location(\"us-central1\")\n .orgId(apigeeOrg.id())\n .build());\n\n var apigeeInstanceAttachment = new InstanceAttachment(\"apigeeInstanceAttachment\", InstanceAttachmentArgs.builder()\n .instanceId(apigeeInstance.id())\n .environment(apigeeEnvironment.name())\n .build());\n\n var apigeeEnvironmentKeyvaluemaps = new EnvironmentKeyvaluemaps(\"apigeeEnvironmentKeyvaluemaps\", EnvironmentKeyvaluemapsArgs.builder()\n .envId(createApigeeEnvironment.id())\n .name(\"tf-test-env-kvms\")\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n apigeeOrg,\n apigeeEnvironment,\n apigeeInstance,\n apigeeInstanceAttachment)\n .build());\n\n var apigeeEnvironmentKeyvaluemapsEntries = new EnvironmentKeyvaluemapsEntries(\"apigeeEnvironmentKeyvaluemapsEntries\", EnvironmentKeyvaluemapsEntriesArgs.builder()\n .envKeyvaluemapId(apigeeEnvironmentKeyvaluemaps.id())\n .name(\"testName\")\n .value(\"testValue\")\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n apigeeOrg,\n apigeeEnvironment,\n apigeeInstance,\n apigeeInstanceAttachment,\n apigeeEnvironmentKeyvaluemaps)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n apigeeNetwork:\n type: gcp:compute:Network\n name: apigee_network\n properties:\n name: apigee-network\n apigeeRange:\n type: gcp:compute:GlobalAddress\n name: apigee_range\n properties:\n name: apigee-range\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${apigeeNetwork.id}\n apigeeVpcConnection:\n type: gcp:servicenetworking:Connection\n name: apigee_vpc_connection\n properties:\n network: ${apigeeNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${apigeeRange.name}\n apigeeOrg:\n type: gcp:apigee:Organization\n name: apigee_org\n properties:\n analyticsRegion: us-central1\n projectId: ${current.project}\n authorizedNetwork: ${apigeeNetwork.id}\n options:\n dependson:\n - ${apigeeVpcConnection}\n apigeeEnvironment:\n type: gcp:apigee:Environment\n name: apigee_environment\n properties:\n orgId: ${apigeeOrg.id}\n name: tf-test-env\n description: Apigee Environment\n displayName: Apigee Environment\n apigeeInstance:\n type: gcp:apigee:Instance\n name: apigee_instance\n properties:\n name: tf-test-instance\n location: us-central1\n orgId: ${apigeeOrg.id}\n apigeeInstanceAttachment:\n type: gcp:apigee:InstanceAttachment\n name: apigee_instance_attachment\n properties:\n instanceId: ${apigeeInstance.id}\n environment: ${apigeeEnvironment.name}\n apigeeEnvironmentKeyvaluemaps:\n type: gcp:apigee:EnvironmentKeyvaluemaps\n name: apigee_environment_keyvaluemaps\n properties:\n envId: ${createApigeeEnvironment.id}\n name: tf-test-env-kvms\n options:\n dependson:\n - ${apigeeOrg}\n - ${apigeeEnvironment}\n - ${apigeeInstance}\n - ${apigeeInstanceAttachment}\n apigeeEnvironmentKeyvaluemapsEntries:\n type: gcp:apigee:EnvironmentKeyvaluemapsEntries\n name: apigee_environment_keyvaluemaps_entries\n properties:\n envKeyvaluemapId: ${apigeeEnvironmentKeyvaluemaps.id}\n name: testName\n value: testValue\n options:\n dependson:\n - ${apigeeOrg}\n - ${apigeeEnvironment}\n - ${apigeeInstance}\n - ${apigeeInstanceAttachment}\n - ${apigeeEnvironmentKeyvaluemaps}\nvariables:\n current:\n fn::invoke:\n Function: gcp:organizations:getClientConfig\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nEnvironmentKeyvaluemapsEntries can be imported using any of these accepted formats:\n\n* `{{env_keyvaluemap_id}}/entries/{{name}}`\n\n* `{{env_keyvaluemap_id}}/{{name}}`\n\nWhen using the `pulumi import` command, EnvironmentKeyvaluemapsEntries can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:apigee/environmentKeyvaluemapsEntries:EnvironmentKeyvaluemapsEntries default {{env_keyvaluemap_id}}/entries/{{name}}\n```\n\n```sh\n$ pulumi import gcp:apigee/environmentKeyvaluemapsEntries:EnvironmentKeyvaluemapsEntries default {{env_keyvaluemap_id}}/{{name}}\n```\n\n", + "description": "Creates key value entries in a key value map scoped to an environment.\n\n\nTo get more information about EnvironmentKeyvaluemapsEntries, see:\n\n* [API documentation](https://cloud.google.com/apigee/docs/reference/apis/apigee/rest/v1/organizations.keyvaluemaps.entries/create)\n* How-to Guides\n * [Using key value maps](https://cloud.google.com/apigee/docs/api-platform/cache/key-value-maps)\n\n## Example Usage\n\n### Apigee Environment Keyvaluemaps Entries Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst current = gcp.organizations.getClientConfig({});\nconst apigeeNetwork = new gcp.compute.Network(\"apigee_network\", {name: \"apigee-network\"});\nconst apigeeRange = new gcp.compute.GlobalAddress(\"apigee_range\", {\n name: \"apigee-range\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: apigeeNetwork.id,\n});\nconst apigeeVpcConnection = new gcp.servicenetworking.Connection(\"apigee_vpc_connection\", {\n network: apigeeNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [apigeeRange.name],\n});\nconst apigeeOrg = new gcp.apigee.Organization(\"apigee_org\", {\n analyticsRegion: \"us-central1\",\n projectId: current.then(current =\u003e current.project),\n authorizedNetwork: apigeeNetwork.id,\n}, {\n dependsOn: [apigeeVpcConnection],\n});\nconst apigeeEnvironment = new gcp.apigee.Environment(\"apigee_environment\", {\n orgId: apigeeOrg.id,\n name: \"tf-test-env\",\n description: \"Apigee Environment\",\n displayName: \"Apigee Environment\",\n});\nconst apigeeInstance = new gcp.apigee.Instance(\"apigee_instance\", {\n name: \"tf-test-instance\",\n location: \"us-central1\",\n orgId: apigeeOrg.id,\n});\nconst apigeeInstanceAttachment = new gcp.apigee.InstanceAttachment(\"apigee_instance_attachment\", {\n instanceId: apigeeInstance.id,\n environment: apigeeEnvironment.name,\n});\nconst apigeeEnvironmentKeyvaluemaps = new gcp.apigee.EnvironmentKeyvaluemaps(\"apigee_environment_keyvaluemaps\", {\n envId: createApigeeEnvironment.id,\n name: \"tf-test-env-kvms\",\n}, {\n dependsOn: [\n apigeeOrg,\n apigeeEnvironment,\n apigeeInstance,\n apigeeInstanceAttachment,\n ],\n});\nconst apigeeEnvironmentKeyvaluemapsEntries = new gcp.apigee.EnvironmentKeyvaluemapsEntries(\"apigee_environment_keyvaluemaps_entries\", {\n envKeyvaluemapId: apigeeEnvironmentKeyvaluemaps.id,\n name: \"testName\",\n value: \"testValue\",\n}, {\n dependsOn: [\n apigeeOrg,\n apigeeEnvironment,\n apigeeInstance,\n apigeeInstanceAttachment,\n apigeeEnvironmentKeyvaluemaps,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncurrent = gcp.organizations.get_client_config()\napigee_network = gcp.compute.Network(\"apigee_network\", name=\"apigee-network\")\napigee_range = gcp.compute.GlobalAddress(\"apigee_range\",\n name=\"apigee-range\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=apigee_network.id)\napigee_vpc_connection = gcp.servicenetworking.Connection(\"apigee_vpc_connection\",\n network=apigee_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[apigee_range.name])\napigee_org = gcp.apigee.Organization(\"apigee_org\",\n analytics_region=\"us-central1\",\n project_id=current.project,\n authorized_network=apigee_network.id,\n opts = pulumi.ResourceOptions(depends_on=[apigee_vpc_connection]))\napigee_environment = gcp.apigee.Environment(\"apigee_environment\",\n org_id=apigee_org.id,\n name=\"tf-test-env\",\n description=\"Apigee Environment\",\n display_name=\"Apigee Environment\")\napigee_instance = gcp.apigee.Instance(\"apigee_instance\",\n name=\"tf-test-instance\",\n location=\"us-central1\",\n org_id=apigee_org.id)\napigee_instance_attachment = gcp.apigee.InstanceAttachment(\"apigee_instance_attachment\",\n instance_id=apigee_instance.id,\n environment=apigee_environment.name)\napigee_environment_keyvaluemaps = gcp.apigee.EnvironmentKeyvaluemaps(\"apigee_environment_keyvaluemaps\",\n env_id=create_apigee_environment[\"id\"],\n name=\"tf-test-env-kvms\",\n opts = pulumi.ResourceOptions(depends_on=[\n apigee_org,\n apigee_environment,\n apigee_instance,\n apigee_instance_attachment,\n ]))\napigee_environment_keyvaluemaps_entries = gcp.apigee.EnvironmentKeyvaluemapsEntries(\"apigee_environment_keyvaluemaps_entries\",\n env_keyvaluemap_id=apigee_environment_keyvaluemaps.id,\n name=\"testName\",\n value=\"testValue\",\n opts = pulumi.ResourceOptions(depends_on=[\n apigee_org,\n apigee_environment,\n apigee_instance,\n apigee_instance_attachment,\n apigee_environment_keyvaluemaps,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Gcp.Organizations.GetClientConfig.Invoke();\n\n var apigeeNetwork = new Gcp.Compute.Network(\"apigee_network\", new()\n {\n Name = \"apigee-network\",\n });\n\n var apigeeRange = new Gcp.Compute.GlobalAddress(\"apigee_range\", new()\n {\n Name = \"apigee-range\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = apigeeNetwork.Id,\n });\n\n var apigeeVpcConnection = new Gcp.ServiceNetworking.Connection(\"apigee_vpc_connection\", new()\n {\n Network = apigeeNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n apigeeRange.Name,\n },\n });\n\n var apigeeOrg = new Gcp.Apigee.Organization(\"apigee_org\", new()\n {\n AnalyticsRegion = \"us-central1\",\n ProjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n AuthorizedNetwork = apigeeNetwork.Id,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n apigeeVpcConnection,\n },\n });\n\n var apigeeEnvironment = new Gcp.Apigee.Environment(\"apigee_environment\", new()\n {\n OrgId = apigeeOrg.Id,\n Name = \"tf-test-env\",\n Description = \"Apigee Environment\",\n DisplayName = \"Apigee Environment\",\n });\n\n var apigeeInstance = new Gcp.Apigee.Instance(\"apigee_instance\", new()\n {\n Name = \"tf-test-instance\",\n Location = \"us-central1\",\n OrgId = apigeeOrg.Id,\n });\n\n var apigeeInstanceAttachment = new Gcp.Apigee.InstanceAttachment(\"apigee_instance_attachment\", new()\n {\n InstanceId = apigeeInstance.Id,\n Environment = apigeeEnvironment.Name,\n });\n\n var apigeeEnvironmentKeyvaluemaps = new Gcp.Apigee.EnvironmentKeyvaluemaps(\"apigee_environment_keyvaluemaps\", new()\n {\n EnvId = createApigeeEnvironment.Id,\n Name = \"tf-test-env-kvms\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n apigeeOrg,\n apigeeEnvironment,\n apigeeInstance,\n apigeeInstanceAttachment,\n },\n });\n\n var apigeeEnvironmentKeyvaluemapsEntries = new Gcp.Apigee.EnvironmentKeyvaluemapsEntries(\"apigee_environment_keyvaluemaps_entries\", new()\n {\n EnvKeyvaluemapId = apigeeEnvironmentKeyvaluemaps.Id,\n Name = \"testName\",\n Value = \"testValue\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n apigeeOrg,\n apigeeEnvironment,\n apigeeInstance,\n apigeeInstanceAttachment,\n apigeeEnvironmentKeyvaluemaps,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/apigee\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := organizations.GetClientConfig(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeNetwork, err := compute.NewNetwork(ctx, \"apigee_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"apigee-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeRange, err := compute.NewGlobalAddress(ctx, \"apigee_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"apigee-range\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeVpcConnection, err := servicenetworking.NewConnection(ctx, \"apigee_vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tapigeeRange.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeOrg, err := apigee.NewOrganization(ctx, \"apigee_org\", \u0026apigee.OrganizationArgs{\n\t\t\tAnalyticsRegion: pulumi.String(\"us-central1\"),\n\t\t\tProjectId: pulumi.String(current.Project),\n\t\t\tAuthorizedNetwork: apigeeNetwork.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapigeeVpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeEnvironment, err := apigee.NewEnvironment(ctx, \"apigee_environment\", \u0026apigee.EnvironmentArgs{\n\t\t\tOrgId: apigeeOrg.ID(),\n\t\t\tName: pulumi.String(\"tf-test-env\"),\n\t\t\tDescription: pulumi.String(\"Apigee Environment\"),\n\t\t\tDisplayName: pulumi.String(\"Apigee Environment\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeInstance, err := apigee.NewInstance(ctx, \"apigee_instance\", \u0026apigee.InstanceArgs{\n\t\t\tName: pulumi.String(\"tf-test-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tOrgId: apigeeOrg.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeInstanceAttachment, err := apigee.NewInstanceAttachment(ctx, \"apigee_instance_attachment\", \u0026apigee.InstanceAttachmentArgs{\n\t\t\tInstanceId: apigeeInstance.ID(),\n\t\t\tEnvironment: apigeeEnvironment.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeEnvironmentKeyvaluemaps, err := apigee.NewEnvironmentKeyvaluemaps(ctx, \"apigee_environment_keyvaluemaps\", \u0026apigee.EnvironmentKeyvaluemapsArgs{\n\t\t\tEnvId: pulumi.Any(createApigeeEnvironment.Id),\n\t\t\tName: pulumi.String(\"tf-test-env-kvms\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapigeeOrg,\n\t\t\tapigeeEnvironment,\n\t\t\tapigeeInstance,\n\t\t\tapigeeInstanceAttachment,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigee.NewEnvironmentKeyvaluemapsEntries(ctx, \"apigee_environment_keyvaluemaps_entries\", \u0026apigee.EnvironmentKeyvaluemapsEntriesArgs{\n\t\t\tEnvKeyvaluemapId: apigeeEnvironmentKeyvaluemaps.ID(),\n\t\t\tName: pulumi.String(\"testName\"),\n\t\t\tValue: pulumi.String(\"testValue\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapigeeOrg,\n\t\t\tapigeeEnvironment,\n\t\t\tapigeeInstance,\n\t\t\tapigeeInstanceAttachment,\n\t\t\tapigeeEnvironmentKeyvaluemaps,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.apigee.Organization;\nimport com.pulumi.gcp.apigee.OrganizationArgs;\nimport com.pulumi.gcp.apigee.Environment;\nimport com.pulumi.gcp.apigee.EnvironmentArgs;\nimport com.pulumi.gcp.apigee.Instance;\nimport com.pulumi.gcp.apigee.InstanceArgs;\nimport com.pulumi.gcp.apigee.InstanceAttachment;\nimport com.pulumi.gcp.apigee.InstanceAttachmentArgs;\nimport com.pulumi.gcp.apigee.EnvironmentKeyvaluemaps;\nimport com.pulumi.gcp.apigee.EnvironmentKeyvaluemapsArgs;\nimport com.pulumi.gcp.apigee.EnvironmentKeyvaluemapsEntries;\nimport com.pulumi.gcp.apigee.EnvironmentKeyvaluemapsEntriesArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = OrganizationsFunctions.getClientConfig();\n\n var apigeeNetwork = new Network(\"apigeeNetwork\", NetworkArgs.builder()\n .name(\"apigee-network\")\n .build());\n\n var apigeeRange = new GlobalAddress(\"apigeeRange\", GlobalAddressArgs.builder()\n .name(\"apigee-range\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(apigeeNetwork.id())\n .build());\n\n var apigeeVpcConnection = new Connection(\"apigeeVpcConnection\", ConnectionArgs.builder()\n .network(apigeeNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(apigeeRange.name())\n .build());\n\n var apigeeOrg = new Organization(\"apigeeOrg\", OrganizationArgs.builder()\n .analyticsRegion(\"us-central1\")\n .projectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .authorizedNetwork(apigeeNetwork.id())\n .build(), CustomResourceOptions.builder()\n .dependsOn(apigeeVpcConnection)\n .build());\n\n var apigeeEnvironment = new Environment(\"apigeeEnvironment\", EnvironmentArgs.builder()\n .orgId(apigeeOrg.id())\n .name(\"tf-test-env\")\n .description(\"Apigee Environment\")\n .displayName(\"Apigee Environment\")\n .build());\n\n var apigeeInstance = new Instance(\"apigeeInstance\", InstanceArgs.builder()\n .name(\"tf-test-instance\")\n .location(\"us-central1\")\n .orgId(apigeeOrg.id())\n .build());\n\n var apigeeInstanceAttachment = new InstanceAttachment(\"apigeeInstanceAttachment\", InstanceAttachmentArgs.builder()\n .instanceId(apigeeInstance.id())\n .environment(apigeeEnvironment.name())\n .build());\n\n var apigeeEnvironmentKeyvaluemaps = new EnvironmentKeyvaluemaps(\"apigeeEnvironmentKeyvaluemaps\", EnvironmentKeyvaluemapsArgs.builder()\n .envId(createApigeeEnvironment.id())\n .name(\"tf-test-env-kvms\")\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n apigeeOrg,\n apigeeEnvironment,\n apigeeInstance,\n apigeeInstanceAttachment)\n .build());\n\n var apigeeEnvironmentKeyvaluemapsEntries = new EnvironmentKeyvaluemapsEntries(\"apigeeEnvironmentKeyvaluemapsEntries\", EnvironmentKeyvaluemapsEntriesArgs.builder()\n .envKeyvaluemapId(apigeeEnvironmentKeyvaluemaps.id())\n .name(\"testName\")\n .value(\"testValue\")\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n apigeeOrg,\n apigeeEnvironment,\n apigeeInstance,\n apigeeInstanceAttachment,\n apigeeEnvironmentKeyvaluemaps)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n apigeeNetwork:\n type: gcp:compute:Network\n name: apigee_network\n properties:\n name: apigee-network\n apigeeRange:\n type: gcp:compute:GlobalAddress\n name: apigee_range\n properties:\n name: apigee-range\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${apigeeNetwork.id}\n apigeeVpcConnection:\n type: gcp:servicenetworking:Connection\n name: apigee_vpc_connection\n properties:\n network: ${apigeeNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${apigeeRange.name}\n apigeeOrg:\n type: gcp:apigee:Organization\n name: apigee_org\n properties:\n analyticsRegion: us-central1\n projectId: ${current.project}\n authorizedNetwork: ${apigeeNetwork.id}\n options:\n dependson:\n - ${apigeeVpcConnection}\n apigeeEnvironment:\n type: gcp:apigee:Environment\n name: apigee_environment\n properties:\n orgId: ${apigeeOrg.id}\n name: tf-test-env\n description: Apigee Environment\n displayName: Apigee Environment\n apigeeInstance:\n type: gcp:apigee:Instance\n name: apigee_instance\n properties:\n name: tf-test-instance\n location: us-central1\n orgId: ${apigeeOrg.id}\n apigeeInstanceAttachment:\n type: gcp:apigee:InstanceAttachment\n name: apigee_instance_attachment\n properties:\n instanceId: ${apigeeInstance.id}\n environment: ${apigeeEnvironment.name}\n apigeeEnvironmentKeyvaluemaps:\n type: gcp:apigee:EnvironmentKeyvaluemaps\n name: apigee_environment_keyvaluemaps\n properties:\n envId: ${createApigeeEnvironment.id}\n name: tf-test-env-kvms\n options:\n dependson:\n - ${apigeeOrg}\n - ${apigeeEnvironment}\n - ${apigeeInstance}\n - ${apigeeInstanceAttachment}\n apigeeEnvironmentKeyvaluemapsEntries:\n type: gcp:apigee:EnvironmentKeyvaluemapsEntries\n name: apigee_environment_keyvaluemaps_entries\n properties:\n envKeyvaluemapId: ${apigeeEnvironmentKeyvaluemaps.id}\n name: testName\n value: testValue\n options:\n dependson:\n - ${apigeeOrg}\n - ${apigeeEnvironment}\n - ${apigeeInstance}\n - ${apigeeInstanceAttachment}\n - ${apigeeEnvironmentKeyvaluemaps}\nvariables:\n current:\n fn::invoke:\n Function: gcp:organizations:getClientConfig\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nEnvironmentKeyvaluemapsEntries can be imported using any of these accepted formats:\n\n* `{{env_keyvaluemap_id}}/entries/{{name}}`\n\n* `{{env_keyvaluemap_id}}/{{name}}`\n\nWhen using the `pulumi import` command, EnvironmentKeyvaluemapsEntries can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:apigee/environmentKeyvaluemapsEntries:EnvironmentKeyvaluemapsEntries default {{env_keyvaluemap_id}}/entries/{{name}}\n```\n\n```sh\n$ pulumi import gcp:apigee/environmentKeyvaluemapsEntries:EnvironmentKeyvaluemapsEntries default {{env_keyvaluemap_id}}/{{name}}\n```\n\n", "properties": { "envKeyvaluemapId": { "type": "string", @@ -120871,7 +120871,7 @@ } }, "gcp:apigee/instance:Instance": { - "description": "An `Instance` is the runtime dataplane in Apigee.\n\n\nTo get more information about Instance, see:\n\n* [API documentation](https://cloud.google.com/apigee/docs/reference/apis/apigee/rest/v1/organizations.instances/create)\n* How-to Guides\n * [Creating a runtime instance](https://cloud.google.com/apigee/docs/api-platform/get-started/create-instance)\n\n## Example Usage\n\n### Apigee Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst current = gcp.organizations.getClientConfig({});\nconst apigeeNetwork = new gcp.compute.Network(\"apigee_network\", {name: \"apigee-network\"});\nconst apigeeRange = new gcp.compute.GlobalAddress(\"apigee_range\", {\n name: \"apigee-range\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: apigeeNetwork.id,\n});\nconst apigeeVpcConnection = new gcp.servicenetworking.Connection(\"apigee_vpc_connection\", {\n network: apigeeNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [apigeeRange.name],\n});\nconst apigeeOrg = new gcp.apigee.Organization(\"apigee_org\", {\n analyticsRegion: \"us-central1\",\n projectId: current.then(current =\u003e current.project),\n authorizedNetwork: apigeeNetwork.id,\n}, {\n dependsOn: [apigeeVpcConnection],\n});\nconst apigeeInstance = new gcp.apigee.Instance(\"apigee_instance\", {\n name: \"my-instance-name\",\n location: \"us-central1\",\n orgId: apigeeOrg.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncurrent = gcp.organizations.get_client_config()\napigee_network = gcp.compute.Network(\"apigee_network\", name=\"apigee-network\")\napigee_range = gcp.compute.GlobalAddress(\"apigee_range\",\n name=\"apigee-range\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=apigee_network.id)\napigee_vpc_connection = gcp.servicenetworking.Connection(\"apigee_vpc_connection\",\n network=apigee_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[apigee_range.name])\napigee_org = gcp.apigee.Organization(\"apigee_org\",\n analytics_region=\"us-central1\",\n project_id=current.project,\n authorized_network=apigee_network.id,\n opts = pulumi.ResourceOptions(depends_on=[apigee_vpc_connection]))\napigee_instance = gcp.apigee.Instance(\"apigee_instance\",\n name=\"my-instance-name\",\n location=\"us-central1\",\n org_id=apigee_org.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Gcp.Organizations.GetClientConfig.Invoke();\n\n var apigeeNetwork = new Gcp.Compute.Network(\"apigee_network\", new()\n {\n Name = \"apigee-network\",\n });\n\n var apigeeRange = new Gcp.Compute.GlobalAddress(\"apigee_range\", new()\n {\n Name = \"apigee-range\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = apigeeNetwork.Id,\n });\n\n var apigeeVpcConnection = new Gcp.ServiceNetworking.Connection(\"apigee_vpc_connection\", new()\n {\n Network = apigeeNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n apigeeRange.Name,\n },\n });\n\n var apigeeOrg = new Gcp.Apigee.Organization(\"apigee_org\", new()\n {\n AnalyticsRegion = \"us-central1\",\n ProjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n AuthorizedNetwork = apigeeNetwork.Id,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n apigeeVpcConnection,\n },\n });\n\n var apigeeInstance = new Gcp.Apigee.Instance(\"apigee_instance\", new()\n {\n Name = \"my-instance-name\",\n Location = \"us-central1\",\n OrgId = apigeeOrg.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/apigee\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := organizations.GetClientConfig(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeNetwork, err := compute.NewNetwork(ctx, \"apigee_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"apigee-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeRange, err := compute.NewGlobalAddress(ctx, \"apigee_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"apigee-range\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeVpcConnection, err := servicenetworking.NewConnection(ctx, \"apigee_vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tapigeeRange.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeOrg, err := apigee.NewOrganization(ctx, \"apigee_org\", \u0026apigee.OrganizationArgs{\n\t\t\tAnalyticsRegion: pulumi.String(\"us-central1\"),\n\t\t\tProjectId: pulumi.String(current.Project),\n\t\t\tAuthorizedNetwork: apigeeNetwork.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapigeeVpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigee.NewInstance(ctx, \"apigee_instance\", \u0026apigee.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance-name\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tOrgId: apigeeOrg.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.apigee.Organization;\nimport com.pulumi.gcp.apigee.OrganizationArgs;\nimport com.pulumi.gcp.apigee.Instance;\nimport com.pulumi.gcp.apigee.InstanceArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = OrganizationsFunctions.getClientConfig();\n\n var apigeeNetwork = new Network(\"apigeeNetwork\", NetworkArgs.builder()\n .name(\"apigee-network\")\n .build());\n\n var apigeeRange = new GlobalAddress(\"apigeeRange\", GlobalAddressArgs.builder()\n .name(\"apigee-range\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(apigeeNetwork.id())\n .build());\n\n var apigeeVpcConnection = new Connection(\"apigeeVpcConnection\", ConnectionArgs.builder()\n .network(apigeeNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(apigeeRange.name())\n .build());\n\n var apigeeOrg = new Organization(\"apigeeOrg\", OrganizationArgs.builder()\n .analyticsRegion(\"us-central1\")\n .projectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .authorizedNetwork(apigeeNetwork.id())\n .build(), CustomResourceOptions.builder()\n .dependsOn(apigeeVpcConnection)\n .build());\n\n var apigeeInstance = new Instance(\"apigeeInstance\", InstanceArgs.builder()\n .name(\"my-instance-name\")\n .location(\"us-central1\")\n .orgId(apigeeOrg.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n apigeeNetwork:\n type: gcp:compute:Network\n name: apigee_network\n properties:\n name: apigee-network\n apigeeRange:\n type: gcp:compute:GlobalAddress\n name: apigee_range\n properties:\n name: apigee-range\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${apigeeNetwork.id}\n apigeeVpcConnection:\n type: gcp:servicenetworking:Connection\n name: apigee_vpc_connection\n properties:\n network: ${apigeeNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${apigeeRange.name}\n apigeeOrg:\n type: gcp:apigee:Organization\n name: apigee_org\n properties:\n analyticsRegion: us-central1\n projectId: ${current.project}\n authorizedNetwork: ${apigeeNetwork.id}\n options:\n dependson:\n - ${apigeeVpcConnection}\n apigeeInstance:\n type: gcp:apigee:Instance\n name: apigee_instance\n properties:\n name: my-instance-name\n location: us-central1\n orgId: ${apigeeOrg.id}\nvariables:\n current:\n fn::invoke:\n Function: gcp:organizations:getClientConfig\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Apigee Instance Cidr Range\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst current = gcp.organizations.getClientConfig({});\nconst apigeeNetwork = new gcp.compute.Network(\"apigee_network\", {name: \"apigee-network\"});\nconst apigeeRange = new gcp.compute.GlobalAddress(\"apigee_range\", {\n name: \"apigee-range\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 22,\n network: apigeeNetwork.id,\n});\nconst apigeeVpcConnection = new gcp.servicenetworking.Connection(\"apigee_vpc_connection\", {\n network: apigeeNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [apigeeRange.name],\n});\nconst apigeeOrg = new gcp.apigee.Organization(\"apigee_org\", {\n analyticsRegion: \"us-central1\",\n projectId: current.then(current =\u003e current.project),\n authorizedNetwork: apigeeNetwork.id,\n}, {\n dependsOn: [apigeeVpcConnection],\n});\nconst apigeeInstance = new gcp.apigee.Instance(\"apigee_instance\", {\n name: \"my-instance-name\",\n location: \"us-central1\",\n orgId: apigeeOrg.id,\n peeringCidrRange: \"SLASH_22\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncurrent = gcp.organizations.get_client_config()\napigee_network = gcp.compute.Network(\"apigee_network\", name=\"apigee-network\")\napigee_range = gcp.compute.GlobalAddress(\"apigee_range\",\n name=\"apigee-range\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=22,\n network=apigee_network.id)\napigee_vpc_connection = gcp.servicenetworking.Connection(\"apigee_vpc_connection\",\n network=apigee_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[apigee_range.name])\napigee_org = gcp.apigee.Organization(\"apigee_org\",\n analytics_region=\"us-central1\",\n project_id=current.project,\n authorized_network=apigee_network.id,\n opts = pulumi.ResourceOptions(depends_on=[apigee_vpc_connection]))\napigee_instance = gcp.apigee.Instance(\"apigee_instance\",\n name=\"my-instance-name\",\n location=\"us-central1\",\n org_id=apigee_org.id,\n peering_cidr_range=\"SLASH_22\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Gcp.Organizations.GetClientConfig.Invoke();\n\n var apigeeNetwork = new Gcp.Compute.Network(\"apigee_network\", new()\n {\n Name = \"apigee-network\",\n });\n\n var apigeeRange = new Gcp.Compute.GlobalAddress(\"apigee_range\", new()\n {\n Name = \"apigee-range\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 22,\n Network = apigeeNetwork.Id,\n });\n\n var apigeeVpcConnection = new Gcp.ServiceNetworking.Connection(\"apigee_vpc_connection\", new()\n {\n Network = apigeeNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n apigeeRange.Name,\n },\n });\n\n var apigeeOrg = new Gcp.Apigee.Organization(\"apigee_org\", new()\n {\n AnalyticsRegion = \"us-central1\",\n ProjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n AuthorizedNetwork = apigeeNetwork.Id,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n apigeeVpcConnection,\n },\n });\n\n var apigeeInstance = new Gcp.Apigee.Instance(\"apigee_instance\", new()\n {\n Name = \"my-instance-name\",\n Location = \"us-central1\",\n OrgId = apigeeOrg.Id,\n PeeringCidrRange = \"SLASH_22\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/apigee\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := organizations.GetClientConfig(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeNetwork, err := compute.NewNetwork(ctx, \"apigee_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"apigee-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeRange, err := compute.NewGlobalAddress(ctx, \"apigee_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"apigee-range\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(22),\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeVpcConnection, err := servicenetworking.NewConnection(ctx, \"apigee_vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tapigeeRange.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeOrg, err := apigee.NewOrganization(ctx, \"apigee_org\", \u0026apigee.OrganizationArgs{\n\t\t\tAnalyticsRegion: pulumi.String(\"us-central1\"),\n\t\t\tProjectId: pulumi.String(current.Project),\n\t\t\tAuthorizedNetwork: apigeeNetwork.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapigeeVpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigee.NewInstance(ctx, \"apigee_instance\", \u0026apigee.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance-name\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tOrgId: apigeeOrg.ID(),\n\t\t\tPeeringCidrRange: pulumi.String(\"SLASH_22\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.apigee.Organization;\nimport com.pulumi.gcp.apigee.OrganizationArgs;\nimport com.pulumi.gcp.apigee.Instance;\nimport com.pulumi.gcp.apigee.InstanceArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = OrganizationsFunctions.getClientConfig();\n\n var apigeeNetwork = new Network(\"apigeeNetwork\", NetworkArgs.builder()\n .name(\"apigee-network\")\n .build());\n\n var apigeeRange = new GlobalAddress(\"apigeeRange\", GlobalAddressArgs.builder()\n .name(\"apigee-range\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(22)\n .network(apigeeNetwork.id())\n .build());\n\n var apigeeVpcConnection = new Connection(\"apigeeVpcConnection\", ConnectionArgs.builder()\n .network(apigeeNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(apigeeRange.name())\n .build());\n\n var apigeeOrg = new Organization(\"apigeeOrg\", OrganizationArgs.builder()\n .analyticsRegion(\"us-central1\")\n .projectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .authorizedNetwork(apigeeNetwork.id())\n .build(), CustomResourceOptions.builder()\n .dependsOn(apigeeVpcConnection)\n .build());\n\n var apigeeInstance = new Instance(\"apigeeInstance\", InstanceArgs.builder()\n .name(\"my-instance-name\")\n .location(\"us-central1\")\n .orgId(apigeeOrg.id())\n .peeringCidrRange(\"SLASH_22\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n apigeeNetwork:\n type: gcp:compute:Network\n name: apigee_network\n properties:\n name: apigee-network\n apigeeRange:\n type: gcp:compute:GlobalAddress\n name: apigee_range\n properties:\n name: apigee-range\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 22\n network: ${apigeeNetwork.id}\n apigeeVpcConnection:\n type: gcp:servicenetworking:Connection\n name: apigee_vpc_connection\n properties:\n network: ${apigeeNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${apigeeRange.name}\n apigeeOrg:\n type: gcp:apigee:Organization\n name: apigee_org\n properties:\n analyticsRegion: us-central1\n projectId: ${current.project}\n authorizedNetwork: ${apigeeNetwork.id}\n options:\n dependson:\n - ${apigeeVpcConnection}\n apigeeInstance:\n type: gcp:apigee:Instance\n name: apigee_instance\n properties:\n name: my-instance-name\n location: us-central1\n orgId: ${apigeeOrg.id}\n peeringCidrRange: SLASH_22\nvariables:\n current:\n fn::invoke:\n Function: gcp:organizations:getClientConfig\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Apigee Instance Ip Range\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst current = gcp.organizations.getClientConfig({});\nconst apigeeNetwork = new gcp.compute.Network(\"apigee_network\", {name: \"apigee-network\"});\nconst apigeeRange = new gcp.compute.GlobalAddress(\"apigee_range\", {\n name: \"apigee-range\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 22,\n network: apigeeNetwork.id,\n});\nconst apigeeVpcConnection = new gcp.servicenetworking.Connection(\"apigee_vpc_connection\", {\n network: apigeeNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [apigeeRange.name],\n});\nconst apigeeOrg = new gcp.apigee.Organization(\"apigee_org\", {\n analyticsRegion: \"us-central1\",\n projectId: current.then(current =\u003e current.project),\n authorizedNetwork: apigeeNetwork.id,\n}, {\n dependsOn: [apigeeVpcConnection],\n});\nconst apigeeInstance = new gcp.apigee.Instance(\"apigee_instance\", {\n name: \"my-instance-name\",\n location: \"us-central1\",\n orgId: apigeeOrg.id,\n ipRange: \"10.87.8.0/22\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncurrent = gcp.organizations.get_client_config()\napigee_network = gcp.compute.Network(\"apigee_network\", name=\"apigee-network\")\napigee_range = gcp.compute.GlobalAddress(\"apigee_range\",\n name=\"apigee-range\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=22,\n network=apigee_network.id)\napigee_vpc_connection = gcp.servicenetworking.Connection(\"apigee_vpc_connection\",\n network=apigee_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[apigee_range.name])\napigee_org = gcp.apigee.Organization(\"apigee_org\",\n analytics_region=\"us-central1\",\n project_id=current.project,\n authorized_network=apigee_network.id,\n opts = pulumi.ResourceOptions(depends_on=[apigee_vpc_connection]))\napigee_instance = gcp.apigee.Instance(\"apigee_instance\",\n name=\"my-instance-name\",\n location=\"us-central1\",\n org_id=apigee_org.id,\n ip_range=\"10.87.8.0/22\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Gcp.Organizations.GetClientConfig.Invoke();\n\n var apigeeNetwork = new Gcp.Compute.Network(\"apigee_network\", new()\n {\n Name = \"apigee-network\",\n });\n\n var apigeeRange = new Gcp.Compute.GlobalAddress(\"apigee_range\", new()\n {\n Name = \"apigee-range\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 22,\n Network = apigeeNetwork.Id,\n });\n\n var apigeeVpcConnection = new Gcp.ServiceNetworking.Connection(\"apigee_vpc_connection\", new()\n {\n Network = apigeeNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n apigeeRange.Name,\n },\n });\n\n var apigeeOrg = new Gcp.Apigee.Organization(\"apigee_org\", new()\n {\n AnalyticsRegion = \"us-central1\",\n ProjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n AuthorizedNetwork = apigeeNetwork.Id,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n apigeeVpcConnection,\n },\n });\n\n var apigeeInstance = new Gcp.Apigee.Instance(\"apigee_instance\", new()\n {\n Name = \"my-instance-name\",\n Location = \"us-central1\",\n OrgId = apigeeOrg.Id,\n IpRange = \"10.87.8.0/22\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/apigee\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := organizations.GetClientConfig(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeNetwork, err := compute.NewNetwork(ctx, \"apigee_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"apigee-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeRange, err := compute.NewGlobalAddress(ctx, \"apigee_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"apigee-range\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(22),\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeVpcConnection, err := servicenetworking.NewConnection(ctx, \"apigee_vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tapigeeRange.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeOrg, err := apigee.NewOrganization(ctx, \"apigee_org\", \u0026apigee.OrganizationArgs{\n\t\t\tAnalyticsRegion: pulumi.String(\"us-central1\"),\n\t\t\tProjectId: pulumi.String(current.Project),\n\t\t\tAuthorizedNetwork: apigeeNetwork.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapigeeVpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigee.NewInstance(ctx, \"apigee_instance\", \u0026apigee.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance-name\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tOrgId: apigeeOrg.ID(),\n\t\t\tIpRange: pulumi.String(\"10.87.8.0/22\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.apigee.Organization;\nimport com.pulumi.gcp.apigee.OrganizationArgs;\nimport com.pulumi.gcp.apigee.Instance;\nimport com.pulumi.gcp.apigee.InstanceArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = OrganizationsFunctions.getClientConfig();\n\n var apigeeNetwork = new Network(\"apigeeNetwork\", NetworkArgs.builder()\n .name(\"apigee-network\")\n .build());\n\n var apigeeRange = new GlobalAddress(\"apigeeRange\", GlobalAddressArgs.builder()\n .name(\"apigee-range\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(22)\n .network(apigeeNetwork.id())\n .build());\n\n var apigeeVpcConnection = new Connection(\"apigeeVpcConnection\", ConnectionArgs.builder()\n .network(apigeeNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(apigeeRange.name())\n .build());\n\n var apigeeOrg = new Organization(\"apigeeOrg\", OrganizationArgs.builder()\n .analyticsRegion(\"us-central1\")\n .projectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .authorizedNetwork(apigeeNetwork.id())\n .build(), CustomResourceOptions.builder()\n .dependsOn(apigeeVpcConnection)\n .build());\n\n var apigeeInstance = new Instance(\"apigeeInstance\", InstanceArgs.builder()\n .name(\"my-instance-name\")\n .location(\"us-central1\")\n .orgId(apigeeOrg.id())\n .ipRange(\"10.87.8.0/22\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n apigeeNetwork:\n type: gcp:compute:Network\n name: apigee_network\n properties:\n name: apigee-network\n apigeeRange:\n type: gcp:compute:GlobalAddress\n name: apigee_range\n properties:\n name: apigee-range\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 22\n network: ${apigeeNetwork.id}\n apigeeVpcConnection:\n type: gcp:servicenetworking:Connection\n name: apigee_vpc_connection\n properties:\n network: ${apigeeNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${apigeeRange.name}\n apigeeOrg:\n type: gcp:apigee:Organization\n name: apigee_org\n properties:\n analyticsRegion: us-central1\n projectId: ${current.project}\n authorizedNetwork: ${apigeeNetwork.id}\n options:\n dependson:\n - ${apigeeVpcConnection}\n apigeeInstance:\n type: gcp:apigee:Instance\n name: apigee_instance\n properties:\n name: my-instance-name\n location: us-central1\n orgId: ${apigeeOrg.id}\n ipRange: 10.87.8.0/22\nvariables:\n current:\n fn::invoke:\n Function: gcp:organizations:getClientConfig\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Apigee Instance Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst current = gcp.organizations.getClientConfig({});\nconst apigeeNetwork = new gcp.compute.Network(\"apigee_network\", {name: \"apigee-network\"});\nconst apigeeRange = new gcp.compute.GlobalAddress(\"apigee_range\", {\n name: \"apigee-range\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: apigeeNetwork.id,\n});\nconst apigeeVpcConnection = new gcp.servicenetworking.Connection(\"apigee_vpc_connection\", {\n network: apigeeNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [apigeeRange.name],\n});\nconst apigeeKeyring = new gcp.kms.KeyRing(\"apigee_keyring\", {\n name: \"apigee-keyring\",\n location: \"us-central1\",\n});\nconst apigeeKey = new gcp.kms.CryptoKey(\"apigee_key\", {\n name: \"apigee-key\",\n keyRing: apigeeKeyring.id,\n});\nconst apigeeSa = new gcp.projects.ServiceIdentity(\"apigee_sa\", {\n project: project.projectId,\n service: apigee.service,\n});\nconst apigeeSaKeyuser = new gcp.kms.CryptoKeyIAMMember(\"apigee_sa_keyuser\", {\n cryptoKeyId: apigeeKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: apigeeSa.member,\n});\nconst apigeeOrg = new gcp.apigee.Organization(\"apigee_org\", {\n analyticsRegion: \"us-central1\",\n displayName: \"apigee-org\",\n description: \"Auto-provisioned Apigee Org.\",\n projectId: current.then(current =\u003e current.project),\n authorizedNetwork: apigeeNetwork.id,\n runtimeDatabaseEncryptionKeyName: apigeeKey.id,\n}, {\n dependsOn: [\n apigeeVpcConnection,\n apigeeSaKeyuser,\n ],\n});\nconst apigeeInstance = new gcp.apigee.Instance(\"apigee_instance\", {\n name: \"my-instance-name\",\n location: \"us-central1\",\n description: \"Auto-managed Apigee Runtime Instance\",\n displayName: \"my-instance-name\",\n orgId: apigeeOrg.id,\n diskEncryptionKeyName: apigeeKey.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncurrent = gcp.organizations.get_client_config()\napigee_network = gcp.compute.Network(\"apigee_network\", name=\"apigee-network\")\napigee_range = gcp.compute.GlobalAddress(\"apigee_range\",\n name=\"apigee-range\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=apigee_network.id)\napigee_vpc_connection = gcp.servicenetworking.Connection(\"apigee_vpc_connection\",\n network=apigee_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[apigee_range.name])\napigee_keyring = gcp.kms.KeyRing(\"apigee_keyring\",\n name=\"apigee-keyring\",\n location=\"us-central1\")\napigee_key = gcp.kms.CryptoKey(\"apigee_key\",\n name=\"apigee-key\",\n key_ring=apigee_keyring.id)\napigee_sa = gcp.projects.ServiceIdentity(\"apigee_sa\",\n project=project[\"projectId\"],\n service=apigee[\"service\"])\napigee_sa_keyuser = gcp.kms.CryptoKeyIAMMember(\"apigee_sa_keyuser\",\n crypto_key_id=apigee_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=apigee_sa.member)\napigee_org = gcp.apigee.Organization(\"apigee_org\",\n analytics_region=\"us-central1\",\n display_name=\"apigee-org\",\n description=\"Auto-provisioned Apigee Org.\",\n project_id=current.project,\n authorized_network=apigee_network.id,\n runtime_database_encryption_key_name=apigee_key.id,\n opts = pulumi.ResourceOptions(depends_on=[\n apigee_vpc_connection,\n apigee_sa_keyuser,\n ]))\napigee_instance = gcp.apigee.Instance(\"apigee_instance\",\n name=\"my-instance-name\",\n location=\"us-central1\",\n description=\"Auto-managed Apigee Runtime Instance\",\n display_name=\"my-instance-name\",\n org_id=apigee_org.id,\n disk_encryption_key_name=apigee_key.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Gcp.Organizations.GetClientConfig.Invoke();\n\n var apigeeNetwork = new Gcp.Compute.Network(\"apigee_network\", new()\n {\n Name = \"apigee-network\",\n });\n\n var apigeeRange = new Gcp.Compute.GlobalAddress(\"apigee_range\", new()\n {\n Name = \"apigee-range\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = apigeeNetwork.Id,\n });\n\n var apigeeVpcConnection = new Gcp.ServiceNetworking.Connection(\"apigee_vpc_connection\", new()\n {\n Network = apigeeNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n apigeeRange.Name,\n },\n });\n\n var apigeeKeyring = new Gcp.Kms.KeyRing(\"apigee_keyring\", new()\n {\n Name = \"apigee-keyring\",\n Location = \"us-central1\",\n });\n\n var apigeeKey = new Gcp.Kms.CryptoKey(\"apigee_key\", new()\n {\n Name = \"apigee-key\",\n KeyRing = apigeeKeyring.Id,\n });\n\n var apigeeSa = new Gcp.Projects.ServiceIdentity(\"apigee_sa\", new()\n {\n Project = project.ProjectId,\n Service = apigee.Service,\n });\n\n var apigeeSaKeyuser = new Gcp.Kms.CryptoKeyIAMMember(\"apigee_sa_keyuser\", new()\n {\n CryptoKeyId = apigeeKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = apigeeSa.Member,\n });\n\n var apigeeOrg = new Gcp.Apigee.Organization(\"apigee_org\", new()\n {\n AnalyticsRegion = \"us-central1\",\n DisplayName = \"apigee-org\",\n Description = \"Auto-provisioned Apigee Org.\",\n ProjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n AuthorizedNetwork = apigeeNetwork.Id,\n RuntimeDatabaseEncryptionKeyName = apigeeKey.Id,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n apigeeVpcConnection,\n apigeeSaKeyuser,\n },\n });\n\n var apigeeInstance = new Gcp.Apigee.Instance(\"apigee_instance\", new()\n {\n Name = \"my-instance-name\",\n Location = \"us-central1\",\n Description = \"Auto-managed Apigee Runtime Instance\",\n DisplayName = \"my-instance-name\",\n OrgId = apigeeOrg.Id,\n DiskEncryptionKeyName = apigeeKey.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/apigee\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := organizations.GetClientConfig(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeNetwork, err := compute.NewNetwork(ctx, \"apigee_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"apigee-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeRange, err := compute.NewGlobalAddress(ctx, \"apigee_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"apigee-range\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeVpcConnection, err := servicenetworking.NewConnection(ctx, \"apigee_vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tapigeeRange.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeKeyring, err := kms.NewKeyRing(ctx, \"apigee_keyring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"apigee-keyring\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeKey, err := kms.NewCryptoKey(ctx, \"apigee_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"apigee-key\"),\n\t\t\tKeyRing: apigeeKeyring.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeSa, err := projects.NewServiceIdentity(ctx, \"apigee_sa\", \u0026projects.ServiceIdentityArgs{\n\t\t\tProject: pulumi.Any(project.ProjectId),\n\t\t\tService: pulumi.Any(apigee.Service),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeSaKeyuser, err := kms.NewCryptoKeyIAMMember(ctx, \"apigee_sa_keyuser\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: apigeeKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: apigeeSa.Member,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeOrg, err := apigee.NewOrganization(ctx, \"apigee_org\", \u0026apigee.OrganizationArgs{\n\t\t\tAnalyticsRegion: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"apigee-org\"),\n\t\t\tDescription: pulumi.String(\"Auto-provisioned Apigee Org.\"),\n\t\t\tProjectId: pulumi.String(current.Project),\n\t\t\tAuthorizedNetwork: apigeeNetwork.ID(),\n\t\t\tRuntimeDatabaseEncryptionKeyName: apigeeKey.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapigeeVpcConnection,\n\t\t\tapigeeSaKeyuser,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigee.NewInstance(ctx, \"apigee_instance\", \u0026apigee.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance-name\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"Auto-managed Apigee Runtime Instance\"),\n\t\t\tDisplayName: pulumi.String(\"my-instance-name\"),\n\t\t\tOrgId: apigeeOrg.ID(),\n\t\t\tDiskEncryptionKeyName: apigeeKey.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.projects.ServiceIdentity;\nimport com.pulumi.gcp.projects.ServiceIdentityArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.apigee.Organization;\nimport com.pulumi.gcp.apigee.OrganizationArgs;\nimport com.pulumi.gcp.apigee.Instance;\nimport com.pulumi.gcp.apigee.InstanceArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = OrganizationsFunctions.getClientConfig();\n\n var apigeeNetwork = new Network(\"apigeeNetwork\", NetworkArgs.builder()\n .name(\"apigee-network\")\n .build());\n\n var apigeeRange = new GlobalAddress(\"apigeeRange\", GlobalAddressArgs.builder()\n .name(\"apigee-range\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(apigeeNetwork.id())\n .build());\n\n var apigeeVpcConnection = new Connection(\"apigeeVpcConnection\", ConnectionArgs.builder()\n .network(apigeeNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(apigeeRange.name())\n .build());\n\n var apigeeKeyring = new KeyRing(\"apigeeKeyring\", KeyRingArgs.builder()\n .name(\"apigee-keyring\")\n .location(\"us-central1\")\n .build());\n\n var apigeeKey = new CryptoKey(\"apigeeKey\", CryptoKeyArgs.builder()\n .name(\"apigee-key\")\n .keyRing(apigeeKeyring.id())\n .build());\n\n var apigeeSa = new ServiceIdentity(\"apigeeSa\", ServiceIdentityArgs.builder()\n .project(project.projectId())\n .service(apigee.service())\n .build());\n\n var apigeeSaKeyuser = new CryptoKeyIAMMember(\"apigeeSaKeyuser\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(apigeeKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(apigeeSa.member())\n .build());\n\n var apigeeOrg = new Organization(\"apigeeOrg\", OrganizationArgs.builder()\n .analyticsRegion(\"us-central1\")\n .displayName(\"apigee-org\")\n .description(\"Auto-provisioned Apigee Org.\")\n .projectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .authorizedNetwork(apigeeNetwork.id())\n .runtimeDatabaseEncryptionKeyName(apigeeKey.id())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n apigeeVpcConnection,\n apigeeSaKeyuser)\n .build());\n\n var apigeeInstance = new Instance(\"apigeeInstance\", InstanceArgs.builder()\n .name(\"my-instance-name\")\n .location(\"us-central1\")\n .description(\"Auto-managed Apigee Runtime Instance\")\n .displayName(\"my-instance-name\")\n .orgId(apigeeOrg.id())\n .diskEncryptionKeyName(apigeeKey.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n apigeeNetwork:\n type: gcp:compute:Network\n name: apigee_network\n properties:\n name: apigee-network\n apigeeRange:\n type: gcp:compute:GlobalAddress\n name: apigee_range\n properties:\n name: apigee-range\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${apigeeNetwork.id}\n apigeeVpcConnection:\n type: gcp:servicenetworking:Connection\n name: apigee_vpc_connection\n properties:\n network: ${apigeeNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${apigeeRange.name}\n apigeeKeyring:\n type: gcp:kms:KeyRing\n name: apigee_keyring\n properties:\n name: apigee-keyring\n location: us-central1\n apigeeKey:\n type: gcp:kms:CryptoKey\n name: apigee_key\n properties:\n name: apigee-key\n keyRing: ${apigeeKeyring.id}\n apigeeSa:\n type: gcp:projects:ServiceIdentity\n name: apigee_sa\n properties:\n project: ${project.projectId}\n service: ${apigee.service}\n apigeeSaKeyuser:\n type: gcp:kms:CryptoKeyIAMMember\n name: apigee_sa_keyuser\n properties:\n cryptoKeyId: ${apigeeKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: ${apigeeSa.member}\n apigeeOrg:\n type: gcp:apigee:Organization\n name: apigee_org\n properties:\n analyticsRegion: us-central1\n displayName: apigee-org\n description: Auto-provisioned Apigee Org.\n projectId: ${current.project}\n authorizedNetwork: ${apigeeNetwork.id}\n runtimeDatabaseEncryptionKeyName: ${apigeeKey.id}\n options:\n dependson:\n - ${apigeeVpcConnection}\n - ${apigeeSaKeyuser}\n apigeeInstance:\n type: gcp:apigee:Instance\n name: apigee_instance\n properties:\n name: my-instance-name\n location: us-central1\n description: Auto-managed Apigee Runtime Instance\n displayName: my-instance-name\n orgId: ${apigeeOrg.id}\n diskEncryptionKeyName: ${apigeeKey.id}\nvariables:\n current:\n fn::invoke:\n Function: gcp:organizations:getClientConfig\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `{{org_id}}/instances/{{name}}`\n\n* `{{org_id}}/{{name}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:apigee/instance:Instance default {{org_id}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:apigee/instance:Instance default {{org_id}}/{{name}}\n```\n\n", + "description": "An `Instance` is the runtime dataplane in Apigee.\n\n\nTo get more information about Instance, see:\n\n* [API documentation](https://cloud.google.com/apigee/docs/reference/apis/apigee/rest/v1/organizations.instances/create)\n* How-to Guides\n * [Creating a runtime instance](https://cloud.google.com/apigee/docs/api-platform/get-started/create-instance)\n\n## Example Usage\n\n### Apigee Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst current = gcp.organizations.getClientConfig({});\nconst apigeeNetwork = new gcp.compute.Network(\"apigee_network\", {name: \"apigee-network\"});\nconst apigeeRange = new gcp.compute.GlobalAddress(\"apigee_range\", {\n name: \"apigee-range\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: apigeeNetwork.id,\n});\nconst apigeeVpcConnection = new gcp.servicenetworking.Connection(\"apigee_vpc_connection\", {\n network: apigeeNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [apigeeRange.name],\n});\nconst apigeeOrg = new gcp.apigee.Organization(\"apigee_org\", {\n analyticsRegion: \"us-central1\",\n projectId: current.then(current =\u003e current.project),\n authorizedNetwork: apigeeNetwork.id,\n}, {\n dependsOn: [apigeeVpcConnection],\n});\nconst apigeeInstance = new gcp.apigee.Instance(\"apigee_instance\", {\n name: \"my-instance-name\",\n location: \"us-central1\",\n orgId: apigeeOrg.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncurrent = gcp.organizations.get_client_config()\napigee_network = gcp.compute.Network(\"apigee_network\", name=\"apigee-network\")\napigee_range = gcp.compute.GlobalAddress(\"apigee_range\",\n name=\"apigee-range\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=apigee_network.id)\napigee_vpc_connection = gcp.servicenetworking.Connection(\"apigee_vpc_connection\",\n network=apigee_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[apigee_range.name])\napigee_org = gcp.apigee.Organization(\"apigee_org\",\n analytics_region=\"us-central1\",\n project_id=current.project,\n authorized_network=apigee_network.id,\n opts = pulumi.ResourceOptions(depends_on=[apigee_vpc_connection]))\napigee_instance = gcp.apigee.Instance(\"apigee_instance\",\n name=\"my-instance-name\",\n location=\"us-central1\",\n org_id=apigee_org.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Gcp.Organizations.GetClientConfig.Invoke();\n\n var apigeeNetwork = new Gcp.Compute.Network(\"apigee_network\", new()\n {\n Name = \"apigee-network\",\n });\n\n var apigeeRange = new Gcp.Compute.GlobalAddress(\"apigee_range\", new()\n {\n Name = \"apigee-range\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = apigeeNetwork.Id,\n });\n\n var apigeeVpcConnection = new Gcp.ServiceNetworking.Connection(\"apigee_vpc_connection\", new()\n {\n Network = apigeeNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n apigeeRange.Name,\n },\n });\n\n var apigeeOrg = new Gcp.Apigee.Organization(\"apigee_org\", new()\n {\n AnalyticsRegion = \"us-central1\",\n ProjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n AuthorizedNetwork = apigeeNetwork.Id,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n apigeeVpcConnection,\n },\n });\n\n var apigeeInstance = new Gcp.Apigee.Instance(\"apigee_instance\", new()\n {\n Name = \"my-instance-name\",\n Location = \"us-central1\",\n OrgId = apigeeOrg.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/apigee\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := organizations.GetClientConfig(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeNetwork, err := compute.NewNetwork(ctx, \"apigee_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"apigee-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeRange, err := compute.NewGlobalAddress(ctx, \"apigee_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"apigee-range\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeVpcConnection, err := servicenetworking.NewConnection(ctx, \"apigee_vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tapigeeRange.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeOrg, err := apigee.NewOrganization(ctx, \"apigee_org\", \u0026apigee.OrganizationArgs{\n\t\t\tAnalyticsRegion: pulumi.String(\"us-central1\"),\n\t\t\tProjectId: pulumi.String(current.Project),\n\t\t\tAuthorizedNetwork: apigeeNetwork.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapigeeVpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigee.NewInstance(ctx, \"apigee_instance\", \u0026apigee.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance-name\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tOrgId: apigeeOrg.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.apigee.Organization;\nimport com.pulumi.gcp.apigee.OrganizationArgs;\nimport com.pulumi.gcp.apigee.Instance;\nimport com.pulumi.gcp.apigee.InstanceArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = OrganizationsFunctions.getClientConfig();\n\n var apigeeNetwork = new Network(\"apigeeNetwork\", NetworkArgs.builder()\n .name(\"apigee-network\")\n .build());\n\n var apigeeRange = new GlobalAddress(\"apigeeRange\", GlobalAddressArgs.builder()\n .name(\"apigee-range\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(apigeeNetwork.id())\n .build());\n\n var apigeeVpcConnection = new Connection(\"apigeeVpcConnection\", ConnectionArgs.builder()\n .network(apigeeNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(apigeeRange.name())\n .build());\n\n var apigeeOrg = new Organization(\"apigeeOrg\", OrganizationArgs.builder()\n .analyticsRegion(\"us-central1\")\n .projectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .authorizedNetwork(apigeeNetwork.id())\n .build(), CustomResourceOptions.builder()\n .dependsOn(apigeeVpcConnection)\n .build());\n\n var apigeeInstance = new Instance(\"apigeeInstance\", InstanceArgs.builder()\n .name(\"my-instance-name\")\n .location(\"us-central1\")\n .orgId(apigeeOrg.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n apigeeNetwork:\n type: gcp:compute:Network\n name: apigee_network\n properties:\n name: apigee-network\n apigeeRange:\n type: gcp:compute:GlobalAddress\n name: apigee_range\n properties:\n name: apigee-range\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${apigeeNetwork.id}\n apigeeVpcConnection:\n type: gcp:servicenetworking:Connection\n name: apigee_vpc_connection\n properties:\n network: ${apigeeNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${apigeeRange.name}\n apigeeOrg:\n type: gcp:apigee:Organization\n name: apigee_org\n properties:\n analyticsRegion: us-central1\n projectId: ${current.project}\n authorizedNetwork: ${apigeeNetwork.id}\n options:\n dependson:\n - ${apigeeVpcConnection}\n apigeeInstance:\n type: gcp:apigee:Instance\n name: apigee_instance\n properties:\n name: my-instance-name\n location: us-central1\n orgId: ${apigeeOrg.id}\nvariables:\n current:\n fn::invoke:\n Function: gcp:organizations:getClientConfig\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Apigee Instance Cidr Range\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst current = gcp.organizations.getClientConfig({});\nconst apigeeNetwork = new gcp.compute.Network(\"apigee_network\", {name: \"apigee-network\"});\nconst apigeeRange = new gcp.compute.GlobalAddress(\"apigee_range\", {\n name: \"apigee-range\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 22,\n network: apigeeNetwork.id,\n});\nconst apigeeVpcConnection = new gcp.servicenetworking.Connection(\"apigee_vpc_connection\", {\n network: apigeeNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [apigeeRange.name],\n});\nconst apigeeOrg = new gcp.apigee.Organization(\"apigee_org\", {\n analyticsRegion: \"us-central1\",\n projectId: current.then(current =\u003e current.project),\n authorizedNetwork: apigeeNetwork.id,\n}, {\n dependsOn: [apigeeVpcConnection],\n});\nconst apigeeInstance = new gcp.apigee.Instance(\"apigee_instance\", {\n name: \"my-instance-name\",\n location: \"us-central1\",\n orgId: apigeeOrg.id,\n peeringCidrRange: \"SLASH_22\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncurrent = gcp.organizations.get_client_config()\napigee_network = gcp.compute.Network(\"apigee_network\", name=\"apigee-network\")\napigee_range = gcp.compute.GlobalAddress(\"apigee_range\",\n name=\"apigee-range\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=22,\n network=apigee_network.id)\napigee_vpc_connection = gcp.servicenetworking.Connection(\"apigee_vpc_connection\",\n network=apigee_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[apigee_range.name])\napigee_org = gcp.apigee.Organization(\"apigee_org\",\n analytics_region=\"us-central1\",\n project_id=current.project,\n authorized_network=apigee_network.id,\n opts = pulumi.ResourceOptions(depends_on=[apigee_vpc_connection]))\napigee_instance = gcp.apigee.Instance(\"apigee_instance\",\n name=\"my-instance-name\",\n location=\"us-central1\",\n org_id=apigee_org.id,\n peering_cidr_range=\"SLASH_22\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Gcp.Organizations.GetClientConfig.Invoke();\n\n var apigeeNetwork = new Gcp.Compute.Network(\"apigee_network\", new()\n {\n Name = \"apigee-network\",\n });\n\n var apigeeRange = new Gcp.Compute.GlobalAddress(\"apigee_range\", new()\n {\n Name = \"apigee-range\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 22,\n Network = apigeeNetwork.Id,\n });\n\n var apigeeVpcConnection = new Gcp.ServiceNetworking.Connection(\"apigee_vpc_connection\", new()\n {\n Network = apigeeNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n apigeeRange.Name,\n },\n });\n\n var apigeeOrg = new Gcp.Apigee.Organization(\"apigee_org\", new()\n {\n AnalyticsRegion = \"us-central1\",\n ProjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n AuthorizedNetwork = apigeeNetwork.Id,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n apigeeVpcConnection,\n },\n });\n\n var apigeeInstance = new Gcp.Apigee.Instance(\"apigee_instance\", new()\n {\n Name = \"my-instance-name\",\n Location = \"us-central1\",\n OrgId = apigeeOrg.Id,\n PeeringCidrRange = \"SLASH_22\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/apigee\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := organizations.GetClientConfig(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeNetwork, err := compute.NewNetwork(ctx, \"apigee_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"apigee-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeRange, err := compute.NewGlobalAddress(ctx, \"apigee_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"apigee-range\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(22),\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeVpcConnection, err := servicenetworking.NewConnection(ctx, \"apigee_vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tapigeeRange.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeOrg, err := apigee.NewOrganization(ctx, \"apigee_org\", \u0026apigee.OrganizationArgs{\n\t\t\tAnalyticsRegion: pulumi.String(\"us-central1\"),\n\t\t\tProjectId: pulumi.String(current.Project),\n\t\t\tAuthorizedNetwork: apigeeNetwork.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapigeeVpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigee.NewInstance(ctx, \"apigee_instance\", \u0026apigee.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance-name\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tOrgId: apigeeOrg.ID(),\n\t\t\tPeeringCidrRange: pulumi.String(\"SLASH_22\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.apigee.Organization;\nimport com.pulumi.gcp.apigee.OrganizationArgs;\nimport com.pulumi.gcp.apigee.Instance;\nimport com.pulumi.gcp.apigee.InstanceArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = OrganizationsFunctions.getClientConfig();\n\n var apigeeNetwork = new Network(\"apigeeNetwork\", NetworkArgs.builder()\n .name(\"apigee-network\")\n .build());\n\n var apigeeRange = new GlobalAddress(\"apigeeRange\", GlobalAddressArgs.builder()\n .name(\"apigee-range\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(22)\n .network(apigeeNetwork.id())\n .build());\n\n var apigeeVpcConnection = new Connection(\"apigeeVpcConnection\", ConnectionArgs.builder()\n .network(apigeeNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(apigeeRange.name())\n .build());\n\n var apigeeOrg = new Organization(\"apigeeOrg\", OrganizationArgs.builder()\n .analyticsRegion(\"us-central1\")\n .projectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .authorizedNetwork(apigeeNetwork.id())\n .build(), CustomResourceOptions.builder()\n .dependsOn(apigeeVpcConnection)\n .build());\n\n var apigeeInstance = new Instance(\"apigeeInstance\", InstanceArgs.builder()\n .name(\"my-instance-name\")\n .location(\"us-central1\")\n .orgId(apigeeOrg.id())\n .peeringCidrRange(\"SLASH_22\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n apigeeNetwork:\n type: gcp:compute:Network\n name: apigee_network\n properties:\n name: apigee-network\n apigeeRange:\n type: gcp:compute:GlobalAddress\n name: apigee_range\n properties:\n name: apigee-range\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 22\n network: ${apigeeNetwork.id}\n apigeeVpcConnection:\n type: gcp:servicenetworking:Connection\n name: apigee_vpc_connection\n properties:\n network: ${apigeeNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${apigeeRange.name}\n apigeeOrg:\n type: gcp:apigee:Organization\n name: apigee_org\n properties:\n analyticsRegion: us-central1\n projectId: ${current.project}\n authorizedNetwork: ${apigeeNetwork.id}\n options:\n dependson:\n - ${apigeeVpcConnection}\n apigeeInstance:\n type: gcp:apigee:Instance\n name: apigee_instance\n properties:\n name: my-instance-name\n location: us-central1\n orgId: ${apigeeOrg.id}\n peeringCidrRange: SLASH_22\nvariables:\n current:\n fn::invoke:\n Function: gcp:organizations:getClientConfig\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Apigee Instance Ip Range\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst current = gcp.organizations.getClientConfig({});\nconst apigeeNetwork = new gcp.compute.Network(\"apigee_network\", {name: \"apigee-network\"});\nconst apigeeRange = new gcp.compute.GlobalAddress(\"apigee_range\", {\n name: \"apigee-range\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 22,\n network: apigeeNetwork.id,\n});\nconst apigeeVpcConnection = new gcp.servicenetworking.Connection(\"apigee_vpc_connection\", {\n network: apigeeNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [apigeeRange.name],\n});\nconst apigeeOrg = new gcp.apigee.Organization(\"apigee_org\", {\n analyticsRegion: \"us-central1\",\n projectId: current.then(current =\u003e current.project),\n authorizedNetwork: apigeeNetwork.id,\n}, {\n dependsOn: [apigeeVpcConnection],\n});\nconst apigeeInstance = new gcp.apigee.Instance(\"apigee_instance\", {\n name: \"my-instance-name\",\n location: \"us-central1\",\n orgId: apigeeOrg.id,\n ipRange: \"10.87.8.0/22\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncurrent = gcp.organizations.get_client_config()\napigee_network = gcp.compute.Network(\"apigee_network\", name=\"apigee-network\")\napigee_range = gcp.compute.GlobalAddress(\"apigee_range\",\n name=\"apigee-range\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=22,\n network=apigee_network.id)\napigee_vpc_connection = gcp.servicenetworking.Connection(\"apigee_vpc_connection\",\n network=apigee_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[apigee_range.name])\napigee_org = gcp.apigee.Organization(\"apigee_org\",\n analytics_region=\"us-central1\",\n project_id=current.project,\n authorized_network=apigee_network.id,\n opts = pulumi.ResourceOptions(depends_on=[apigee_vpc_connection]))\napigee_instance = gcp.apigee.Instance(\"apigee_instance\",\n name=\"my-instance-name\",\n location=\"us-central1\",\n org_id=apigee_org.id,\n ip_range=\"10.87.8.0/22\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Gcp.Organizations.GetClientConfig.Invoke();\n\n var apigeeNetwork = new Gcp.Compute.Network(\"apigee_network\", new()\n {\n Name = \"apigee-network\",\n });\n\n var apigeeRange = new Gcp.Compute.GlobalAddress(\"apigee_range\", new()\n {\n Name = \"apigee-range\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 22,\n Network = apigeeNetwork.Id,\n });\n\n var apigeeVpcConnection = new Gcp.ServiceNetworking.Connection(\"apigee_vpc_connection\", new()\n {\n Network = apigeeNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n apigeeRange.Name,\n },\n });\n\n var apigeeOrg = new Gcp.Apigee.Organization(\"apigee_org\", new()\n {\n AnalyticsRegion = \"us-central1\",\n ProjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n AuthorizedNetwork = apigeeNetwork.Id,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n apigeeVpcConnection,\n },\n });\n\n var apigeeInstance = new Gcp.Apigee.Instance(\"apigee_instance\", new()\n {\n Name = \"my-instance-name\",\n Location = \"us-central1\",\n OrgId = apigeeOrg.Id,\n IpRange = \"10.87.8.0/22\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/apigee\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := organizations.GetClientConfig(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeNetwork, err := compute.NewNetwork(ctx, \"apigee_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"apigee-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeRange, err := compute.NewGlobalAddress(ctx, \"apigee_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"apigee-range\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(22),\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeVpcConnection, err := servicenetworking.NewConnection(ctx, \"apigee_vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tapigeeRange.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeOrg, err := apigee.NewOrganization(ctx, \"apigee_org\", \u0026apigee.OrganizationArgs{\n\t\t\tAnalyticsRegion: pulumi.String(\"us-central1\"),\n\t\t\tProjectId: pulumi.String(current.Project),\n\t\t\tAuthorizedNetwork: apigeeNetwork.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapigeeVpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigee.NewInstance(ctx, \"apigee_instance\", \u0026apigee.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance-name\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tOrgId: apigeeOrg.ID(),\n\t\t\tIpRange: pulumi.String(\"10.87.8.0/22\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.apigee.Organization;\nimport com.pulumi.gcp.apigee.OrganizationArgs;\nimport com.pulumi.gcp.apigee.Instance;\nimport com.pulumi.gcp.apigee.InstanceArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = OrganizationsFunctions.getClientConfig();\n\n var apigeeNetwork = new Network(\"apigeeNetwork\", NetworkArgs.builder()\n .name(\"apigee-network\")\n .build());\n\n var apigeeRange = new GlobalAddress(\"apigeeRange\", GlobalAddressArgs.builder()\n .name(\"apigee-range\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(22)\n .network(apigeeNetwork.id())\n .build());\n\n var apigeeVpcConnection = new Connection(\"apigeeVpcConnection\", ConnectionArgs.builder()\n .network(apigeeNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(apigeeRange.name())\n .build());\n\n var apigeeOrg = new Organization(\"apigeeOrg\", OrganizationArgs.builder()\n .analyticsRegion(\"us-central1\")\n .projectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .authorizedNetwork(apigeeNetwork.id())\n .build(), CustomResourceOptions.builder()\n .dependsOn(apigeeVpcConnection)\n .build());\n\n var apigeeInstance = new Instance(\"apigeeInstance\", InstanceArgs.builder()\n .name(\"my-instance-name\")\n .location(\"us-central1\")\n .orgId(apigeeOrg.id())\n .ipRange(\"10.87.8.0/22\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n apigeeNetwork:\n type: gcp:compute:Network\n name: apigee_network\n properties:\n name: apigee-network\n apigeeRange:\n type: gcp:compute:GlobalAddress\n name: apigee_range\n properties:\n name: apigee-range\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 22\n network: ${apigeeNetwork.id}\n apigeeVpcConnection:\n type: gcp:servicenetworking:Connection\n name: apigee_vpc_connection\n properties:\n network: ${apigeeNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${apigeeRange.name}\n apigeeOrg:\n type: gcp:apigee:Organization\n name: apigee_org\n properties:\n analyticsRegion: us-central1\n projectId: ${current.project}\n authorizedNetwork: ${apigeeNetwork.id}\n options:\n dependson:\n - ${apigeeVpcConnection}\n apigeeInstance:\n type: gcp:apigee:Instance\n name: apigee_instance\n properties:\n name: my-instance-name\n location: us-central1\n orgId: ${apigeeOrg.id}\n ipRange: 10.87.8.0/22\nvariables:\n current:\n fn::invoke:\n Function: gcp:organizations:getClientConfig\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Apigee Instance Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst current = gcp.organizations.getClientConfig({});\nconst apigeeNetwork = new gcp.compute.Network(\"apigee_network\", {name: \"apigee-network\"});\nconst apigeeRange = new gcp.compute.GlobalAddress(\"apigee_range\", {\n name: \"apigee-range\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: apigeeNetwork.id,\n});\nconst apigeeVpcConnection = new gcp.servicenetworking.Connection(\"apigee_vpc_connection\", {\n network: apigeeNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [apigeeRange.name],\n});\nconst apigeeKeyring = new gcp.kms.KeyRing(\"apigee_keyring\", {\n name: \"apigee-keyring\",\n location: \"us-central1\",\n});\nconst apigeeKey = new gcp.kms.CryptoKey(\"apigee_key\", {\n name: \"apigee-key\",\n keyRing: apigeeKeyring.id,\n});\nconst apigeeSa = new gcp.projects.ServiceIdentity(\"apigee_sa\", {\n project: project.projectId,\n service: apigee.service,\n});\nconst apigeeSaKeyuser = new gcp.kms.CryptoKeyIAMMember(\"apigee_sa_keyuser\", {\n cryptoKeyId: apigeeKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: apigeeSa.member,\n});\nconst apigeeOrg = new gcp.apigee.Organization(\"apigee_org\", {\n analyticsRegion: \"us-central1\",\n displayName: \"apigee-org\",\n description: \"Auto-provisioned Apigee Org.\",\n projectId: current.then(current =\u003e current.project),\n authorizedNetwork: apigeeNetwork.id,\n runtimeDatabaseEncryptionKeyName: apigeeKey.id,\n}, {\n dependsOn: [\n apigeeVpcConnection,\n apigeeSaKeyuser,\n ],\n});\nconst apigeeInstance = new gcp.apigee.Instance(\"apigee_instance\", {\n name: \"my-instance-name\",\n location: \"us-central1\",\n description: \"Auto-managed Apigee Runtime Instance\",\n displayName: \"my-instance-name\",\n orgId: apigeeOrg.id,\n diskEncryptionKeyName: apigeeKey.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncurrent = gcp.organizations.get_client_config()\napigee_network = gcp.compute.Network(\"apigee_network\", name=\"apigee-network\")\napigee_range = gcp.compute.GlobalAddress(\"apigee_range\",\n name=\"apigee-range\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=apigee_network.id)\napigee_vpc_connection = gcp.servicenetworking.Connection(\"apigee_vpc_connection\",\n network=apigee_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[apigee_range.name])\napigee_keyring = gcp.kms.KeyRing(\"apigee_keyring\",\n name=\"apigee-keyring\",\n location=\"us-central1\")\napigee_key = gcp.kms.CryptoKey(\"apigee_key\",\n name=\"apigee-key\",\n key_ring=apigee_keyring.id)\napigee_sa = gcp.projects.ServiceIdentity(\"apigee_sa\",\n project=project[\"projectId\"],\n service=apigee[\"service\"])\napigee_sa_keyuser = gcp.kms.CryptoKeyIAMMember(\"apigee_sa_keyuser\",\n crypto_key_id=apigee_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=apigee_sa.member)\napigee_org = gcp.apigee.Organization(\"apigee_org\",\n analytics_region=\"us-central1\",\n display_name=\"apigee-org\",\n description=\"Auto-provisioned Apigee Org.\",\n project_id=current.project,\n authorized_network=apigee_network.id,\n runtime_database_encryption_key_name=apigee_key.id,\n opts = pulumi.ResourceOptions(depends_on=[\n apigee_vpc_connection,\n apigee_sa_keyuser,\n ]))\napigee_instance = gcp.apigee.Instance(\"apigee_instance\",\n name=\"my-instance-name\",\n location=\"us-central1\",\n description=\"Auto-managed Apigee Runtime Instance\",\n display_name=\"my-instance-name\",\n org_id=apigee_org.id,\n disk_encryption_key_name=apigee_key.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Gcp.Organizations.GetClientConfig.Invoke();\n\n var apigeeNetwork = new Gcp.Compute.Network(\"apigee_network\", new()\n {\n Name = \"apigee-network\",\n });\n\n var apigeeRange = new Gcp.Compute.GlobalAddress(\"apigee_range\", new()\n {\n Name = \"apigee-range\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = apigeeNetwork.Id,\n });\n\n var apigeeVpcConnection = new Gcp.ServiceNetworking.Connection(\"apigee_vpc_connection\", new()\n {\n Network = apigeeNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n apigeeRange.Name,\n },\n });\n\n var apigeeKeyring = new Gcp.Kms.KeyRing(\"apigee_keyring\", new()\n {\n Name = \"apigee-keyring\",\n Location = \"us-central1\",\n });\n\n var apigeeKey = new Gcp.Kms.CryptoKey(\"apigee_key\", new()\n {\n Name = \"apigee-key\",\n KeyRing = apigeeKeyring.Id,\n });\n\n var apigeeSa = new Gcp.Projects.ServiceIdentity(\"apigee_sa\", new()\n {\n Project = project.ProjectId,\n Service = apigee.Service,\n });\n\n var apigeeSaKeyuser = new Gcp.Kms.CryptoKeyIAMMember(\"apigee_sa_keyuser\", new()\n {\n CryptoKeyId = apigeeKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = apigeeSa.Member,\n });\n\n var apigeeOrg = new Gcp.Apigee.Organization(\"apigee_org\", new()\n {\n AnalyticsRegion = \"us-central1\",\n DisplayName = \"apigee-org\",\n Description = \"Auto-provisioned Apigee Org.\",\n ProjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n AuthorizedNetwork = apigeeNetwork.Id,\n RuntimeDatabaseEncryptionKeyName = apigeeKey.Id,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n apigeeVpcConnection,\n apigeeSaKeyuser,\n },\n });\n\n var apigeeInstance = new Gcp.Apigee.Instance(\"apigee_instance\", new()\n {\n Name = \"my-instance-name\",\n Location = \"us-central1\",\n Description = \"Auto-managed Apigee Runtime Instance\",\n DisplayName = \"my-instance-name\",\n OrgId = apigeeOrg.Id,\n DiskEncryptionKeyName = apigeeKey.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/apigee\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := organizations.GetClientConfig(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeNetwork, err := compute.NewNetwork(ctx, \"apigee_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"apigee-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeRange, err := compute.NewGlobalAddress(ctx, \"apigee_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"apigee-range\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeVpcConnection, err := servicenetworking.NewConnection(ctx, \"apigee_vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tapigeeRange.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeKeyring, err := kms.NewKeyRing(ctx, \"apigee_keyring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"apigee-keyring\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeKey, err := kms.NewCryptoKey(ctx, \"apigee_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"apigee-key\"),\n\t\t\tKeyRing: apigeeKeyring.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeSa, err := projects.NewServiceIdentity(ctx, \"apigee_sa\", \u0026projects.ServiceIdentityArgs{\n\t\t\tProject: pulumi.Any(project.ProjectId),\n\t\t\tService: pulumi.Any(apigee.Service),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeSaKeyuser, err := kms.NewCryptoKeyIAMMember(ctx, \"apigee_sa_keyuser\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: apigeeKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: apigeeSa.Member,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeOrg, err := apigee.NewOrganization(ctx, \"apigee_org\", \u0026apigee.OrganizationArgs{\n\t\t\tAnalyticsRegion: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"apigee-org\"),\n\t\t\tDescription: pulumi.String(\"Auto-provisioned Apigee Org.\"),\n\t\t\tProjectId: pulumi.String(current.Project),\n\t\t\tAuthorizedNetwork: apigeeNetwork.ID(),\n\t\t\tRuntimeDatabaseEncryptionKeyName: apigeeKey.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapigeeVpcConnection,\n\t\t\tapigeeSaKeyuser,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigee.NewInstance(ctx, \"apigee_instance\", \u0026apigee.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance-name\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"Auto-managed Apigee Runtime Instance\"),\n\t\t\tDisplayName: pulumi.String(\"my-instance-name\"),\n\t\t\tOrgId: apigeeOrg.ID(),\n\t\t\tDiskEncryptionKeyName: apigeeKey.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.projects.ServiceIdentity;\nimport com.pulumi.gcp.projects.ServiceIdentityArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.apigee.Organization;\nimport com.pulumi.gcp.apigee.OrganizationArgs;\nimport com.pulumi.gcp.apigee.Instance;\nimport com.pulumi.gcp.apigee.InstanceArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = OrganizationsFunctions.getClientConfig();\n\n var apigeeNetwork = new Network(\"apigeeNetwork\", NetworkArgs.builder()\n .name(\"apigee-network\")\n .build());\n\n var apigeeRange = new GlobalAddress(\"apigeeRange\", GlobalAddressArgs.builder()\n .name(\"apigee-range\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(apigeeNetwork.id())\n .build());\n\n var apigeeVpcConnection = new Connection(\"apigeeVpcConnection\", ConnectionArgs.builder()\n .network(apigeeNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(apigeeRange.name())\n .build());\n\n var apigeeKeyring = new KeyRing(\"apigeeKeyring\", KeyRingArgs.builder()\n .name(\"apigee-keyring\")\n .location(\"us-central1\")\n .build());\n\n var apigeeKey = new CryptoKey(\"apigeeKey\", CryptoKeyArgs.builder()\n .name(\"apigee-key\")\n .keyRing(apigeeKeyring.id())\n .build());\n\n var apigeeSa = new ServiceIdentity(\"apigeeSa\", ServiceIdentityArgs.builder()\n .project(project.projectId())\n .service(apigee.service())\n .build());\n\n var apigeeSaKeyuser = new CryptoKeyIAMMember(\"apigeeSaKeyuser\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(apigeeKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(apigeeSa.member())\n .build());\n\n var apigeeOrg = new Organization(\"apigeeOrg\", OrganizationArgs.builder()\n .analyticsRegion(\"us-central1\")\n .displayName(\"apigee-org\")\n .description(\"Auto-provisioned Apigee Org.\")\n .projectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .authorizedNetwork(apigeeNetwork.id())\n .runtimeDatabaseEncryptionKeyName(apigeeKey.id())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n apigeeVpcConnection,\n apigeeSaKeyuser)\n .build());\n\n var apigeeInstance = new Instance(\"apigeeInstance\", InstanceArgs.builder()\n .name(\"my-instance-name\")\n .location(\"us-central1\")\n .description(\"Auto-managed Apigee Runtime Instance\")\n .displayName(\"my-instance-name\")\n .orgId(apigeeOrg.id())\n .diskEncryptionKeyName(apigeeKey.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n apigeeNetwork:\n type: gcp:compute:Network\n name: apigee_network\n properties:\n name: apigee-network\n apigeeRange:\n type: gcp:compute:GlobalAddress\n name: apigee_range\n properties:\n name: apigee-range\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${apigeeNetwork.id}\n apigeeVpcConnection:\n type: gcp:servicenetworking:Connection\n name: apigee_vpc_connection\n properties:\n network: ${apigeeNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${apigeeRange.name}\n apigeeKeyring:\n type: gcp:kms:KeyRing\n name: apigee_keyring\n properties:\n name: apigee-keyring\n location: us-central1\n apigeeKey:\n type: gcp:kms:CryptoKey\n name: apigee_key\n properties:\n name: apigee-key\n keyRing: ${apigeeKeyring.id}\n apigeeSa:\n type: gcp:projects:ServiceIdentity\n name: apigee_sa\n properties:\n project: ${project.projectId}\n service: ${apigee.service}\n apigeeSaKeyuser:\n type: gcp:kms:CryptoKeyIAMMember\n name: apigee_sa_keyuser\n properties:\n cryptoKeyId: ${apigeeKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: ${apigeeSa.member}\n apigeeOrg:\n type: gcp:apigee:Organization\n name: apigee_org\n properties:\n analyticsRegion: us-central1\n displayName: apigee-org\n description: Auto-provisioned Apigee Org.\n projectId: ${current.project}\n authorizedNetwork: ${apigeeNetwork.id}\n runtimeDatabaseEncryptionKeyName: ${apigeeKey.id}\n options:\n dependson:\n - ${apigeeVpcConnection}\n - ${apigeeSaKeyuser}\n apigeeInstance:\n type: gcp:apigee:Instance\n name: apigee_instance\n properties:\n name: my-instance-name\n location: us-central1\n description: Auto-managed Apigee Runtime Instance\n displayName: my-instance-name\n orgId: ${apigeeOrg.id}\n diskEncryptionKeyName: ${apigeeKey.id}\nvariables:\n current:\n fn::invoke:\n Function: gcp:organizations:getClientConfig\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `{{org_id}}/instances/{{name}}`\n\n* `{{org_id}}/{{name}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:apigee/instance:Instance default {{org_id}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:apigee/instance:Instance default {{org_id}}/{{name}}\n```\n\n", "properties": { "consumerAcceptLists": { "type": "array", @@ -121591,7 +121591,7 @@ } }, "gcp:apigee/natAddress:NatAddress": { - "description": "Apigee NAT (network address translation) address. A NAT address is a static external IP address used for Internet egress traffic. This is not avaible for Apigee hybrid.\nApigee NAT addresses are not automatically activated because they might require explicit allow entries on the target systems first. See https://cloud.google.com/apigee/docs/reference/apis/apigee/rest/v1/organizations.instances.natAddresses/activate\n\n\nTo get more information about NatAddress, see:\n\n* [API documentation](https://cloud.google.com/apigee/docs/reference/apis/apigee/rest/v1/organizations.instances.natAddresses)\n* How-to Guides\n * [Provisioning NAT IPs](https://cloud.google.com/apigee/docs/api-platform/security/nat-provisioning)\n\n## Example Usage\n\n### Apigee Nat Address Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst current = gcp.organizations.getClientConfig({});\nconst apigeeNetwork = new gcp.compute.Network(\"apigee_network\", {name: \"apigee-network\"});\nconst apigeeRange = new gcp.compute.GlobalAddress(\"apigee_range\", {\n name: \"apigee-range\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 21,\n network: apigeeNetwork.id,\n});\nconst apigeeVpcConnection = new gcp.servicenetworking.Connection(\"apigee_vpc_connection\", {\n network: apigeeNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [apigeeRange.name],\n});\nconst apigeeKeyring = new gcp.kms.KeyRing(\"apigee_keyring\", {\n name: \"apigee-keyring\",\n location: \"us-central1\",\n});\nconst apigeeKey = new gcp.kms.CryptoKey(\"apigee_key\", {\n name: \"apigee-key\",\n keyRing: apigeeKeyring.id,\n});\nconst apigeeSa = new gcp.projects.ServiceIdentity(\"apigee_sa\", {\n project: project.projectId,\n service: apigee.service,\n});\nconst apigeeSaKeyuser = new gcp.kms.CryptoKeyIAMMember(\"apigee_sa_keyuser\", {\n cryptoKeyId: apigeeKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: apigeeSa.member,\n});\nconst apigeeOrg = new gcp.apigee.Organization(\"apigee_org\", {\n analyticsRegion: \"us-central1\",\n displayName: \"apigee-org\",\n description: \"Terraform-provisioned Apigee Org.\",\n projectId: current.then(current =\u003e current.project),\n authorizedNetwork: apigeeNetwork.id,\n runtimeDatabaseEncryptionKeyName: apigeeKey.id,\n}, {\n dependsOn: [\n apigeeVpcConnection,\n apigeeSaKeyuser,\n ],\n});\nconst apigeeInstance = new gcp.apigee.Instance(\"apigee_instance\", {\n name: \"apigee-instance\",\n location: \"us-central1\",\n description: \"Terraform-managed Apigee Runtime Instance\",\n displayName: \"apigee-instance\",\n orgId: apigeeOrg.id,\n diskEncryptionKeyName: apigeeKey.id,\n});\nconst apigee_nat = new gcp.apigee.NatAddress(\"apigee-nat\", {\n name: \"my-nat-address\",\n instanceId: apigeeInstance.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncurrent = gcp.organizations.get_client_config()\napigee_network = gcp.compute.Network(\"apigee_network\", name=\"apigee-network\")\napigee_range = gcp.compute.GlobalAddress(\"apigee_range\",\n name=\"apigee-range\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=21,\n network=apigee_network.id)\napigee_vpc_connection = gcp.servicenetworking.Connection(\"apigee_vpc_connection\",\n network=apigee_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[apigee_range.name])\napigee_keyring = gcp.kms.KeyRing(\"apigee_keyring\",\n name=\"apigee-keyring\",\n location=\"us-central1\")\napigee_key = gcp.kms.CryptoKey(\"apigee_key\",\n name=\"apigee-key\",\n key_ring=apigee_keyring.id)\napigee_sa = gcp.projects.ServiceIdentity(\"apigee_sa\",\n project=project[\"projectId\"],\n service=apigee[\"service\"])\napigee_sa_keyuser = gcp.kms.CryptoKeyIAMMember(\"apigee_sa_keyuser\",\n crypto_key_id=apigee_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=apigee_sa.member)\napigee_org = gcp.apigee.Organization(\"apigee_org\",\n analytics_region=\"us-central1\",\n display_name=\"apigee-org\",\n description=\"Terraform-provisioned Apigee Org.\",\n project_id=current.project,\n authorized_network=apigee_network.id,\n runtime_database_encryption_key_name=apigee_key.id,\n opts = pulumi.ResourceOptions(depends_on=[\n apigee_vpc_connection,\n apigee_sa_keyuser,\n ]))\napigee_instance = gcp.apigee.Instance(\"apigee_instance\",\n name=\"apigee-instance\",\n location=\"us-central1\",\n description=\"Terraform-managed Apigee Runtime Instance\",\n display_name=\"apigee-instance\",\n org_id=apigee_org.id,\n disk_encryption_key_name=apigee_key.id)\napigee_nat = gcp.apigee.NatAddress(\"apigee-nat\",\n name=\"my-nat-address\",\n instance_id=apigee_instance.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Gcp.Organizations.GetClientConfig.Invoke();\n\n var apigeeNetwork = new Gcp.Compute.Network(\"apigee_network\", new()\n {\n Name = \"apigee-network\",\n });\n\n var apigeeRange = new Gcp.Compute.GlobalAddress(\"apigee_range\", new()\n {\n Name = \"apigee-range\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 21,\n Network = apigeeNetwork.Id,\n });\n\n var apigeeVpcConnection = new Gcp.ServiceNetworking.Connection(\"apigee_vpc_connection\", new()\n {\n Network = apigeeNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n apigeeRange.Name,\n },\n });\n\n var apigeeKeyring = new Gcp.Kms.KeyRing(\"apigee_keyring\", new()\n {\n Name = \"apigee-keyring\",\n Location = \"us-central1\",\n });\n\n var apigeeKey = new Gcp.Kms.CryptoKey(\"apigee_key\", new()\n {\n Name = \"apigee-key\",\n KeyRing = apigeeKeyring.Id,\n });\n\n var apigeeSa = new Gcp.Projects.ServiceIdentity(\"apigee_sa\", new()\n {\n Project = project.ProjectId,\n Service = apigee.Service,\n });\n\n var apigeeSaKeyuser = new Gcp.Kms.CryptoKeyIAMMember(\"apigee_sa_keyuser\", new()\n {\n CryptoKeyId = apigeeKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = apigeeSa.Member,\n });\n\n var apigeeOrg = new Gcp.Apigee.Organization(\"apigee_org\", new()\n {\n AnalyticsRegion = \"us-central1\",\n DisplayName = \"apigee-org\",\n Description = \"Terraform-provisioned Apigee Org.\",\n ProjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n AuthorizedNetwork = apigeeNetwork.Id,\n RuntimeDatabaseEncryptionKeyName = apigeeKey.Id,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n apigeeVpcConnection,\n apigeeSaKeyuser,\n },\n });\n\n var apigeeInstance = new Gcp.Apigee.Instance(\"apigee_instance\", new()\n {\n Name = \"apigee-instance\",\n Location = \"us-central1\",\n Description = \"Terraform-managed Apigee Runtime Instance\",\n DisplayName = \"apigee-instance\",\n OrgId = apigeeOrg.Id,\n DiskEncryptionKeyName = apigeeKey.Id,\n });\n\n var apigee_nat = new Gcp.Apigee.NatAddress(\"apigee-nat\", new()\n {\n Name = \"my-nat-address\",\n InstanceId = apigeeInstance.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/apigee\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := organizations.GetClientConfig(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeNetwork, err := compute.NewNetwork(ctx, \"apigee_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"apigee-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeRange, err := compute.NewGlobalAddress(ctx, \"apigee_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"apigee-range\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(21),\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeVpcConnection, err := servicenetworking.NewConnection(ctx, \"apigee_vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tapigeeRange.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeKeyring, err := kms.NewKeyRing(ctx, \"apigee_keyring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"apigee-keyring\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeKey, err := kms.NewCryptoKey(ctx, \"apigee_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"apigee-key\"),\n\t\t\tKeyRing: apigeeKeyring.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeSa, err := projects.NewServiceIdentity(ctx, \"apigee_sa\", \u0026projects.ServiceIdentityArgs{\n\t\t\tProject: pulumi.Any(project.ProjectId),\n\t\t\tService: pulumi.Any(apigee.Service),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeSaKeyuser, err := kms.NewCryptoKeyIAMMember(ctx, \"apigee_sa_keyuser\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: apigeeKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: apigeeSa.Member,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeOrg, err := apigee.NewOrganization(ctx, \"apigee_org\", \u0026apigee.OrganizationArgs{\n\t\t\tAnalyticsRegion: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"apigee-org\"),\n\t\t\tDescription: pulumi.String(\"Terraform-provisioned Apigee Org.\"),\n\t\t\tProjectId: pulumi.String(current.Project),\n\t\t\tAuthorizedNetwork: apigeeNetwork.ID(),\n\t\t\tRuntimeDatabaseEncryptionKeyName: apigeeKey.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapigeeVpcConnection,\n\t\t\tapigeeSaKeyuser,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeInstance, err := apigee.NewInstance(ctx, \"apigee_instance\", \u0026apigee.InstanceArgs{\n\t\t\tName: pulumi.String(\"apigee-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"Terraform-managed Apigee Runtime Instance\"),\n\t\t\tDisplayName: pulumi.String(\"apigee-instance\"),\n\t\t\tOrgId: apigeeOrg.ID(),\n\t\t\tDiskEncryptionKeyName: apigeeKey.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigee.NewNatAddress(ctx, \"apigee-nat\", \u0026apigee.NatAddressArgs{\n\t\t\tName: pulumi.String(\"my-nat-address\"),\n\t\t\tInstanceId: apigeeInstance.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.projects.ServiceIdentity;\nimport com.pulumi.gcp.projects.ServiceIdentityArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.apigee.Organization;\nimport com.pulumi.gcp.apigee.OrganizationArgs;\nimport com.pulumi.gcp.apigee.Instance;\nimport com.pulumi.gcp.apigee.InstanceArgs;\nimport com.pulumi.gcp.apigee.NatAddress;\nimport com.pulumi.gcp.apigee.NatAddressArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = OrganizationsFunctions.getClientConfig();\n\n var apigeeNetwork = new Network(\"apigeeNetwork\", NetworkArgs.builder()\n .name(\"apigee-network\")\n .build());\n\n var apigeeRange = new GlobalAddress(\"apigeeRange\", GlobalAddressArgs.builder()\n .name(\"apigee-range\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(21)\n .network(apigeeNetwork.id())\n .build());\n\n var apigeeVpcConnection = new Connection(\"apigeeVpcConnection\", ConnectionArgs.builder()\n .network(apigeeNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(apigeeRange.name())\n .build());\n\n var apigeeKeyring = new KeyRing(\"apigeeKeyring\", KeyRingArgs.builder()\n .name(\"apigee-keyring\")\n .location(\"us-central1\")\n .build());\n\n var apigeeKey = new CryptoKey(\"apigeeKey\", CryptoKeyArgs.builder()\n .name(\"apigee-key\")\n .keyRing(apigeeKeyring.id())\n .build());\n\n var apigeeSa = new ServiceIdentity(\"apigeeSa\", ServiceIdentityArgs.builder()\n .project(project.projectId())\n .service(apigee.service())\n .build());\n\n var apigeeSaKeyuser = new CryptoKeyIAMMember(\"apigeeSaKeyuser\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(apigeeKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(apigeeSa.member())\n .build());\n\n var apigeeOrg = new Organization(\"apigeeOrg\", OrganizationArgs.builder()\n .analyticsRegion(\"us-central1\")\n .displayName(\"apigee-org\")\n .description(\"Terraform-provisioned Apigee Org.\")\n .projectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .authorizedNetwork(apigeeNetwork.id())\n .runtimeDatabaseEncryptionKeyName(apigeeKey.id())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n apigeeVpcConnection,\n apigeeSaKeyuser)\n .build());\n\n var apigeeInstance = new Instance(\"apigeeInstance\", InstanceArgs.builder()\n .name(\"apigee-instance\")\n .location(\"us-central1\")\n .description(\"Terraform-managed Apigee Runtime Instance\")\n .displayName(\"apigee-instance\")\n .orgId(apigeeOrg.id())\n .diskEncryptionKeyName(apigeeKey.id())\n .build());\n\n var apigee_nat = new NatAddress(\"apigee-nat\", NatAddressArgs.builder()\n .name(\"my-nat-address\")\n .instanceId(apigeeInstance.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n apigeeNetwork:\n type: gcp:compute:Network\n name: apigee_network\n properties:\n name: apigee-network\n apigeeRange:\n type: gcp:compute:GlobalAddress\n name: apigee_range\n properties:\n name: apigee-range\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 21\n network: ${apigeeNetwork.id}\n apigeeVpcConnection:\n type: gcp:servicenetworking:Connection\n name: apigee_vpc_connection\n properties:\n network: ${apigeeNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${apigeeRange.name}\n apigeeKeyring:\n type: gcp:kms:KeyRing\n name: apigee_keyring\n properties:\n name: apigee-keyring\n location: us-central1\n apigeeKey:\n type: gcp:kms:CryptoKey\n name: apigee_key\n properties:\n name: apigee-key\n keyRing: ${apigeeKeyring.id}\n apigeeSa:\n type: gcp:projects:ServiceIdentity\n name: apigee_sa\n properties:\n project: ${project.projectId}\n service: ${apigee.service}\n apigeeSaKeyuser:\n type: gcp:kms:CryptoKeyIAMMember\n name: apigee_sa_keyuser\n properties:\n cryptoKeyId: ${apigeeKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: ${apigeeSa.member}\n apigeeOrg:\n type: gcp:apigee:Organization\n name: apigee_org\n properties:\n analyticsRegion: us-central1\n displayName: apigee-org\n description: Terraform-provisioned Apigee Org.\n projectId: ${current.project}\n authorizedNetwork: ${apigeeNetwork.id}\n runtimeDatabaseEncryptionKeyName: ${apigeeKey.id}\n options:\n dependson:\n - ${apigeeVpcConnection}\n - ${apigeeSaKeyuser}\n apigeeInstance:\n type: gcp:apigee:Instance\n name: apigee_instance\n properties:\n name: apigee-instance\n location: us-central1\n description: Terraform-managed Apigee Runtime Instance\n displayName: apigee-instance\n orgId: ${apigeeOrg.id}\n diskEncryptionKeyName: ${apigeeKey.id}\n apigee-nat:\n type: gcp:apigee:NatAddress\n properties:\n name: my-nat-address\n instanceId: ${apigeeInstance.id}\nvariables:\n current:\n fn::invoke:\n Function: gcp:organizations:getClientConfig\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNatAddress can be imported using any of these accepted formats:\n\n* `{{instance_id}}/natAddresses/{{name}}`\n\n* `{{instance_id}}/{{name}}`\n\nWhen using the `pulumi import` command, NatAddress can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:apigee/natAddress:NatAddress default {{instance_id}}/natAddresses/{{name}}\n```\n\n```sh\n$ pulumi import gcp:apigee/natAddress:NatAddress default {{instance_id}}/{{name}}\n```\n\n", + "description": "Apigee NAT (network address translation) address. A NAT address is a static external IP address used for Internet egress traffic. This is not avaible for Apigee hybrid.\nApigee NAT addresses are not automatically activated because they might require explicit allow entries on the target systems first. See https://cloud.google.com/apigee/docs/reference/apis/apigee/rest/v1/organizations.instances.natAddresses/activate\n\n\nTo get more information about NatAddress, see:\n\n* [API documentation](https://cloud.google.com/apigee/docs/reference/apis/apigee/rest/v1/organizations.instances.natAddresses)\n* How-to Guides\n * [Provisioning NAT IPs](https://cloud.google.com/apigee/docs/api-platform/security/nat-provisioning)\n\n## Example Usage\n\n### Apigee Nat Address Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst current = gcp.organizations.getClientConfig({});\nconst apigeeNetwork = new gcp.compute.Network(\"apigee_network\", {name: \"apigee-network\"});\nconst apigeeRange = new gcp.compute.GlobalAddress(\"apigee_range\", {\n name: \"apigee-range\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 21,\n network: apigeeNetwork.id,\n});\nconst apigeeVpcConnection = new gcp.servicenetworking.Connection(\"apigee_vpc_connection\", {\n network: apigeeNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [apigeeRange.name],\n});\nconst apigeeKeyring = new gcp.kms.KeyRing(\"apigee_keyring\", {\n name: \"apigee-keyring\",\n location: \"us-central1\",\n});\nconst apigeeKey = new gcp.kms.CryptoKey(\"apigee_key\", {\n name: \"apigee-key\",\n keyRing: apigeeKeyring.id,\n});\nconst apigeeSa = new gcp.projects.ServiceIdentity(\"apigee_sa\", {\n project: project.projectId,\n service: apigee.service,\n});\nconst apigeeSaKeyuser = new gcp.kms.CryptoKeyIAMMember(\"apigee_sa_keyuser\", {\n cryptoKeyId: apigeeKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: apigeeSa.member,\n});\nconst apigeeOrg = new gcp.apigee.Organization(\"apigee_org\", {\n analyticsRegion: \"us-central1\",\n displayName: \"apigee-org\",\n description: \"Terraform-provisioned Apigee Org.\",\n projectId: current.then(current =\u003e current.project),\n authorizedNetwork: apigeeNetwork.id,\n runtimeDatabaseEncryptionKeyName: apigeeKey.id,\n}, {\n dependsOn: [\n apigeeVpcConnection,\n apigeeSaKeyuser,\n ],\n});\nconst apigeeInstance = new gcp.apigee.Instance(\"apigee_instance\", {\n name: \"apigee-instance\",\n location: \"us-central1\",\n description: \"Terraform-managed Apigee Runtime Instance\",\n displayName: \"apigee-instance\",\n orgId: apigeeOrg.id,\n diskEncryptionKeyName: apigeeKey.id,\n});\nconst apigee_nat = new gcp.apigee.NatAddress(\"apigee-nat\", {\n name: \"my-nat-address\",\n instanceId: apigeeInstance.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncurrent = gcp.organizations.get_client_config()\napigee_network = gcp.compute.Network(\"apigee_network\", name=\"apigee-network\")\napigee_range = gcp.compute.GlobalAddress(\"apigee_range\",\n name=\"apigee-range\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=21,\n network=apigee_network.id)\napigee_vpc_connection = gcp.servicenetworking.Connection(\"apigee_vpc_connection\",\n network=apigee_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[apigee_range.name])\napigee_keyring = gcp.kms.KeyRing(\"apigee_keyring\",\n name=\"apigee-keyring\",\n location=\"us-central1\")\napigee_key = gcp.kms.CryptoKey(\"apigee_key\",\n name=\"apigee-key\",\n key_ring=apigee_keyring.id)\napigee_sa = gcp.projects.ServiceIdentity(\"apigee_sa\",\n project=project[\"projectId\"],\n service=apigee[\"service\"])\napigee_sa_keyuser = gcp.kms.CryptoKeyIAMMember(\"apigee_sa_keyuser\",\n crypto_key_id=apigee_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=apigee_sa.member)\napigee_org = gcp.apigee.Organization(\"apigee_org\",\n analytics_region=\"us-central1\",\n display_name=\"apigee-org\",\n description=\"Terraform-provisioned Apigee Org.\",\n project_id=current.project,\n authorized_network=apigee_network.id,\n runtime_database_encryption_key_name=apigee_key.id,\n opts = pulumi.ResourceOptions(depends_on=[\n apigee_vpc_connection,\n apigee_sa_keyuser,\n ]))\napigee_instance = gcp.apigee.Instance(\"apigee_instance\",\n name=\"apigee-instance\",\n location=\"us-central1\",\n description=\"Terraform-managed Apigee Runtime Instance\",\n display_name=\"apigee-instance\",\n org_id=apigee_org.id,\n disk_encryption_key_name=apigee_key.id)\napigee_nat = gcp.apigee.NatAddress(\"apigee-nat\",\n name=\"my-nat-address\",\n instance_id=apigee_instance.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Gcp.Organizations.GetClientConfig.Invoke();\n\n var apigeeNetwork = new Gcp.Compute.Network(\"apigee_network\", new()\n {\n Name = \"apigee-network\",\n });\n\n var apigeeRange = new Gcp.Compute.GlobalAddress(\"apigee_range\", new()\n {\n Name = \"apigee-range\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 21,\n Network = apigeeNetwork.Id,\n });\n\n var apigeeVpcConnection = new Gcp.ServiceNetworking.Connection(\"apigee_vpc_connection\", new()\n {\n Network = apigeeNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n apigeeRange.Name,\n },\n });\n\n var apigeeKeyring = new Gcp.Kms.KeyRing(\"apigee_keyring\", new()\n {\n Name = \"apigee-keyring\",\n Location = \"us-central1\",\n });\n\n var apigeeKey = new Gcp.Kms.CryptoKey(\"apigee_key\", new()\n {\n Name = \"apigee-key\",\n KeyRing = apigeeKeyring.Id,\n });\n\n var apigeeSa = new Gcp.Projects.ServiceIdentity(\"apigee_sa\", new()\n {\n Project = project.ProjectId,\n Service = apigee.Service,\n });\n\n var apigeeSaKeyuser = new Gcp.Kms.CryptoKeyIAMMember(\"apigee_sa_keyuser\", new()\n {\n CryptoKeyId = apigeeKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = apigeeSa.Member,\n });\n\n var apigeeOrg = new Gcp.Apigee.Organization(\"apigee_org\", new()\n {\n AnalyticsRegion = \"us-central1\",\n DisplayName = \"apigee-org\",\n Description = \"Terraform-provisioned Apigee Org.\",\n ProjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n AuthorizedNetwork = apigeeNetwork.Id,\n RuntimeDatabaseEncryptionKeyName = apigeeKey.Id,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n apigeeVpcConnection,\n apigeeSaKeyuser,\n },\n });\n\n var apigeeInstance = new Gcp.Apigee.Instance(\"apigee_instance\", new()\n {\n Name = \"apigee-instance\",\n Location = \"us-central1\",\n Description = \"Terraform-managed Apigee Runtime Instance\",\n DisplayName = \"apigee-instance\",\n OrgId = apigeeOrg.Id,\n DiskEncryptionKeyName = apigeeKey.Id,\n });\n\n var apigee_nat = new Gcp.Apigee.NatAddress(\"apigee-nat\", new()\n {\n Name = \"my-nat-address\",\n InstanceId = apigeeInstance.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/apigee\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := organizations.GetClientConfig(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeNetwork, err := compute.NewNetwork(ctx, \"apigee_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"apigee-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeRange, err := compute.NewGlobalAddress(ctx, \"apigee_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"apigee-range\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(21),\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeVpcConnection, err := servicenetworking.NewConnection(ctx, \"apigee_vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tapigeeRange.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeKeyring, err := kms.NewKeyRing(ctx, \"apigee_keyring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"apigee-keyring\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeKey, err := kms.NewCryptoKey(ctx, \"apigee_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"apigee-key\"),\n\t\t\tKeyRing: apigeeKeyring.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeSa, err := projects.NewServiceIdentity(ctx, \"apigee_sa\", \u0026projects.ServiceIdentityArgs{\n\t\t\tProject: pulumi.Any(project.ProjectId),\n\t\t\tService: pulumi.Any(apigee.Service),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeSaKeyuser, err := kms.NewCryptoKeyIAMMember(ctx, \"apigee_sa_keyuser\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: apigeeKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: apigeeSa.Member,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeOrg, err := apigee.NewOrganization(ctx, \"apigee_org\", \u0026apigee.OrganizationArgs{\n\t\t\tAnalyticsRegion: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"apigee-org\"),\n\t\t\tDescription: pulumi.String(\"Terraform-provisioned Apigee Org.\"),\n\t\t\tProjectId: pulumi.String(current.Project),\n\t\t\tAuthorizedNetwork: apigeeNetwork.ID(),\n\t\t\tRuntimeDatabaseEncryptionKeyName: apigeeKey.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapigeeVpcConnection,\n\t\t\tapigeeSaKeyuser,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeInstance, err := apigee.NewInstance(ctx, \"apigee_instance\", \u0026apigee.InstanceArgs{\n\t\t\tName: pulumi.String(\"apigee-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"Terraform-managed Apigee Runtime Instance\"),\n\t\t\tDisplayName: pulumi.String(\"apigee-instance\"),\n\t\t\tOrgId: apigeeOrg.ID(),\n\t\t\tDiskEncryptionKeyName: apigeeKey.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigee.NewNatAddress(ctx, \"apigee-nat\", \u0026apigee.NatAddressArgs{\n\t\t\tName: pulumi.String(\"my-nat-address\"),\n\t\t\tInstanceId: apigeeInstance.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.projects.ServiceIdentity;\nimport com.pulumi.gcp.projects.ServiceIdentityArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.apigee.Organization;\nimport com.pulumi.gcp.apigee.OrganizationArgs;\nimport com.pulumi.gcp.apigee.Instance;\nimport com.pulumi.gcp.apigee.InstanceArgs;\nimport com.pulumi.gcp.apigee.NatAddress;\nimport com.pulumi.gcp.apigee.NatAddressArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = OrganizationsFunctions.getClientConfig();\n\n var apigeeNetwork = new Network(\"apigeeNetwork\", NetworkArgs.builder()\n .name(\"apigee-network\")\n .build());\n\n var apigeeRange = new GlobalAddress(\"apigeeRange\", GlobalAddressArgs.builder()\n .name(\"apigee-range\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(21)\n .network(apigeeNetwork.id())\n .build());\n\n var apigeeVpcConnection = new Connection(\"apigeeVpcConnection\", ConnectionArgs.builder()\n .network(apigeeNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(apigeeRange.name())\n .build());\n\n var apigeeKeyring = new KeyRing(\"apigeeKeyring\", KeyRingArgs.builder()\n .name(\"apigee-keyring\")\n .location(\"us-central1\")\n .build());\n\n var apigeeKey = new CryptoKey(\"apigeeKey\", CryptoKeyArgs.builder()\n .name(\"apigee-key\")\n .keyRing(apigeeKeyring.id())\n .build());\n\n var apigeeSa = new ServiceIdentity(\"apigeeSa\", ServiceIdentityArgs.builder()\n .project(project.projectId())\n .service(apigee.service())\n .build());\n\n var apigeeSaKeyuser = new CryptoKeyIAMMember(\"apigeeSaKeyuser\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(apigeeKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(apigeeSa.member())\n .build());\n\n var apigeeOrg = new Organization(\"apigeeOrg\", OrganizationArgs.builder()\n .analyticsRegion(\"us-central1\")\n .displayName(\"apigee-org\")\n .description(\"Terraform-provisioned Apigee Org.\")\n .projectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .authorizedNetwork(apigeeNetwork.id())\n .runtimeDatabaseEncryptionKeyName(apigeeKey.id())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n apigeeVpcConnection,\n apigeeSaKeyuser)\n .build());\n\n var apigeeInstance = new Instance(\"apigeeInstance\", InstanceArgs.builder()\n .name(\"apigee-instance\")\n .location(\"us-central1\")\n .description(\"Terraform-managed Apigee Runtime Instance\")\n .displayName(\"apigee-instance\")\n .orgId(apigeeOrg.id())\n .diskEncryptionKeyName(apigeeKey.id())\n .build());\n\n var apigee_nat = new NatAddress(\"apigee-nat\", NatAddressArgs.builder()\n .name(\"my-nat-address\")\n .instanceId(apigeeInstance.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n apigeeNetwork:\n type: gcp:compute:Network\n name: apigee_network\n properties:\n name: apigee-network\n apigeeRange:\n type: gcp:compute:GlobalAddress\n name: apigee_range\n properties:\n name: apigee-range\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 21\n network: ${apigeeNetwork.id}\n apigeeVpcConnection:\n type: gcp:servicenetworking:Connection\n name: apigee_vpc_connection\n properties:\n network: ${apigeeNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${apigeeRange.name}\n apigeeKeyring:\n type: gcp:kms:KeyRing\n name: apigee_keyring\n properties:\n name: apigee-keyring\n location: us-central1\n apigeeKey:\n type: gcp:kms:CryptoKey\n name: apigee_key\n properties:\n name: apigee-key\n keyRing: ${apigeeKeyring.id}\n apigeeSa:\n type: gcp:projects:ServiceIdentity\n name: apigee_sa\n properties:\n project: ${project.projectId}\n service: ${apigee.service}\n apigeeSaKeyuser:\n type: gcp:kms:CryptoKeyIAMMember\n name: apigee_sa_keyuser\n properties:\n cryptoKeyId: ${apigeeKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: ${apigeeSa.member}\n apigeeOrg:\n type: gcp:apigee:Organization\n name: apigee_org\n properties:\n analyticsRegion: us-central1\n displayName: apigee-org\n description: Terraform-provisioned Apigee Org.\n projectId: ${current.project}\n authorizedNetwork: ${apigeeNetwork.id}\n runtimeDatabaseEncryptionKeyName: ${apigeeKey.id}\n options:\n dependson:\n - ${apigeeVpcConnection}\n - ${apigeeSaKeyuser}\n apigeeInstance:\n type: gcp:apigee:Instance\n name: apigee_instance\n properties:\n name: apigee-instance\n location: us-central1\n description: Terraform-managed Apigee Runtime Instance\n displayName: apigee-instance\n orgId: ${apigeeOrg.id}\n diskEncryptionKeyName: ${apigeeKey.id}\n apigee-nat:\n type: gcp:apigee:NatAddress\n properties:\n name: my-nat-address\n instanceId: ${apigeeInstance.id}\nvariables:\n current:\n fn::invoke:\n Function: gcp:organizations:getClientConfig\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNatAddress can be imported using any of these accepted formats:\n\n* `{{instance_id}}/natAddresses/{{name}}`\n\n* `{{instance_id}}/{{name}}`\n\nWhen using the `pulumi import` command, NatAddress can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:apigee/natAddress:NatAddress default {{instance_id}}/natAddresses/{{name}}\n```\n\n```sh\n$ pulumi import gcp:apigee/natAddress:NatAddress default {{instance_id}}/{{name}}\n```\n\n", "properties": { "instanceId": { "type": "string", @@ -121657,7 +121657,7 @@ } }, "gcp:apigee/organization:Organization": { - "description": "An `Organization` is the top-level container in Apigee.\n\n\nTo get more information about Organization, see:\n\n* [API documentation](https://cloud.google.com/apigee/docs/reference/apis/apigee/rest/v1/organizations)\n* How-to Guides\n * [Creating an API organization](https://cloud.google.com/apigee/docs/api-platform/get-started/create-org)\n\n## Example Usage\n\n### Apigee Organization Cloud Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst current = gcp.organizations.getClientConfig({});\nconst apigeeNetwork = new gcp.compute.Network(\"apigee_network\", {name: \"apigee-network\"});\nconst apigeeRange = new gcp.compute.GlobalAddress(\"apigee_range\", {\n name: \"apigee-range\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: apigeeNetwork.id,\n});\nconst apigeeVpcConnection = new gcp.servicenetworking.Connection(\"apigee_vpc_connection\", {\n network: apigeeNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [apigeeRange.name],\n});\nconst org = new gcp.apigee.Organization(\"org\", {\n analyticsRegion: \"us-central1\",\n projectId: current.then(current =\u003e current.project),\n authorizedNetwork: apigeeNetwork.id,\n}, {\n dependsOn: [apigeeVpcConnection],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncurrent = gcp.organizations.get_client_config()\napigee_network = gcp.compute.Network(\"apigee_network\", name=\"apigee-network\")\napigee_range = gcp.compute.GlobalAddress(\"apigee_range\",\n name=\"apigee-range\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=apigee_network.id)\napigee_vpc_connection = gcp.servicenetworking.Connection(\"apigee_vpc_connection\",\n network=apigee_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[apigee_range.name])\norg = gcp.apigee.Organization(\"org\",\n analytics_region=\"us-central1\",\n project_id=current.project,\n authorized_network=apigee_network.id,\n opts = pulumi.ResourceOptions(depends_on=[apigee_vpc_connection]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Gcp.Organizations.GetClientConfig.Invoke();\n\n var apigeeNetwork = new Gcp.Compute.Network(\"apigee_network\", new()\n {\n Name = \"apigee-network\",\n });\n\n var apigeeRange = new Gcp.Compute.GlobalAddress(\"apigee_range\", new()\n {\n Name = \"apigee-range\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = apigeeNetwork.Id,\n });\n\n var apigeeVpcConnection = new Gcp.ServiceNetworking.Connection(\"apigee_vpc_connection\", new()\n {\n Network = apigeeNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n apigeeRange.Name,\n },\n });\n\n var org = new Gcp.Apigee.Organization(\"org\", new()\n {\n AnalyticsRegion = \"us-central1\",\n ProjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n AuthorizedNetwork = apigeeNetwork.Id,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n apigeeVpcConnection,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/apigee\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := organizations.GetClientConfig(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeNetwork, err := compute.NewNetwork(ctx, \"apigee_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"apigee-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeRange, err := compute.NewGlobalAddress(ctx, \"apigee_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"apigee-range\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeVpcConnection, err := servicenetworking.NewConnection(ctx, \"apigee_vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tapigeeRange.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigee.NewOrganization(ctx, \"org\", \u0026apigee.OrganizationArgs{\n\t\t\tAnalyticsRegion: pulumi.String(\"us-central1\"),\n\t\t\tProjectId: pulumi.String(current.Project),\n\t\t\tAuthorizedNetwork: apigeeNetwork.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapigeeVpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.apigee.Organization;\nimport com.pulumi.gcp.apigee.OrganizationArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = OrganizationsFunctions.getClientConfig();\n\n var apigeeNetwork = new Network(\"apigeeNetwork\", NetworkArgs.builder()\n .name(\"apigee-network\")\n .build());\n\n var apigeeRange = new GlobalAddress(\"apigeeRange\", GlobalAddressArgs.builder()\n .name(\"apigee-range\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(apigeeNetwork.id())\n .build());\n\n var apigeeVpcConnection = new Connection(\"apigeeVpcConnection\", ConnectionArgs.builder()\n .network(apigeeNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(apigeeRange.name())\n .build());\n\n var org = new Organization(\"org\", OrganizationArgs.builder()\n .analyticsRegion(\"us-central1\")\n .projectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .authorizedNetwork(apigeeNetwork.id())\n .build(), CustomResourceOptions.builder()\n .dependsOn(apigeeVpcConnection)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n apigeeNetwork:\n type: gcp:compute:Network\n name: apigee_network\n properties:\n name: apigee-network\n apigeeRange:\n type: gcp:compute:GlobalAddress\n name: apigee_range\n properties:\n name: apigee-range\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${apigeeNetwork.id}\n apigeeVpcConnection:\n type: gcp:servicenetworking:Connection\n name: apigee_vpc_connection\n properties:\n network: ${apigeeNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${apigeeRange.name}\n org:\n type: gcp:apigee:Organization\n properties:\n analyticsRegion: us-central1\n projectId: ${current.project}\n authorizedNetwork: ${apigeeNetwork.id}\n options:\n dependson:\n - ${apigeeVpcConnection}\nvariables:\n current:\n fn::invoke:\n Function: gcp:organizations:getClientConfig\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Apigee Organization Cloud Basic Disable Vpc Peering\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst current = gcp.organizations.getClientConfig({});\nconst org = new gcp.apigee.Organization(\"org\", {\n description: \"Terraform-provisioned basic Apigee Org without VPC Peering.\",\n analyticsRegion: \"us-central1\",\n projectId: current.then(current =\u003e current.project),\n disableVpcPeering: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncurrent = gcp.organizations.get_client_config()\norg = gcp.apigee.Organization(\"org\",\n description=\"Terraform-provisioned basic Apigee Org without VPC Peering.\",\n analytics_region=\"us-central1\",\n project_id=current.project,\n disable_vpc_peering=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Gcp.Organizations.GetClientConfig.Invoke();\n\n var org = new Gcp.Apigee.Organization(\"org\", new()\n {\n Description = \"Terraform-provisioned basic Apigee Org without VPC Peering.\",\n AnalyticsRegion = \"us-central1\",\n ProjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n DisableVpcPeering = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/apigee\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := organizations.GetClientConfig(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigee.NewOrganization(ctx, \"org\", \u0026apigee.OrganizationArgs{\n\t\t\tDescription: pulumi.String(\"Terraform-provisioned basic Apigee Org without VPC Peering.\"),\n\t\t\tAnalyticsRegion: pulumi.String(\"us-central1\"),\n\t\t\tProjectId: pulumi.String(current.Project),\n\t\t\tDisableVpcPeering: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.apigee.Organization;\nimport com.pulumi.gcp.apigee.OrganizationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = OrganizationsFunctions.getClientConfig();\n\n var org = new Organization(\"org\", OrganizationArgs.builder()\n .description(\"Terraform-provisioned basic Apigee Org without VPC Peering.\")\n .analyticsRegion(\"us-central1\")\n .projectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .disableVpcPeering(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n org:\n type: gcp:apigee:Organization\n properties:\n description: Terraform-provisioned basic Apigee Org without VPC Peering.\n analyticsRegion: us-central1\n projectId: ${current.project}\n disableVpcPeering: true\nvariables:\n current:\n fn::invoke:\n Function: gcp:organizations:getClientConfig\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Apigee Organization Cloud Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst current = gcp.organizations.getClientConfig({});\nconst apigeeNetwork = new gcp.compute.Network(\"apigee_network\", {name: \"apigee-network\"});\nconst apigeeRange = new gcp.compute.GlobalAddress(\"apigee_range\", {\n name: \"apigee-range\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: apigeeNetwork.id,\n});\nconst apigeeVpcConnection = new gcp.servicenetworking.Connection(\"apigee_vpc_connection\", {\n network: apigeeNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [apigeeRange.name],\n});\nconst apigeeKeyring = new gcp.kms.KeyRing(\"apigee_keyring\", {\n name: \"apigee-keyring\",\n location: \"us-central1\",\n});\nconst apigeeKey = new gcp.kms.CryptoKey(\"apigee_key\", {\n name: \"apigee-key\",\n keyRing: apigeeKeyring.id,\n});\nconst apigeeSa = new gcp.projects.ServiceIdentity(\"apigee_sa\", {\n project: project.projectId,\n service: apigee.service,\n});\nconst apigeeSaKeyuser = new gcp.kms.CryptoKeyIAMMember(\"apigee_sa_keyuser\", {\n cryptoKeyId: apigeeKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: apigeeSa.member,\n});\nconst org = new gcp.apigee.Organization(\"org\", {\n analyticsRegion: \"us-central1\",\n displayName: \"apigee-org\",\n description: \"Auto-provisioned Apigee Org.\",\n projectId: current.then(current =\u003e current.project),\n authorizedNetwork: apigeeNetwork.id,\n runtimeDatabaseEncryptionKeyName: apigeeKey.id,\n}, {\n dependsOn: [\n apigeeVpcConnection,\n apigeeSaKeyuser,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncurrent = gcp.organizations.get_client_config()\napigee_network = gcp.compute.Network(\"apigee_network\", name=\"apigee-network\")\napigee_range = gcp.compute.GlobalAddress(\"apigee_range\",\n name=\"apigee-range\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=apigee_network.id)\napigee_vpc_connection = gcp.servicenetworking.Connection(\"apigee_vpc_connection\",\n network=apigee_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[apigee_range.name])\napigee_keyring = gcp.kms.KeyRing(\"apigee_keyring\",\n name=\"apigee-keyring\",\n location=\"us-central1\")\napigee_key = gcp.kms.CryptoKey(\"apigee_key\",\n name=\"apigee-key\",\n key_ring=apigee_keyring.id)\napigee_sa = gcp.projects.ServiceIdentity(\"apigee_sa\",\n project=project[\"projectId\"],\n service=apigee[\"service\"])\napigee_sa_keyuser = gcp.kms.CryptoKeyIAMMember(\"apigee_sa_keyuser\",\n crypto_key_id=apigee_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=apigee_sa.member)\norg = gcp.apigee.Organization(\"org\",\n analytics_region=\"us-central1\",\n display_name=\"apigee-org\",\n description=\"Auto-provisioned Apigee Org.\",\n project_id=current.project,\n authorized_network=apigee_network.id,\n runtime_database_encryption_key_name=apigee_key.id,\n opts = pulumi.ResourceOptions(depends_on=[\n apigee_vpc_connection,\n apigee_sa_keyuser,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Gcp.Organizations.GetClientConfig.Invoke();\n\n var apigeeNetwork = new Gcp.Compute.Network(\"apigee_network\", new()\n {\n Name = \"apigee-network\",\n });\n\n var apigeeRange = new Gcp.Compute.GlobalAddress(\"apigee_range\", new()\n {\n Name = \"apigee-range\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = apigeeNetwork.Id,\n });\n\n var apigeeVpcConnection = new Gcp.ServiceNetworking.Connection(\"apigee_vpc_connection\", new()\n {\n Network = apigeeNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n apigeeRange.Name,\n },\n });\n\n var apigeeKeyring = new Gcp.Kms.KeyRing(\"apigee_keyring\", new()\n {\n Name = \"apigee-keyring\",\n Location = \"us-central1\",\n });\n\n var apigeeKey = new Gcp.Kms.CryptoKey(\"apigee_key\", new()\n {\n Name = \"apigee-key\",\n KeyRing = apigeeKeyring.Id,\n });\n\n var apigeeSa = new Gcp.Projects.ServiceIdentity(\"apigee_sa\", new()\n {\n Project = project.ProjectId,\n Service = apigee.Service,\n });\n\n var apigeeSaKeyuser = new Gcp.Kms.CryptoKeyIAMMember(\"apigee_sa_keyuser\", new()\n {\n CryptoKeyId = apigeeKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = apigeeSa.Member,\n });\n\n var org = new Gcp.Apigee.Organization(\"org\", new()\n {\n AnalyticsRegion = \"us-central1\",\n DisplayName = \"apigee-org\",\n Description = \"Auto-provisioned Apigee Org.\",\n ProjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n AuthorizedNetwork = apigeeNetwork.Id,\n RuntimeDatabaseEncryptionKeyName = apigeeKey.Id,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n apigeeVpcConnection,\n apigeeSaKeyuser,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/apigee\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := organizations.GetClientConfig(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeNetwork, err := compute.NewNetwork(ctx, \"apigee_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"apigee-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeRange, err := compute.NewGlobalAddress(ctx, \"apigee_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"apigee-range\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeVpcConnection, err := servicenetworking.NewConnection(ctx, \"apigee_vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tapigeeRange.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeKeyring, err := kms.NewKeyRing(ctx, \"apigee_keyring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"apigee-keyring\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeKey, err := kms.NewCryptoKey(ctx, \"apigee_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"apigee-key\"),\n\t\t\tKeyRing: apigeeKeyring.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeSa, err := projects.NewServiceIdentity(ctx, \"apigee_sa\", \u0026projects.ServiceIdentityArgs{\n\t\t\tProject: pulumi.Any(project.ProjectId),\n\t\t\tService: pulumi.Any(apigee.Service),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeSaKeyuser, err := kms.NewCryptoKeyIAMMember(ctx, \"apigee_sa_keyuser\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: apigeeKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: apigeeSa.Member,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigee.NewOrganization(ctx, \"org\", \u0026apigee.OrganizationArgs{\n\t\t\tAnalyticsRegion: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"apigee-org\"),\n\t\t\tDescription: pulumi.String(\"Auto-provisioned Apigee Org.\"),\n\t\t\tProjectId: pulumi.String(current.Project),\n\t\t\tAuthorizedNetwork: apigeeNetwork.ID(),\n\t\t\tRuntimeDatabaseEncryptionKeyName: apigeeKey.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapigeeVpcConnection,\n\t\t\tapigeeSaKeyuser,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.projects.ServiceIdentity;\nimport com.pulumi.gcp.projects.ServiceIdentityArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.apigee.Organization;\nimport com.pulumi.gcp.apigee.OrganizationArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = OrganizationsFunctions.getClientConfig();\n\n var apigeeNetwork = new Network(\"apigeeNetwork\", NetworkArgs.builder()\n .name(\"apigee-network\")\n .build());\n\n var apigeeRange = new GlobalAddress(\"apigeeRange\", GlobalAddressArgs.builder()\n .name(\"apigee-range\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(apigeeNetwork.id())\n .build());\n\n var apigeeVpcConnection = new Connection(\"apigeeVpcConnection\", ConnectionArgs.builder()\n .network(apigeeNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(apigeeRange.name())\n .build());\n\n var apigeeKeyring = new KeyRing(\"apigeeKeyring\", KeyRingArgs.builder()\n .name(\"apigee-keyring\")\n .location(\"us-central1\")\n .build());\n\n var apigeeKey = new CryptoKey(\"apigeeKey\", CryptoKeyArgs.builder()\n .name(\"apigee-key\")\n .keyRing(apigeeKeyring.id())\n .build());\n\n var apigeeSa = new ServiceIdentity(\"apigeeSa\", ServiceIdentityArgs.builder()\n .project(project.projectId())\n .service(apigee.service())\n .build());\n\n var apigeeSaKeyuser = new CryptoKeyIAMMember(\"apigeeSaKeyuser\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(apigeeKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(apigeeSa.member())\n .build());\n\n var org = new Organization(\"org\", OrganizationArgs.builder()\n .analyticsRegion(\"us-central1\")\n .displayName(\"apigee-org\")\n .description(\"Auto-provisioned Apigee Org.\")\n .projectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .authorizedNetwork(apigeeNetwork.id())\n .runtimeDatabaseEncryptionKeyName(apigeeKey.id())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n apigeeVpcConnection,\n apigeeSaKeyuser)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n apigeeNetwork:\n type: gcp:compute:Network\n name: apigee_network\n properties:\n name: apigee-network\n apigeeRange:\n type: gcp:compute:GlobalAddress\n name: apigee_range\n properties:\n name: apigee-range\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${apigeeNetwork.id}\n apigeeVpcConnection:\n type: gcp:servicenetworking:Connection\n name: apigee_vpc_connection\n properties:\n network: ${apigeeNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${apigeeRange.name}\n apigeeKeyring:\n type: gcp:kms:KeyRing\n name: apigee_keyring\n properties:\n name: apigee-keyring\n location: us-central1\n apigeeKey:\n type: gcp:kms:CryptoKey\n name: apigee_key\n properties:\n name: apigee-key\n keyRing: ${apigeeKeyring.id}\n apigeeSa:\n type: gcp:projects:ServiceIdentity\n name: apigee_sa\n properties:\n project: ${project.projectId}\n service: ${apigee.service}\n apigeeSaKeyuser:\n type: gcp:kms:CryptoKeyIAMMember\n name: apigee_sa_keyuser\n properties:\n cryptoKeyId: ${apigeeKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: ${apigeeSa.member}\n org:\n type: gcp:apigee:Organization\n properties:\n analyticsRegion: us-central1\n displayName: apigee-org\n description: Auto-provisioned Apigee Org.\n projectId: ${current.project}\n authorizedNetwork: ${apigeeNetwork.id}\n runtimeDatabaseEncryptionKeyName: ${apigeeKey.id}\n options:\n dependson:\n - ${apigeeVpcConnection}\n - ${apigeeSaKeyuser}\nvariables:\n current:\n fn::invoke:\n Function: gcp:organizations:getClientConfig\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Apigee Organization Cloud Full Disable Vpc Peering\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst current = gcp.organizations.getClientConfig({});\nconst apigeeKeyring = new gcp.kms.KeyRing(\"apigee_keyring\", {\n name: \"apigee-keyring\",\n location: \"us-central1\",\n});\nconst apigeeKey = new gcp.kms.CryptoKey(\"apigee_key\", {\n name: \"apigee-key\",\n keyRing: apigeeKeyring.id,\n});\nconst apigeeSa = new gcp.projects.ServiceIdentity(\"apigee_sa\", {\n project: project.projectId,\n service: apigee.service,\n});\nconst apigeeSaKeyuser = new gcp.kms.CryptoKeyIAMMember(\"apigee_sa_keyuser\", {\n cryptoKeyId: apigeeKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: apigeeSa.member,\n});\nconst org = new gcp.apigee.Organization(\"org\", {\n analyticsRegion: \"us-central1\",\n displayName: \"apigee-org\",\n description: \"Terraform-provisioned Apigee Org without VPC Peering.\",\n projectId: current.then(current =\u003e current.project),\n disableVpcPeering: true,\n runtimeDatabaseEncryptionKeyName: apigeeKey.id,\n}, {\n dependsOn: [apigeeSaKeyuser],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncurrent = gcp.organizations.get_client_config()\napigee_keyring = gcp.kms.KeyRing(\"apigee_keyring\",\n name=\"apigee-keyring\",\n location=\"us-central1\")\napigee_key = gcp.kms.CryptoKey(\"apigee_key\",\n name=\"apigee-key\",\n key_ring=apigee_keyring.id)\napigee_sa = gcp.projects.ServiceIdentity(\"apigee_sa\",\n project=project[\"projectId\"],\n service=apigee[\"service\"])\napigee_sa_keyuser = gcp.kms.CryptoKeyIAMMember(\"apigee_sa_keyuser\",\n crypto_key_id=apigee_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=apigee_sa.member)\norg = gcp.apigee.Organization(\"org\",\n analytics_region=\"us-central1\",\n display_name=\"apigee-org\",\n description=\"Terraform-provisioned Apigee Org without VPC Peering.\",\n project_id=current.project,\n disable_vpc_peering=True,\n runtime_database_encryption_key_name=apigee_key.id,\n opts = pulumi.ResourceOptions(depends_on=[apigee_sa_keyuser]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Gcp.Organizations.GetClientConfig.Invoke();\n\n var apigeeKeyring = new Gcp.Kms.KeyRing(\"apigee_keyring\", new()\n {\n Name = \"apigee-keyring\",\n Location = \"us-central1\",\n });\n\n var apigeeKey = new Gcp.Kms.CryptoKey(\"apigee_key\", new()\n {\n Name = \"apigee-key\",\n KeyRing = apigeeKeyring.Id,\n });\n\n var apigeeSa = new Gcp.Projects.ServiceIdentity(\"apigee_sa\", new()\n {\n Project = project.ProjectId,\n Service = apigee.Service,\n });\n\n var apigeeSaKeyuser = new Gcp.Kms.CryptoKeyIAMMember(\"apigee_sa_keyuser\", new()\n {\n CryptoKeyId = apigeeKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = apigeeSa.Member,\n });\n\n var org = new Gcp.Apigee.Organization(\"org\", new()\n {\n AnalyticsRegion = \"us-central1\",\n DisplayName = \"apigee-org\",\n Description = \"Terraform-provisioned Apigee Org without VPC Peering.\",\n ProjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n DisableVpcPeering = true,\n RuntimeDatabaseEncryptionKeyName = apigeeKey.Id,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n apigeeSaKeyuser,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/apigee\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/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\tcurrent, err := organizations.GetClientConfig(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeKeyring, err := kms.NewKeyRing(ctx, \"apigee_keyring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"apigee-keyring\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeKey, err := kms.NewCryptoKey(ctx, \"apigee_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"apigee-key\"),\n\t\t\tKeyRing: apigeeKeyring.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeSa, err := projects.NewServiceIdentity(ctx, \"apigee_sa\", \u0026projects.ServiceIdentityArgs{\n\t\t\tProject: pulumi.Any(project.ProjectId),\n\t\t\tService: pulumi.Any(apigee.Service),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeSaKeyuser, err := kms.NewCryptoKeyIAMMember(ctx, \"apigee_sa_keyuser\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: apigeeKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: apigeeSa.Member,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigee.NewOrganization(ctx, \"org\", \u0026apigee.OrganizationArgs{\n\t\t\tAnalyticsRegion: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"apigee-org\"),\n\t\t\tDescription: pulumi.String(\"Terraform-provisioned Apigee Org without VPC Peering.\"),\n\t\t\tProjectId: pulumi.String(current.Project),\n\t\t\tDisableVpcPeering: pulumi.Bool(true),\n\t\t\tRuntimeDatabaseEncryptionKeyName: apigeeKey.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapigeeSaKeyuser,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.projects.ServiceIdentity;\nimport com.pulumi.gcp.projects.ServiceIdentityArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.apigee.Organization;\nimport com.pulumi.gcp.apigee.OrganizationArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = OrganizationsFunctions.getClientConfig();\n\n var apigeeKeyring = new KeyRing(\"apigeeKeyring\", KeyRingArgs.builder()\n .name(\"apigee-keyring\")\n .location(\"us-central1\")\n .build());\n\n var apigeeKey = new CryptoKey(\"apigeeKey\", CryptoKeyArgs.builder()\n .name(\"apigee-key\")\n .keyRing(apigeeKeyring.id())\n .build());\n\n var apigeeSa = new ServiceIdentity(\"apigeeSa\", ServiceIdentityArgs.builder()\n .project(project.projectId())\n .service(apigee.service())\n .build());\n\n var apigeeSaKeyuser = new CryptoKeyIAMMember(\"apigeeSaKeyuser\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(apigeeKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(apigeeSa.member())\n .build());\n\n var org = new Organization(\"org\", OrganizationArgs.builder()\n .analyticsRegion(\"us-central1\")\n .displayName(\"apigee-org\")\n .description(\"Terraform-provisioned Apigee Org without VPC Peering.\")\n .projectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .disableVpcPeering(true)\n .runtimeDatabaseEncryptionKeyName(apigeeKey.id())\n .build(), CustomResourceOptions.builder()\n .dependsOn(apigeeSaKeyuser)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n apigeeKeyring:\n type: gcp:kms:KeyRing\n name: apigee_keyring\n properties:\n name: apigee-keyring\n location: us-central1\n apigeeKey:\n type: gcp:kms:CryptoKey\n name: apigee_key\n properties:\n name: apigee-key\n keyRing: ${apigeeKeyring.id}\n apigeeSa:\n type: gcp:projects:ServiceIdentity\n name: apigee_sa\n properties:\n project: ${project.projectId}\n service: ${apigee.service}\n apigeeSaKeyuser:\n type: gcp:kms:CryptoKeyIAMMember\n name: apigee_sa_keyuser\n properties:\n cryptoKeyId: ${apigeeKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: ${apigeeSa.member}\n org:\n type: gcp:apigee:Organization\n properties:\n analyticsRegion: us-central1\n displayName: apigee-org\n description: Terraform-provisioned Apigee Org without VPC Peering.\n projectId: ${current.project}\n disableVpcPeering: true\n runtimeDatabaseEncryptionKeyName: ${apigeeKey.id}\n options:\n dependson:\n - ${apigeeSaKeyuser}\nvariables:\n current:\n fn::invoke:\n Function: gcp:organizations:getClientConfig\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nOrganization can be imported using any of these accepted formats:\n\n* `organizations/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Organization can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:apigee/organization:Organization default organizations/{{name}}\n```\n\n```sh\n$ pulumi import gcp:apigee/organization:Organization default {{name}}\n```\n\n", + "description": "An `Organization` is the top-level container in Apigee.\n\n\nTo get more information about Organization, see:\n\n* [API documentation](https://cloud.google.com/apigee/docs/reference/apis/apigee/rest/v1/organizations)\n* How-to Guides\n * [Creating an API organization](https://cloud.google.com/apigee/docs/api-platform/get-started/create-org)\n\n## Example Usage\n\n### Apigee Organization Cloud Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst current = gcp.organizations.getClientConfig({});\nconst apigeeNetwork = new gcp.compute.Network(\"apigee_network\", {name: \"apigee-network\"});\nconst apigeeRange = new gcp.compute.GlobalAddress(\"apigee_range\", {\n name: \"apigee-range\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: apigeeNetwork.id,\n});\nconst apigeeVpcConnection = new gcp.servicenetworking.Connection(\"apigee_vpc_connection\", {\n network: apigeeNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [apigeeRange.name],\n});\nconst org = new gcp.apigee.Organization(\"org\", {\n analyticsRegion: \"us-central1\",\n projectId: current.then(current =\u003e current.project),\n authorizedNetwork: apigeeNetwork.id,\n}, {\n dependsOn: [apigeeVpcConnection],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncurrent = gcp.organizations.get_client_config()\napigee_network = gcp.compute.Network(\"apigee_network\", name=\"apigee-network\")\napigee_range = gcp.compute.GlobalAddress(\"apigee_range\",\n name=\"apigee-range\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=apigee_network.id)\napigee_vpc_connection = gcp.servicenetworking.Connection(\"apigee_vpc_connection\",\n network=apigee_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[apigee_range.name])\norg = gcp.apigee.Organization(\"org\",\n analytics_region=\"us-central1\",\n project_id=current.project,\n authorized_network=apigee_network.id,\n opts = pulumi.ResourceOptions(depends_on=[apigee_vpc_connection]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Gcp.Organizations.GetClientConfig.Invoke();\n\n var apigeeNetwork = new Gcp.Compute.Network(\"apigee_network\", new()\n {\n Name = \"apigee-network\",\n });\n\n var apigeeRange = new Gcp.Compute.GlobalAddress(\"apigee_range\", new()\n {\n Name = \"apigee-range\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = apigeeNetwork.Id,\n });\n\n var apigeeVpcConnection = new Gcp.ServiceNetworking.Connection(\"apigee_vpc_connection\", new()\n {\n Network = apigeeNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n apigeeRange.Name,\n },\n });\n\n var org = new Gcp.Apigee.Organization(\"org\", new()\n {\n AnalyticsRegion = \"us-central1\",\n ProjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n AuthorizedNetwork = apigeeNetwork.Id,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n apigeeVpcConnection,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/apigee\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := organizations.GetClientConfig(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeNetwork, err := compute.NewNetwork(ctx, \"apigee_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"apigee-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeRange, err := compute.NewGlobalAddress(ctx, \"apigee_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"apigee-range\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeVpcConnection, err := servicenetworking.NewConnection(ctx, \"apigee_vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tapigeeRange.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigee.NewOrganization(ctx, \"org\", \u0026apigee.OrganizationArgs{\n\t\t\tAnalyticsRegion: pulumi.String(\"us-central1\"),\n\t\t\tProjectId: pulumi.String(current.Project),\n\t\t\tAuthorizedNetwork: apigeeNetwork.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapigeeVpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.apigee.Organization;\nimport com.pulumi.gcp.apigee.OrganizationArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = OrganizationsFunctions.getClientConfig();\n\n var apigeeNetwork = new Network(\"apigeeNetwork\", NetworkArgs.builder()\n .name(\"apigee-network\")\n .build());\n\n var apigeeRange = new GlobalAddress(\"apigeeRange\", GlobalAddressArgs.builder()\n .name(\"apigee-range\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(apigeeNetwork.id())\n .build());\n\n var apigeeVpcConnection = new Connection(\"apigeeVpcConnection\", ConnectionArgs.builder()\n .network(apigeeNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(apigeeRange.name())\n .build());\n\n var org = new Organization(\"org\", OrganizationArgs.builder()\n .analyticsRegion(\"us-central1\")\n .projectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .authorizedNetwork(apigeeNetwork.id())\n .build(), CustomResourceOptions.builder()\n .dependsOn(apigeeVpcConnection)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n apigeeNetwork:\n type: gcp:compute:Network\n name: apigee_network\n properties:\n name: apigee-network\n apigeeRange:\n type: gcp:compute:GlobalAddress\n name: apigee_range\n properties:\n name: apigee-range\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${apigeeNetwork.id}\n apigeeVpcConnection:\n type: gcp:servicenetworking:Connection\n name: apigee_vpc_connection\n properties:\n network: ${apigeeNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${apigeeRange.name}\n org:\n type: gcp:apigee:Organization\n properties:\n analyticsRegion: us-central1\n projectId: ${current.project}\n authorizedNetwork: ${apigeeNetwork.id}\n options:\n dependson:\n - ${apigeeVpcConnection}\nvariables:\n current:\n fn::invoke:\n Function: gcp:organizations:getClientConfig\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Apigee Organization Cloud Basic Disable Vpc Peering\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst current = gcp.organizations.getClientConfig({});\nconst org = new gcp.apigee.Organization(\"org\", {\n description: \"Terraform-provisioned basic Apigee Org without VPC Peering.\",\n analyticsRegion: \"us-central1\",\n projectId: current.then(current =\u003e current.project),\n disableVpcPeering: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncurrent = gcp.organizations.get_client_config()\norg = gcp.apigee.Organization(\"org\",\n description=\"Terraform-provisioned basic Apigee Org without VPC Peering.\",\n analytics_region=\"us-central1\",\n project_id=current.project,\n disable_vpc_peering=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Gcp.Organizations.GetClientConfig.Invoke();\n\n var org = new Gcp.Apigee.Organization(\"org\", new()\n {\n Description = \"Terraform-provisioned basic Apigee Org without VPC Peering.\",\n AnalyticsRegion = \"us-central1\",\n ProjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n DisableVpcPeering = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/apigee\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := organizations.GetClientConfig(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigee.NewOrganization(ctx, \"org\", \u0026apigee.OrganizationArgs{\n\t\t\tDescription: pulumi.String(\"Terraform-provisioned basic Apigee Org without VPC Peering.\"),\n\t\t\tAnalyticsRegion: pulumi.String(\"us-central1\"),\n\t\t\tProjectId: pulumi.String(current.Project),\n\t\t\tDisableVpcPeering: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.apigee.Organization;\nimport com.pulumi.gcp.apigee.OrganizationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = OrganizationsFunctions.getClientConfig();\n\n var org = new Organization(\"org\", OrganizationArgs.builder()\n .description(\"Terraform-provisioned basic Apigee Org without VPC Peering.\")\n .analyticsRegion(\"us-central1\")\n .projectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .disableVpcPeering(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n org:\n type: gcp:apigee:Organization\n properties:\n description: Terraform-provisioned basic Apigee Org without VPC Peering.\n analyticsRegion: us-central1\n projectId: ${current.project}\n disableVpcPeering: true\nvariables:\n current:\n fn::invoke:\n Function: gcp:organizations:getClientConfig\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Apigee Organization Cloud Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst current = gcp.organizations.getClientConfig({});\nconst apigeeNetwork = new gcp.compute.Network(\"apigee_network\", {name: \"apigee-network\"});\nconst apigeeRange = new gcp.compute.GlobalAddress(\"apigee_range\", {\n name: \"apigee-range\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: apigeeNetwork.id,\n});\nconst apigeeVpcConnection = new gcp.servicenetworking.Connection(\"apigee_vpc_connection\", {\n network: apigeeNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [apigeeRange.name],\n});\nconst apigeeKeyring = new gcp.kms.KeyRing(\"apigee_keyring\", {\n name: \"apigee-keyring\",\n location: \"us-central1\",\n});\nconst apigeeKey = new gcp.kms.CryptoKey(\"apigee_key\", {\n name: \"apigee-key\",\n keyRing: apigeeKeyring.id,\n});\nconst apigeeSa = new gcp.projects.ServiceIdentity(\"apigee_sa\", {\n project: project.projectId,\n service: apigee.service,\n});\nconst apigeeSaKeyuser = new gcp.kms.CryptoKeyIAMMember(\"apigee_sa_keyuser\", {\n cryptoKeyId: apigeeKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: apigeeSa.member,\n});\nconst org = new gcp.apigee.Organization(\"org\", {\n analyticsRegion: \"us-central1\",\n displayName: \"apigee-org\",\n description: \"Auto-provisioned Apigee Org.\",\n projectId: current.then(current =\u003e current.project),\n authorizedNetwork: apigeeNetwork.id,\n runtimeDatabaseEncryptionKeyName: apigeeKey.id,\n}, {\n dependsOn: [\n apigeeVpcConnection,\n apigeeSaKeyuser,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncurrent = gcp.organizations.get_client_config()\napigee_network = gcp.compute.Network(\"apigee_network\", name=\"apigee-network\")\napigee_range = gcp.compute.GlobalAddress(\"apigee_range\",\n name=\"apigee-range\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=apigee_network.id)\napigee_vpc_connection = gcp.servicenetworking.Connection(\"apigee_vpc_connection\",\n network=apigee_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[apigee_range.name])\napigee_keyring = gcp.kms.KeyRing(\"apigee_keyring\",\n name=\"apigee-keyring\",\n location=\"us-central1\")\napigee_key = gcp.kms.CryptoKey(\"apigee_key\",\n name=\"apigee-key\",\n key_ring=apigee_keyring.id)\napigee_sa = gcp.projects.ServiceIdentity(\"apigee_sa\",\n project=project[\"projectId\"],\n service=apigee[\"service\"])\napigee_sa_keyuser = gcp.kms.CryptoKeyIAMMember(\"apigee_sa_keyuser\",\n crypto_key_id=apigee_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=apigee_sa.member)\norg = gcp.apigee.Organization(\"org\",\n analytics_region=\"us-central1\",\n display_name=\"apigee-org\",\n description=\"Auto-provisioned Apigee Org.\",\n project_id=current.project,\n authorized_network=apigee_network.id,\n runtime_database_encryption_key_name=apigee_key.id,\n opts = pulumi.ResourceOptions(depends_on=[\n apigee_vpc_connection,\n apigee_sa_keyuser,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Gcp.Organizations.GetClientConfig.Invoke();\n\n var apigeeNetwork = new Gcp.Compute.Network(\"apigee_network\", new()\n {\n Name = \"apigee-network\",\n });\n\n var apigeeRange = new Gcp.Compute.GlobalAddress(\"apigee_range\", new()\n {\n Name = \"apigee-range\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = apigeeNetwork.Id,\n });\n\n var apigeeVpcConnection = new Gcp.ServiceNetworking.Connection(\"apigee_vpc_connection\", new()\n {\n Network = apigeeNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n apigeeRange.Name,\n },\n });\n\n var apigeeKeyring = new Gcp.Kms.KeyRing(\"apigee_keyring\", new()\n {\n Name = \"apigee-keyring\",\n Location = \"us-central1\",\n });\n\n var apigeeKey = new Gcp.Kms.CryptoKey(\"apigee_key\", new()\n {\n Name = \"apigee-key\",\n KeyRing = apigeeKeyring.Id,\n });\n\n var apigeeSa = new Gcp.Projects.ServiceIdentity(\"apigee_sa\", new()\n {\n Project = project.ProjectId,\n Service = apigee.Service,\n });\n\n var apigeeSaKeyuser = new Gcp.Kms.CryptoKeyIAMMember(\"apigee_sa_keyuser\", new()\n {\n CryptoKeyId = apigeeKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = apigeeSa.Member,\n });\n\n var org = new Gcp.Apigee.Organization(\"org\", new()\n {\n AnalyticsRegion = \"us-central1\",\n DisplayName = \"apigee-org\",\n Description = \"Auto-provisioned Apigee Org.\",\n ProjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n AuthorizedNetwork = apigeeNetwork.Id,\n RuntimeDatabaseEncryptionKeyName = apigeeKey.Id,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n apigeeVpcConnection,\n apigeeSaKeyuser,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/apigee\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := organizations.GetClientConfig(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeNetwork, err := compute.NewNetwork(ctx, \"apigee_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"apigee-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeRange, err := compute.NewGlobalAddress(ctx, \"apigee_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"apigee-range\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeVpcConnection, err := servicenetworking.NewConnection(ctx, \"apigee_vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: apigeeNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tapigeeRange.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeKeyring, err := kms.NewKeyRing(ctx, \"apigee_keyring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"apigee-keyring\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeKey, err := kms.NewCryptoKey(ctx, \"apigee_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"apigee-key\"),\n\t\t\tKeyRing: apigeeKeyring.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeSa, err := projects.NewServiceIdentity(ctx, \"apigee_sa\", \u0026projects.ServiceIdentityArgs{\n\t\t\tProject: pulumi.Any(project.ProjectId),\n\t\t\tService: pulumi.Any(apigee.Service),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeSaKeyuser, err := kms.NewCryptoKeyIAMMember(ctx, \"apigee_sa_keyuser\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: apigeeKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: apigeeSa.Member,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigee.NewOrganization(ctx, \"org\", \u0026apigee.OrganizationArgs{\n\t\t\tAnalyticsRegion: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"apigee-org\"),\n\t\t\tDescription: pulumi.String(\"Auto-provisioned Apigee Org.\"),\n\t\t\tProjectId: pulumi.String(current.Project),\n\t\t\tAuthorizedNetwork: apigeeNetwork.ID(),\n\t\t\tRuntimeDatabaseEncryptionKeyName: apigeeKey.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapigeeVpcConnection,\n\t\t\tapigeeSaKeyuser,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.projects.ServiceIdentity;\nimport com.pulumi.gcp.projects.ServiceIdentityArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.apigee.Organization;\nimport com.pulumi.gcp.apigee.OrganizationArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = OrganizationsFunctions.getClientConfig();\n\n var apigeeNetwork = new Network(\"apigeeNetwork\", NetworkArgs.builder()\n .name(\"apigee-network\")\n .build());\n\n var apigeeRange = new GlobalAddress(\"apigeeRange\", GlobalAddressArgs.builder()\n .name(\"apigee-range\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(apigeeNetwork.id())\n .build());\n\n var apigeeVpcConnection = new Connection(\"apigeeVpcConnection\", ConnectionArgs.builder()\n .network(apigeeNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(apigeeRange.name())\n .build());\n\n var apigeeKeyring = new KeyRing(\"apigeeKeyring\", KeyRingArgs.builder()\n .name(\"apigee-keyring\")\n .location(\"us-central1\")\n .build());\n\n var apigeeKey = new CryptoKey(\"apigeeKey\", CryptoKeyArgs.builder()\n .name(\"apigee-key\")\n .keyRing(apigeeKeyring.id())\n .build());\n\n var apigeeSa = new ServiceIdentity(\"apigeeSa\", ServiceIdentityArgs.builder()\n .project(project.projectId())\n .service(apigee.service())\n .build());\n\n var apigeeSaKeyuser = new CryptoKeyIAMMember(\"apigeeSaKeyuser\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(apigeeKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(apigeeSa.member())\n .build());\n\n var org = new Organization(\"org\", OrganizationArgs.builder()\n .analyticsRegion(\"us-central1\")\n .displayName(\"apigee-org\")\n .description(\"Auto-provisioned Apigee Org.\")\n .projectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .authorizedNetwork(apigeeNetwork.id())\n .runtimeDatabaseEncryptionKeyName(apigeeKey.id())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n apigeeVpcConnection,\n apigeeSaKeyuser)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n apigeeNetwork:\n type: gcp:compute:Network\n name: apigee_network\n properties:\n name: apigee-network\n apigeeRange:\n type: gcp:compute:GlobalAddress\n name: apigee_range\n properties:\n name: apigee-range\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${apigeeNetwork.id}\n apigeeVpcConnection:\n type: gcp:servicenetworking:Connection\n name: apigee_vpc_connection\n properties:\n network: ${apigeeNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${apigeeRange.name}\n apigeeKeyring:\n type: gcp:kms:KeyRing\n name: apigee_keyring\n properties:\n name: apigee-keyring\n location: us-central1\n apigeeKey:\n type: gcp:kms:CryptoKey\n name: apigee_key\n properties:\n name: apigee-key\n keyRing: ${apigeeKeyring.id}\n apigeeSa:\n type: gcp:projects:ServiceIdentity\n name: apigee_sa\n properties:\n project: ${project.projectId}\n service: ${apigee.service}\n apigeeSaKeyuser:\n type: gcp:kms:CryptoKeyIAMMember\n name: apigee_sa_keyuser\n properties:\n cryptoKeyId: ${apigeeKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: ${apigeeSa.member}\n org:\n type: gcp:apigee:Organization\n properties:\n analyticsRegion: us-central1\n displayName: apigee-org\n description: Auto-provisioned Apigee Org.\n projectId: ${current.project}\n authorizedNetwork: ${apigeeNetwork.id}\n runtimeDatabaseEncryptionKeyName: ${apigeeKey.id}\n options:\n dependson:\n - ${apigeeVpcConnection}\n - ${apigeeSaKeyuser}\nvariables:\n current:\n fn::invoke:\n Function: gcp:organizations:getClientConfig\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Apigee Organization Cloud Full Disable Vpc Peering\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst current = gcp.organizations.getClientConfig({});\nconst apigeeKeyring = new gcp.kms.KeyRing(\"apigee_keyring\", {\n name: \"apigee-keyring\",\n location: \"us-central1\",\n});\nconst apigeeKey = new gcp.kms.CryptoKey(\"apigee_key\", {\n name: \"apigee-key\",\n keyRing: apigeeKeyring.id,\n});\nconst apigeeSa = new gcp.projects.ServiceIdentity(\"apigee_sa\", {\n project: project.projectId,\n service: apigee.service,\n});\nconst apigeeSaKeyuser = new gcp.kms.CryptoKeyIAMMember(\"apigee_sa_keyuser\", {\n cryptoKeyId: apigeeKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: apigeeSa.member,\n});\nconst org = new gcp.apigee.Organization(\"org\", {\n analyticsRegion: \"us-central1\",\n displayName: \"apigee-org\",\n description: \"Terraform-provisioned Apigee Org without VPC Peering.\",\n projectId: current.then(current =\u003e current.project),\n disableVpcPeering: true,\n runtimeDatabaseEncryptionKeyName: apigeeKey.id,\n}, {\n dependsOn: [apigeeSaKeyuser],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncurrent = gcp.organizations.get_client_config()\napigee_keyring = gcp.kms.KeyRing(\"apigee_keyring\",\n name=\"apigee-keyring\",\n location=\"us-central1\")\napigee_key = gcp.kms.CryptoKey(\"apigee_key\",\n name=\"apigee-key\",\n key_ring=apigee_keyring.id)\napigee_sa = gcp.projects.ServiceIdentity(\"apigee_sa\",\n project=project[\"projectId\"],\n service=apigee[\"service\"])\napigee_sa_keyuser = gcp.kms.CryptoKeyIAMMember(\"apigee_sa_keyuser\",\n crypto_key_id=apigee_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=apigee_sa.member)\norg = gcp.apigee.Organization(\"org\",\n analytics_region=\"us-central1\",\n display_name=\"apigee-org\",\n description=\"Terraform-provisioned Apigee Org without VPC Peering.\",\n project_id=current.project,\n disable_vpc_peering=True,\n runtime_database_encryption_key_name=apigee_key.id,\n opts = pulumi.ResourceOptions(depends_on=[apigee_sa_keyuser]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Gcp.Organizations.GetClientConfig.Invoke();\n\n var apigeeKeyring = new Gcp.Kms.KeyRing(\"apigee_keyring\", new()\n {\n Name = \"apigee-keyring\",\n Location = \"us-central1\",\n });\n\n var apigeeKey = new Gcp.Kms.CryptoKey(\"apigee_key\", new()\n {\n Name = \"apigee-key\",\n KeyRing = apigeeKeyring.Id,\n });\n\n var apigeeSa = new Gcp.Projects.ServiceIdentity(\"apigee_sa\", new()\n {\n Project = project.ProjectId,\n Service = apigee.Service,\n });\n\n var apigeeSaKeyuser = new Gcp.Kms.CryptoKeyIAMMember(\"apigee_sa_keyuser\", new()\n {\n CryptoKeyId = apigeeKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = apigeeSa.Member,\n });\n\n var org = new Gcp.Apigee.Organization(\"org\", new()\n {\n AnalyticsRegion = \"us-central1\",\n DisplayName = \"apigee-org\",\n Description = \"Terraform-provisioned Apigee Org without VPC Peering.\",\n ProjectId = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n DisableVpcPeering = true,\n RuntimeDatabaseEncryptionKeyName = apigeeKey.Id,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n apigeeSaKeyuser,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/apigee\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/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\tcurrent, err := organizations.GetClientConfig(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeKeyring, err := kms.NewKeyRing(ctx, \"apigee_keyring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"apigee-keyring\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeKey, err := kms.NewCryptoKey(ctx, \"apigee_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"apigee-key\"),\n\t\t\tKeyRing: apigeeKeyring.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeSa, err := projects.NewServiceIdentity(ctx, \"apigee_sa\", \u0026projects.ServiceIdentityArgs{\n\t\t\tProject: pulumi.Any(project.ProjectId),\n\t\t\tService: pulumi.Any(apigee.Service),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeSaKeyuser, err := kms.NewCryptoKeyIAMMember(ctx, \"apigee_sa_keyuser\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: apigeeKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: apigeeSa.Member,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apigee.NewOrganization(ctx, \"org\", \u0026apigee.OrganizationArgs{\n\t\t\tAnalyticsRegion: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"apigee-org\"),\n\t\t\tDescription: pulumi.String(\"Terraform-provisioned Apigee Org without VPC Peering.\"),\n\t\t\tProjectId: pulumi.String(current.Project),\n\t\t\tDisableVpcPeering: pulumi.Bool(true),\n\t\t\tRuntimeDatabaseEncryptionKeyName: apigeeKey.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapigeeSaKeyuser,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.projects.ServiceIdentity;\nimport com.pulumi.gcp.projects.ServiceIdentityArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.apigee.Organization;\nimport com.pulumi.gcp.apigee.OrganizationArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = OrganizationsFunctions.getClientConfig();\n\n var apigeeKeyring = new KeyRing(\"apigeeKeyring\", KeyRingArgs.builder()\n .name(\"apigee-keyring\")\n .location(\"us-central1\")\n .build());\n\n var apigeeKey = new CryptoKey(\"apigeeKey\", CryptoKeyArgs.builder()\n .name(\"apigee-key\")\n .keyRing(apigeeKeyring.id())\n .build());\n\n var apigeeSa = new ServiceIdentity(\"apigeeSa\", ServiceIdentityArgs.builder()\n .project(project.projectId())\n .service(apigee.service())\n .build());\n\n var apigeeSaKeyuser = new CryptoKeyIAMMember(\"apigeeSaKeyuser\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(apigeeKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(apigeeSa.member())\n .build());\n\n var org = new Organization(\"org\", OrganizationArgs.builder()\n .analyticsRegion(\"us-central1\")\n .displayName(\"apigee-org\")\n .description(\"Terraform-provisioned Apigee Org without VPC Peering.\")\n .projectId(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()))\n .disableVpcPeering(true)\n .runtimeDatabaseEncryptionKeyName(apigeeKey.id())\n .build(), CustomResourceOptions.builder()\n .dependsOn(apigeeSaKeyuser)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n apigeeKeyring:\n type: gcp:kms:KeyRing\n name: apigee_keyring\n properties:\n name: apigee-keyring\n location: us-central1\n apigeeKey:\n type: gcp:kms:CryptoKey\n name: apigee_key\n properties:\n name: apigee-key\n keyRing: ${apigeeKeyring.id}\n apigeeSa:\n type: gcp:projects:ServiceIdentity\n name: apigee_sa\n properties:\n project: ${project.projectId}\n service: ${apigee.service}\n apigeeSaKeyuser:\n type: gcp:kms:CryptoKeyIAMMember\n name: apigee_sa_keyuser\n properties:\n cryptoKeyId: ${apigeeKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: ${apigeeSa.member}\n org:\n type: gcp:apigee:Organization\n properties:\n analyticsRegion: us-central1\n displayName: apigee-org\n description: Terraform-provisioned Apigee Org without VPC Peering.\n projectId: ${current.project}\n disableVpcPeering: true\n runtimeDatabaseEncryptionKeyName: ${apigeeKey.id}\n options:\n dependson:\n - ${apigeeSaKeyuser}\nvariables:\n current:\n fn::invoke:\n Function: gcp:organizations:getClientConfig\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nOrganization can be imported using any of these accepted formats:\n\n* `organizations/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Organization can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:apigee/organization:Organization default organizations/{{name}}\n```\n\n```sh\n$ pulumi import gcp:apigee/organization:Organization default {{name}}\n```\n\n", "properties": { "analyticsRegion": { "type": "string", @@ -122630,7 +122630,7 @@ } }, "gcp:appengine/engineSplitTraffic:EngineSplitTraffic": { - "description": "Traffic routing configuration for versions within a single service. Traffic splits define how traffic directed to the service is assigned to versions.\n\n\nTo get more information about ServiceSplitTraffic, see:\n\n* [API documentation](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services)\n\n## Example Usage\n\n### App Engine Service Split Traffic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"appengine-static-content\",\n location: \"US\",\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"hello-world.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"./test-fixtures/hello-world.zip\"),\n});\nconst liveappV1 = new gcp.appengine.StandardAppVersion(\"liveapp_v1\", {\n versionId: \"v1\",\n service: \"liveapp\",\n deleteServiceOnDestroy: true,\n runtime: \"nodejs20\",\n entrypoint: {\n shell: \"node ./app.js\",\n },\n deployment: {\n zip: {\n sourceUrl: pulumi.interpolate`https://storage.googleapis.com/${bucket.name}/${object.name}`,\n },\n },\n envVariables: {\n port: \"8080\",\n },\n});\nconst liveappV2 = new gcp.appengine.StandardAppVersion(\"liveapp_v2\", {\n versionId: \"v2\",\n service: \"liveapp\",\n noopOnDestroy: true,\n runtime: \"nodejs20\",\n entrypoint: {\n shell: \"node ./app.js\",\n },\n deployment: {\n zip: {\n sourceUrl: pulumi.interpolate`https://storage.googleapis.com/${bucket.name}/${object.name}`,\n },\n },\n envVariables: {\n port: \"8080\",\n },\n});\nconst liveapp = new gcp.appengine.EngineSplitTraffic(\"liveapp\", {\n service: liveappV2.service,\n migrateTraffic: false,\n split: {\n shardBy: \"IP\",\n allocations: pulumi.all([liveappV1.versionId, liveappV2.versionId]).apply(([liveappV1VersionId, liveappV2VersionId]) =\u003e {\n [liveappV1VersionId]: 0.75,\n [liveappV2VersionId]: 0.25,\n }),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"appengine-static-content\",\n location=\"US\")\nobject = gcp.storage.BucketObject(\"object\",\n name=\"hello-world.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"./test-fixtures/hello-world.zip\"))\nliveapp_v1 = gcp.appengine.StandardAppVersion(\"liveapp_v1\",\n version_id=\"v1\",\n service=\"liveapp\",\n delete_service_on_destroy=True,\n runtime=\"nodejs20\",\n entrypoint={\n \"shell\": \"node ./app.js\",\n },\n deployment={\n \"zip\": {\n \"source_url\": pulumi.Output.all(\n bucketName=bucket.name,\n objectName=object.name\n).apply(lambda resolved_outputs: f\"https://storage.googleapis.com/{resolved_outputs['bucketName']}/{resolved_outputs['objectName']}\")\n,\n },\n },\n env_variables={\n \"port\": \"8080\",\n })\nliveapp_v2 = gcp.appengine.StandardAppVersion(\"liveapp_v2\",\n version_id=\"v2\",\n service=\"liveapp\",\n noop_on_destroy=True,\n runtime=\"nodejs20\",\n entrypoint={\n \"shell\": \"node ./app.js\",\n },\n deployment={\n \"zip\": {\n \"source_url\": pulumi.Output.all(\n bucketName=bucket.name,\n objectName=object.name\n).apply(lambda resolved_outputs: f\"https://storage.googleapis.com/{resolved_outputs['bucketName']}/{resolved_outputs['objectName']}\")\n,\n },\n },\n env_variables={\n \"port\": \"8080\",\n })\nliveapp = gcp.appengine.EngineSplitTraffic(\"liveapp\",\n service=liveapp_v2.service,\n migrate_traffic=False,\n split={\n \"shard_by\": \"IP\",\n \"allocations\": pulumi.Output.all(\n liveappV1Version_id=liveapp_v1.version_id,\n liveappV2Version_id=liveapp_v2.version_id\n).apply(lambda resolved_outputs: {\n \"\": 0.75,\n \"\": 0.25,\n })\n,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = \"appengine-static-content\",\n Location = \"US\",\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"hello-world.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"./test-fixtures/hello-world.zip\"),\n });\n\n var liveappV1 = new Gcp.AppEngine.StandardAppVersion(\"liveapp_v1\", new()\n {\n VersionId = \"v1\",\n Service = \"liveapp\",\n DeleteServiceOnDestroy = true,\n Runtime = \"nodejs20\",\n Entrypoint = new Gcp.AppEngine.Inputs.StandardAppVersionEntrypointArgs\n {\n Shell = \"node ./app.js\",\n },\n Deployment = new Gcp.AppEngine.Inputs.StandardAppVersionDeploymentArgs\n {\n Zip = new Gcp.AppEngine.Inputs.StandardAppVersionDeploymentZipArgs\n {\n SourceUrl = Output.Tuple(bucket.Name, @object.Name).Apply(values =\u003e\n {\n var bucketName = values.Item1;\n var objectName = values.Item2;\n return $\"https://storage.googleapis.com/{bucketName}/{objectName}\";\n }),\n },\n },\n EnvVariables = \n {\n { \"port\", \"8080\" },\n },\n });\n\n var liveappV2 = new Gcp.AppEngine.StandardAppVersion(\"liveapp_v2\", new()\n {\n VersionId = \"v2\",\n Service = \"liveapp\",\n NoopOnDestroy = true,\n Runtime = \"nodejs20\",\n Entrypoint = new Gcp.AppEngine.Inputs.StandardAppVersionEntrypointArgs\n {\n Shell = \"node ./app.js\",\n },\n Deployment = new Gcp.AppEngine.Inputs.StandardAppVersionDeploymentArgs\n {\n Zip = new Gcp.AppEngine.Inputs.StandardAppVersionDeploymentZipArgs\n {\n SourceUrl = Output.Tuple(bucket.Name, @object.Name).Apply(values =\u003e\n {\n var bucketName = values.Item1;\n var objectName = values.Item2;\n return $\"https://storage.googleapis.com/{bucketName}/{objectName}\";\n }),\n },\n },\n EnvVariables = \n {\n { \"port\", \"8080\" },\n },\n });\n\n var liveapp = new Gcp.AppEngine.EngineSplitTraffic(\"liveapp\", new()\n {\n Service = liveappV2.Service,\n MigrateTraffic = false,\n Split = new Gcp.AppEngine.Inputs.EngineSplitTrafficSplitArgs\n {\n ShardBy = \"IP\",\n Allocations = Output.Tuple(liveappV1.VersionId, liveappV2.VersionId).Apply(values =\u003e\n {\n var liveappV1VersionId = values.Item1;\n var liveappV2VersionId = values.Item2;\n return \n {\n { liveappV1VersionId, 0.75 },\n { liveappV2VersionId, 0.25 },\n };\n }),\n },\n });\n\n});\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: appengine-static-content\n location: US\n object:\n type: gcp:storage:BucketObject\n properties:\n name: hello-world.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: ./test-fixtures/hello-world.zip\n liveappV1:\n type: gcp:appengine:StandardAppVersion\n name: liveapp_v1\n properties:\n versionId: v1\n service: liveapp\n deleteServiceOnDestroy: true\n runtime: nodejs20\n entrypoint:\n shell: node ./app.js\n deployment:\n zip:\n sourceUrl: https://storage.googleapis.com/${bucket.name}/${object.name}\n envVariables:\n port: '8080'\n liveappV2:\n type: gcp:appengine:StandardAppVersion\n name: liveapp_v2\n properties:\n versionId: v2\n service: liveapp\n noopOnDestroy: true\n runtime: nodejs20\n entrypoint:\n shell: node ./app.js\n deployment:\n zip:\n sourceUrl: https://storage.googleapis.com/${bucket.name}/${object.name}\n envVariables:\n port: '8080'\n liveapp:\n type: gcp:appengine:EngineSplitTraffic\n properties:\n service: ${liveappV2.service}\n migrateTraffic: false\n split:\n shardBy: IP\n allocations:\n ${liveappV1.versionId}: 0.75\n ${liveappV2.versionId}: 0.25\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nServiceSplitTraffic can be imported using any of these accepted formats:\n\n* `apps/{{project}}/services/{{service}}`\n\n* `{{project}}/{{service}}`\n\n* `{{service}}`\n\nWhen using the `pulumi import` command, ServiceSplitTraffic can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:appengine/engineSplitTraffic:EngineSplitTraffic default apps/{{project}}/services/{{service}}\n```\n\n```sh\n$ pulumi import gcp:appengine/engineSplitTraffic:EngineSplitTraffic default {{project}}/{{service}}\n```\n\n```sh\n$ pulumi import gcp:appengine/engineSplitTraffic:EngineSplitTraffic default {{service}}\n```\n\n", + "description": "Traffic routing configuration for versions within a single service. Traffic splits define how traffic directed to the service is assigned to versions.\n\n\nTo get more information about ServiceSplitTraffic, see:\n\n* [API documentation](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services)\n\n## Example Usage\n\n### App Engine Service Split Traffic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"appengine-static-content\",\n location: \"US\",\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"hello-world.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"./test-fixtures/hello-world.zip\"),\n});\nconst liveappV1 = new gcp.appengine.StandardAppVersion(\"liveapp_v1\", {\n versionId: \"v1\",\n service: \"liveapp\",\n deleteServiceOnDestroy: true,\n runtime: \"nodejs20\",\n entrypoint: {\n shell: \"node ./app.js\",\n },\n deployment: {\n zip: {\n sourceUrl: pulumi.interpolate`https://storage.googleapis.com/${bucket.name}/${object.name}`,\n },\n },\n envVariables: {\n port: \"8080\",\n },\n});\nconst liveappV2 = new gcp.appengine.StandardAppVersion(\"liveapp_v2\", {\n versionId: \"v2\",\n service: \"liveapp\",\n noopOnDestroy: true,\n runtime: \"nodejs20\",\n entrypoint: {\n shell: \"node ./app.js\",\n },\n deployment: {\n zip: {\n sourceUrl: pulumi.interpolate`https://storage.googleapis.com/${bucket.name}/${object.name}`,\n },\n },\n envVariables: {\n port: \"8080\",\n },\n});\nconst liveapp = new gcp.appengine.EngineSplitTraffic(\"liveapp\", {\n service: liveappV2.service,\n migrateTraffic: false,\n split: {\n shardBy: \"IP\",\n allocations: pulumi.all([liveappV1.versionId, liveappV2.versionId]).apply(([liveappV1VersionId, liveappV2VersionId]) =\u003e {\n [liveappV1VersionId]: 0.75,\n [liveappV2VersionId]: 0.25,\n }),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"appengine-static-content\",\n location=\"US\")\nobject = gcp.storage.BucketObject(\"object\",\n name=\"hello-world.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"./test-fixtures/hello-world.zip\"))\nliveapp_v1 = gcp.appengine.StandardAppVersion(\"liveapp_v1\",\n version_id=\"v1\",\n service=\"liveapp\",\n delete_service_on_destroy=True,\n runtime=\"nodejs20\",\n entrypoint={\n \"shell\": \"node ./app.js\",\n },\n deployment={\n \"zip\": {\n \"source_url\": pulumi.Output.all(\n bucketName=bucket.name,\n objectName=object.name\n).apply(lambda resolved_outputs: f\"https://storage.googleapis.com/{resolved_outputs['bucketName']}/{resolved_outputs['objectName']}\")\n,\n },\n },\n env_variables={\n \"port\": \"8080\",\n })\nliveapp_v2 = gcp.appengine.StandardAppVersion(\"liveapp_v2\",\n version_id=\"v2\",\n service=\"liveapp\",\n noop_on_destroy=True,\n runtime=\"nodejs20\",\n entrypoint={\n \"shell\": \"node ./app.js\",\n },\n deployment={\n \"zip\": {\n \"source_url\": pulumi.Output.all(\n bucketName=bucket.name,\n objectName=object.name\n).apply(lambda resolved_outputs: f\"https://storage.googleapis.com/{resolved_outputs['bucketName']}/{resolved_outputs['objectName']}\")\n,\n },\n },\n env_variables={\n \"port\": \"8080\",\n })\nliveapp = gcp.appengine.EngineSplitTraffic(\"liveapp\",\n service=liveapp_v2.service,\n migrate_traffic=False,\n split={\n \"shard_by\": \"IP\",\n \"allocations\": pulumi.Output.all(\n liveappV1Version_id=liveapp_v1.version_id,\n liveappV2Version_id=liveapp_v2.version_id\n).apply(lambda resolved_outputs: {\n resolved_outputs['liveappV1Version_id']: 0.75,\n resolved_outputs['liveappV2Version_id']: 0.25,\n })\n,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = \"appengine-static-content\",\n Location = \"US\",\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"hello-world.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"./test-fixtures/hello-world.zip\"),\n });\n\n var liveappV1 = new Gcp.AppEngine.StandardAppVersion(\"liveapp_v1\", new()\n {\n VersionId = \"v1\",\n Service = \"liveapp\",\n DeleteServiceOnDestroy = true,\n Runtime = \"nodejs20\",\n Entrypoint = new Gcp.AppEngine.Inputs.StandardAppVersionEntrypointArgs\n {\n Shell = \"node ./app.js\",\n },\n Deployment = new Gcp.AppEngine.Inputs.StandardAppVersionDeploymentArgs\n {\n Zip = new Gcp.AppEngine.Inputs.StandardAppVersionDeploymentZipArgs\n {\n SourceUrl = Output.Tuple(bucket.Name, @object.Name).Apply(values =\u003e\n {\n var bucketName = values.Item1;\n var objectName = values.Item2;\n return $\"https://storage.googleapis.com/{bucketName}/{objectName}\";\n }),\n },\n },\n EnvVariables = \n {\n { \"port\", \"8080\" },\n },\n });\n\n var liveappV2 = new Gcp.AppEngine.StandardAppVersion(\"liveapp_v2\", new()\n {\n VersionId = \"v2\",\n Service = \"liveapp\",\n NoopOnDestroy = true,\n Runtime = \"nodejs20\",\n Entrypoint = new Gcp.AppEngine.Inputs.StandardAppVersionEntrypointArgs\n {\n Shell = \"node ./app.js\",\n },\n Deployment = new Gcp.AppEngine.Inputs.StandardAppVersionDeploymentArgs\n {\n Zip = new Gcp.AppEngine.Inputs.StandardAppVersionDeploymentZipArgs\n {\n SourceUrl = Output.Tuple(bucket.Name, @object.Name).Apply(values =\u003e\n {\n var bucketName = values.Item1;\n var objectName = values.Item2;\n return $\"https://storage.googleapis.com/{bucketName}/{objectName}\";\n }),\n },\n },\n EnvVariables = \n {\n { \"port\", \"8080\" },\n },\n });\n\n var liveapp = new Gcp.AppEngine.EngineSplitTraffic(\"liveapp\", new()\n {\n Service = liveappV2.Service,\n MigrateTraffic = false,\n Split = new Gcp.AppEngine.Inputs.EngineSplitTrafficSplitArgs\n {\n ShardBy = \"IP\",\n Allocations = Output.Tuple(liveappV1.VersionId, liveappV2.VersionId).Apply(values =\u003e\n {\n var liveappV1VersionId = values.Item1;\n var liveappV2VersionId = values.Item2;\n return \n {\n { liveappV1VersionId, 0.75 },\n { liveappV2VersionId, 0.25 },\n };\n }),\n },\n });\n\n});\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: appengine-static-content\n location: US\n object:\n type: gcp:storage:BucketObject\n properties:\n name: hello-world.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: ./test-fixtures/hello-world.zip\n liveappV1:\n type: gcp:appengine:StandardAppVersion\n name: liveapp_v1\n properties:\n versionId: v1\n service: liveapp\n deleteServiceOnDestroy: true\n runtime: nodejs20\n entrypoint:\n shell: node ./app.js\n deployment:\n zip:\n sourceUrl: https://storage.googleapis.com/${bucket.name}/${object.name}\n envVariables:\n port: '8080'\n liveappV2:\n type: gcp:appengine:StandardAppVersion\n name: liveapp_v2\n properties:\n versionId: v2\n service: liveapp\n noopOnDestroy: true\n runtime: nodejs20\n entrypoint:\n shell: node ./app.js\n deployment:\n zip:\n sourceUrl: https://storage.googleapis.com/${bucket.name}/${object.name}\n envVariables:\n port: '8080'\n liveapp:\n type: gcp:appengine:EngineSplitTraffic\n properties:\n service: ${liveappV2.service}\n migrateTraffic: false\n split:\n shardBy: IP\n allocations:\n ${liveappV1.versionId}: 0.75\n ${liveappV2.versionId}: 0.25\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nServiceSplitTraffic can be imported using any of these accepted formats:\n\n* `apps/{{project}}/services/{{service}}`\n\n* `{{project}}/{{service}}`\n\n* `{{service}}`\n\nWhen using the `pulumi import` command, ServiceSplitTraffic can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:appengine/engineSplitTraffic:EngineSplitTraffic default apps/{{project}}/services/{{service}}\n```\n\n```sh\n$ pulumi import gcp:appengine/engineSplitTraffic:EngineSplitTraffic default {{project}}/{{service}}\n```\n\n```sh\n$ pulumi import gcp:appengine/engineSplitTraffic:EngineSplitTraffic default {{service}}\n```\n\n", "properties": { "migrateTraffic": { "type": "boolean", @@ -124509,7 +124509,7 @@ } }, "gcp:applicationintegration/client:Client": { - "description": "Application Integration Client.\n\n\nTo get more information about Client, see:\n\n* [API documentation](https://cloud.google.com/application-integration/docs/reference/rest/v1/projects.locations.clients)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/application-integration/docs/overview)\n * [Set up Application Integration](https://cloud.google.com/application-integration/docs/setup-application-integration)\n\n## Example Usage\n\n### Integrations Client Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.applicationintegration.Client(\"example\", {location: \"us-central1\"});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.applicationintegration.Client(\"example\", location=\"us-central1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.ApplicationIntegration.Client(\"example\", new()\n {\n Location = \"us-central1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/applicationintegration\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := applicationintegration.NewClient(ctx, \"example\", \u0026applicationintegration.ClientArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.applicationintegration.Client;\nimport com.pulumi.gcp.applicationintegration.ClientArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Client(\"example\", ClientArgs.builder()\n .location(\"us-central1\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:applicationintegration:Client\n properties:\n location: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Integrations Client Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst testProject = gcp.organizations.getProject({});\nconst keyring = new gcp.kms.KeyRing(\"keyring\", {\n name: \"my-keyring\",\n location: \"us-east1\",\n});\nconst cryptokey = new gcp.kms.CryptoKey(\"cryptokey\", {\n name: \"crypto-key-example\",\n keyRing: keyring.id,\n rotationPeriod: \"7776000s\",\n});\nconst testKey = new gcp.kms.CryptoKeyVersion(\"test_key\", {cryptoKey: cryptokey.id});\nconst serviceAccount = new gcp.serviceaccount.Account(\"service_account\", {\n accountId: \"service-acc\",\n displayName: \"Service Account\",\n});\nconst example = new gcp.applicationintegration.Client(\"example\", {\n location: \"us-east1\",\n createSampleIntegrations: true,\n runAsServiceAccount: serviceAccount.email,\n cloudKmsConfig: {\n kmsLocation: \"us-east1\",\n kmsRing: keyring.id,\n key: cryptokey.id,\n keyVersion: testKey.id,\n kmsProjectId: testProject.then(testProject =\u003e testProject.projectId),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest_project = gcp.organizations.get_project()\nkeyring = gcp.kms.KeyRing(\"keyring\",\n name=\"my-keyring\",\n location=\"us-east1\")\ncryptokey = gcp.kms.CryptoKey(\"cryptokey\",\n name=\"crypto-key-example\",\n key_ring=keyring.id,\n rotation_period=\"7776000s\")\ntest_key = gcp.kms.CryptoKeyVersion(\"test_key\", crypto_key=cryptokey.id)\nservice_account = gcp.serviceaccount.Account(\"service_account\",\n account_id=\"service-acc\",\n display_name=\"Service Account\")\nexample = gcp.applicationintegration.Client(\"example\",\n location=\"us-east1\",\n create_sample_integrations=True,\n run_as_service_account=service_account.email,\n cloud_kms_config={\n \"kms_location\": \"us-east1\",\n \"kms_ring\": keyring.id,\n \"key\": cryptokey.id,\n \"key_version\": test_key.id,\n \"kms_project_id\": test_project.project_id,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testProject = Gcp.Organizations.GetProject.Invoke();\n\n var keyring = new Gcp.Kms.KeyRing(\"keyring\", new()\n {\n Name = \"my-keyring\",\n Location = \"us-east1\",\n });\n\n var cryptokey = new Gcp.Kms.CryptoKey(\"cryptokey\", new()\n {\n Name = \"crypto-key-example\",\n KeyRing = keyring.Id,\n RotationPeriod = \"7776000s\",\n });\n\n var testKey = new Gcp.Kms.CryptoKeyVersion(\"test_key\", new()\n {\n CryptoKey = cryptokey.Id,\n });\n\n var serviceAccount = new Gcp.ServiceAccount.Account(\"service_account\", new()\n {\n AccountId = \"service-acc\",\n DisplayName = \"Service Account\",\n });\n\n var example = new Gcp.ApplicationIntegration.Client(\"example\", new()\n {\n Location = \"us-east1\",\n CreateSampleIntegrations = true,\n RunAsServiceAccount = serviceAccount.Email,\n CloudKmsConfig = new Gcp.ApplicationIntegration.Inputs.ClientCloudKmsConfigArgs\n {\n KmsLocation = \"us-east1\",\n KmsRing = keyring.Id,\n Key = cryptokey.Id,\n KeyVersion = testKey.Id,\n KmsProjectId = testProject.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/applicationintegration\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestProject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkeyring, err := kms.NewKeyRing(ctx, \"keyring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"my-keyring\"),\n\t\t\tLocation: pulumi.String(\"us-east1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptokey, err := kms.NewCryptoKey(ctx, \"cryptokey\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"crypto-key-example\"),\n\t\t\tKeyRing: keyring.ID(),\n\t\t\tRotationPeriod: pulumi.String(\"7776000s\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestKey, err := kms.NewCryptoKeyVersion(ctx, \"test_key\", \u0026kms.CryptoKeyVersionArgs{\n\t\t\tCryptoKey: cryptokey.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserviceAccount, err := serviceaccount.NewAccount(ctx, \"service_account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"service-acc\"),\n\t\t\tDisplayName: pulumi.String(\"Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = applicationintegration.NewClient(ctx, \"example\", \u0026applicationintegration.ClientArgs{\n\t\t\tLocation: pulumi.String(\"us-east1\"),\n\t\t\tCreateSampleIntegrations: pulumi.Bool(true),\n\t\t\tRunAsServiceAccount: serviceAccount.Email,\n\t\t\tCloudKmsConfig: \u0026applicationintegration.ClientCloudKmsConfigArgs{\n\t\t\t\tKmsLocation: pulumi.String(\"us-east1\"),\n\t\t\t\tKmsRing: keyring.ID(),\n\t\t\t\tKey: cryptokey.ID(),\n\t\t\t\tKeyVersion: testKey.ID(),\n\t\t\t\tKmsProjectId: pulumi.String(testProject.ProjectId),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.kms.CryptoKeyVersion;\nimport com.pulumi.gcp.kms.CryptoKeyVersionArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.applicationintegration.Client;\nimport com.pulumi.gcp.applicationintegration.ClientArgs;\nimport com.pulumi.gcp.applicationintegration.inputs.ClientCloudKmsConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var testProject = OrganizationsFunctions.getProject();\n\n var keyring = new KeyRing(\"keyring\", KeyRingArgs.builder()\n .name(\"my-keyring\")\n .location(\"us-east1\")\n .build());\n\n var cryptokey = new CryptoKey(\"cryptokey\", CryptoKeyArgs.builder()\n .name(\"crypto-key-example\")\n .keyRing(keyring.id())\n .rotationPeriod(\"7776000s\")\n .build());\n\n var testKey = new CryptoKeyVersion(\"testKey\", CryptoKeyVersionArgs.builder()\n .cryptoKey(cryptokey.id())\n .build());\n\n var serviceAccount = new Account(\"serviceAccount\", AccountArgs.builder()\n .accountId(\"service-acc\")\n .displayName(\"Service Account\")\n .build());\n\n var example = new Client(\"example\", ClientArgs.builder()\n .location(\"us-east1\")\n .createSampleIntegrations(true)\n .runAsServiceAccount(serviceAccount.email())\n .cloudKmsConfig(ClientCloudKmsConfigArgs.builder()\n .kmsLocation(\"us-east1\")\n .kmsRing(keyring.id())\n .key(cryptokey.id())\n .keyVersion(testKey.id())\n .kmsProjectId(testProject.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n keyring:\n type: gcp:kms:KeyRing\n properties:\n name: my-keyring\n location: us-east1\n cryptokey:\n type: gcp:kms:CryptoKey\n properties:\n name: crypto-key-example\n keyRing: ${keyring.id}\n rotationPeriod: 7776000s\n testKey:\n type: gcp:kms:CryptoKeyVersion\n name: test_key\n properties:\n cryptoKey: ${cryptokey.id}\n serviceAccount:\n type: gcp:serviceaccount:Account\n name: service_account\n properties:\n accountId: service-acc\n displayName: Service Account\n example:\n type: gcp:applicationintegration:Client\n properties:\n location: us-east1\n createSampleIntegrations: true\n runAsServiceAccount: ${serviceAccount.email}\n cloudKmsConfig:\n kmsLocation: us-east1\n kmsRing: ${keyring.id}\n key: ${cryptokey.id}\n keyVersion: ${testKey.id}\n kmsProjectId: ${testProject.projectId}\nvariables:\n testProject:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nClient can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/clients`\n\n* `{{project}}/{{location}}`\n\n* `{{location}}`\n\nWhen using the `pulumi import` command, Client can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:applicationintegration/client:Client default projects/{{project}}/locations/{{location}}/clients\n```\n\n```sh\n$ pulumi import gcp:applicationintegration/client:Client default {{project}}/{{location}}\n```\n\n```sh\n$ pulumi import gcp:applicationintegration/client:Client default {{location}}\n```\n\n", + "description": "Application Integration Client.\n\n\nTo get more information about Client, see:\n\n* [API documentation](https://cloud.google.com/application-integration/docs/reference/rest/v1/projects.locations.clients)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/application-integration/docs/overview)\n * [Set up Application Integration](https://cloud.google.com/application-integration/docs/setup-application-integration)\n\n## Example Usage\n\n### Integrations Client Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.applicationintegration.Client(\"example\", {location: \"us-central1\"});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.applicationintegration.Client(\"example\", location=\"us-central1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.ApplicationIntegration.Client(\"example\", new()\n {\n Location = \"us-central1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/applicationintegration\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := applicationintegration.NewClient(ctx, \"example\", \u0026applicationintegration.ClientArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.applicationintegration.Client;\nimport com.pulumi.gcp.applicationintegration.ClientArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Client(\"example\", ClientArgs.builder()\n .location(\"us-central1\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:applicationintegration:Client\n properties:\n location: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Integrations Client Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst testProject = gcp.organizations.getProject({});\nconst keyring = new gcp.kms.KeyRing(\"keyring\", {\n name: \"my-keyring\",\n location: \"us-east1\",\n});\nconst cryptokey = new gcp.kms.CryptoKey(\"cryptokey\", {\n name: \"crypto-key-example\",\n keyRing: keyring.id,\n rotationPeriod: \"7776000s\",\n});\nconst testKey = new gcp.kms.CryptoKeyVersion(\"test_key\", {cryptoKey: cryptokey.id});\nconst serviceAccount = new gcp.serviceaccount.Account(\"service_account\", {\n accountId: \"service-acc\",\n displayName: \"Service Account\",\n});\nconst example = new gcp.applicationintegration.Client(\"example\", {\n location: \"us-east1\",\n createSampleIntegrations: true,\n runAsServiceAccount: serviceAccount.email,\n cloudKmsConfig: {\n kmsLocation: \"us-east1\",\n kmsRing: keyring.id,\n key: cryptokey.id,\n keyVersion: testKey.id,\n kmsProjectId: testProject.then(testProject =\u003e testProject.projectId),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest_project = gcp.organizations.get_project()\nkeyring = gcp.kms.KeyRing(\"keyring\",\n name=\"my-keyring\",\n location=\"us-east1\")\ncryptokey = gcp.kms.CryptoKey(\"cryptokey\",\n name=\"crypto-key-example\",\n key_ring=keyring.id,\n rotation_period=\"7776000s\")\ntest_key = gcp.kms.CryptoKeyVersion(\"test_key\", crypto_key=cryptokey.id)\nservice_account = gcp.serviceaccount.Account(\"service_account\",\n account_id=\"service-acc\",\n display_name=\"Service Account\")\nexample = gcp.applicationintegration.Client(\"example\",\n location=\"us-east1\",\n create_sample_integrations=True,\n run_as_service_account=service_account.email,\n cloud_kms_config={\n \"kms_location\": \"us-east1\",\n \"kms_ring\": keyring.id,\n \"key\": cryptokey.id,\n \"key_version\": test_key.id,\n \"kms_project_id\": test_project.project_id,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testProject = Gcp.Organizations.GetProject.Invoke();\n\n var keyring = new Gcp.Kms.KeyRing(\"keyring\", new()\n {\n Name = \"my-keyring\",\n Location = \"us-east1\",\n });\n\n var cryptokey = new Gcp.Kms.CryptoKey(\"cryptokey\", new()\n {\n Name = \"crypto-key-example\",\n KeyRing = keyring.Id,\n RotationPeriod = \"7776000s\",\n });\n\n var testKey = new Gcp.Kms.CryptoKeyVersion(\"test_key\", new()\n {\n CryptoKey = cryptokey.Id,\n });\n\n var serviceAccount = new Gcp.ServiceAccount.Account(\"service_account\", new()\n {\n AccountId = \"service-acc\",\n DisplayName = \"Service Account\",\n });\n\n var example = new Gcp.ApplicationIntegration.Client(\"example\", new()\n {\n Location = \"us-east1\",\n CreateSampleIntegrations = true,\n RunAsServiceAccount = serviceAccount.Email,\n CloudKmsConfig = new Gcp.ApplicationIntegration.Inputs.ClientCloudKmsConfigArgs\n {\n KmsLocation = \"us-east1\",\n KmsRing = keyring.Id,\n Key = cryptokey.Id,\n KeyVersion = testKey.Id,\n KmsProjectId = testProject.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/applicationintegration\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestProject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkeyring, err := kms.NewKeyRing(ctx, \"keyring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"my-keyring\"),\n\t\t\tLocation: pulumi.String(\"us-east1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptokey, err := kms.NewCryptoKey(ctx, \"cryptokey\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"crypto-key-example\"),\n\t\t\tKeyRing: keyring.ID(),\n\t\t\tRotationPeriod: pulumi.String(\"7776000s\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestKey, err := kms.NewCryptoKeyVersion(ctx, \"test_key\", \u0026kms.CryptoKeyVersionArgs{\n\t\t\tCryptoKey: cryptokey.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserviceAccount, err := serviceaccount.NewAccount(ctx, \"service_account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"service-acc\"),\n\t\t\tDisplayName: pulumi.String(\"Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = applicationintegration.NewClient(ctx, \"example\", \u0026applicationintegration.ClientArgs{\n\t\t\tLocation: pulumi.String(\"us-east1\"),\n\t\t\tCreateSampleIntegrations: pulumi.Bool(true),\n\t\t\tRunAsServiceAccount: serviceAccount.Email,\n\t\t\tCloudKmsConfig: \u0026applicationintegration.ClientCloudKmsConfigArgs{\n\t\t\t\tKmsLocation: pulumi.String(\"us-east1\"),\n\t\t\t\tKmsRing: keyring.ID(),\n\t\t\t\tKey: cryptokey.ID(),\n\t\t\t\tKeyVersion: testKey.ID(),\n\t\t\t\tKmsProjectId: pulumi.String(testProject.ProjectId),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.kms.CryptoKeyVersion;\nimport com.pulumi.gcp.kms.CryptoKeyVersionArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.applicationintegration.Client;\nimport com.pulumi.gcp.applicationintegration.ClientArgs;\nimport com.pulumi.gcp.applicationintegration.inputs.ClientCloudKmsConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var testProject = OrganizationsFunctions.getProject();\n\n var keyring = new KeyRing(\"keyring\", KeyRingArgs.builder()\n .name(\"my-keyring\")\n .location(\"us-east1\")\n .build());\n\n var cryptokey = new CryptoKey(\"cryptokey\", CryptoKeyArgs.builder()\n .name(\"crypto-key-example\")\n .keyRing(keyring.id())\n .rotationPeriod(\"7776000s\")\n .build());\n\n var testKey = new CryptoKeyVersion(\"testKey\", CryptoKeyVersionArgs.builder()\n .cryptoKey(cryptokey.id())\n .build());\n\n var serviceAccount = new Account(\"serviceAccount\", AccountArgs.builder()\n .accountId(\"service-acc\")\n .displayName(\"Service Account\")\n .build());\n\n var example = new Client(\"example\", ClientArgs.builder()\n .location(\"us-east1\")\n .createSampleIntegrations(true)\n .runAsServiceAccount(serviceAccount.email())\n .cloudKmsConfig(ClientCloudKmsConfigArgs.builder()\n .kmsLocation(\"us-east1\")\n .kmsRing(keyring.id())\n .key(cryptokey.id())\n .keyVersion(testKey.id())\n .kmsProjectId(testProject.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n keyring:\n type: gcp:kms:KeyRing\n properties:\n name: my-keyring\n location: us-east1\n cryptokey:\n type: gcp:kms:CryptoKey\n properties:\n name: crypto-key-example\n keyRing: ${keyring.id}\n rotationPeriod: 7776000s\n testKey:\n type: gcp:kms:CryptoKeyVersion\n name: test_key\n properties:\n cryptoKey: ${cryptokey.id}\n serviceAccount:\n type: gcp:serviceaccount:Account\n name: service_account\n properties:\n accountId: service-acc\n displayName: Service Account\n example:\n type: gcp:applicationintegration:Client\n properties:\n location: us-east1\n createSampleIntegrations: true\n runAsServiceAccount: ${serviceAccount.email}\n cloudKmsConfig:\n kmsLocation: us-east1\n kmsRing: ${keyring.id}\n key: ${cryptokey.id}\n keyVersion: ${testKey.id}\n kmsProjectId: ${testProject.projectId}\nvariables:\n testProject:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nClient can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/clients`\n\n* `{{project}}/{{location}}`\n\n* `{{location}}`\n\nWhen using the `pulumi import` command, Client can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:applicationintegration/client:Client default projects/{{project}}/locations/{{location}}/clients\n```\n\n```sh\n$ pulumi import gcp:applicationintegration/client:Client default {{project}}/{{location}}\n```\n\n```sh\n$ pulumi import gcp:applicationintegration/client:Client default {{location}}\n```\n\n", "properties": { "cloudKmsConfig": { "$ref": "#/types/gcp:applicationintegration/ClientCloudKmsConfig:ClientCloudKmsConfig", @@ -124599,7 +124599,7 @@ } }, "gcp:artifactregistry/repository:Repository": { - "description": "A repository for storing artifacts\n\n\nTo get more information about Repository, see:\n\n* [API documentation](https://cloud.google.com/artifact-registry/docs/reference/rest/v1/projects.locations.repositories)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/artifact-registry/docs/overview)\n\n## Example Usage\n\n### Artifact Registry Repository Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example docker repository\",\n format: \"DOCKER\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n description=\"example docker repository\",\n format=\"DOCKER\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Description = \"example docker repository\",\n Format = \"DOCKER\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example docker repository\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .description(\"example docker repository\")\n .format(\"DOCKER\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n description: example docker repository\n format: DOCKER\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Docker\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example docker repository\",\n format: \"DOCKER\",\n dockerConfig: {\n immutableTags: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n description=\"example docker repository\",\n format=\"DOCKER\",\n docker_config={\n \"immutable_tags\": True,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Description = \"example docker repository\",\n Format = \"DOCKER\",\n DockerConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryDockerConfigArgs\n {\n ImmutableTags = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example docker repository\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tDockerConfig: \u0026artifactregistry.RepositoryDockerConfigArgs{\n\t\t\t\tImmutableTags: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryDockerConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .description(\"example docker repository\")\n .format(\"DOCKER\")\n .dockerConfig(RepositoryDockerConfigArgs.builder()\n .immutableTags(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n description: example docker repository\n format: DOCKER\n dockerConfig:\n immutableTags: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst cryptoKey = new gcp.kms.CryptoKeyIAMMember(\"crypto_key\", {\n cryptoKeyId: \"kms-key\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example docker repository with cmek\",\n format: \"DOCKER\",\n kmsKeyName: \"kms-key\",\n}, {\n dependsOn: [cryptoKey],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ncrypto_key = gcp.kms.CryptoKeyIAMMember(\"crypto_key\",\n crypto_key_id=\"kms-key\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n description=\"example docker repository with cmek\",\n format=\"DOCKER\",\n kms_key_name=\"kms-key\",\n opts = pulumi.ResourceOptions(depends_on=[crypto_key]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cryptoKey = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key\", new()\n {\n CryptoKeyId = \"kms-key\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Description = \"example docker repository with cmek\",\n Format = \"DOCKER\",\n KmsKeyName = \"kms-key\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cryptoKey,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKey, err := kms.NewCryptoKeyIAMMember(ctx, \"crypto_key\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"kms-key\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example docker repository with cmek\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tKmsKeyName: pulumi.String(\"kms-key\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcryptoKey,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var cryptoKey = new CryptoKeyIAMMember(\"cryptoKey\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(\"kms-key\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .description(\"example docker repository with cmek\")\n .format(\"DOCKER\")\n .kmsKeyName(\"kms-key\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(cryptoKey)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n description: example docker repository with cmek\n format: DOCKER\n kmsKeyName: kms-key\n options:\n dependson:\n - ${cryptoKey}\n cryptoKey:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key\n properties:\n cryptoKeyId: kms-key\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Virtual\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo_upstream_1 = new gcp.artifactregistry.Repository(\"my-repo-upstream-1\", {\n location: \"us-central1\",\n repositoryId: \"my-repository-upstream-1\",\n description: \"example docker repository (upstream source) 1\",\n format: \"DOCKER\",\n});\nconst my_repo_upstream_2 = new gcp.artifactregistry.Repository(\"my-repo-upstream-2\", {\n location: \"us-central1\",\n repositoryId: \"my-repository-upstream-2\",\n description: \"example docker repository (upstream source) 2\",\n format: \"DOCKER\",\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example virtual docker repository\",\n format: \"DOCKER\",\n mode: \"VIRTUAL_REPOSITORY\",\n virtualRepositoryConfig: {\n upstreamPolicies: [\n {\n id: \"my-repository-upstream-1\",\n repository: my_repo_upstream_1.id,\n priority: 20,\n },\n {\n id: \"my-repository-upstream-2\",\n repository: my_repo_upstream_2.id,\n priority: 10,\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo_upstream_1 = gcp.artifactregistry.Repository(\"my-repo-upstream-1\",\n location=\"us-central1\",\n repository_id=\"my-repository-upstream-1\",\n description=\"example docker repository (upstream source) 1\",\n format=\"DOCKER\")\nmy_repo_upstream_2 = gcp.artifactregistry.Repository(\"my-repo-upstream-2\",\n location=\"us-central1\",\n repository_id=\"my-repository-upstream-2\",\n description=\"example docker repository (upstream source) 2\",\n format=\"DOCKER\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n description=\"example virtual docker repository\",\n format=\"DOCKER\",\n mode=\"VIRTUAL_REPOSITORY\",\n virtual_repository_config={\n \"upstream_policies\": [\n {\n \"id\": \"my-repository-upstream-1\",\n \"repository\": my_repo_upstream_1.id,\n \"priority\": 20,\n },\n {\n \"id\": \"my-repository-upstream-2\",\n \"repository\": my_repo_upstream_2.id,\n \"priority\": 10,\n },\n ],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_repo_upstream_1 = new Gcp.ArtifactRegistry.Repository(\"my-repo-upstream-1\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository-upstream-1\",\n Description = \"example docker repository (upstream source) 1\",\n Format = \"DOCKER\",\n });\n\n var my_repo_upstream_2 = new Gcp.ArtifactRegistry.Repository(\"my-repo-upstream-2\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository-upstream-2\",\n Description = \"example docker repository (upstream source) 2\",\n Format = \"DOCKER\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Description = \"example virtual docker repository\",\n Format = \"DOCKER\",\n Mode = \"VIRTUAL_REPOSITORY\",\n VirtualRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryVirtualRepositoryConfigArgs\n {\n UpstreamPolicies = new[]\n {\n new Gcp.ArtifactRegistry.Inputs.RepositoryVirtualRepositoryConfigUpstreamPolicyArgs\n {\n Id = \"my-repository-upstream-1\",\n Repository = my_repo_upstream_1.Id,\n Priority = 20,\n },\n new Gcp.ArtifactRegistry.Inputs.RepositoryVirtualRepositoryConfigUpstreamPolicyArgs\n {\n Id = \"my-repository-upstream-2\",\n Repository = my_repo_upstream_2.Id,\n Priority = 10,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := artifactregistry.NewRepository(ctx, \"my-repo-upstream-1\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository-upstream-1\"),\n\t\t\tDescription: pulumi.String(\"example docker repository (upstream source) 1\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo-upstream-2\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository-upstream-2\"),\n\t\t\tDescription: pulumi.String(\"example docker repository (upstream source) 2\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example virtual docker repository\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tMode: pulumi.String(\"VIRTUAL_REPOSITORY\"),\n\t\t\tVirtualRepositoryConfig: \u0026artifactregistry.RepositoryVirtualRepositoryConfigArgs{\n\t\t\t\tUpstreamPolicies: artifactregistry.RepositoryVirtualRepositoryConfigUpstreamPolicyArray{\n\t\t\t\t\t\u0026artifactregistry.RepositoryVirtualRepositoryConfigUpstreamPolicyArgs{\n\t\t\t\t\t\tId: pulumi.String(\"my-repository-upstream-1\"),\n\t\t\t\t\t\tRepository: my_repo_upstream_1.ID(),\n\t\t\t\t\t\tPriority: pulumi.Int(20),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026artifactregistry.RepositoryVirtualRepositoryConfigUpstreamPolicyArgs{\n\t\t\t\t\t\tId: pulumi.String(\"my-repository-upstream-2\"),\n\t\t\t\t\t\tRepository: my_repo_upstream_2.ID(),\n\t\t\t\t\t\tPriority: pulumi.Int(10),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryVirtualRepositoryConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_repo_upstream_1 = new Repository(\"my-repo-upstream-1\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository-upstream-1\")\n .description(\"example docker repository (upstream source) 1\")\n .format(\"DOCKER\")\n .build());\n\n var my_repo_upstream_2 = new Repository(\"my-repo-upstream-2\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository-upstream-2\")\n .description(\"example docker repository (upstream source) 2\")\n .format(\"DOCKER\")\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .description(\"example virtual docker repository\")\n .format(\"DOCKER\")\n .mode(\"VIRTUAL_REPOSITORY\")\n .virtualRepositoryConfig(RepositoryVirtualRepositoryConfigArgs.builder()\n .upstreamPolicies( \n RepositoryVirtualRepositoryConfigUpstreamPolicyArgs.builder()\n .id(\"my-repository-upstream-1\")\n .repository(my_repo_upstream_1.id())\n .priority(20)\n .build(),\n RepositoryVirtualRepositoryConfigUpstreamPolicyArgs.builder()\n .id(\"my-repository-upstream-2\")\n .repository(my_repo_upstream_2.id())\n .priority(10)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo-upstream-1:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository-upstream-1\n description: example docker repository (upstream source) 1\n format: DOCKER\n my-repo-upstream-2:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository-upstream-2\n description: example docker repository (upstream source) 2\n format: DOCKER\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n description: example virtual docker repository\n format: DOCKER\n mode: VIRTUAL_REPOSITORY\n virtualRepositoryConfig:\n upstreamPolicies:\n - id: my-repository-upstream-1\n repository: ${[\"my-repo-upstream-1\"].id}\n priority: 20\n - id: my-repository-upstream-2\n repository: ${[\"my-repo-upstream-2\"].id}\n priority: 10\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example remote docker repository\",\n format: \"DOCKER\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"docker hub\",\n dockerRepository: {\n publicRepository: \"DOCKER_HUB\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n description=\"example remote docker repository\",\n format=\"DOCKER\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"docker hub\",\n \"docker_repository\": {\n \"public_repository\": \"DOCKER_HUB\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Description = \"example remote docker repository\",\n Format = \"DOCKER\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"docker hub\",\n DockerRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs\n {\n PublicRepository = \"DOCKER_HUB\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example remote docker repository\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"docker hub\"),\n\t\t\t\tDockerRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryArgs{\n\t\t\t\t\tPublicRepository: pulumi.String(\"DOCKER_HUB\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .description(\"example remote docker repository\")\n .format(\"DOCKER\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"docker hub\")\n .dockerRepository(RepositoryRemoteRepositoryConfigDockerRepositoryArgs.builder()\n .publicRepository(\"DOCKER_HUB\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n description: example remote docker repository\n format: DOCKER\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: docker hub\n dockerRepository:\n publicRepository: DOCKER_HUB\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Apt\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"debian-buster\",\n description: \"example remote apt repository\",\n format: \"APT\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"Debian buster remote repository\",\n aptRepository: {\n publicRepository: {\n repositoryBase: \"DEBIAN\",\n repositoryPath: \"debian/dists/buster\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"debian-buster\",\n description=\"example remote apt repository\",\n format=\"APT\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"Debian buster remote repository\",\n \"apt_repository\": {\n \"public_repository\": {\n \"repository_base\": \"DEBIAN\",\n \"repository_path\": \"debian/dists/buster\",\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"debian-buster\",\n Description = \"example remote apt repository\",\n Format = \"APT\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"Debian buster remote repository\",\n AptRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigAptRepositoryArgs\n {\n PublicRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigAptRepositoryPublicRepositoryArgs\n {\n RepositoryBase = \"DEBIAN\",\n RepositoryPath = \"debian/dists/buster\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"debian-buster\"),\n\t\t\tDescription: pulumi.String(\"example remote apt repository\"),\n\t\t\tFormat: pulumi.String(\"APT\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"Debian buster remote repository\"),\n\t\t\t\tAptRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigAptRepositoryArgs{\n\t\t\t\t\tPublicRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigAptRepositoryPublicRepositoryArgs{\n\t\t\t\t\t\tRepositoryBase: pulumi.String(\"DEBIAN\"),\n\t\t\t\t\t\tRepositoryPath: pulumi.String(\"debian/dists/buster\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigAptRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigAptRepositoryPublicRepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"debian-buster\")\n .description(\"example remote apt repository\")\n .format(\"APT\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"Debian buster remote repository\")\n .aptRepository(RepositoryRemoteRepositoryConfigAptRepositoryArgs.builder()\n .publicRepository(RepositoryRemoteRepositoryConfigAptRepositoryPublicRepositoryArgs.builder()\n .repositoryBase(\"DEBIAN\")\n .repositoryPath(\"debian/dists/buster\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: debian-buster\n description: example remote apt repository\n format: APT\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: Debian buster remote repository\n aptRepository:\n publicRepository:\n repositoryBase: DEBIAN\n repositoryPath: debian/dists/buster\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Yum\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"rocky-9\",\n description: \"example remote yum repository\",\n format: \"YUM\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"Rocky 9 remote repository\",\n yumRepository: {\n publicRepository: {\n repositoryBase: \"ROCKY\",\n repositoryPath: \"pub/rocky/9/BaseOS/x86_64/os\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"rocky-9\",\n description=\"example remote yum repository\",\n format=\"YUM\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"Rocky 9 remote repository\",\n \"yum_repository\": {\n \"public_repository\": {\n \"repository_base\": \"ROCKY\",\n \"repository_path\": \"pub/rocky/9/BaseOS/x86_64/os\",\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"rocky-9\",\n Description = \"example remote yum repository\",\n Format = \"YUM\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"Rocky 9 remote repository\",\n YumRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigYumRepositoryArgs\n {\n PublicRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigYumRepositoryPublicRepositoryArgs\n {\n RepositoryBase = \"ROCKY\",\n RepositoryPath = \"pub/rocky/9/BaseOS/x86_64/os\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"rocky-9\"),\n\t\t\tDescription: pulumi.String(\"example remote yum repository\"),\n\t\t\tFormat: pulumi.String(\"YUM\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"Rocky 9 remote repository\"),\n\t\t\t\tYumRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigYumRepositoryArgs{\n\t\t\t\t\tPublicRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigYumRepositoryPublicRepositoryArgs{\n\t\t\t\t\t\tRepositoryBase: pulumi.String(\"ROCKY\"),\n\t\t\t\t\t\tRepositoryPath: pulumi.String(\"pub/rocky/9/BaseOS/x86_64/os\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigYumRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigYumRepositoryPublicRepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"rocky-9\")\n .description(\"example remote yum repository\")\n .format(\"YUM\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"Rocky 9 remote repository\")\n .yumRepository(RepositoryRemoteRepositoryConfigYumRepositoryArgs.builder()\n .publicRepository(RepositoryRemoteRepositoryConfigYumRepositoryPublicRepositoryArgs.builder()\n .repositoryBase(\"ROCKY\")\n .repositoryPath(\"pub/rocky/9/BaseOS/x86_64/os\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: rocky-9\n description: example remote yum repository\n format: YUM\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: Rocky 9 remote repository\n yumRepository:\n publicRepository:\n repositoryBase: ROCKY\n repositoryPath: pub/rocky/9/BaseOS/x86_64/os\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Cleanup\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example docker repository with cleanup policies\",\n format: \"DOCKER\",\n cleanupPolicyDryRun: false,\n cleanupPolicies: [\n {\n id: \"delete-prerelease\",\n action: \"DELETE\",\n condition: {\n tagState: \"TAGGED\",\n tagPrefixes: [\n \"alpha\",\n \"v0\",\n ],\n olderThan: \"2592000s\",\n },\n },\n {\n id: \"keep-tagged-release\",\n action: \"KEEP\",\n condition: {\n tagState: \"TAGGED\",\n tagPrefixes: [\"release\"],\n packageNamePrefixes: [\n \"webapp\",\n \"mobile\",\n ],\n },\n },\n {\n id: \"keep-minimum-versions\",\n action: \"KEEP\",\n mostRecentVersions: {\n packageNamePrefixes: [\n \"webapp\",\n \"mobile\",\n \"sandbox\",\n ],\n keepCount: 5,\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n description=\"example docker repository with cleanup policies\",\n format=\"DOCKER\",\n cleanup_policy_dry_run=False,\n cleanup_policies=[\n {\n \"id\": \"delete-prerelease\",\n \"action\": \"DELETE\",\n \"condition\": {\n \"tag_state\": \"TAGGED\",\n \"tag_prefixes\": [\n \"alpha\",\n \"v0\",\n ],\n \"older_than\": \"2592000s\",\n },\n },\n {\n \"id\": \"keep-tagged-release\",\n \"action\": \"KEEP\",\n \"condition\": {\n \"tag_state\": \"TAGGED\",\n \"tag_prefixes\": [\"release\"],\n \"package_name_prefixes\": [\n \"webapp\",\n \"mobile\",\n ],\n },\n },\n {\n \"id\": \"keep-minimum-versions\",\n \"action\": \"KEEP\",\n \"most_recent_versions\": {\n \"package_name_prefixes\": [\n \"webapp\",\n \"mobile\",\n \"sandbox\",\n ],\n \"keep_count\": 5,\n },\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Description = \"example docker repository with cleanup policies\",\n Format = \"DOCKER\",\n CleanupPolicyDryRun = false,\n CleanupPolicies = new[]\n {\n new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyArgs\n {\n Id = \"delete-prerelease\",\n Action = \"DELETE\",\n Condition = new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyConditionArgs\n {\n TagState = \"TAGGED\",\n TagPrefixes = new[]\n {\n \"alpha\",\n \"v0\",\n },\n OlderThan = \"2592000s\",\n },\n },\n new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyArgs\n {\n Id = \"keep-tagged-release\",\n Action = \"KEEP\",\n Condition = new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyConditionArgs\n {\n TagState = \"TAGGED\",\n TagPrefixes = new[]\n {\n \"release\",\n },\n PackageNamePrefixes = new[]\n {\n \"webapp\",\n \"mobile\",\n },\n },\n },\n new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyArgs\n {\n Id = \"keep-minimum-versions\",\n Action = \"KEEP\",\n MostRecentVersions = new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyMostRecentVersionsArgs\n {\n PackageNamePrefixes = new[]\n {\n \"webapp\",\n \"mobile\",\n \"sandbox\",\n },\n KeepCount = 5,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example docker repository with cleanup policies\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tCleanupPolicyDryRun: pulumi.Bool(false),\n\t\t\tCleanupPolicies: artifactregistry.RepositoryCleanupPolicyArray{\n\t\t\t\t\u0026artifactregistry.RepositoryCleanupPolicyArgs{\n\t\t\t\t\tId: pulumi.String(\"delete-prerelease\"),\n\t\t\t\t\tAction: pulumi.String(\"DELETE\"),\n\t\t\t\t\tCondition: \u0026artifactregistry.RepositoryCleanupPolicyConditionArgs{\n\t\t\t\t\t\tTagState: pulumi.String(\"TAGGED\"),\n\t\t\t\t\t\tTagPrefixes: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"alpha\"),\n\t\t\t\t\t\t\tpulumi.String(\"v0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tOlderThan: pulumi.String(\"2592000s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026artifactregistry.RepositoryCleanupPolicyArgs{\n\t\t\t\t\tId: pulumi.String(\"keep-tagged-release\"),\n\t\t\t\t\tAction: pulumi.String(\"KEEP\"),\n\t\t\t\t\tCondition: \u0026artifactregistry.RepositoryCleanupPolicyConditionArgs{\n\t\t\t\t\t\tTagState: pulumi.String(\"TAGGED\"),\n\t\t\t\t\t\tTagPrefixes: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"release\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPackageNamePrefixes: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"webapp\"),\n\t\t\t\t\t\t\tpulumi.String(\"mobile\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026artifactregistry.RepositoryCleanupPolicyArgs{\n\t\t\t\t\tId: pulumi.String(\"keep-minimum-versions\"),\n\t\t\t\t\tAction: pulumi.String(\"KEEP\"),\n\t\t\t\t\tMostRecentVersions: \u0026artifactregistry.RepositoryCleanupPolicyMostRecentVersionsArgs{\n\t\t\t\t\t\tPackageNamePrefixes: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"webapp\"),\n\t\t\t\t\t\t\tpulumi.String(\"mobile\"),\n\t\t\t\t\t\t\tpulumi.String(\"sandbox\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tKeepCount: pulumi.Int(5),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryCleanupPolicyArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryCleanupPolicyConditionArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryCleanupPolicyMostRecentVersionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .description(\"example docker repository with cleanup policies\")\n .format(\"DOCKER\")\n .cleanupPolicyDryRun(false)\n .cleanupPolicies( \n RepositoryCleanupPolicyArgs.builder()\n .id(\"delete-prerelease\")\n .action(\"DELETE\")\n .condition(RepositoryCleanupPolicyConditionArgs.builder()\n .tagState(\"TAGGED\")\n .tagPrefixes( \n \"alpha\",\n \"v0\")\n .olderThan(\"2592000s\")\n .build())\n .build(),\n RepositoryCleanupPolicyArgs.builder()\n .id(\"keep-tagged-release\")\n .action(\"KEEP\")\n .condition(RepositoryCleanupPolicyConditionArgs.builder()\n .tagState(\"TAGGED\")\n .tagPrefixes(\"release\")\n .packageNamePrefixes( \n \"webapp\",\n \"mobile\")\n .build())\n .build(),\n RepositoryCleanupPolicyArgs.builder()\n .id(\"keep-minimum-versions\")\n .action(\"KEEP\")\n .mostRecentVersions(RepositoryCleanupPolicyMostRecentVersionsArgs.builder()\n .packageNamePrefixes( \n \"webapp\",\n \"mobile\",\n \"sandbox\")\n .keepCount(5)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n description: example docker repository with cleanup policies\n format: DOCKER\n cleanupPolicyDryRun: false\n cleanupPolicies:\n - id: delete-prerelease\n action: DELETE\n condition:\n tagState: TAGGED\n tagPrefixes:\n - alpha\n - v0\n olderThan: 2592000s\n - id: keep-tagged-release\n action: KEEP\n condition:\n tagState: TAGGED\n tagPrefixes:\n - release\n packageNamePrefixes:\n - webapp\n - mobile\n - id: keep-minimum-versions\n action: KEEP\n mostRecentVersions:\n packageNamePrefixes:\n - webapp\n - mobile\n - sandbox\n keepCount: 5\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Dockerhub Auth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example_remote_secret = new gcp.secretmanager.Secret(\"example-remote-secret\", {\n secretId: \"example-secret\",\n replication: {\n auto: {},\n },\n});\nconst example_remote_secretVersion = new gcp.secretmanager.SecretVersion(\"example-remote-secret_version\", {\n secret: example_remote_secret.id,\n secretData: \"remote-password\",\n});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: example_remote_secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"example-dockerhub-remote\",\n description: \"example remote dockerhub repository with credentials\",\n format: \"DOCKER\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"docker hub with custom credentials\",\n disableUpstreamValidation: true,\n dockerRepository: {\n publicRepository: \"DOCKER_HUB\",\n },\n upstreamCredentials: {\n usernamePasswordCredentials: {\n username: \"remote-username\",\n passwordSecretVersion: example_remote_secretVersion.name,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample_remote_secret = gcp.secretmanager.Secret(\"example-remote-secret\",\n secret_id=\"example-secret\",\n replication={\n \"auto\": {},\n })\nexample_remote_secret_version = gcp.secretmanager.SecretVersion(\"example-remote-secret_version\",\n secret=example_remote_secret.id,\n secret_data=\"remote-password\")\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=example_remote_secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"example-dockerhub-remote\",\n description=\"example remote dockerhub repository with credentials\",\n format=\"DOCKER\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"docker hub with custom credentials\",\n \"disable_upstream_validation\": True,\n \"docker_repository\": {\n \"public_repository\": \"DOCKER_HUB\",\n },\n \"upstream_credentials\": {\n \"username_password_credentials\": {\n \"username\": \"remote-username\",\n \"password_secret_version\": example_remote_secret_version.name,\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var example_remote_secret = new Gcp.SecretManager.Secret(\"example-remote-secret\", new()\n {\n SecretId = \"example-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var example_remote_secretVersion = new Gcp.SecretManager.SecretVersion(\"example-remote-secret_version\", new()\n {\n Secret = example_remote_secret.Id,\n SecretData = \"remote-password\",\n });\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = example_remote_secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-dockerhub-remote\",\n Description = \"example remote dockerhub repository with credentials\",\n Format = \"DOCKER\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"docker hub with custom credentials\",\n DisableUpstreamValidation = true,\n DockerRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs\n {\n PublicRepository = \"DOCKER_HUB\",\n },\n UpstreamCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs\n {\n UsernamePasswordCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs\n {\n Username = \"remote-username\",\n PasswordSecretVersion = example_remote_secretVersion.Name,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"example-remote-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"example-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"example-remote-secret_version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: example_remote_secret.ID(),\n\t\t\tSecretData: pulumi.String(\"remote-password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: example_remote_secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-dockerhub-remote\"),\n\t\t\tDescription: pulumi.String(\"example remote dockerhub repository with credentials\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"docker hub with custom credentials\"),\n\t\t\t\tDisableUpstreamValidation: pulumi.Bool(true),\n\t\t\t\tDockerRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryArgs{\n\t\t\t\t\tPublicRepository: pulumi.String(\"DOCKER_HUB\"),\n\t\t\t\t},\n\t\t\t\tUpstreamCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs{\n\t\t\t\t\tUsernamePasswordCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"remote-username\"),\n\t\t\t\t\t\tPasswordSecretVersion: example_remote_secretVersion.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var example_remote_secret = new Secret(\"example-remote-secret\", SecretArgs.builder()\n .secretId(\"example-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var example_remote_secretVersion = new SecretVersion(\"example-remote-secretVersion\", SecretVersionArgs.builder()\n .secret(example_remote_secret.id())\n .secretData(\"remote-password\")\n .build());\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(example_remote_secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"example-dockerhub-remote\")\n .description(\"example remote dockerhub repository with credentials\")\n .format(\"DOCKER\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"docker hub with custom credentials\")\n .disableUpstreamValidation(true)\n .dockerRepository(RepositoryRemoteRepositoryConfigDockerRepositoryArgs.builder()\n .publicRepository(\"DOCKER_HUB\")\n .build())\n .upstreamCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs.builder()\n .usernamePasswordCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs.builder()\n .username(\"remote-username\")\n .passwordSecretVersion(example_remote_secretVersion.name())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-remote-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: example-secret\n replication:\n auto: {}\n example-remote-secretVersion:\n type: gcp:secretmanager:SecretVersion\n name: example-remote-secret_version\n properties:\n secret: ${[\"example-remote-secret\"].id}\n secretData: remote-password\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${[\"example-remote-secret\"].id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: example-dockerhub-remote\n description: example remote dockerhub repository with credentials\n format: DOCKER\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: docker hub with custom credentials\n disableUpstreamValidation: true\n dockerRepository:\n publicRepository: DOCKER_HUB\n upstreamCredentials:\n usernamePasswordCredentials:\n username: remote-username\n passwordSecretVersion: ${[\"example-remote-secretVersion\"].name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Docker Custom With Auth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example_remote_secret = new gcp.secretmanager.Secret(\"example-remote-secret\", {\n secretId: \"example-secret\",\n replication: {\n auto: {},\n },\n});\nconst example_remote_secretVersion = new gcp.secretmanager.SecretVersion(\"example-remote-secret_version\", {\n secret: example_remote_secret.id,\n secretData: \"remote-password\",\n});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: example_remote_secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"example-docker-custom-remote\",\n description: \"example remote custom docker repository with credentials\",\n format: \"DOCKER\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"custom docker remote with credentials\",\n disableUpstreamValidation: true,\n dockerRepository: {\n customRepository: {\n uri: \"https://registry-1.docker.io\",\n },\n },\n upstreamCredentials: {\n usernamePasswordCredentials: {\n username: \"remote-username\",\n passwordSecretVersion: example_remote_secretVersion.name,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample_remote_secret = gcp.secretmanager.Secret(\"example-remote-secret\",\n secret_id=\"example-secret\",\n replication={\n \"auto\": {},\n })\nexample_remote_secret_version = gcp.secretmanager.SecretVersion(\"example-remote-secret_version\",\n secret=example_remote_secret.id,\n secret_data=\"remote-password\")\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=example_remote_secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"example-docker-custom-remote\",\n description=\"example remote custom docker repository with credentials\",\n format=\"DOCKER\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"custom docker remote with credentials\",\n \"disable_upstream_validation\": True,\n \"docker_repository\": {\n \"custom_repository\": {\n \"uri\": \"https://registry-1.docker.io\",\n },\n },\n \"upstream_credentials\": {\n \"username_password_credentials\": {\n \"username\": \"remote-username\",\n \"password_secret_version\": example_remote_secret_version.name,\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var example_remote_secret = new Gcp.SecretManager.Secret(\"example-remote-secret\", new()\n {\n SecretId = \"example-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var example_remote_secretVersion = new Gcp.SecretManager.SecretVersion(\"example-remote-secret_version\", new()\n {\n Secret = example_remote_secret.Id,\n SecretData = \"remote-password\",\n });\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = example_remote_secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-docker-custom-remote\",\n Description = \"example remote custom docker repository with credentials\",\n Format = \"DOCKER\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"custom docker remote with credentials\",\n DisableUpstreamValidation = true,\n DockerRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs\n {\n CustomRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs\n {\n Uri = \"https://registry-1.docker.io\",\n },\n },\n UpstreamCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs\n {\n UsernamePasswordCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs\n {\n Username = \"remote-username\",\n PasswordSecretVersion = example_remote_secretVersion.Name,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"example-remote-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"example-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"example-remote-secret_version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: example_remote_secret.ID(),\n\t\t\tSecretData: pulumi.String(\"remote-password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: example_remote_secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-docker-custom-remote\"),\n\t\t\tDescription: pulumi.String(\"example remote custom docker repository with credentials\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"custom docker remote with credentials\"),\n\t\t\t\tDisableUpstreamValidation: pulumi.Bool(true),\n\t\t\t\tDockerRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryArgs{\n\t\t\t\t\tCustomRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs{\n\t\t\t\t\t\tUri: pulumi.String(\"https://registry-1.docker.io\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tUpstreamCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs{\n\t\t\t\t\tUsernamePasswordCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"remote-username\"),\n\t\t\t\t\t\tPasswordSecretVersion: example_remote_secretVersion.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var example_remote_secret = new Secret(\"example-remote-secret\", SecretArgs.builder()\n .secretId(\"example-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var example_remote_secretVersion = new SecretVersion(\"example-remote-secretVersion\", SecretVersionArgs.builder()\n .secret(example_remote_secret.id())\n .secretData(\"remote-password\")\n .build());\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(example_remote_secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"example-docker-custom-remote\")\n .description(\"example remote custom docker repository with credentials\")\n .format(\"DOCKER\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"custom docker remote with credentials\")\n .disableUpstreamValidation(true)\n .dockerRepository(RepositoryRemoteRepositoryConfigDockerRepositoryArgs.builder()\n .customRepository(RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs.builder()\n .uri(\"https://registry-1.docker.io\")\n .build())\n .build())\n .upstreamCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs.builder()\n .usernamePasswordCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs.builder()\n .username(\"remote-username\")\n .passwordSecretVersion(example_remote_secretVersion.name())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-remote-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: example-secret\n replication:\n auto: {}\n example-remote-secretVersion:\n type: gcp:secretmanager:SecretVersion\n name: example-remote-secret_version\n properties:\n secret: ${[\"example-remote-secret\"].id}\n secretData: remote-password\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${[\"example-remote-secret\"].id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: example-docker-custom-remote\n description: example remote custom docker repository with credentials\n format: DOCKER\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: custom docker remote with credentials\n disableUpstreamValidation: true\n dockerRepository:\n customRepository:\n uri: https://registry-1.docker.io\n upstreamCredentials:\n usernamePasswordCredentials:\n username: remote-username\n passwordSecretVersion: ${[\"example-remote-secretVersion\"].name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Maven Custom With Auth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example_remote_secret = new gcp.secretmanager.Secret(\"example-remote-secret\", {\n secretId: \"example-secret\",\n replication: {\n auto: {},\n },\n});\nconst example_remote_secretVersion = new gcp.secretmanager.SecretVersion(\"example-remote-secret_version\", {\n secret: example_remote_secret.id,\n secretData: \"remote-password\",\n});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: example_remote_secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"example-maven-custom-remote\",\n description: \"example remote custom maven repository with credentials\",\n format: \"MAVEN\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"custom maven remote with credentials\",\n disableUpstreamValidation: true,\n mavenRepository: {\n customRepository: {\n uri: \"https://my.maven.registry\",\n },\n },\n upstreamCredentials: {\n usernamePasswordCredentials: {\n username: \"remote-username\",\n passwordSecretVersion: example_remote_secretVersion.name,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample_remote_secret = gcp.secretmanager.Secret(\"example-remote-secret\",\n secret_id=\"example-secret\",\n replication={\n \"auto\": {},\n })\nexample_remote_secret_version = gcp.secretmanager.SecretVersion(\"example-remote-secret_version\",\n secret=example_remote_secret.id,\n secret_data=\"remote-password\")\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=example_remote_secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"example-maven-custom-remote\",\n description=\"example remote custom maven repository with credentials\",\n format=\"MAVEN\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"custom maven remote with credentials\",\n \"disable_upstream_validation\": True,\n \"maven_repository\": {\n \"custom_repository\": {\n \"uri\": \"https://my.maven.registry\",\n },\n },\n \"upstream_credentials\": {\n \"username_password_credentials\": {\n \"username\": \"remote-username\",\n \"password_secret_version\": example_remote_secret_version.name,\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var example_remote_secret = new Gcp.SecretManager.Secret(\"example-remote-secret\", new()\n {\n SecretId = \"example-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var example_remote_secretVersion = new Gcp.SecretManager.SecretVersion(\"example-remote-secret_version\", new()\n {\n Secret = example_remote_secret.Id,\n SecretData = \"remote-password\",\n });\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = example_remote_secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-maven-custom-remote\",\n Description = \"example remote custom maven repository with credentials\",\n Format = \"MAVEN\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"custom maven remote with credentials\",\n DisableUpstreamValidation = true,\n MavenRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigMavenRepositoryArgs\n {\n CustomRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs\n {\n Uri = \"https://my.maven.registry\",\n },\n },\n UpstreamCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs\n {\n UsernamePasswordCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs\n {\n Username = \"remote-username\",\n PasswordSecretVersion = example_remote_secretVersion.Name,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"example-remote-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"example-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"example-remote-secret_version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: example_remote_secret.ID(),\n\t\t\tSecretData: pulumi.String(\"remote-password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: example_remote_secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-maven-custom-remote\"),\n\t\t\tDescription: pulumi.String(\"example remote custom maven repository with credentials\"),\n\t\t\tFormat: pulumi.String(\"MAVEN\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"custom maven remote with credentials\"),\n\t\t\t\tDisableUpstreamValidation: pulumi.Bool(true),\n\t\t\t\tMavenRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigMavenRepositoryArgs{\n\t\t\t\t\tCustomRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs{\n\t\t\t\t\t\tUri: pulumi.String(\"https://my.maven.registry\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tUpstreamCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs{\n\t\t\t\t\tUsernamePasswordCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"remote-username\"),\n\t\t\t\t\t\tPasswordSecretVersion: example_remote_secretVersion.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigMavenRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var example_remote_secret = new Secret(\"example-remote-secret\", SecretArgs.builder()\n .secretId(\"example-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var example_remote_secretVersion = new SecretVersion(\"example-remote-secretVersion\", SecretVersionArgs.builder()\n .secret(example_remote_secret.id())\n .secretData(\"remote-password\")\n .build());\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(example_remote_secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"example-maven-custom-remote\")\n .description(\"example remote custom maven repository with credentials\")\n .format(\"MAVEN\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"custom maven remote with credentials\")\n .disableUpstreamValidation(true)\n .mavenRepository(RepositoryRemoteRepositoryConfigMavenRepositoryArgs.builder()\n .customRepository(RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs.builder()\n .uri(\"https://my.maven.registry\")\n .build())\n .build())\n .upstreamCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs.builder()\n .usernamePasswordCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs.builder()\n .username(\"remote-username\")\n .passwordSecretVersion(example_remote_secretVersion.name())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-remote-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: example-secret\n replication:\n auto: {}\n example-remote-secretVersion:\n type: gcp:secretmanager:SecretVersion\n name: example-remote-secret_version\n properties:\n secret: ${[\"example-remote-secret\"].id}\n secretData: remote-password\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${[\"example-remote-secret\"].id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: example-maven-custom-remote\n description: example remote custom maven repository with credentials\n format: MAVEN\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: custom maven remote with credentials\n disableUpstreamValidation: true\n mavenRepository:\n customRepository:\n uri: https://my.maven.registry\n upstreamCredentials:\n usernamePasswordCredentials:\n username: remote-username\n passwordSecretVersion: ${[\"example-remote-secretVersion\"].name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Npm Custom With Auth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example_remote_secret = new gcp.secretmanager.Secret(\"example-remote-secret\", {\n secretId: \"example-secret\",\n replication: {\n auto: {},\n },\n});\nconst example_remote_secretVersion = new gcp.secretmanager.SecretVersion(\"example-remote-secret_version\", {\n secret: example_remote_secret.id,\n secretData: \"remote-password\",\n});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: example_remote_secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"example-npm-custom-remote\",\n description: \"example remote custom npm repository with credentials\",\n format: \"NPM\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"custom npm with credentials\",\n disableUpstreamValidation: true,\n npmRepository: {\n customRepository: {\n uri: \"https://my.npm.registry\",\n },\n },\n upstreamCredentials: {\n usernamePasswordCredentials: {\n username: \"remote-username\",\n passwordSecretVersion: example_remote_secretVersion.name,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample_remote_secret = gcp.secretmanager.Secret(\"example-remote-secret\",\n secret_id=\"example-secret\",\n replication={\n \"auto\": {},\n })\nexample_remote_secret_version = gcp.secretmanager.SecretVersion(\"example-remote-secret_version\",\n secret=example_remote_secret.id,\n secret_data=\"remote-password\")\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=example_remote_secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"example-npm-custom-remote\",\n description=\"example remote custom npm repository with credentials\",\n format=\"NPM\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"custom npm with credentials\",\n \"disable_upstream_validation\": True,\n \"npm_repository\": {\n \"custom_repository\": {\n \"uri\": \"https://my.npm.registry\",\n },\n },\n \"upstream_credentials\": {\n \"username_password_credentials\": {\n \"username\": \"remote-username\",\n \"password_secret_version\": example_remote_secret_version.name,\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var example_remote_secret = new Gcp.SecretManager.Secret(\"example-remote-secret\", new()\n {\n SecretId = \"example-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var example_remote_secretVersion = new Gcp.SecretManager.SecretVersion(\"example-remote-secret_version\", new()\n {\n Secret = example_remote_secret.Id,\n SecretData = \"remote-password\",\n });\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = example_remote_secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-npm-custom-remote\",\n Description = \"example remote custom npm repository with credentials\",\n Format = \"NPM\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"custom npm with credentials\",\n DisableUpstreamValidation = true,\n NpmRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigNpmRepositoryArgs\n {\n CustomRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs\n {\n Uri = \"https://my.npm.registry\",\n },\n },\n UpstreamCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs\n {\n UsernamePasswordCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs\n {\n Username = \"remote-username\",\n PasswordSecretVersion = example_remote_secretVersion.Name,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"example-remote-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"example-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"example-remote-secret_version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: example_remote_secret.ID(),\n\t\t\tSecretData: pulumi.String(\"remote-password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: example_remote_secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-npm-custom-remote\"),\n\t\t\tDescription: pulumi.String(\"example remote custom npm repository with credentials\"),\n\t\t\tFormat: pulumi.String(\"NPM\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"custom npm with credentials\"),\n\t\t\t\tDisableUpstreamValidation: pulumi.Bool(true),\n\t\t\t\tNpmRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigNpmRepositoryArgs{\n\t\t\t\t\tCustomRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs{\n\t\t\t\t\t\tUri: pulumi.String(\"https://my.npm.registry\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tUpstreamCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs{\n\t\t\t\t\tUsernamePasswordCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"remote-username\"),\n\t\t\t\t\t\tPasswordSecretVersion: example_remote_secretVersion.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigNpmRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var example_remote_secret = new Secret(\"example-remote-secret\", SecretArgs.builder()\n .secretId(\"example-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var example_remote_secretVersion = new SecretVersion(\"example-remote-secretVersion\", SecretVersionArgs.builder()\n .secret(example_remote_secret.id())\n .secretData(\"remote-password\")\n .build());\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(example_remote_secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"example-npm-custom-remote\")\n .description(\"example remote custom npm repository with credentials\")\n .format(\"NPM\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"custom npm with credentials\")\n .disableUpstreamValidation(true)\n .npmRepository(RepositoryRemoteRepositoryConfigNpmRepositoryArgs.builder()\n .customRepository(RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs.builder()\n .uri(\"https://my.npm.registry\")\n .build())\n .build())\n .upstreamCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs.builder()\n .usernamePasswordCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs.builder()\n .username(\"remote-username\")\n .passwordSecretVersion(example_remote_secretVersion.name())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-remote-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: example-secret\n replication:\n auto: {}\n example-remote-secretVersion:\n type: gcp:secretmanager:SecretVersion\n name: example-remote-secret_version\n properties:\n secret: ${[\"example-remote-secret\"].id}\n secretData: remote-password\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${[\"example-remote-secret\"].id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: example-npm-custom-remote\n description: example remote custom npm repository with credentials\n format: NPM\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: custom npm with credentials\n disableUpstreamValidation: true\n npmRepository:\n customRepository:\n uri: https://my.npm.registry\n upstreamCredentials:\n usernamePasswordCredentials:\n username: remote-username\n passwordSecretVersion: ${[\"example-remote-secretVersion\"].name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Python Custom With Auth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example_remote_secret = new gcp.secretmanager.Secret(\"example-remote-secret\", {\n secretId: \"example-secret\",\n replication: {\n auto: {},\n },\n});\nconst example_remote_secretVersion = new gcp.secretmanager.SecretVersion(\"example-remote-secret_version\", {\n secret: example_remote_secret.id,\n secretData: \"remote-password\",\n});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: example_remote_secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"example-python-custom-remote\",\n description: \"example remote custom python repository with credentials\",\n format: \"PYTHON\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"custom npm with credentials\",\n disableUpstreamValidation: true,\n pythonRepository: {\n customRepository: {\n uri: \"https://my.python.registry\",\n },\n },\n upstreamCredentials: {\n usernamePasswordCredentials: {\n username: \"remote-username\",\n passwordSecretVersion: example_remote_secretVersion.name,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample_remote_secret = gcp.secretmanager.Secret(\"example-remote-secret\",\n secret_id=\"example-secret\",\n replication={\n \"auto\": {},\n })\nexample_remote_secret_version = gcp.secretmanager.SecretVersion(\"example-remote-secret_version\",\n secret=example_remote_secret.id,\n secret_data=\"remote-password\")\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=example_remote_secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"example-python-custom-remote\",\n description=\"example remote custom python repository with credentials\",\n format=\"PYTHON\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"custom npm with credentials\",\n \"disable_upstream_validation\": True,\n \"python_repository\": {\n \"custom_repository\": {\n \"uri\": \"https://my.python.registry\",\n },\n },\n \"upstream_credentials\": {\n \"username_password_credentials\": {\n \"username\": \"remote-username\",\n \"password_secret_version\": example_remote_secret_version.name,\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var example_remote_secret = new Gcp.SecretManager.Secret(\"example-remote-secret\", new()\n {\n SecretId = \"example-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var example_remote_secretVersion = new Gcp.SecretManager.SecretVersion(\"example-remote-secret_version\", new()\n {\n Secret = example_remote_secret.Id,\n SecretData = \"remote-password\",\n });\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = example_remote_secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-python-custom-remote\",\n Description = \"example remote custom python repository with credentials\",\n Format = \"PYTHON\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"custom npm with credentials\",\n DisableUpstreamValidation = true,\n PythonRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigPythonRepositoryArgs\n {\n CustomRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs\n {\n Uri = \"https://my.python.registry\",\n },\n },\n UpstreamCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs\n {\n UsernamePasswordCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs\n {\n Username = \"remote-username\",\n PasswordSecretVersion = example_remote_secretVersion.Name,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"example-remote-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"example-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"example-remote-secret_version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: example_remote_secret.ID(),\n\t\t\tSecretData: pulumi.String(\"remote-password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: example_remote_secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-python-custom-remote\"),\n\t\t\tDescription: pulumi.String(\"example remote custom python repository with credentials\"),\n\t\t\tFormat: pulumi.String(\"PYTHON\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"custom npm with credentials\"),\n\t\t\t\tDisableUpstreamValidation: pulumi.Bool(true),\n\t\t\t\tPythonRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigPythonRepositoryArgs{\n\t\t\t\t\tCustomRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs{\n\t\t\t\t\t\tUri: pulumi.String(\"https://my.python.registry\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tUpstreamCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs{\n\t\t\t\t\tUsernamePasswordCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"remote-username\"),\n\t\t\t\t\t\tPasswordSecretVersion: example_remote_secretVersion.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigPythonRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var example_remote_secret = new Secret(\"example-remote-secret\", SecretArgs.builder()\n .secretId(\"example-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var example_remote_secretVersion = new SecretVersion(\"example-remote-secretVersion\", SecretVersionArgs.builder()\n .secret(example_remote_secret.id())\n .secretData(\"remote-password\")\n .build());\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(example_remote_secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"example-python-custom-remote\")\n .description(\"example remote custom python repository with credentials\")\n .format(\"PYTHON\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"custom npm with credentials\")\n .disableUpstreamValidation(true)\n .pythonRepository(RepositoryRemoteRepositoryConfigPythonRepositoryArgs.builder()\n .customRepository(RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs.builder()\n .uri(\"https://my.python.registry\")\n .build())\n .build())\n .upstreamCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs.builder()\n .usernamePasswordCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs.builder()\n .username(\"remote-username\")\n .passwordSecretVersion(example_remote_secretVersion.name())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-remote-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: example-secret\n replication:\n auto: {}\n example-remote-secretVersion:\n type: gcp:secretmanager:SecretVersion\n name: example-remote-secret_version\n properties:\n secret: ${[\"example-remote-secret\"].id}\n secretData: remote-password\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${[\"example-remote-secret\"].id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: example-python-custom-remote\n description: example remote custom python repository with credentials\n format: PYTHON\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: custom npm with credentials\n disableUpstreamValidation: true\n pythonRepository:\n customRepository:\n uri: https://my.python.registry\n upstreamCredentials:\n usernamePasswordCredentials:\n username: remote-username\n passwordSecretVersion: ${[\"example-remote-secretVersion\"].name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRepository can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/repositories/{{repository_id}}`\n\n* `{{project}}/{{location}}/{{repository_id}}`\n\n* `{{location}}/{{repository_id}}`\n\n* `{{repository_id}}`\n\nWhen using the `pulumi import` command, Repository can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:artifactregistry/repository:Repository default projects/{{project}}/locations/{{location}}/repositories/{{repository_id}}\n```\n\n```sh\n$ pulumi import gcp:artifactregistry/repository:Repository default {{project}}/{{location}}/{{repository_id}}\n```\n\n```sh\n$ pulumi import gcp:artifactregistry/repository:Repository default {{location}}/{{repository_id}}\n```\n\n```sh\n$ pulumi import gcp:artifactregistry/repository:Repository default {{repository_id}}\n```\n\n", + "description": "A repository for storing artifacts\n\n\nTo get more information about Repository, see:\n\n* [API documentation](https://cloud.google.com/artifact-registry/docs/reference/rest/v1/projects.locations.repositories)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/artifact-registry/docs/overview)\n\n## Example Usage\n\n### Artifact Registry Repository Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example docker repository\",\n format: \"DOCKER\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n description=\"example docker repository\",\n format=\"DOCKER\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Description = \"example docker repository\",\n Format = \"DOCKER\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example docker repository\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .description(\"example docker repository\")\n .format(\"DOCKER\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n description: example docker repository\n format: DOCKER\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Docker\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example docker repository\",\n format: \"DOCKER\",\n dockerConfig: {\n immutableTags: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n description=\"example docker repository\",\n format=\"DOCKER\",\n docker_config={\n \"immutable_tags\": True,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Description = \"example docker repository\",\n Format = \"DOCKER\",\n DockerConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryDockerConfigArgs\n {\n ImmutableTags = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example docker repository\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tDockerConfig: \u0026artifactregistry.RepositoryDockerConfigArgs{\n\t\t\t\tImmutableTags: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryDockerConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .description(\"example docker repository\")\n .format(\"DOCKER\")\n .dockerConfig(RepositoryDockerConfigArgs.builder()\n .immutableTags(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n description: example docker repository\n format: DOCKER\n dockerConfig:\n immutableTags: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst cryptoKey = new gcp.kms.CryptoKeyIAMMember(\"crypto_key\", {\n cryptoKeyId: \"kms-key\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example docker repository with cmek\",\n format: \"DOCKER\",\n kmsKeyName: \"kms-key\",\n}, {\n dependsOn: [cryptoKey],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ncrypto_key = gcp.kms.CryptoKeyIAMMember(\"crypto_key\",\n crypto_key_id=\"kms-key\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n description=\"example docker repository with cmek\",\n format=\"DOCKER\",\n kms_key_name=\"kms-key\",\n opts = pulumi.ResourceOptions(depends_on=[crypto_key]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cryptoKey = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key\", new()\n {\n CryptoKeyId = \"kms-key\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Description = \"example docker repository with cmek\",\n Format = \"DOCKER\",\n KmsKeyName = \"kms-key\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cryptoKey,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKey, err := kms.NewCryptoKeyIAMMember(ctx, \"crypto_key\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"kms-key\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example docker repository with cmek\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tKmsKeyName: pulumi.String(\"kms-key\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcryptoKey,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var cryptoKey = new CryptoKeyIAMMember(\"cryptoKey\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(\"kms-key\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .description(\"example docker repository with cmek\")\n .format(\"DOCKER\")\n .kmsKeyName(\"kms-key\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(cryptoKey)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n description: example docker repository with cmek\n format: DOCKER\n kmsKeyName: kms-key\n options:\n dependson:\n - ${cryptoKey}\n cryptoKey:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key\n properties:\n cryptoKeyId: kms-key\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Virtual\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo_upstream_1 = new gcp.artifactregistry.Repository(\"my-repo-upstream-1\", {\n location: \"us-central1\",\n repositoryId: \"my-repository-upstream-1\",\n description: \"example docker repository (upstream source) 1\",\n format: \"DOCKER\",\n});\nconst my_repo_upstream_2 = new gcp.artifactregistry.Repository(\"my-repo-upstream-2\", {\n location: \"us-central1\",\n repositoryId: \"my-repository-upstream-2\",\n description: \"example docker repository (upstream source) 2\",\n format: \"DOCKER\",\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example virtual docker repository\",\n format: \"DOCKER\",\n mode: \"VIRTUAL_REPOSITORY\",\n virtualRepositoryConfig: {\n upstreamPolicies: [\n {\n id: \"my-repository-upstream-1\",\n repository: my_repo_upstream_1.id,\n priority: 20,\n },\n {\n id: \"my-repository-upstream-2\",\n repository: my_repo_upstream_2.id,\n priority: 10,\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo_upstream_1 = gcp.artifactregistry.Repository(\"my-repo-upstream-1\",\n location=\"us-central1\",\n repository_id=\"my-repository-upstream-1\",\n description=\"example docker repository (upstream source) 1\",\n format=\"DOCKER\")\nmy_repo_upstream_2 = gcp.artifactregistry.Repository(\"my-repo-upstream-2\",\n location=\"us-central1\",\n repository_id=\"my-repository-upstream-2\",\n description=\"example docker repository (upstream source) 2\",\n format=\"DOCKER\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n description=\"example virtual docker repository\",\n format=\"DOCKER\",\n mode=\"VIRTUAL_REPOSITORY\",\n virtual_repository_config={\n \"upstream_policies\": [\n {\n \"id\": \"my-repository-upstream-1\",\n \"repository\": my_repo_upstream_1.id,\n \"priority\": 20,\n },\n {\n \"id\": \"my-repository-upstream-2\",\n \"repository\": my_repo_upstream_2.id,\n \"priority\": 10,\n },\n ],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_repo_upstream_1 = new Gcp.ArtifactRegistry.Repository(\"my-repo-upstream-1\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository-upstream-1\",\n Description = \"example docker repository (upstream source) 1\",\n Format = \"DOCKER\",\n });\n\n var my_repo_upstream_2 = new Gcp.ArtifactRegistry.Repository(\"my-repo-upstream-2\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository-upstream-2\",\n Description = \"example docker repository (upstream source) 2\",\n Format = \"DOCKER\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Description = \"example virtual docker repository\",\n Format = \"DOCKER\",\n Mode = \"VIRTUAL_REPOSITORY\",\n VirtualRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryVirtualRepositoryConfigArgs\n {\n UpstreamPolicies = new[]\n {\n new Gcp.ArtifactRegistry.Inputs.RepositoryVirtualRepositoryConfigUpstreamPolicyArgs\n {\n Id = \"my-repository-upstream-1\",\n Repository = my_repo_upstream_1.Id,\n Priority = 20,\n },\n new Gcp.ArtifactRegistry.Inputs.RepositoryVirtualRepositoryConfigUpstreamPolicyArgs\n {\n Id = \"my-repository-upstream-2\",\n Repository = my_repo_upstream_2.Id,\n Priority = 10,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := artifactregistry.NewRepository(ctx, \"my-repo-upstream-1\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository-upstream-1\"),\n\t\t\tDescription: pulumi.String(\"example docker repository (upstream source) 1\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo-upstream-2\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository-upstream-2\"),\n\t\t\tDescription: pulumi.String(\"example docker repository (upstream source) 2\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example virtual docker repository\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tMode: pulumi.String(\"VIRTUAL_REPOSITORY\"),\n\t\t\tVirtualRepositoryConfig: \u0026artifactregistry.RepositoryVirtualRepositoryConfigArgs{\n\t\t\t\tUpstreamPolicies: artifactregistry.RepositoryVirtualRepositoryConfigUpstreamPolicyArray{\n\t\t\t\t\t\u0026artifactregistry.RepositoryVirtualRepositoryConfigUpstreamPolicyArgs{\n\t\t\t\t\t\tId: pulumi.String(\"my-repository-upstream-1\"),\n\t\t\t\t\t\tRepository: my_repo_upstream_1.ID(),\n\t\t\t\t\t\tPriority: pulumi.Int(20),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026artifactregistry.RepositoryVirtualRepositoryConfigUpstreamPolicyArgs{\n\t\t\t\t\t\tId: pulumi.String(\"my-repository-upstream-2\"),\n\t\t\t\t\t\tRepository: my_repo_upstream_2.ID(),\n\t\t\t\t\t\tPriority: pulumi.Int(10),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryVirtualRepositoryConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_repo_upstream_1 = new Repository(\"my-repo-upstream-1\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository-upstream-1\")\n .description(\"example docker repository (upstream source) 1\")\n .format(\"DOCKER\")\n .build());\n\n var my_repo_upstream_2 = new Repository(\"my-repo-upstream-2\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository-upstream-2\")\n .description(\"example docker repository (upstream source) 2\")\n .format(\"DOCKER\")\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .description(\"example virtual docker repository\")\n .format(\"DOCKER\")\n .mode(\"VIRTUAL_REPOSITORY\")\n .virtualRepositoryConfig(RepositoryVirtualRepositoryConfigArgs.builder()\n .upstreamPolicies( \n RepositoryVirtualRepositoryConfigUpstreamPolicyArgs.builder()\n .id(\"my-repository-upstream-1\")\n .repository(my_repo_upstream_1.id())\n .priority(20)\n .build(),\n RepositoryVirtualRepositoryConfigUpstreamPolicyArgs.builder()\n .id(\"my-repository-upstream-2\")\n .repository(my_repo_upstream_2.id())\n .priority(10)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo-upstream-1:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository-upstream-1\n description: example docker repository (upstream source) 1\n format: DOCKER\n my-repo-upstream-2:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository-upstream-2\n description: example docker repository (upstream source) 2\n format: DOCKER\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n description: example virtual docker repository\n format: DOCKER\n mode: VIRTUAL_REPOSITORY\n virtualRepositoryConfig:\n upstreamPolicies:\n - id: my-repository-upstream-1\n repository: ${[\"my-repo-upstream-1\"].id}\n priority: 20\n - id: my-repository-upstream-2\n repository: ${[\"my-repo-upstream-2\"].id}\n priority: 10\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example remote docker repository\",\n format: \"DOCKER\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"docker hub\",\n dockerRepository: {\n publicRepository: \"DOCKER_HUB\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n description=\"example remote docker repository\",\n format=\"DOCKER\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"docker hub\",\n \"docker_repository\": {\n \"public_repository\": \"DOCKER_HUB\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Description = \"example remote docker repository\",\n Format = \"DOCKER\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"docker hub\",\n DockerRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs\n {\n PublicRepository = \"DOCKER_HUB\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example remote docker repository\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"docker hub\"),\n\t\t\t\tDockerRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryArgs{\n\t\t\t\t\tPublicRepository: pulumi.String(\"DOCKER_HUB\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .description(\"example remote docker repository\")\n .format(\"DOCKER\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"docker hub\")\n .dockerRepository(RepositoryRemoteRepositoryConfigDockerRepositoryArgs.builder()\n .publicRepository(\"DOCKER_HUB\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n description: example remote docker repository\n format: DOCKER\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: docker hub\n dockerRepository:\n publicRepository: DOCKER_HUB\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Apt\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"debian-buster\",\n description: \"example remote apt repository\",\n format: \"APT\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"Debian buster remote repository\",\n aptRepository: {\n publicRepository: {\n repositoryBase: \"DEBIAN\",\n repositoryPath: \"debian/dists/buster\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"debian-buster\",\n description=\"example remote apt repository\",\n format=\"APT\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"Debian buster remote repository\",\n \"apt_repository\": {\n \"public_repository\": {\n \"repository_base\": \"DEBIAN\",\n \"repository_path\": \"debian/dists/buster\",\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"debian-buster\",\n Description = \"example remote apt repository\",\n Format = \"APT\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"Debian buster remote repository\",\n AptRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigAptRepositoryArgs\n {\n PublicRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigAptRepositoryPublicRepositoryArgs\n {\n RepositoryBase = \"DEBIAN\",\n RepositoryPath = \"debian/dists/buster\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"debian-buster\"),\n\t\t\tDescription: pulumi.String(\"example remote apt repository\"),\n\t\t\tFormat: pulumi.String(\"APT\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"Debian buster remote repository\"),\n\t\t\t\tAptRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigAptRepositoryArgs{\n\t\t\t\t\tPublicRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigAptRepositoryPublicRepositoryArgs{\n\t\t\t\t\t\tRepositoryBase: pulumi.String(\"DEBIAN\"),\n\t\t\t\t\t\tRepositoryPath: pulumi.String(\"debian/dists/buster\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigAptRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigAptRepositoryPublicRepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"debian-buster\")\n .description(\"example remote apt repository\")\n .format(\"APT\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"Debian buster remote repository\")\n .aptRepository(RepositoryRemoteRepositoryConfigAptRepositoryArgs.builder()\n .publicRepository(RepositoryRemoteRepositoryConfigAptRepositoryPublicRepositoryArgs.builder()\n .repositoryBase(\"DEBIAN\")\n .repositoryPath(\"debian/dists/buster\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: debian-buster\n description: example remote apt repository\n format: APT\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: Debian buster remote repository\n aptRepository:\n publicRepository:\n repositoryBase: DEBIAN\n repositoryPath: debian/dists/buster\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Yum\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"rocky-9\",\n description: \"example remote yum repository\",\n format: \"YUM\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"Rocky 9 remote repository\",\n yumRepository: {\n publicRepository: {\n repositoryBase: \"ROCKY\",\n repositoryPath: \"pub/rocky/9/BaseOS/x86_64/os\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"rocky-9\",\n description=\"example remote yum repository\",\n format=\"YUM\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"Rocky 9 remote repository\",\n \"yum_repository\": {\n \"public_repository\": {\n \"repository_base\": \"ROCKY\",\n \"repository_path\": \"pub/rocky/9/BaseOS/x86_64/os\",\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"rocky-9\",\n Description = \"example remote yum repository\",\n Format = \"YUM\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"Rocky 9 remote repository\",\n YumRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigYumRepositoryArgs\n {\n PublicRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigYumRepositoryPublicRepositoryArgs\n {\n RepositoryBase = \"ROCKY\",\n RepositoryPath = \"pub/rocky/9/BaseOS/x86_64/os\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"rocky-9\"),\n\t\t\tDescription: pulumi.String(\"example remote yum repository\"),\n\t\t\tFormat: pulumi.String(\"YUM\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"Rocky 9 remote repository\"),\n\t\t\t\tYumRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigYumRepositoryArgs{\n\t\t\t\t\tPublicRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigYumRepositoryPublicRepositoryArgs{\n\t\t\t\t\t\tRepositoryBase: pulumi.String(\"ROCKY\"),\n\t\t\t\t\t\tRepositoryPath: pulumi.String(\"pub/rocky/9/BaseOS/x86_64/os\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigYumRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigYumRepositoryPublicRepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"rocky-9\")\n .description(\"example remote yum repository\")\n .format(\"YUM\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"Rocky 9 remote repository\")\n .yumRepository(RepositoryRemoteRepositoryConfigYumRepositoryArgs.builder()\n .publicRepository(RepositoryRemoteRepositoryConfigYumRepositoryPublicRepositoryArgs.builder()\n .repositoryBase(\"ROCKY\")\n .repositoryPath(\"pub/rocky/9/BaseOS/x86_64/os\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: rocky-9\n description: example remote yum repository\n format: YUM\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: Rocky 9 remote repository\n yumRepository:\n publicRepository:\n repositoryBase: ROCKY\n repositoryPath: pub/rocky/9/BaseOS/x86_64/os\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Cleanup\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example docker repository with cleanup policies\",\n format: \"DOCKER\",\n cleanupPolicyDryRun: false,\n cleanupPolicies: [\n {\n id: \"delete-prerelease\",\n action: \"DELETE\",\n condition: {\n tagState: \"TAGGED\",\n tagPrefixes: [\n \"alpha\",\n \"v0\",\n ],\n olderThan: \"2592000s\",\n },\n },\n {\n id: \"keep-tagged-release\",\n action: \"KEEP\",\n condition: {\n tagState: \"TAGGED\",\n tagPrefixes: [\"release\"],\n packageNamePrefixes: [\n \"webapp\",\n \"mobile\",\n ],\n },\n },\n {\n id: \"keep-minimum-versions\",\n action: \"KEEP\",\n mostRecentVersions: {\n packageNamePrefixes: [\n \"webapp\",\n \"mobile\",\n \"sandbox\",\n ],\n keepCount: 5,\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n description=\"example docker repository with cleanup policies\",\n format=\"DOCKER\",\n cleanup_policy_dry_run=False,\n cleanup_policies=[\n {\n \"id\": \"delete-prerelease\",\n \"action\": \"DELETE\",\n \"condition\": {\n \"tag_state\": \"TAGGED\",\n \"tag_prefixes\": [\n \"alpha\",\n \"v0\",\n ],\n \"older_than\": \"2592000s\",\n },\n },\n {\n \"id\": \"keep-tagged-release\",\n \"action\": \"KEEP\",\n \"condition\": {\n \"tag_state\": \"TAGGED\",\n \"tag_prefixes\": [\"release\"],\n \"package_name_prefixes\": [\n \"webapp\",\n \"mobile\",\n ],\n },\n },\n {\n \"id\": \"keep-minimum-versions\",\n \"action\": \"KEEP\",\n \"most_recent_versions\": {\n \"package_name_prefixes\": [\n \"webapp\",\n \"mobile\",\n \"sandbox\",\n ],\n \"keep_count\": 5,\n },\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Description = \"example docker repository with cleanup policies\",\n Format = \"DOCKER\",\n CleanupPolicyDryRun = false,\n CleanupPolicies = new[]\n {\n new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyArgs\n {\n Id = \"delete-prerelease\",\n Action = \"DELETE\",\n Condition = new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyConditionArgs\n {\n TagState = \"TAGGED\",\n TagPrefixes = new[]\n {\n \"alpha\",\n \"v0\",\n },\n OlderThan = \"2592000s\",\n },\n },\n new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyArgs\n {\n Id = \"keep-tagged-release\",\n Action = \"KEEP\",\n Condition = new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyConditionArgs\n {\n TagState = \"TAGGED\",\n TagPrefixes = new[]\n {\n \"release\",\n },\n PackageNamePrefixes = new[]\n {\n \"webapp\",\n \"mobile\",\n },\n },\n },\n new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyArgs\n {\n Id = \"keep-minimum-versions\",\n Action = \"KEEP\",\n MostRecentVersions = new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyMostRecentVersionsArgs\n {\n PackageNamePrefixes = new[]\n {\n \"webapp\",\n \"mobile\",\n \"sandbox\",\n },\n KeepCount = 5,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example docker repository with cleanup policies\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tCleanupPolicyDryRun: pulumi.Bool(false),\n\t\t\tCleanupPolicies: artifactregistry.RepositoryCleanupPolicyArray{\n\t\t\t\t\u0026artifactregistry.RepositoryCleanupPolicyArgs{\n\t\t\t\t\tId: pulumi.String(\"delete-prerelease\"),\n\t\t\t\t\tAction: pulumi.String(\"DELETE\"),\n\t\t\t\t\tCondition: \u0026artifactregistry.RepositoryCleanupPolicyConditionArgs{\n\t\t\t\t\t\tTagState: pulumi.String(\"TAGGED\"),\n\t\t\t\t\t\tTagPrefixes: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"alpha\"),\n\t\t\t\t\t\t\tpulumi.String(\"v0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tOlderThan: pulumi.String(\"2592000s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026artifactregistry.RepositoryCleanupPolicyArgs{\n\t\t\t\t\tId: pulumi.String(\"keep-tagged-release\"),\n\t\t\t\t\tAction: pulumi.String(\"KEEP\"),\n\t\t\t\t\tCondition: \u0026artifactregistry.RepositoryCleanupPolicyConditionArgs{\n\t\t\t\t\t\tTagState: pulumi.String(\"TAGGED\"),\n\t\t\t\t\t\tTagPrefixes: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"release\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPackageNamePrefixes: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"webapp\"),\n\t\t\t\t\t\t\tpulumi.String(\"mobile\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026artifactregistry.RepositoryCleanupPolicyArgs{\n\t\t\t\t\tId: pulumi.String(\"keep-minimum-versions\"),\n\t\t\t\t\tAction: pulumi.String(\"KEEP\"),\n\t\t\t\t\tMostRecentVersions: \u0026artifactregistry.RepositoryCleanupPolicyMostRecentVersionsArgs{\n\t\t\t\t\t\tPackageNamePrefixes: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"webapp\"),\n\t\t\t\t\t\t\tpulumi.String(\"mobile\"),\n\t\t\t\t\t\t\tpulumi.String(\"sandbox\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tKeepCount: pulumi.Int(5),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryCleanupPolicyArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryCleanupPolicyConditionArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryCleanupPolicyMostRecentVersionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .description(\"example docker repository with cleanup policies\")\n .format(\"DOCKER\")\n .cleanupPolicyDryRun(false)\n .cleanupPolicies( \n RepositoryCleanupPolicyArgs.builder()\n .id(\"delete-prerelease\")\n .action(\"DELETE\")\n .condition(RepositoryCleanupPolicyConditionArgs.builder()\n .tagState(\"TAGGED\")\n .tagPrefixes( \n \"alpha\",\n \"v0\")\n .olderThan(\"2592000s\")\n .build())\n .build(),\n RepositoryCleanupPolicyArgs.builder()\n .id(\"keep-tagged-release\")\n .action(\"KEEP\")\n .condition(RepositoryCleanupPolicyConditionArgs.builder()\n .tagState(\"TAGGED\")\n .tagPrefixes(\"release\")\n .packageNamePrefixes( \n \"webapp\",\n \"mobile\")\n .build())\n .build(),\n RepositoryCleanupPolicyArgs.builder()\n .id(\"keep-minimum-versions\")\n .action(\"KEEP\")\n .mostRecentVersions(RepositoryCleanupPolicyMostRecentVersionsArgs.builder()\n .packageNamePrefixes( \n \"webapp\",\n \"mobile\",\n \"sandbox\")\n .keepCount(5)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n description: example docker repository with cleanup policies\n format: DOCKER\n cleanupPolicyDryRun: false\n cleanupPolicies:\n - id: delete-prerelease\n action: DELETE\n condition:\n tagState: TAGGED\n tagPrefixes:\n - alpha\n - v0\n olderThan: 2592000s\n - id: keep-tagged-release\n action: KEEP\n condition:\n tagState: TAGGED\n tagPrefixes:\n - release\n packageNamePrefixes:\n - webapp\n - mobile\n - id: keep-minimum-versions\n action: KEEP\n mostRecentVersions:\n packageNamePrefixes:\n - webapp\n - mobile\n - sandbox\n keepCount: 5\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Dockerhub Auth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example_remote_secret = new gcp.secretmanager.Secret(\"example-remote-secret\", {\n secretId: \"example-secret\",\n replication: {\n auto: {},\n },\n});\nconst example_remote_secretVersion = new gcp.secretmanager.SecretVersion(\"example-remote-secret_version\", {\n secret: example_remote_secret.id,\n secretData: \"remote-password\",\n});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: example_remote_secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"example-dockerhub-remote\",\n description: \"example remote dockerhub repository with credentials\",\n format: \"DOCKER\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"docker hub with custom credentials\",\n disableUpstreamValidation: true,\n dockerRepository: {\n publicRepository: \"DOCKER_HUB\",\n },\n upstreamCredentials: {\n usernamePasswordCredentials: {\n username: \"remote-username\",\n passwordSecretVersion: example_remote_secretVersion.name,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample_remote_secret = gcp.secretmanager.Secret(\"example-remote-secret\",\n secret_id=\"example-secret\",\n replication={\n \"auto\": {},\n })\nexample_remote_secret_version = gcp.secretmanager.SecretVersion(\"example-remote-secret_version\",\n secret=example_remote_secret.id,\n secret_data=\"remote-password\")\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=example_remote_secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"example-dockerhub-remote\",\n description=\"example remote dockerhub repository with credentials\",\n format=\"DOCKER\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"docker hub with custom credentials\",\n \"disable_upstream_validation\": True,\n \"docker_repository\": {\n \"public_repository\": \"DOCKER_HUB\",\n },\n \"upstream_credentials\": {\n \"username_password_credentials\": {\n \"username\": \"remote-username\",\n \"password_secret_version\": example_remote_secret_version.name,\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var example_remote_secret = new Gcp.SecretManager.Secret(\"example-remote-secret\", new()\n {\n SecretId = \"example-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var example_remote_secretVersion = new Gcp.SecretManager.SecretVersion(\"example-remote-secret_version\", new()\n {\n Secret = example_remote_secret.Id,\n SecretData = \"remote-password\",\n });\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = example_remote_secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-dockerhub-remote\",\n Description = \"example remote dockerhub repository with credentials\",\n Format = \"DOCKER\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"docker hub with custom credentials\",\n DisableUpstreamValidation = true,\n DockerRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs\n {\n PublicRepository = \"DOCKER_HUB\",\n },\n UpstreamCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs\n {\n UsernamePasswordCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs\n {\n Username = \"remote-username\",\n PasswordSecretVersion = example_remote_secretVersion.Name,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"example-remote-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"example-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: \u0026secretmanager.SecretReplicationAutoArgs{},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"example-remote-secret_version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: example_remote_secret.ID(),\n\t\t\tSecretData: pulumi.String(\"remote-password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: example_remote_secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-dockerhub-remote\"),\n\t\t\tDescription: pulumi.String(\"example remote dockerhub repository with credentials\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"docker hub with custom credentials\"),\n\t\t\t\tDisableUpstreamValidation: pulumi.Bool(true),\n\t\t\t\tDockerRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryArgs{\n\t\t\t\t\tPublicRepository: pulumi.String(\"DOCKER_HUB\"),\n\t\t\t\t},\n\t\t\t\tUpstreamCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs{\n\t\t\t\t\tUsernamePasswordCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"remote-username\"),\n\t\t\t\t\t\tPasswordSecretVersion: example_remote_secretVersion.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var example_remote_secret = new Secret(\"example-remote-secret\", SecretArgs.builder()\n .secretId(\"example-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var example_remote_secretVersion = new SecretVersion(\"example-remote-secretVersion\", SecretVersionArgs.builder()\n .secret(example_remote_secret.id())\n .secretData(\"remote-password\")\n .build());\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(example_remote_secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"example-dockerhub-remote\")\n .description(\"example remote dockerhub repository with credentials\")\n .format(\"DOCKER\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"docker hub with custom credentials\")\n .disableUpstreamValidation(true)\n .dockerRepository(RepositoryRemoteRepositoryConfigDockerRepositoryArgs.builder()\n .publicRepository(\"DOCKER_HUB\")\n .build())\n .upstreamCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs.builder()\n .usernamePasswordCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs.builder()\n .username(\"remote-username\")\n .passwordSecretVersion(example_remote_secretVersion.name())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-remote-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: example-secret\n replication:\n auto: {}\n example-remote-secretVersion:\n type: gcp:secretmanager:SecretVersion\n name: example-remote-secret_version\n properties:\n secret: ${[\"example-remote-secret\"].id}\n secretData: remote-password\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${[\"example-remote-secret\"].id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: example-dockerhub-remote\n description: example remote dockerhub repository with credentials\n format: DOCKER\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: docker hub with custom credentials\n disableUpstreamValidation: true\n dockerRepository:\n publicRepository: DOCKER_HUB\n upstreamCredentials:\n usernamePasswordCredentials:\n username: remote-username\n passwordSecretVersion: ${[\"example-remote-secretVersion\"].name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Docker Custom With Auth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example_remote_secret = new gcp.secretmanager.Secret(\"example-remote-secret\", {\n secretId: \"example-secret\",\n replication: {\n auto: {},\n },\n});\nconst example_remote_secretVersion = new gcp.secretmanager.SecretVersion(\"example-remote-secret_version\", {\n secret: example_remote_secret.id,\n secretData: \"remote-password\",\n});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: example_remote_secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"example-docker-custom-remote\",\n description: \"example remote custom docker repository with credentials\",\n format: \"DOCKER\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"custom docker remote with credentials\",\n disableUpstreamValidation: true,\n dockerRepository: {\n customRepository: {\n uri: \"https://registry-1.docker.io\",\n },\n },\n upstreamCredentials: {\n usernamePasswordCredentials: {\n username: \"remote-username\",\n passwordSecretVersion: example_remote_secretVersion.name,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample_remote_secret = gcp.secretmanager.Secret(\"example-remote-secret\",\n secret_id=\"example-secret\",\n replication={\n \"auto\": {},\n })\nexample_remote_secret_version = gcp.secretmanager.SecretVersion(\"example-remote-secret_version\",\n secret=example_remote_secret.id,\n secret_data=\"remote-password\")\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=example_remote_secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"example-docker-custom-remote\",\n description=\"example remote custom docker repository with credentials\",\n format=\"DOCKER\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"custom docker remote with credentials\",\n \"disable_upstream_validation\": True,\n \"docker_repository\": {\n \"custom_repository\": {\n \"uri\": \"https://registry-1.docker.io\",\n },\n },\n \"upstream_credentials\": {\n \"username_password_credentials\": {\n \"username\": \"remote-username\",\n \"password_secret_version\": example_remote_secret_version.name,\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var example_remote_secret = new Gcp.SecretManager.Secret(\"example-remote-secret\", new()\n {\n SecretId = \"example-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var example_remote_secretVersion = new Gcp.SecretManager.SecretVersion(\"example-remote-secret_version\", new()\n {\n Secret = example_remote_secret.Id,\n SecretData = \"remote-password\",\n });\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = example_remote_secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-docker-custom-remote\",\n Description = \"example remote custom docker repository with credentials\",\n Format = \"DOCKER\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"custom docker remote with credentials\",\n DisableUpstreamValidation = true,\n DockerRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs\n {\n CustomRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs\n {\n Uri = \"https://registry-1.docker.io\",\n },\n },\n UpstreamCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs\n {\n UsernamePasswordCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs\n {\n Username = \"remote-username\",\n PasswordSecretVersion = example_remote_secretVersion.Name,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"example-remote-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"example-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: \u0026secretmanager.SecretReplicationAutoArgs{},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"example-remote-secret_version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: example_remote_secret.ID(),\n\t\t\tSecretData: pulumi.String(\"remote-password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: example_remote_secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-docker-custom-remote\"),\n\t\t\tDescription: pulumi.String(\"example remote custom docker repository with credentials\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"custom docker remote with credentials\"),\n\t\t\t\tDisableUpstreamValidation: pulumi.Bool(true),\n\t\t\t\tDockerRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryArgs{\n\t\t\t\t\tCustomRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs{\n\t\t\t\t\t\tUri: pulumi.String(\"https://registry-1.docker.io\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tUpstreamCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs{\n\t\t\t\t\tUsernamePasswordCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"remote-username\"),\n\t\t\t\t\t\tPasswordSecretVersion: example_remote_secretVersion.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var example_remote_secret = new Secret(\"example-remote-secret\", SecretArgs.builder()\n .secretId(\"example-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var example_remote_secretVersion = new SecretVersion(\"example-remote-secretVersion\", SecretVersionArgs.builder()\n .secret(example_remote_secret.id())\n .secretData(\"remote-password\")\n .build());\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(example_remote_secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"example-docker-custom-remote\")\n .description(\"example remote custom docker repository with credentials\")\n .format(\"DOCKER\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"custom docker remote with credentials\")\n .disableUpstreamValidation(true)\n .dockerRepository(RepositoryRemoteRepositoryConfigDockerRepositoryArgs.builder()\n .customRepository(RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs.builder()\n .uri(\"https://registry-1.docker.io\")\n .build())\n .build())\n .upstreamCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs.builder()\n .usernamePasswordCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs.builder()\n .username(\"remote-username\")\n .passwordSecretVersion(example_remote_secretVersion.name())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-remote-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: example-secret\n replication:\n auto: {}\n example-remote-secretVersion:\n type: gcp:secretmanager:SecretVersion\n name: example-remote-secret_version\n properties:\n secret: ${[\"example-remote-secret\"].id}\n secretData: remote-password\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${[\"example-remote-secret\"].id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: example-docker-custom-remote\n description: example remote custom docker repository with credentials\n format: DOCKER\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: custom docker remote with credentials\n disableUpstreamValidation: true\n dockerRepository:\n customRepository:\n uri: https://registry-1.docker.io\n upstreamCredentials:\n usernamePasswordCredentials:\n username: remote-username\n passwordSecretVersion: ${[\"example-remote-secretVersion\"].name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Maven Custom With Auth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example_remote_secret = new gcp.secretmanager.Secret(\"example-remote-secret\", {\n secretId: \"example-secret\",\n replication: {\n auto: {},\n },\n});\nconst example_remote_secretVersion = new gcp.secretmanager.SecretVersion(\"example-remote-secret_version\", {\n secret: example_remote_secret.id,\n secretData: \"remote-password\",\n});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: example_remote_secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"example-maven-custom-remote\",\n description: \"example remote custom maven repository with credentials\",\n format: \"MAVEN\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"custom maven remote with credentials\",\n disableUpstreamValidation: true,\n mavenRepository: {\n customRepository: {\n uri: \"https://my.maven.registry\",\n },\n },\n upstreamCredentials: {\n usernamePasswordCredentials: {\n username: \"remote-username\",\n passwordSecretVersion: example_remote_secretVersion.name,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample_remote_secret = gcp.secretmanager.Secret(\"example-remote-secret\",\n secret_id=\"example-secret\",\n replication={\n \"auto\": {},\n })\nexample_remote_secret_version = gcp.secretmanager.SecretVersion(\"example-remote-secret_version\",\n secret=example_remote_secret.id,\n secret_data=\"remote-password\")\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=example_remote_secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"example-maven-custom-remote\",\n description=\"example remote custom maven repository with credentials\",\n format=\"MAVEN\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"custom maven remote with credentials\",\n \"disable_upstream_validation\": True,\n \"maven_repository\": {\n \"custom_repository\": {\n \"uri\": \"https://my.maven.registry\",\n },\n },\n \"upstream_credentials\": {\n \"username_password_credentials\": {\n \"username\": \"remote-username\",\n \"password_secret_version\": example_remote_secret_version.name,\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var example_remote_secret = new Gcp.SecretManager.Secret(\"example-remote-secret\", new()\n {\n SecretId = \"example-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var example_remote_secretVersion = new Gcp.SecretManager.SecretVersion(\"example-remote-secret_version\", new()\n {\n Secret = example_remote_secret.Id,\n SecretData = \"remote-password\",\n });\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = example_remote_secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-maven-custom-remote\",\n Description = \"example remote custom maven repository with credentials\",\n Format = \"MAVEN\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"custom maven remote with credentials\",\n DisableUpstreamValidation = true,\n MavenRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigMavenRepositoryArgs\n {\n CustomRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs\n {\n Uri = \"https://my.maven.registry\",\n },\n },\n UpstreamCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs\n {\n UsernamePasswordCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs\n {\n Username = \"remote-username\",\n PasswordSecretVersion = example_remote_secretVersion.Name,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"example-remote-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"example-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: \u0026secretmanager.SecretReplicationAutoArgs{},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"example-remote-secret_version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: example_remote_secret.ID(),\n\t\t\tSecretData: pulumi.String(\"remote-password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: example_remote_secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-maven-custom-remote\"),\n\t\t\tDescription: pulumi.String(\"example remote custom maven repository with credentials\"),\n\t\t\tFormat: pulumi.String(\"MAVEN\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"custom maven remote with credentials\"),\n\t\t\t\tDisableUpstreamValidation: pulumi.Bool(true),\n\t\t\t\tMavenRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigMavenRepositoryArgs{\n\t\t\t\t\tCustomRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs{\n\t\t\t\t\t\tUri: pulumi.String(\"https://my.maven.registry\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tUpstreamCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs{\n\t\t\t\t\tUsernamePasswordCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"remote-username\"),\n\t\t\t\t\t\tPasswordSecretVersion: example_remote_secretVersion.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigMavenRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var example_remote_secret = new Secret(\"example-remote-secret\", SecretArgs.builder()\n .secretId(\"example-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var example_remote_secretVersion = new SecretVersion(\"example-remote-secretVersion\", SecretVersionArgs.builder()\n .secret(example_remote_secret.id())\n .secretData(\"remote-password\")\n .build());\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(example_remote_secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"example-maven-custom-remote\")\n .description(\"example remote custom maven repository with credentials\")\n .format(\"MAVEN\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"custom maven remote with credentials\")\n .disableUpstreamValidation(true)\n .mavenRepository(RepositoryRemoteRepositoryConfigMavenRepositoryArgs.builder()\n .customRepository(RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs.builder()\n .uri(\"https://my.maven.registry\")\n .build())\n .build())\n .upstreamCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs.builder()\n .usernamePasswordCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs.builder()\n .username(\"remote-username\")\n .passwordSecretVersion(example_remote_secretVersion.name())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-remote-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: example-secret\n replication:\n auto: {}\n example-remote-secretVersion:\n type: gcp:secretmanager:SecretVersion\n name: example-remote-secret_version\n properties:\n secret: ${[\"example-remote-secret\"].id}\n secretData: remote-password\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${[\"example-remote-secret\"].id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: example-maven-custom-remote\n description: example remote custom maven repository with credentials\n format: MAVEN\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: custom maven remote with credentials\n disableUpstreamValidation: true\n mavenRepository:\n customRepository:\n uri: https://my.maven.registry\n upstreamCredentials:\n usernamePasswordCredentials:\n username: remote-username\n passwordSecretVersion: ${[\"example-remote-secretVersion\"].name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Npm Custom With Auth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example_remote_secret = new gcp.secretmanager.Secret(\"example-remote-secret\", {\n secretId: \"example-secret\",\n replication: {\n auto: {},\n },\n});\nconst example_remote_secretVersion = new gcp.secretmanager.SecretVersion(\"example-remote-secret_version\", {\n secret: example_remote_secret.id,\n secretData: \"remote-password\",\n});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: example_remote_secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"example-npm-custom-remote\",\n description: \"example remote custom npm repository with credentials\",\n format: \"NPM\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"custom npm with credentials\",\n disableUpstreamValidation: true,\n npmRepository: {\n customRepository: {\n uri: \"https://my.npm.registry\",\n },\n },\n upstreamCredentials: {\n usernamePasswordCredentials: {\n username: \"remote-username\",\n passwordSecretVersion: example_remote_secretVersion.name,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample_remote_secret = gcp.secretmanager.Secret(\"example-remote-secret\",\n secret_id=\"example-secret\",\n replication={\n \"auto\": {},\n })\nexample_remote_secret_version = gcp.secretmanager.SecretVersion(\"example-remote-secret_version\",\n secret=example_remote_secret.id,\n secret_data=\"remote-password\")\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=example_remote_secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"example-npm-custom-remote\",\n description=\"example remote custom npm repository with credentials\",\n format=\"NPM\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"custom npm with credentials\",\n \"disable_upstream_validation\": True,\n \"npm_repository\": {\n \"custom_repository\": {\n \"uri\": \"https://my.npm.registry\",\n },\n },\n \"upstream_credentials\": {\n \"username_password_credentials\": {\n \"username\": \"remote-username\",\n \"password_secret_version\": example_remote_secret_version.name,\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var example_remote_secret = new Gcp.SecretManager.Secret(\"example-remote-secret\", new()\n {\n SecretId = \"example-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var example_remote_secretVersion = new Gcp.SecretManager.SecretVersion(\"example-remote-secret_version\", new()\n {\n Secret = example_remote_secret.Id,\n SecretData = \"remote-password\",\n });\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = example_remote_secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-npm-custom-remote\",\n Description = \"example remote custom npm repository with credentials\",\n Format = \"NPM\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"custom npm with credentials\",\n DisableUpstreamValidation = true,\n NpmRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigNpmRepositoryArgs\n {\n CustomRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs\n {\n Uri = \"https://my.npm.registry\",\n },\n },\n UpstreamCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs\n {\n UsernamePasswordCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs\n {\n Username = \"remote-username\",\n PasswordSecretVersion = example_remote_secretVersion.Name,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"example-remote-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"example-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: \u0026secretmanager.SecretReplicationAutoArgs{},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"example-remote-secret_version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: example_remote_secret.ID(),\n\t\t\tSecretData: pulumi.String(\"remote-password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: example_remote_secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-npm-custom-remote\"),\n\t\t\tDescription: pulumi.String(\"example remote custom npm repository with credentials\"),\n\t\t\tFormat: pulumi.String(\"NPM\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"custom npm with credentials\"),\n\t\t\t\tDisableUpstreamValidation: pulumi.Bool(true),\n\t\t\t\tNpmRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigNpmRepositoryArgs{\n\t\t\t\t\tCustomRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs{\n\t\t\t\t\t\tUri: pulumi.String(\"https://my.npm.registry\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tUpstreamCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs{\n\t\t\t\t\tUsernamePasswordCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"remote-username\"),\n\t\t\t\t\t\tPasswordSecretVersion: example_remote_secretVersion.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigNpmRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var example_remote_secret = new Secret(\"example-remote-secret\", SecretArgs.builder()\n .secretId(\"example-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var example_remote_secretVersion = new SecretVersion(\"example-remote-secretVersion\", SecretVersionArgs.builder()\n .secret(example_remote_secret.id())\n .secretData(\"remote-password\")\n .build());\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(example_remote_secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"example-npm-custom-remote\")\n .description(\"example remote custom npm repository with credentials\")\n .format(\"NPM\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"custom npm with credentials\")\n .disableUpstreamValidation(true)\n .npmRepository(RepositoryRemoteRepositoryConfigNpmRepositoryArgs.builder()\n .customRepository(RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs.builder()\n .uri(\"https://my.npm.registry\")\n .build())\n .build())\n .upstreamCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs.builder()\n .usernamePasswordCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs.builder()\n .username(\"remote-username\")\n .passwordSecretVersion(example_remote_secretVersion.name())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-remote-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: example-secret\n replication:\n auto: {}\n example-remote-secretVersion:\n type: gcp:secretmanager:SecretVersion\n name: example-remote-secret_version\n properties:\n secret: ${[\"example-remote-secret\"].id}\n secretData: remote-password\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${[\"example-remote-secret\"].id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: example-npm-custom-remote\n description: example remote custom npm repository with credentials\n format: NPM\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: custom npm with credentials\n disableUpstreamValidation: true\n npmRepository:\n customRepository:\n uri: https://my.npm.registry\n upstreamCredentials:\n usernamePasswordCredentials:\n username: remote-username\n passwordSecretVersion: ${[\"example-remote-secretVersion\"].name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Python Custom With Auth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example_remote_secret = new gcp.secretmanager.Secret(\"example-remote-secret\", {\n secretId: \"example-secret\",\n replication: {\n auto: {},\n },\n});\nconst example_remote_secretVersion = new gcp.secretmanager.SecretVersion(\"example-remote-secret_version\", {\n secret: example_remote_secret.id,\n secretData: \"remote-password\",\n});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: example_remote_secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"example-python-custom-remote\",\n description: \"example remote custom python repository with credentials\",\n format: \"PYTHON\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"custom npm with credentials\",\n disableUpstreamValidation: true,\n pythonRepository: {\n customRepository: {\n uri: \"https://my.python.registry\",\n },\n },\n upstreamCredentials: {\n usernamePasswordCredentials: {\n username: \"remote-username\",\n passwordSecretVersion: example_remote_secretVersion.name,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample_remote_secret = gcp.secretmanager.Secret(\"example-remote-secret\",\n secret_id=\"example-secret\",\n replication={\n \"auto\": {},\n })\nexample_remote_secret_version = gcp.secretmanager.SecretVersion(\"example-remote-secret_version\",\n secret=example_remote_secret.id,\n secret_data=\"remote-password\")\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=example_remote_secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"example-python-custom-remote\",\n description=\"example remote custom python repository with credentials\",\n format=\"PYTHON\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"custom npm with credentials\",\n \"disable_upstream_validation\": True,\n \"python_repository\": {\n \"custom_repository\": {\n \"uri\": \"https://my.python.registry\",\n },\n },\n \"upstream_credentials\": {\n \"username_password_credentials\": {\n \"username\": \"remote-username\",\n \"password_secret_version\": example_remote_secret_version.name,\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var example_remote_secret = new Gcp.SecretManager.Secret(\"example-remote-secret\", new()\n {\n SecretId = \"example-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var example_remote_secretVersion = new Gcp.SecretManager.SecretVersion(\"example-remote-secret_version\", new()\n {\n Secret = example_remote_secret.Id,\n SecretData = \"remote-password\",\n });\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = example_remote_secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-python-custom-remote\",\n Description = \"example remote custom python repository with credentials\",\n Format = \"PYTHON\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"custom npm with credentials\",\n DisableUpstreamValidation = true,\n PythonRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigPythonRepositoryArgs\n {\n CustomRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs\n {\n Uri = \"https://my.python.registry\",\n },\n },\n UpstreamCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs\n {\n UsernamePasswordCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs\n {\n Username = \"remote-username\",\n PasswordSecretVersion = example_remote_secretVersion.Name,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"example-remote-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"example-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: \u0026secretmanager.SecretReplicationAutoArgs{},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"example-remote-secret_version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: example_remote_secret.ID(),\n\t\t\tSecretData: pulumi.String(\"remote-password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: example_remote_secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-python-custom-remote\"),\n\t\t\tDescription: pulumi.String(\"example remote custom python repository with credentials\"),\n\t\t\tFormat: pulumi.String(\"PYTHON\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"custom npm with credentials\"),\n\t\t\t\tDisableUpstreamValidation: pulumi.Bool(true),\n\t\t\t\tPythonRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigPythonRepositoryArgs{\n\t\t\t\t\tCustomRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs{\n\t\t\t\t\t\tUri: pulumi.String(\"https://my.python.registry\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tUpstreamCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs{\n\t\t\t\t\tUsernamePasswordCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"remote-username\"),\n\t\t\t\t\t\tPasswordSecretVersion: example_remote_secretVersion.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigPythonRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var example_remote_secret = new Secret(\"example-remote-secret\", SecretArgs.builder()\n .secretId(\"example-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var example_remote_secretVersion = new SecretVersion(\"example-remote-secretVersion\", SecretVersionArgs.builder()\n .secret(example_remote_secret.id())\n .secretData(\"remote-password\")\n .build());\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(example_remote_secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"example-python-custom-remote\")\n .description(\"example remote custom python repository with credentials\")\n .format(\"PYTHON\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"custom npm with credentials\")\n .disableUpstreamValidation(true)\n .pythonRepository(RepositoryRemoteRepositoryConfigPythonRepositoryArgs.builder()\n .customRepository(RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs.builder()\n .uri(\"https://my.python.registry\")\n .build())\n .build())\n .upstreamCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs.builder()\n .usernamePasswordCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs.builder()\n .username(\"remote-username\")\n .passwordSecretVersion(example_remote_secretVersion.name())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-remote-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: example-secret\n replication:\n auto: {}\n example-remote-secretVersion:\n type: gcp:secretmanager:SecretVersion\n name: example-remote-secret_version\n properties:\n secret: ${[\"example-remote-secret\"].id}\n secretData: remote-password\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${[\"example-remote-secret\"].id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: example-python-custom-remote\n description: example remote custom python repository with credentials\n format: PYTHON\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: custom npm with credentials\n disableUpstreamValidation: true\n pythonRepository:\n customRepository:\n uri: https://my.python.registry\n upstreamCredentials:\n usernamePasswordCredentials:\n username: remote-username\n passwordSecretVersion: ${[\"example-remote-secretVersion\"].name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRepository can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/repositories/{{repository_id}}`\n\n* `{{project}}/{{location}}/{{repository_id}}`\n\n* `{{location}}/{{repository_id}}`\n\n* `{{repository_id}}`\n\nWhen using the `pulumi import` command, Repository can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:artifactregistry/repository:Repository default projects/{{project}}/locations/{{location}}/repositories/{{repository_id}}\n```\n\n```sh\n$ pulumi import gcp:artifactregistry/repository:Repository default {{project}}/{{location}}/{{repository_id}}\n```\n\n```sh\n$ pulumi import gcp:artifactregistry/repository:Repository default {{location}}/{{repository_id}}\n```\n\n```sh\n$ pulumi import gcp:artifactregistry/repository:Repository default {{repository_id}}\n```\n\n", "properties": { "cleanupPolicies": { "type": "array", @@ -126821,7 +126821,7 @@ } }, "gcp:biglake/table:Table": { - "description": "Represents a table.\n\n\nTo get more information about Table, see:\n\n* [API documentation](https://cloud.google.com/bigquery/docs/reference/biglake/rest/v1/projects.locations.catalogs.databases.tables)\n* How-to Guides\n * [Manage open source metadata with BigLake Metastore](https://cloud.google.com/bigquery/docs/manage-open-source-metadata#create_tables)\n\n## Example Usage\n\n### Biglake Table\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst catalog = new gcp.biglake.Catalog(\"catalog\", {\n name: \"my_catalog\",\n location: \"US\",\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"my_bucket\",\n location: \"US\",\n forceDestroy: true,\n uniformBucketLevelAccess: true,\n});\nconst metadataFolder = new gcp.storage.BucketObject(\"metadata_folder\", {\n name: \"metadata/\",\n content: \" \",\n bucket: bucket.name,\n});\nconst dataFolder = new gcp.storage.BucketObject(\"data_folder\", {\n name: \"data/\",\n content: \" \",\n bucket: bucket.name,\n});\nconst database = new gcp.biglake.Database(\"database\", {\n name: \"my_database\",\n catalog: catalog.id,\n type: \"HIVE\",\n hiveOptions: {\n locationUri: pulumi.interpolate`gs://${bucket.name}/${metadataFolder.name}`,\n parameters: {\n owner: \"Alex\",\n },\n },\n});\nconst table = new gcp.biglake.Table(\"table\", {\n name: \"my_table\",\n database: database.id,\n type: \"HIVE\",\n hiveOptions: {\n tableType: \"MANAGED_TABLE\",\n storageDescriptor: {\n locationUri: pulumi.interpolate`gs://${bucket.name}/${dataFolder.name}`,\n inputFormat: \"org.apache.hadoop.mapred.SequenceFileInputFormat\",\n outputFormat: \"org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat\",\n },\n parameters: {\n \"spark.sql.create.version\": \"3.1.3\",\n \"spark.sql.sources.schema.numParts\": \"1\",\n transient_lastDdlTime: \"1680894197\",\n \"spark.sql.partitionProvider\": \"catalog\",\n owner: \"John Doe\",\n \"spark.sql.sources.schema.part.0\": \"{\\\"type\\\":\\\"struct\\\",\\\"fields\\\":[{\\\"name\\\":\\\"id\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"name\\\",\\\"type\\\":\\\"string\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"age\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}}]}\",\n \"spark.sql.sources.provider\": \"iceberg\",\n provider: \"iceberg\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncatalog = gcp.biglake.Catalog(\"catalog\",\n name=\"my_catalog\",\n location=\"US\")\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"my_bucket\",\n location=\"US\",\n force_destroy=True,\n uniform_bucket_level_access=True)\nmetadata_folder = gcp.storage.BucketObject(\"metadata_folder\",\n name=\"metadata/\",\n content=\" \",\n bucket=bucket.name)\ndata_folder = gcp.storage.BucketObject(\"data_folder\",\n name=\"data/\",\n content=\" \",\n bucket=bucket.name)\ndatabase = gcp.biglake.Database(\"database\",\n name=\"my_database\",\n catalog=catalog.id,\n type=\"HIVE\",\n hive_options={\n \"location_uri\": pulumi.Output.all(\n bucketName=bucket.name,\n metadataFolderName=metadata_folder.name\n).apply(lambda resolved_outputs: f\"gs://{resolved_outputs['bucketName']}/{resolved_outputs['metadataFolderName']}\")\n,\n \"parameters\": {\n \"owner\": \"Alex\",\n },\n })\ntable = gcp.biglake.Table(\"table\",\n name=\"my_table\",\n database=database.id,\n type=\"HIVE\",\n hive_options={\n \"table_type\": \"MANAGED_TABLE\",\n \"storage_descriptor\": {\n \"location_uri\": pulumi.Output.all(\n bucketName=bucket.name,\n dataFolderName=data_folder.name\n).apply(lambda resolved_outputs: f\"gs://{resolved_outputs['bucketName']}/{resolved_outputs['dataFolderName']}\")\n,\n \"input_format\": \"org.apache.hadoop.mapred.SequenceFileInputFormat\",\n \"output_format\": \"org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat\",\n },\n \"parameters\": {\n \"spark_sql_create_version\": \"3.1.3\",\n \"spark_sql_sources_schema_num_parts\": \"1\",\n \"transient_last_ddl_time\": \"1680894197\",\n \"spark_sql_partition_provider\": \"catalog\",\n \"owner\": \"John Doe\",\n \"spark_sql_sources_schema_part_0\": \"{\\\"type\\\":\\\"struct\\\",\\\"fields\\\":[{\\\"name\\\":\\\"id\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"name\\\",\\\"type\\\":\\\"string\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"age\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}}]}\",\n \"spark_sql_sources_provider\": \"iceberg\",\n \"provider\": \"iceberg\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var catalog = new Gcp.BigLake.Catalog(\"catalog\", new()\n {\n Name = \"my_catalog\",\n Location = \"US\",\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = \"my_bucket\",\n Location = \"US\",\n ForceDestroy = true,\n UniformBucketLevelAccess = true,\n });\n\n var metadataFolder = new Gcp.Storage.BucketObject(\"metadata_folder\", new()\n {\n Name = \"metadata/\",\n Content = \" \",\n Bucket = bucket.Name,\n });\n\n var dataFolder = new Gcp.Storage.BucketObject(\"data_folder\", new()\n {\n Name = \"data/\",\n Content = \" \",\n Bucket = bucket.Name,\n });\n\n var database = new Gcp.BigLake.Database(\"database\", new()\n {\n Name = \"my_database\",\n Catalog = catalog.Id,\n Type = \"HIVE\",\n HiveOptions = new Gcp.BigLake.Inputs.DatabaseHiveOptionsArgs\n {\n LocationUri = Output.Tuple(bucket.Name, metadataFolder.Name).Apply(values =\u003e\n {\n var bucketName = values.Item1;\n var metadataFolderName = values.Item2;\n return $\"gs://{bucketName}/{metadataFolderName}\";\n }),\n Parameters = \n {\n { \"owner\", \"Alex\" },\n },\n },\n });\n\n var table = new Gcp.BigLake.Table(\"table\", new()\n {\n Name = \"my_table\",\n Database = database.Id,\n Type = \"HIVE\",\n HiveOptions = new Gcp.BigLake.Inputs.TableHiveOptionsArgs\n {\n TableType = \"MANAGED_TABLE\",\n StorageDescriptor = new Gcp.BigLake.Inputs.TableHiveOptionsStorageDescriptorArgs\n {\n LocationUri = Output.Tuple(bucket.Name, dataFolder.Name).Apply(values =\u003e\n {\n var bucketName = values.Item1;\n var dataFolderName = values.Item2;\n return $\"gs://{bucketName}/{dataFolderName}\";\n }),\n InputFormat = \"org.apache.hadoop.mapred.SequenceFileInputFormat\",\n OutputFormat = \"org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat\",\n },\n Parameters = \n {\n { \"spark.sql.create.version\", \"3.1.3\" },\n { \"spark.sql.sources.schema.numParts\", \"1\" },\n { \"transient_lastDdlTime\", \"1680894197\" },\n { \"spark.sql.partitionProvider\", \"catalog\" },\n { \"owner\", \"John Doe\" },\n { \"spark.sql.sources.schema.part.0\", \"{\\\"type\\\":\\\"struct\\\",\\\"fields\\\":[{\\\"name\\\":\\\"id\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"name\\\",\\\"type\\\":\\\"string\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"age\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}}]}\" },\n { \"spark.sql.sources.provider\", \"iceberg\" },\n { \"provider\", \"iceberg\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/biglake\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcatalog, err := biglake.NewCatalog(ctx, \"catalog\", \u0026biglake.CatalogArgs{\n\t\t\tName: pulumi.String(\"my_catalog\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"my_bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmetadataFolder, err := storage.NewBucketObject(ctx, \"metadata_folder\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"metadata/\"),\n\t\t\tContent: pulumi.String(\" \"),\n\t\t\tBucket: bucket.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdataFolder, err := storage.NewBucketObject(ctx, \"data_folder\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"data/\"),\n\t\t\tContent: pulumi.String(\" \"),\n\t\t\tBucket: bucket.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdatabase, err := biglake.NewDatabase(ctx, \"database\", \u0026biglake.DatabaseArgs{\n\t\t\tName: pulumi.String(\"my_database\"),\n\t\t\tCatalog: catalog.ID(),\n\t\t\tType: pulumi.String(\"HIVE\"),\n\t\t\tHiveOptions: \u0026biglake.DatabaseHiveOptionsArgs{\n\t\t\t\tLocationUri: pulumi.All(bucket.Name, metadataFolder.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tbucketName := _args[0].(string)\n\t\t\t\t\tmetadataFolderName := _args[1].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/%v\", bucketName, metadataFolderName), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tParameters: pulumi.StringMap{\n\t\t\t\t\t\"owner\": pulumi.String(\"Alex\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = biglake.NewTable(ctx, \"table\", \u0026biglake.TableArgs{\n\t\t\tName: pulumi.String(\"my_table\"),\n\t\t\tDatabase: database.ID(),\n\t\t\tType: pulumi.String(\"HIVE\"),\n\t\t\tHiveOptions: \u0026biglake.TableHiveOptionsArgs{\n\t\t\t\tTableType: pulumi.String(\"MANAGED_TABLE\"),\n\t\t\t\tStorageDescriptor: \u0026biglake.TableHiveOptionsStorageDescriptorArgs{\n\t\t\t\t\tLocationUri: pulumi.All(bucket.Name, dataFolder.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\tbucketName := _args[0].(string)\n\t\t\t\t\t\tdataFolderName := _args[1].(string)\n\t\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/%v\", bucketName, dataFolderName), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\tInputFormat: pulumi.String(\"org.apache.hadoop.mapred.SequenceFileInputFormat\"),\n\t\t\t\t\tOutputFormat: pulumi.String(\"org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat\"),\n\t\t\t\t},\n\t\t\t\tParameters: pulumi.StringMap{\n\t\t\t\t\t\"spark.sql.create.version\": pulumi.String(\"3.1.3\"),\n\t\t\t\t\t\"spark.sql.sources.schema.numParts\": pulumi.String(\"1\"),\n\t\t\t\t\t\"transient_lastDdlTime\": pulumi.String(\"1680894197\"),\n\t\t\t\t\t\"spark.sql.partitionProvider\": pulumi.String(\"catalog\"),\n\t\t\t\t\t\"owner\": pulumi.String(\"John Doe\"),\n\t\t\t\t\t\"spark.sql.sources.schema.part.0\": pulumi.String(\"{\\\"type\\\":\\\"struct\\\",\\\"fields\\\":[{\\\"name\\\":\\\"id\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"name\\\",\\\"type\\\":\\\"string\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"age\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}}]}\"),\n\t\t\t\t\t\"spark.sql.sources.provider\": pulumi.String(\"iceberg\"),\n\t\t\t\t\t\"provider\": pulumi.String(\"iceberg\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.biglake.Catalog;\nimport com.pulumi.gcp.biglake.CatalogArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.biglake.Database;\nimport com.pulumi.gcp.biglake.DatabaseArgs;\nimport com.pulumi.gcp.biglake.inputs.DatabaseHiveOptionsArgs;\nimport com.pulumi.gcp.biglake.Table;\nimport com.pulumi.gcp.biglake.TableArgs;\nimport com.pulumi.gcp.biglake.inputs.TableHiveOptionsArgs;\nimport com.pulumi.gcp.biglake.inputs.TableHiveOptionsStorageDescriptorArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var catalog = new Catalog(\"catalog\", CatalogArgs.builder()\n .name(\"my_catalog\")\n .location(\"US\")\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(\"my_bucket\")\n .location(\"US\")\n .forceDestroy(true)\n .uniformBucketLevelAccess(true)\n .build());\n\n var metadataFolder = new BucketObject(\"metadataFolder\", BucketObjectArgs.builder()\n .name(\"metadata/\")\n .content(\" \")\n .bucket(bucket.name())\n .build());\n\n var dataFolder = new BucketObject(\"dataFolder\", BucketObjectArgs.builder()\n .name(\"data/\")\n .content(\" \")\n .bucket(bucket.name())\n .build());\n\n var database = new Database(\"database\", DatabaseArgs.builder()\n .name(\"my_database\")\n .catalog(catalog.id())\n .type(\"HIVE\")\n .hiveOptions(DatabaseHiveOptionsArgs.builder()\n .locationUri(Output.tuple(bucket.name(), metadataFolder.name()).applyValue(values -\u003e {\n var bucketName = values.t1;\n var metadataFolderName = values.t2;\n return String.format(\"gs://%s/%s\", bucketName,metadataFolderName);\n }))\n .parameters(Map.of(\"owner\", \"Alex\"))\n .build())\n .build());\n\n var table = new Table(\"table\", TableArgs.builder()\n .name(\"my_table\")\n .database(database.id())\n .type(\"HIVE\")\n .hiveOptions(TableHiveOptionsArgs.builder()\n .tableType(\"MANAGED_TABLE\")\n .storageDescriptor(TableHiveOptionsStorageDescriptorArgs.builder()\n .locationUri(Output.tuple(bucket.name(), dataFolder.name()).applyValue(values -\u003e {\n var bucketName = values.t1;\n var dataFolderName = values.t2;\n return String.format(\"gs://%s/%s\", bucketName,dataFolderName);\n }))\n .inputFormat(\"org.apache.hadoop.mapred.SequenceFileInputFormat\")\n .outputFormat(\"org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat\")\n .build())\n .parameters(Map.ofEntries(\n Map.entry(\"spark.sql.create.version\", \"3.1.3\"),\n Map.entry(\"spark.sql.sources.schema.numParts\", \"1\"),\n Map.entry(\"transient_lastDdlTime\", \"1680894197\"),\n Map.entry(\"spark.sql.partitionProvider\", \"catalog\"),\n Map.entry(\"owner\", \"John Doe\"),\n Map.entry(\"spark.sql.sources.schema.part.0\", \"{\\\"type\\\":\\\"struct\\\",\\\"fields\\\":[{\\\"name\\\":\\\"id\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"name\\\",\\\"type\\\":\\\"string\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"age\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}}]}\"),\n Map.entry(\"spark.sql.sources.provider\", \"iceberg\"),\n Map.entry(\"provider\", \"iceberg\")\n ))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n catalog:\n type: gcp:biglake:Catalog\n properties:\n name: my_catalog\n location: US\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: my_bucket\n location: US\n forceDestroy: true\n uniformBucketLevelAccess: true\n metadataFolder:\n type: gcp:storage:BucketObject\n name: metadata_folder\n properties:\n name: metadata/\n content: ' '\n bucket: ${bucket.name}\n dataFolder:\n type: gcp:storage:BucketObject\n name: data_folder\n properties:\n name: data/\n content: ' '\n bucket: ${bucket.name}\n database:\n type: gcp:biglake:Database\n properties:\n name: my_database\n catalog: ${catalog.id}\n type: HIVE\n hiveOptions:\n locationUri: gs://${bucket.name}/${metadataFolder.name}\n parameters:\n owner: Alex\n table:\n type: gcp:biglake:Table\n properties:\n name: my_table\n database: ${database.id}\n type: HIVE\n hiveOptions:\n tableType: MANAGED_TABLE\n storageDescriptor:\n locationUri: gs://${bucket.name}/${dataFolder.name}\n inputFormat: org.apache.hadoop.mapred.SequenceFileInputFormat\n outputFormat: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat\n parameters:\n spark.sql.create.version: 3.1.3\n spark.sql.sources.schema.numParts: '1'\n transient_lastDdlTime: '1680894197'\n spark.sql.partitionProvider: catalog\n owner: John Doe\n spark.sql.sources.schema.part.0: '{\"type\":\"struct\",\"fields\":[{\"name\":\"id\",\"type\":\"integer\",\"nullable\":true,\"metadata\":{}},{\"name\":\"name\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"age\",\"type\":\"integer\",\"nullable\":true,\"metadata\":{}}]}'\n spark.sql.sources.provider: iceberg\n provider: iceberg\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTable can be imported using any of these accepted formats:\n\n* `{{database}}/tables/{{name}}`\n\nWhen using the `pulumi import` command, Table can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:biglake/table:Table default {{database}}/tables/{{name}}\n```\n\n", + "description": "Represents a table.\n\n\nTo get more information about Table, see:\n\n* [API documentation](https://cloud.google.com/bigquery/docs/reference/biglake/rest/v1/projects.locations.catalogs.databases.tables)\n* How-to Guides\n * [Manage open source metadata with BigLake Metastore](https://cloud.google.com/bigquery/docs/manage-open-source-metadata#create_tables)\n\n## Example Usage\n\n### Biglake Table\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst catalog = new gcp.biglake.Catalog(\"catalog\", {\n name: \"my_catalog\",\n location: \"US\",\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"my_bucket\",\n location: \"US\",\n forceDestroy: true,\n uniformBucketLevelAccess: true,\n});\nconst metadataFolder = new gcp.storage.BucketObject(\"metadata_folder\", {\n name: \"metadata/\",\n content: \" \",\n bucket: bucket.name,\n});\nconst dataFolder = new gcp.storage.BucketObject(\"data_folder\", {\n name: \"data/\",\n content: \" \",\n bucket: bucket.name,\n});\nconst database = new gcp.biglake.Database(\"database\", {\n name: \"my_database\",\n catalog: catalog.id,\n type: \"HIVE\",\n hiveOptions: {\n locationUri: pulumi.interpolate`gs://${bucket.name}/${metadataFolder.name}`,\n parameters: {\n owner: \"Alex\",\n },\n },\n});\nconst table = new gcp.biglake.Table(\"table\", {\n name: \"my_table\",\n database: database.id,\n type: \"HIVE\",\n hiveOptions: {\n tableType: \"MANAGED_TABLE\",\n storageDescriptor: {\n locationUri: pulumi.interpolate`gs://${bucket.name}/${dataFolder.name}`,\n inputFormat: \"org.apache.hadoop.mapred.SequenceFileInputFormat\",\n outputFormat: \"org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat\",\n },\n parameters: {\n \"spark.sql.create.version\": \"3.1.3\",\n \"spark.sql.sources.schema.numParts\": \"1\",\n transient_lastDdlTime: \"1680894197\",\n \"spark.sql.partitionProvider\": \"catalog\",\n owner: \"John Doe\",\n \"spark.sql.sources.schema.part.0\": \"{\\\"type\\\":\\\"struct\\\",\\\"fields\\\":[{\\\"name\\\":\\\"id\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"name\\\",\\\"type\\\":\\\"string\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"age\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}}]}\",\n \"spark.sql.sources.provider\": \"iceberg\",\n provider: \"iceberg\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncatalog = gcp.biglake.Catalog(\"catalog\",\n name=\"my_catalog\",\n location=\"US\")\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"my_bucket\",\n location=\"US\",\n force_destroy=True,\n uniform_bucket_level_access=True)\nmetadata_folder = gcp.storage.BucketObject(\"metadata_folder\",\n name=\"metadata/\",\n content=\" \",\n bucket=bucket.name)\ndata_folder = gcp.storage.BucketObject(\"data_folder\",\n name=\"data/\",\n content=\" \",\n bucket=bucket.name)\ndatabase = gcp.biglake.Database(\"database\",\n name=\"my_database\",\n catalog=catalog.id,\n type=\"HIVE\",\n hive_options={\n \"location_uri\": pulumi.Output.all(\n bucketName=bucket.name,\n metadataFolderName=metadata_folder.name\n).apply(lambda resolved_outputs: f\"gs://{resolved_outputs['bucketName']}/{resolved_outputs['metadataFolderName']}\")\n,\n \"parameters\": {\n \"owner\": \"Alex\",\n },\n })\ntable = gcp.biglake.Table(\"table\",\n name=\"my_table\",\n database=database.id,\n type=\"HIVE\",\n hive_options={\n \"table_type\": \"MANAGED_TABLE\",\n \"storage_descriptor\": {\n \"location_uri\": pulumi.Output.all(\n bucketName=bucket.name,\n dataFolderName=data_folder.name\n).apply(lambda resolved_outputs: f\"gs://{resolved_outputs['bucketName']}/{resolved_outputs['dataFolderName']}\")\n,\n \"input_format\": \"org.apache.hadoop.mapred.SequenceFileInputFormat\",\n \"output_format\": \"org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat\",\n },\n \"parameters\": {\n \"spark.sql.create.version\": \"3.1.3\",\n \"spark.sql.sources.schema.numParts\": \"1\",\n \"transient_lastDdlTime\": \"1680894197\",\n \"spark.sql.partitionProvider\": \"catalog\",\n \"owner\": \"John Doe\",\n \"spark.sql.sources.schema.part.0\": \"{\\\"type\\\":\\\"struct\\\",\\\"fields\\\":[{\\\"name\\\":\\\"id\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"name\\\",\\\"type\\\":\\\"string\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"age\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}}]}\",\n \"spark.sql.sources.provider\": \"iceberg\",\n \"provider\": \"iceberg\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var catalog = new Gcp.BigLake.Catalog(\"catalog\", new()\n {\n Name = \"my_catalog\",\n Location = \"US\",\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = \"my_bucket\",\n Location = \"US\",\n ForceDestroy = true,\n UniformBucketLevelAccess = true,\n });\n\n var metadataFolder = new Gcp.Storage.BucketObject(\"metadata_folder\", new()\n {\n Name = \"metadata/\",\n Content = \" \",\n Bucket = bucket.Name,\n });\n\n var dataFolder = new Gcp.Storage.BucketObject(\"data_folder\", new()\n {\n Name = \"data/\",\n Content = \" \",\n Bucket = bucket.Name,\n });\n\n var database = new Gcp.BigLake.Database(\"database\", new()\n {\n Name = \"my_database\",\n Catalog = catalog.Id,\n Type = \"HIVE\",\n HiveOptions = new Gcp.BigLake.Inputs.DatabaseHiveOptionsArgs\n {\n LocationUri = Output.Tuple(bucket.Name, metadataFolder.Name).Apply(values =\u003e\n {\n var bucketName = values.Item1;\n var metadataFolderName = values.Item2;\n return $\"gs://{bucketName}/{metadataFolderName}\";\n }),\n Parameters = \n {\n { \"owner\", \"Alex\" },\n },\n },\n });\n\n var table = new Gcp.BigLake.Table(\"table\", new()\n {\n Name = \"my_table\",\n Database = database.Id,\n Type = \"HIVE\",\n HiveOptions = new Gcp.BigLake.Inputs.TableHiveOptionsArgs\n {\n TableType = \"MANAGED_TABLE\",\n StorageDescriptor = new Gcp.BigLake.Inputs.TableHiveOptionsStorageDescriptorArgs\n {\n LocationUri = Output.Tuple(bucket.Name, dataFolder.Name).Apply(values =\u003e\n {\n var bucketName = values.Item1;\n var dataFolderName = values.Item2;\n return $\"gs://{bucketName}/{dataFolderName}\";\n }),\n InputFormat = \"org.apache.hadoop.mapred.SequenceFileInputFormat\",\n OutputFormat = \"org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat\",\n },\n Parameters = \n {\n { \"spark.sql.create.version\", \"3.1.3\" },\n { \"spark.sql.sources.schema.numParts\", \"1\" },\n { \"transient_lastDdlTime\", \"1680894197\" },\n { \"spark.sql.partitionProvider\", \"catalog\" },\n { \"owner\", \"John Doe\" },\n { \"spark.sql.sources.schema.part.0\", \"{\\\"type\\\":\\\"struct\\\",\\\"fields\\\":[{\\\"name\\\":\\\"id\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"name\\\",\\\"type\\\":\\\"string\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"age\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}}]}\" },\n { \"spark.sql.sources.provider\", \"iceberg\" },\n { \"provider\", \"iceberg\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/biglake\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcatalog, err := biglake.NewCatalog(ctx, \"catalog\", \u0026biglake.CatalogArgs{\n\t\t\tName: pulumi.String(\"my_catalog\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"my_bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmetadataFolder, err := storage.NewBucketObject(ctx, \"metadata_folder\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"metadata/\"),\n\t\t\tContent: pulumi.String(\" \"),\n\t\t\tBucket: bucket.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdataFolder, err := storage.NewBucketObject(ctx, \"data_folder\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"data/\"),\n\t\t\tContent: pulumi.String(\" \"),\n\t\t\tBucket: bucket.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdatabase, err := biglake.NewDatabase(ctx, \"database\", \u0026biglake.DatabaseArgs{\n\t\t\tName: pulumi.String(\"my_database\"),\n\t\t\tCatalog: catalog.ID(),\n\t\t\tType: pulumi.String(\"HIVE\"),\n\t\t\tHiveOptions: \u0026biglake.DatabaseHiveOptionsArgs{\n\t\t\t\tLocationUri: pulumi.All(bucket.Name, metadataFolder.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tbucketName := _args[0].(string)\n\t\t\t\t\tmetadataFolderName := _args[1].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/%v\", bucketName, metadataFolderName), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tParameters: pulumi.StringMap{\n\t\t\t\t\t\"owner\": pulumi.String(\"Alex\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = biglake.NewTable(ctx, \"table\", \u0026biglake.TableArgs{\n\t\t\tName: pulumi.String(\"my_table\"),\n\t\t\tDatabase: database.ID(),\n\t\t\tType: pulumi.String(\"HIVE\"),\n\t\t\tHiveOptions: \u0026biglake.TableHiveOptionsArgs{\n\t\t\t\tTableType: pulumi.String(\"MANAGED_TABLE\"),\n\t\t\t\tStorageDescriptor: \u0026biglake.TableHiveOptionsStorageDescriptorArgs{\n\t\t\t\t\tLocationUri: pulumi.All(bucket.Name, dataFolder.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\tbucketName := _args[0].(string)\n\t\t\t\t\t\tdataFolderName := _args[1].(string)\n\t\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/%v\", bucketName, dataFolderName), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\tInputFormat: pulumi.String(\"org.apache.hadoop.mapred.SequenceFileInputFormat\"),\n\t\t\t\t\tOutputFormat: pulumi.String(\"org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat\"),\n\t\t\t\t},\n\t\t\t\tParameters: pulumi.StringMap{\n\t\t\t\t\t\"spark.sql.create.version\": pulumi.String(\"3.1.3\"),\n\t\t\t\t\t\"spark.sql.sources.schema.numParts\": pulumi.String(\"1\"),\n\t\t\t\t\t\"transient_lastDdlTime\": pulumi.String(\"1680894197\"),\n\t\t\t\t\t\"spark.sql.partitionProvider\": pulumi.String(\"catalog\"),\n\t\t\t\t\t\"owner\": pulumi.String(\"John Doe\"),\n\t\t\t\t\t\"spark.sql.sources.schema.part.0\": pulumi.String(\"{\\\"type\\\":\\\"struct\\\",\\\"fields\\\":[{\\\"name\\\":\\\"id\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"name\\\",\\\"type\\\":\\\"string\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"age\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}}]}\"),\n\t\t\t\t\t\"spark.sql.sources.provider\": pulumi.String(\"iceberg\"),\n\t\t\t\t\t\"provider\": pulumi.String(\"iceberg\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.biglake.Catalog;\nimport com.pulumi.gcp.biglake.CatalogArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.biglake.Database;\nimport com.pulumi.gcp.biglake.DatabaseArgs;\nimport com.pulumi.gcp.biglake.inputs.DatabaseHiveOptionsArgs;\nimport com.pulumi.gcp.biglake.Table;\nimport com.pulumi.gcp.biglake.TableArgs;\nimport com.pulumi.gcp.biglake.inputs.TableHiveOptionsArgs;\nimport com.pulumi.gcp.biglake.inputs.TableHiveOptionsStorageDescriptorArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var catalog = new Catalog(\"catalog\", CatalogArgs.builder()\n .name(\"my_catalog\")\n .location(\"US\")\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(\"my_bucket\")\n .location(\"US\")\n .forceDestroy(true)\n .uniformBucketLevelAccess(true)\n .build());\n\n var metadataFolder = new BucketObject(\"metadataFolder\", BucketObjectArgs.builder()\n .name(\"metadata/\")\n .content(\" \")\n .bucket(bucket.name())\n .build());\n\n var dataFolder = new BucketObject(\"dataFolder\", BucketObjectArgs.builder()\n .name(\"data/\")\n .content(\" \")\n .bucket(bucket.name())\n .build());\n\n var database = new Database(\"database\", DatabaseArgs.builder()\n .name(\"my_database\")\n .catalog(catalog.id())\n .type(\"HIVE\")\n .hiveOptions(DatabaseHiveOptionsArgs.builder()\n .locationUri(Output.tuple(bucket.name(), metadataFolder.name()).applyValue(values -\u003e {\n var bucketName = values.t1;\n var metadataFolderName = values.t2;\n return String.format(\"gs://%s/%s\", bucketName,metadataFolderName);\n }))\n .parameters(Map.of(\"owner\", \"Alex\"))\n .build())\n .build());\n\n var table = new Table(\"table\", TableArgs.builder()\n .name(\"my_table\")\n .database(database.id())\n .type(\"HIVE\")\n .hiveOptions(TableHiveOptionsArgs.builder()\n .tableType(\"MANAGED_TABLE\")\n .storageDescriptor(TableHiveOptionsStorageDescriptorArgs.builder()\n .locationUri(Output.tuple(bucket.name(), dataFolder.name()).applyValue(values -\u003e {\n var bucketName = values.t1;\n var dataFolderName = values.t2;\n return String.format(\"gs://%s/%s\", bucketName,dataFolderName);\n }))\n .inputFormat(\"org.apache.hadoop.mapred.SequenceFileInputFormat\")\n .outputFormat(\"org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat\")\n .build())\n .parameters(Map.ofEntries(\n Map.entry(\"spark.sql.create.version\", \"3.1.3\"),\n Map.entry(\"spark.sql.sources.schema.numParts\", \"1\"),\n Map.entry(\"transient_lastDdlTime\", \"1680894197\"),\n Map.entry(\"spark.sql.partitionProvider\", \"catalog\"),\n Map.entry(\"owner\", \"John Doe\"),\n Map.entry(\"spark.sql.sources.schema.part.0\", \"{\\\"type\\\":\\\"struct\\\",\\\"fields\\\":[{\\\"name\\\":\\\"id\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"name\\\",\\\"type\\\":\\\"string\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}},{\\\"name\\\":\\\"age\\\",\\\"type\\\":\\\"integer\\\",\\\"nullable\\\":true,\\\"metadata\\\":{}}]}\"),\n Map.entry(\"spark.sql.sources.provider\", \"iceberg\"),\n Map.entry(\"provider\", \"iceberg\")\n ))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n catalog:\n type: gcp:biglake:Catalog\n properties:\n name: my_catalog\n location: US\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: my_bucket\n location: US\n forceDestroy: true\n uniformBucketLevelAccess: true\n metadataFolder:\n type: gcp:storage:BucketObject\n name: metadata_folder\n properties:\n name: metadata/\n content: ' '\n bucket: ${bucket.name}\n dataFolder:\n type: gcp:storage:BucketObject\n name: data_folder\n properties:\n name: data/\n content: ' '\n bucket: ${bucket.name}\n database:\n type: gcp:biglake:Database\n properties:\n name: my_database\n catalog: ${catalog.id}\n type: HIVE\n hiveOptions:\n locationUri: gs://${bucket.name}/${metadataFolder.name}\n parameters:\n owner: Alex\n table:\n type: gcp:biglake:Table\n properties:\n name: my_table\n database: ${database.id}\n type: HIVE\n hiveOptions:\n tableType: MANAGED_TABLE\n storageDescriptor:\n locationUri: gs://${bucket.name}/${dataFolder.name}\n inputFormat: org.apache.hadoop.mapred.SequenceFileInputFormat\n outputFormat: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat\n parameters:\n spark.sql.create.version: 3.1.3\n spark.sql.sources.schema.numParts: '1'\n transient_lastDdlTime: '1680894197'\n spark.sql.partitionProvider: catalog\n owner: John Doe\n spark.sql.sources.schema.part.0: '{\"type\":\"struct\",\"fields\":[{\"name\":\"id\",\"type\":\"integer\",\"nullable\":true,\"metadata\":{}},{\"name\":\"name\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"age\",\"type\":\"integer\",\"nullable\":true,\"metadata\":{}}]}'\n spark.sql.sources.provider: iceberg\n provider: iceberg\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTable can be imported using any of these accepted formats:\n\n* `{{database}}/tables/{{name}}`\n\nWhen using the `pulumi import` command, Table can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:biglake/table:Table default {{database}}/tables/{{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -127364,7 +127364,7 @@ } }, "gcp:bigquery/connection:Connection": { - "description": "A connection allows BigQuery connections to external data sources..\n\n\nTo get more information about Connection, see:\n\n* [API documentation](https://cloud.google.com/bigquery/docs/reference/bigqueryconnection/rest/v1/projects.locations.connections/create)\n* How-to Guides\n * [Cloud SQL federated queries](https://cloud.google.com/bigquery/docs/cloud-sql-federated-queries)\n\n\n\n## Example Usage\n\n### Bigquery Connection Cloud Resource\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n connectionId: \"my-connection\",\n location: \"US\",\n friendlyName: \"👋\",\n description: \"a riveting description\",\n cloudResource: {},\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nconnection = gcp.bigquery.Connection(\"connection\",\n connection_id=\"my-connection\",\n location=\"US\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n cloud_resource={})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n ConnectionId = \"my-connection\",\n Location = \"US\",\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n CloudResource = null,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tCloudResource: nil,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudResourceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var connection = new Connection(\"connection\", ConnectionArgs.builder()\n .connectionId(\"my-connection\")\n .location(\"US\")\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .cloudResource()\n .build());\n\n }\n}\n```\n```yaml\nresources:\n connection:\n type: gcp:bigquery:Connection\n properties:\n connectionId: my-connection\n location: US\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n cloudResource: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"my-database-instance\",\n databaseVersion: \"POSTGRES_11\",\n region: \"us-central1\",\n settings: {\n tier: \"db-f1-micro\",\n },\n deletionProtection: true,\n});\nconst db = new gcp.sql.Database(\"db\", {\n instance: instance.name,\n name: \"db\",\n});\nconst pwd = new random.RandomPassword(\"pwd\", {\n length: 16,\n special: false,\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"user\",\n instance: instance.name,\n password: pwd.result,\n});\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n friendlyName: \"👋\",\n description: \"a riveting description\",\n location: \"US\",\n cloudSql: {\n instanceId: instance.connectionName,\n database: db.name,\n type: \"POSTGRES\",\n credential: {\n username: user.name,\n password: user.password,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"my-database-instance\",\n database_version=\"POSTGRES_11\",\n region=\"us-central1\",\n settings={\n \"tier\": \"db-f1-micro\",\n },\n deletion_protection=True)\ndb = gcp.sql.Database(\"db\",\n instance=instance.name,\n name=\"db\")\npwd = random.RandomPassword(\"pwd\",\n length=16,\n special=False)\nuser = gcp.sql.User(\"user\",\n name=\"user\",\n instance=instance.name,\n password=pwd.result)\nconnection = gcp.bigquery.Connection(\"connection\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n location=\"US\",\n cloud_sql={\n \"instance_id\": instance.connection_name,\n \"database\": db.name,\n \"type\": \"POSTGRES\",\n \"credential\": {\n \"username\": user.name,\n \"password\": user.password,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"my-database-instance\",\n DatabaseVersion = \"POSTGRES_11\",\n Region = \"us-central1\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n },\n DeletionProtection = true,\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Instance = instance.Name,\n Name = \"db\",\n });\n\n var pwd = new Random.RandomPassword(\"pwd\", new()\n {\n Length = 16,\n Special = false,\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"user\",\n Instance = instance.Name,\n Password = pwd.Result,\n });\n\n var connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n Location = \"US\",\n CloudSql = new Gcp.BigQuery.Inputs.ConnectionCloudSqlArgs\n {\n InstanceId = instance.ConnectionName,\n Database = db.Name,\n Type = \"POSTGRES\",\n Credential = new Gcp.BigQuery.Inputs.ConnectionCloudSqlCredentialArgs\n {\n Username = user.Name,\n Password = user.Password,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\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\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"my-database-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_11\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdb, err := sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tName: pulumi.String(\"db\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpwd, err := random.NewRandomPassword(ctx, \"pwd\", \u0026random.RandomPasswordArgs{\n\t\t\tLength: pulumi.Int(16),\n\t\t\tSpecial: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tPassword: pwd.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tCloudSql: \u0026bigquery.ConnectionCloudSqlArgs{\n\t\t\t\tInstanceId: instance.ConnectionName,\n\t\t\t\tDatabase: db.Name,\n\t\t\t\tType: pulumi.String(\"POSTGRES\"),\n\t\t\t\tCredential: \u0026bigquery.ConnectionCloudSqlCredentialArgs{\n\t\t\t\t\tUsername: user.Name,\n\t\t\t\t\tPassword: user.Password,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport com.pulumi.random.RandomPassword;\nimport com.pulumi.random.RandomPasswordArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSqlArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSqlCredentialArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"my-database-instance\")\n .databaseVersion(\"POSTGRES_11\")\n .region(\"us-central1\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .instance(instance.name())\n .name(\"db\")\n .build());\n\n var pwd = new RandomPassword(\"pwd\", RandomPasswordArgs.builder()\n .length(16)\n .special(false)\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"user\")\n .instance(instance.name())\n .password(pwd.result())\n .build());\n\n var connection = new Connection(\"connection\", ConnectionArgs.builder()\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .location(\"US\")\n .cloudSql(ConnectionCloudSqlArgs.builder()\n .instanceId(instance.connectionName())\n .database(db.name())\n .type(\"POSTGRES\")\n .credential(ConnectionCloudSqlCredentialArgs.builder()\n .username(user.name())\n .password(user.password())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: my-database-instance\n databaseVersion: POSTGRES_11\n region: us-central1\n settings:\n tier: db-f1-micro\n deletionProtection: 'true'\n db:\n type: gcp:sql:Database\n properties:\n instance: ${instance.name}\n name: db\n pwd:\n type: random:RandomPassword\n properties:\n length: 16\n special: false\n user:\n type: gcp:sql:User\n properties:\n name: user\n instance: ${instance.name}\n password: ${pwd.result}\n connection:\n type: gcp:bigquery:Connection\n properties:\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n location: US\n cloudSql:\n instanceId: ${instance.connectionName}\n database: ${db.name}\n type: POSTGRES\n credential:\n username: ${user.name}\n password: ${user.password}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"my-database-instance\",\n databaseVersion: \"POSTGRES_11\",\n region: \"us-central1\",\n settings: {\n tier: \"db-f1-micro\",\n },\n deletionProtection: true,\n});\nconst db = new gcp.sql.Database(\"db\", {\n instance: instance.name,\n name: \"db\",\n});\nconst pwd = new random.RandomPassword(\"pwd\", {\n length: 16,\n special: false,\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"user\",\n instance: instance.name,\n password: pwd.result,\n});\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n connectionId: \"my-connection\",\n location: \"US\",\n friendlyName: \"👋\",\n description: \"a riveting description\",\n cloudSql: {\n instanceId: instance.connectionName,\n database: db.name,\n type: \"POSTGRES\",\n credential: {\n username: user.name,\n password: user.password,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"my-database-instance\",\n database_version=\"POSTGRES_11\",\n region=\"us-central1\",\n settings={\n \"tier\": \"db-f1-micro\",\n },\n deletion_protection=True)\ndb = gcp.sql.Database(\"db\",\n instance=instance.name,\n name=\"db\")\npwd = random.RandomPassword(\"pwd\",\n length=16,\n special=False)\nuser = gcp.sql.User(\"user\",\n name=\"user\",\n instance=instance.name,\n password=pwd.result)\nconnection = gcp.bigquery.Connection(\"connection\",\n connection_id=\"my-connection\",\n location=\"US\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n cloud_sql={\n \"instance_id\": instance.connection_name,\n \"database\": db.name,\n \"type\": \"POSTGRES\",\n \"credential\": {\n \"username\": user.name,\n \"password\": user.password,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"my-database-instance\",\n DatabaseVersion = \"POSTGRES_11\",\n Region = \"us-central1\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n },\n DeletionProtection = true,\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Instance = instance.Name,\n Name = \"db\",\n });\n\n var pwd = new Random.RandomPassword(\"pwd\", new()\n {\n Length = 16,\n Special = false,\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"user\",\n Instance = instance.Name,\n Password = pwd.Result,\n });\n\n var connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n ConnectionId = \"my-connection\",\n Location = \"US\",\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n CloudSql = new Gcp.BigQuery.Inputs.ConnectionCloudSqlArgs\n {\n InstanceId = instance.ConnectionName,\n Database = db.Name,\n Type = \"POSTGRES\",\n Credential = new Gcp.BigQuery.Inputs.ConnectionCloudSqlCredentialArgs\n {\n Username = user.Name,\n Password = user.Password,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\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\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"my-database-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_11\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdb, err := sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tName: pulumi.String(\"db\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpwd, err := random.NewRandomPassword(ctx, \"pwd\", \u0026random.RandomPasswordArgs{\n\t\t\tLength: pulumi.Int(16),\n\t\t\tSpecial: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tPassword: pwd.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tCloudSql: \u0026bigquery.ConnectionCloudSqlArgs{\n\t\t\t\tInstanceId: instance.ConnectionName,\n\t\t\t\tDatabase: db.Name,\n\t\t\t\tType: pulumi.String(\"POSTGRES\"),\n\t\t\t\tCredential: \u0026bigquery.ConnectionCloudSqlCredentialArgs{\n\t\t\t\t\tUsername: user.Name,\n\t\t\t\t\tPassword: user.Password,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport com.pulumi.random.RandomPassword;\nimport com.pulumi.random.RandomPasswordArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSqlArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSqlCredentialArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"my-database-instance\")\n .databaseVersion(\"POSTGRES_11\")\n .region(\"us-central1\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .instance(instance.name())\n .name(\"db\")\n .build());\n\n var pwd = new RandomPassword(\"pwd\", RandomPasswordArgs.builder()\n .length(16)\n .special(false)\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"user\")\n .instance(instance.name())\n .password(pwd.result())\n .build());\n\n var connection = new Connection(\"connection\", ConnectionArgs.builder()\n .connectionId(\"my-connection\")\n .location(\"US\")\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .cloudSql(ConnectionCloudSqlArgs.builder()\n .instanceId(instance.connectionName())\n .database(db.name())\n .type(\"POSTGRES\")\n .credential(ConnectionCloudSqlCredentialArgs.builder()\n .username(user.name())\n .password(user.password())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: my-database-instance\n databaseVersion: POSTGRES_11\n region: us-central1\n settings:\n tier: db-f1-micro\n deletionProtection: 'true'\n db:\n type: gcp:sql:Database\n properties:\n instance: ${instance.name}\n name: db\n pwd:\n type: random:RandomPassword\n properties:\n length: 16\n special: false\n user:\n type: gcp:sql:User\n properties:\n name: user\n instance: ${instance.name}\n password: ${pwd.result}\n connection:\n type: gcp:bigquery:Connection\n properties:\n connectionId: my-connection\n location: US\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n cloudSql:\n instanceId: ${instance.connectionName}\n database: ${db.name}\n type: POSTGRES\n credential:\n username: ${user.name}\n password: ${user.password}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Aws\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n connectionId: \"my-connection\",\n location: \"aws-us-east-1\",\n friendlyName: \"👋\",\n description: \"a riveting description\",\n aws: {\n accessRole: {\n iamRoleId: \"arn:aws:iam::999999999999:role/omnirole\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nconnection = gcp.bigquery.Connection(\"connection\",\n connection_id=\"my-connection\",\n location=\"aws-us-east-1\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n aws={\n \"access_role\": {\n \"iam_role_id\": \"arn:aws:iam::999999999999:role/omnirole\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n ConnectionId = \"my-connection\",\n Location = \"aws-us-east-1\",\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n Aws = new Gcp.BigQuery.Inputs.ConnectionAwsArgs\n {\n AccessRole = new Gcp.BigQuery.Inputs.ConnectionAwsAccessRoleArgs\n {\n IamRoleId = \"arn:aws:iam::999999999999:role/omnirole\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLocation: pulumi.String(\"aws-us-east-1\"),\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tAws: \u0026bigquery.ConnectionAwsArgs{\n\t\t\t\tAccessRole: \u0026bigquery.ConnectionAwsAccessRoleArgs{\n\t\t\t\t\tIamRoleId: pulumi.String(\"arn:aws:iam::999999999999:role/omnirole\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionAwsArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionAwsAccessRoleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var connection = new Connection(\"connection\", ConnectionArgs.builder()\n .connectionId(\"my-connection\")\n .location(\"aws-us-east-1\")\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .aws(ConnectionAwsArgs.builder()\n .accessRole(ConnectionAwsAccessRoleArgs.builder()\n .iamRoleId(\"arn:aws:iam::999999999999:role/omnirole\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n connection:\n type: gcp:bigquery:Connection\n properties:\n connectionId: my-connection\n location: aws-us-east-1\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n aws:\n accessRole:\n iamRoleId: arn:aws:iam::999999999999:role/omnirole\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Azure\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n connectionId: \"my-connection\",\n location: \"azure-eastus2\",\n friendlyName: \"👋\",\n description: \"a riveting description\",\n azure: {\n customerTenantId: \"customer-tenant-id\",\n federatedApplicationClientId: \"b43eeeee-eeee-eeee-eeee-a480155501ce\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nconnection = gcp.bigquery.Connection(\"connection\",\n connection_id=\"my-connection\",\n location=\"azure-eastus2\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n azure={\n \"customer_tenant_id\": \"customer-tenant-id\",\n \"federated_application_client_id\": \"b43eeeee-eeee-eeee-eeee-a480155501ce\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n ConnectionId = \"my-connection\",\n Location = \"azure-eastus2\",\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n Azure = new Gcp.BigQuery.Inputs.ConnectionAzureArgs\n {\n CustomerTenantId = \"customer-tenant-id\",\n FederatedApplicationClientId = \"b43eeeee-eeee-eeee-eeee-a480155501ce\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLocation: pulumi.String(\"azure-eastus2\"),\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tAzure: \u0026bigquery.ConnectionAzureArgs{\n\t\t\t\tCustomerTenantId: pulumi.String(\"customer-tenant-id\"),\n\t\t\t\tFederatedApplicationClientId: pulumi.String(\"b43eeeee-eeee-eeee-eeee-a480155501ce\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionAzureArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var connection = new Connection(\"connection\", ConnectionArgs.builder()\n .connectionId(\"my-connection\")\n .location(\"azure-eastus2\")\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .azure(ConnectionAzureArgs.builder()\n .customerTenantId(\"customer-tenant-id\")\n .federatedApplicationClientId(\"b43eeeee-eeee-eeee-eeee-a480155501ce\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n connection:\n type: gcp:bigquery:Connection\n properties:\n connectionId: my-connection\n location: azure-eastus2\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n azure:\n customerTenantId: customer-tenant-id\n federatedApplicationClientId: b43eeeee-eeee-eeee-eeee-a480155501ce\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Cloudspanner\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n connectionId: \"my-connection\",\n location: \"US\",\n friendlyName: \"👋\",\n description: \"a riveting description\",\n cloudSpanner: {\n database: \"projects/project/instances/instance/databases/database\",\n databaseRole: \"database_role\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nconnection = gcp.bigquery.Connection(\"connection\",\n connection_id=\"my-connection\",\n location=\"US\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n cloud_spanner={\n \"database\": \"projects/project/instances/instance/databases/database\",\n \"database_role\": \"database_role\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n ConnectionId = \"my-connection\",\n Location = \"US\",\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n CloudSpanner = new Gcp.BigQuery.Inputs.ConnectionCloudSpannerArgs\n {\n Database = \"projects/project/instances/instance/databases/database\",\n DatabaseRole = \"database_role\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tCloudSpanner: \u0026bigquery.ConnectionCloudSpannerArgs{\n\t\t\t\tDatabase: pulumi.String(\"projects/project/instances/instance/databases/database\"),\n\t\t\t\tDatabaseRole: pulumi.String(\"database_role\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSpannerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var connection = new Connection(\"connection\", ConnectionArgs.builder()\n .connectionId(\"my-connection\")\n .location(\"US\")\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .cloudSpanner(ConnectionCloudSpannerArgs.builder()\n .database(\"projects/project/instances/instance/databases/database\")\n .databaseRole(\"database_role\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n connection:\n type: gcp:bigquery:Connection\n properties:\n connectionId: my-connection\n location: US\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n cloudSpanner:\n database: projects/project/instances/instance/databases/database\n databaseRole: database_role\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Cloudspanner Databoost\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n connectionId: \"my-connection\",\n location: \"US\",\n friendlyName: \"👋\",\n description: \"a riveting description\",\n cloudSpanner: {\n database: \"projects/project/instances/instance/databases/database\",\n useParallelism: true,\n useDataBoost: true,\n maxParallelism: 100,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nconnection = gcp.bigquery.Connection(\"connection\",\n connection_id=\"my-connection\",\n location=\"US\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n cloud_spanner={\n \"database\": \"projects/project/instances/instance/databases/database\",\n \"use_parallelism\": True,\n \"use_data_boost\": True,\n \"max_parallelism\": 100,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n ConnectionId = \"my-connection\",\n Location = \"US\",\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n CloudSpanner = new Gcp.BigQuery.Inputs.ConnectionCloudSpannerArgs\n {\n Database = \"projects/project/instances/instance/databases/database\",\n UseParallelism = true,\n UseDataBoost = true,\n MaxParallelism = 100,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tCloudSpanner: \u0026bigquery.ConnectionCloudSpannerArgs{\n\t\t\t\tDatabase: pulumi.String(\"projects/project/instances/instance/databases/database\"),\n\t\t\t\tUseParallelism: pulumi.Bool(true),\n\t\t\t\tUseDataBoost: pulumi.Bool(true),\n\t\t\t\tMaxParallelism: pulumi.Int(100),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSpannerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var connection = new Connection(\"connection\", ConnectionArgs.builder()\n .connectionId(\"my-connection\")\n .location(\"US\")\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .cloudSpanner(ConnectionCloudSpannerArgs.builder()\n .database(\"projects/project/instances/instance/databases/database\")\n .useParallelism(true)\n .useDataBoost(true)\n .maxParallelism(100)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n connection:\n type: gcp:bigquery:Connection\n properties:\n connectionId: my-connection\n location: US\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n cloudSpanner:\n database: projects/project/instances/instance/databases/database\n useParallelism: true\n useDataBoost: true\n maxParallelism: 100\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Spark\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.dataproc.Cluster(\"basic\", {\n name: \"my-connection\",\n region: \"us-central1\",\n clusterConfig: {\n softwareConfig: {\n overrideProperties: {\n \"dataproc:dataproc.allow.zero.workers\": \"true\",\n },\n },\n masterConfig: {\n numInstances: 1,\n machineType: \"e2-standard-2\",\n diskConfig: {\n bootDiskSizeGb: 35,\n },\n },\n },\n});\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n connectionId: \"my-connection\",\n location: \"US\",\n friendlyName: \"👋\",\n description: \"a riveting description\",\n spark: {\n sparkHistoryServerConfig: {\n dataprocCluster: basic.id,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.dataproc.Cluster(\"basic\",\n name=\"my-connection\",\n region=\"us-central1\",\n cluster_config={\n \"software_config\": {\n \"override_properties\": {\n \"dataproc_dataproc_allow_zero_workers\": \"true\",\n },\n },\n \"master_config\": {\n \"num_instances\": 1,\n \"machine_type\": \"e2-standard-2\",\n \"disk_config\": {\n \"boot_disk_size_gb\": 35,\n },\n },\n })\nconnection = gcp.bigquery.Connection(\"connection\",\n connection_id=\"my-connection\",\n location=\"US\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n spark={\n \"spark_history_server_config\": {\n \"dataproc_cluster\": basic.id,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basic = new Gcp.Dataproc.Cluster(\"basic\", new()\n {\n Name = \"my-connection\",\n Region = \"us-central1\",\n ClusterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigArgs\n {\n SoftwareConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigSoftwareConfigArgs\n {\n OverrideProperties = \n {\n { \"dataproc:dataproc.allow.zero.workers\", \"true\" },\n },\n },\n MasterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigMasterConfigArgs\n {\n NumInstances = 1,\n MachineType = \"e2-standard-2\",\n DiskConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigMasterConfigDiskConfigArgs\n {\n BootDiskSizeGb = 35,\n },\n },\n },\n });\n\n var connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n ConnectionId = \"my-connection\",\n Location = \"US\",\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n Spark = new Gcp.BigQuery.Inputs.ConnectionSparkArgs\n {\n SparkHistoryServerConfig = new Gcp.BigQuery.Inputs.ConnectionSparkSparkHistoryServerConfigArgs\n {\n DataprocCluster = basic.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataproc\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbasic, err := dataproc.NewCluster(ctx, \"basic\", \u0026dataproc.ClusterArgs{\n\t\t\tName: pulumi.String(\"my-connection\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tClusterConfig: \u0026dataproc.ClusterClusterConfigArgs{\n\t\t\t\tSoftwareConfig: \u0026dataproc.ClusterClusterConfigSoftwareConfigArgs{\n\t\t\t\t\tOverrideProperties: pulumi.StringMap{\n\t\t\t\t\t\t\"dataproc:dataproc.allow.zero.workers\": pulumi.String(\"true\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMasterConfig: \u0026dataproc.ClusterClusterConfigMasterConfigArgs{\n\t\t\t\t\tNumInstances: pulumi.Int(1),\n\t\t\t\t\tMachineType: pulumi.String(\"e2-standard-2\"),\n\t\t\t\t\tDiskConfig: \u0026dataproc.ClusterClusterConfigMasterConfigDiskConfigArgs{\n\t\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tSpark: \u0026bigquery.ConnectionSparkArgs{\n\t\t\t\tSparkHistoryServerConfig: \u0026bigquery.ConnectionSparkSparkHistoryServerConfigArgs{\n\t\t\t\t\tDataprocCluster: basic.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataproc.Cluster;\nimport com.pulumi.gcp.dataproc.ClusterArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigSoftwareConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigMasterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigMasterConfigDiskConfigArgs;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionSparkArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionSparkSparkHistoryServerConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basic = new Cluster(\"basic\", ClusterArgs.builder()\n .name(\"my-connection\")\n .region(\"us-central1\")\n .clusterConfig(ClusterClusterConfigArgs.builder()\n .softwareConfig(ClusterClusterConfigSoftwareConfigArgs.builder()\n .overrideProperties(Map.of(\"dataproc:dataproc.allow.zero.workers\", \"true\"))\n .build())\n .masterConfig(ClusterClusterConfigMasterConfigArgs.builder()\n .numInstances(1)\n .machineType(\"e2-standard-2\")\n .diskConfig(ClusterClusterConfigMasterConfigDiskConfigArgs.builder()\n .bootDiskSizeGb(35)\n .build())\n .build())\n .build())\n .build());\n\n var connection = new Connection(\"connection\", ConnectionArgs.builder()\n .connectionId(\"my-connection\")\n .location(\"US\")\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .spark(ConnectionSparkArgs.builder()\n .sparkHistoryServerConfig(ConnectionSparkSparkHistoryServerConfigArgs.builder()\n .dataprocCluster(basic.id())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n connection:\n type: gcp:bigquery:Connection\n properties:\n connectionId: my-connection\n location: US\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n spark:\n sparkHistoryServerConfig:\n dataprocCluster: ${basic.id}\n basic:\n type: gcp:dataproc:Cluster\n properties:\n name: my-connection\n region: us-central1\n clusterConfig:\n softwareConfig:\n overrideProperties:\n dataproc:dataproc.allow.zero.workers: 'true'\n masterConfig:\n numInstances: 1\n machineType: e2-standard-2\n diskConfig:\n bootDiskSizeGb: 35\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Kms\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"my-database-instance\",\n databaseVersion: \"POSTGRES_11\",\n region: \"us-central1\",\n settings: {\n tier: \"db-f1-micro\",\n },\n deletionProtection: true,\n});\nconst db = new gcp.sql.Database(\"db\", {\n instance: instance.name,\n name: \"db\",\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"user\",\n instance: instance.name,\n password: \"tf-test-my-password_77884\",\n});\nconst bqSa = gcp.bigquery.getDefaultServiceAccount({});\nconst project = gcp.organizations.getProject({});\nconst keySaUser = new gcp.projects.IAMMember(\"key_sa_user\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: bqSa.then(bqSa =\u003e `serviceAccount:${bqSa.email}`),\n});\nconst bq_connection_cmek = new gcp.bigquery.Connection(\"bq-connection-cmek\", {\n friendlyName: \"👋\",\n description: \"a riveting description\",\n location: \"US\",\n kmsKeyName: \"projects/project/locations/us-central1/keyRings/us-central1/cryptoKeys/bq-key\",\n cloudSql: {\n instanceId: instance.connectionName,\n database: db.name,\n type: \"POSTGRES\",\n credential: {\n username: user.name,\n password: user.password,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"my-database-instance\",\n database_version=\"POSTGRES_11\",\n region=\"us-central1\",\n settings={\n \"tier\": \"db-f1-micro\",\n },\n deletion_protection=True)\ndb = gcp.sql.Database(\"db\",\n instance=instance.name,\n name=\"db\")\nuser = gcp.sql.User(\"user\",\n name=\"user\",\n instance=instance.name,\n password=\"tf-test-my-password_77884\")\nbq_sa = gcp.bigquery.get_default_service_account()\nproject = gcp.organizations.get_project()\nkey_sa_user = gcp.projects.IAMMember(\"key_sa_user\",\n project=project.project_id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:{bq_sa.email}\")\nbq_connection_cmek = gcp.bigquery.Connection(\"bq-connection-cmek\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n location=\"US\",\n kms_key_name=\"projects/project/locations/us-central1/keyRings/us-central1/cryptoKeys/bq-key\",\n cloud_sql={\n \"instance_id\": instance.connection_name,\n \"database\": db.name,\n \"type\": \"POSTGRES\",\n \"credential\": {\n \"username\": user.name,\n \"password\": user.password,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"my-database-instance\",\n DatabaseVersion = \"POSTGRES_11\",\n Region = \"us-central1\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n },\n DeletionProtection = true,\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Instance = instance.Name,\n Name = \"db\",\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"user\",\n Instance = instance.Name,\n Password = \"tf-test-my-password_77884\",\n });\n\n var bqSa = Gcp.BigQuery.GetDefaultServiceAccount.Invoke();\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var keySaUser = new Gcp.Projects.IAMMember(\"key_sa_user\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:{bqSa.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Email)}\",\n });\n\n var bq_connection_cmek = new Gcp.BigQuery.Connection(\"bq-connection-cmek\", new()\n {\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n Location = \"US\",\n KmsKeyName = \"projects/project/locations/us-central1/keyRings/us-central1/cryptoKeys/bq-key\",\n CloudSql = new Gcp.BigQuery.Inputs.ConnectionCloudSqlArgs\n {\n InstanceId = instance.ConnectionName,\n Database = db.Name,\n Type = \"POSTGRES\",\n Credential = new Gcp.BigQuery.Inputs.ConnectionCloudSqlCredentialArgs\n {\n Username = user.Name,\n Password = user.Password,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"my-database-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_11\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdb, err := sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tName: pulumi.String(\"db\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tPassword: pulumi.String(\"tf-test-my-password_77884\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbqSa, err := bigquery.GetDefaultServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"key_sa_user\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:%v\", bqSa.Email),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewConnection(ctx, \"bq-connection-cmek\", \u0026bigquery.ConnectionArgs{\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tKmsKeyName: pulumi.String(\"projects/project/locations/us-central1/keyRings/us-central1/cryptoKeys/bq-key\"),\n\t\t\tCloudSql: \u0026bigquery.ConnectionCloudSqlArgs{\n\t\t\t\tInstanceId: instance.ConnectionName,\n\t\t\t\tDatabase: db.Name,\n\t\t\t\tType: pulumi.String(\"POSTGRES\"),\n\t\t\t\tCredential: \u0026bigquery.ConnectionCloudSqlCredentialArgs{\n\t\t\t\t\tUsername: user.Name,\n\t\t\t\t\tPassword: user.Password,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.bigquery.BigqueryFunctions;\nimport com.pulumi.gcp.bigquery.inputs.GetDefaultServiceAccountArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSqlArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSqlCredentialArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"my-database-instance\")\n .databaseVersion(\"POSTGRES_11\")\n .region(\"us-central1\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .instance(instance.name())\n .name(\"db\")\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"user\")\n .instance(instance.name())\n .password(\"tf-test-my-password_77884\")\n .build());\n\n final var bqSa = BigqueryFunctions.getDefaultServiceAccount();\n\n final var project = OrganizationsFunctions.getProject();\n\n var keySaUser = new IAMMember(\"keySaUser\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:%s\", bqSa.applyValue(getDefaultServiceAccountResult -\u003e getDefaultServiceAccountResult.email())))\n .build());\n\n var bq_connection_cmek = new Connection(\"bq-connection-cmek\", ConnectionArgs.builder()\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .location(\"US\")\n .kmsKeyName(\"projects/project/locations/us-central1/keyRings/us-central1/cryptoKeys/bq-key\")\n .cloudSql(ConnectionCloudSqlArgs.builder()\n .instanceId(instance.connectionName())\n .database(db.name())\n .type(\"POSTGRES\")\n .credential(ConnectionCloudSqlCredentialArgs.builder()\n .username(user.name())\n .password(user.password())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: my-database-instance\n databaseVersion: POSTGRES_11\n region: us-central1\n settings:\n tier: db-f1-micro\n deletionProtection: 'true'\n db:\n type: gcp:sql:Database\n properties:\n instance: ${instance.name}\n name: db\n user:\n type: gcp:sql:User\n properties:\n name: user\n instance: ${instance.name}\n password: tf-test-my-password_77884\n keySaUser:\n type: gcp:projects:IAMMember\n name: key_sa_user\n properties:\n project: ${project.projectId}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:${bqSa.email}\n bq-connection-cmek:\n type: gcp:bigquery:Connection\n properties:\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n location: US\n kmsKeyName: projects/project/locations/us-central1/keyRings/us-central1/cryptoKeys/bq-key\n cloudSql:\n instanceId: ${instance.connectionName}\n database: ${db.name}\n type: POSTGRES\n credential:\n username: ${user.name}\n password: ${user.password}\nvariables:\n bqSa:\n fn::invoke:\n Function: gcp:bigquery:getDefaultServiceAccount\n Arguments: {}\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nConnection can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/connections/{{connection_id}}`\n\n* `{{project}}/{{location}}/{{connection_id}}`\n\n* `{{location}}/{{connection_id}}`\n\nWhen using the `pulumi import` command, Connection can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:bigquery/connection:Connection default projects/{{project}}/locations/{{location}}/connections/{{connection_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/connection:Connection default {{project}}/{{location}}/{{connection_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/connection:Connection default {{location}}/{{connection_id}}\n```\n\n", + "description": "A connection allows BigQuery connections to external data sources..\n\n\nTo get more information about Connection, see:\n\n* [API documentation](https://cloud.google.com/bigquery/docs/reference/bigqueryconnection/rest/v1/projects.locations.connections/create)\n* How-to Guides\n * [Cloud SQL federated queries](https://cloud.google.com/bigquery/docs/cloud-sql-federated-queries)\n\n\n\n## Example Usage\n\n### Bigquery Connection Cloud Resource\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n connectionId: \"my-connection\",\n location: \"US\",\n friendlyName: \"👋\",\n description: \"a riveting description\",\n cloudResource: {},\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nconnection = gcp.bigquery.Connection(\"connection\",\n connection_id=\"my-connection\",\n location=\"US\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n cloud_resource={})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n ConnectionId = \"my-connection\",\n Location = \"US\",\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n CloudResource = null,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tCloudResource: \u0026bigquery.ConnectionCloudResourceArgs{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudResourceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var connection = new Connection(\"connection\", ConnectionArgs.builder()\n .connectionId(\"my-connection\")\n .location(\"US\")\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .cloudResource()\n .build());\n\n }\n}\n```\n```yaml\nresources:\n connection:\n type: gcp:bigquery:Connection\n properties:\n connectionId: my-connection\n location: US\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n cloudResource: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"my-database-instance\",\n databaseVersion: \"POSTGRES_11\",\n region: \"us-central1\",\n settings: {\n tier: \"db-f1-micro\",\n },\n deletionProtection: true,\n});\nconst db = new gcp.sql.Database(\"db\", {\n instance: instance.name,\n name: \"db\",\n});\nconst pwd = new random.RandomPassword(\"pwd\", {\n length: 16,\n special: false,\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"user\",\n instance: instance.name,\n password: pwd.result,\n});\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n friendlyName: \"👋\",\n description: \"a riveting description\",\n location: \"US\",\n cloudSql: {\n instanceId: instance.connectionName,\n database: db.name,\n type: \"POSTGRES\",\n credential: {\n username: user.name,\n password: user.password,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"my-database-instance\",\n database_version=\"POSTGRES_11\",\n region=\"us-central1\",\n settings={\n \"tier\": \"db-f1-micro\",\n },\n deletion_protection=True)\ndb = gcp.sql.Database(\"db\",\n instance=instance.name,\n name=\"db\")\npwd = random.RandomPassword(\"pwd\",\n length=16,\n special=False)\nuser = gcp.sql.User(\"user\",\n name=\"user\",\n instance=instance.name,\n password=pwd.result)\nconnection = gcp.bigquery.Connection(\"connection\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n location=\"US\",\n cloud_sql={\n \"instance_id\": instance.connection_name,\n \"database\": db.name,\n \"type\": \"POSTGRES\",\n \"credential\": {\n \"username\": user.name,\n \"password\": user.password,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"my-database-instance\",\n DatabaseVersion = \"POSTGRES_11\",\n Region = \"us-central1\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n },\n DeletionProtection = true,\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Instance = instance.Name,\n Name = \"db\",\n });\n\n var pwd = new Random.RandomPassword(\"pwd\", new()\n {\n Length = 16,\n Special = false,\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"user\",\n Instance = instance.Name,\n Password = pwd.Result,\n });\n\n var connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n Location = \"US\",\n CloudSql = new Gcp.BigQuery.Inputs.ConnectionCloudSqlArgs\n {\n InstanceId = instance.ConnectionName,\n Database = db.Name,\n Type = \"POSTGRES\",\n Credential = new Gcp.BigQuery.Inputs.ConnectionCloudSqlCredentialArgs\n {\n Username = user.Name,\n Password = user.Password,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\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\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"my-database-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_11\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdb, err := sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tName: pulumi.String(\"db\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpwd, err := random.NewRandomPassword(ctx, \"pwd\", \u0026random.RandomPasswordArgs{\n\t\t\tLength: pulumi.Int(16),\n\t\t\tSpecial: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tPassword: pwd.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tCloudSql: \u0026bigquery.ConnectionCloudSqlArgs{\n\t\t\t\tInstanceId: instance.ConnectionName,\n\t\t\t\tDatabase: db.Name,\n\t\t\t\tType: pulumi.String(\"POSTGRES\"),\n\t\t\t\tCredential: \u0026bigquery.ConnectionCloudSqlCredentialArgs{\n\t\t\t\t\tUsername: user.Name,\n\t\t\t\t\tPassword: user.Password,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport com.pulumi.random.RandomPassword;\nimport com.pulumi.random.RandomPasswordArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSqlArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSqlCredentialArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"my-database-instance\")\n .databaseVersion(\"POSTGRES_11\")\n .region(\"us-central1\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .instance(instance.name())\n .name(\"db\")\n .build());\n\n var pwd = new RandomPassword(\"pwd\", RandomPasswordArgs.builder()\n .length(16)\n .special(false)\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"user\")\n .instance(instance.name())\n .password(pwd.result())\n .build());\n\n var connection = new Connection(\"connection\", ConnectionArgs.builder()\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .location(\"US\")\n .cloudSql(ConnectionCloudSqlArgs.builder()\n .instanceId(instance.connectionName())\n .database(db.name())\n .type(\"POSTGRES\")\n .credential(ConnectionCloudSqlCredentialArgs.builder()\n .username(user.name())\n .password(user.password())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: my-database-instance\n databaseVersion: POSTGRES_11\n region: us-central1\n settings:\n tier: db-f1-micro\n deletionProtection: 'true'\n db:\n type: gcp:sql:Database\n properties:\n instance: ${instance.name}\n name: db\n pwd:\n type: random:RandomPassword\n properties:\n length: 16\n special: false\n user:\n type: gcp:sql:User\n properties:\n name: user\n instance: ${instance.name}\n password: ${pwd.result}\n connection:\n type: gcp:bigquery:Connection\n properties:\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n location: US\n cloudSql:\n instanceId: ${instance.connectionName}\n database: ${db.name}\n type: POSTGRES\n credential:\n username: ${user.name}\n password: ${user.password}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"my-database-instance\",\n databaseVersion: \"POSTGRES_11\",\n region: \"us-central1\",\n settings: {\n tier: \"db-f1-micro\",\n },\n deletionProtection: true,\n});\nconst db = new gcp.sql.Database(\"db\", {\n instance: instance.name,\n name: \"db\",\n});\nconst pwd = new random.RandomPassword(\"pwd\", {\n length: 16,\n special: false,\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"user\",\n instance: instance.name,\n password: pwd.result,\n});\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n connectionId: \"my-connection\",\n location: \"US\",\n friendlyName: \"👋\",\n description: \"a riveting description\",\n cloudSql: {\n instanceId: instance.connectionName,\n database: db.name,\n type: \"POSTGRES\",\n credential: {\n username: user.name,\n password: user.password,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"my-database-instance\",\n database_version=\"POSTGRES_11\",\n region=\"us-central1\",\n settings={\n \"tier\": \"db-f1-micro\",\n },\n deletion_protection=True)\ndb = gcp.sql.Database(\"db\",\n instance=instance.name,\n name=\"db\")\npwd = random.RandomPassword(\"pwd\",\n length=16,\n special=False)\nuser = gcp.sql.User(\"user\",\n name=\"user\",\n instance=instance.name,\n password=pwd.result)\nconnection = gcp.bigquery.Connection(\"connection\",\n connection_id=\"my-connection\",\n location=\"US\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n cloud_sql={\n \"instance_id\": instance.connection_name,\n \"database\": db.name,\n \"type\": \"POSTGRES\",\n \"credential\": {\n \"username\": user.name,\n \"password\": user.password,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"my-database-instance\",\n DatabaseVersion = \"POSTGRES_11\",\n Region = \"us-central1\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n },\n DeletionProtection = true,\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Instance = instance.Name,\n Name = \"db\",\n });\n\n var pwd = new Random.RandomPassword(\"pwd\", new()\n {\n Length = 16,\n Special = false,\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"user\",\n Instance = instance.Name,\n Password = pwd.Result,\n });\n\n var connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n ConnectionId = \"my-connection\",\n Location = \"US\",\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n CloudSql = new Gcp.BigQuery.Inputs.ConnectionCloudSqlArgs\n {\n InstanceId = instance.ConnectionName,\n Database = db.Name,\n Type = \"POSTGRES\",\n Credential = new Gcp.BigQuery.Inputs.ConnectionCloudSqlCredentialArgs\n {\n Username = user.Name,\n Password = user.Password,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\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\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"my-database-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_11\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdb, err := sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tName: pulumi.String(\"db\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpwd, err := random.NewRandomPassword(ctx, \"pwd\", \u0026random.RandomPasswordArgs{\n\t\t\tLength: pulumi.Int(16),\n\t\t\tSpecial: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tPassword: pwd.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tCloudSql: \u0026bigquery.ConnectionCloudSqlArgs{\n\t\t\t\tInstanceId: instance.ConnectionName,\n\t\t\t\tDatabase: db.Name,\n\t\t\t\tType: pulumi.String(\"POSTGRES\"),\n\t\t\t\tCredential: \u0026bigquery.ConnectionCloudSqlCredentialArgs{\n\t\t\t\t\tUsername: user.Name,\n\t\t\t\t\tPassword: user.Password,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport com.pulumi.random.RandomPassword;\nimport com.pulumi.random.RandomPasswordArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSqlArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSqlCredentialArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"my-database-instance\")\n .databaseVersion(\"POSTGRES_11\")\n .region(\"us-central1\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .instance(instance.name())\n .name(\"db\")\n .build());\n\n var pwd = new RandomPassword(\"pwd\", RandomPasswordArgs.builder()\n .length(16)\n .special(false)\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"user\")\n .instance(instance.name())\n .password(pwd.result())\n .build());\n\n var connection = new Connection(\"connection\", ConnectionArgs.builder()\n .connectionId(\"my-connection\")\n .location(\"US\")\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .cloudSql(ConnectionCloudSqlArgs.builder()\n .instanceId(instance.connectionName())\n .database(db.name())\n .type(\"POSTGRES\")\n .credential(ConnectionCloudSqlCredentialArgs.builder()\n .username(user.name())\n .password(user.password())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: my-database-instance\n databaseVersion: POSTGRES_11\n region: us-central1\n settings:\n tier: db-f1-micro\n deletionProtection: 'true'\n db:\n type: gcp:sql:Database\n properties:\n instance: ${instance.name}\n name: db\n pwd:\n type: random:RandomPassword\n properties:\n length: 16\n special: false\n user:\n type: gcp:sql:User\n properties:\n name: user\n instance: ${instance.name}\n password: ${pwd.result}\n connection:\n type: gcp:bigquery:Connection\n properties:\n connectionId: my-connection\n location: US\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n cloudSql:\n instanceId: ${instance.connectionName}\n database: ${db.name}\n type: POSTGRES\n credential:\n username: ${user.name}\n password: ${user.password}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Aws\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n connectionId: \"my-connection\",\n location: \"aws-us-east-1\",\n friendlyName: \"👋\",\n description: \"a riveting description\",\n aws: {\n accessRole: {\n iamRoleId: \"arn:aws:iam::999999999999:role/omnirole\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nconnection = gcp.bigquery.Connection(\"connection\",\n connection_id=\"my-connection\",\n location=\"aws-us-east-1\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n aws={\n \"access_role\": {\n \"iam_role_id\": \"arn:aws:iam::999999999999:role/omnirole\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n ConnectionId = \"my-connection\",\n Location = \"aws-us-east-1\",\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n Aws = new Gcp.BigQuery.Inputs.ConnectionAwsArgs\n {\n AccessRole = new Gcp.BigQuery.Inputs.ConnectionAwsAccessRoleArgs\n {\n IamRoleId = \"arn:aws:iam::999999999999:role/omnirole\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLocation: pulumi.String(\"aws-us-east-1\"),\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tAws: \u0026bigquery.ConnectionAwsArgs{\n\t\t\t\tAccessRole: \u0026bigquery.ConnectionAwsAccessRoleArgs{\n\t\t\t\t\tIamRoleId: pulumi.String(\"arn:aws:iam::999999999999:role/omnirole\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionAwsArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionAwsAccessRoleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var connection = new Connection(\"connection\", ConnectionArgs.builder()\n .connectionId(\"my-connection\")\n .location(\"aws-us-east-1\")\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .aws(ConnectionAwsArgs.builder()\n .accessRole(ConnectionAwsAccessRoleArgs.builder()\n .iamRoleId(\"arn:aws:iam::999999999999:role/omnirole\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n connection:\n type: gcp:bigquery:Connection\n properties:\n connectionId: my-connection\n location: aws-us-east-1\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n aws:\n accessRole:\n iamRoleId: arn:aws:iam::999999999999:role/omnirole\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Azure\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n connectionId: \"my-connection\",\n location: \"azure-eastus2\",\n friendlyName: \"👋\",\n description: \"a riveting description\",\n azure: {\n customerTenantId: \"customer-tenant-id\",\n federatedApplicationClientId: \"b43eeeee-eeee-eeee-eeee-a480155501ce\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nconnection = gcp.bigquery.Connection(\"connection\",\n connection_id=\"my-connection\",\n location=\"azure-eastus2\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n azure={\n \"customer_tenant_id\": \"customer-tenant-id\",\n \"federated_application_client_id\": \"b43eeeee-eeee-eeee-eeee-a480155501ce\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n ConnectionId = \"my-connection\",\n Location = \"azure-eastus2\",\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n Azure = new Gcp.BigQuery.Inputs.ConnectionAzureArgs\n {\n CustomerTenantId = \"customer-tenant-id\",\n FederatedApplicationClientId = \"b43eeeee-eeee-eeee-eeee-a480155501ce\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLocation: pulumi.String(\"azure-eastus2\"),\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tAzure: \u0026bigquery.ConnectionAzureArgs{\n\t\t\t\tCustomerTenantId: pulumi.String(\"customer-tenant-id\"),\n\t\t\t\tFederatedApplicationClientId: pulumi.String(\"b43eeeee-eeee-eeee-eeee-a480155501ce\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionAzureArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var connection = new Connection(\"connection\", ConnectionArgs.builder()\n .connectionId(\"my-connection\")\n .location(\"azure-eastus2\")\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .azure(ConnectionAzureArgs.builder()\n .customerTenantId(\"customer-tenant-id\")\n .federatedApplicationClientId(\"b43eeeee-eeee-eeee-eeee-a480155501ce\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n connection:\n type: gcp:bigquery:Connection\n properties:\n connectionId: my-connection\n location: azure-eastus2\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n azure:\n customerTenantId: customer-tenant-id\n federatedApplicationClientId: b43eeeee-eeee-eeee-eeee-a480155501ce\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Cloudspanner\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n connectionId: \"my-connection\",\n location: \"US\",\n friendlyName: \"👋\",\n description: \"a riveting description\",\n cloudSpanner: {\n database: \"projects/project/instances/instance/databases/database\",\n databaseRole: \"database_role\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nconnection = gcp.bigquery.Connection(\"connection\",\n connection_id=\"my-connection\",\n location=\"US\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n cloud_spanner={\n \"database\": \"projects/project/instances/instance/databases/database\",\n \"database_role\": \"database_role\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n ConnectionId = \"my-connection\",\n Location = \"US\",\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n CloudSpanner = new Gcp.BigQuery.Inputs.ConnectionCloudSpannerArgs\n {\n Database = \"projects/project/instances/instance/databases/database\",\n DatabaseRole = \"database_role\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tCloudSpanner: \u0026bigquery.ConnectionCloudSpannerArgs{\n\t\t\t\tDatabase: pulumi.String(\"projects/project/instances/instance/databases/database\"),\n\t\t\t\tDatabaseRole: pulumi.String(\"database_role\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSpannerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var connection = new Connection(\"connection\", ConnectionArgs.builder()\n .connectionId(\"my-connection\")\n .location(\"US\")\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .cloudSpanner(ConnectionCloudSpannerArgs.builder()\n .database(\"projects/project/instances/instance/databases/database\")\n .databaseRole(\"database_role\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n connection:\n type: gcp:bigquery:Connection\n properties:\n connectionId: my-connection\n location: US\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n cloudSpanner:\n database: projects/project/instances/instance/databases/database\n databaseRole: database_role\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Cloudspanner Databoost\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n connectionId: \"my-connection\",\n location: \"US\",\n friendlyName: \"👋\",\n description: \"a riveting description\",\n cloudSpanner: {\n database: \"projects/project/instances/instance/databases/database\",\n useParallelism: true,\n useDataBoost: true,\n maxParallelism: 100,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nconnection = gcp.bigquery.Connection(\"connection\",\n connection_id=\"my-connection\",\n location=\"US\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n cloud_spanner={\n \"database\": \"projects/project/instances/instance/databases/database\",\n \"use_parallelism\": True,\n \"use_data_boost\": True,\n \"max_parallelism\": 100,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n ConnectionId = \"my-connection\",\n Location = \"US\",\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n CloudSpanner = new Gcp.BigQuery.Inputs.ConnectionCloudSpannerArgs\n {\n Database = \"projects/project/instances/instance/databases/database\",\n UseParallelism = true,\n UseDataBoost = true,\n MaxParallelism = 100,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tCloudSpanner: \u0026bigquery.ConnectionCloudSpannerArgs{\n\t\t\t\tDatabase: pulumi.String(\"projects/project/instances/instance/databases/database\"),\n\t\t\t\tUseParallelism: pulumi.Bool(true),\n\t\t\t\tUseDataBoost: pulumi.Bool(true),\n\t\t\t\tMaxParallelism: pulumi.Int(100),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSpannerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var connection = new Connection(\"connection\", ConnectionArgs.builder()\n .connectionId(\"my-connection\")\n .location(\"US\")\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .cloudSpanner(ConnectionCloudSpannerArgs.builder()\n .database(\"projects/project/instances/instance/databases/database\")\n .useParallelism(true)\n .useDataBoost(true)\n .maxParallelism(100)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n connection:\n type: gcp:bigquery:Connection\n properties:\n connectionId: my-connection\n location: US\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n cloudSpanner:\n database: projects/project/instances/instance/databases/database\n useParallelism: true\n useDataBoost: true\n maxParallelism: 100\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Spark\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.dataproc.Cluster(\"basic\", {\n name: \"my-connection\",\n region: \"us-central1\",\n clusterConfig: {\n softwareConfig: {\n overrideProperties: {\n \"dataproc:dataproc.allow.zero.workers\": \"true\",\n },\n },\n masterConfig: {\n numInstances: 1,\n machineType: \"e2-standard-2\",\n diskConfig: {\n bootDiskSizeGb: 35,\n },\n },\n },\n});\nconst connection = new gcp.bigquery.Connection(\"connection\", {\n connectionId: \"my-connection\",\n location: \"US\",\n friendlyName: \"👋\",\n description: \"a riveting description\",\n spark: {\n sparkHistoryServerConfig: {\n dataprocCluster: basic.id,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.dataproc.Cluster(\"basic\",\n name=\"my-connection\",\n region=\"us-central1\",\n cluster_config={\n \"software_config\": {\n \"override_properties\": {\n \"dataproc:dataproc.allow.zero.workers\": \"true\",\n },\n },\n \"master_config\": {\n \"num_instances\": 1,\n \"machine_type\": \"e2-standard-2\",\n \"disk_config\": {\n \"boot_disk_size_gb\": 35,\n },\n },\n })\nconnection = gcp.bigquery.Connection(\"connection\",\n connection_id=\"my-connection\",\n location=\"US\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n spark={\n \"spark_history_server_config\": {\n \"dataproc_cluster\": basic.id,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basic = new Gcp.Dataproc.Cluster(\"basic\", new()\n {\n Name = \"my-connection\",\n Region = \"us-central1\",\n ClusterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigArgs\n {\n SoftwareConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigSoftwareConfigArgs\n {\n OverrideProperties = \n {\n { \"dataproc:dataproc.allow.zero.workers\", \"true\" },\n },\n },\n MasterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigMasterConfigArgs\n {\n NumInstances = 1,\n MachineType = \"e2-standard-2\",\n DiskConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigMasterConfigDiskConfigArgs\n {\n BootDiskSizeGb = 35,\n },\n },\n },\n });\n\n var connection = new Gcp.BigQuery.Connection(\"connection\", new()\n {\n ConnectionId = \"my-connection\",\n Location = \"US\",\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n Spark = new Gcp.BigQuery.Inputs.ConnectionSparkArgs\n {\n SparkHistoryServerConfig = new Gcp.BigQuery.Inputs.ConnectionSparkSparkHistoryServerConfigArgs\n {\n DataprocCluster = basic.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataproc\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbasic, err := dataproc.NewCluster(ctx, \"basic\", \u0026dataproc.ClusterArgs{\n\t\t\tName: pulumi.String(\"my-connection\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tClusterConfig: \u0026dataproc.ClusterClusterConfigArgs{\n\t\t\t\tSoftwareConfig: \u0026dataproc.ClusterClusterConfigSoftwareConfigArgs{\n\t\t\t\t\tOverrideProperties: pulumi.StringMap{\n\t\t\t\t\t\t\"dataproc:dataproc.allow.zero.workers\": pulumi.String(\"true\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMasterConfig: \u0026dataproc.ClusterClusterConfigMasterConfigArgs{\n\t\t\t\t\tNumInstances: pulumi.Int(1),\n\t\t\t\t\tMachineType: pulumi.String(\"e2-standard-2\"),\n\t\t\t\t\tDiskConfig: \u0026dataproc.ClusterClusterConfigMasterConfigDiskConfigArgs{\n\t\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewConnection(ctx, \"connection\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tSpark: \u0026bigquery.ConnectionSparkArgs{\n\t\t\t\tSparkHistoryServerConfig: \u0026bigquery.ConnectionSparkSparkHistoryServerConfigArgs{\n\t\t\t\t\tDataprocCluster: basic.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataproc.Cluster;\nimport com.pulumi.gcp.dataproc.ClusterArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigSoftwareConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigMasterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigMasterConfigDiskConfigArgs;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionSparkArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionSparkSparkHistoryServerConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basic = new Cluster(\"basic\", ClusterArgs.builder()\n .name(\"my-connection\")\n .region(\"us-central1\")\n .clusterConfig(ClusterClusterConfigArgs.builder()\n .softwareConfig(ClusterClusterConfigSoftwareConfigArgs.builder()\n .overrideProperties(Map.of(\"dataproc:dataproc.allow.zero.workers\", \"true\"))\n .build())\n .masterConfig(ClusterClusterConfigMasterConfigArgs.builder()\n .numInstances(1)\n .machineType(\"e2-standard-2\")\n .diskConfig(ClusterClusterConfigMasterConfigDiskConfigArgs.builder()\n .bootDiskSizeGb(35)\n .build())\n .build())\n .build())\n .build());\n\n var connection = new Connection(\"connection\", ConnectionArgs.builder()\n .connectionId(\"my-connection\")\n .location(\"US\")\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .spark(ConnectionSparkArgs.builder()\n .sparkHistoryServerConfig(ConnectionSparkSparkHistoryServerConfigArgs.builder()\n .dataprocCluster(basic.id())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n connection:\n type: gcp:bigquery:Connection\n properties:\n connectionId: my-connection\n location: US\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n spark:\n sparkHistoryServerConfig:\n dataprocCluster: ${basic.id}\n basic:\n type: gcp:dataproc:Cluster\n properties:\n name: my-connection\n region: us-central1\n clusterConfig:\n softwareConfig:\n overrideProperties:\n dataproc:dataproc.allow.zero.workers: 'true'\n masterConfig:\n numInstances: 1\n machineType: e2-standard-2\n diskConfig:\n bootDiskSizeGb: 35\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Connection Kms\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"my-database-instance\",\n databaseVersion: \"POSTGRES_11\",\n region: \"us-central1\",\n settings: {\n tier: \"db-f1-micro\",\n },\n deletionProtection: true,\n});\nconst db = new gcp.sql.Database(\"db\", {\n instance: instance.name,\n name: \"db\",\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"user\",\n instance: instance.name,\n password: \"tf-test-my-password_77884\",\n});\nconst bqSa = gcp.bigquery.getDefaultServiceAccount({});\nconst project = gcp.organizations.getProject({});\nconst keySaUser = new gcp.projects.IAMMember(\"key_sa_user\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: bqSa.then(bqSa =\u003e `serviceAccount:${bqSa.email}`),\n});\nconst bq_connection_cmek = new gcp.bigquery.Connection(\"bq-connection-cmek\", {\n friendlyName: \"👋\",\n description: \"a riveting description\",\n location: \"US\",\n kmsKeyName: \"projects/project/locations/us-central1/keyRings/us-central1/cryptoKeys/bq-key\",\n cloudSql: {\n instanceId: instance.connectionName,\n database: db.name,\n type: \"POSTGRES\",\n credential: {\n username: user.name,\n password: user.password,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"my-database-instance\",\n database_version=\"POSTGRES_11\",\n region=\"us-central1\",\n settings={\n \"tier\": \"db-f1-micro\",\n },\n deletion_protection=True)\ndb = gcp.sql.Database(\"db\",\n instance=instance.name,\n name=\"db\")\nuser = gcp.sql.User(\"user\",\n name=\"user\",\n instance=instance.name,\n password=\"tf-test-my-password_77884\")\nbq_sa = gcp.bigquery.get_default_service_account()\nproject = gcp.organizations.get_project()\nkey_sa_user = gcp.projects.IAMMember(\"key_sa_user\",\n project=project.project_id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:{bq_sa.email}\")\nbq_connection_cmek = gcp.bigquery.Connection(\"bq-connection-cmek\",\n friendly_name=\"👋\",\n description=\"a riveting description\",\n location=\"US\",\n kms_key_name=\"projects/project/locations/us-central1/keyRings/us-central1/cryptoKeys/bq-key\",\n cloud_sql={\n \"instance_id\": instance.connection_name,\n \"database\": db.name,\n \"type\": \"POSTGRES\",\n \"credential\": {\n \"username\": user.name,\n \"password\": user.password,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"my-database-instance\",\n DatabaseVersion = \"POSTGRES_11\",\n Region = \"us-central1\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n },\n DeletionProtection = true,\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Instance = instance.Name,\n Name = \"db\",\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"user\",\n Instance = instance.Name,\n Password = \"tf-test-my-password_77884\",\n });\n\n var bqSa = Gcp.BigQuery.GetDefaultServiceAccount.Invoke();\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var keySaUser = new Gcp.Projects.IAMMember(\"key_sa_user\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:{bqSa.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Email)}\",\n });\n\n var bq_connection_cmek = new Gcp.BigQuery.Connection(\"bq-connection-cmek\", new()\n {\n FriendlyName = \"👋\",\n Description = \"a riveting description\",\n Location = \"US\",\n KmsKeyName = \"projects/project/locations/us-central1/keyRings/us-central1/cryptoKeys/bq-key\",\n CloudSql = new Gcp.BigQuery.Inputs.ConnectionCloudSqlArgs\n {\n InstanceId = instance.ConnectionName,\n Database = db.Name,\n Type = \"POSTGRES\",\n Credential = new Gcp.BigQuery.Inputs.ConnectionCloudSqlCredentialArgs\n {\n Username = user.Name,\n Password = user.Password,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"my-database-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_11\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdb, err := sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tName: pulumi.String(\"db\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tPassword: pulumi.String(\"tf-test-my-password_77884\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbqSa, err := bigquery.GetDefaultServiceAccount(ctx, \u0026bigquery.GetDefaultServiceAccountArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"key_sa_user\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:%v\", bqSa.Email),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewConnection(ctx, \"bq-connection-cmek\", \u0026bigquery.ConnectionArgs{\n\t\t\tFriendlyName: pulumi.String(\"👋\"),\n\t\t\tDescription: pulumi.String(\"a riveting description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tKmsKeyName: pulumi.String(\"projects/project/locations/us-central1/keyRings/us-central1/cryptoKeys/bq-key\"),\n\t\t\tCloudSql: \u0026bigquery.ConnectionCloudSqlArgs{\n\t\t\t\tInstanceId: instance.ConnectionName,\n\t\t\t\tDatabase: db.Name,\n\t\t\t\tType: pulumi.String(\"POSTGRES\"),\n\t\t\t\tCredential: \u0026bigquery.ConnectionCloudSqlCredentialArgs{\n\t\t\t\t\tUsername: user.Name,\n\t\t\t\t\tPassword: user.Password,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.bigquery.BigqueryFunctions;\nimport com.pulumi.gcp.bigquery.inputs.GetDefaultServiceAccountArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSqlArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudSqlCredentialArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"my-database-instance\")\n .databaseVersion(\"POSTGRES_11\")\n .region(\"us-central1\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .instance(instance.name())\n .name(\"db\")\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"user\")\n .instance(instance.name())\n .password(\"tf-test-my-password_77884\")\n .build());\n\n final var bqSa = BigqueryFunctions.getDefaultServiceAccount();\n\n final var project = OrganizationsFunctions.getProject();\n\n var keySaUser = new IAMMember(\"keySaUser\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:%s\", bqSa.applyValue(getDefaultServiceAccountResult -\u003e getDefaultServiceAccountResult.email())))\n .build());\n\n var bq_connection_cmek = new Connection(\"bq-connection-cmek\", ConnectionArgs.builder()\n .friendlyName(\"👋\")\n .description(\"a riveting description\")\n .location(\"US\")\n .kmsKeyName(\"projects/project/locations/us-central1/keyRings/us-central1/cryptoKeys/bq-key\")\n .cloudSql(ConnectionCloudSqlArgs.builder()\n .instanceId(instance.connectionName())\n .database(db.name())\n .type(\"POSTGRES\")\n .credential(ConnectionCloudSqlCredentialArgs.builder()\n .username(user.name())\n .password(user.password())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: my-database-instance\n databaseVersion: POSTGRES_11\n region: us-central1\n settings:\n tier: db-f1-micro\n deletionProtection: 'true'\n db:\n type: gcp:sql:Database\n properties:\n instance: ${instance.name}\n name: db\n user:\n type: gcp:sql:User\n properties:\n name: user\n instance: ${instance.name}\n password: tf-test-my-password_77884\n keySaUser:\n type: gcp:projects:IAMMember\n name: key_sa_user\n properties:\n project: ${project.projectId}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:${bqSa.email}\n bq-connection-cmek:\n type: gcp:bigquery:Connection\n properties:\n friendlyName: \"\\U0001F44B\"\n description: a riveting description\n location: US\n kmsKeyName: projects/project/locations/us-central1/keyRings/us-central1/cryptoKeys/bq-key\n cloudSql:\n instanceId: ${instance.connectionName}\n database: ${db.name}\n type: POSTGRES\n credential:\n username: ${user.name}\n password: ${user.password}\nvariables:\n bqSa:\n fn::invoke:\n Function: gcp:bigquery:getDefaultServiceAccount\n Arguments: {}\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nConnection can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/connections/{{connection_id}}`\n\n* `{{project}}/{{location}}/{{connection_id}}`\n\n* `{{location}}/{{connection_id}}`\n\nWhen using the `pulumi import` command, Connection can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:bigquery/connection:Connection default projects/{{project}}/locations/{{location}}/connections/{{connection_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/connection:Connection default {{project}}/{{location}}/{{connection_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/connection:Connection default {{location}}/{{connection_id}}\n```\n\n", "properties": { "aws": { "$ref": "#/types/gcp:bigquery/ConnectionAws:ConnectionAws", @@ -127872,7 +127872,7 @@ } }, "gcp:bigquery/dataTransferConfig:DataTransferConfig": { - "description": "Represents a data transfer configuration. A transfer configuration\ncontains all metadata needed to perform a data transfer.\n\n\nTo get more information about Config, see:\n\n* [API documentation](https://cloud.google.com/bigquery/docs/reference/datatransfer/rest/v1/projects.locations.transferConfigs/create)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/bigquery/docs/reference/datatransfer/rest/)\n\n\n\n## Example Usage\n\n### Bigquerydatatransfer Config Scheduled Query\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst permissions = new gcp.projects.IAMMember(\"permissions\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/iam.serviceAccountTokenCreator\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com`),\n});\nconst myDataset = new gcp.bigquery.Dataset(\"my_dataset\", {\n datasetId: \"my_dataset\",\n friendlyName: \"foo\",\n description: \"bar\",\n location: \"asia-northeast1\",\n}, {\n dependsOn: [permissions],\n});\nconst queryConfig = new gcp.bigquery.DataTransferConfig(\"query_config\", {\n displayName: \"my-query\",\n location: \"asia-northeast1\",\n dataSourceId: \"scheduled_query\",\n schedule: \"first sunday of quarter 00:00\",\n destinationDatasetId: myDataset.datasetId,\n params: {\n destination_table_name_template: \"my_table\",\n write_disposition: \"WRITE_APPEND\",\n query: \"SELECT name FROM tabl WHERE x = 'y'\",\n },\n}, {\n dependsOn: [permissions],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\npermissions = gcp.projects.IAMMember(\"permissions\",\n project=project.project_id,\n role=\"roles/iam.serviceAccountTokenCreator\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com\")\nmy_dataset = gcp.bigquery.Dataset(\"my_dataset\",\n dataset_id=\"my_dataset\",\n friendly_name=\"foo\",\n description=\"bar\",\n location=\"asia-northeast1\",\n opts = pulumi.ResourceOptions(depends_on=[permissions]))\nquery_config = gcp.bigquery.DataTransferConfig(\"query_config\",\n display_name=\"my-query\",\n location=\"asia-northeast1\",\n data_source_id=\"scheduled_query\",\n schedule=\"first sunday of quarter 00:00\",\n destination_dataset_id=my_dataset.dataset_id,\n params={\n \"destination_table_name_template\": \"my_table\",\n \"write_disposition\": \"WRITE_APPEND\",\n \"query\": \"SELECT name FROM tabl WHERE x = 'y'\",\n },\n opts = pulumi.ResourceOptions(depends_on=[permissions]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var permissions = new Gcp.Projects.IAMMember(\"permissions\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/iam.serviceAccountTokenCreator\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com\",\n });\n\n var myDataset = new Gcp.BigQuery.Dataset(\"my_dataset\", new()\n {\n DatasetId = \"my_dataset\",\n FriendlyName = \"foo\",\n Description = \"bar\",\n Location = \"asia-northeast1\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n permissions,\n },\n });\n\n var queryConfig = new Gcp.BigQuery.DataTransferConfig(\"query_config\", new()\n {\n DisplayName = \"my-query\",\n Location = \"asia-northeast1\",\n DataSourceId = \"scheduled_query\",\n Schedule = \"first sunday of quarter 00:00\",\n DestinationDatasetId = myDataset.DatasetId,\n Params = \n {\n { \"destination_table_name_template\", \"my_table\" },\n { \"write_disposition\", \"WRITE_APPEND\" },\n { \"query\", \"SELECT name FROM tabl WHERE x = 'y'\" },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n permissions,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpermissions, err := projects.NewIAMMember(ctx, \"permissions\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountTokenCreator\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyDataset, err := bigquery.NewDataset(ctx, \"my_dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"my_dataset\"),\n\t\t\tFriendlyName: pulumi.String(\"foo\"),\n\t\t\tDescription: pulumi.String(\"bar\"),\n\t\t\tLocation: pulumi.String(\"asia-northeast1\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tpermissions,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDataTransferConfig(ctx, \"query_config\", \u0026bigquery.DataTransferConfigArgs{\n\t\t\tDisplayName: pulumi.String(\"my-query\"),\n\t\t\tLocation: pulumi.String(\"asia-northeast1\"),\n\t\t\tDataSourceId: pulumi.String(\"scheduled_query\"),\n\t\t\tSchedule: pulumi.String(\"first sunday of quarter 00:00\"),\n\t\t\tDestinationDatasetId: myDataset.DatasetId,\n\t\t\tParams: pulumi.StringMap{\n\t\t\t\t\"destination_table_name_template\": pulumi.String(\"my_table\"),\n\t\t\t\t\"write_disposition\": pulumi.String(\"WRITE_APPEND\"),\n\t\t\t\t\"query\": pulumi.String(\"SELECT name FROM tabl WHERE x = 'y'\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tpermissions,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.DataTransferConfig;\nimport com.pulumi.gcp.bigquery.DataTransferConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var permissions = new IAMMember(\"permissions\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/iam.serviceAccountTokenCreator\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var myDataset = new Dataset(\"myDataset\", DatasetArgs.builder()\n .datasetId(\"my_dataset\")\n .friendlyName(\"foo\")\n .description(\"bar\")\n .location(\"asia-northeast1\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(permissions)\n .build());\n\n var queryConfig = new DataTransferConfig(\"queryConfig\", DataTransferConfigArgs.builder()\n .displayName(\"my-query\")\n .location(\"asia-northeast1\")\n .dataSourceId(\"scheduled_query\")\n .schedule(\"first sunday of quarter 00:00\")\n .destinationDatasetId(myDataset.datasetId())\n .params(Map.ofEntries(\n Map.entry(\"destination_table_name_template\", \"my_table\"),\n Map.entry(\"write_disposition\", \"WRITE_APPEND\"),\n Map.entry(\"query\", \"SELECT name FROM tabl WHERE x = 'y'\")\n ))\n .build(), CustomResourceOptions.builder()\n .dependsOn(permissions)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n permissions:\n type: gcp:projects:IAMMember\n properties:\n project: ${project.projectId}\n role: roles/iam.serviceAccountTokenCreator\n member: serviceAccount:service-${project.number}@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com\n queryConfig:\n type: gcp:bigquery:DataTransferConfig\n name: query_config\n properties:\n displayName: my-query\n location: asia-northeast1\n dataSourceId: scheduled_query\n schedule: first sunday of quarter 00:00\n destinationDatasetId: ${myDataset.datasetId}\n params:\n destination_table_name_template: my_table\n write_disposition: WRITE_APPEND\n query: SELECT name FROM tabl WHERE x = 'y'\n options:\n dependson:\n - ${permissions}\n myDataset:\n type: gcp:bigquery:Dataset\n name: my_dataset\n properties:\n datasetId: my_dataset\n friendlyName: foo\n description: bar\n location: asia-northeast1\n options:\n dependson:\n - ${permissions}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquerydatatransfer Config Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst permissions = new gcp.projects.IAMMember(\"permissions\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/iam.serviceAccountTokenCreator\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com`),\n});\nconst myDataset = new gcp.bigquery.Dataset(\"my_dataset\", {\n datasetId: \"example_dataset\",\n friendlyName: \"foo\",\n description: \"bar\",\n location: \"asia-northeast1\",\n}, {\n dependsOn: [permissions],\n});\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"example-keyring\",\n location: \"us\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"example-key\",\n keyRing: keyRing.id,\n});\nconst queryConfigCmek = new gcp.bigquery.DataTransferConfig(\"query_config_cmek\", {\n displayName: \"\",\n location: \"asia-northeast1\",\n dataSourceId: \"scheduled_query\",\n schedule: \"first sunday of quarter 00:00\",\n destinationDatasetId: myDataset.datasetId,\n params: {\n destination_table_name_template: \"my_table\",\n write_disposition: \"WRITE_APPEND\",\n query: \"SELECT name FROM tabl WHERE x = 'y'\",\n },\n encryptionConfiguration: {\n kmsKeyName: cryptoKey.id,\n },\n}, {\n dependsOn: [permissions],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\npermissions = gcp.projects.IAMMember(\"permissions\",\n project=project.project_id,\n role=\"roles/iam.serviceAccountTokenCreator\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com\")\nmy_dataset = gcp.bigquery.Dataset(\"my_dataset\",\n dataset_id=\"example_dataset\",\n friendly_name=\"foo\",\n description=\"bar\",\n location=\"asia-northeast1\",\n opts = pulumi.ResourceOptions(depends_on=[permissions]))\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"example-keyring\",\n location=\"us\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"example-key\",\n key_ring=key_ring.id)\nquery_config_cmek = gcp.bigquery.DataTransferConfig(\"query_config_cmek\",\n display_name=\"\",\n location=\"asia-northeast1\",\n data_source_id=\"scheduled_query\",\n schedule=\"first sunday of quarter 00:00\",\n destination_dataset_id=my_dataset.dataset_id,\n params={\n \"destination_table_name_template\": \"my_table\",\n \"write_disposition\": \"WRITE_APPEND\",\n \"query\": \"SELECT name FROM tabl WHERE x = 'y'\",\n },\n encryption_configuration={\n \"kms_key_name\": crypto_key.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[permissions]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var permissions = new Gcp.Projects.IAMMember(\"permissions\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/iam.serviceAccountTokenCreator\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com\",\n });\n\n var myDataset = new Gcp.BigQuery.Dataset(\"my_dataset\", new()\n {\n DatasetId = \"example_dataset\",\n FriendlyName = \"foo\",\n Description = \"bar\",\n Location = \"asia-northeast1\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n permissions,\n },\n });\n\n var keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"example-keyring\",\n Location = \"us\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"example-key\",\n KeyRing = keyRing.Id,\n });\n\n var queryConfigCmek = new Gcp.BigQuery.DataTransferConfig(\"query_config_cmek\", new()\n {\n DisplayName = \"\",\n Location = \"asia-northeast1\",\n DataSourceId = \"scheduled_query\",\n Schedule = \"first sunday of quarter 00:00\",\n DestinationDatasetId = myDataset.DatasetId,\n Params = \n {\n { \"destination_table_name_template\", \"my_table\" },\n { \"write_disposition\", \"WRITE_APPEND\" },\n { \"query\", \"SELECT name FROM tabl WHERE x = 'y'\" },\n },\n EncryptionConfiguration = new Gcp.BigQuery.Inputs.DataTransferConfigEncryptionConfigurationArgs\n {\n KmsKeyName = cryptoKey.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n permissions,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-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\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpermissions, err := projects.NewIAMMember(ctx, \"permissions\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountTokenCreator\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyDataset, err := bigquery.NewDataset(ctx, \"my_dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset\"),\n\t\t\tFriendlyName: pulumi.String(\"foo\"),\n\t\t\tDescription: pulumi.String(\"bar\"),\n\t\t\tLocation: pulumi.String(\"asia-northeast1\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tpermissions,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"example-keyring\"),\n\t\t\tLocation: pulumi.String(\"us\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"example-key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDataTransferConfig(ctx, \"query_config_cmek\", \u0026bigquery.DataTransferConfigArgs{\n\t\t\tDisplayName: pulumi.String(\"\"),\n\t\t\tLocation: pulumi.String(\"asia-northeast1\"),\n\t\t\tDataSourceId: pulumi.String(\"scheduled_query\"),\n\t\t\tSchedule: pulumi.String(\"first sunday of quarter 00:00\"),\n\t\t\tDestinationDatasetId: myDataset.DatasetId,\n\t\t\tParams: pulumi.StringMap{\n\t\t\t\t\"destination_table_name_template\": pulumi.String(\"my_table\"),\n\t\t\t\t\"write_disposition\": pulumi.String(\"WRITE_APPEND\"),\n\t\t\t\t\"query\": pulumi.String(\"SELECT name FROM tabl WHERE x = 'y'\"),\n\t\t\t},\n\t\t\tEncryptionConfiguration: \u0026bigquery.DataTransferConfigEncryptionConfigurationArgs{\n\t\t\t\tKmsKeyName: cryptoKey.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tpermissions,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.bigquery.DataTransferConfig;\nimport com.pulumi.gcp.bigquery.DataTransferConfigArgs;\nimport com.pulumi.gcp.bigquery.inputs.DataTransferConfigEncryptionConfigurationArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var permissions = new IAMMember(\"permissions\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/iam.serviceAccountTokenCreator\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var myDataset = new Dataset(\"myDataset\", DatasetArgs.builder()\n .datasetId(\"example_dataset\")\n .friendlyName(\"foo\")\n .description(\"bar\")\n .location(\"asia-northeast1\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(permissions)\n .build());\n\n var keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"example-keyring\")\n .location(\"us\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"example-key\")\n .keyRing(keyRing.id())\n .build());\n\n var queryConfigCmek = new DataTransferConfig(\"queryConfigCmek\", DataTransferConfigArgs.builder()\n .displayName(\"\")\n .location(\"asia-northeast1\")\n .dataSourceId(\"scheduled_query\")\n .schedule(\"first sunday of quarter 00:00\")\n .destinationDatasetId(myDataset.datasetId())\n .params(Map.ofEntries(\n Map.entry(\"destination_table_name_template\", \"my_table\"),\n Map.entry(\"write_disposition\", \"WRITE_APPEND\"),\n Map.entry(\"query\", \"SELECT name FROM tabl WHERE x = 'y'\")\n ))\n .encryptionConfiguration(DataTransferConfigEncryptionConfigurationArgs.builder()\n .kmsKeyName(cryptoKey.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(permissions)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n permissions:\n type: gcp:projects:IAMMember\n properties:\n project: ${project.projectId}\n role: roles/iam.serviceAccountTokenCreator\n member: serviceAccount:service-${project.number}@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com\n queryConfigCmek:\n type: gcp:bigquery:DataTransferConfig\n name: query_config_cmek\n properties:\n displayName:\n location: asia-northeast1\n dataSourceId: scheduled_query\n schedule: first sunday of quarter 00:00\n destinationDatasetId: ${myDataset.datasetId}\n params:\n destination_table_name_template: my_table\n write_disposition: WRITE_APPEND\n query: SELECT name FROM tabl WHERE x = 'y'\n encryptionConfiguration:\n kmsKeyName: ${cryptoKey.id}\n options:\n dependson:\n - ${permissions}\n myDataset:\n type: gcp:bigquery:Dataset\n name: my_dataset\n properties:\n datasetId: example_dataset\n friendlyName: foo\n description: bar\n location: asia-northeast1\n options:\n dependson:\n - ${permissions}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: example-key\n keyRing: ${keyRing.id}\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: example-keyring\n location: us\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquerydatatransfer Config Salesforce\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst myDataset = new gcp.bigquery.Dataset(\"my_dataset\", {\n datasetId: \"my_dataset\",\n description: \"My dataset\",\n location: \"asia-northeast1\",\n});\nconst salesforceConfig = new gcp.bigquery.DataTransferConfig(\"salesforce_config\", {\n displayName: \"my-salesforce-config\",\n location: \"asia-northeast1\",\n dataSourceId: \"salesforce\",\n schedule: \"first sunday of quarter 00:00\",\n destinationDatasetId: myDataset.datasetId,\n params: {\n \"connector.authentication.oauth.clientId\": \"client-id\",\n \"connector.authentication.oauth.clientSecret\": \"client-secret\",\n \"connector.authentication.oauth.myDomain\": \"MyDomainName\",\n assets: \"[\\\"asset-a\\\",\\\"asset-b\\\"]\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nmy_dataset = gcp.bigquery.Dataset(\"my_dataset\",\n dataset_id=\"my_dataset\",\n description=\"My dataset\",\n location=\"asia-northeast1\")\nsalesforce_config = gcp.bigquery.DataTransferConfig(\"salesforce_config\",\n display_name=\"my-salesforce-config\",\n location=\"asia-northeast1\",\n data_source_id=\"salesforce\",\n schedule=\"first sunday of quarter 00:00\",\n destination_dataset_id=my_dataset.dataset_id,\n params={\n \"connector.authentication.oauth.clientId\": \"client-id\",\n \"connector.authentication.oauth.clientSecret\": \"client-secret\",\n \"connector.authentication.oauth.myDomain\": \"MyDomainName\",\n \"assets\": \"[\\\"asset-a\\\",\\\"asset-b\\\"]\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var myDataset = new Gcp.BigQuery.Dataset(\"my_dataset\", new()\n {\n DatasetId = \"my_dataset\",\n Description = \"My dataset\",\n Location = \"asia-northeast1\",\n });\n\n var salesforceConfig = new Gcp.BigQuery.DataTransferConfig(\"salesforce_config\", new()\n {\n DisplayName = \"my-salesforce-config\",\n Location = \"asia-northeast1\",\n DataSourceId = \"salesforce\",\n Schedule = \"first sunday of quarter 00:00\",\n DestinationDatasetId = myDataset.DatasetId,\n Params = \n {\n { \"connector.authentication.oauth.clientId\", \"client-id\" },\n { \"connector.authentication.oauth.clientSecret\", \"client-secret\" },\n { \"connector.authentication.oauth.myDomain\", \"MyDomainName\" },\n { \"assets\", \"[\\\"asset-a\\\",\\\"asset-b\\\"]\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyDataset, err := bigquery.NewDataset(ctx, \"my_dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"my_dataset\"),\n\t\t\tDescription: pulumi.String(\"My dataset\"),\n\t\t\tLocation: pulumi.String(\"asia-northeast1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDataTransferConfig(ctx, \"salesforce_config\", \u0026bigquery.DataTransferConfigArgs{\n\t\t\tDisplayName: pulumi.String(\"my-salesforce-config\"),\n\t\t\tLocation: pulumi.String(\"asia-northeast1\"),\n\t\t\tDataSourceId: pulumi.String(\"salesforce\"),\n\t\t\tSchedule: pulumi.String(\"first sunday of quarter 00:00\"),\n\t\t\tDestinationDatasetId: myDataset.DatasetId,\n\t\t\tParams: pulumi.StringMap{\n\t\t\t\t\"connector.authentication.oauth.clientId\": pulumi.String(\"client-id\"),\n\t\t\t\t\"connector.authentication.oauth.clientSecret\": pulumi.String(\"client-secret\"),\n\t\t\t\t\"connector.authentication.oauth.myDomain\": pulumi.String(\"MyDomainName\"),\n\t\t\t\t\"assets\": pulumi.String(\"[\\\"asset-a\\\",\\\"asset-b\\\"]\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.DataTransferConfig;\nimport com.pulumi.gcp.bigquery.DataTransferConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var myDataset = new Dataset(\"myDataset\", DatasetArgs.builder()\n .datasetId(\"my_dataset\")\n .description(\"My dataset\")\n .location(\"asia-northeast1\")\n .build());\n\n var salesforceConfig = new DataTransferConfig(\"salesforceConfig\", DataTransferConfigArgs.builder()\n .displayName(\"my-salesforce-config\")\n .location(\"asia-northeast1\")\n .dataSourceId(\"salesforce\")\n .schedule(\"first sunday of quarter 00:00\")\n .destinationDatasetId(myDataset.datasetId())\n .params(Map.ofEntries(\n Map.entry(\"connector.authentication.oauth.clientId\", \"client-id\"),\n Map.entry(\"connector.authentication.oauth.clientSecret\", \"client-secret\"),\n Map.entry(\"connector.authentication.oauth.myDomain\", \"MyDomainName\"),\n Map.entry(\"assets\", \"[\\\"asset-a\\\",\\\"asset-b\\\"]\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myDataset:\n type: gcp:bigquery:Dataset\n name: my_dataset\n properties:\n datasetId: my_dataset\n description: My dataset\n location: asia-northeast1\n salesforceConfig:\n type: gcp:bigquery:DataTransferConfig\n name: salesforce_config\n properties:\n displayName: my-salesforce-config\n location: asia-northeast1\n dataSourceId: salesforce\n schedule: first sunday of quarter 00:00\n destinationDatasetId: ${myDataset.datasetId}\n params:\n connector.authentication.oauth.clientId: client-id\n connector.authentication.oauth.clientSecret: client-secret\n connector.authentication.oauth.myDomain: MyDomainName\n assets: '[\"asset-a\",\"asset-b\"]'\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nConfig can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Config can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:bigquery/dataTransferConfig:DataTransferConfig default {{name}}\n```\n\n", + "description": "Represents a data transfer configuration. A transfer configuration\ncontains all metadata needed to perform a data transfer.\n\n\nTo get more information about Config, see:\n\n* [API documentation](https://cloud.google.com/bigquery/docs/reference/datatransfer/rest/v1/projects.locations.transferConfigs/create)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/bigquery/docs/reference/datatransfer/rest/)\n\n\n\n## Example Usage\n\n### Bigquerydatatransfer Config Scheduled Query\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst permissions = new gcp.projects.IAMMember(\"permissions\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/iam.serviceAccountTokenCreator\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com`),\n});\nconst myDataset = new gcp.bigquery.Dataset(\"my_dataset\", {\n datasetId: \"my_dataset\",\n friendlyName: \"foo\",\n description: \"bar\",\n location: \"asia-northeast1\",\n}, {\n dependsOn: [permissions],\n});\nconst queryConfig = new gcp.bigquery.DataTransferConfig(\"query_config\", {\n displayName: \"my-query\",\n location: \"asia-northeast1\",\n dataSourceId: \"scheduled_query\",\n schedule: \"first sunday of quarter 00:00\",\n destinationDatasetId: myDataset.datasetId,\n params: {\n destination_table_name_template: \"my_table\",\n write_disposition: \"WRITE_APPEND\",\n query: \"SELECT name FROM tabl WHERE x = 'y'\",\n },\n}, {\n dependsOn: [permissions],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\npermissions = gcp.projects.IAMMember(\"permissions\",\n project=project.project_id,\n role=\"roles/iam.serviceAccountTokenCreator\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com\")\nmy_dataset = gcp.bigquery.Dataset(\"my_dataset\",\n dataset_id=\"my_dataset\",\n friendly_name=\"foo\",\n description=\"bar\",\n location=\"asia-northeast1\",\n opts = pulumi.ResourceOptions(depends_on=[permissions]))\nquery_config = gcp.bigquery.DataTransferConfig(\"query_config\",\n display_name=\"my-query\",\n location=\"asia-northeast1\",\n data_source_id=\"scheduled_query\",\n schedule=\"first sunday of quarter 00:00\",\n destination_dataset_id=my_dataset.dataset_id,\n params={\n \"destination_table_name_template\": \"my_table\",\n \"write_disposition\": \"WRITE_APPEND\",\n \"query\": \"SELECT name FROM tabl WHERE x = 'y'\",\n },\n opts = pulumi.ResourceOptions(depends_on=[permissions]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var permissions = new Gcp.Projects.IAMMember(\"permissions\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/iam.serviceAccountTokenCreator\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com\",\n });\n\n var myDataset = new Gcp.BigQuery.Dataset(\"my_dataset\", new()\n {\n DatasetId = \"my_dataset\",\n FriendlyName = \"foo\",\n Description = \"bar\",\n Location = \"asia-northeast1\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n permissions,\n },\n });\n\n var queryConfig = new Gcp.BigQuery.DataTransferConfig(\"query_config\", new()\n {\n DisplayName = \"my-query\",\n Location = \"asia-northeast1\",\n DataSourceId = \"scheduled_query\",\n Schedule = \"first sunday of quarter 00:00\",\n DestinationDatasetId = myDataset.DatasetId,\n Params = \n {\n { \"destination_table_name_template\", \"my_table\" },\n { \"write_disposition\", \"WRITE_APPEND\" },\n { \"query\", \"SELECT name FROM tabl WHERE x = 'y'\" },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n permissions,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpermissions, err := projects.NewIAMMember(ctx, \"permissions\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountTokenCreator\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyDataset, err := bigquery.NewDataset(ctx, \"my_dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"my_dataset\"),\n\t\t\tFriendlyName: pulumi.String(\"foo\"),\n\t\t\tDescription: pulumi.String(\"bar\"),\n\t\t\tLocation: pulumi.String(\"asia-northeast1\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tpermissions,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDataTransferConfig(ctx, \"query_config\", \u0026bigquery.DataTransferConfigArgs{\n\t\t\tDisplayName: pulumi.String(\"my-query\"),\n\t\t\tLocation: pulumi.String(\"asia-northeast1\"),\n\t\t\tDataSourceId: pulumi.String(\"scheduled_query\"),\n\t\t\tSchedule: pulumi.String(\"first sunday of quarter 00:00\"),\n\t\t\tDestinationDatasetId: myDataset.DatasetId,\n\t\t\tParams: pulumi.StringMap{\n\t\t\t\t\"destination_table_name_template\": pulumi.String(\"my_table\"),\n\t\t\t\t\"write_disposition\": pulumi.String(\"WRITE_APPEND\"),\n\t\t\t\t\"query\": pulumi.String(\"SELECT name FROM tabl WHERE x = 'y'\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tpermissions,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.DataTransferConfig;\nimport com.pulumi.gcp.bigquery.DataTransferConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var permissions = new IAMMember(\"permissions\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/iam.serviceAccountTokenCreator\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var myDataset = new Dataset(\"myDataset\", DatasetArgs.builder()\n .datasetId(\"my_dataset\")\n .friendlyName(\"foo\")\n .description(\"bar\")\n .location(\"asia-northeast1\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(permissions)\n .build());\n\n var queryConfig = new DataTransferConfig(\"queryConfig\", DataTransferConfigArgs.builder()\n .displayName(\"my-query\")\n .location(\"asia-northeast1\")\n .dataSourceId(\"scheduled_query\")\n .schedule(\"first sunday of quarter 00:00\")\n .destinationDatasetId(myDataset.datasetId())\n .params(Map.ofEntries(\n Map.entry(\"destination_table_name_template\", \"my_table\"),\n Map.entry(\"write_disposition\", \"WRITE_APPEND\"),\n Map.entry(\"query\", \"SELECT name FROM tabl WHERE x = 'y'\")\n ))\n .build(), CustomResourceOptions.builder()\n .dependsOn(permissions)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n permissions:\n type: gcp:projects:IAMMember\n properties:\n project: ${project.projectId}\n role: roles/iam.serviceAccountTokenCreator\n member: serviceAccount:service-${project.number}@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com\n queryConfig:\n type: gcp:bigquery:DataTransferConfig\n name: query_config\n properties:\n displayName: my-query\n location: asia-northeast1\n dataSourceId: scheduled_query\n schedule: first sunday of quarter 00:00\n destinationDatasetId: ${myDataset.datasetId}\n params:\n destination_table_name_template: my_table\n write_disposition: WRITE_APPEND\n query: SELECT name FROM tabl WHERE x = 'y'\n options:\n dependson:\n - ${permissions}\n myDataset:\n type: gcp:bigquery:Dataset\n name: my_dataset\n properties:\n datasetId: my_dataset\n friendlyName: foo\n description: bar\n location: asia-northeast1\n options:\n dependson:\n - ${permissions}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquerydatatransfer Config Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst permissions = new gcp.projects.IAMMember(\"permissions\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/iam.serviceAccountTokenCreator\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com`),\n});\nconst myDataset = new gcp.bigquery.Dataset(\"my_dataset\", {\n datasetId: \"example_dataset\",\n friendlyName: \"foo\",\n description: \"bar\",\n location: \"asia-northeast1\",\n}, {\n dependsOn: [permissions],\n});\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"example-keyring\",\n location: \"us\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"example-key\",\n keyRing: keyRing.id,\n});\nconst queryConfigCmek = new gcp.bigquery.DataTransferConfig(\"query_config_cmek\", {\n displayName: \"\",\n location: \"asia-northeast1\",\n dataSourceId: \"scheduled_query\",\n schedule: \"first sunday of quarter 00:00\",\n destinationDatasetId: myDataset.datasetId,\n params: {\n destination_table_name_template: \"my_table\",\n write_disposition: \"WRITE_APPEND\",\n query: \"SELECT name FROM tabl WHERE x = 'y'\",\n },\n encryptionConfiguration: {\n kmsKeyName: cryptoKey.id,\n },\n}, {\n dependsOn: [permissions],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\npermissions = gcp.projects.IAMMember(\"permissions\",\n project=project.project_id,\n role=\"roles/iam.serviceAccountTokenCreator\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com\")\nmy_dataset = gcp.bigquery.Dataset(\"my_dataset\",\n dataset_id=\"example_dataset\",\n friendly_name=\"foo\",\n description=\"bar\",\n location=\"asia-northeast1\",\n opts = pulumi.ResourceOptions(depends_on=[permissions]))\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"example-keyring\",\n location=\"us\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"example-key\",\n key_ring=key_ring.id)\nquery_config_cmek = gcp.bigquery.DataTransferConfig(\"query_config_cmek\",\n display_name=\"\",\n location=\"asia-northeast1\",\n data_source_id=\"scheduled_query\",\n schedule=\"first sunday of quarter 00:00\",\n destination_dataset_id=my_dataset.dataset_id,\n params={\n \"destination_table_name_template\": \"my_table\",\n \"write_disposition\": \"WRITE_APPEND\",\n \"query\": \"SELECT name FROM tabl WHERE x = 'y'\",\n },\n encryption_configuration={\n \"kms_key_name\": crypto_key.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[permissions]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var permissions = new Gcp.Projects.IAMMember(\"permissions\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/iam.serviceAccountTokenCreator\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com\",\n });\n\n var myDataset = new Gcp.BigQuery.Dataset(\"my_dataset\", new()\n {\n DatasetId = \"example_dataset\",\n FriendlyName = \"foo\",\n Description = \"bar\",\n Location = \"asia-northeast1\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n permissions,\n },\n });\n\n var keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"example-keyring\",\n Location = \"us\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"example-key\",\n KeyRing = keyRing.Id,\n });\n\n var queryConfigCmek = new Gcp.BigQuery.DataTransferConfig(\"query_config_cmek\", new()\n {\n DisplayName = \"\",\n Location = \"asia-northeast1\",\n DataSourceId = \"scheduled_query\",\n Schedule = \"first sunday of quarter 00:00\",\n DestinationDatasetId = myDataset.DatasetId,\n Params = \n {\n { \"destination_table_name_template\", \"my_table\" },\n { \"write_disposition\", \"WRITE_APPEND\" },\n { \"query\", \"SELECT name FROM tabl WHERE x = 'y'\" },\n },\n EncryptionConfiguration = new Gcp.BigQuery.Inputs.DataTransferConfigEncryptionConfigurationArgs\n {\n KmsKeyName = cryptoKey.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n permissions,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-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\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpermissions, err := projects.NewIAMMember(ctx, \"permissions\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountTokenCreator\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyDataset, err := bigquery.NewDataset(ctx, \"my_dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset\"),\n\t\t\tFriendlyName: pulumi.String(\"foo\"),\n\t\t\tDescription: pulumi.String(\"bar\"),\n\t\t\tLocation: pulumi.String(\"asia-northeast1\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tpermissions,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"example-keyring\"),\n\t\t\tLocation: pulumi.String(\"us\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"example-key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDataTransferConfig(ctx, \"query_config_cmek\", \u0026bigquery.DataTransferConfigArgs{\n\t\t\tDisplayName: pulumi.String(\"\"),\n\t\t\tLocation: pulumi.String(\"asia-northeast1\"),\n\t\t\tDataSourceId: pulumi.String(\"scheduled_query\"),\n\t\t\tSchedule: pulumi.String(\"first sunday of quarter 00:00\"),\n\t\t\tDestinationDatasetId: myDataset.DatasetId,\n\t\t\tParams: pulumi.StringMap{\n\t\t\t\t\"destination_table_name_template\": pulumi.String(\"my_table\"),\n\t\t\t\t\"write_disposition\": pulumi.String(\"WRITE_APPEND\"),\n\t\t\t\t\"query\": pulumi.String(\"SELECT name FROM tabl WHERE x = 'y'\"),\n\t\t\t},\n\t\t\tEncryptionConfiguration: \u0026bigquery.DataTransferConfigEncryptionConfigurationArgs{\n\t\t\t\tKmsKeyName: cryptoKey.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tpermissions,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.bigquery.DataTransferConfig;\nimport com.pulumi.gcp.bigquery.DataTransferConfigArgs;\nimport com.pulumi.gcp.bigquery.inputs.DataTransferConfigEncryptionConfigurationArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var permissions = new IAMMember(\"permissions\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/iam.serviceAccountTokenCreator\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var myDataset = new Dataset(\"myDataset\", DatasetArgs.builder()\n .datasetId(\"example_dataset\")\n .friendlyName(\"foo\")\n .description(\"bar\")\n .location(\"asia-northeast1\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(permissions)\n .build());\n\n var keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"example-keyring\")\n .location(\"us\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"example-key\")\n .keyRing(keyRing.id())\n .build());\n\n var queryConfigCmek = new DataTransferConfig(\"queryConfigCmek\", DataTransferConfigArgs.builder()\n .displayName(\"\")\n .location(\"asia-northeast1\")\n .dataSourceId(\"scheduled_query\")\n .schedule(\"first sunday of quarter 00:00\")\n .destinationDatasetId(myDataset.datasetId())\n .params(Map.ofEntries(\n Map.entry(\"destination_table_name_template\", \"my_table\"),\n Map.entry(\"write_disposition\", \"WRITE_APPEND\"),\n Map.entry(\"query\", \"SELECT name FROM tabl WHERE x = 'y'\")\n ))\n .encryptionConfiguration(DataTransferConfigEncryptionConfigurationArgs.builder()\n .kmsKeyName(cryptoKey.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(permissions)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n permissions:\n type: gcp:projects:IAMMember\n properties:\n project: ${project.projectId}\n role: roles/iam.serviceAccountTokenCreator\n member: serviceAccount:service-${project.number}@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com\n queryConfigCmek:\n type: gcp:bigquery:DataTransferConfig\n name: query_config_cmek\n properties:\n displayName:\n location: asia-northeast1\n dataSourceId: scheduled_query\n schedule: first sunday of quarter 00:00\n destinationDatasetId: ${myDataset.datasetId}\n params:\n destination_table_name_template: my_table\n write_disposition: WRITE_APPEND\n query: SELECT name FROM tabl WHERE x = 'y'\n encryptionConfiguration:\n kmsKeyName: ${cryptoKey.id}\n options:\n dependson:\n - ${permissions}\n myDataset:\n type: gcp:bigquery:Dataset\n name: my_dataset\n properties:\n datasetId: example_dataset\n friendlyName: foo\n description: bar\n location: asia-northeast1\n options:\n dependson:\n - ${permissions}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: example-key\n keyRing: ${keyRing.id}\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: example-keyring\n location: us\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquerydatatransfer Config Salesforce\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst myDataset = new gcp.bigquery.Dataset(\"my_dataset\", {\n datasetId: \"my_dataset\",\n description: \"My dataset\",\n location: \"asia-northeast1\",\n});\nconst salesforceConfig = new gcp.bigquery.DataTransferConfig(\"salesforce_config\", {\n displayName: \"my-salesforce-config\",\n location: \"asia-northeast1\",\n dataSourceId: \"salesforce\",\n schedule: \"first sunday of quarter 00:00\",\n destinationDatasetId: myDataset.datasetId,\n params: {\n \"connector.authentication.oauth.clientId\": \"client-id\",\n \"connector.authentication.oauth.clientSecret\": \"client-secret\",\n \"connector.authentication.oauth.myDomain\": \"MyDomainName\",\n assets: \"[\\\"asset-a\\\",\\\"asset-b\\\"]\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nmy_dataset = gcp.bigquery.Dataset(\"my_dataset\",\n dataset_id=\"my_dataset\",\n description=\"My dataset\",\n location=\"asia-northeast1\")\nsalesforce_config = gcp.bigquery.DataTransferConfig(\"salesforce_config\",\n display_name=\"my-salesforce-config\",\n location=\"asia-northeast1\",\n data_source_id=\"salesforce\",\n schedule=\"first sunday of quarter 00:00\",\n destination_dataset_id=my_dataset.dataset_id,\n params={\n \"connector.authentication.oauth.clientId\": \"client-id\",\n \"connector.authentication.oauth.clientSecret\": \"client-secret\",\n \"connector.authentication.oauth.myDomain\": \"MyDomainName\",\n \"assets\": \"[\\\"asset-a\\\",\\\"asset-b\\\"]\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var myDataset = new Gcp.BigQuery.Dataset(\"my_dataset\", new()\n {\n DatasetId = \"my_dataset\",\n Description = \"My dataset\",\n Location = \"asia-northeast1\",\n });\n\n var salesforceConfig = new Gcp.BigQuery.DataTransferConfig(\"salesforce_config\", new()\n {\n DisplayName = \"my-salesforce-config\",\n Location = \"asia-northeast1\",\n DataSourceId = \"salesforce\",\n Schedule = \"first sunday of quarter 00:00\",\n DestinationDatasetId = myDataset.DatasetId,\n Params = \n {\n { \"connector.authentication.oauth.clientId\", \"client-id\" },\n { \"connector.authentication.oauth.clientSecret\", \"client-secret\" },\n { \"connector.authentication.oauth.myDomain\", \"MyDomainName\" },\n { \"assets\", \"[\\\"asset-a\\\",\\\"asset-b\\\"]\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyDataset, err := bigquery.NewDataset(ctx, \"my_dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"my_dataset\"),\n\t\t\tDescription: pulumi.String(\"My dataset\"),\n\t\t\tLocation: pulumi.String(\"asia-northeast1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDataTransferConfig(ctx, \"salesforce_config\", \u0026bigquery.DataTransferConfigArgs{\n\t\t\tDisplayName: pulumi.String(\"my-salesforce-config\"),\n\t\t\tLocation: pulumi.String(\"asia-northeast1\"),\n\t\t\tDataSourceId: pulumi.String(\"salesforce\"),\n\t\t\tSchedule: pulumi.String(\"first sunday of quarter 00:00\"),\n\t\t\tDestinationDatasetId: myDataset.DatasetId,\n\t\t\tParams: pulumi.StringMap{\n\t\t\t\t\"connector.authentication.oauth.clientId\": pulumi.String(\"client-id\"),\n\t\t\t\t\"connector.authentication.oauth.clientSecret\": pulumi.String(\"client-secret\"),\n\t\t\t\t\"connector.authentication.oauth.myDomain\": pulumi.String(\"MyDomainName\"),\n\t\t\t\t\"assets\": pulumi.String(\"[\\\"asset-a\\\",\\\"asset-b\\\"]\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.DataTransferConfig;\nimport com.pulumi.gcp.bigquery.DataTransferConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var myDataset = new Dataset(\"myDataset\", DatasetArgs.builder()\n .datasetId(\"my_dataset\")\n .description(\"My dataset\")\n .location(\"asia-northeast1\")\n .build());\n\n var salesforceConfig = new DataTransferConfig(\"salesforceConfig\", DataTransferConfigArgs.builder()\n .displayName(\"my-salesforce-config\")\n .location(\"asia-northeast1\")\n .dataSourceId(\"salesforce\")\n .schedule(\"first sunday of quarter 00:00\")\n .destinationDatasetId(myDataset.datasetId())\n .params(Map.ofEntries(\n Map.entry(\"connector.authentication.oauth.clientId\", \"client-id\"),\n Map.entry(\"connector.authentication.oauth.clientSecret\", \"client-secret\"),\n Map.entry(\"connector.authentication.oauth.myDomain\", \"MyDomainName\"),\n Map.entry(\"assets\", \"[\\\"asset-a\\\",\\\"asset-b\\\"]\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myDataset:\n type: gcp:bigquery:Dataset\n name: my_dataset\n properties:\n datasetId: my_dataset\n description: My dataset\n location: asia-northeast1\n salesforceConfig:\n type: gcp:bigquery:DataTransferConfig\n name: salesforce_config\n properties:\n displayName: my-salesforce-config\n location: asia-northeast1\n dataSourceId: salesforce\n schedule: first sunday of quarter 00:00\n destinationDatasetId: ${myDataset.datasetId}\n params:\n connector.authentication.oauth.clientId: client-id\n connector.authentication.oauth.clientSecret: client-secret\n connector.authentication.oauth.myDomain: MyDomainName\n assets: '[\"asset-a\",\"asset-b\"]'\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nConfig can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Config can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:bigquery/dataTransferConfig:DataTransferConfig default {{name}}\n```\n\n", "properties": { "dataRefreshWindowDays": { "type": "integer", @@ -128100,7 +128100,7 @@ } }, "gcp:bigquery/dataset:Dataset": { - "description": "## Example Usage\n\n### Bigquery Dataset Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bqowner = new gcp.serviceaccount.Account(\"bqowner\", {accountId: \"bqowner\"});\nconst dataset = new gcp.bigquery.Dataset(\"dataset\", {\n datasetId: \"example_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"EU\",\n defaultTableExpirationMs: 3600000,\n labels: {\n env: \"default\",\n },\n accesses: [\n {\n role: \"OWNER\",\n userByEmail: bqowner.email,\n },\n {\n role: \"READER\",\n domain: \"hashicorp.com\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbqowner = gcp.serviceaccount.Account(\"bqowner\", account_id=\"bqowner\")\ndataset = gcp.bigquery.Dataset(\"dataset\",\n dataset_id=\"example_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"EU\",\n default_table_expiration_ms=3600000,\n labels={\n \"env\": \"default\",\n },\n accesses=[\n {\n \"role\": \"OWNER\",\n \"user_by_email\": bqowner.email,\n },\n {\n \"role\": \"READER\",\n \"domain\": \"hashicorp.com\",\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bqowner = new Gcp.ServiceAccount.Account(\"bqowner\", new()\n {\n AccountId = \"bqowner\",\n });\n\n var dataset = new Gcp.BigQuery.Dataset(\"dataset\", new()\n {\n DatasetId = \"example_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"EU\",\n DefaultTableExpirationMs = 3600000,\n Labels = \n {\n { \"env\", \"default\" },\n },\n Accesses = new[]\n {\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Role = \"OWNER\",\n UserByEmail = bqowner.Email,\n },\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Role = \"READER\",\n Domain = \"hashicorp.com\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbqowner, err := serviceaccount.NewAccount(ctx, \"bqowner\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"bqowner\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDataset(ctx, \"dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"EU\"),\n\t\t\tDefaultTableExpirationMs: pulumi.Int(3600000),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"default\"),\n\t\t\t},\n\t\t\tAccesses: bigquery.DatasetAccessTypeArray{\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRole: pulumi.String(\"OWNER\"),\n\t\t\t\t\tUserByEmail: bqowner.Email,\n\t\t\t\t},\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRole: pulumi.String(\"READER\"),\n\t\t\t\t\tDomain: pulumi.String(\"hashicorp.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bqowner = new Account(\"bqowner\", AccountArgs.builder()\n .accountId(\"bqowner\")\n .build());\n\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder()\n .datasetId(\"example_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"EU\")\n .defaultTableExpirationMs(3600000)\n .labels(Map.of(\"env\", \"default\"))\n .accesses( \n DatasetAccessArgs.builder()\n .role(\"OWNER\")\n .userByEmail(bqowner.email())\n .build(),\n DatasetAccessArgs.builder()\n .role(\"READER\")\n .domain(\"hashicorp.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dataset:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n friendlyName: test\n description: This is a test description\n location: EU\n defaultTableExpirationMs: 3.6e+06\n labels:\n env: default\n accesses:\n - role: OWNER\n userByEmail: ${bqowner.email}\n - role: READER\n domain: hashicorp.com\n bqowner:\n type: gcp:serviceaccount:Account\n properties:\n accountId: bqowner\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Dataset Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"example-keyring\",\n location: \"us\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"example-key\",\n keyRing: keyRing.id,\n});\nconst dataset = new gcp.bigquery.Dataset(\"dataset\", {\n datasetId: \"example_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n defaultTableExpirationMs: 3600000,\n defaultEncryptionConfiguration: {\n kmsKeyName: cryptoKey.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"example-keyring\",\n location=\"us\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"example-key\",\n key_ring=key_ring.id)\ndataset = gcp.bigquery.Dataset(\"dataset\",\n dataset_id=\"example_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\",\n default_table_expiration_ms=3600000,\n default_encryption_configuration={\n \"kms_key_name\": crypto_key.id,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"example-keyring\",\n Location = \"us\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"example-key\",\n KeyRing = keyRing.Id,\n });\n\n var dataset = new Gcp.BigQuery.Dataset(\"dataset\", new()\n {\n DatasetId = \"example_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n DefaultTableExpirationMs = 3600000,\n DefaultEncryptionConfiguration = new Gcp.BigQuery.Inputs.DatasetDefaultEncryptionConfigurationArgs\n {\n KmsKeyName = cryptoKey.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"example-keyring\"),\n\t\t\tLocation: pulumi.String(\"us\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"example-key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDataset(ctx, \"dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tDefaultTableExpirationMs: pulumi.Int(3600000),\n\t\t\tDefaultEncryptionConfiguration: \u0026bigquery.DatasetDefaultEncryptionConfigurationArgs{\n\t\t\t\tKmsKeyName: cryptoKey.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetDefaultEncryptionConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"example-keyring\")\n .location(\"us\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"example-key\")\n .keyRing(keyRing.id())\n .build());\n\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder()\n .datasetId(\"example_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .defaultTableExpirationMs(3600000)\n .defaultEncryptionConfiguration(DatasetDefaultEncryptionConfigurationArgs.builder()\n .kmsKeyName(cryptoKey.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dataset:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n friendlyName: test\n description: This is a test description\n location: US\n defaultTableExpirationMs: 3.6e+06\n defaultEncryptionConfiguration:\n kmsKeyName: ${cryptoKey.id}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: example-key\n keyRing: ${keyRing.id}\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: example-keyring\n location: us\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Dataset Authorized Dataset\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bqowner = new gcp.serviceaccount.Account(\"bqowner\", {accountId: \"bqowner\"});\nconst _public = new gcp.bigquery.Dataset(\"public\", {\n datasetId: \"public\",\n friendlyName: \"test\",\n description: \"This dataset is public\",\n location: \"EU\",\n defaultTableExpirationMs: 3600000,\n labels: {\n env: \"default\",\n },\n accesses: [\n {\n role: \"OWNER\",\n userByEmail: bqowner.email,\n },\n {\n role: \"READER\",\n domain: \"hashicorp.com\",\n },\n ],\n});\nconst dataset = new gcp.bigquery.Dataset(\"dataset\", {\n datasetId: \"private\",\n friendlyName: \"test\",\n description: \"This dataset is private\",\n location: \"EU\",\n defaultTableExpirationMs: 3600000,\n labels: {\n env: \"default\",\n },\n accesses: [\n {\n role: \"OWNER\",\n userByEmail: bqowner.email,\n },\n {\n role: \"READER\",\n domain: \"hashicorp.com\",\n },\n {\n dataset: {\n dataset: {\n projectId: _public.project,\n datasetId: _public.datasetId,\n },\n targetTypes: [\"VIEWS\"],\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbqowner = gcp.serviceaccount.Account(\"bqowner\", account_id=\"bqowner\")\npublic = gcp.bigquery.Dataset(\"public\",\n dataset_id=\"public\",\n friendly_name=\"test\",\n description=\"This dataset is public\",\n location=\"EU\",\n default_table_expiration_ms=3600000,\n labels={\n \"env\": \"default\",\n },\n accesses=[\n {\n \"role\": \"OWNER\",\n \"user_by_email\": bqowner.email,\n },\n {\n \"role\": \"READER\",\n \"domain\": \"hashicorp.com\",\n },\n ])\ndataset = gcp.bigquery.Dataset(\"dataset\",\n dataset_id=\"private\",\n friendly_name=\"test\",\n description=\"This dataset is private\",\n location=\"EU\",\n default_table_expiration_ms=3600000,\n labels={\n \"env\": \"default\",\n },\n accesses=[\n {\n \"role\": \"OWNER\",\n \"user_by_email\": bqowner.email,\n },\n {\n \"role\": \"READER\",\n \"domain\": \"hashicorp.com\",\n },\n {\n \"dataset\": {\n \"dataset\": {\n \"project_id\": public.project,\n \"dataset_id\": public.dataset_id,\n },\n \"target_types\": [\"VIEWS\"],\n },\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bqowner = new Gcp.ServiceAccount.Account(\"bqowner\", new()\n {\n AccountId = \"bqowner\",\n });\n\n var @public = new Gcp.BigQuery.Dataset(\"public\", new()\n {\n DatasetId = \"public\",\n FriendlyName = \"test\",\n Description = \"This dataset is public\",\n Location = \"EU\",\n DefaultTableExpirationMs = 3600000,\n Labels = \n {\n { \"env\", \"default\" },\n },\n Accesses = new[]\n {\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Role = \"OWNER\",\n UserByEmail = bqowner.Email,\n },\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Role = \"READER\",\n Domain = \"hashicorp.com\",\n },\n },\n });\n\n var dataset = new Gcp.BigQuery.Dataset(\"dataset\", new()\n {\n DatasetId = \"private\",\n FriendlyName = \"test\",\n Description = \"This dataset is private\",\n Location = \"EU\",\n DefaultTableExpirationMs = 3600000,\n Labels = \n {\n { \"env\", \"default\" },\n },\n Accesses = new[]\n {\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Role = \"OWNER\",\n UserByEmail = bqowner.Email,\n },\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Role = \"READER\",\n Domain = \"hashicorp.com\",\n },\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Dataset = new Gcp.BigQuery.Inputs.DatasetAccessDatasetArgs\n {\n Dataset = new Gcp.BigQuery.Inputs.DatasetAccessDatasetDatasetArgs\n {\n ProjectId = @public.Project,\n DatasetId = @public.DatasetId,\n },\n TargetTypes = new[]\n {\n \"VIEWS\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbqowner, err := serviceaccount.NewAccount(ctx, \"bqowner\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"bqowner\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpublic, err := bigquery.NewDataset(ctx, \"public\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"public\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This dataset is public\"),\n\t\t\tLocation: pulumi.String(\"EU\"),\n\t\t\tDefaultTableExpirationMs: pulumi.Int(3600000),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"default\"),\n\t\t\t},\n\t\t\tAccesses: bigquery.DatasetAccessTypeArray{\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRole: pulumi.String(\"OWNER\"),\n\t\t\t\t\tUserByEmail: bqowner.Email,\n\t\t\t\t},\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRole: pulumi.String(\"READER\"),\n\t\t\t\t\tDomain: pulumi.String(\"hashicorp.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDataset(ctx, \"dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"private\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This dataset is private\"),\n\t\t\tLocation: pulumi.String(\"EU\"),\n\t\t\tDefaultTableExpirationMs: pulumi.Int(3600000),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"default\"),\n\t\t\t},\n\t\t\tAccesses: bigquery.DatasetAccessTypeArray{\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRole: pulumi.String(\"OWNER\"),\n\t\t\t\t\tUserByEmail: bqowner.Email,\n\t\t\t\t},\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRole: pulumi.String(\"READER\"),\n\t\t\t\t\tDomain: pulumi.String(\"hashicorp.com\"),\n\t\t\t\t},\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tDataset: \u0026bigquery.DatasetAccessDatasetArgs{\n\t\t\t\t\t\tDataset: \u0026bigquery.DatasetAccessDatasetDatasetArgs{\n\t\t\t\t\t\t\tProjectId: public.Project,\n\t\t\t\t\t\t\tDatasetId: public.DatasetId,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTargetTypes: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"VIEWS\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessDatasetArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessDatasetDatasetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bqowner = new Account(\"bqowner\", AccountArgs.builder()\n .accountId(\"bqowner\")\n .build());\n\n var public_ = new Dataset(\"public\", DatasetArgs.builder()\n .datasetId(\"public\")\n .friendlyName(\"test\")\n .description(\"This dataset is public\")\n .location(\"EU\")\n .defaultTableExpirationMs(3600000)\n .labels(Map.of(\"env\", \"default\"))\n .accesses( \n DatasetAccessArgs.builder()\n .role(\"OWNER\")\n .userByEmail(bqowner.email())\n .build(),\n DatasetAccessArgs.builder()\n .role(\"READER\")\n .domain(\"hashicorp.com\")\n .build())\n .build());\n\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder()\n .datasetId(\"private\")\n .friendlyName(\"test\")\n .description(\"This dataset is private\")\n .location(\"EU\")\n .defaultTableExpirationMs(3600000)\n .labels(Map.of(\"env\", \"default\"))\n .accesses( \n DatasetAccessArgs.builder()\n .role(\"OWNER\")\n .userByEmail(bqowner.email())\n .build(),\n DatasetAccessArgs.builder()\n .role(\"READER\")\n .domain(\"hashicorp.com\")\n .build(),\n DatasetAccessArgs.builder()\n .dataset(DatasetAccessDatasetArgs.builder()\n .dataset(DatasetAccessDatasetDatasetArgs.builder()\n .projectId(public_.project())\n .datasetId(public_.datasetId())\n .build())\n .targetTypes(\"VIEWS\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n public:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: public\n friendlyName: test\n description: This dataset is public\n location: EU\n defaultTableExpirationMs: 3.6e+06\n labels:\n env: default\n accesses:\n - role: OWNER\n userByEmail: ${bqowner.email}\n - role: READER\n domain: hashicorp.com\n dataset:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: private\n friendlyName: test\n description: This dataset is private\n location: EU\n defaultTableExpirationMs: 3.6e+06\n labels:\n env: default\n accesses:\n - role: OWNER\n userByEmail: ${bqowner.email}\n - role: READER\n domain: hashicorp.com\n - dataset:\n dataset:\n projectId: ${public.project}\n datasetId: ${public.datasetId}\n targetTypes:\n - VIEWS\n bqowner:\n type: gcp:serviceaccount:Account\n properties:\n accountId: bqowner\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Dataset Authorized Routine\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _public = new gcp.bigquery.Dataset(\"public\", {\n datasetId: \"public_dataset\",\n description: \"This dataset is public\",\n});\nconst publicRoutine = new gcp.bigquery.Routine(\"public\", {\n datasetId: _public.datasetId,\n routineId: \"public_routine\",\n routineType: \"TABLE_VALUED_FUNCTION\",\n language: \"SQL\",\n definitionBody: \"SELECT 1 + value AS value\\n\",\n arguments: [{\n name: \"value\",\n argumentKind: \"FIXED_TYPE\",\n dataType: JSON.stringify({\n typeKind: \"INT64\",\n }),\n }],\n returnTableType: JSON.stringify({\n columns: [{\n name: \"value\",\n type: {\n typeKind: \"INT64\",\n },\n }],\n }),\n});\nconst _private = new gcp.bigquery.Dataset(\"private\", {\n datasetId: \"private_dataset\",\n description: \"This dataset is private\",\n accesses: [\n {\n role: \"OWNER\",\n userByEmail: \"my@service-account.com\",\n },\n {\n routine: {\n projectId: publicRoutine.project,\n datasetId: publicRoutine.datasetId,\n routineId: publicRoutine.routineId,\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\npublic = gcp.bigquery.Dataset(\"public\",\n dataset_id=\"public_dataset\",\n description=\"This dataset is public\")\npublic_routine = gcp.bigquery.Routine(\"public\",\n dataset_id=public.dataset_id,\n routine_id=\"public_routine\",\n routine_type=\"TABLE_VALUED_FUNCTION\",\n language=\"SQL\",\n definition_body=\"SELECT 1 + value AS value\\n\",\n arguments=[{\n \"name\": \"value\",\n \"argument_kind\": \"FIXED_TYPE\",\n \"data_type\": json.dumps({\n \"type_kind\": \"INT64\",\n }),\n }],\n return_table_type=json.dumps({\n \"columns\": [{\n \"name\": \"value\",\n \"type\": {\n \"typeKind\": \"INT64\",\n },\n }],\n }))\nprivate = gcp.bigquery.Dataset(\"private\",\n dataset_id=\"private_dataset\",\n description=\"This dataset is private\",\n accesses=[\n {\n \"role\": \"OWNER\",\n \"user_by_email\": \"my@service-account.com\",\n },\n {\n \"routine\": {\n \"project_id\": public_routine.project,\n \"dataset_id\": public_routine.dataset_id,\n \"routine_id\": public_routine.routine_id,\n },\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @public = new Gcp.BigQuery.Dataset(\"public\", new()\n {\n DatasetId = \"public_dataset\",\n Description = \"This dataset is public\",\n });\n\n var publicRoutine = new Gcp.BigQuery.Routine(\"public\", new()\n {\n DatasetId = @public.DatasetId,\n RoutineId = \"public_routine\",\n RoutineType = \"TABLE_VALUED_FUNCTION\",\n Language = \"SQL\",\n DefinitionBody = @\"SELECT 1 + value AS value\n\",\n Arguments = new[]\n {\n new Gcp.BigQuery.Inputs.RoutineArgumentArgs\n {\n Name = \"value\",\n ArgumentKind = \"FIXED_TYPE\",\n DataType = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"typeKind\"] = \"INT64\",\n }),\n },\n },\n ReturnTableType = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"columns\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"name\"] = \"value\",\n [\"type\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"typeKind\"] = \"INT64\",\n },\n },\n },\n }),\n });\n\n var @private = new Gcp.BigQuery.Dataset(\"private\", new()\n {\n DatasetId = \"private_dataset\",\n Description = \"This dataset is private\",\n Accesses = new[]\n {\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Role = \"OWNER\",\n UserByEmail = \"my@service-account.com\",\n },\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Routine = new Gcp.BigQuery.Inputs.DatasetAccessRoutineArgs\n {\n ProjectId = publicRoutine.Project,\n DatasetId = publicRoutine.DatasetId,\n RoutineId = publicRoutine.RoutineId,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpublic, err := bigquery.NewDataset(ctx, \"public\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"public_dataset\"),\n\t\t\tDescription: pulumi.String(\"This dataset is public\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"typeKind\": \"INT64\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\"columns\": []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"name\": \"value\",\n\t\t\t\t\t\"type\": map[string]interface{}{\n\t\t\t\t\t\t\"typeKind\": \"INT64\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson1 := string(tmpJSON1)\n\t\tpublicRoutine, err := bigquery.NewRoutine(ctx, \"public\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: public.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"public_routine\"),\n\t\t\tRoutineType: pulumi.String(\"TABLE_VALUED_FUNCTION\"),\n\t\t\tLanguage: pulumi.String(\"SQL\"),\n\t\t\tDefinitionBody: pulumi.String(\"SELECT 1 + value AS value\\n\"),\n\t\t\tArguments: bigquery.RoutineArgumentArray{\n\t\t\t\t\u0026bigquery.RoutineArgumentArgs{\n\t\t\t\t\tName: pulumi.String(\"value\"),\n\t\t\t\t\tArgumentKind: pulumi.String(\"FIXED_TYPE\"),\n\t\t\t\t\tDataType: pulumi.String(json0),\n\t\t\t\t},\n\t\t\t},\n\t\t\tReturnTableType: pulumi.String(json1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDataset(ctx, \"private\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"private_dataset\"),\n\t\t\tDescription: pulumi.String(\"This dataset is private\"),\n\t\t\tAccesses: bigquery.DatasetAccessTypeArray{\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRole: pulumi.String(\"OWNER\"),\n\t\t\t\t\tUserByEmail: pulumi.String(\"my@service-account.com\"),\n\t\t\t\t},\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRoutine: \u0026bigquery.DatasetAccessRoutineArgs{\n\t\t\t\t\t\tProjectId: publicRoutine.Project,\n\t\t\t\t\t\tDatasetId: publicRoutine.DatasetId,\n\t\t\t\t\t\tRoutineId: publicRoutine.RoutineId,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineArgumentArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessRoutineArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var public_ = new Dataset(\"public\", DatasetArgs.builder()\n .datasetId(\"public_dataset\")\n .description(\"This dataset is public\")\n .build());\n\n var publicRoutine = new Routine(\"publicRoutine\", RoutineArgs.builder()\n .datasetId(public_.datasetId())\n .routineId(\"public_routine\")\n .routineType(\"TABLE_VALUED_FUNCTION\")\n .language(\"SQL\")\n .definitionBody(\"\"\"\nSELECT 1 + value AS value\n \"\"\")\n .arguments(RoutineArgumentArgs.builder()\n .name(\"value\")\n .argumentKind(\"FIXED_TYPE\")\n .dataType(serializeJson(\n jsonObject(\n jsonProperty(\"typeKind\", \"INT64\")\n )))\n .build())\n .returnTableType(serializeJson(\n jsonObject(\n jsonProperty(\"columns\", jsonArray(jsonObject(\n jsonProperty(\"name\", \"value\"),\n jsonProperty(\"type\", jsonObject(\n jsonProperty(\"typeKind\", \"INT64\")\n ))\n )))\n )))\n .build());\n\n var private_ = new Dataset(\"private\", DatasetArgs.builder()\n .datasetId(\"private_dataset\")\n .description(\"This dataset is private\")\n .accesses( \n DatasetAccessArgs.builder()\n .role(\"OWNER\")\n .userByEmail(\"my@service-account.com\")\n .build(),\n DatasetAccessArgs.builder()\n .routine(DatasetAccessRoutineArgs.builder()\n .projectId(publicRoutine.project())\n .datasetId(publicRoutine.datasetId())\n .routineId(publicRoutine.routineId())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n public:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: public_dataset\n description: This dataset is public\n publicRoutine:\n type: gcp:bigquery:Routine\n name: public\n properties:\n datasetId: ${public.datasetId}\n routineId: public_routine\n routineType: TABLE_VALUED_FUNCTION\n language: SQL\n definitionBody: |\n SELECT 1 + value AS value\n arguments:\n - name: value\n argumentKind: FIXED_TYPE\n dataType:\n fn::toJSON:\n typeKind: INT64\n returnTableType:\n fn::toJSON:\n columns:\n - name: value\n type:\n typeKind: INT64\n private:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: private_dataset\n description: This dataset is private\n accesses:\n - role: OWNER\n userByEmail: my@service-account.com\n - routine:\n projectId: ${publicRoutine.project}\n datasetId: ${publicRoutine.datasetId}\n routineId: ${publicRoutine.routineId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Dataset External Reference Aws\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dataset = new gcp.bigquery.Dataset(\"dataset\", {\n datasetId: \"example_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"aws-us-east-1\",\n externalDatasetReference: {\n externalSource: \"aws-glue://arn:aws:glue:us-east-1:999999999999:database/database\",\n connection: \"projects/project/locations/aws-us-east-1/connections/connection\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndataset = gcp.bigquery.Dataset(\"dataset\",\n dataset_id=\"example_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"aws-us-east-1\",\n external_dataset_reference={\n \"external_source\": \"aws-glue://arn:aws:glue:us-east-1:999999999999:database/database\",\n \"connection\": \"projects/project/locations/aws-us-east-1/connections/connection\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var dataset = new Gcp.BigQuery.Dataset(\"dataset\", new()\n {\n DatasetId = \"example_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"aws-us-east-1\",\n ExternalDatasetReference = new Gcp.BigQuery.Inputs.DatasetExternalDatasetReferenceArgs\n {\n ExternalSource = \"aws-glue://arn:aws:glue:us-east-1:999999999999:database/database\",\n Connection = \"projects/project/locations/aws-us-east-1/connections/connection\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := bigquery.NewDataset(ctx, \"dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"aws-us-east-1\"),\n\t\t\tExternalDatasetReference: \u0026bigquery.DatasetExternalDatasetReferenceArgs{\n\t\t\t\tExternalSource: pulumi.String(\"aws-glue://arn:aws:glue:us-east-1:999999999999:database/database\"),\n\t\t\t\tConnection: pulumi.String(\"projects/project/locations/aws-us-east-1/connections/connection\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetExternalDatasetReferenceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder()\n .datasetId(\"example_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"aws-us-east-1\")\n .externalDatasetReference(DatasetExternalDatasetReferenceArgs.builder()\n .externalSource(\"aws-glue://arn:aws:glue:us-east-1:999999999999:database/database\")\n .connection(\"projects/project/locations/aws-us-east-1/connections/connection\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dataset:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n friendlyName: test\n description: This is a test description\n location: aws-us-east-1\n externalDatasetReference:\n externalSource: aws-glue://arn:aws:glue:us-east-1:999999999999:database/database\n connection: projects/project/locations/aws-us-east-1/connections/connection\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDataset can be imported using any of these accepted formats:\n\n* `projects/{{project}}/datasets/{{dataset_id}}`\n\n* `{{project}}/{{dataset_id}}`\n\n* `{{dataset_id}}`\n\nWhen using the `pulumi import` command, Dataset can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:bigquery/dataset:Dataset default projects/{{project}}/datasets/{{dataset_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/dataset:Dataset default {{project}}/{{dataset_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/dataset:Dataset default {{dataset_id}}\n```\n\n", + "description": "## Example Usage\n\n### Bigquery Dataset Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bqowner = new gcp.serviceaccount.Account(\"bqowner\", {accountId: \"bqowner\"});\nconst dataset = new gcp.bigquery.Dataset(\"dataset\", {\n datasetId: \"example_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"EU\",\n defaultTableExpirationMs: 3600000,\n labels: {\n env: \"default\",\n },\n accesses: [\n {\n role: \"OWNER\",\n userByEmail: bqowner.email,\n },\n {\n role: \"READER\",\n domain: \"hashicorp.com\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbqowner = gcp.serviceaccount.Account(\"bqowner\", account_id=\"bqowner\")\ndataset = gcp.bigquery.Dataset(\"dataset\",\n dataset_id=\"example_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"EU\",\n default_table_expiration_ms=3600000,\n labels={\n \"env\": \"default\",\n },\n accesses=[\n {\n \"role\": \"OWNER\",\n \"user_by_email\": bqowner.email,\n },\n {\n \"role\": \"READER\",\n \"domain\": \"hashicorp.com\",\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bqowner = new Gcp.ServiceAccount.Account(\"bqowner\", new()\n {\n AccountId = \"bqowner\",\n });\n\n var dataset = new Gcp.BigQuery.Dataset(\"dataset\", new()\n {\n DatasetId = \"example_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"EU\",\n DefaultTableExpirationMs = 3600000,\n Labels = \n {\n { \"env\", \"default\" },\n },\n Accesses = new[]\n {\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Role = \"OWNER\",\n UserByEmail = bqowner.Email,\n },\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Role = \"READER\",\n Domain = \"hashicorp.com\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbqowner, err := serviceaccount.NewAccount(ctx, \"bqowner\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"bqowner\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDataset(ctx, \"dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"EU\"),\n\t\t\tDefaultTableExpirationMs: pulumi.Int(3600000),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"default\"),\n\t\t\t},\n\t\t\tAccesses: bigquery.DatasetAccessTypeArray{\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRole: pulumi.String(\"OWNER\"),\n\t\t\t\t\tUserByEmail: bqowner.Email,\n\t\t\t\t},\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRole: pulumi.String(\"READER\"),\n\t\t\t\t\tDomain: pulumi.String(\"hashicorp.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bqowner = new Account(\"bqowner\", AccountArgs.builder()\n .accountId(\"bqowner\")\n .build());\n\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder()\n .datasetId(\"example_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"EU\")\n .defaultTableExpirationMs(3600000)\n .labels(Map.of(\"env\", \"default\"))\n .accesses( \n DatasetAccessArgs.builder()\n .role(\"OWNER\")\n .userByEmail(bqowner.email())\n .build(),\n DatasetAccessArgs.builder()\n .role(\"READER\")\n .domain(\"hashicorp.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dataset:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n friendlyName: test\n description: This is a test description\n location: EU\n defaultTableExpirationMs: 3.6e+06\n labels:\n env: default\n accesses:\n - role: OWNER\n userByEmail: ${bqowner.email}\n - role: READER\n domain: hashicorp.com\n bqowner:\n type: gcp:serviceaccount:Account\n properties:\n accountId: bqowner\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Dataset Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"example-keyring\",\n location: \"us\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"example-key\",\n keyRing: keyRing.id,\n});\nconst dataset = new gcp.bigquery.Dataset(\"dataset\", {\n datasetId: \"example_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n defaultTableExpirationMs: 3600000,\n defaultEncryptionConfiguration: {\n kmsKeyName: cryptoKey.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"example-keyring\",\n location=\"us\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"example-key\",\n key_ring=key_ring.id)\ndataset = gcp.bigquery.Dataset(\"dataset\",\n dataset_id=\"example_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\",\n default_table_expiration_ms=3600000,\n default_encryption_configuration={\n \"kms_key_name\": crypto_key.id,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"example-keyring\",\n Location = \"us\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"example-key\",\n KeyRing = keyRing.Id,\n });\n\n var dataset = new Gcp.BigQuery.Dataset(\"dataset\", new()\n {\n DatasetId = \"example_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n DefaultTableExpirationMs = 3600000,\n DefaultEncryptionConfiguration = new Gcp.BigQuery.Inputs.DatasetDefaultEncryptionConfigurationArgs\n {\n KmsKeyName = cryptoKey.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"example-keyring\"),\n\t\t\tLocation: pulumi.String(\"us\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"example-key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDataset(ctx, \"dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tDefaultTableExpirationMs: pulumi.Int(3600000),\n\t\t\tDefaultEncryptionConfiguration: \u0026bigquery.DatasetDefaultEncryptionConfigurationArgs{\n\t\t\t\tKmsKeyName: cryptoKey.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetDefaultEncryptionConfigurationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"example-keyring\")\n .location(\"us\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"example-key\")\n .keyRing(keyRing.id())\n .build());\n\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder()\n .datasetId(\"example_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .defaultTableExpirationMs(3600000)\n .defaultEncryptionConfiguration(DatasetDefaultEncryptionConfigurationArgs.builder()\n .kmsKeyName(cryptoKey.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dataset:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n friendlyName: test\n description: This is a test description\n location: US\n defaultTableExpirationMs: 3.6e+06\n defaultEncryptionConfiguration:\n kmsKeyName: ${cryptoKey.id}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: example-key\n keyRing: ${keyRing.id}\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: example-keyring\n location: us\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Dataset Authorized Dataset\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bqowner = new gcp.serviceaccount.Account(\"bqowner\", {accountId: \"bqowner\"});\nconst _public = new gcp.bigquery.Dataset(\"public\", {\n datasetId: \"public\",\n friendlyName: \"test\",\n description: \"This dataset is public\",\n location: \"EU\",\n defaultTableExpirationMs: 3600000,\n labels: {\n env: \"default\",\n },\n accesses: [\n {\n role: \"OWNER\",\n userByEmail: bqowner.email,\n },\n {\n role: \"READER\",\n domain: \"hashicorp.com\",\n },\n ],\n});\nconst dataset = new gcp.bigquery.Dataset(\"dataset\", {\n datasetId: \"private\",\n friendlyName: \"test\",\n description: \"This dataset is private\",\n location: \"EU\",\n defaultTableExpirationMs: 3600000,\n labels: {\n env: \"default\",\n },\n accesses: [\n {\n role: \"OWNER\",\n userByEmail: bqowner.email,\n },\n {\n role: \"READER\",\n domain: \"hashicorp.com\",\n },\n {\n dataset: {\n dataset: {\n projectId: _public.project,\n datasetId: _public.datasetId,\n },\n targetTypes: [\"VIEWS\"],\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbqowner = gcp.serviceaccount.Account(\"bqowner\", account_id=\"bqowner\")\npublic = gcp.bigquery.Dataset(\"public\",\n dataset_id=\"public\",\n friendly_name=\"test\",\n description=\"This dataset is public\",\n location=\"EU\",\n default_table_expiration_ms=3600000,\n labels={\n \"env\": \"default\",\n },\n accesses=[\n {\n \"role\": \"OWNER\",\n \"user_by_email\": bqowner.email,\n },\n {\n \"role\": \"READER\",\n \"domain\": \"hashicorp.com\",\n },\n ])\ndataset = gcp.bigquery.Dataset(\"dataset\",\n dataset_id=\"private\",\n friendly_name=\"test\",\n description=\"This dataset is private\",\n location=\"EU\",\n default_table_expiration_ms=3600000,\n labels={\n \"env\": \"default\",\n },\n accesses=[\n {\n \"role\": \"OWNER\",\n \"user_by_email\": bqowner.email,\n },\n {\n \"role\": \"READER\",\n \"domain\": \"hashicorp.com\",\n },\n {\n \"dataset\": {\n \"dataset\": {\n \"project_id\": public.project,\n \"dataset_id\": public.dataset_id,\n },\n \"target_types\": [\"VIEWS\"],\n },\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bqowner = new Gcp.ServiceAccount.Account(\"bqowner\", new()\n {\n AccountId = \"bqowner\",\n });\n\n var @public = new Gcp.BigQuery.Dataset(\"public\", new()\n {\n DatasetId = \"public\",\n FriendlyName = \"test\",\n Description = \"This dataset is public\",\n Location = \"EU\",\n DefaultTableExpirationMs = 3600000,\n Labels = \n {\n { \"env\", \"default\" },\n },\n Accesses = new[]\n {\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Role = \"OWNER\",\n UserByEmail = bqowner.Email,\n },\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Role = \"READER\",\n Domain = \"hashicorp.com\",\n },\n },\n });\n\n var dataset = new Gcp.BigQuery.Dataset(\"dataset\", new()\n {\n DatasetId = \"private\",\n FriendlyName = \"test\",\n Description = \"This dataset is private\",\n Location = \"EU\",\n DefaultTableExpirationMs = 3600000,\n Labels = \n {\n { \"env\", \"default\" },\n },\n Accesses = new[]\n {\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Role = \"OWNER\",\n UserByEmail = bqowner.Email,\n },\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Role = \"READER\",\n Domain = \"hashicorp.com\",\n },\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Dataset = new Gcp.BigQuery.Inputs.DatasetAccessDatasetArgs\n {\n Dataset = new Gcp.BigQuery.Inputs.DatasetAccessDatasetDatasetArgs\n {\n ProjectId = @public.Project,\n DatasetId = @public.DatasetId,\n },\n TargetTypes = new[]\n {\n \"VIEWS\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbqowner, err := serviceaccount.NewAccount(ctx, \"bqowner\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"bqowner\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpublic, err := bigquery.NewDataset(ctx, \"public\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"public\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This dataset is public\"),\n\t\t\tLocation: pulumi.String(\"EU\"),\n\t\t\tDefaultTableExpirationMs: pulumi.Int(3600000),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"default\"),\n\t\t\t},\n\t\t\tAccesses: bigquery.DatasetAccessTypeArray{\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRole: pulumi.String(\"OWNER\"),\n\t\t\t\t\tUserByEmail: bqowner.Email,\n\t\t\t\t},\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRole: pulumi.String(\"READER\"),\n\t\t\t\t\tDomain: pulumi.String(\"hashicorp.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDataset(ctx, \"dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"private\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This dataset is private\"),\n\t\t\tLocation: pulumi.String(\"EU\"),\n\t\t\tDefaultTableExpirationMs: pulumi.Int(3600000),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"default\"),\n\t\t\t},\n\t\t\tAccesses: bigquery.DatasetAccessTypeArray{\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRole: pulumi.String(\"OWNER\"),\n\t\t\t\t\tUserByEmail: bqowner.Email,\n\t\t\t\t},\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRole: pulumi.String(\"READER\"),\n\t\t\t\t\tDomain: pulumi.String(\"hashicorp.com\"),\n\t\t\t\t},\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tDataset: \u0026bigquery.DatasetAccessDatasetArgs{\n\t\t\t\t\t\tDataset: \u0026bigquery.DatasetAccessDatasetDatasetArgs{\n\t\t\t\t\t\t\tProjectId: public.Project,\n\t\t\t\t\t\t\tDatasetId: public.DatasetId,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTargetTypes: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"VIEWS\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessDatasetArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessDatasetDatasetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bqowner = new Account(\"bqowner\", AccountArgs.builder()\n .accountId(\"bqowner\")\n .build());\n\n var public_ = new Dataset(\"public\", DatasetArgs.builder()\n .datasetId(\"public\")\n .friendlyName(\"test\")\n .description(\"This dataset is public\")\n .location(\"EU\")\n .defaultTableExpirationMs(3600000)\n .labels(Map.of(\"env\", \"default\"))\n .accesses( \n DatasetAccessArgs.builder()\n .role(\"OWNER\")\n .userByEmail(bqowner.email())\n .build(),\n DatasetAccessArgs.builder()\n .role(\"READER\")\n .domain(\"hashicorp.com\")\n .build())\n .build());\n\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder()\n .datasetId(\"private\")\n .friendlyName(\"test\")\n .description(\"This dataset is private\")\n .location(\"EU\")\n .defaultTableExpirationMs(3600000)\n .labels(Map.of(\"env\", \"default\"))\n .accesses( \n DatasetAccessArgs.builder()\n .role(\"OWNER\")\n .userByEmail(bqowner.email())\n .build(),\n DatasetAccessArgs.builder()\n .role(\"READER\")\n .domain(\"hashicorp.com\")\n .build(),\n DatasetAccessArgs.builder()\n .dataset(DatasetAccessDatasetArgs.builder()\n .dataset(DatasetAccessDatasetDatasetArgs.builder()\n .projectId(public_.project())\n .datasetId(public_.datasetId())\n .build())\n .targetTypes(\"VIEWS\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n public:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: public\n friendlyName: test\n description: This dataset is public\n location: EU\n defaultTableExpirationMs: 3.6e+06\n labels:\n env: default\n accesses:\n - role: OWNER\n userByEmail: ${bqowner.email}\n - role: READER\n domain: hashicorp.com\n dataset:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: private\n friendlyName: test\n description: This dataset is private\n location: EU\n defaultTableExpirationMs: 3.6e+06\n labels:\n env: default\n accesses:\n - role: OWNER\n userByEmail: ${bqowner.email}\n - role: READER\n domain: hashicorp.com\n - dataset:\n dataset:\n projectId: ${public.project}\n datasetId: ${public.datasetId}\n targetTypes:\n - VIEWS\n bqowner:\n type: gcp:serviceaccount:Account\n properties:\n accountId: bqowner\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Dataset Authorized Routine\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _public = new gcp.bigquery.Dataset(\"public\", {\n datasetId: \"public_dataset\",\n description: \"This dataset is public\",\n});\nconst publicRoutine = new gcp.bigquery.Routine(\"public\", {\n datasetId: _public.datasetId,\n routineId: \"public_routine\",\n routineType: \"TABLE_VALUED_FUNCTION\",\n language: \"SQL\",\n definitionBody: \"SELECT 1 + value AS value\\n\",\n arguments: [{\n name: \"value\",\n argumentKind: \"FIXED_TYPE\",\n dataType: JSON.stringify({\n typeKind: \"INT64\",\n }),\n }],\n returnTableType: JSON.stringify({\n columns: [{\n name: \"value\",\n type: {\n typeKind: \"INT64\",\n },\n }],\n }),\n});\nconst _private = new gcp.bigquery.Dataset(\"private\", {\n datasetId: \"private_dataset\",\n description: \"This dataset is private\",\n accesses: [\n {\n role: \"OWNER\",\n userByEmail: \"my@service-account.com\",\n },\n {\n routine: {\n projectId: publicRoutine.project,\n datasetId: publicRoutine.datasetId,\n routineId: publicRoutine.routineId,\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\npublic = gcp.bigquery.Dataset(\"public\",\n dataset_id=\"public_dataset\",\n description=\"This dataset is public\")\npublic_routine = gcp.bigquery.Routine(\"public\",\n dataset_id=public.dataset_id,\n routine_id=\"public_routine\",\n routine_type=\"TABLE_VALUED_FUNCTION\",\n language=\"SQL\",\n definition_body=\"SELECT 1 + value AS value\\n\",\n arguments=[{\n \"name\": \"value\",\n \"argument_kind\": \"FIXED_TYPE\",\n \"data_type\": json.dumps({\n \"typeKind\": \"INT64\",\n }),\n }],\n return_table_type=json.dumps({\n \"columns\": [{\n \"name\": \"value\",\n \"type\": {\n \"typeKind\": \"INT64\",\n },\n }],\n }))\nprivate = gcp.bigquery.Dataset(\"private\",\n dataset_id=\"private_dataset\",\n description=\"This dataset is private\",\n accesses=[\n {\n \"role\": \"OWNER\",\n \"user_by_email\": \"my@service-account.com\",\n },\n {\n \"routine\": {\n \"project_id\": public_routine.project,\n \"dataset_id\": public_routine.dataset_id,\n \"routine_id\": public_routine.routine_id,\n },\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @public = new Gcp.BigQuery.Dataset(\"public\", new()\n {\n DatasetId = \"public_dataset\",\n Description = \"This dataset is public\",\n });\n\n var publicRoutine = new Gcp.BigQuery.Routine(\"public\", new()\n {\n DatasetId = @public.DatasetId,\n RoutineId = \"public_routine\",\n RoutineType = \"TABLE_VALUED_FUNCTION\",\n Language = \"SQL\",\n DefinitionBody = @\"SELECT 1 + value AS value\n\",\n Arguments = new[]\n {\n new Gcp.BigQuery.Inputs.RoutineArgumentArgs\n {\n Name = \"value\",\n ArgumentKind = \"FIXED_TYPE\",\n DataType = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"typeKind\"] = \"INT64\",\n }),\n },\n },\n ReturnTableType = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"columns\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"name\"] = \"value\",\n [\"type\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"typeKind\"] = \"INT64\",\n },\n },\n },\n }),\n });\n\n var @private = new Gcp.BigQuery.Dataset(\"private\", new()\n {\n DatasetId = \"private_dataset\",\n Description = \"This dataset is private\",\n Accesses = new[]\n {\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Role = \"OWNER\",\n UserByEmail = \"my@service-account.com\",\n },\n new Gcp.BigQuery.Inputs.DatasetAccessArgs\n {\n Routine = new Gcp.BigQuery.Inputs.DatasetAccessRoutineArgs\n {\n ProjectId = publicRoutine.Project,\n DatasetId = publicRoutine.DatasetId,\n RoutineId = publicRoutine.RoutineId,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpublic, err := bigquery.NewDataset(ctx, \"public\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"public_dataset\"),\n\t\t\tDescription: pulumi.String(\"This dataset is public\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"typeKind\": \"INT64\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\"columns\": []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"name\": \"value\",\n\t\t\t\t\t\"type\": map[string]interface{}{\n\t\t\t\t\t\t\"typeKind\": \"INT64\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson1 := string(tmpJSON1)\n\t\tpublicRoutine, err := bigquery.NewRoutine(ctx, \"public\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: public.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"public_routine\"),\n\t\t\tRoutineType: pulumi.String(\"TABLE_VALUED_FUNCTION\"),\n\t\t\tLanguage: pulumi.String(\"SQL\"),\n\t\t\tDefinitionBody: pulumi.String(\"SELECT 1 + value AS value\\n\"),\n\t\t\tArguments: bigquery.RoutineArgumentArray{\n\t\t\t\t\u0026bigquery.RoutineArgumentArgs{\n\t\t\t\t\tName: pulumi.String(\"value\"),\n\t\t\t\t\tArgumentKind: pulumi.String(\"FIXED_TYPE\"),\n\t\t\t\t\tDataType: pulumi.String(json0),\n\t\t\t\t},\n\t\t\t},\n\t\t\tReturnTableType: pulumi.String(json1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDataset(ctx, \"private\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"private_dataset\"),\n\t\t\tDescription: pulumi.String(\"This dataset is private\"),\n\t\t\tAccesses: bigquery.DatasetAccessTypeArray{\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRole: pulumi.String(\"OWNER\"),\n\t\t\t\t\tUserByEmail: pulumi.String(\"my@service-account.com\"),\n\t\t\t\t},\n\t\t\t\t\u0026bigquery.DatasetAccessTypeArgs{\n\t\t\t\t\tRoutine: \u0026bigquery.DatasetAccessRoutineArgs{\n\t\t\t\t\t\tProjectId: publicRoutine.Project,\n\t\t\t\t\t\tDatasetId: publicRoutine.DatasetId,\n\t\t\t\t\t\tRoutineId: publicRoutine.RoutineId,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineArgumentArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessRoutineArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var public_ = new Dataset(\"public\", DatasetArgs.builder()\n .datasetId(\"public_dataset\")\n .description(\"This dataset is public\")\n .build());\n\n var publicRoutine = new Routine(\"publicRoutine\", RoutineArgs.builder()\n .datasetId(public_.datasetId())\n .routineId(\"public_routine\")\n .routineType(\"TABLE_VALUED_FUNCTION\")\n .language(\"SQL\")\n .definitionBody(\"\"\"\nSELECT 1 + value AS value\n \"\"\")\n .arguments(RoutineArgumentArgs.builder()\n .name(\"value\")\n .argumentKind(\"FIXED_TYPE\")\n .dataType(serializeJson(\n jsonObject(\n jsonProperty(\"typeKind\", \"INT64\")\n )))\n .build())\n .returnTableType(serializeJson(\n jsonObject(\n jsonProperty(\"columns\", jsonArray(jsonObject(\n jsonProperty(\"name\", \"value\"),\n jsonProperty(\"type\", jsonObject(\n jsonProperty(\"typeKind\", \"INT64\")\n ))\n )))\n )))\n .build());\n\n var private_ = new Dataset(\"private\", DatasetArgs.builder()\n .datasetId(\"private_dataset\")\n .description(\"This dataset is private\")\n .accesses( \n DatasetAccessArgs.builder()\n .role(\"OWNER\")\n .userByEmail(\"my@service-account.com\")\n .build(),\n DatasetAccessArgs.builder()\n .routine(DatasetAccessRoutineArgs.builder()\n .projectId(publicRoutine.project())\n .datasetId(publicRoutine.datasetId())\n .routineId(publicRoutine.routineId())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n public:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: public_dataset\n description: This dataset is public\n publicRoutine:\n type: gcp:bigquery:Routine\n name: public\n properties:\n datasetId: ${public.datasetId}\n routineId: public_routine\n routineType: TABLE_VALUED_FUNCTION\n language: SQL\n definitionBody: |\n SELECT 1 + value AS value\n arguments:\n - name: value\n argumentKind: FIXED_TYPE\n dataType:\n fn::toJSON:\n typeKind: INT64\n returnTableType:\n fn::toJSON:\n columns:\n - name: value\n type:\n typeKind: INT64\n private:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: private_dataset\n description: This dataset is private\n accesses:\n - role: OWNER\n userByEmail: my@service-account.com\n - routine:\n projectId: ${publicRoutine.project}\n datasetId: ${publicRoutine.datasetId}\n routineId: ${publicRoutine.routineId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Dataset External Reference Aws\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dataset = new gcp.bigquery.Dataset(\"dataset\", {\n datasetId: \"example_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"aws-us-east-1\",\n externalDatasetReference: {\n externalSource: \"aws-glue://arn:aws:glue:us-east-1:999999999999:database/database\",\n connection: \"projects/project/locations/aws-us-east-1/connections/connection\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndataset = gcp.bigquery.Dataset(\"dataset\",\n dataset_id=\"example_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"aws-us-east-1\",\n external_dataset_reference={\n \"external_source\": \"aws-glue://arn:aws:glue:us-east-1:999999999999:database/database\",\n \"connection\": \"projects/project/locations/aws-us-east-1/connections/connection\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var dataset = new Gcp.BigQuery.Dataset(\"dataset\", new()\n {\n DatasetId = \"example_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"aws-us-east-1\",\n ExternalDatasetReference = new Gcp.BigQuery.Inputs.DatasetExternalDatasetReferenceArgs\n {\n ExternalSource = \"aws-glue://arn:aws:glue:us-east-1:999999999999:database/database\",\n Connection = \"projects/project/locations/aws-us-east-1/connections/connection\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := bigquery.NewDataset(ctx, \"dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"aws-us-east-1\"),\n\t\t\tExternalDatasetReference: \u0026bigquery.DatasetExternalDatasetReferenceArgs{\n\t\t\t\tExternalSource: pulumi.String(\"aws-glue://arn:aws:glue:us-east-1:999999999999:database/database\"),\n\t\t\t\tConnection: pulumi.String(\"projects/project/locations/aws-us-east-1/connections/connection\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetExternalDatasetReferenceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder()\n .datasetId(\"example_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"aws-us-east-1\")\n .externalDatasetReference(DatasetExternalDatasetReferenceArgs.builder()\n .externalSource(\"aws-glue://arn:aws:glue:us-east-1:999999999999:database/database\")\n .connection(\"projects/project/locations/aws-us-east-1/connections/connection\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dataset:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n friendlyName: test\n description: This is a test description\n location: aws-us-east-1\n externalDatasetReference:\n externalSource: aws-glue://arn:aws:glue:us-east-1:999999999999:database/database\n connection: projects/project/locations/aws-us-east-1/connections/connection\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDataset can be imported using any of these accepted formats:\n\n* `projects/{{project}}/datasets/{{dataset_id}}`\n\n* `{{project}}/{{dataset_id}}`\n\n* `{{dataset_id}}`\n\nWhen using the `pulumi import` command, Dataset can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:bigquery/dataset:Dataset default projects/{{project}}/datasets/{{dataset_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/dataset:Dataset default {{project}}/{{dataset_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/dataset:Dataset default {{dataset_id}}\n```\n\n", "properties": { "accesses": { "type": "array", @@ -128434,7 +128434,7 @@ } }, "gcp:bigquery/datasetAccess:DatasetAccess": { - "description": "## Example Usage\n\n### Bigquery Dataset Access Basic User\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dataset = new gcp.bigquery.Dataset(\"dataset\", {datasetId: \"example_dataset\"});\nconst bqowner = new gcp.serviceaccount.Account(\"bqowner\", {accountId: \"bqowner\"});\nconst access = new gcp.bigquery.DatasetAccess(\"access\", {\n datasetId: dataset.datasetId,\n role: \"OWNER\",\n userByEmail: bqowner.email,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndataset = gcp.bigquery.Dataset(\"dataset\", dataset_id=\"example_dataset\")\nbqowner = gcp.serviceaccount.Account(\"bqowner\", account_id=\"bqowner\")\naccess = gcp.bigquery.DatasetAccess(\"access\",\n dataset_id=dataset.dataset_id,\n role=\"OWNER\",\n user_by_email=bqowner.email)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var dataset = new Gcp.BigQuery.Dataset(\"dataset\", new()\n {\n DatasetId = \"example_dataset\",\n });\n\n var bqowner = new Gcp.ServiceAccount.Account(\"bqowner\", new()\n {\n AccountId = \"bqowner\",\n });\n\n var access = new Gcp.BigQuery.DatasetAccess(\"access\", new()\n {\n DatasetId = dataset.DatasetId,\n Role = \"OWNER\",\n UserByEmail = bqowner.Email,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdataset, err := bigquery.NewDataset(ctx, \"dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbqowner, err := serviceaccount.NewAccount(ctx, \"bqowner\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"bqowner\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDatasetAccess(ctx, \"access\", \u0026bigquery.DatasetAccessArgs{\n\t\t\tDatasetId: dataset.DatasetId,\n\t\t\tRole: pulumi.String(\"OWNER\"),\n\t\t\tUserByEmail: bqowner.Email,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.bigquery.DatasetAccess;\nimport com.pulumi.gcp.bigquery.DatasetAccessArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder()\n .datasetId(\"example_dataset\")\n .build());\n\n var bqowner = new Account(\"bqowner\", AccountArgs.builder()\n .accountId(\"bqowner\")\n .build());\n\n var access = new DatasetAccess(\"access\", DatasetAccessArgs.builder()\n .datasetId(dataset.datasetId())\n .role(\"OWNER\")\n .userByEmail(bqowner.email())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n access:\n type: gcp:bigquery:DatasetAccess\n properties:\n datasetId: ${dataset.datasetId}\n role: OWNER\n userByEmail: ${bqowner.email}\n dataset:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n bqowner:\n type: gcp:serviceaccount:Account\n properties:\n accountId: bqowner\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Dataset Access View\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _private = new gcp.bigquery.Dataset(\"private\", {datasetId: \"example_dataset\"});\nconst _public = new gcp.bigquery.Dataset(\"public\", {datasetId: \"example_dataset2\"});\nconst publicTable = new gcp.bigquery.Table(\"public\", {\n deletionProtection: false,\n datasetId: _public.datasetId,\n tableId: \"example_table\",\n view: {\n query: \"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\",\n useLegacySql: false,\n },\n});\nconst access = new gcp.bigquery.DatasetAccess(\"access\", {\n datasetId: _private.datasetId,\n view: {\n projectId: publicTable.project,\n datasetId: _public.datasetId,\n tableId: publicTable.tableId,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprivate = gcp.bigquery.Dataset(\"private\", dataset_id=\"example_dataset\")\npublic = gcp.bigquery.Dataset(\"public\", dataset_id=\"example_dataset2\")\npublic_table = gcp.bigquery.Table(\"public\",\n deletion_protection=False,\n dataset_id=public.dataset_id,\n table_id=\"example_table\",\n view={\n \"query\": \"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\",\n \"use_legacy_sql\": False,\n })\naccess = gcp.bigquery.DatasetAccess(\"access\",\n dataset_id=private.dataset_id,\n view={\n \"project_id\": public_table.project,\n \"dataset_id\": public.dataset_id,\n \"table_id\": public_table.table_id,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @private = new Gcp.BigQuery.Dataset(\"private\", new()\n {\n DatasetId = \"example_dataset\",\n });\n\n var @public = new Gcp.BigQuery.Dataset(\"public\", new()\n {\n DatasetId = \"example_dataset2\",\n });\n\n var publicTable = new Gcp.BigQuery.Table(\"public\", new()\n {\n DeletionProtection = false,\n DatasetId = @public.DatasetId,\n TableId = \"example_table\",\n View = new Gcp.BigQuery.Inputs.TableViewArgs\n {\n Query = \"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\",\n UseLegacySql = false,\n },\n });\n\n var access = new Gcp.BigQuery.DatasetAccess(\"access\", new()\n {\n DatasetId = @private.DatasetId,\n View = new Gcp.BigQuery.Inputs.DatasetAccessViewArgs\n {\n ProjectId = publicTable.Project,\n DatasetId = @public.DatasetId,\n TableId = publicTable.TableId,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprivate, err := bigquery.NewDataset(ctx, \"private\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpublic, err := bigquery.NewDataset(ctx, \"public\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset2\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpublicTable, err := bigquery.NewTable(ctx, \"public\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: public.DatasetId,\n\t\t\tTableId: pulumi.String(\"example_table\"),\n\t\t\tView: \u0026bigquery.TableViewArgs{\n\t\t\t\tQuery: pulumi.String(\"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\"),\n\t\t\t\tUseLegacySql: pulumi.Bool(false),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDatasetAccess(ctx, \"access\", \u0026bigquery.DatasetAccessArgs{\n\t\t\tDatasetId: private.DatasetId,\n\t\t\tView: \u0026bigquery.DatasetAccessViewArgs{\n\t\t\t\tProjectId: publicTable.Project,\n\t\t\t\tDatasetId: public.DatasetId,\n\t\t\t\tTableId: publicTable.TableId,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.bigquery.inputs.TableViewArgs;\nimport com.pulumi.gcp.bigquery.DatasetAccess;\nimport com.pulumi.gcp.bigquery.DatasetAccessArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessViewArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var private_ = new Dataset(\"private\", DatasetArgs.builder()\n .datasetId(\"example_dataset\")\n .build());\n\n var public_ = new Dataset(\"public\", DatasetArgs.builder()\n .datasetId(\"example_dataset2\")\n .build());\n\n var publicTable = new Table(\"publicTable\", TableArgs.builder()\n .deletionProtection(false)\n .datasetId(public_.datasetId())\n .tableId(\"example_table\")\n .view(TableViewArgs.builder()\n .query(\"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\")\n .useLegacySql(false)\n .build())\n .build());\n\n var access = new DatasetAccess(\"access\", DatasetAccessArgs.builder()\n .datasetId(private_.datasetId())\n .view(DatasetAccessViewArgs.builder()\n .projectId(publicTable.project())\n .datasetId(public_.datasetId())\n .tableId(publicTable.tableId())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n access:\n type: gcp:bigquery:DatasetAccess\n properties:\n datasetId: ${private.datasetId}\n view:\n projectId: ${publicTable.project}\n datasetId: ${public.datasetId}\n tableId: ${publicTable.tableId}\n private:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n public:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset2\n publicTable:\n type: gcp:bigquery:Table\n name: public\n properties:\n deletionProtection: false\n datasetId: ${public.datasetId}\n tableId: example_table\n view:\n query: SELECT state FROM [lookerdata:cdc.project_tycho_reports]\n useLegacySql: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Dataset Access Authorized Dataset\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _private = new gcp.bigquery.Dataset(\"private\", {datasetId: \"private\"});\nconst _public = new gcp.bigquery.Dataset(\"public\", {datasetId: \"public\"});\nconst access = new gcp.bigquery.DatasetAccess(\"access\", {\n datasetId: _private.datasetId,\n authorizedDataset: {\n dataset: {\n projectId: _public.project,\n datasetId: _public.datasetId,\n },\n targetTypes: [\"VIEWS\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprivate = gcp.bigquery.Dataset(\"private\", dataset_id=\"private\")\npublic = gcp.bigquery.Dataset(\"public\", dataset_id=\"public\")\naccess = gcp.bigquery.DatasetAccess(\"access\",\n dataset_id=private.dataset_id,\n authorized_dataset={\n \"dataset\": {\n \"project_id\": public.project,\n \"dataset_id\": public.dataset_id,\n },\n \"target_types\": [\"VIEWS\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @private = new Gcp.BigQuery.Dataset(\"private\", new()\n {\n DatasetId = \"private\",\n });\n\n var @public = new Gcp.BigQuery.Dataset(\"public\", new()\n {\n DatasetId = \"public\",\n });\n\n var access = new Gcp.BigQuery.DatasetAccess(\"access\", new()\n {\n DatasetId = @private.DatasetId,\n AuthorizedDataset = new Gcp.BigQuery.Inputs.DatasetAccessAuthorizedDatasetArgs\n {\n Dataset = new Gcp.BigQuery.Inputs.DatasetAccessAuthorizedDatasetDatasetArgs\n {\n ProjectId = @public.Project,\n DatasetId = @public.DatasetId,\n },\n TargetTypes = new[]\n {\n \"VIEWS\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprivate, err := bigquery.NewDataset(ctx, \"private\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"private\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpublic, err := bigquery.NewDataset(ctx, \"public\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"public\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDatasetAccess(ctx, \"access\", \u0026bigquery.DatasetAccessArgs{\n\t\t\tDatasetId: private.DatasetId,\n\t\t\tAuthorizedDataset: \u0026bigquery.DatasetAccessAuthorizedDatasetArgs{\n\t\t\t\tDataset: \u0026bigquery.DatasetAccessAuthorizedDatasetDatasetArgs{\n\t\t\t\t\tProjectId: public.Project,\n\t\t\t\t\tDatasetId: public.DatasetId,\n\t\t\t\t},\n\t\t\t\tTargetTypes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"VIEWS\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.DatasetAccess;\nimport com.pulumi.gcp.bigquery.DatasetAccessArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessAuthorizedDatasetArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessAuthorizedDatasetDatasetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var private_ = new Dataset(\"private\", DatasetArgs.builder()\n .datasetId(\"private\")\n .build());\n\n var public_ = new Dataset(\"public\", DatasetArgs.builder()\n .datasetId(\"public\")\n .build());\n\n var access = new DatasetAccess(\"access\", DatasetAccessArgs.builder()\n .datasetId(private_.datasetId())\n .authorizedDataset(DatasetAccessAuthorizedDatasetArgs.builder()\n .dataset(DatasetAccessAuthorizedDatasetDatasetArgs.builder()\n .projectId(public_.project())\n .datasetId(public_.datasetId())\n .build())\n .targetTypes(\"VIEWS\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n access:\n type: gcp:bigquery:DatasetAccess\n properties:\n datasetId: ${private.datasetId}\n authorizedDataset:\n dataset:\n projectId: ${public.project}\n datasetId: ${public.datasetId}\n targetTypes:\n - VIEWS\n private:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: private\n public:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: public\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Dataset Access Authorized Routine\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _public = new gcp.bigquery.Dataset(\"public\", {\n datasetId: \"public_dataset\",\n description: \"This dataset is public\",\n});\nconst publicRoutine = new gcp.bigquery.Routine(\"public\", {\n datasetId: _public.datasetId,\n routineId: \"public_routine\",\n routineType: \"TABLE_VALUED_FUNCTION\",\n language: \"SQL\",\n definitionBody: \"SELECT 1 + value AS value\\n\",\n arguments: [{\n name: \"value\",\n argumentKind: \"FIXED_TYPE\",\n dataType: JSON.stringify({\n typeKind: \"INT64\",\n }),\n }],\n returnTableType: JSON.stringify({\n columns: [{\n name: \"value\",\n type: {\n typeKind: \"INT64\",\n },\n }],\n }),\n});\nconst _private = new gcp.bigquery.Dataset(\"private\", {\n datasetId: \"private_dataset\",\n description: \"This dataset is private\",\n});\nconst authorizedRoutine = new gcp.bigquery.DatasetAccess(\"authorized_routine\", {\n datasetId: _private.datasetId,\n routine: {\n projectId: publicRoutine.project,\n datasetId: publicRoutine.datasetId,\n routineId: publicRoutine.routineId,\n },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\npublic = gcp.bigquery.Dataset(\"public\",\n dataset_id=\"public_dataset\",\n description=\"This dataset is public\")\npublic_routine = gcp.bigquery.Routine(\"public\",\n dataset_id=public.dataset_id,\n routine_id=\"public_routine\",\n routine_type=\"TABLE_VALUED_FUNCTION\",\n language=\"SQL\",\n definition_body=\"SELECT 1 + value AS value\\n\",\n arguments=[{\n \"name\": \"value\",\n \"argument_kind\": \"FIXED_TYPE\",\n \"data_type\": json.dumps({\n \"type_kind\": \"INT64\",\n }),\n }],\n return_table_type=json.dumps({\n \"columns\": [{\n \"name\": \"value\",\n \"type\": {\n \"typeKind\": \"INT64\",\n },\n }],\n }))\nprivate = gcp.bigquery.Dataset(\"private\",\n dataset_id=\"private_dataset\",\n description=\"This dataset is private\")\nauthorized_routine = gcp.bigquery.DatasetAccess(\"authorized_routine\",\n dataset_id=private.dataset_id,\n routine={\n \"project_id\": public_routine.project,\n \"dataset_id\": public_routine.dataset_id,\n \"routine_id\": public_routine.routine_id,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @public = new Gcp.BigQuery.Dataset(\"public\", new()\n {\n DatasetId = \"public_dataset\",\n Description = \"This dataset is public\",\n });\n\n var publicRoutine = new Gcp.BigQuery.Routine(\"public\", new()\n {\n DatasetId = @public.DatasetId,\n RoutineId = \"public_routine\",\n RoutineType = \"TABLE_VALUED_FUNCTION\",\n Language = \"SQL\",\n DefinitionBody = @\"SELECT 1 + value AS value\n\",\n Arguments = new[]\n {\n new Gcp.BigQuery.Inputs.RoutineArgumentArgs\n {\n Name = \"value\",\n ArgumentKind = \"FIXED_TYPE\",\n DataType = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"typeKind\"] = \"INT64\",\n }),\n },\n },\n ReturnTableType = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"columns\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"name\"] = \"value\",\n [\"type\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"typeKind\"] = \"INT64\",\n },\n },\n },\n }),\n });\n\n var @private = new Gcp.BigQuery.Dataset(\"private\", new()\n {\n DatasetId = \"private_dataset\",\n Description = \"This dataset is private\",\n });\n\n var authorizedRoutine = new Gcp.BigQuery.DatasetAccess(\"authorized_routine\", new()\n {\n DatasetId = @private.DatasetId,\n Routine = new Gcp.BigQuery.Inputs.DatasetAccessRoutineArgs\n {\n ProjectId = publicRoutine.Project,\n DatasetId = publicRoutine.DatasetId,\n RoutineId = publicRoutine.RoutineId,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpublic, err := bigquery.NewDataset(ctx, \"public\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"public_dataset\"),\n\t\t\tDescription: pulumi.String(\"This dataset is public\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"typeKind\": \"INT64\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\"columns\": []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"name\": \"value\",\n\t\t\t\t\t\"type\": map[string]interface{}{\n\t\t\t\t\t\t\"typeKind\": \"INT64\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson1 := string(tmpJSON1)\n\t\tpublicRoutine, err := bigquery.NewRoutine(ctx, \"public\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: public.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"public_routine\"),\n\t\t\tRoutineType: pulumi.String(\"TABLE_VALUED_FUNCTION\"),\n\t\t\tLanguage: pulumi.String(\"SQL\"),\n\t\t\tDefinitionBody: pulumi.String(\"SELECT 1 + value AS value\\n\"),\n\t\t\tArguments: bigquery.RoutineArgumentArray{\n\t\t\t\t\u0026bigquery.RoutineArgumentArgs{\n\t\t\t\t\tName: pulumi.String(\"value\"),\n\t\t\t\t\tArgumentKind: pulumi.String(\"FIXED_TYPE\"),\n\t\t\t\t\tDataType: pulumi.String(json0),\n\t\t\t\t},\n\t\t\t},\n\t\t\tReturnTableType: pulumi.String(json1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivate, err := bigquery.NewDataset(ctx, \"private\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"private_dataset\"),\n\t\t\tDescription: pulumi.String(\"This dataset is private\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDatasetAccess(ctx, \"authorized_routine\", \u0026bigquery.DatasetAccessArgs{\n\t\t\tDatasetId: private.DatasetId,\n\t\t\tRoutine: \u0026bigquery.DatasetAccessRoutineArgs{\n\t\t\t\tProjectId: publicRoutine.Project,\n\t\t\t\tDatasetId: publicRoutine.DatasetId,\n\t\t\t\tRoutineId: publicRoutine.RoutineId,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineArgumentArgs;\nimport com.pulumi.gcp.bigquery.DatasetAccess;\nimport com.pulumi.gcp.bigquery.DatasetAccessArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessRoutineArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var public_ = new Dataset(\"public\", DatasetArgs.builder()\n .datasetId(\"public_dataset\")\n .description(\"This dataset is public\")\n .build());\n\n var publicRoutine = new Routine(\"publicRoutine\", RoutineArgs.builder()\n .datasetId(public_.datasetId())\n .routineId(\"public_routine\")\n .routineType(\"TABLE_VALUED_FUNCTION\")\n .language(\"SQL\")\n .definitionBody(\"\"\"\nSELECT 1 + value AS value\n \"\"\")\n .arguments(RoutineArgumentArgs.builder()\n .name(\"value\")\n .argumentKind(\"FIXED_TYPE\")\n .dataType(serializeJson(\n jsonObject(\n jsonProperty(\"typeKind\", \"INT64\")\n )))\n .build())\n .returnTableType(serializeJson(\n jsonObject(\n jsonProperty(\"columns\", jsonArray(jsonObject(\n jsonProperty(\"name\", \"value\"),\n jsonProperty(\"type\", jsonObject(\n jsonProperty(\"typeKind\", \"INT64\")\n ))\n )))\n )))\n .build());\n\n var private_ = new Dataset(\"private\", DatasetArgs.builder()\n .datasetId(\"private_dataset\")\n .description(\"This dataset is private\")\n .build());\n\n var authorizedRoutine = new DatasetAccess(\"authorizedRoutine\", DatasetAccessArgs.builder()\n .datasetId(private_.datasetId())\n .routine(DatasetAccessRoutineArgs.builder()\n .projectId(publicRoutine.project())\n .datasetId(publicRoutine.datasetId())\n .routineId(publicRoutine.routineId())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n public:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: public_dataset\n description: This dataset is public\n publicRoutine:\n type: gcp:bigquery:Routine\n name: public\n properties:\n datasetId: ${public.datasetId}\n routineId: public_routine\n routineType: TABLE_VALUED_FUNCTION\n language: SQL\n definitionBody: |\n SELECT 1 + value AS value\n arguments:\n - name: value\n argumentKind: FIXED_TYPE\n dataType:\n fn::toJSON:\n typeKind: INT64\n returnTableType:\n fn::toJSON:\n columns:\n - name: value\n type:\n typeKind: INT64\n private:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: private_dataset\n description: This dataset is private\n authorizedRoutine:\n type: gcp:bigquery:DatasetAccess\n name: authorized_routine\n properties:\n datasetId: ${private.datasetId}\n routine:\n projectId: ${publicRoutine.project}\n datasetId: ${publicRoutine.datasetId}\n routineId: ${publicRoutine.routineId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource does not support import.\n\n", + "description": "## Example Usage\n\n### Bigquery Dataset Access Basic User\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dataset = new gcp.bigquery.Dataset(\"dataset\", {datasetId: \"example_dataset\"});\nconst bqowner = new gcp.serviceaccount.Account(\"bqowner\", {accountId: \"bqowner\"});\nconst access = new gcp.bigquery.DatasetAccess(\"access\", {\n datasetId: dataset.datasetId,\n role: \"OWNER\",\n userByEmail: bqowner.email,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndataset = gcp.bigquery.Dataset(\"dataset\", dataset_id=\"example_dataset\")\nbqowner = gcp.serviceaccount.Account(\"bqowner\", account_id=\"bqowner\")\naccess = gcp.bigquery.DatasetAccess(\"access\",\n dataset_id=dataset.dataset_id,\n role=\"OWNER\",\n user_by_email=bqowner.email)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var dataset = new Gcp.BigQuery.Dataset(\"dataset\", new()\n {\n DatasetId = \"example_dataset\",\n });\n\n var bqowner = new Gcp.ServiceAccount.Account(\"bqowner\", new()\n {\n AccountId = \"bqowner\",\n });\n\n var access = new Gcp.BigQuery.DatasetAccess(\"access\", new()\n {\n DatasetId = dataset.DatasetId,\n Role = \"OWNER\",\n UserByEmail = bqowner.Email,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdataset, err := bigquery.NewDataset(ctx, \"dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbqowner, err := serviceaccount.NewAccount(ctx, \"bqowner\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"bqowner\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDatasetAccess(ctx, \"access\", \u0026bigquery.DatasetAccessArgs{\n\t\t\tDatasetId: dataset.DatasetId,\n\t\t\tRole: pulumi.String(\"OWNER\"),\n\t\t\tUserByEmail: bqowner.Email,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.bigquery.DatasetAccess;\nimport com.pulumi.gcp.bigquery.DatasetAccessArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder()\n .datasetId(\"example_dataset\")\n .build());\n\n var bqowner = new Account(\"bqowner\", AccountArgs.builder()\n .accountId(\"bqowner\")\n .build());\n\n var access = new DatasetAccess(\"access\", DatasetAccessArgs.builder()\n .datasetId(dataset.datasetId())\n .role(\"OWNER\")\n .userByEmail(bqowner.email())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n access:\n type: gcp:bigquery:DatasetAccess\n properties:\n datasetId: ${dataset.datasetId}\n role: OWNER\n userByEmail: ${bqowner.email}\n dataset:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n bqowner:\n type: gcp:serviceaccount:Account\n properties:\n accountId: bqowner\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Dataset Access View\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _private = new gcp.bigquery.Dataset(\"private\", {datasetId: \"example_dataset\"});\nconst _public = new gcp.bigquery.Dataset(\"public\", {datasetId: \"example_dataset2\"});\nconst publicTable = new gcp.bigquery.Table(\"public\", {\n deletionProtection: false,\n datasetId: _public.datasetId,\n tableId: \"example_table\",\n view: {\n query: \"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\",\n useLegacySql: false,\n },\n});\nconst access = new gcp.bigquery.DatasetAccess(\"access\", {\n datasetId: _private.datasetId,\n view: {\n projectId: publicTable.project,\n datasetId: _public.datasetId,\n tableId: publicTable.tableId,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprivate = gcp.bigquery.Dataset(\"private\", dataset_id=\"example_dataset\")\npublic = gcp.bigquery.Dataset(\"public\", dataset_id=\"example_dataset2\")\npublic_table = gcp.bigquery.Table(\"public\",\n deletion_protection=False,\n dataset_id=public.dataset_id,\n table_id=\"example_table\",\n view={\n \"query\": \"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\",\n \"use_legacy_sql\": False,\n })\naccess = gcp.bigquery.DatasetAccess(\"access\",\n dataset_id=private.dataset_id,\n view={\n \"project_id\": public_table.project,\n \"dataset_id\": public.dataset_id,\n \"table_id\": public_table.table_id,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @private = new Gcp.BigQuery.Dataset(\"private\", new()\n {\n DatasetId = \"example_dataset\",\n });\n\n var @public = new Gcp.BigQuery.Dataset(\"public\", new()\n {\n DatasetId = \"example_dataset2\",\n });\n\n var publicTable = new Gcp.BigQuery.Table(\"public\", new()\n {\n DeletionProtection = false,\n DatasetId = @public.DatasetId,\n TableId = \"example_table\",\n View = new Gcp.BigQuery.Inputs.TableViewArgs\n {\n Query = \"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\",\n UseLegacySql = false,\n },\n });\n\n var access = new Gcp.BigQuery.DatasetAccess(\"access\", new()\n {\n DatasetId = @private.DatasetId,\n View = new Gcp.BigQuery.Inputs.DatasetAccessViewArgs\n {\n ProjectId = publicTable.Project,\n DatasetId = @public.DatasetId,\n TableId = publicTable.TableId,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprivate, err := bigquery.NewDataset(ctx, \"private\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpublic, err := bigquery.NewDataset(ctx, \"public\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset2\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpublicTable, err := bigquery.NewTable(ctx, \"public\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: public.DatasetId,\n\t\t\tTableId: pulumi.String(\"example_table\"),\n\t\t\tView: \u0026bigquery.TableViewArgs{\n\t\t\t\tQuery: pulumi.String(\"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\"),\n\t\t\t\tUseLegacySql: pulumi.Bool(false),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDatasetAccess(ctx, \"access\", \u0026bigquery.DatasetAccessArgs{\n\t\t\tDatasetId: private.DatasetId,\n\t\t\tView: \u0026bigquery.DatasetAccessViewArgs{\n\t\t\t\tProjectId: publicTable.Project,\n\t\t\t\tDatasetId: public.DatasetId,\n\t\t\t\tTableId: publicTable.TableId,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.bigquery.inputs.TableViewArgs;\nimport com.pulumi.gcp.bigquery.DatasetAccess;\nimport com.pulumi.gcp.bigquery.DatasetAccessArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessViewArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var private_ = new Dataset(\"private\", DatasetArgs.builder()\n .datasetId(\"example_dataset\")\n .build());\n\n var public_ = new Dataset(\"public\", DatasetArgs.builder()\n .datasetId(\"example_dataset2\")\n .build());\n\n var publicTable = new Table(\"publicTable\", TableArgs.builder()\n .deletionProtection(false)\n .datasetId(public_.datasetId())\n .tableId(\"example_table\")\n .view(TableViewArgs.builder()\n .query(\"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\")\n .useLegacySql(false)\n .build())\n .build());\n\n var access = new DatasetAccess(\"access\", DatasetAccessArgs.builder()\n .datasetId(private_.datasetId())\n .view(DatasetAccessViewArgs.builder()\n .projectId(publicTable.project())\n .datasetId(public_.datasetId())\n .tableId(publicTable.tableId())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n access:\n type: gcp:bigquery:DatasetAccess\n properties:\n datasetId: ${private.datasetId}\n view:\n projectId: ${publicTable.project}\n datasetId: ${public.datasetId}\n tableId: ${publicTable.tableId}\n private:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n public:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset2\n publicTable:\n type: gcp:bigquery:Table\n name: public\n properties:\n deletionProtection: false\n datasetId: ${public.datasetId}\n tableId: example_table\n view:\n query: SELECT state FROM [lookerdata:cdc.project_tycho_reports]\n useLegacySql: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Dataset Access Authorized Dataset\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _private = new gcp.bigquery.Dataset(\"private\", {datasetId: \"private\"});\nconst _public = new gcp.bigquery.Dataset(\"public\", {datasetId: \"public\"});\nconst access = new gcp.bigquery.DatasetAccess(\"access\", {\n datasetId: _private.datasetId,\n authorizedDataset: {\n dataset: {\n projectId: _public.project,\n datasetId: _public.datasetId,\n },\n targetTypes: [\"VIEWS\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprivate = gcp.bigquery.Dataset(\"private\", dataset_id=\"private\")\npublic = gcp.bigquery.Dataset(\"public\", dataset_id=\"public\")\naccess = gcp.bigquery.DatasetAccess(\"access\",\n dataset_id=private.dataset_id,\n authorized_dataset={\n \"dataset\": {\n \"project_id\": public.project,\n \"dataset_id\": public.dataset_id,\n },\n \"target_types\": [\"VIEWS\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @private = new Gcp.BigQuery.Dataset(\"private\", new()\n {\n DatasetId = \"private\",\n });\n\n var @public = new Gcp.BigQuery.Dataset(\"public\", new()\n {\n DatasetId = \"public\",\n });\n\n var access = new Gcp.BigQuery.DatasetAccess(\"access\", new()\n {\n DatasetId = @private.DatasetId,\n AuthorizedDataset = new Gcp.BigQuery.Inputs.DatasetAccessAuthorizedDatasetArgs\n {\n Dataset = new Gcp.BigQuery.Inputs.DatasetAccessAuthorizedDatasetDatasetArgs\n {\n ProjectId = @public.Project,\n DatasetId = @public.DatasetId,\n },\n TargetTypes = new[]\n {\n \"VIEWS\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprivate, err := bigquery.NewDataset(ctx, \"private\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"private\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpublic, err := bigquery.NewDataset(ctx, \"public\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"public\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDatasetAccess(ctx, \"access\", \u0026bigquery.DatasetAccessArgs{\n\t\t\tDatasetId: private.DatasetId,\n\t\t\tAuthorizedDataset: \u0026bigquery.DatasetAccessAuthorizedDatasetArgs{\n\t\t\t\tDataset: \u0026bigquery.DatasetAccessAuthorizedDatasetDatasetArgs{\n\t\t\t\t\tProjectId: public.Project,\n\t\t\t\t\tDatasetId: public.DatasetId,\n\t\t\t\t},\n\t\t\t\tTargetTypes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"VIEWS\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.DatasetAccess;\nimport com.pulumi.gcp.bigquery.DatasetAccessArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessAuthorizedDatasetArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessAuthorizedDatasetDatasetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var private_ = new Dataset(\"private\", DatasetArgs.builder()\n .datasetId(\"private\")\n .build());\n\n var public_ = new Dataset(\"public\", DatasetArgs.builder()\n .datasetId(\"public\")\n .build());\n\n var access = new DatasetAccess(\"access\", DatasetAccessArgs.builder()\n .datasetId(private_.datasetId())\n .authorizedDataset(DatasetAccessAuthorizedDatasetArgs.builder()\n .dataset(DatasetAccessAuthorizedDatasetDatasetArgs.builder()\n .projectId(public_.project())\n .datasetId(public_.datasetId())\n .build())\n .targetTypes(\"VIEWS\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n access:\n type: gcp:bigquery:DatasetAccess\n properties:\n datasetId: ${private.datasetId}\n authorizedDataset:\n dataset:\n projectId: ${public.project}\n datasetId: ${public.datasetId}\n targetTypes:\n - VIEWS\n private:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: private\n public:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: public\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Dataset Access Authorized Routine\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _public = new gcp.bigquery.Dataset(\"public\", {\n datasetId: \"public_dataset\",\n description: \"This dataset is public\",\n});\nconst publicRoutine = new gcp.bigquery.Routine(\"public\", {\n datasetId: _public.datasetId,\n routineId: \"public_routine\",\n routineType: \"TABLE_VALUED_FUNCTION\",\n language: \"SQL\",\n definitionBody: \"SELECT 1 + value AS value\\n\",\n arguments: [{\n name: \"value\",\n argumentKind: \"FIXED_TYPE\",\n dataType: JSON.stringify({\n typeKind: \"INT64\",\n }),\n }],\n returnTableType: JSON.stringify({\n columns: [{\n name: \"value\",\n type: {\n typeKind: \"INT64\",\n },\n }],\n }),\n});\nconst _private = new gcp.bigquery.Dataset(\"private\", {\n datasetId: \"private_dataset\",\n description: \"This dataset is private\",\n});\nconst authorizedRoutine = new gcp.bigquery.DatasetAccess(\"authorized_routine\", {\n datasetId: _private.datasetId,\n routine: {\n projectId: publicRoutine.project,\n datasetId: publicRoutine.datasetId,\n routineId: publicRoutine.routineId,\n },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\npublic = gcp.bigquery.Dataset(\"public\",\n dataset_id=\"public_dataset\",\n description=\"This dataset is public\")\npublic_routine = gcp.bigquery.Routine(\"public\",\n dataset_id=public.dataset_id,\n routine_id=\"public_routine\",\n routine_type=\"TABLE_VALUED_FUNCTION\",\n language=\"SQL\",\n definition_body=\"SELECT 1 + value AS value\\n\",\n arguments=[{\n \"name\": \"value\",\n \"argument_kind\": \"FIXED_TYPE\",\n \"data_type\": json.dumps({\n \"typeKind\": \"INT64\",\n }),\n }],\n return_table_type=json.dumps({\n \"columns\": [{\n \"name\": \"value\",\n \"type\": {\n \"typeKind\": \"INT64\",\n },\n }],\n }))\nprivate = gcp.bigquery.Dataset(\"private\",\n dataset_id=\"private_dataset\",\n description=\"This dataset is private\")\nauthorized_routine = gcp.bigquery.DatasetAccess(\"authorized_routine\",\n dataset_id=private.dataset_id,\n routine={\n \"project_id\": public_routine.project,\n \"dataset_id\": public_routine.dataset_id,\n \"routine_id\": public_routine.routine_id,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @public = new Gcp.BigQuery.Dataset(\"public\", new()\n {\n DatasetId = \"public_dataset\",\n Description = \"This dataset is public\",\n });\n\n var publicRoutine = new Gcp.BigQuery.Routine(\"public\", new()\n {\n DatasetId = @public.DatasetId,\n RoutineId = \"public_routine\",\n RoutineType = \"TABLE_VALUED_FUNCTION\",\n Language = \"SQL\",\n DefinitionBody = @\"SELECT 1 + value AS value\n\",\n Arguments = new[]\n {\n new Gcp.BigQuery.Inputs.RoutineArgumentArgs\n {\n Name = \"value\",\n ArgumentKind = \"FIXED_TYPE\",\n DataType = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"typeKind\"] = \"INT64\",\n }),\n },\n },\n ReturnTableType = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"columns\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"name\"] = \"value\",\n [\"type\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"typeKind\"] = \"INT64\",\n },\n },\n },\n }),\n });\n\n var @private = new Gcp.BigQuery.Dataset(\"private\", new()\n {\n DatasetId = \"private_dataset\",\n Description = \"This dataset is private\",\n });\n\n var authorizedRoutine = new Gcp.BigQuery.DatasetAccess(\"authorized_routine\", new()\n {\n DatasetId = @private.DatasetId,\n Routine = new Gcp.BigQuery.Inputs.DatasetAccessRoutineArgs\n {\n ProjectId = publicRoutine.Project,\n DatasetId = publicRoutine.DatasetId,\n RoutineId = publicRoutine.RoutineId,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpublic, err := bigquery.NewDataset(ctx, \"public\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"public_dataset\"),\n\t\t\tDescription: pulumi.String(\"This dataset is public\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"typeKind\": \"INT64\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\"columns\": []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"name\": \"value\",\n\t\t\t\t\t\"type\": map[string]interface{}{\n\t\t\t\t\t\t\"typeKind\": \"INT64\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson1 := string(tmpJSON1)\n\t\tpublicRoutine, err := bigquery.NewRoutine(ctx, \"public\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: public.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"public_routine\"),\n\t\t\tRoutineType: pulumi.String(\"TABLE_VALUED_FUNCTION\"),\n\t\t\tLanguage: pulumi.String(\"SQL\"),\n\t\t\tDefinitionBody: pulumi.String(\"SELECT 1 + value AS value\\n\"),\n\t\t\tArguments: bigquery.RoutineArgumentArray{\n\t\t\t\t\u0026bigquery.RoutineArgumentArgs{\n\t\t\t\t\tName: pulumi.String(\"value\"),\n\t\t\t\t\tArgumentKind: pulumi.String(\"FIXED_TYPE\"),\n\t\t\t\t\tDataType: pulumi.String(json0),\n\t\t\t\t},\n\t\t\t},\n\t\t\tReturnTableType: pulumi.String(json1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivate, err := bigquery.NewDataset(ctx, \"private\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"private_dataset\"),\n\t\t\tDescription: pulumi.String(\"This dataset is private\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDatasetAccess(ctx, \"authorized_routine\", \u0026bigquery.DatasetAccessArgs{\n\t\t\tDatasetId: private.DatasetId,\n\t\t\tRoutine: \u0026bigquery.DatasetAccessRoutineArgs{\n\t\t\t\tProjectId: publicRoutine.Project,\n\t\t\t\tDatasetId: publicRoutine.DatasetId,\n\t\t\t\tRoutineId: publicRoutine.RoutineId,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineArgumentArgs;\nimport com.pulumi.gcp.bigquery.DatasetAccess;\nimport com.pulumi.gcp.bigquery.DatasetAccessArgs;\nimport com.pulumi.gcp.bigquery.inputs.DatasetAccessRoutineArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var public_ = new Dataset(\"public\", DatasetArgs.builder()\n .datasetId(\"public_dataset\")\n .description(\"This dataset is public\")\n .build());\n\n var publicRoutine = new Routine(\"publicRoutine\", RoutineArgs.builder()\n .datasetId(public_.datasetId())\n .routineId(\"public_routine\")\n .routineType(\"TABLE_VALUED_FUNCTION\")\n .language(\"SQL\")\n .definitionBody(\"\"\"\nSELECT 1 + value AS value\n \"\"\")\n .arguments(RoutineArgumentArgs.builder()\n .name(\"value\")\n .argumentKind(\"FIXED_TYPE\")\n .dataType(serializeJson(\n jsonObject(\n jsonProperty(\"typeKind\", \"INT64\")\n )))\n .build())\n .returnTableType(serializeJson(\n jsonObject(\n jsonProperty(\"columns\", jsonArray(jsonObject(\n jsonProperty(\"name\", \"value\"),\n jsonProperty(\"type\", jsonObject(\n jsonProperty(\"typeKind\", \"INT64\")\n ))\n )))\n )))\n .build());\n\n var private_ = new Dataset(\"private\", DatasetArgs.builder()\n .datasetId(\"private_dataset\")\n .description(\"This dataset is private\")\n .build());\n\n var authorizedRoutine = new DatasetAccess(\"authorizedRoutine\", DatasetAccessArgs.builder()\n .datasetId(private_.datasetId())\n .routine(DatasetAccessRoutineArgs.builder()\n .projectId(publicRoutine.project())\n .datasetId(publicRoutine.datasetId())\n .routineId(publicRoutine.routineId())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n public:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: public_dataset\n description: This dataset is public\n publicRoutine:\n type: gcp:bigquery:Routine\n name: public\n properties:\n datasetId: ${public.datasetId}\n routineId: public_routine\n routineType: TABLE_VALUED_FUNCTION\n language: SQL\n definitionBody: |\n SELECT 1 + value AS value\n arguments:\n - name: value\n argumentKind: FIXED_TYPE\n dataType:\n fn::toJSON:\n typeKind: INT64\n returnTableType:\n fn::toJSON:\n columns:\n - name: value\n type:\n typeKind: INT64\n private:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: private_dataset\n description: This dataset is private\n authorizedRoutine:\n type: gcp:bigquery:DatasetAccess\n name: authorized_routine\n properties:\n datasetId: ${private.datasetId}\n routine:\n projectId: ${publicRoutine.project}\n datasetId: ${publicRoutine.datasetId}\n routineId: ${publicRoutine.routineId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource does not support import.\n\n", "properties": { "apiUpdatedMember": { "type": "boolean", @@ -129660,7 +129660,7 @@ } }, "gcp:bigquery/routine:Routine": { - "description": "A user-defined function or a stored procedure that belongs to a Dataset\n\n\nTo get more information about Routine, see:\n\n* [API documentation](https://cloud.google.com/bigquery/docs/reference/rest/v2/routines)\n* How-to Guides\n * [Routines Intro](https://cloud.google.com/bigquery/docs/reference/rest/v2/routines)\n\n## Example Usage\n\n### Bigquery Routine Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"dataset_id\"});\nconst sproc = new gcp.bigquery.Routine(\"sproc\", {\n datasetId: test.datasetId,\n routineId: \"routine_id\",\n routineType: \"PROCEDURE\",\n language: \"SQL\",\n definitionBody: \"CREATE FUNCTION Add(x FLOAT64, y FLOAT64) RETURNS FLOAT64 AS (x + y);\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"dataset_id\")\nsproc = gcp.bigquery.Routine(\"sproc\",\n dataset_id=test.dataset_id,\n routine_id=\"routine_id\",\n routine_type=\"PROCEDURE\",\n language=\"SQL\",\n definition_body=\"CREATE FUNCTION Add(x FLOAT64, y FLOAT64) RETURNS FLOAT64 AS (x + y);\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"dataset_id\",\n });\n\n var sproc = new Gcp.BigQuery.Routine(\"sproc\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"routine_id\",\n RoutineType = \"PROCEDURE\",\n Language = \"SQL\",\n DefinitionBody = \"CREATE FUNCTION Add(x FLOAT64, y FLOAT64) RETURNS FLOAT64 AS (x + y);\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataset_id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewRoutine(ctx, \"sproc\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"routine_id\"),\n\t\t\tRoutineType: pulumi.String(\"PROCEDURE\"),\n\t\t\tLanguage: pulumi.String(\"SQL\"),\n\t\t\tDefinitionBody: pulumi.String(\"CREATE FUNCTION Add(x FLOAT64, y FLOAT64) RETURNS FLOAT64 AS (x + y);\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"dataset_id\")\n .build());\n\n var sproc = new Routine(\"sproc\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"routine_id\")\n .routineType(\"PROCEDURE\")\n .language(\"SQL\")\n .definitionBody(\"CREATE FUNCTION Add(x FLOAT64, y FLOAT64) RETURNS FLOAT64 AS (x + y);\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataset_id\n sproc:\n type: gcp:bigquery:Routine\n properties:\n datasetId: ${test.datasetId}\n routineId: routine_id\n routineType: PROCEDURE\n language: SQL\n definitionBody: CREATE FUNCTION Add(x FLOAT64, y FLOAT64) RETURNS FLOAT64 AS (x + y);\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Routine Json\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"dataset_id\"});\nconst sproc = new gcp.bigquery.Routine(\"sproc\", {\n datasetId: test.datasetId,\n routineId: \"routine_id\",\n routineType: \"SCALAR_FUNCTION\",\n language: \"JAVASCRIPT\",\n definitionBody: \"CREATE FUNCTION multiplyInputs return x*y;\",\n arguments: [\n {\n name: \"x\",\n dataType: \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n },\n {\n name: \"y\",\n dataType: \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n },\n ],\n returnType: \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"dataset_id\")\nsproc = gcp.bigquery.Routine(\"sproc\",\n dataset_id=test.dataset_id,\n routine_id=\"routine_id\",\n routine_type=\"SCALAR_FUNCTION\",\n language=\"JAVASCRIPT\",\n definition_body=\"CREATE FUNCTION multiplyInputs return x*y;\",\n arguments=[\n {\n \"name\": \"x\",\n \"data_type\": \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n },\n {\n \"name\": \"y\",\n \"data_type\": \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n },\n ],\n return_type=\"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"dataset_id\",\n });\n\n var sproc = new Gcp.BigQuery.Routine(\"sproc\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"routine_id\",\n RoutineType = \"SCALAR_FUNCTION\",\n Language = \"JAVASCRIPT\",\n DefinitionBody = \"CREATE FUNCTION multiplyInputs return x*y;\",\n Arguments = new[]\n {\n new Gcp.BigQuery.Inputs.RoutineArgumentArgs\n {\n Name = \"x\",\n DataType = \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n },\n new Gcp.BigQuery.Inputs.RoutineArgumentArgs\n {\n Name = \"y\",\n DataType = \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n },\n },\n ReturnType = \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataset_id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewRoutine(ctx, \"sproc\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"routine_id\"),\n\t\t\tRoutineType: pulumi.String(\"SCALAR_FUNCTION\"),\n\t\t\tLanguage: pulumi.String(\"JAVASCRIPT\"),\n\t\t\tDefinitionBody: pulumi.String(\"CREATE FUNCTION multiplyInputs return x*y;\"),\n\t\t\tArguments: bigquery.RoutineArgumentArray{\n\t\t\t\t\u0026bigquery.RoutineArgumentArgs{\n\t\t\t\t\tName: pulumi.String(\"x\"),\n\t\t\t\t\tDataType: pulumi.String(\"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\"),\n\t\t\t\t},\n\t\t\t\t\u0026bigquery.RoutineArgumentArgs{\n\t\t\t\t\tName: pulumi.String(\"y\"),\n\t\t\t\t\tDataType: pulumi.String(\"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tReturnType: pulumi.String(\"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineArgumentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"dataset_id\")\n .build());\n\n var sproc = new Routine(\"sproc\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"routine_id\")\n .routineType(\"SCALAR_FUNCTION\")\n .language(\"JAVASCRIPT\")\n .definitionBody(\"CREATE FUNCTION multiplyInputs return x*y;\")\n .arguments( \n RoutineArgumentArgs.builder()\n .name(\"x\")\n .dataType(\"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\")\n .build(),\n RoutineArgumentArgs.builder()\n .name(\"y\")\n .dataType(\"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\")\n .build())\n .returnType(\"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataset_id\n sproc:\n type: gcp:bigquery:Routine\n properties:\n datasetId: ${test.datasetId}\n routineId: routine_id\n routineType: SCALAR_FUNCTION\n language: JAVASCRIPT\n definitionBody: CREATE FUNCTION multiplyInputs return x*y;\n arguments:\n - name: x\n dataType: '{\"typeKind\" : \"FLOAT64\"}'\n - name: y\n dataType: '{\"typeKind\" : \"FLOAT64\"}'\n returnType: '{\"typeKind\" : \"FLOAT64\"}'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Routine Tvf\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"dataset_id\"});\nconst sproc = new gcp.bigquery.Routine(\"sproc\", {\n datasetId: test.datasetId,\n routineId: \"routine_id\",\n routineType: \"TABLE_VALUED_FUNCTION\",\n language: \"SQL\",\n definitionBody: \"SELECT 1 + value AS value\\n\",\n arguments: [{\n name: \"value\",\n argumentKind: \"FIXED_TYPE\",\n dataType: JSON.stringify({\n typeKind: \"INT64\",\n }),\n }],\n returnTableType: JSON.stringify({\n columns: [{\n name: \"value\",\n type: {\n typeKind: \"INT64\",\n },\n }],\n }),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"dataset_id\")\nsproc = gcp.bigquery.Routine(\"sproc\",\n dataset_id=test.dataset_id,\n routine_id=\"routine_id\",\n routine_type=\"TABLE_VALUED_FUNCTION\",\n language=\"SQL\",\n definition_body=\"SELECT 1 + value AS value\\n\",\n arguments=[{\n \"name\": \"value\",\n \"argument_kind\": \"FIXED_TYPE\",\n \"data_type\": json.dumps({\n \"type_kind\": \"INT64\",\n }),\n }],\n return_table_type=json.dumps({\n \"columns\": [{\n \"name\": \"value\",\n \"type\": {\n \"typeKind\": \"INT64\",\n },\n }],\n }))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"dataset_id\",\n });\n\n var sproc = new Gcp.BigQuery.Routine(\"sproc\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"routine_id\",\n RoutineType = \"TABLE_VALUED_FUNCTION\",\n Language = \"SQL\",\n DefinitionBody = @\"SELECT 1 + value AS value\n\",\n Arguments = new[]\n {\n new Gcp.BigQuery.Inputs.RoutineArgumentArgs\n {\n Name = \"value\",\n ArgumentKind = \"FIXED_TYPE\",\n DataType = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"typeKind\"] = \"INT64\",\n }),\n },\n },\n ReturnTableType = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"columns\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"name\"] = \"value\",\n [\"type\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"typeKind\"] = \"INT64\",\n },\n },\n },\n }),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataset_id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"typeKind\": \"INT64\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\"columns\": []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"name\": \"value\",\n\t\t\t\t\t\"type\": map[string]interface{}{\n\t\t\t\t\t\t\"typeKind\": \"INT64\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson1 := string(tmpJSON1)\n\t\t_, err = bigquery.NewRoutine(ctx, \"sproc\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"routine_id\"),\n\t\t\tRoutineType: pulumi.String(\"TABLE_VALUED_FUNCTION\"),\n\t\t\tLanguage: pulumi.String(\"SQL\"),\n\t\t\tDefinitionBody: pulumi.String(\"SELECT 1 + value AS value\\n\"),\n\t\t\tArguments: bigquery.RoutineArgumentArray{\n\t\t\t\t\u0026bigquery.RoutineArgumentArgs{\n\t\t\t\t\tName: pulumi.String(\"value\"),\n\t\t\t\t\tArgumentKind: pulumi.String(\"FIXED_TYPE\"),\n\t\t\t\t\tDataType: pulumi.String(json0),\n\t\t\t\t},\n\t\t\t},\n\t\t\tReturnTableType: pulumi.String(json1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineArgumentArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"dataset_id\")\n .build());\n\n var sproc = new Routine(\"sproc\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"routine_id\")\n .routineType(\"TABLE_VALUED_FUNCTION\")\n .language(\"SQL\")\n .definitionBody(\"\"\"\nSELECT 1 + value AS value\n \"\"\")\n .arguments(RoutineArgumentArgs.builder()\n .name(\"value\")\n .argumentKind(\"FIXED_TYPE\")\n .dataType(serializeJson(\n jsonObject(\n jsonProperty(\"typeKind\", \"INT64\")\n )))\n .build())\n .returnTableType(serializeJson(\n jsonObject(\n jsonProperty(\"columns\", jsonArray(jsonObject(\n jsonProperty(\"name\", \"value\"),\n jsonProperty(\"type\", jsonObject(\n jsonProperty(\"typeKind\", \"INT64\")\n ))\n )))\n )))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataset_id\n sproc:\n type: gcp:bigquery:Routine\n properties:\n datasetId: ${test.datasetId}\n routineId: routine_id\n routineType: TABLE_VALUED_FUNCTION\n language: SQL\n definitionBody: |\n SELECT 1 + value AS value\n arguments:\n - name: value\n argumentKind: FIXED_TYPE\n dataType:\n fn::toJSON:\n typeKind: INT64\n returnTableType:\n fn::toJSON:\n columns:\n - name: value\n type:\n typeKind: INT64\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Routine Pyspark\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"dataset_id\"});\nconst testConnection = new gcp.bigquery.Connection(\"test\", {\n connectionId: \"connection_id\",\n location: \"US\",\n spark: {},\n});\nconst pyspark = new gcp.bigquery.Routine(\"pyspark\", {\n datasetId: test.datasetId,\n routineId: \"routine_id\",\n routineType: \"PROCEDURE\",\n language: \"PYTHON\",\n definitionBody: `from pyspark.sql import SparkSession\n\nspark = SparkSession.builder.appName(\"spark-bigquery-demo\").getOrCreate()\n \n# Load data from BigQuery.\nwords = spark.read.format(\"bigquery\") \\\\\n .option(\"table\", \"bigquery-public-data:samples.shakespeare\") \\\\\n .load()\nwords.createOrReplaceTempView(\"words\")\n \n# Perform word count.\nword_count = words.select('word', 'word_count').groupBy('word').sum('word_count').withColumnRenamed(\"sum(word_count)\", \"sum_word_count\")\nword_count.show()\nword_count.printSchema()\n \n# Saving the data to BigQuery\nword_count.write.format(\"bigquery\") \\\\\n .option(\"writeMethod\", \"direct\") \\\\\n .save(\"wordcount_dataset.wordcount_output\")\n`,\n sparkOptions: {\n connection: testConnection.name,\n runtimeVersion: \"2.1\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"dataset_id\")\ntest_connection = gcp.bigquery.Connection(\"test\",\n connection_id=\"connection_id\",\n location=\"US\",\n spark={})\npyspark = gcp.bigquery.Routine(\"pyspark\",\n dataset_id=test.dataset_id,\n routine_id=\"routine_id\",\n routine_type=\"PROCEDURE\",\n language=\"PYTHON\",\n definition_body=\"\"\"from pyspark.sql import SparkSession\n\nspark = SparkSession.builder.appName(\"spark-bigquery-demo\").getOrCreate()\n \n# Load data from BigQuery.\nwords = spark.read.format(\"bigquery\") \\\n .option(\"table\", \"bigquery-public-data:samples.shakespeare\") \\\n .load()\nwords.createOrReplaceTempView(\"words\")\n \n# Perform word count.\nword_count = words.select('word', 'word_count').groupBy('word').sum('word_count').withColumnRenamed(\"sum(word_count)\", \"sum_word_count\")\nword_count.show()\nword_count.printSchema()\n \n# Saving the data to BigQuery\nword_count.write.format(\"bigquery\") \\\n .option(\"writeMethod\", \"direct\") \\\n .save(\"wordcount_dataset.wordcount_output\")\n\"\"\",\n spark_options={\n \"connection\": test_connection.name,\n \"runtime_version\": \"2.1\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"dataset_id\",\n });\n\n var testConnection = new Gcp.BigQuery.Connection(\"test\", new()\n {\n ConnectionId = \"connection_id\",\n Location = \"US\",\n Spark = null,\n });\n\n var pyspark = new Gcp.BigQuery.Routine(\"pyspark\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"routine_id\",\n RoutineType = \"PROCEDURE\",\n Language = \"PYTHON\",\n DefinitionBody = @\"from pyspark.sql import SparkSession\n\nspark = SparkSession.builder.appName(\"\"spark-bigquery-demo\"\").getOrCreate()\n \n# Load data from BigQuery.\nwords = spark.read.format(\"\"bigquery\"\") \\\n .option(\"\"table\"\", \"\"bigquery-public-data:samples.shakespeare\"\") \\\n .load()\nwords.createOrReplaceTempView(\"\"words\"\")\n \n# Perform word count.\nword_count = words.select('word', 'word_count').groupBy('word').sum('word_count').withColumnRenamed(\"\"sum(word_count)\"\", \"\"sum_word_count\"\")\nword_count.show()\nword_count.printSchema()\n \n# Saving the data to BigQuery\nword_count.write.format(\"\"bigquery\"\") \\\n .option(\"\"writeMethod\"\", \"\"direct\"\") \\\n .save(\"\"wordcount_dataset.wordcount_output\"\")\n\",\n SparkOptions = new Gcp.BigQuery.Inputs.RoutineSparkOptionsArgs\n {\n Connection = testConnection.Name,\n RuntimeVersion = \"2.1\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataset_id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestConnection, err := bigquery.NewConnection(ctx, \"test\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"connection_id\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tSpark: nil,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewRoutine(ctx, \"pyspark\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"routine_id\"),\n\t\t\tRoutineType: pulumi.String(\"PROCEDURE\"),\n\t\t\tLanguage: pulumi.String(\"PYTHON\"),\n\t\t\tDefinitionBody: pulumi.String(`from pyspark.sql import SparkSession\n\nspark = SparkSession.builder.appName(\"spark-bigquery-demo\").getOrCreate()\n \n# Load data from BigQuery.\nwords = spark.read.format(\"bigquery\") \\\n .option(\"table\", \"bigquery-public-data:samples.shakespeare\") \\\n .load()\nwords.createOrReplaceTempView(\"words\")\n \n# Perform word count.\nword_count = words.select('word', 'word_count').groupBy('word').sum('word_count').withColumnRenamed(\"sum(word_count)\", \"sum_word_count\")\nword_count.show()\nword_count.printSchema()\n \n# Saving the data to BigQuery\nword_count.write.format(\"bigquery\") \\\n .option(\"writeMethod\", \"direct\") \\\n .save(\"wordcount_dataset.wordcount_output\")\n`),\n\t\t\tSparkOptions: \u0026bigquery.RoutineSparkOptionsArgs{\n\t\t\t\tConnection: testConnection.Name,\n\t\t\t\tRuntimeVersion: pulumi.String(\"2.1\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionSparkArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineSparkOptionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"dataset_id\")\n .build());\n\n var testConnection = new Connection(\"testConnection\", ConnectionArgs.builder()\n .connectionId(\"connection_id\")\n .location(\"US\")\n .spark()\n .build());\n\n var pyspark = new Routine(\"pyspark\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"routine_id\")\n .routineType(\"PROCEDURE\")\n .language(\"PYTHON\")\n .definitionBody(\"\"\"\nfrom pyspark.sql import SparkSession\n\nspark = SparkSession.builder.appName(\"spark-bigquery-demo\").getOrCreate()\n \n# Load data from BigQuery.\nwords = spark.read.format(\"bigquery\") \\\n .option(\"table\", \"bigquery-public-data:samples.shakespeare\") \\\n .load()\nwords.createOrReplaceTempView(\"words\")\n \n# Perform word count.\nword_count = words.select('word', 'word_count').groupBy('word').sum('word_count').withColumnRenamed(\"sum(word_count)\", \"sum_word_count\")\nword_count.show()\nword_count.printSchema()\n \n# Saving the data to BigQuery\nword_count.write.format(\"bigquery\") \\\n .option(\"writeMethod\", \"direct\") \\\n .save(\"wordcount_dataset.wordcount_output\")\n \"\"\")\n .sparkOptions(RoutineSparkOptionsArgs.builder()\n .connection(testConnection.name())\n .runtimeVersion(\"2.1\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataset_id\n testConnection:\n type: gcp:bigquery:Connection\n name: test\n properties:\n connectionId: connection_id\n location: US\n spark: {}\n pyspark:\n type: gcp:bigquery:Routine\n properties:\n datasetId: ${test.datasetId}\n routineId: routine_id\n routineType: PROCEDURE\n language: PYTHON\n definitionBody: \"from pyspark.sql import SparkSession\\n\\nspark = SparkSession.builder.appName(\\\"spark-bigquery-demo\\\").getOrCreate()\\n \\n# Load data from BigQuery.\\nwords = spark.read.format(\\\"bigquery\\\") \\\\\\n .option(\\\"table\\\", \\\"bigquery-public-data:samples.shakespeare\\\") \\\\\\n .load()\\nwords.createOrReplaceTempView(\\\"words\\\")\\n \\n# Perform word count.\\nword_count = words.select('word', 'word_count').groupBy('word').sum('word_count').withColumnRenamed(\\\"sum(word_count)\\\", \\\"sum_word_count\\\")\\nword_count.show()\\nword_count.printSchema()\\n \\n# Saving the data to BigQuery\\nword_count.write.format(\\\"bigquery\\\") \\\\\\n .option(\\\"writeMethod\\\", \\\"direct\\\") \\\\\\n .save(\\\"wordcount_dataset.wordcount_output\\\")\\n\"\n sparkOptions:\n connection: ${testConnection.name}\n runtimeVersion: '2.1'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Routine Pyspark Mainfile\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"dataset_id\"});\nconst testConnection = new gcp.bigquery.Connection(\"test\", {\n connectionId: \"connection_id\",\n location: \"US\",\n spark: {},\n});\nconst pysparkMainfile = new gcp.bigquery.Routine(\"pyspark_mainfile\", {\n datasetId: test.datasetId,\n routineId: \"routine_id\",\n routineType: \"PROCEDURE\",\n language: \"PYTHON\",\n definitionBody: \"\",\n sparkOptions: {\n connection: testConnection.name,\n runtimeVersion: \"2.1\",\n mainFileUri: \"gs://test-bucket/main.py\",\n pyFileUris: [\"gs://test-bucket/lib.py\"],\n fileUris: [\"gs://test-bucket/distribute_in_executor.json\"],\n archiveUris: [\"gs://test-bucket/distribute_in_executor.tar.gz\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"dataset_id\")\ntest_connection = gcp.bigquery.Connection(\"test\",\n connection_id=\"connection_id\",\n location=\"US\",\n spark={})\npyspark_mainfile = gcp.bigquery.Routine(\"pyspark_mainfile\",\n dataset_id=test.dataset_id,\n routine_id=\"routine_id\",\n routine_type=\"PROCEDURE\",\n language=\"PYTHON\",\n definition_body=\"\",\n spark_options={\n \"connection\": test_connection.name,\n \"runtime_version\": \"2.1\",\n \"main_file_uri\": \"gs://test-bucket/main.py\",\n \"py_file_uris\": [\"gs://test-bucket/lib.py\"],\n \"file_uris\": [\"gs://test-bucket/distribute_in_executor.json\"],\n \"archive_uris\": [\"gs://test-bucket/distribute_in_executor.tar.gz\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"dataset_id\",\n });\n\n var testConnection = new Gcp.BigQuery.Connection(\"test\", new()\n {\n ConnectionId = \"connection_id\",\n Location = \"US\",\n Spark = null,\n });\n\n var pysparkMainfile = new Gcp.BigQuery.Routine(\"pyspark_mainfile\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"routine_id\",\n RoutineType = \"PROCEDURE\",\n Language = \"PYTHON\",\n DefinitionBody = \"\",\n SparkOptions = new Gcp.BigQuery.Inputs.RoutineSparkOptionsArgs\n {\n Connection = testConnection.Name,\n RuntimeVersion = \"2.1\",\n MainFileUri = \"gs://test-bucket/main.py\",\n PyFileUris = new[]\n {\n \"gs://test-bucket/lib.py\",\n },\n FileUris = new[]\n {\n \"gs://test-bucket/distribute_in_executor.json\",\n },\n ArchiveUris = new[]\n {\n \"gs://test-bucket/distribute_in_executor.tar.gz\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataset_id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestConnection, err := bigquery.NewConnection(ctx, \"test\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"connection_id\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tSpark: nil,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewRoutine(ctx, \"pyspark_mainfile\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"routine_id\"),\n\t\t\tRoutineType: pulumi.String(\"PROCEDURE\"),\n\t\t\tLanguage: pulumi.String(\"PYTHON\"),\n\t\t\tDefinitionBody: pulumi.String(\"\"),\n\t\t\tSparkOptions: \u0026bigquery.RoutineSparkOptionsArgs{\n\t\t\t\tConnection: testConnection.Name,\n\t\t\t\tRuntimeVersion: pulumi.String(\"2.1\"),\n\t\t\t\tMainFileUri: pulumi.String(\"gs://test-bucket/main.py\"),\n\t\t\t\tPyFileUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://test-bucket/lib.py\"),\n\t\t\t\t},\n\t\t\t\tFileUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://test-bucket/distribute_in_executor.json\"),\n\t\t\t\t},\n\t\t\t\tArchiveUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://test-bucket/distribute_in_executor.tar.gz\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionSparkArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineSparkOptionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"dataset_id\")\n .build());\n\n var testConnection = new Connection(\"testConnection\", ConnectionArgs.builder()\n .connectionId(\"connection_id\")\n .location(\"US\")\n .spark()\n .build());\n\n var pysparkMainfile = new Routine(\"pysparkMainfile\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"routine_id\")\n .routineType(\"PROCEDURE\")\n .language(\"PYTHON\")\n .definitionBody(\"\")\n .sparkOptions(RoutineSparkOptionsArgs.builder()\n .connection(testConnection.name())\n .runtimeVersion(\"2.1\")\n .mainFileUri(\"gs://test-bucket/main.py\")\n .pyFileUris(\"gs://test-bucket/lib.py\")\n .fileUris(\"gs://test-bucket/distribute_in_executor.json\")\n .archiveUris(\"gs://test-bucket/distribute_in_executor.tar.gz\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataset_id\n testConnection:\n type: gcp:bigquery:Connection\n name: test\n properties:\n connectionId: connection_id\n location: US\n spark: {}\n pysparkMainfile:\n type: gcp:bigquery:Routine\n name: pyspark_mainfile\n properties:\n datasetId: ${test.datasetId}\n routineId: routine_id\n routineType: PROCEDURE\n language: PYTHON\n definitionBody:\n sparkOptions:\n connection: ${testConnection.name}\n runtimeVersion: '2.1'\n mainFileUri: gs://test-bucket/main.py\n pyFileUris:\n - gs://test-bucket/lib.py\n fileUris:\n - gs://test-bucket/distribute_in_executor.json\n archiveUris:\n - gs://test-bucket/distribute_in_executor.tar.gz\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Routine Spark Jar\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"dataset_id\"});\nconst testConnection = new gcp.bigquery.Connection(\"test\", {\n connectionId: \"connection_id\",\n location: \"US\",\n spark: {},\n});\nconst sparkJar = new gcp.bigquery.Routine(\"spark_jar\", {\n datasetId: test.datasetId,\n routineId: \"routine_id\",\n routineType: \"PROCEDURE\",\n language: \"SCALA\",\n definitionBody: \"\",\n sparkOptions: {\n connection: testConnection.name,\n runtimeVersion: \"2.1\",\n containerImage: \"gcr.io/my-project-id/my-spark-image:latest\",\n mainClass: \"com.google.test.jar.MainClass\",\n jarUris: [\"gs://test-bucket/uberjar_spark_spark3.jar\"],\n properties: {\n \"spark.dataproc.scaling.version\": \"2\",\n \"spark.reducer.fetchMigratedShuffle.enabled\": \"true\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"dataset_id\")\ntest_connection = gcp.bigquery.Connection(\"test\",\n connection_id=\"connection_id\",\n location=\"US\",\n spark={})\nspark_jar = gcp.bigquery.Routine(\"spark_jar\",\n dataset_id=test.dataset_id,\n routine_id=\"routine_id\",\n routine_type=\"PROCEDURE\",\n language=\"SCALA\",\n definition_body=\"\",\n spark_options={\n \"connection\": test_connection.name,\n \"runtime_version\": \"2.1\",\n \"container_image\": \"gcr.io/my-project-id/my-spark-image:latest\",\n \"main_class\": \"com.google.test.jar.MainClass\",\n \"jar_uris\": [\"gs://test-bucket/uberjar_spark_spark3.jar\"],\n \"properties\": {\n \"spark_dataproc_scaling_version\": \"2\",\n \"spark_reducer_fetch_migrated_shuffle_enabled\": \"true\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"dataset_id\",\n });\n\n var testConnection = new Gcp.BigQuery.Connection(\"test\", new()\n {\n ConnectionId = \"connection_id\",\n Location = \"US\",\n Spark = null,\n });\n\n var sparkJar = new Gcp.BigQuery.Routine(\"spark_jar\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"routine_id\",\n RoutineType = \"PROCEDURE\",\n Language = \"SCALA\",\n DefinitionBody = \"\",\n SparkOptions = new Gcp.BigQuery.Inputs.RoutineSparkOptionsArgs\n {\n Connection = testConnection.Name,\n RuntimeVersion = \"2.1\",\n ContainerImage = \"gcr.io/my-project-id/my-spark-image:latest\",\n MainClass = \"com.google.test.jar.MainClass\",\n JarUris = new[]\n {\n \"gs://test-bucket/uberjar_spark_spark3.jar\",\n },\n Properties = \n {\n { \"spark.dataproc.scaling.version\", \"2\" },\n { \"spark.reducer.fetchMigratedShuffle.enabled\", \"true\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataset_id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestConnection, err := bigquery.NewConnection(ctx, \"test\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"connection_id\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tSpark: nil,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewRoutine(ctx, \"spark_jar\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"routine_id\"),\n\t\t\tRoutineType: pulumi.String(\"PROCEDURE\"),\n\t\t\tLanguage: pulumi.String(\"SCALA\"),\n\t\t\tDefinitionBody: pulumi.String(\"\"),\n\t\t\tSparkOptions: \u0026bigquery.RoutineSparkOptionsArgs{\n\t\t\t\tConnection: testConnection.Name,\n\t\t\t\tRuntimeVersion: pulumi.String(\"2.1\"),\n\t\t\t\tContainerImage: pulumi.String(\"gcr.io/my-project-id/my-spark-image:latest\"),\n\t\t\t\tMainClass: pulumi.String(\"com.google.test.jar.MainClass\"),\n\t\t\t\tJarUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://test-bucket/uberjar_spark_spark3.jar\"),\n\t\t\t\t},\n\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\"spark.dataproc.scaling.version\": pulumi.String(\"2\"),\n\t\t\t\t\t\"spark.reducer.fetchMigratedShuffle.enabled\": pulumi.String(\"true\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionSparkArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineSparkOptionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"dataset_id\")\n .build());\n\n var testConnection = new Connection(\"testConnection\", ConnectionArgs.builder()\n .connectionId(\"connection_id\")\n .location(\"US\")\n .spark()\n .build());\n\n var sparkJar = new Routine(\"sparkJar\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"routine_id\")\n .routineType(\"PROCEDURE\")\n .language(\"SCALA\")\n .definitionBody(\"\")\n .sparkOptions(RoutineSparkOptionsArgs.builder()\n .connection(testConnection.name())\n .runtimeVersion(\"2.1\")\n .containerImage(\"gcr.io/my-project-id/my-spark-image:latest\")\n .mainClass(\"com.google.test.jar.MainClass\")\n .jarUris(\"gs://test-bucket/uberjar_spark_spark3.jar\")\n .properties(Map.ofEntries(\n Map.entry(\"spark.dataproc.scaling.version\", \"2\"),\n Map.entry(\"spark.reducer.fetchMigratedShuffle.enabled\", \"true\")\n ))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataset_id\n testConnection:\n type: gcp:bigquery:Connection\n name: test\n properties:\n connectionId: connection_id\n location: US\n spark: {}\n sparkJar:\n type: gcp:bigquery:Routine\n name: spark_jar\n properties:\n datasetId: ${test.datasetId}\n routineId: routine_id\n routineType: PROCEDURE\n language: SCALA\n definitionBody:\n sparkOptions:\n connection: ${testConnection.name}\n runtimeVersion: '2.1'\n containerImage: gcr.io/my-project-id/my-spark-image:latest\n mainClass: com.google.test.jar.MainClass\n jarUris:\n - gs://test-bucket/uberjar_spark_spark3.jar\n properties:\n spark.dataproc.scaling.version: '2'\n spark.reducer.fetchMigratedShuffle.enabled: 'true'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Routine Data Governance Type\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"tf_test_dataset_id_15222\"});\nconst customMaskingRoutine = new gcp.bigquery.Routine(\"custom_masking_routine\", {\n datasetId: test.datasetId,\n routineId: \"custom_masking_routine\",\n routineType: \"SCALAR_FUNCTION\",\n language: \"SQL\",\n dataGovernanceType: \"DATA_MASKING\",\n definitionBody: \"SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\",\n arguments: [{\n name: \"ssn\",\n dataType: \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n }],\n returnType: \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"tf_test_dataset_id_15222\")\ncustom_masking_routine = gcp.bigquery.Routine(\"custom_masking_routine\",\n dataset_id=test.dataset_id,\n routine_id=\"custom_masking_routine\",\n routine_type=\"SCALAR_FUNCTION\",\n language=\"SQL\",\n data_governance_type=\"DATA_MASKING\",\n definition_body=\"SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\",\n arguments=[{\n \"name\": \"ssn\",\n \"data_type\": \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n }],\n return_type=\"{\\\"typeKind\\\" : \\\"STRING\\\"}\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"tf_test_dataset_id_15222\",\n });\n\n var customMaskingRoutine = new Gcp.BigQuery.Routine(\"custom_masking_routine\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"custom_masking_routine\",\n RoutineType = \"SCALAR_FUNCTION\",\n Language = \"SQL\",\n DataGovernanceType = \"DATA_MASKING\",\n DefinitionBody = \"SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\",\n Arguments = new[]\n {\n new Gcp.BigQuery.Inputs.RoutineArgumentArgs\n {\n Name = \"ssn\",\n DataType = \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n },\n },\n ReturnType = \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"tf_test_dataset_id_15222\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewRoutine(ctx, \"custom_masking_routine\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"custom_masking_routine\"),\n\t\t\tRoutineType: pulumi.String(\"SCALAR_FUNCTION\"),\n\t\t\tLanguage: pulumi.String(\"SQL\"),\n\t\t\tDataGovernanceType: pulumi.String(\"DATA_MASKING\"),\n\t\t\tDefinitionBody: pulumi.String(\"SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\"),\n\t\t\tArguments: bigquery.RoutineArgumentArray{\n\t\t\t\t\u0026bigquery.RoutineArgumentArgs{\n\t\t\t\t\tName: pulumi.String(\"ssn\"),\n\t\t\t\t\tDataType: pulumi.String(\"{\\\"typeKind\\\" : \\\"STRING\\\"}\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tReturnType: pulumi.String(\"{\\\"typeKind\\\" : \\\"STRING\\\"}\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineArgumentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"tf_test_dataset_id_15222\")\n .build());\n\n var customMaskingRoutine = new Routine(\"customMaskingRoutine\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"custom_masking_routine\")\n .routineType(\"SCALAR_FUNCTION\")\n .language(\"SQL\")\n .dataGovernanceType(\"DATA_MASKING\")\n .definitionBody(\"SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\")\n .arguments(RoutineArgumentArgs.builder()\n .name(\"ssn\")\n .dataType(\"{\\\"typeKind\\\" : \\\"STRING\\\"}\")\n .build())\n .returnType(\"{\\\"typeKind\\\" : \\\"STRING\\\"}\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: tf_test_dataset_id_15222\n customMaskingRoutine:\n type: gcp:bigquery:Routine\n name: custom_masking_routine\n properties:\n datasetId: ${test.datasetId}\n routineId: custom_masking_routine\n routineType: SCALAR_FUNCTION\n language: SQL\n dataGovernanceType: DATA_MASKING\n definitionBody: SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\n arguments:\n - name: ssn\n dataType: '{\"typeKind\" : \"STRING\"}'\n returnType: '{\"typeKind\" : \"STRING\"}'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Routine Remote Function\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"dataset_id\"});\nconst testConnection = new gcp.bigquery.Connection(\"test\", {\n connectionId: \"connection_id\",\n location: \"US\",\n cloudResource: {},\n});\nconst remoteFunction = new gcp.bigquery.Routine(\"remote_function\", {\n datasetId: test.datasetId,\n routineId: \"routine_id\",\n routineType: \"SCALAR_FUNCTION\",\n definitionBody: \"\",\n returnType: \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n remoteFunctionOptions: {\n endpoint: \"https://us-east1-my_gcf_project.cloudfunctions.net/remote_add\",\n connection: testConnection.name,\n maxBatchingRows: \"10\",\n userDefinedContext: {\n z: \"1.5\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"dataset_id\")\ntest_connection = gcp.bigquery.Connection(\"test\",\n connection_id=\"connection_id\",\n location=\"US\",\n cloud_resource={})\nremote_function = gcp.bigquery.Routine(\"remote_function\",\n dataset_id=test.dataset_id,\n routine_id=\"routine_id\",\n routine_type=\"SCALAR_FUNCTION\",\n definition_body=\"\",\n return_type=\"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n remote_function_options={\n \"endpoint\": \"https://us-east1-my_gcf_project.cloudfunctions.net/remote_add\",\n \"connection\": test_connection.name,\n \"max_batching_rows\": \"10\",\n \"user_defined_context\": {\n \"z\": \"1.5\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"dataset_id\",\n });\n\n var testConnection = new Gcp.BigQuery.Connection(\"test\", new()\n {\n ConnectionId = \"connection_id\",\n Location = \"US\",\n CloudResource = null,\n });\n\n var remoteFunction = new Gcp.BigQuery.Routine(\"remote_function\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"routine_id\",\n RoutineType = \"SCALAR_FUNCTION\",\n DefinitionBody = \"\",\n ReturnType = \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n RemoteFunctionOptions = new Gcp.BigQuery.Inputs.RoutineRemoteFunctionOptionsArgs\n {\n Endpoint = \"https://us-east1-my_gcf_project.cloudfunctions.net/remote_add\",\n Connection = testConnection.Name,\n MaxBatchingRows = \"10\",\n UserDefinedContext = \n {\n { \"z\", \"1.5\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataset_id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestConnection, err := bigquery.NewConnection(ctx, \"test\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"connection_id\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tCloudResource: nil,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewRoutine(ctx, \"remote_function\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"routine_id\"),\n\t\t\tRoutineType: pulumi.String(\"SCALAR_FUNCTION\"),\n\t\t\tDefinitionBody: pulumi.String(\"\"),\n\t\t\tReturnType: pulumi.String(\"{\\\"typeKind\\\" : \\\"STRING\\\"}\"),\n\t\t\tRemoteFunctionOptions: \u0026bigquery.RoutineRemoteFunctionOptionsArgs{\n\t\t\t\tEndpoint: pulumi.String(\"https://us-east1-my_gcf_project.cloudfunctions.net/remote_add\"),\n\t\t\t\tConnection: testConnection.Name,\n\t\t\t\tMaxBatchingRows: pulumi.String(\"10\"),\n\t\t\t\tUserDefinedContext: pulumi.StringMap{\n\t\t\t\t\t\"z\": pulumi.String(\"1.5\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudResourceArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineRemoteFunctionOptionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"dataset_id\")\n .build());\n\n var testConnection = new Connection(\"testConnection\", ConnectionArgs.builder()\n .connectionId(\"connection_id\")\n .location(\"US\")\n .cloudResource()\n .build());\n\n var remoteFunction = new Routine(\"remoteFunction\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"routine_id\")\n .routineType(\"SCALAR_FUNCTION\")\n .definitionBody(\"\")\n .returnType(\"{\\\"typeKind\\\" : \\\"STRING\\\"}\")\n .remoteFunctionOptions(RoutineRemoteFunctionOptionsArgs.builder()\n .endpoint(\"https://us-east1-my_gcf_project.cloudfunctions.net/remote_add\")\n .connection(testConnection.name())\n .maxBatchingRows(\"10\")\n .userDefinedContext(Map.of(\"z\", \"1.5\"))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataset_id\n testConnection:\n type: gcp:bigquery:Connection\n name: test\n properties:\n connectionId: connection_id\n location: US\n cloudResource: {}\n remoteFunction:\n type: gcp:bigquery:Routine\n name: remote_function\n properties:\n datasetId: ${test.datasetId}\n routineId: routine_id\n routineType: SCALAR_FUNCTION\n definitionBody:\n returnType: '{\"typeKind\" : \"STRING\"}'\n remoteFunctionOptions:\n endpoint: https://us-east1-my_gcf_project.cloudfunctions.net/remote_add\n connection: ${testConnection.name}\n maxBatchingRows: '10'\n userDefinedContext:\n z: '1.5'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRoutine can be imported using any of these accepted formats:\n\n* `projects/{{project}}/datasets/{{dataset_id}}/routines/{{routine_id}}`\n\n* `{{project}}/{{dataset_id}}/{{routine_id}}`\n\n* `{{dataset_id}}/{{routine_id}}`\n\nWhen using the `pulumi import` command, Routine can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:bigquery/routine:Routine default projects/{{project}}/datasets/{{dataset_id}}/routines/{{routine_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/routine:Routine default {{project}}/{{dataset_id}}/{{routine_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/routine:Routine default {{dataset_id}}/{{routine_id}}\n```\n\n", + "description": "A user-defined function or a stored procedure that belongs to a Dataset\n\n\nTo get more information about Routine, see:\n\n* [API documentation](https://cloud.google.com/bigquery/docs/reference/rest/v2/routines)\n* How-to Guides\n * [Routines Intro](https://cloud.google.com/bigquery/docs/reference/rest/v2/routines)\n\n## Example Usage\n\n### Bigquery Routine Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"dataset_id\"});\nconst sproc = new gcp.bigquery.Routine(\"sproc\", {\n datasetId: test.datasetId,\n routineId: \"routine_id\",\n routineType: \"PROCEDURE\",\n language: \"SQL\",\n definitionBody: \"CREATE FUNCTION Add(x FLOAT64, y FLOAT64) RETURNS FLOAT64 AS (x + y);\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"dataset_id\")\nsproc = gcp.bigquery.Routine(\"sproc\",\n dataset_id=test.dataset_id,\n routine_id=\"routine_id\",\n routine_type=\"PROCEDURE\",\n language=\"SQL\",\n definition_body=\"CREATE FUNCTION Add(x FLOAT64, y FLOAT64) RETURNS FLOAT64 AS (x + y);\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"dataset_id\",\n });\n\n var sproc = new Gcp.BigQuery.Routine(\"sproc\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"routine_id\",\n RoutineType = \"PROCEDURE\",\n Language = \"SQL\",\n DefinitionBody = \"CREATE FUNCTION Add(x FLOAT64, y FLOAT64) RETURNS FLOAT64 AS (x + y);\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataset_id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewRoutine(ctx, \"sproc\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"routine_id\"),\n\t\t\tRoutineType: pulumi.String(\"PROCEDURE\"),\n\t\t\tLanguage: pulumi.String(\"SQL\"),\n\t\t\tDefinitionBody: pulumi.String(\"CREATE FUNCTION Add(x FLOAT64, y FLOAT64) RETURNS FLOAT64 AS (x + y);\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"dataset_id\")\n .build());\n\n var sproc = new Routine(\"sproc\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"routine_id\")\n .routineType(\"PROCEDURE\")\n .language(\"SQL\")\n .definitionBody(\"CREATE FUNCTION Add(x FLOAT64, y FLOAT64) RETURNS FLOAT64 AS (x + y);\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataset_id\n sproc:\n type: gcp:bigquery:Routine\n properties:\n datasetId: ${test.datasetId}\n routineId: routine_id\n routineType: PROCEDURE\n language: SQL\n definitionBody: CREATE FUNCTION Add(x FLOAT64, y FLOAT64) RETURNS FLOAT64 AS (x + y);\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Routine Json\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"dataset_id\"});\nconst sproc = new gcp.bigquery.Routine(\"sproc\", {\n datasetId: test.datasetId,\n routineId: \"routine_id\",\n routineType: \"SCALAR_FUNCTION\",\n language: \"JAVASCRIPT\",\n definitionBody: \"CREATE FUNCTION multiplyInputs return x*y;\",\n arguments: [\n {\n name: \"x\",\n dataType: \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n },\n {\n name: \"y\",\n dataType: \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n },\n ],\n returnType: \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"dataset_id\")\nsproc = gcp.bigquery.Routine(\"sproc\",\n dataset_id=test.dataset_id,\n routine_id=\"routine_id\",\n routine_type=\"SCALAR_FUNCTION\",\n language=\"JAVASCRIPT\",\n definition_body=\"CREATE FUNCTION multiplyInputs return x*y;\",\n arguments=[\n {\n \"name\": \"x\",\n \"data_type\": \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n },\n {\n \"name\": \"y\",\n \"data_type\": \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n },\n ],\n return_type=\"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"dataset_id\",\n });\n\n var sproc = new Gcp.BigQuery.Routine(\"sproc\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"routine_id\",\n RoutineType = \"SCALAR_FUNCTION\",\n Language = \"JAVASCRIPT\",\n DefinitionBody = \"CREATE FUNCTION multiplyInputs return x*y;\",\n Arguments = new[]\n {\n new Gcp.BigQuery.Inputs.RoutineArgumentArgs\n {\n Name = \"x\",\n DataType = \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n },\n new Gcp.BigQuery.Inputs.RoutineArgumentArgs\n {\n Name = \"y\",\n DataType = \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n },\n },\n ReturnType = \"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataset_id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewRoutine(ctx, \"sproc\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"routine_id\"),\n\t\t\tRoutineType: pulumi.String(\"SCALAR_FUNCTION\"),\n\t\t\tLanguage: pulumi.String(\"JAVASCRIPT\"),\n\t\t\tDefinitionBody: pulumi.String(\"CREATE FUNCTION multiplyInputs return x*y;\"),\n\t\t\tArguments: bigquery.RoutineArgumentArray{\n\t\t\t\t\u0026bigquery.RoutineArgumentArgs{\n\t\t\t\t\tName: pulumi.String(\"x\"),\n\t\t\t\t\tDataType: pulumi.String(\"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\"),\n\t\t\t\t},\n\t\t\t\t\u0026bigquery.RoutineArgumentArgs{\n\t\t\t\t\tName: pulumi.String(\"y\"),\n\t\t\t\t\tDataType: pulumi.String(\"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tReturnType: pulumi.String(\"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineArgumentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"dataset_id\")\n .build());\n\n var sproc = new Routine(\"sproc\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"routine_id\")\n .routineType(\"SCALAR_FUNCTION\")\n .language(\"JAVASCRIPT\")\n .definitionBody(\"CREATE FUNCTION multiplyInputs return x*y;\")\n .arguments( \n RoutineArgumentArgs.builder()\n .name(\"x\")\n .dataType(\"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\")\n .build(),\n RoutineArgumentArgs.builder()\n .name(\"y\")\n .dataType(\"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\")\n .build())\n .returnType(\"{\\\"typeKind\\\" : \\\"FLOAT64\\\"}\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataset_id\n sproc:\n type: gcp:bigquery:Routine\n properties:\n datasetId: ${test.datasetId}\n routineId: routine_id\n routineType: SCALAR_FUNCTION\n language: JAVASCRIPT\n definitionBody: CREATE FUNCTION multiplyInputs return x*y;\n arguments:\n - name: x\n dataType: '{\"typeKind\" : \"FLOAT64\"}'\n - name: y\n dataType: '{\"typeKind\" : \"FLOAT64\"}'\n returnType: '{\"typeKind\" : \"FLOAT64\"}'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Routine Tvf\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"dataset_id\"});\nconst sproc = new gcp.bigquery.Routine(\"sproc\", {\n datasetId: test.datasetId,\n routineId: \"routine_id\",\n routineType: \"TABLE_VALUED_FUNCTION\",\n language: \"SQL\",\n definitionBody: \"SELECT 1 + value AS value\\n\",\n arguments: [{\n name: \"value\",\n argumentKind: \"FIXED_TYPE\",\n dataType: JSON.stringify({\n typeKind: \"INT64\",\n }),\n }],\n returnTableType: JSON.stringify({\n columns: [{\n name: \"value\",\n type: {\n typeKind: \"INT64\",\n },\n }],\n }),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"dataset_id\")\nsproc = gcp.bigquery.Routine(\"sproc\",\n dataset_id=test.dataset_id,\n routine_id=\"routine_id\",\n routine_type=\"TABLE_VALUED_FUNCTION\",\n language=\"SQL\",\n definition_body=\"SELECT 1 + value AS value\\n\",\n arguments=[{\n \"name\": \"value\",\n \"argument_kind\": \"FIXED_TYPE\",\n \"data_type\": json.dumps({\n \"typeKind\": \"INT64\",\n }),\n }],\n return_table_type=json.dumps({\n \"columns\": [{\n \"name\": \"value\",\n \"type\": {\n \"typeKind\": \"INT64\",\n },\n }],\n }))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"dataset_id\",\n });\n\n var sproc = new Gcp.BigQuery.Routine(\"sproc\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"routine_id\",\n RoutineType = \"TABLE_VALUED_FUNCTION\",\n Language = \"SQL\",\n DefinitionBody = @\"SELECT 1 + value AS value\n\",\n Arguments = new[]\n {\n new Gcp.BigQuery.Inputs.RoutineArgumentArgs\n {\n Name = \"value\",\n ArgumentKind = \"FIXED_TYPE\",\n DataType = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"typeKind\"] = \"INT64\",\n }),\n },\n },\n ReturnTableType = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"columns\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"name\"] = \"value\",\n [\"type\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"typeKind\"] = \"INT64\",\n },\n },\n },\n }),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataset_id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"typeKind\": \"INT64\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\ttmpJSON1, err := json.Marshal(map[string]interface{}{\n\t\t\t\"columns\": []map[string]interface{}{\n\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\"name\": \"value\",\n\t\t\t\t\t\"type\": map[string]interface{}{\n\t\t\t\t\t\t\"typeKind\": \"INT64\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson1 := string(tmpJSON1)\n\t\t_, err = bigquery.NewRoutine(ctx, \"sproc\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"routine_id\"),\n\t\t\tRoutineType: pulumi.String(\"TABLE_VALUED_FUNCTION\"),\n\t\t\tLanguage: pulumi.String(\"SQL\"),\n\t\t\tDefinitionBody: pulumi.String(\"SELECT 1 + value AS value\\n\"),\n\t\t\tArguments: bigquery.RoutineArgumentArray{\n\t\t\t\t\u0026bigquery.RoutineArgumentArgs{\n\t\t\t\t\tName: pulumi.String(\"value\"),\n\t\t\t\t\tArgumentKind: pulumi.String(\"FIXED_TYPE\"),\n\t\t\t\t\tDataType: pulumi.String(json0),\n\t\t\t\t},\n\t\t\t},\n\t\t\tReturnTableType: pulumi.String(json1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineArgumentArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"dataset_id\")\n .build());\n\n var sproc = new Routine(\"sproc\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"routine_id\")\n .routineType(\"TABLE_VALUED_FUNCTION\")\n .language(\"SQL\")\n .definitionBody(\"\"\"\nSELECT 1 + value AS value\n \"\"\")\n .arguments(RoutineArgumentArgs.builder()\n .name(\"value\")\n .argumentKind(\"FIXED_TYPE\")\n .dataType(serializeJson(\n jsonObject(\n jsonProperty(\"typeKind\", \"INT64\")\n )))\n .build())\n .returnTableType(serializeJson(\n jsonObject(\n jsonProperty(\"columns\", jsonArray(jsonObject(\n jsonProperty(\"name\", \"value\"),\n jsonProperty(\"type\", jsonObject(\n jsonProperty(\"typeKind\", \"INT64\")\n ))\n )))\n )))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataset_id\n sproc:\n type: gcp:bigquery:Routine\n properties:\n datasetId: ${test.datasetId}\n routineId: routine_id\n routineType: TABLE_VALUED_FUNCTION\n language: SQL\n definitionBody: |\n SELECT 1 + value AS value\n arguments:\n - name: value\n argumentKind: FIXED_TYPE\n dataType:\n fn::toJSON:\n typeKind: INT64\n returnTableType:\n fn::toJSON:\n columns:\n - name: value\n type:\n typeKind: INT64\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Routine Pyspark\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"dataset_id\"});\nconst testConnection = new gcp.bigquery.Connection(\"test\", {\n connectionId: \"connection_id\",\n location: \"US\",\n spark: {},\n});\nconst pyspark = new gcp.bigquery.Routine(\"pyspark\", {\n datasetId: test.datasetId,\n routineId: \"routine_id\",\n routineType: \"PROCEDURE\",\n language: \"PYTHON\",\n definitionBody: `from pyspark.sql import SparkSession\n\nspark = SparkSession.builder.appName(\"spark-bigquery-demo\").getOrCreate()\n \n# Load data from BigQuery.\nwords = spark.read.format(\"bigquery\") \\\\\n .option(\"table\", \"bigquery-public-data:samples.shakespeare\") \\\\\n .load()\nwords.createOrReplaceTempView(\"words\")\n \n# Perform word count.\nword_count = words.select('word', 'word_count').groupBy('word').sum('word_count').withColumnRenamed(\"sum(word_count)\", \"sum_word_count\")\nword_count.show()\nword_count.printSchema()\n \n# Saving the data to BigQuery\nword_count.write.format(\"bigquery\") \\\\\n .option(\"writeMethod\", \"direct\") \\\\\n .save(\"wordcount_dataset.wordcount_output\")\n`,\n sparkOptions: {\n connection: testConnection.name,\n runtimeVersion: \"2.1\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"dataset_id\")\ntest_connection = gcp.bigquery.Connection(\"test\",\n connection_id=\"connection_id\",\n location=\"US\",\n spark={})\npyspark = gcp.bigquery.Routine(\"pyspark\",\n dataset_id=test.dataset_id,\n routine_id=\"routine_id\",\n routine_type=\"PROCEDURE\",\n language=\"PYTHON\",\n definition_body=\"\"\"from pyspark.sql import SparkSession\n\nspark = SparkSession.builder.appName(\"spark-bigquery-demo\").getOrCreate()\n \n# Load data from BigQuery.\nwords = spark.read.format(\"bigquery\") \\\n .option(\"table\", \"bigquery-public-data:samples.shakespeare\") \\\n .load()\nwords.createOrReplaceTempView(\"words\")\n \n# Perform word count.\nword_count = words.select('word', 'word_count').groupBy('word').sum('word_count').withColumnRenamed(\"sum(word_count)\", \"sum_word_count\")\nword_count.show()\nword_count.printSchema()\n \n# Saving the data to BigQuery\nword_count.write.format(\"bigquery\") \\\n .option(\"writeMethod\", \"direct\") \\\n .save(\"wordcount_dataset.wordcount_output\")\n\"\"\",\n spark_options={\n \"connection\": test_connection.name,\n \"runtime_version\": \"2.1\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"dataset_id\",\n });\n\n var testConnection = new Gcp.BigQuery.Connection(\"test\", new()\n {\n ConnectionId = \"connection_id\",\n Location = \"US\",\n Spark = null,\n });\n\n var pyspark = new Gcp.BigQuery.Routine(\"pyspark\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"routine_id\",\n RoutineType = \"PROCEDURE\",\n Language = \"PYTHON\",\n DefinitionBody = @\"from pyspark.sql import SparkSession\n\nspark = SparkSession.builder.appName(\"\"spark-bigquery-demo\"\").getOrCreate()\n \n# Load data from BigQuery.\nwords = spark.read.format(\"\"bigquery\"\") \\\n .option(\"\"table\"\", \"\"bigquery-public-data:samples.shakespeare\"\") \\\n .load()\nwords.createOrReplaceTempView(\"\"words\"\")\n \n# Perform word count.\nword_count = words.select('word', 'word_count').groupBy('word').sum('word_count').withColumnRenamed(\"\"sum(word_count)\"\", \"\"sum_word_count\"\")\nword_count.show()\nword_count.printSchema()\n \n# Saving the data to BigQuery\nword_count.write.format(\"\"bigquery\"\") \\\n .option(\"\"writeMethod\"\", \"\"direct\"\") \\\n .save(\"\"wordcount_dataset.wordcount_output\"\")\n\",\n SparkOptions = new Gcp.BigQuery.Inputs.RoutineSparkOptionsArgs\n {\n Connection = testConnection.Name,\n RuntimeVersion = \"2.1\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataset_id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestConnection, err := bigquery.NewConnection(ctx, \"test\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"connection_id\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tSpark: \u0026bigquery.ConnectionSparkArgs{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewRoutine(ctx, \"pyspark\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"routine_id\"),\n\t\t\tRoutineType: pulumi.String(\"PROCEDURE\"),\n\t\t\tLanguage: pulumi.String(\"PYTHON\"),\n\t\t\tDefinitionBody: pulumi.String(`from pyspark.sql import SparkSession\n\nspark = SparkSession.builder.appName(\"spark-bigquery-demo\").getOrCreate()\n \n# Load data from BigQuery.\nwords = spark.read.format(\"bigquery\") \\\n .option(\"table\", \"bigquery-public-data:samples.shakespeare\") \\\n .load()\nwords.createOrReplaceTempView(\"words\")\n \n# Perform word count.\nword_count = words.select('word', 'word_count').groupBy('word').sum('word_count').withColumnRenamed(\"sum(word_count)\", \"sum_word_count\")\nword_count.show()\nword_count.printSchema()\n \n# Saving the data to BigQuery\nword_count.write.format(\"bigquery\") \\\n .option(\"writeMethod\", \"direct\") \\\n .save(\"wordcount_dataset.wordcount_output\")\n`),\n\t\t\tSparkOptions: \u0026bigquery.RoutineSparkOptionsArgs{\n\t\t\t\tConnection: testConnection.Name,\n\t\t\t\tRuntimeVersion: pulumi.String(\"2.1\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionSparkArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineSparkOptionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"dataset_id\")\n .build());\n\n var testConnection = new Connection(\"testConnection\", ConnectionArgs.builder()\n .connectionId(\"connection_id\")\n .location(\"US\")\n .spark()\n .build());\n\n var pyspark = new Routine(\"pyspark\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"routine_id\")\n .routineType(\"PROCEDURE\")\n .language(\"PYTHON\")\n .definitionBody(\"\"\"\nfrom pyspark.sql import SparkSession\n\nspark = SparkSession.builder.appName(\"spark-bigquery-demo\").getOrCreate()\n \n# Load data from BigQuery.\nwords = spark.read.format(\"bigquery\") \\\n .option(\"table\", \"bigquery-public-data:samples.shakespeare\") \\\n .load()\nwords.createOrReplaceTempView(\"words\")\n \n# Perform word count.\nword_count = words.select('word', 'word_count').groupBy('word').sum('word_count').withColumnRenamed(\"sum(word_count)\", \"sum_word_count\")\nword_count.show()\nword_count.printSchema()\n \n# Saving the data to BigQuery\nword_count.write.format(\"bigquery\") \\\n .option(\"writeMethod\", \"direct\") \\\n .save(\"wordcount_dataset.wordcount_output\")\n \"\"\")\n .sparkOptions(RoutineSparkOptionsArgs.builder()\n .connection(testConnection.name())\n .runtimeVersion(\"2.1\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataset_id\n testConnection:\n type: gcp:bigquery:Connection\n name: test\n properties:\n connectionId: connection_id\n location: US\n spark: {}\n pyspark:\n type: gcp:bigquery:Routine\n properties:\n datasetId: ${test.datasetId}\n routineId: routine_id\n routineType: PROCEDURE\n language: PYTHON\n definitionBody: \"from pyspark.sql import SparkSession\\n\\nspark = SparkSession.builder.appName(\\\"spark-bigquery-demo\\\").getOrCreate()\\n \\n# Load data from BigQuery.\\nwords = spark.read.format(\\\"bigquery\\\") \\\\\\n .option(\\\"table\\\", \\\"bigquery-public-data:samples.shakespeare\\\") \\\\\\n .load()\\nwords.createOrReplaceTempView(\\\"words\\\")\\n \\n# Perform word count.\\nword_count = words.select('word', 'word_count').groupBy('word').sum('word_count').withColumnRenamed(\\\"sum(word_count)\\\", \\\"sum_word_count\\\")\\nword_count.show()\\nword_count.printSchema()\\n \\n# Saving the data to BigQuery\\nword_count.write.format(\\\"bigquery\\\") \\\\\\n .option(\\\"writeMethod\\\", \\\"direct\\\") \\\\\\n .save(\\\"wordcount_dataset.wordcount_output\\\")\\n\"\n sparkOptions:\n connection: ${testConnection.name}\n runtimeVersion: '2.1'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Routine Pyspark Mainfile\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"dataset_id\"});\nconst testConnection = new gcp.bigquery.Connection(\"test\", {\n connectionId: \"connection_id\",\n location: \"US\",\n spark: {},\n});\nconst pysparkMainfile = new gcp.bigquery.Routine(\"pyspark_mainfile\", {\n datasetId: test.datasetId,\n routineId: \"routine_id\",\n routineType: \"PROCEDURE\",\n language: \"PYTHON\",\n definitionBody: \"\",\n sparkOptions: {\n connection: testConnection.name,\n runtimeVersion: \"2.1\",\n mainFileUri: \"gs://test-bucket/main.py\",\n pyFileUris: [\"gs://test-bucket/lib.py\"],\n fileUris: [\"gs://test-bucket/distribute_in_executor.json\"],\n archiveUris: [\"gs://test-bucket/distribute_in_executor.tar.gz\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"dataset_id\")\ntest_connection = gcp.bigquery.Connection(\"test\",\n connection_id=\"connection_id\",\n location=\"US\",\n spark={})\npyspark_mainfile = gcp.bigquery.Routine(\"pyspark_mainfile\",\n dataset_id=test.dataset_id,\n routine_id=\"routine_id\",\n routine_type=\"PROCEDURE\",\n language=\"PYTHON\",\n definition_body=\"\",\n spark_options={\n \"connection\": test_connection.name,\n \"runtime_version\": \"2.1\",\n \"main_file_uri\": \"gs://test-bucket/main.py\",\n \"py_file_uris\": [\"gs://test-bucket/lib.py\"],\n \"file_uris\": [\"gs://test-bucket/distribute_in_executor.json\"],\n \"archive_uris\": [\"gs://test-bucket/distribute_in_executor.tar.gz\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"dataset_id\",\n });\n\n var testConnection = new Gcp.BigQuery.Connection(\"test\", new()\n {\n ConnectionId = \"connection_id\",\n Location = \"US\",\n Spark = null,\n });\n\n var pysparkMainfile = new Gcp.BigQuery.Routine(\"pyspark_mainfile\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"routine_id\",\n RoutineType = \"PROCEDURE\",\n Language = \"PYTHON\",\n DefinitionBody = \"\",\n SparkOptions = new Gcp.BigQuery.Inputs.RoutineSparkOptionsArgs\n {\n Connection = testConnection.Name,\n RuntimeVersion = \"2.1\",\n MainFileUri = \"gs://test-bucket/main.py\",\n PyFileUris = new[]\n {\n \"gs://test-bucket/lib.py\",\n },\n FileUris = new[]\n {\n \"gs://test-bucket/distribute_in_executor.json\",\n },\n ArchiveUris = new[]\n {\n \"gs://test-bucket/distribute_in_executor.tar.gz\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataset_id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestConnection, err := bigquery.NewConnection(ctx, \"test\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"connection_id\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tSpark: \u0026bigquery.ConnectionSparkArgs{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewRoutine(ctx, \"pyspark_mainfile\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"routine_id\"),\n\t\t\tRoutineType: pulumi.String(\"PROCEDURE\"),\n\t\t\tLanguage: pulumi.String(\"PYTHON\"),\n\t\t\tDefinitionBody: pulumi.String(\"\"),\n\t\t\tSparkOptions: \u0026bigquery.RoutineSparkOptionsArgs{\n\t\t\t\tConnection: testConnection.Name,\n\t\t\t\tRuntimeVersion: pulumi.String(\"2.1\"),\n\t\t\t\tMainFileUri: pulumi.String(\"gs://test-bucket/main.py\"),\n\t\t\t\tPyFileUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://test-bucket/lib.py\"),\n\t\t\t\t},\n\t\t\t\tFileUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://test-bucket/distribute_in_executor.json\"),\n\t\t\t\t},\n\t\t\t\tArchiveUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://test-bucket/distribute_in_executor.tar.gz\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionSparkArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineSparkOptionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"dataset_id\")\n .build());\n\n var testConnection = new Connection(\"testConnection\", ConnectionArgs.builder()\n .connectionId(\"connection_id\")\n .location(\"US\")\n .spark()\n .build());\n\n var pysparkMainfile = new Routine(\"pysparkMainfile\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"routine_id\")\n .routineType(\"PROCEDURE\")\n .language(\"PYTHON\")\n .definitionBody(\"\")\n .sparkOptions(RoutineSparkOptionsArgs.builder()\n .connection(testConnection.name())\n .runtimeVersion(\"2.1\")\n .mainFileUri(\"gs://test-bucket/main.py\")\n .pyFileUris(\"gs://test-bucket/lib.py\")\n .fileUris(\"gs://test-bucket/distribute_in_executor.json\")\n .archiveUris(\"gs://test-bucket/distribute_in_executor.tar.gz\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataset_id\n testConnection:\n type: gcp:bigquery:Connection\n name: test\n properties:\n connectionId: connection_id\n location: US\n spark: {}\n pysparkMainfile:\n type: gcp:bigquery:Routine\n name: pyspark_mainfile\n properties:\n datasetId: ${test.datasetId}\n routineId: routine_id\n routineType: PROCEDURE\n language: PYTHON\n definitionBody:\n sparkOptions:\n connection: ${testConnection.name}\n runtimeVersion: '2.1'\n mainFileUri: gs://test-bucket/main.py\n pyFileUris:\n - gs://test-bucket/lib.py\n fileUris:\n - gs://test-bucket/distribute_in_executor.json\n archiveUris:\n - gs://test-bucket/distribute_in_executor.tar.gz\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Routine Spark Jar\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"dataset_id\"});\nconst testConnection = new gcp.bigquery.Connection(\"test\", {\n connectionId: \"connection_id\",\n location: \"US\",\n spark: {},\n});\nconst sparkJar = new gcp.bigquery.Routine(\"spark_jar\", {\n datasetId: test.datasetId,\n routineId: \"routine_id\",\n routineType: \"PROCEDURE\",\n language: \"SCALA\",\n definitionBody: \"\",\n sparkOptions: {\n connection: testConnection.name,\n runtimeVersion: \"2.1\",\n containerImage: \"gcr.io/my-project-id/my-spark-image:latest\",\n mainClass: \"com.google.test.jar.MainClass\",\n jarUris: [\"gs://test-bucket/uberjar_spark_spark3.jar\"],\n properties: {\n \"spark.dataproc.scaling.version\": \"2\",\n \"spark.reducer.fetchMigratedShuffle.enabled\": \"true\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"dataset_id\")\ntest_connection = gcp.bigquery.Connection(\"test\",\n connection_id=\"connection_id\",\n location=\"US\",\n spark={})\nspark_jar = gcp.bigquery.Routine(\"spark_jar\",\n dataset_id=test.dataset_id,\n routine_id=\"routine_id\",\n routine_type=\"PROCEDURE\",\n language=\"SCALA\",\n definition_body=\"\",\n spark_options={\n \"connection\": test_connection.name,\n \"runtime_version\": \"2.1\",\n \"container_image\": \"gcr.io/my-project-id/my-spark-image:latest\",\n \"main_class\": \"com.google.test.jar.MainClass\",\n \"jar_uris\": [\"gs://test-bucket/uberjar_spark_spark3.jar\"],\n \"properties\": {\n \"spark.dataproc.scaling.version\": \"2\",\n \"spark.reducer.fetchMigratedShuffle.enabled\": \"true\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"dataset_id\",\n });\n\n var testConnection = new Gcp.BigQuery.Connection(\"test\", new()\n {\n ConnectionId = \"connection_id\",\n Location = \"US\",\n Spark = null,\n });\n\n var sparkJar = new Gcp.BigQuery.Routine(\"spark_jar\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"routine_id\",\n RoutineType = \"PROCEDURE\",\n Language = \"SCALA\",\n DefinitionBody = \"\",\n SparkOptions = new Gcp.BigQuery.Inputs.RoutineSparkOptionsArgs\n {\n Connection = testConnection.Name,\n RuntimeVersion = \"2.1\",\n ContainerImage = \"gcr.io/my-project-id/my-spark-image:latest\",\n MainClass = \"com.google.test.jar.MainClass\",\n JarUris = new[]\n {\n \"gs://test-bucket/uberjar_spark_spark3.jar\",\n },\n Properties = \n {\n { \"spark.dataproc.scaling.version\", \"2\" },\n { \"spark.reducer.fetchMigratedShuffle.enabled\", \"true\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataset_id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestConnection, err := bigquery.NewConnection(ctx, \"test\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"connection_id\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tSpark: \u0026bigquery.ConnectionSparkArgs{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewRoutine(ctx, \"spark_jar\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"routine_id\"),\n\t\t\tRoutineType: pulumi.String(\"PROCEDURE\"),\n\t\t\tLanguage: pulumi.String(\"SCALA\"),\n\t\t\tDefinitionBody: pulumi.String(\"\"),\n\t\t\tSparkOptions: \u0026bigquery.RoutineSparkOptionsArgs{\n\t\t\t\tConnection: testConnection.Name,\n\t\t\t\tRuntimeVersion: pulumi.String(\"2.1\"),\n\t\t\t\tContainerImage: pulumi.String(\"gcr.io/my-project-id/my-spark-image:latest\"),\n\t\t\t\tMainClass: pulumi.String(\"com.google.test.jar.MainClass\"),\n\t\t\t\tJarUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://test-bucket/uberjar_spark_spark3.jar\"),\n\t\t\t\t},\n\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\"spark.dataproc.scaling.version\": pulumi.String(\"2\"),\n\t\t\t\t\t\"spark.reducer.fetchMigratedShuffle.enabled\": pulumi.String(\"true\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionSparkArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineSparkOptionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"dataset_id\")\n .build());\n\n var testConnection = new Connection(\"testConnection\", ConnectionArgs.builder()\n .connectionId(\"connection_id\")\n .location(\"US\")\n .spark()\n .build());\n\n var sparkJar = new Routine(\"sparkJar\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"routine_id\")\n .routineType(\"PROCEDURE\")\n .language(\"SCALA\")\n .definitionBody(\"\")\n .sparkOptions(RoutineSparkOptionsArgs.builder()\n .connection(testConnection.name())\n .runtimeVersion(\"2.1\")\n .containerImage(\"gcr.io/my-project-id/my-spark-image:latest\")\n .mainClass(\"com.google.test.jar.MainClass\")\n .jarUris(\"gs://test-bucket/uberjar_spark_spark3.jar\")\n .properties(Map.ofEntries(\n Map.entry(\"spark.dataproc.scaling.version\", \"2\"),\n Map.entry(\"spark.reducer.fetchMigratedShuffle.enabled\", \"true\")\n ))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataset_id\n testConnection:\n type: gcp:bigquery:Connection\n name: test\n properties:\n connectionId: connection_id\n location: US\n spark: {}\n sparkJar:\n type: gcp:bigquery:Routine\n name: spark_jar\n properties:\n datasetId: ${test.datasetId}\n routineId: routine_id\n routineType: PROCEDURE\n language: SCALA\n definitionBody:\n sparkOptions:\n connection: ${testConnection.name}\n runtimeVersion: '2.1'\n containerImage: gcr.io/my-project-id/my-spark-image:latest\n mainClass: com.google.test.jar.MainClass\n jarUris:\n - gs://test-bucket/uberjar_spark_spark3.jar\n properties:\n spark.dataproc.scaling.version: '2'\n spark.reducer.fetchMigratedShuffle.enabled: 'true'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Routine Data Governance Type\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"tf_test_dataset_id_15222\"});\nconst customMaskingRoutine = new gcp.bigquery.Routine(\"custom_masking_routine\", {\n datasetId: test.datasetId,\n routineId: \"custom_masking_routine\",\n routineType: \"SCALAR_FUNCTION\",\n language: \"SQL\",\n dataGovernanceType: \"DATA_MASKING\",\n definitionBody: \"SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\",\n arguments: [{\n name: \"ssn\",\n dataType: \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n }],\n returnType: \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"tf_test_dataset_id_15222\")\ncustom_masking_routine = gcp.bigquery.Routine(\"custom_masking_routine\",\n dataset_id=test.dataset_id,\n routine_id=\"custom_masking_routine\",\n routine_type=\"SCALAR_FUNCTION\",\n language=\"SQL\",\n data_governance_type=\"DATA_MASKING\",\n definition_body=\"SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\",\n arguments=[{\n \"name\": \"ssn\",\n \"data_type\": \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n }],\n return_type=\"{\\\"typeKind\\\" : \\\"STRING\\\"}\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"tf_test_dataset_id_15222\",\n });\n\n var customMaskingRoutine = new Gcp.BigQuery.Routine(\"custom_masking_routine\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"custom_masking_routine\",\n RoutineType = \"SCALAR_FUNCTION\",\n Language = \"SQL\",\n DataGovernanceType = \"DATA_MASKING\",\n DefinitionBody = \"SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\",\n Arguments = new[]\n {\n new Gcp.BigQuery.Inputs.RoutineArgumentArgs\n {\n Name = \"ssn\",\n DataType = \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n },\n },\n ReturnType = \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"tf_test_dataset_id_15222\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewRoutine(ctx, \"custom_masking_routine\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"custom_masking_routine\"),\n\t\t\tRoutineType: pulumi.String(\"SCALAR_FUNCTION\"),\n\t\t\tLanguage: pulumi.String(\"SQL\"),\n\t\t\tDataGovernanceType: pulumi.String(\"DATA_MASKING\"),\n\t\t\tDefinitionBody: pulumi.String(\"SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\"),\n\t\t\tArguments: bigquery.RoutineArgumentArray{\n\t\t\t\t\u0026bigquery.RoutineArgumentArgs{\n\t\t\t\t\tName: pulumi.String(\"ssn\"),\n\t\t\t\t\tDataType: pulumi.String(\"{\\\"typeKind\\\" : \\\"STRING\\\"}\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tReturnType: pulumi.String(\"{\\\"typeKind\\\" : \\\"STRING\\\"}\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineArgumentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"tf_test_dataset_id_15222\")\n .build());\n\n var customMaskingRoutine = new Routine(\"customMaskingRoutine\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"custom_masking_routine\")\n .routineType(\"SCALAR_FUNCTION\")\n .language(\"SQL\")\n .dataGovernanceType(\"DATA_MASKING\")\n .definitionBody(\"SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\")\n .arguments(RoutineArgumentArgs.builder()\n .name(\"ssn\")\n .dataType(\"{\\\"typeKind\\\" : \\\"STRING\\\"}\")\n .build())\n .returnType(\"{\\\"typeKind\\\" : \\\"STRING\\\"}\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: tf_test_dataset_id_15222\n customMaskingRoutine:\n type: gcp:bigquery:Routine\n name: custom_masking_routine\n properties:\n datasetId: ${test.datasetId}\n routineId: custom_masking_routine\n routineType: SCALAR_FUNCTION\n language: SQL\n dataGovernanceType: DATA_MASKING\n definitionBody: SAFE.REGEXP_REPLACE(ssn, '[0-9]', 'X')\n arguments:\n - name: ssn\n dataType: '{\"typeKind\" : \"STRING\"}'\n returnType: '{\"typeKind\" : \"STRING\"}'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Routine Remote Function\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"dataset_id\"});\nconst testConnection = new gcp.bigquery.Connection(\"test\", {\n connectionId: \"connection_id\",\n location: \"US\",\n cloudResource: {},\n});\nconst remoteFunction = new gcp.bigquery.Routine(\"remote_function\", {\n datasetId: test.datasetId,\n routineId: \"routine_id\",\n routineType: \"SCALAR_FUNCTION\",\n definitionBody: \"\",\n returnType: \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n remoteFunctionOptions: {\n endpoint: \"https://us-east1-my_gcf_project.cloudfunctions.net/remote_add\",\n connection: testConnection.name,\n maxBatchingRows: \"10\",\n userDefinedContext: {\n z: \"1.5\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"dataset_id\")\ntest_connection = gcp.bigquery.Connection(\"test\",\n connection_id=\"connection_id\",\n location=\"US\",\n cloud_resource={})\nremote_function = gcp.bigquery.Routine(\"remote_function\",\n dataset_id=test.dataset_id,\n routine_id=\"routine_id\",\n routine_type=\"SCALAR_FUNCTION\",\n definition_body=\"\",\n return_type=\"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n remote_function_options={\n \"endpoint\": \"https://us-east1-my_gcf_project.cloudfunctions.net/remote_add\",\n \"connection\": test_connection.name,\n \"max_batching_rows\": \"10\",\n \"user_defined_context\": {\n \"z\": \"1.5\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"dataset_id\",\n });\n\n var testConnection = new Gcp.BigQuery.Connection(\"test\", new()\n {\n ConnectionId = \"connection_id\",\n Location = \"US\",\n CloudResource = null,\n });\n\n var remoteFunction = new Gcp.BigQuery.Routine(\"remote_function\", new()\n {\n DatasetId = test.DatasetId,\n RoutineId = \"routine_id\",\n RoutineType = \"SCALAR_FUNCTION\",\n DefinitionBody = \"\",\n ReturnType = \"{\\\"typeKind\\\" : \\\"STRING\\\"}\",\n RemoteFunctionOptions = new Gcp.BigQuery.Inputs.RoutineRemoteFunctionOptionsArgs\n {\n Endpoint = \"https://us-east1-my_gcf_project.cloudfunctions.net/remote_add\",\n Connection = testConnection.Name,\n MaxBatchingRows = \"10\",\n UserDefinedContext = \n {\n { \"z\", \"1.5\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataset_id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestConnection, err := bigquery.NewConnection(ctx, \"test\", \u0026bigquery.ConnectionArgs{\n\t\t\tConnectionId: pulumi.String(\"connection_id\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tCloudResource: \u0026bigquery.ConnectionCloudResourceArgs{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewRoutine(ctx, \"remote_function\", \u0026bigquery.RoutineArgs{\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tRoutineId: pulumi.String(\"routine_id\"),\n\t\t\tRoutineType: pulumi.String(\"SCALAR_FUNCTION\"),\n\t\t\tDefinitionBody: pulumi.String(\"\"),\n\t\t\tReturnType: pulumi.String(\"{\\\"typeKind\\\" : \\\"STRING\\\"}\"),\n\t\t\tRemoteFunctionOptions: \u0026bigquery.RoutineRemoteFunctionOptionsArgs{\n\t\t\t\tEndpoint: pulumi.String(\"https://us-east1-my_gcf_project.cloudfunctions.net/remote_add\"),\n\t\t\t\tConnection: testConnection.Name,\n\t\t\t\tMaxBatchingRows: pulumi.String(\"10\"),\n\t\t\t\tUserDefinedContext: pulumi.StringMap{\n\t\t\t\t\t\"z\": pulumi.String(\"1.5\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Connection;\nimport com.pulumi.gcp.bigquery.ConnectionArgs;\nimport com.pulumi.gcp.bigquery.inputs.ConnectionCloudResourceArgs;\nimport com.pulumi.gcp.bigquery.Routine;\nimport com.pulumi.gcp.bigquery.RoutineArgs;\nimport com.pulumi.gcp.bigquery.inputs.RoutineRemoteFunctionOptionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"dataset_id\")\n .build());\n\n var testConnection = new Connection(\"testConnection\", ConnectionArgs.builder()\n .connectionId(\"connection_id\")\n .location(\"US\")\n .cloudResource()\n .build());\n\n var remoteFunction = new Routine(\"remoteFunction\", RoutineArgs.builder()\n .datasetId(test.datasetId())\n .routineId(\"routine_id\")\n .routineType(\"SCALAR_FUNCTION\")\n .definitionBody(\"\")\n .returnType(\"{\\\"typeKind\\\" : \\\"STRING\\\"}\")\n .remoteFunctionOptions(RoutineRemoteFunctionOptionsArgs.builder()\n .endpoint(\"https://us-east1-my_gcf_project.cloudfunctions.net/remote_add\")\n .connection(testConnection.name())\n .maxBatchingRows(\"10\")\n .userDefinedContext(Map.of(\"z\", \"1.5\"))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataset_id\n testConnection:\n type: gcp:bigquery:Connection\n name: test\n properties:\n connectionId: connection_id\n location: US\n cloudResource: {}\n remoteFunction:\n type: gcp:bigquery:Routine\n name: remote_function\n properties:\n datasetId: ${test.datasetId}\n routineId: routine_id\n routineType: SCALAR_FUNCTION\n definitionBody:\n returnType: '{\"typeKind\" : \"STRING\"}'\n remoteFunctionOptions:\n endpoint: https://us-east1-my_gcf_project.cloudfunctions.net/remote_add\n connection: ${testConnection.name}\n maxBatchingRows: '10'\n userDefinedContext:\n z: '1.5'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRoutine can be imported using any of these accepted formats:\n\n* `projects/{{project}}/datasets/{{dataset_id}}/routines/{{routine_id}}`\n\n* `{{project}}/{{dataset_id}}/{{routine_id}}`\n\n* `{{dataset_id}}/{{routine_id}}`\n\nWhen using the `pulumi import` command, Routine can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:bigquery/routine:Routine default projects/{{project}}/datasets/{{dataset_id}}/routines/{{routine_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/routine:Routine default {{project}}/{{dataset_id}}/{{routine_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/routine:Routine default {{dataset_id}}/{{routine_id}}\n```\n\n", "properties": { "arguments": { "type": "array", @@ -130338,7 +130338,7 @@ } }, "gcp:bigqueryanalyticshub/dataExchange:DataExchange": { - "description": "A Bigquery Analytics Hub data exchange\n\n\nTo get more information about DataExchange, see:\n\n* [API documentation](https://cloud.google.com/bigquery/docs/reference/analytics-hub/rest/v1/projects.locations.dataExchanges)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/bigquery/docs/analytics-hub-introduction)\n\n## Example Usage\n\n### Bigquery Analyticshub Data Exchange Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dataExchange = new gcp.bigqueryanalyticshub.DataExchange(\"data_exchange\", {\n location: \"US\",\n dataExchangeId: \"my_data_exchange\",\n displayName: \"my_data_exchange\",\n description: \"example data exchange\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndata_exchange = gcp.bigqueryanalyticshub.DataExchange(\"data_exchange\",\n location=\"US\",\n data_exchange_id=\"my_data_exchange\",\n display_name=\"my_data_exchange\",\n description=\"example data exchange\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var dataExchange = new Gcp.BigQueryAnalyticsHub.DataExchange(\"data_exchange\", new()\n {\n Location = \"US\",\n DataExchangeId = \"my_data_exchange\",\n DisplayName = \"my_data_exchange\",\n Description = \"example data exchange\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigqueryanalyticshub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := bigqueryanalyticshub.NewDataExchange(ctx, \"data_exchange\", \u0026bigqueryanalyticshub.DataExchangeArgs{\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tDataExchangeId: pulumi.String(\"my_data_exchange\"),\n\t\t\tDisplayName: pulumi.String(\"my_data_exchange\"),\n\t\t\tDescription: pulumi.String(\"example data exchange\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigqueryanalyticshub.DataExchange;\nimport com.pulumi.gcp.bigqueryanalyticshub.DataExchangeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var dataExchange = new DataExchange(\"dataExchange\", DataExchangeArgs.builder()\n .location(\"US\")\n .dataExchangeId(\"my_data_exchange\")\n .displayName(\"my_data_exchange\")\n .description(\"example data exchange\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dataExchange:\n type: gcp:bigqueryanalyticshub:DataExchange\n name: data_exchange\n properties:\n location: US\n dataExchangeId: my_data_exchange\n displayName: my_data_exchange\n description: example data exchange\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Analyticshub Data Exchange Dcr\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dataExchange = new gcp.bigqueryanalyticshub.DataExchange(\"data_exchange\", {\n location: \"US\",\n dataExchangeId: \"dcr_data_exchange\",\n displayName: \"dcr_data_exchange\",\n description: \"example dcr data exchange\",\n sharingEnvironmentConfig: {\n dcrExchangeConfig: {},\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndata_exchange = gcp.bigqueryanalyticshub.DataExchange(\"data_exchange\",\n location=\"US\",\n data_exchange_id=\"dcr_data_exchange\",\n display_name=\"dcr_data_exchange\",\n description=\"example dcr data exchange\",\n sharing_environment_config={\n \"dcr_exchange_config\": {},\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var dataExchange = new Gcp.BigQueryAnalyticsHub.DataExchange(\"data_exchange\", new()\n {\n Location = \"US\",\n DataExchangeId = \"dcr_data_exchange\",\n DisplayName = \"dcr_data_exchange\",\n Description = \"example dcr data exchange\",\n SharingEnvironmentConfig = new Gcp.BigQueryAnalyticsHub.Inputs.DataExchangeSharingEnvironmentConfigArgs\n {\n DcrExchangeConfig = null,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigqueryanalyticshub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := bigqueryanalyticshub.NewDataExchange(ctx, \"data_exchange\", \u0026bigqueryanalyticshub.DataExchangeArgs{\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tDataExchangeId: pulumi.String(\"dcr_data_exchange\"),\n\t\t\tDisplayName: pulumi.String(\"dcr_data_exchange\"),\n\t\t\tDescription: pulumi.String(\"example dcr data exchange\"),\n\t\t\tSharingEnvironmentConfig: \u0026bigqueryanalyticshub.DataExchangeSharingEnvironmentConfigArgs{\n\t\t\t\tDcrExchangeConfig: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigqueryanalyticshub.DataExchange;\nimport com.pulumi.gcp.bigqueryanalyticshub.DataExchangeArgs;\nimport com.pulumi.gcp.bigqueryanalyticshub.inputs.DataExchangeSharingEnvironmentConfigArgs;\nimport com.pulumi.gcp.bigqueryanalyticshub.inputs.DataExchangeSharingEnvironmentConfigDcrExchangeConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var dataExchange = new DataExchange(\"dataExchange\", DataExchangeArgs.builder()\n .location(\"US\")\n .dataExchangeId(\"dcr_data_exchange\")\n .displayName(\"dcr_data_exchange\")\n .description(\"example dcr data exchange\")\n .sharingEnvironmentConfig(DataExchangeSharingEnvironmentConfigArgs.builder()\n .dcrExchangeConfig()\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dataExchange:\n type: gcp:bigqueryanalyticshub:DataExchange\n name: data_exchange\n properties:\n location: US\n dataExchangeId: dcr_data_exchange\n displayName: dcr_data_exchange\n description: example dcr data exchange\n sharingEnvironmentConfig:\n dcrExchangeConfig: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDataExchange can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/dataExchanges/{{data_exchange_id}}`\n\n* `{{project}}/{{location}}/{{data_exchange_id}}`\n\n* `{{location}}/{{data_exchange_id}}`\n\n* `{{data_exchange_id}}`\n\nWhen using the `pulumi import` command, DataExchange can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:bigqueryanalyticshub/dataExchange:DataExchange default projects/{{project}}/locations/{{location}}/dataExchanges/{{data_exchange_id}}\n```\n\n```sh\n$ pulumi import gcp:bigqueryanalyticshub/dataExchange:DataExchange default {{project}}/{{location}}/{{data_exchange_id}}\n```\n\n```sh\n$ pulumi import gcp:bigqueryanalyticshub/dataExchange:DataExchange default {{location}}/{{data_exchange_id}}\n```\n\n```sh\n$ pulumi import gcp:bigqueryanalyticshub/dataExchange:DataExchange default {{data_exchange_id}}\n```\n\n", + "description": "A Bigquery Analytics Hub data exchange\n\n\nTo get more information about DataExchange, see:\n\n* [API documentation](https://cloud.google.com/bigquery/docs/reference/analytics-hub/rest/v1/projects.locations.dataExchanges)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/bigquery/docs/analytics-hub-introduction)\n\n## Example Usage\n\n### Bigquery Analyticshub Data Exchange Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dataExchange = new gcp.bigqueryanalyticshub.DataExchange(\"data_exchange\", {\n location: \"US\",\n dataExchangeId: \"my_data_exchange\",\n displayName: \"my_data_exchange\",\n description: \"example data exchange\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndata_exchange = gcp.bigqueryanalyticshub.DataExchange(\"data_exchange\",\n location=\"US\",\n data_exchange_id=\"my_data_exchange\",\n display_name=\"my_data_exchange\",\n description=\"example data exchange\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var dataExchange = new Gcp.BigQueryAnalyticsHub.DataExchange(\"data_exchange\", new()\n {\n Location = \"US\",\n DataExchangeId = \"my_data_exchange\",\n DisplayName = \"my_data_exchange\",\n Description = \"example data exchange\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigqueryanalyticshub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := bigqueryanalyticshub.NewDataExchange(ctx, \"data_exchange\", \u0026bigqueryanalyticshub.DataExchangeArgs{\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tDataExchangeId: pulumi.String(\"my_data_exchange\"),\n\t\t\tDisplayName: pulumi.String(\"my_data_exchange\"),\n\t\t\tDescription: pulumi.String(\"example data exchange\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigqueryanalyticshub.DataExchange;\nimport com.pulumi.gcp.bigqueryanalyticshub.DataExchangeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var dataExchange = new DataExchange(\"dataExchange\", DataExchangeArgs.builder()\n .location(\"US\")\n .dataExchangeId(\"my_data_exchange\")\n .displayName(\"my_data_exchange\")\n .description(\"example data exchange\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dataExchange:\n type: gcp:bigqueryanalyticshub:DataExchange\n name: data_exchange\n properties:\n location: US\n dataExchangeId: my_data_exchange\n displayName: my_data_exchange\n description: example data exchange\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Analyticshub Data Exchange Dcr\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dataExchange = new gcp.bigqueryanalyticshub.DataExchange(\"data_exchange\", {\n location: \"US\",\n dataExchangeId: \"dcr_data_exchange\",\n displayName: \"dcr_data_exchange\",\n description: \"example dcr data exchange\",\n sharingEnvironmentConfig: {\n dcrExchangeConfig: {},\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndata_exchange = gcp.bigqueryanalyticshub.DataExchange(\"data_exchange\",\n location=\"US\",\n data_exchange_id=\"dcr_data_exchange\",\n display_name=\"dcr_data_exchange\",\n description=\"example dcr data exchange\",\n sharing_environment_config={\n \"dcr_exchange_config\": {},\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var dataExchange = new Gcp.BigQueryAnalyticsHub.DataExchange(\"data_exchange\", new()\n {\n Location = \"US\",\n DataExchangeId = \"dcr_data_exchange\",\n DisplayName = \"dcr_data_exchange\",\n Description = \"example dcr data exchange\",\n SharingEnvironmentConfig = new Gcp.BigQueryAnalyticsHub.Inputs.DataExchangeSharingEnvironmentConfigArgs\n {\n DcrExchangeConfig = null,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigqueryanalyticshub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := bigqueryanalyticshub.NewDataExchange(ctx, \"data_exchange\", \u0026bigqueryanalyticshub.DataExchangeArgs{\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tDataExchangeId: pulumi.String(\"dcr_data_exchange\"),\n\t\t\tDisplayName: pulumi.String(\"dcr_data_exchange\"),\n\t\t\tDescription: pulumi.String(\"example dcr data exchange\"),\n\t\t\tSharingEnvironmentConfig: \u0026bigqueryanalyticshub.DataExchangeSharingEnvironmentConfigArgs{\n\t\t\t\tDcrExchangeConfig: \u0026bigqueryanalyticshub.DataExchangeSharingEnvironmentConfigDcrExchangeConfigArgs{},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigqueryanalyticshub.DataExchange;\nimport com.pulumi.gcp.bigqueryanalyticshub.DataExchangeArgs;\nimport com.pulumi.gcp.bigqueryanalyticshub.inputs.DataExchangeSharingEnvironmentConfigArgs;\nimport com.pulumi.gcp.bigqueryanalyticshub.inputs.DataExchangeSharingEnvironmentConfigDcrExchangeConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var dataExchange = new DataExchange(\"dataExchange\", DataExchangeArgs.builder()\n .location(\"US\")\n .dataExchangeId(\"dcr_data_exchange\")\n .displayName(\"dcr_data_exchange\")\n .description(\"example dcr data exchange\")\n .sharingEnvironmentConfig(DataExchangeSharingEnvironmentConfigArgs.builder()\n .dcrExchangeConfig()\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dataExchange:\n type: gcp:bigqueryanalyticshub:DataExchange\n name: data_exchange\n properties:\n location: US\n dataExchangeId: dcr_data_exchange\n displayName: dcr_data_exchange\n description: example dcr data exchange\n sharingEnvironmentConfig:\n dcrExchangeConfig: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDataExchange can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/dataExchanges/{{data_exchange_id}}`\n\n* `{{project}}/{{location}}/{{data_exchange_id}}`\n\n* `{{location}}/{{data_exchange_id}}`\n\n* `{{data_exchange_id}}`\n\nWhen using the `pulumi import` command, DataExchange can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:bigqueryanalyticshub/dataExchange:DataExchange default projects/{{project}}/locations/{{location}}/dataExchanges/{{data_exchange_id}}\n```\n\n```sh\n$ pulumi import gcp:bigqueryanalyticshub/dataExchange:DataExchange default {{project}}/{{location}}/{{data_exchange_id}}\n```\n\n```sh\n$ pulumi import gcp:bigqueryanalyticshub/dataExchange:DataExchange default {{location}}/{{data_exchange_id}}\n```\n\n```sh\n$ pulumi import gcp:bigqueryanalyticshub/dataExchange:DataExchange default {{data_exchange_id}}\n```\n\n", "properties": { "dataExchangeId": { "type": "string", @@ -130820,7 +130820,7 @@ } }, "gcp:bigqueryanalyticshub/listing:Listing": { - "description": "A Bigquery Analytics Hub data exchange listing\n\n\nTo get more information about Listing, see:\n\n* [API documentation](https://cloud.google.com/bigquery/docs/reference/analytics-hub/rest/v1/projects.locations.dataExchanges.listings)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/bigquery/docs/analytics-hub-introduction)\n\n## Example Usage\n\n### Bigquery Analyticshub Listing Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst listing = new gcp.bigqueryanalyticshub.DataExchange(\"listing\", {\n location: \"US\",\n dataExchangeId: \"my_data_exchange\",\n displayName: \"my_data_exchange\",\n description: \"example data exchange\",\n});\nconst listingDataset = new gcp.bigquery.Dataset(\"listing\", {\n datasetId: \"my_listing\",\n friendlyName: \"my_listing\",\n description: \"example data exchange\",\n location: \"US\",\n});\nconst listingListing = new gcp.bigqueryanalyticshub.Listing(\"listing\", {\n location: \"US\",\n dataExchangeId: listing.dataExchangeId,\n listingId: \"my_listing\",\n displayName: \"my_listing\",\n description: \"example data exchange\",\n bigqueryDataset: {\n dataset: listingDataset.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nlisting = gcp.bigqueryanalyticshub.DataExchange(\"listing\",\n location=\"US\",\n data_exchange_id=\"my_data_exchange\",\n display_name=\"my_data_exchange\",\n description=\"example data exchange\")\nlisting_dataset = gcp.bigquery.Dataset(\"listing\",\n dataset_id=\"my_listing\",\n friendly_name=\"my_listing\",\n description=\"example data exchange\",\n location=\"US\")\nlisting_listing = gcp.bigqueryanalyticshub.Listing(\"listing\",\n location=\"US\",\n data_exchange_id=listing.data_exchange_id,\n listing_id=\"my_listing\",\n display_name=\"my_listing\",\n description=\"example data exchange\",\n bigquery_dataset={\n \"dataset\": listing_dataset.id,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var listing = new Gcp.BigQueryAnalyticsHub.DataExchange(\"listing\", new()\n {\n Location = \"US\",\n DataExchangeId = \"my_data_exchange\",\n DisplayName = \"my_data_exchange\",\n Description = \"example data exchange\",\n });\n\n var listingDataset = new Gcp.BigQuery.Dataset(\"listing\", new()\n {\n DatasetId = \"my_listing\",\n FriendlyName = \"my_listing\",\n Description = \"example data exchange\",\n Location = \"US\",\n });\n\n var listingListing = new Gcp.BigQueryAnalyticsHub.Listing(\"listing\", new()\n {\n Location = \"US\",\n DataExchangeId = listing.DataExchangeId,\n ListingId = \"my_listing\",\n DisplayName = \"my_listing\",\n Description = \"example data exchange\",\n BigqueryDataset = new Gcp.BigQueryAnalyticsHub.Inputs.ListingBigqueryDatasetArgs\n {\n Dataset = listingDataset.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigqueryanalyticshub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tlisting, err := bigqueryanalyticshub.NewDataExchange(ctx, \"listing\", \u0026bigqueryanalyticshub.DataExchangeArgs{\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tDataExchangeId: pulumi.String(\"my_data_exchange\"),\n\t\t\tDisplayName: pulumi.String(\"my_data_exchange\"),\n\t\t\tDescription: pulumi.String(\"example data exchange\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlistingDataset, err := bigquery.NewDataset(ctx, \"listing\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"my_listing\"),\n\t\t\tFriendlyName: pulumi.String(\"my_listing\"),\n\t\t\tDescription: pulumi.String(\"example data exchange\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigqueryanalyticshub.NewListing(ctx, \"listing\", \u0026bigqueryanalyticshub.ListingArgs{\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tDataExchangeId: listing.DataExchangeId,\n\t\t\tListingId: pulumi.String(\"my_listing\"),\n\t\t\tDisplayName: pulumi.String(\"my_listing\"),\n\t\t\tDescription: pulumi.String(\"example data exchange\"),\n\t\t\tBigqueryDataset: \u0026bigqueryanalyticshub.ListingBigqueryDatasetArgs{\n\t\t\t\tDataset: listingDataset.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigqueryanalyticshub.DataExchange;\nimport com.pulumi.gcp.bigqueryanalyticshub.DataExchangeArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigqueryanalyticshub.Listing;\nimport com.pulumi.gcp.bigqueryanalyticshub.ListingArgs;\nimport com.pulumi.gcp.bigqueryanalyticshub.inputs.ListingBigqueryDatasetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var listing = new DataExchange(\"listing\", DataExchangeArgs.builder()\n .location(\"US\")\n .dataExchangeId(\"my_data_exchange\")\n .displayName(\"my_data_exchange\")\n .description(\"example data exchange\")\n .build());\n\n var listingDataset = new Dataset(\"listingDataset\", DatasetArgs.builder()\n .datasetId(\"my_listing\")\n .friendlyName(\"my_listing\")\n .description(\"example data exchange\")\n .location(\"US\")\n .build());\n\n var listingListing = new Listing(\"listingListing\", ListingArgs.builder()\n .location(\"US\")\n .dataExchangeId(listing.dataExchangeId())\n .listingId(\"my_listing\")\n .displayName(\"my_listing\")\n .description(\"example data exchange\")\n .bigqueryDataset(ListingBigqueryDatasetArgs.builder()\n .dataset(listingDataset.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n listing:\n type: gcp:bigqueryanalyticshub:DataExchange\n properties:\n location: US\n dataExchangeId: my_data_exchange\n displayName: my_data_exchange\n description: example data exchange\n listingListing:\n type: gcp:bigqueryanalyticshub:Listing\n name: listing\n properties:\n location: US\n dataExchangeId: ${listing.dataExchangeId}\n listingId: my_listing\n displayName: my_listing\n description: example data exchange\n bigqueryDataset:\n dataset: ${listingDataset.id}\n listingDataset:\n type: gcp:bigquery:Dataset\n name: listing\n properties:\n datasetId: my_listing\n friendlyName: my_listing\n description: example data exchange\n location: US\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Analyticshub Listing Restricted\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst listing = new gcp.bigqueryanalyticshub.DataExchange(\"listing\", {\n location: \"US\",\n dataExchangeId: \"my_data_exchange\",\n displayName: \"my_data_exchange\",\n description: \"example data exchange\",\n});\nconst listingDataset = new gcp.bigquery.Dataset(\"listing\", {\n datasetId: \"my_listing\",\n friendlyName: \"my_listing\",\n description: \"example data exchange\",\n location: \"US\",\n});\nconst listingListing = new gcp.bigqueryanalyticshub.Listing(\"listing\", {\n location: \"US\",\n dataExchangeId: listing.dataExchangeId,\n listingId: \"my_listing\",\n displayName: \"my_listing\",\n description: \"example data exchange\",\n bigqueryDataset: {\n dataset: listingDataset.id,\n },\n restrictedExportConfig: {\n enabled: true,\n restrictQueryResult: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nlisting = gcp.bigqueryanalyticshub.DataExchange(\"listing\",\n location=\"US\",\n data_exchange_id=\"my_data_exchange\",\n display_name=\"my_data_exchange\",\n description=\"example data exchange\")\nlisting_dataset = gcp.bigquery.Dataset(\"listing\",\n dataset_id=\"my_listing\",\n friendly_name=\"my_listing\",\n description=\"example data exchange\",\n location=\"US\")\nlisting_listing = gcp.bigqueryanalyticshub.Listing(\"listing\",\n location=\"US\",\n data_exchange_id=listing.data_exchange_id,\n listing_id=\"my_listing\",\n display_name=\"my_listing\",\n description=\"example data exchange\",\n bigquery_dataset={\n \"dataset\": listing_dataset.id,\n },\n restricted_export_config={\n \"enabled\": True,\n \"restrict_query_result\": True,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var listing = new Gcp.BigQueryAnalyticsHub.DataExchange(\"listing\", new()\n {\n Location = \"US\",\n DataExchangeId = \"my_data_exchange\",\n DisplayName = \"my_data_exchange\",\n Description = \"example data exchange\",\n });\n\n var listingDataset = new Gcp.BigQuery.Dataset(\"listing\", new()\n {\n DatasetId = \"my_listing\",\n FriendlyName = \"my_listing\",\n Description = \"example data exchange\",\n Location = \"US\",\n });\n\n var listingListing = new Gcp.BigQueryAnalyticsHub.Listing(\"listing\", new()\n {\n Location = \"US\",\n DataExchangeId = listing.DataExchangeId,\n ListingId = \"my_listing\",\n DisplayName = \"my_listing\",\n Description = \"example data exchange\",\n BigqueryDataset = new Gcp.BigQueryAnalyticsHub.Inputs.ListingBigqueryDatasetArgs\n {\n Dataset = listingDataset.Id,\n },\n RestrictedExportConfig = new Gcp.BigQueryAnalyticsHub.Inputs.ListingRestrictedExportConfigArgs\n {\n Enabled = true,\n RestrictQueryResult = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigqueryanalyticshub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tlisting, err := bigqueryanalyticshub.NewDataExchange(ctx, \"listing\", \u0026bigqueryanalyticshub.DataExchangeArgs{\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tDataExchangeId: pulumi.String(\"my_data_exchange\"),\n\t\t\tDisplayName: pulumi.String(\"my_data_exchange\"),\n\t\t\tDescription: pulumi.String(\"example data exchange\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlistingDataset, err := bigquery.NewDataset(ctx, \"listing\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"my_listing\"),\n\t\t\tFriendlyName: pulumi.String(\"my_listing\"),\n\t\t\tDescription: pulumi.String(\"example data exchange\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigqueryanalyticshub.NewListing(ctx, \"listing\", \u0026bigqueryanalyticshub.ListingArgs{\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tDataExchangeId: listing.DataExchangeId,\n\t\t\tListingId: pulumi.String(\"my_listing\"),\n\t\t\tDisplayName: pulumi.String(\"my_listing\"),\n\t\t\tDescription: pulumi.String(\"example data exchange\"),\n\t\t\tBigqueryDataset: \u0026bigqueryanalyticshub.ListingBigqueryDatasetArgs{\n\t\t\t\tDataset: listingDataset.ID(),\n\t\t\t},\n\t\t\tRestrictedExportConfig: \u0026bigqueryanalyticshub.ListingRestrictedExportConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\tRestrictQueryResult: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigqueryanalyticshub.DataExchange;\nimport com.pulumi.gcp.bigqueryanalyticshub.DataExchangeArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigqueryanalyticshub.Listing;\nimport com.pulumi.gcp.bigqueryanalyticshub.ListingArgs;\nimport com.pulumi.gcp.bigqueryanalyticshub.inputs.ListingBigqueryDatasetArgs;\nimport com.pulumi.gcp.bigqueryanalyticshub.inputs.ListingRestrictedExportConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var listing = new DataExchange(\"listing\", DataExchangeArgs.builder()\n .location(\"US\")\n .dataExchangeId(\"my_data_exchange\")\n .displayName(\"my_data_exchange\")\n .description(\"example data exchange\")\n .build());\n\n var listingDataset = new Dataset(\"listingDataset\", DatasetArgs.builder()\n .datasetId(\"my_listing\")\n .friendlyName(\"my_listing\")\n .description(\"example data exchange\")\n .location(\"US\")\n .build());\n\n var listingListing = new Listing(\"listingListing\", ListingArgs.builder()\n .location(\"US\")\n .dataExchangeId(listing.dataExchangeId())\n .listingId(\"my_listing\")\n .displayName(\"my_listing\")\n .description(\"example data exchange\")\n .bigqueryDataset(ListingBigqueryDatasetArgs.builder()\n .dataset(listingDataset.id())\n .build())\n .restrictedExportConfig(ListingRestrictedExportConfigArgs.builder()\n .enabled(true)\n .restrictQueryResult(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n listing:\n type: gcp:bigqueryanalyticshub:DataExchange\n properties:\n location: US\n dataExchangeId: my_data_exchange\n displayName: my_data_exchange\n description: example data exchange\n listingListing:\n type: gcp:bigqueryanalyticshub:Listing\n name: listing\n properties:\n location: US\n dataExchangeId: ${listing.dataExchangeId}\n listingId: my_listing\n displayName: my_listing\n description: example data exchange\n bigqueryDataset:\n dataset: ${listingDataset.id}\n restrictedExportConfig:\n enabled: true\n restrictQueryResult: true\n listingDataset:\n type: gcp:bigquery:Dataset\n name: listing\n properties:\n datasetId: my_listing\n friendlyName: my_listing\n description: example data exchange\n location: US\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Analyticshub Listing Dcr\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst listing = new gcp.bigqueryanalyticshub.DataExchange(\"listing\", {\n location: \"US\",\n dataExchangeId: \"dcr_data_exchange\",\n displayName: \"dcr_data_exchange\",\n description: \"example dcr data exchange\",\n sharingEnvironmentConfig: {\n dcrExchangeConfig: {},\n },\n});\nconst listingDataset = new gcp.bigquery.Dataset(\"listing\", {\n datasetId: \"dcr_listing\",\n friendlyName: \"dcr_listing\",\n description: \"example dcr data exchange\",\n location: \"US\",\n});\nconst listingTable = new gcp.bigquery.Table(\"listing\", {\n deletionProtection: false,\n tableId: \"dcr_listing\",\n datasetId: listingDataset.datasetId,\n schema: `[\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n]\n`,\n});\nconst listingListing = new gcp.bigqueryanalyticshub.Listing(\"listing\", {\n location: \"US\",\n dataExchangeId: listing.dataExchangeId,\n listingId: \"dcr_listing\",\n displayName: \"dcr_listing\",\n description: \"example dcr data exchange\",\n bigqueryDataset: {\n dataset: listingDataset.id,\n selectedResources: [{\n table: listingTable.id,\n }],\n },\n restrictedExportConfig: {\n enabled: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nlisting = gcp.bigqueryanalyticshub.DataExchange(\"listing\",\n location=\"US\",\n data_exchange_id=\"dcr_data_exchange\",\n display_name=\"dcr_data_exchange\",\n description=\"example dcr data exchange\",\n sharing_environment_config={\n \"dcr_exchange_config\": {},\n })\nlisting_dataset = gcp.bigquery.Dataset(\"listing\",\n dataset_id=\"dcr_listing\",\n friendly_name=\"dcr_listing\",\n description=\"example dcr data exchange\",\n location=\"US\")\nlisting_table = gcp.bigquery.Table(\"listing\",\n deletion_protection=False,\n table_id=\"dcr_listing\",\n dataset_id=listing_dataset.dataset_id,\n schema=\"\"\"[\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n]\n\"\"\")\nlisting_listing = gcp.bigqueryanalyticshub.Listing(\"listing\",\n location=\"US\",\n data_exchange_id=listing.data_exchange_id,\n listing_id=\"dcr_listing\",\n display_name=\"dcr_listing\",\n description=\"example dcr data exchange\",\n bigquery_dataset={\n \"dataset\": listing_dataset.id,\n \"selected_resources\": [{\n \"table\": listing_table.id,\n }],\n },\n restricted_export_config={\n \"enabled\": True,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var listing = new Gcp.BigQueryAnalyticsHub.DataExchange(\"listing\", new()\n {\n Location = \"US\",\n DataExchangeId = \"dcr_data_exchange\",\n DisplayName = \"dcr_data_exchange\",\n Description = \"example dcr data exchange\",\n SharingEnvironmentConfig = new Gcp.BigQueryAnalyticsHub.Inputs.DataExchangeSharingEnvironmentConfigArgs\n {\n DcrExchangeConfig = null,\n },\n });\n\n var listingDataset = new Gcp.BigQuery.Dataset(\"listing\", new()\n {\n DatasetId = \"dcr_listing\",\n FriendlyName = \"dcr_listing\",\n Description = \"example dcr data exchange\",\n Location = \"US\",\n });\n\n var listingTable = new Gcp.BigQuery.Table(\"listing\", new()\n {\n DeletionProtection = false,\n TableId = \"dcr_listing\",\n DatasetId = listingDataset.DatasetId,\n Schema = @\"[\n {\n \"\"name\"\": \"\"name\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n },\n {\n \"\"name\"\": \"\"post_abbr\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n },\n {\n \"\"name\"\": \"\"date\"\",\n \"\"type\"\": \"\"DATE\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n }\n]\n\",\n });\n\n var listingListing = new Gcp.BigQueryAnalyticsHub.Listing(\"listing\", new()\n {\n Location = \"US\",\n DataExchangeId = listing.DataExchangeId,\n ListingId = \"dcr_listing\",\n DisplayName = \"dcr_listing\",\n Description = \"example dcr data exchange\",\n BigqueryDataset = new Gcp.BigQueryAnalyticsHub.Inputs.ListingBigqueryDatasetArgs\n {\n Dataset = listingDataset.Id,\n SelectedResources = new[]\n {\n new Gcp.BigQueryAnalyticsHub.Inputs.ListingBigqueryDatasetSelectedResourceArgs\n {\n Table = listingTable.Id,\n },\n },\n },\n RestrictedExportConfig = new Gcp.BigQueryAnalyticsHub.Inputs.ListingRestrictedExportConfigArgs\n {\n Enabled = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigqueryanalyticshub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tlisting, err := bigqueryanalyticshub.NewDataExchange(ctx, \"listing\", \u0026bigqueryanalyticshub.DataExchangeArgs{\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tDataExchangeId: pulumi.String(\"dcr_data_exchange\"),\n\t\t\tDisplayName: pulumi.String(\"dcr_data_exchange\"),\n\t\t\tDescription: pulumi.String(\"example dcr data exchange\"),\n\t\t\tSharingEnvironmentConfig: \u0026bigqueryanalyticshub.DataExchangeSharingEnvironmentConfigArgs{\n\t\t\t\tDcrExchangeConfig: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlistingDataset, err := bigquery.NewDataset(ctx, \"listing\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dcr_listing\"),\n\t\t\tFriendlyName: pulumi.String(\"dcr_listing\"),\n\t\t\tDescription: pulumi.String(\"example dcr data exchange\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlistingTable, err := bigquery.NewTable(ctx, \"listing\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTableId: pulumi.String(\"dcr_listing\"),\n\t\t\tDatasetId: listingDataset.DatasetId,\n\t\t\tSchema: pulumi.String(`[\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigqueryanalyticshub.NewListing(ctx, \"listing\", \u0026bigqueryanalyticshub.ListingArgs{\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tDataExchangeId: listing.DataExchangeId,\n\t\t\tListingId: pulumi.String(\"dcr_listing\"),\n\t\t\tDisplayName: pulumi.String(\"dcr_listing\"),\n\t\t\tDescription: pulumi.String(\"example dcr data exchange\"),\n\t\t\tBigqueryDataset: \u0026bigqueryanalyticshub.ListingBigqueryDatasetArgs{\n\t\t\t\tDataset: listingDataset.ID(),\n\t\t\t\tSelectedResources: bigqueryanalyticshub.ListingBigqueryDatasetSelectedResourceArray{\n\t\t\t\t\t\u0026bigqueryanalyticshub.ListingBigqueryDatasetSelectedResourceArgs{\n\t\t\t\t\t\tTable: listingTable.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tRestrictedExportConfig: \u0026bigqueryanalyticshub.ListingRestrictedExportConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigqueryanalyticshub.DataExchange;\nimport com.pulumi.gcp.bigqueryanalyticshub.DataExchangeArgs;\nimport com.pulumi.gcp.bigqueryanalyticshub.inputs.DataExchangeSharingEnvironmentConfigArgs;\nimport com.pulumi.gcp.bigqueryanalyticshub.inputs.DataExchangeSharingEnvironmentConfigDcrExchangeConfigArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.bigqueryanalyticshub.Listing;\nimport com.pulumi.gcp.bigqueryanalyticshub.ListingArgs;\nimport com.pulumi.gcp.bigqueryanalyticshub.inputs.ListingBigqueryDatasetArgs;\nimport com.pulumi.gcp.bigqueryanalyticshub.inputs.ListingRestrictedExportConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var listing = new DataExchange(\"listing\", DataExchangeArgs.builder()\n .location(\"US\")\n .dataExchangeId(\"dcr_data_exchange\")\n .displayName(\"dcr_data_exchange\")\n .description(\"example dcr data exchange\")\n .sharingEnvironmentConfig(DataExchangeSharingEnvironmentConfigArgs.builder()\n .dcrExchangeConfig()\n .build())\n .build());\n\n var listingDataset = new Dataset(\"listingDataset\", DatasetArgs.builder()\n .datasetId(\"dcr_listing\")\n .friendlyName(\"dcr_listing\")\n .description(\"example dcr data exchange\")\n .location(\"US\")\n .build());\n\n var listingTable = new Table(\"listingTable\", TableArgs.builder()\n .deletionProtection(false)\n .tableId(\"dcr_listing\")\n .datasetId(listingDataset.datasetId())\n .schema(\"\"\"\n[\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n]\n \"\"\")\n .build());\n\n var listingListing = new Listing(\"listingListing\", ListingArgs.builder()\n .location(\"US\")\n .dataExchangeId(listing.dataExchangeId())\n .listingId(\"dcr_listing\")\n .displayName(\"dcr_listing\")\n .description(\"example dcr data exchange\")\n .bigqueryDataset(ListingBigqueryDatasetArgs.builder()\n .dataset(listingDataset.id())\n .selectedResources(ListingBigqueryDatasetSelectedResourceArgs.builder()\n .table(listingTable.id())\n .build())\n .build())\n .restrictedExportConfig(ListingRestrictedExportConfigArgs.builder()\n .enabled(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n listing:\n type: gcp:bigqueryanalyticshub:DataExchange\n properties:\n location: US\n dataExchangeId: dcr_data_exchange\n displayName: dcr_data_exchange\n description: example dcr data exchange\n sharingEnvironmentConfig:\n dcrExchangeConfig: {}\n listingListing:\n type: gcp:bigqueryanalyticshub:Listing\n name: listing\n properties:\n location: US\n dataExchangeId: ${listing.dataExchangeId}\n listingId: dcr_listing\n displayName: dcr_listing\n description: example dcr data exchange\n bigqueryDataset:\n dataset: ${listingDataset.id}\n selectedResources:\n - table: ${listingTable.id}\n restrictedExportConfig:\n enabled: true\n listingDataset:\n type: gcp:bigquery:Dataset\n name: listing\n properties:\n datasetId: dcr_listing\n friendlyName: dcr_listing\n description: example dcr data exchange\n location: US\n listingTable:\n type: gcp:bigquery:Table\n name: listing\n properties:\n deletionProtection: false\n tableId: dcr_listing\n datasetId: ${listingDataset.datasetId}\n schema: |\n [\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n ]\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nListing can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/dataExchanges/{{data_exchange_id}}/listings/{{listing_id}}`\n\n* `{{project}}/{{location}}/{{data_exchange_id}}/{{listing_id}}`\n\n* `{{location}}/{{data_exchange_id}}/{{listing_id}}`\n\nWhen using the `pulumi import` command, Listing can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:bigqueryanalyticshub/listing:Listing default projects/{{project}}/locations/{{location}}/dataExchanges/{{data_exchange_id}}/listings/{{listing_id}}\n```\n\n```sh\n$ pulumi import gcp:bigqueryanalyticshub/listing:Listing default {{project}}/{{location}}/{{data_exchange_id}}/{{listing_id}}\n```\n\n```sh\n$ pulumi import gcp:bigqueryanalyticshub/listing:Listing default {{location}}/{{data_exchange_id}}/{{listing_id}}\n```\n\n", + "description": "A Bigquery Analytics Hub data exchange listing\n\n\nTo get more information about Listing, see:\n\n* [API documentation](https://cloud.google.com/bigquery/docs/reference/analytics-hub/rest/v1/projects.locations.dataExchanges.listings)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/bigquery/docs/analytics-hub-introduction)\n\n## Example Usage\n\n### Bigquery Analyticshub Listing Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst listing = new gcp.bigqueryanalyticshub.DataExchange(\"listing\", {\n location: \"US\",\n dataExchangeId: \"my_data_exchange\",\n displayName: \"my_data_exchange\",\n description: \"example data exchange\",\n});\nconst listingDataset = new gcp.bigquery.Dataset(\"listing\", {\n datasetId: \"my_listing\",\n friendlyName: \"my_listing\",\n description: \"example data exchange\",\n location: \"US\",\n});\nconst listingListing = new gcp.bigqueryanalyticshub.Listing(\"listing\", {\n location: \"US\",\n dataExchangeId: listing.dataExchangeId,\n listingId: \"my_listing\",\n displayName: \"my_listing\",\n description: \"example data exchange\",\n bigqueryDataset: {\n dataset: listingDataset.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nlisting = gcp.bigqueryanalyticshub.DataExchange(\"listing\",\n location=\"US\",\n data_exchange_id=\"my_data_exchange\",\n display_name=\"my_data_exchange\",\n description=\"example data exchange\")\nlisting_dataset = gcp.bigquery.Dataset(\"listing\",\n dataset_id=\"my_listing\",\n friendly_name=\"my_listing\",\n description=\"example data exchange\",\n location=\"US\")\nlisting_listing = gcp.bigqueryanalyticshub.Listing(\"listing\",\n location=\"US\",\n data_exchange_id=listing.data_exchange_id,\n listing_id=\"my_listing\",\n display_name=\"my_listing\",\n description=\"example data exchange\",\n bigquery_dataset={\n \"dataset\": listing_dataset.id,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var listing = new Gcp.BigQueryAnalyticsHub.DataExchange(\"listing\", new()\n {\n Location = \"US\",\n DataExchangeId = \"my_data_exchange\",\n DisplayName = \"my_data_exchange\",\n Description = \"example data exchange\",\n });\n\n var listingDataset = new Gcp.BigQuery.Dataset(\"listing\", new()\n {\n DatasetId = \"my_listing\",\n FriendlyName = \"my_listing\",\n Description = \"example data exchange\",\n Location = \"US\",\n });\n\n var listingListing = new Gcp.BigQueryAnalyticsHub.Listing(\"listing\", new()\n {\n Location = \"US\",\n DataExchangeId = listing.DataExchangeId,\n ListingId = \"my_listing\",\n DisplayName = \"my_listing\",\n Description = \"example data exchange\",\n BigqueryDataset = new Gcp.BigQueryAnalyticsHub.Inputs.ListingBigqueryDatasetArgs\n {\n Dataset = listingDataset.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigqueryanalyticshub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tlisting, err := bigqueryanalyticshub.NewDataExchange(ctx, \"listing\", \u0026bigqueryanalyticshub.DataExchangeArgs{\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tDataExchangeId: pulumi.String(\"my_data_exchange\"),\n\t\t\tDisplayName: pulumi.String(\"my_data_exchange\"),\n\t\t\tDescription: pulumi.String(\"example data exchange\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlistingDataset, err := bigquery.NewDataset(ctx, \"listing\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"my_listing\"),\n\t\t\tFriendlyName: pulumi.String(\"my_listing\"),\n\t\t\tDescription: pulumi.String(\"example data exchange\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigqueryanalyticshub.NewListing(ctx, \"listing\", \u0026bigqueryanalyticshub.ListingArgs{\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tDataExchangeId: listing.DataExchangeId,\n\t\t\tListingId: pulumi.String(\"my_listing\"),\n\t\t\tDisplayName: pulumi.String(\"my_listing\"),\n\t\t\tDescription: pulumi.String(\"example data exchange\"),\n\t\t\tBigqueryDataset: \u0026bigqueryanalyticshub.ListingBigqueryDatasetArgs{\n\t\t\t\tDataset: listingDataset.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigqueryanalyticshub.DataExchange;\nimport com.pulumi.gcp.bigqueryanalyticshub.DataExchangeArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigqueryanalyticshub.Listing;\nimport com.pulumi.gcp.bigqueryanalyticshub.ListingArgs;\nimport com.pulumi.gcp.bigqueryanalyticshub.inputs.ListingBigqueryDatasetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var listing = new DataExchange(\"listing\", DataExchangeArgs.builder()\n .location(\"US\")\n .dataExchangeId(\"my_data_exchange\")\n .displayName(\"my_data_exchange\")\n .description(\"example data exchange\")\n .build());\n\n var listingDataset = new Dataset(\"listingDataset\", DatasetArgs.builder()\n .datasetId(\"my_listing\")\n .friendlyName(\"my_listing\")\n .description(\"example data exchange\")\n .location(\"US\")\n .build());\n\n var listingListing = new Listing(\"listingListing\", ListingArgs.builder()\n .location(\"US\")\n .dataExchangeId(listing.dataExchangeId())\n .listingId(\"my_listing\")\n .displayName(\"my_listing\")\n .description(\"example data exchange\")\n .bigqueryDataset(ListingBigqueryDatasetArgs.builder()\n .dataset(listingDataset.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n listing:\n type: gcp:bigqueryanalyticshub:DataExchange\n properties:\n location: US\n dataExchangeId: my_data_exchange\n displayName: my_data_exchange\n description: example data exchange\n listingListing:\n type: gcp:bigqueryanalyticshub:Listing\n name: listing\n properties:\n location: US\n dataExchangeId: ${listing.dataExchangeId}\n listingId: my_listing\n displayName: my_listing\n description: example data exchange\n bigqueryDataset:\n dataset: ${listingDataset.id}\n listingDataset:\n type: gcp:bigquery:Dataset\n name: listing\n properties:\n datasetId: my_listing\n friendlyName: my_listing\n description: example data exchange\n location: US\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Analyticshub Listing Restricted\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst listing = new gcp.bigqueryanalyticshub.DataExchange(\"listing\", {\n location: \"US\",\n dataExchangeId: \"my_data_exchange\",\n displayName: \"my_data_exchange\",\n description: \"example data exchange\",\n});\nconst listingDataset = new gcp.bigquery.Dataset(\"listing\", {\n datasetId: \"my_listing\",\n friendlyName: \"my_listing\",\n description: \"example data exchange\",\n location: \"US\",\n});\nconst listingListing = new gcp.bigqueryanalyticshub.Listing(\"listing\", {\n location: \"US\",\n dataExchangeId: listing.dataExchangeId,\n listingId: \"my_listing\",\n displayName: \"my_listing\",\n description: \"example data exchange\",\n bigqueryDataset: {\n dataset: listingDataset.id,\n },\n restrictedExportConfig: {\n enabled: true,\n restrictQueryResult: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nlisting = gcp.bigqueryanalyticshub.DataExchange(\"listing\",\n location=\"US\",\n data_exchange_id=\"my_data_exchange\",\n display_name=\"my_data_exchange\",\n description=\"example data exchange\")\nlisting_dataset = gcp.bigquery.Dataset(\"listing\",\n dataset_id=\"my_listing\",\n friendly_name=\"my_listing\",\n description=\"example data exchange\",\n location=\"US\")\nlisting_listing = gcp.bigqueryanalyticshub.Listing(\"listing\",\n location=\"US\",\n data_exchange_id=listing.data_exchange_id,\n listing_id=\"my_listing\",\n display_name=\"my_listing\",\n description=\"example data exchange\",\n bigquery_dataset={\n \"dataset\": listing_dataset.id,\n },\n restricted_export_config={\n \"enabled\": True,\n \"restrict_query_result\": True,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var listing = new Gcp.BigQueryAnalyticsHub.DataExchange(\"listing\", new()\n {\n Location = \"US\",\n DataExchangeId = \"my_data_exchange\",\n DisplayName = \"my_data_exchange\",\n Description = \"example data exchange\",\n });\n\n var listingDataset = new Gcp.BigQuery.Dataset(\"listing\", new()\n {\n DatasetId = \"my_listing\",\n FriendlyName = \"my_listing\",\n Description = \"example data exchange\",\n Location = \"US\",\n });\n\n var listingListing = new Gcp.BigQueryAnalyticsHub.Listing(\"listing\", new()\n {\n Location = \"US\",\n DataExchangeId = listing.DataExchangeId,\n ListingId = \"my_listing\",\n DisplayName = \"my_listing\",\n Description = \"example data exchange\",\n BigqueryDataset = new Gcp.BigQueryAnalyticsHub.Inputs.ListingBigqueryDatasetArgs\n {\n Dataset = listingDataset.Id,\n },\n RestrictedExportConfig = new Gcp.BigQueryAnalyticsHub.Inputs.ListingRestrictedExportConfigArgs\n {\n Enabled = true,\n RestrictQueryResult = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigqueryanalyticshub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tlisting, err := bigqueryanalyticshub.NewDataExchange(ctx, \"listing\", \u0026bigqueryanalyticshub.DataExchangeArgs{\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tDataExchangeId: pulumi.String(\"my_data_exchange\"),\n\t\t\tDisplayName: pulumi.String(\"my_data_exchange\"),\n\t\t\tDescription: pulumi.String(\"example data exchange\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlistingDataset, err := bigquery.NewDataset(ctx, \"listing\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"my_listing\"),\n\t\t\tFriendlyName: pulumi.String(\"my_listing\"),\n\t\t\tDescription: pulumi.String(\"example data exchange\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigqueryanalyticshub.NewListing(ctx, \"listing\", \u0026bigqueryanalyticshub.ListingArgs{\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tDataExchangeId: listing.DataExchangeId,\n\t\t\tListingId: pulumi.String(\"my_listing\"),\n\t\t\tDisplayName: pulumi.String(\"my_listing\"),\n\t\t\tDescription: pulumi.String(\"example data exchange\"),\n\t\t\tBigqueryDataset: \u0026bigqueryanalyticshub.ListingBigqueryDatasetArgs{\n\t\t\t\tDataset: listingDataset.ID(),\n\t\t\t},\n\t\t\tRestrictedExportConfig: \u0026bigqueryanalyticshub.ListingRestrictedExportConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\tRestrictQueryResult: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigqueryanalyticshub.DataExchange;\nimport com.pulumi.gcp.bigqueryanalyticshub.DataExchangeArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigqueryanalyticshub.Listing;\nimport com.pulumi.gcp.bigqueryanalyticshub.ListingArgs;\nimport com.pulumi.gcp.bigqueryanalyticshub.inputs.ListingBigqueryDatasetArgs;\nimport com.pulumi.gcp.bigqueryanalyticshub.inputs.ListingRestrictedExportConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var listing = new DataExchange(\"listing\", DataExchangeArgs.builder()\n .location(\"US\")\n .dataExchangeId(\"my_data_exchange\")\n .displayName(\"my_data_exchange\")\n .description(\"example data exchange\")\n .build());\n\n var listingDataset = new Dataset(\"listingDataset\", DatasetArgs.builder()\n .datasetId(\"my_listing\")\n .friendlyName(\"my_listing\")\n .description(\"example data exchange\")\n .location(\"US\")\n .build());\n\n var listingListing = new Listing(\"listingListing\", ListingArgs.builder()\n .location(\"US\")\n .dataExchangeId(listing.dataExchangeId())\n .listingId(\"my_listing\")\n .displayName(\"my_listing\")\n .description(\"example data exchange\")\n .bigqueryDataset(ListingBigqueryDatasetArgs.builder()\n .dataset(listingDataset.id())\n .build())\n .restrictedExportConfig(ListingRestrictedExportConfigArgs.builder()\n .enabled(true)\n .restrictQueryResult(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n listing:\n type: gcp:bigqueryanalyticshub:DataExchange\n properties:\n location: US\n dataExchangeId: my_data_exchange\n displayName: my_data_exchange\n description: example data exchange\n listingListing:\n type: gcp:bigqueryanalyticshub:Listing\n name: listing\n properties:\n location: US\n dataExchangeId: ${listing.dataExchangeId}\n listingId: my_listing\n displayName: my_listing\n description: example data exchange\n bigqueryDataset:\n dataset: ${listingDataset.id}\n restrictedExportConfig:\n enabled: true\n restrictQueryResult: true\n listingDataset:\n type: gcp:bigquery:Dataset\n name: listing\n properties:\n datasetId: my_listing\n friendlyName: my_listing\n description: example data exchange\n location: US\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Analyticshub Listing Dcr\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst listing = new gcp.bigqueryanalyticshub.DataExchange(\"listing\", {\n location: \"US\",\n dataExchangeId: \"dcr_data_exchange\",\n displayName: \"dcr_data_exchange\",\n description: \"example dcr data exchange\",\n sharingEnvironmentConfig: {\n dcrExchangeConfig: {},\n },\n});\nconst listingDataset = new gcp.bigquery.Dataset(\"listing\", {\n datasetId: \"dcr_listing\",\n friendlyName: \"dcr_listing\",\n description: \"example dcr data exchange\",\n location: \"US\",\n});\nconst listingTable = new gcp.bigquery.Table(\"listing\", {\n deletionProtection: false,\n tableId: \"dcr_listing\",\n datasetId: listingDataset.datasetId,\n schema: `[\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n]\n`,\n});\nconst listingListing = new gcp.bigqueryanalyticshub.Listing(\"listing\", {\n location: \"US\",\n dataExchangeId: listing.dataExchangeId,\n listingId: \"dcr_listing\",\n displayName: \"dcr_listing\",\n description: \"example dcr data exchange\",\n bigqueryDataset: {\n dataset: listingDataset.id,\n selectedResources: [{\n table: listingTable.id,\n }],\n },\n restrictedExportConfig: {\n enabled: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nlisting = gcp.bigqueryanalyticshub.DataExchange(\"listing\",\n location=\"US\",\n data_exchange_id=\"dcr_data_exchange\",\n display_name=\"dcr_data_exchange\",\n description=\"example dcr data exchange\",\n sharing_environment_config={\n \"dcr_exchange_config\": {},\n })\nlisting_dataset = gcp.bigquery.Dataset(\"listing\",\n dataset_id=\"dcr_listing\",\n friendly_name=\"dcr_listing\",\n description=\"example dcr data exchange\",\n location=\"US\")\nlisting_table = gcp.bigquery.Table(\"listing\",\n deletion_protection=False,\n table_id=\"dcr_listing\",\n dataset_id=listing_dataset.dataset_id,\n schema=\"\"\"[\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n]\n\"\"\")\nlisting_listing = gcp.bigqueryanalyticshub.Listing(\"listing\",\n location=\"US\",\n data_exchange_id=listing.data_exchange_id,\n listing_id=\"dcr_listing\",\n display_name=\"dcr_listing\",\n description=\"example dcr data exchange\",\n bigquery_dataset={\n \"dataset\": listing_dataset.id,\n \"selected_resources\": [{\n \"table\": listing_table.id,\n }],\n },\n restricted_export_config={\n \"enabled\": True,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var listing = new Gcp.BigQueryAnalyticsHub.DataExchange(\"listing\", new()\n {\n Location = \"US\",\n DataExchangeId = \"dcr_data_exchange\",\n DisplayName = \"dcr_data_exchange\",\n Description = \"example dcr data exchange\",\n SharingEnvironmentConfig = new Gcp.BigQueryAnalyticsHub.Inputs.DataExchangeSharingEnvironmentConfigArgs\n {\n DcrExchangeConfig = null,\n },\n });\n\n var listingDataset = new Gcp.BigQuery.Dataset(\"listing\", new()\n {\n DatasetId = \"dcr_listing\",\n FriendlyName = \"dcr_listing\",\n Description = \"example dcr data exchange\",\n Location = \"US\",\n });\n\n var listingTable = new Gcp.BigQuery.Table(\"listing\", new()\n {\n DeletionProtection = false,\n TableId = \"dcr_listing\",\n DatasetId = listingDataset.DatasetId,\n Schema = @\"[\n {\n \"\"name\"\": \"\"name\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n },\n {\n \"\"name\"\": \"\"post_abbr\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n },\n {\n \"\"name\"\": \"\"date\"\",\n \"\"type\"\": \"\"DATE\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n }\n]\n\",\n });\n\n var listingListing = new Gcp.BigQueryAnalyticsHub.Listing(\"listing\", new()\n {\n Location = \"US\",\n DataExchangeId = listing.DataExchangeId,\n ListingId = \"dcr_listing\",\n DisplayName = \"dcr_listing\",\n Description = \"example dcr data exchange\",\n BigqueryDataset = new Gcp.BigQueryAnalyticsHub.Inputs.ListingBigqueryDatasetArgs\n {\n Dataset = listingDataset.Id,\n SelectedResources = new[]\n {\n new Gcp.BigQueryAnalyticsHub.Inputs.ListingBigqueryDatasetSelectedResourceArgs\n {\n Table = listingTable.Id,\n },\n },\n },\n RestrictedExportConfig = new Gcp.BigQueryAnalyticsHub.Inputs.ListingRestrictedExportConfigArgs\n {\n Enabled = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigqueryanalyticshub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tlisting, err := bigqueryanalyticshub.NewDataExchange(ctx, \"listing\", \u0026bigqueryanalyticshub.DataExchangeArgs{\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tDataExchangeId: pulumi.String(\"dcr_data_exchange\"),\n\t\t\tDisplayName: pulumi.String(\"dcr_data_exchange\"),\n\t\t\tDescription: pulumi.String(\"example dcr data exchange\"),\n\t\t\tSharingEnvironmentConfig: \u0026bigqueryanalyticshub.DataExchangeSharingEnvironmentConfigArgs{\n\t\t\t\tDcrExchangeConfig: \u0026bigqueryanalyticshub.DataExchangeSharingEnvironmentConfigDcrExchangeConfigArgs{},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlistingDataset, err := bigquery.NewDataset(ctx, \"listing\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dcr_listing\"),\n\t\t\tFriendlyName: pulumi.String(\"dcr_listing\"),\n\t\t\tDescription: pulumi.String(\"example dcr data exchange\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlistingTable, err := bigquery.NewTable(ctx, \"listing\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTableId: pulumi.String(\"dcr_listing\"),\n\t\t\tDatasetId: listingDataset.DatasetId,\n\t\t\tSchema: pulumi.String(`[\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigqueryanalyticshub.NewListing(ctx, \"listing\", \u0026bigqueryanalyticshub.ListingArgs{\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tDataExchangeId: listing.DataExchangeId,\n\t\t\tListingId: pulumi.String(\"dcr_listing\"),\n\t\t\tDisplayName: pulumi.String(\"dcr_listing\"),\n\t\t\tDescription: pulumi.String(\"example dcr data exchange\"),\n\t\t\tBigqueryDataset: \u0026bigqueryanalyticshub.ListingBigqueryDatasetArgs{\n\t\t\t\tDataset: listingDataset.ID(),\n\t\t\t\tSelectedResources: bigqueryanalyticshub.ListingBigqueryDatasetSelectedResourceArray{\n\t\t\t\t\t\u0026bigqueryanalyticshub.ListingBigqueryDatasetSelectedResourceArgs{\n\t\t\t\t\t\tTable: listingTable.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tRestrictedExportConfig: \u0026bigqueryanalyticshub.ListingRestrictedExportConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigqueryanalyticshub.DataExchange;\nimport com.pulumi.gcp.bigqueryanalyticshub.DataExchangeArgs;\nimport com.pulumi.gcp.bigqueryanalyticshub.inputs.DataExchangeSharingEnvironmentConfigArgs;\nimport com.pulumi.gcp.bigqueryanalyticshub.inputs.DataExchangeSharingEnvironmentConfigDcrExchangeConfigArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.bigqueryanalyticshub.Listing;\nimport com.pulumi.gcp.bigqueryanalyticshub.ListingArgs;\nimport com.pulumi.gcp.bigqueryanalyticshub.inputs.ListingBigqueryDatasetArgs;\nimport com.pulumi.gcp.bigqueryanalyticshub.inputs.ListingRestrictedExportConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var listing = new DataExchange(\"listing\", DataExchangeArgs.builder()\n .location(\"US\")\n .dataExchangeId(\"dcr_data_exchange\")\n .displayName(\"dcr_data_exchange\")\n .description(\"example dcr data exchange\")\n .sharingEnvironmentConfig(DataExchangeSharingEnvironmentConfigArgs.builder()\n .dcrExchangeConfig()\n .build())\n .build());\n\n var listingDataset = new Dataset(\"listingDataset\", DatasetArgs.builder()\n .datasetId(\"dcr_listing\")\n .friendlyName(\"dcr_listing\")\n .description(\"example dcr data exchange\")\n .location(\"US\")\n .build());\n\n var listingTable = new Table(\"listingTable\", TableArgs.builder()\n .deletionProtection(false)\n .tableId(\"dcr_listing\")\n .datasetId(listingDataset.datasetId())\n .schema(\"\"\"\n[\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n]\n \"\"\")\n .build());\n\n var listingListing = new Listing(\"listingListing\", ListingArgs.builder()\n .location(\"US\")\n .dataExchangeId(listing.dataExchangeId())\n .listingId(\"dcr_listing\")\n .displayName(\"dcr_listing\")\n .description(\"example dcr data exchange\")\n .bigqueryDataset(ListingBigqueryDatasetArgs.builder()\n .dataset(listingDataset.id())\n .selectedResources(ListingBigqueryDatasetSelectedResourceArgs.builder()\n .table(listingTable.id())\n .build())\n .build())\n .restrictedExportConfig(ListingRestrictedExportConfigArgs.builder()\n .enabled(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n listing:\n type: gcp:bigqueryanalyticshub:DataExchange\n properties:\n location: US\n dataExchangeId: dcr_data_exchange\n displayName: dcr_data_exchange\n description: example dcr data exchange\n sharingEnvironmentConfig:\n dcrExchangeConfig: {}\n listingListing:\n type: gcp:bigqueryanalyticshub:Listing\n name: listing\n properties:\n location: US\n dataExchangeId: ${listing.dataExchangeId}\n listingId: dcr_listing\n displayName: dcr_listing\n description: example dcr data exchange\n bigqueryDataset:\n dataset: ${listingDataset.id}\n selectedResources:\n - table: ${listingTable.id}\n restrictedExportConfig:\n enabled: true\n listingDataset:\n type: gcp:bigquery:Dataset\n name: listing\n properties:\n datasetId: dcr_listing\n friendlyName: dcr_listing\n description: example dcr data exchange\n location: US\n listingTable:\n type: gcp:bigquery:Table\n name: listing\n properties:\n deletionProtection: false\n tableId: dcr_listing\n datasetId: ${listingDataset.datasetId}\n schema: |\n [\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n ]\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nListing can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/dataExchanges/{{data_exchange_id}}/listings/{{listing_id}}`\n\n* `{{project}}/{{location}}/{{data_exchange_id}}/{{listing_id}}`\n\n* `{{location}}/{{data_exchange_id}}/{{listing_id}}`\n\nWhen using the `pulumi import` command, Listing can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:bigqueryanalyticshub/listing:Listing default projects/{{project}}/locations/{{location}}/dataExchanges/{{data_exchange_id}}/listings/{{listing_id}}\n```\n\n```sh\n$ pulumi import gcp:bigqueryanalyticshub/listing:Listing default {{project}}/{{location}}/{{data_exchange_id}}/{{listing_id}}\n```\n\n```sh\n$ pulumi import gcp:bigqueryanalyticshub/listing:Listing default {{location}}/{{data_exchange_id}}/{{listing_id}}\n```\n\n", "properties": { "bigqueryDataset": { "$ref": "#/types/gcp:bigqueryanalyticshub/ListingBigqueryDataset:ListingBigqueryDataset", @@ -133275,7 +133275,7 @@ } }, "gcp:billing/budget:Budget": { - "description": "Budget configuration for a billing account.\n\n\nTo get more information about Budget, see:\n\n* [API documentation](https://cloud.google.com/billing/docs/reference/budget/rest/v1/billingAccounts.budgets)\n* How-to Guides\n * [Creating a budget](https://cloud.google.com/billing/docs/how-to/budgets)\n\n\u003e **Warning:** If you are using User ADCs (Application Default Credentials) with this resource,\nyou must specify a `billing_project` and set `user_project_override` to true\nin the provider configuration. Otherwise the Billing Budgets API will return a 403 error.\nYour account must have the `serviceusage.services.use` permission on the\n`billing_project` you defined.\n\n## Example Usage\n\n### Billing Budget Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst account = gcp.organizations.getBillingAccount({\n billingAccount: \"000000-0000000-0000000-000000\",\n});\nconst budget = new gcp.billing.Budget(\"budget\", {\n billingAccount: account.then(account =\u003e account.id),\n displayName: \"Example Billing Budget\",\n amount: {\n specifiedAmount: {\n currencyCode: \"USD\",\n units: \"100000\",\n },\n },\n thresholdRules: [{\n thresholdPercent: 0.5,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccount = gcp.organizations.get_billing_account(billing_account=\"000000-0000000-0000000-000000\")\nbudget = gcp.billing.Budget(\"budget\",\n billing_account=account.id,\n display_name=\"Example Billing Budget\",\n amount={\n \"specified_amount\": {\n \"currency_code\": \"USD\",\n \"units\": \"100000\",\n },\n },\n threshold_rules=[{\n \"threshold_percent\": 0.5,\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var account = Gcp.Organizations.GetBillingAccount.Invoke(new()\n {\n BillingAccount = \"000000-0000000-0000000-000000\",\n });\n\n var budget = new Gcp.Billing.Budget(\"budget\", new()\n {\n BillingAccount = account.Apply(getBillingAccountResult =\u003e getBillingAccountResult.Id),\n DisplayName = \"Example Billing Budget\",\n Amount = new Gcp.Billing.Inputs.BudgetAmountArgs\n {\n SpecifiedAmount = new Gcp.Billing.Inputs.BudgetAmountSpecifiedAmountArgs\n {\n CurrencyCode = \"USD\",\n Units = \"100000\",\n },\n },\n ThresholdRules = new[]\n {\n new Gcp.Billing.Inputs.BudgetThresholdRuleArgs\n {\n ThresholdPercent = 0.5,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/billing\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\taccount, err := organizations.GetBillingAccount(ctx, \u0026organizations.GetBillingAccountArgs{\n\t\t\tBillingAccount: pulumi.StringRef(\"000000-0000000-0000000-000000\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = billing.NewBudget(ctx, \"budget\", \u0026billing.BudgetArgs{\n\t\t\tBillingAccount: pulumi.String(account.Id),\n\t\t\tDisplayName: pulumi.String(\"Example Billing Budget\"),\n\t\t\tAmount: \u0026billing.BudgetAmountArgs{\n\t\t\t\tSpecifiedAmount: \u0026billing.BudgetAmountSpecifiedAmountArgs{\n\t\t\t\t\tCurrencyCode: pulumi.String(\"USD\"),\n\t\t\t\t\tUnits: pulumi.String(\"100000\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tThresholdRules: billing.BudgetThresholdRuleArray{\n\t\t\t\t\u0026billing.BudgetThresholdRuleArgs{\n\t\t\t\t\tThresholdPercent: pulumi.Float64(0.5),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetBillingAccountArgs;\nimport com.pulumi.gcp.billing.Budget;\nimport com.pulumi.gcp.billing.BudgetArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAmountArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAmountSpecifiedAmountArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetThresholdRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var account = OrganizationsFunctions.getBillingAccount(GetBillingAccountArgs.builder()\n .billingAccount(\"000000-0000000-0000000-000000\")\n .build());\n\n var budget = new Budget(\"budget\", BudgetArgs.builder()\n .billingAccount(account.applyValue(getBillingAccountResult -\u003e getBillingAccountResult.id()))\n .displayName(\"Example Billing Budget\")\n .amount(BudgetAmountArgs.builder()\n .specifiedAmount(BudgetAmountSpecifiedAmountArgs.builder()\n .currencyCode(\"USD\")\n .units(\"100000\")\n .build())\n .build())\n .thresholdRules(BudgetThresholdRuleArgs.builder()\n .thresholdPercent(0.5)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n budget:\n type: gcp:billing:Budget\n properties:\n billingAccount: ${account.id}\n displayName: Example Billing Budget\n amount:\n specifiedAmount:\n currencyCode: USD\n units: '100000'\n thresholdRules:\n - thresholdPercent: 0.5\nvariables:\n account:\n fn::invoke:\n Function: gcp:organizations:getBillingAccount\n Arguments:\n billingAccount: 000000-0000000-0000000-000000\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Billing Budget Lastperiod\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst account = gcp.organizations.getBillingAccount({\n billingAccount: \"000000-0000000-0000000-000000\",\n});\nconst project = gcp.organizations.getProject({});\nconst budget = new gcp.billing.Budget(\"budget\", {\n billingAccount: account.then(account =\u003e account.id),\n displayName: \"Example Billing Budget\",\n budgetFilter: {\n projects: [project.then(project =\u003e `projects/${project.number}`)],\n },\n amount: {\n lastPeriodAmount: true,\n },\n thresholdRules: [{\n thresholdPercent: 10,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccount = gcp.organizations.get_billing_account(billing_account=\"000000-0000000-0000000-000000\")\nproject = gcp.organizations.get_project()\nbudget = gcp.billing.Budget(\"budget\",\n billing_account=account.id,\n display_name=\"Example Billing Budget\",\n budget_filter={\n \"projects\": [f\"projects/{project.number}\"],\n },\n amount={\n \"last_period_amount\": True,\n },\n threshold_rules=[{\n \"threshold_percent\": 10,\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var account = Gcp.Organizations.GetBillingAccount.Invoke(new()\n {\n BillingAccount = \"000000-0000000-0000000-000000\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var budget = new Gcp.Billing.Budget(\"budget\", new()\n {\n BillingAccount = account.Apply(getBillingAccountResult =\u003e getBillingAccountResult.Id),\n DisplayName = \"Example Billing Budget\",\n BudgetFilter = new Gcp.Billing.Inputs.BudgetBudgetFilterArgs\n {\n Projects = new[]\n {\n $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n },\n Amount = new Gcp.Billing.Inputs.BudgetAmountArgs\n {\n LastPeriodAmount = true,\n },\n ThresholdRules = new[]\n {\n new Gcp.Billing.Inputs.BudgetThresholdRuleArgs\n {\n ThresholdPercent = 10,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/billing\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\taccount, err := organizations.GetBillingAccount(ctx, \u0026organizations.GetBillingAccountArgs{\n\t\t\tBillingAccount: pulumi.StringRef(\"000000-0000000-0000000-000000\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = billing.NewBudget(ctx, \"budget\", \u0026billing.BudgetArgs{\n\t\t\tBillingAccount: pulumi.String(account.Id),\n\t\t\tDisplayName: pulumi.String(\"Example Billing Budget\"),\n\t\t\tBudgetFilter: \u0026billing.BudgetBudgetFilterArgs{\n\t\t\t\tProjects: pulumi.StringArray{\n\t\t\t\t\tpulumi.Sprintf(\"projects/%v\", project.Number),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAmount: \u0026billing.BudgetAmountArgs{\n\t\t\t\tLastPeriodAmount: pulumi.Bool(true),\n\t\t\t},\n\t\t\tThresholdRules: billing.BudgetThresholdRuleArray{\n\t\t\t\t\u0026billing.BudgetThresholdRuleArgs{\n\t\t\t\t\tThresholdPercent: pulumi.Float64(10),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetBillingAccountArgs;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.billing.Budget;\nimport com.pulumi.gcp.billing.BudgetArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetBudgetFilterArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAmountArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetThresholdRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var account = OrganizationsFunctions.getBillingAccount(GetBillingAccountArgs.builder()\n .billingAccount(\"000000-0000000-0000000-000000\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var budget = new Budget(\"budget\", BudgetArgs.builder()\n .billingAccount(account.applyValue(getBillingAccountResult -\u003e getBillingAccountResult.id()))\n .displayName(\"Example Billing Budget\")\n .budgetFilter(BudgetBudgetFilterArgs.builder()\n .projects(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .amount(BudgetAmountArgs.builder()\n .lastPeriodAmount(true)\n .build())\n .thresholdRules(BudgetThresholdRuleArgs.builder()\n .thresholdPercent(10)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n budget:\n type: gcp:billing:Budget\n properties:\n billingAccount: ${account.id}\n displayName: Example Billing Budget\n budgetFilter:\n projects:\n - projects/${project.number}\n amount:\n lastPeriodAmount: true\n thresholdRules:\n - thresholdPercent: 10\nvariables:\n account:\n fn::invoke:\n Function: gcp:organizations:getBillingAccount\n Arguments:\n billingAccount: 000000-0000000-0000000-000000\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Billing Budget Filter\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst account = gcp.organizations.getBillingAccount({\n billingAccount: \"000000-0000000-0000000-000000\",\n});\nconst project = gcp.organizations.getProject({});\nconst budget = new gcp.billing.Budget(\"budget\", {\n billingAccount: account.then(account =\u003e account.id),\n displayName: \"Example Billing Budget\",\n budgetFilter: {\n projects: [project.then(project =\u003e `projects/${project.number}`)],\n creditTypesTreatment: \"INCLUDE_SPECIFIED_CREDITS\",\n services: [\"services/24E6-581D-38E5\"],\n creditTypes: [\n \"PROMOTION\",\n \"FREE_TIER\",\n ],\n resourceAncestors: [\"organizations/123456789\"],\n },\n amount: {\n specifiedAmount: {\n currencyCode: \"USD\",\n units: \"100000\",\n },\n },\n thresholdRules: [\n {\n thresholdPercent: 0.5,\n },\n {\n thresholdPercent: 0.9,\n spendBasis: \"FORECASTED_SPEND\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccount = gcp.organizations.get_billing_account(billing_account=\"000000-0000000-0000000-000000\")\nproject = gcp.organizations.get_project()\nbudget = gcp.billing.Budget(\"budget\",\n billing_account=account.id,\n display_name=\"Example Billing Budget\",\n budget_filter={\n \"projects\": [f\"projects/{project.number}\"],\n \"credit_types_treatment\": \"INCLUDE_SPECIFIED_CREDITS\",\n \"services\": [\"services/24E6-581D-38E5\"],\n \"credit_types\": [\n \"PROMOTION\",\n \"FREE_TIER\",\n ],\n \"resource_ancestors\": [\"organizations/123456789\"],\n },\n amount={\n \"specified_amount\": {\n \"currency_code\": \"USD\",\n \"units\": \"100000\",\n },\n },\n threshold_rules=[\n {\n \"threshold_percent\": 0.5,\n },\n {\n \"threshold_percent\": 0.9,\n \"spend_basis\": \"FORECASTED_SPEND\",\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var account = Gcp.Organizations.GetBillingAccount.Invoke(new()\n {\n BillingAccount = \"000000-0000000-0000000-000000\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var budget = new Gcp.Billing.Budget(\"budget\", new()\n {\n BillingAccount = account.Apply(getBillingAccountResult =\u003e getBillingAccountResult.Id),\n DisplayName = \"Example Billing Budget\",\n BudgetFilter = new Gcp.Billing.Inputs.BudgetBudgetFilterArgs\n {\n Projects = new[]\n {\n $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n CreditTypesTreatment = \"INCLUDE_SPECIFIED_CREDITS\",\n Services = new[]\n {\n \"services/24E6-581D-38E5\",\n },\n CreditTypes = new[]\n {\n \"PROMOTION\",\n \"FREE_TIER\",\n },\n ResourceAncestors = new[]\n {\n \"organizations/123456789\",\n },\n },\n Amount = new Gcp.Billing.Inputs.BudgetAmountArgs\n {\n SpecifiedAmount = new Gcp.Billing.Inputs.BudgetAmountSpecifiedAmountArgs\n {\n CurrencyCode = \"USD\",\n Units = \"100000\",\n },\n },\n ThresholdRules = new[]\n {\n new Gcp.Billing.Inputs.BudgetThresholdRuleArgs\n {\n ThresholdPercent = 0.5,\n },\n new Gcp.Billing.Inputs.BudgetThresholdRuleArgs\n {\n ThresholdPercent = 0.9,\n SpendBasis = \"FORECASTED_SPEND\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/billing\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\taccount, err := organizations.GetBillingAccount(ctx, \u0026organizations.GetBillingAccountArgs{\n\t\t\tBillingAccount: pulumi.StringRef(\"000000-0000000-0000000-000000\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = billing.NewBudget(ctx, \"budget\", \u0026billing.BudgetArgs{\n\t\t\tBillingAccount: pulumi.String(account.Id),\n\t\t\tDisplayName: pulumi.String(\"Example Billing Budget\"),\n\t\t\tBudgetFilter: \u0026billing.BudgetBudgetFilterArgs{\n\t\t\t\tProjects: pulumi.StringArray{\n\t\t\t\t\tpulumi.Sprintf(\"projects/%v\", project.Number),\n\t\t\t\t},\n\t\t\t\tCreditTypesTreatment: pulumi.String(\"INCLUDE_SPECIFIED_CREDITS\"),\n\t\t\t\tServices: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"services/24E6-581D-38E5\"),\n\t\t\t\t},\n\t\t\t\tCreditTypes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"PROMOTION\"),\n\t\t\t\t\tpulumi.String(\"FREE_TIER\"),\n\t\t\t\t},\n\t\t\t\tResourceAncestors: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"organizations/123456789\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAmount: \u0026billing.BudgetAmountArgs{\n\t\t\t\tSpecifiedAmount: \u0026billing.BudgetAmountSpecifiedAmountArgs{\n\t\t\t\t\tCurrencyCode: pulumi.String(\"USD\"),\n\t\t\t\t\tUnits: pulumi.String(\"100000\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tThresholdRules: billing.BudgetThresholdRuleArray{\n\t\t\t\t\u0026billing.BudgetThresholdRuleArgs{\n\t\t\t\t\tThresholdPercent: pulumi.Float64(0.5),\n\t\t\t\t},\n\t\t\t\t\u0026billing.BudgetThresholdRuleArgs{\n\t\t\t\t\tThresholdPercent: pulumi.Float64(0.9),\n\t\t\t\t\tSpendBasis: pulumi.String(\"FORECASTED_SPEND\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetBillingAccountArgs;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.billing.Budget;\nimport com.pulumi.gcp.billing.BudgetArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetBudgetFilterArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAmountArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAmountSpecifiedAmountArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetThresholdRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var account = OrganizationsFunctions.getBillingAccount(GetBillingAccountArgs.builder()\n .billingAccount(\"000000-0000000-0000000-000000\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var budget = new Budget(\"budget\", BudgetArgs.builder()\n .billingAccount(account.applyValue(getBillingAccountResult -\u003e getBillingAccountResult.id()))\n .displayName(\"Example Billing Budget\")\n .budgetFilter(BudgetBudgetFilterArgs.builder()\n .projects(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .creditTypesTreatment(\"INCLUDE_SPECIFIED_CREDITS\")\n .services(\"services/24E6-581D-38E5\")\n .creditTypes( \n \"PROMOTION\",\n \"FREE_TIER\")\n .resourceAncestors(\"organizations/123456789\")\n .build())\n .amount(BudgetAmountArgs.builder()\n .specifiedAmount(BudgetAmountSpecifiedAmountArgs.builder()\n .currencyCode(\"USD\")\n .units(\"100000\")\n .build())\n .build())\n .thresholdRules( \n BudgetThresholdRuleArgs.builder()\n .thresholdPercent(0.5)\n .build(),\n BudgetThresholdRuleArgs.builder()\n .thresholdPercent(0.9)\n .spendBasis(\"FORECASTED_SPEND\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n budget:\n type: gcp:billing:Budget\n properties:\n billingAccount: ${account.id}\n displayName: Example Billing Budget\n budgetFilter:\n projects:\n - projects/${project.number}\n creditTypesTreatment: INCLUDE_SPECIFIED_CREDITS\n services:\n - services/24E6-581D-38E5\n creditTypes:\n - PROMOTION\n - FREE_TIER\n resourceAncestors:\n - organizations/123456789\n amount:\n specifiedAmount:\n currencyCode: USD\n units: '100000'\n thresholdRules:\n - thresholdPercent: 0.5\n - thresholdPercent: 0.9\n spendBasis: FORECASTED_SPEND\nvariables:\n account:\n fn::invoke:\n Function: gcp:organizations:getBillingAccount\n Arguments:\n billingAccount: 000000-0000000-0000000-000000\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Billing Budget Notify\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst account = gcp.organizations.getBillingAccount({\n billingAccount: \"000000-0000000-0000000-000000\",\n});\nconst project = gcp.organizations.getProject({});\nconst notificationChannel = new gcp.monitoring.NotificationChannel(\"notification_channel\", {\n displayName: \"Example Notification Channel\",\n type: \"email\",\n labels: {\n email_address: \"address@example.com\",\n },\n});\nconst budget = new gcp.billing.Budget(\"budget\", {\n billingAccount: account.then(account =\u003e account.id),\n displayName: \"Example Billing Budget\",\n budgetFilter: {\n projects: [project.then(project =\u003e `projects/${project.number}`)],\n },\n amount: {\n specifiedAmount: {\n currencyCode: \"USD\",\n units: \"100000\",\n },\n },\n thresholdRules: [\n {\n thresholdPercent: 1,\n },\n {\n thresholdPercent: 1,\n spendBasis: \"FORECASTED_SPEND\",\n },\n ],\n allUpdatesRule: {\n monitoringNotificationChannels: [notificationChannel.id],\n disableDefaultIamRecipients: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccount = gcp.organizations.get_billing_account(billing_account=\"000000-0000000-0000000-000000\")\nproject = gcp.organizations.get_project()\nnotification_channel = gcp.monitoring.NotificationChannel(\"notification_channel\",\n display_name=\"Example Notification Channel\",\n type=\"email\",\n labels={\n \"email_address\": \"address@example.com\",\n })\nbudget = gcp.billing.Budget(\"budget\",\n billing_account=account.id,\n display_name=\"Example Billing Budget\",\n budget_filter={\n \"projects\": [f\"projects/{project.number}\"],\n },\n amount={\n \"specified_amount\": {\n \"currency_code\": \"USD\",\n \"units\": \"100000\",\n },\n },\n threshold_rules=[\n {\n \"threshold_percent\": 1,\n },\n {\n \"threshold_percent\": 1,\n \"spend_basis\": \"FORECASTED_SPEND\",\n },\n ],\n all_updates_rule={\n \"monitoring_notification_channels\": [notification_channel.id],\n \"disable_default_iam_recipients\": True,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var account = Gcp.Organizations.GetBillingAccount.Invoke(new()\n {\n BillingAccount = \"000000-0000000-0000000-000000\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var notificationChannel = new Gcp.Monitoring.NotificationChannel(\"notification_channel\", new()\n {\n DisplayName = \"Example Notification Channel\",\n Type = \"email\",\n Labels = \n {\n { \"email_address\", \"address@example.com\" },\n },\n });\n\n var budget = new Gcp.Billing.Budget(\"budget\", new()\n {\n BillingAccount = account.Apply(getBillingAccountResult =\u003e getBillingAccountResult.Id),\n DisplayName = \"Example Billing Budget\",\n BudgetFilter = new Gcp.Billing.Inputs.BudgetBudgetFilterArgs\n {\n Projects = new[]\n {\n $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n },\n Amount = new Gcp.Billing.Inputs.BudgetAmountArgs\n {\n SpecifiedAmount = new Gcp.Billing.Inputs.BudgetAmountSpecifiedAmountArgs\n {\n CurrencyCode = \"USD\",\n Units = \"100000\",\n },\n },\n ThresholdRules = new[]\n {\n new Gcp.Billing.Inputs.BudgetThresholdRuleArgs\n {\n ThresholdPercent = 1,\n },\n new Gcp.Billing.Inputs.BudgetThresholdRuleArgs\n {\n ThresholdPercent = 1,\n SpendBasis = \"FORECASTED_SPEND\",\n },\n },\n AllUpdatesRule = new Gcp.Billing.Inputs.BudgetAllUpdatesRuleArgs\n {\n MonitoringNotificationChannels = new[]\n {\n notificationChannel.Id,\n },\n DisableDefaultIamRecipients = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/billing\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/monitoring\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\taccount, err := organizations.GetBillingAccount(ctx, \u0026organizations.GetBillingAccountArgs{\n\t\t\tBillingAccount: pulumi.StringRef(\"000000-0000000-0000000-000000\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnotificationChannel, err := monitoring.NewNotificationChannel(ctx, \"notification_channel\", \u0026monitoring.NotificationChannelArgs{\n\t\t\tDisplayName: pulumi.String(\"Example Notification Channel\"),\n\t\t\tType: pulumi.String(\"email\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"email_address\": pulumi.String(\"address@example.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = billing.NewBudget(ctx, \"budget\", \u0026billing.BudgetArgs{\n\t\t\tBillingAccount: pulumi.String(account.Id),\n\t\t\tDisplayName: pulumi.String(\"Example Billing Budget\"),\n\t\t\tBudgetFilter: \u0026billing.BudgetBudgetFilterArgs{\n\t\t\t\tProjects: pulumi.StringArray{\n\t\t\t\t\tpulumi.Sprintf(\"projects/%v\", project.Number),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAmount: \u0026billing.BudgetAmountArgs{\n\t\t\t\tSpecifiedAmount: \u0026billing.BudgetAmountSpecifiedAmountArgs{\n\t\t\t\t\tCurrencyCode: pulumi.String(\"USD\"),\n\t\t\t\t\tUnits: pulumi.String(\"100000\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tThresholdRules: billing.BudgetThresholdRuleArray{\n\t\t\t\t\u0026billing.BudgetThresholdRuleArgs{\n\t\t\t\t\tThresholdPercent: pulumi.Float64(1),\n\t\t\t\t},\n\t\t\t\t\u0026billing.BudgetThresholdRuleArgs{\n\t\t\t\t\tThresholdPercent: pulumi.Float64(1),\n\t\t\t\t\tSpendBasis: pulumi.String(\"FORECASTED_SPEND\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAllUpdatesRule: \u0026billing.BudgetAllUpdatesRuleArgs{\n\t\t\t\tMonitoringNotificationChannels: pulumi.StringArray{\n\t\t\t\t\tnotificationChannel.ID(),\n\t\t\t\t},\n\t\t\t\tDisableDefaultIamRecipients: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetBillingAccountArgs;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.monitoring.NotificationChannel;\nimport com.pulumi.gcp.monitoring.NotificationChannelArgs;\nimport com.pulumi.gcp.billing.Budget;\nimport com.pulumi.gcp.billing.BudgetArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetBudgetFilterArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAmountArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAmountSpecifiedAmountArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetThresholdRuleArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAllUpdatesRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var account = OrganizationsFunctions.getBillingAccount(GetBillingAccountArgs.builder()\n .billingAccount(\"000000-0000000-0000000-000000\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var notificationChannel = new NotificationChannel(\"notificationChannel\", NotificationChannelArgs.builder()\n .displayName(\"Example Notification Channel\")\n .type(\"email\")\n .labels(Map.of(\"email_address\", \"address@example.com\"))\n .build());\n\n var budget = new Budget(\"budget\", BudgetArgs.builder()\n .billingAccount(account.applyValue(getBillingAccountResult -\u003e getBillingAccountResult.id()))\n .displayName(\"Example Billing Budget\")\n .budgetFilter(BudgetBudgetFilterArgs.builder()\n .projects(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .amount(BudgetAmountArgs.builder()\n .specifiedAmount(BudgetAmountSpecifiedAmountArgs.builder()\n .currencyCode(\"USD\")\n .units(\"100000\")\n .build())\n .build())\n .thresholdRules( \n BudgetThresholdRuleArgs.builder()\n .thresholdPercent(1)\n .build(),\n BudgetThresholdRuleArgs.builder()\n .thresholdPercent(1)\n .spendBasis(\"FORECASTED_SPEND\")\n .build())\n .allUpdatesRule(BudgetAllUpdatesRuleArgs.builder()\n .monitoringNotificationChannels(notificationChannel.id())\n .disableDefaultIamRecipients(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n budget:\n type: gcp:billing:Budget\n properties:\n billingAccount: ${account.id}\n displayName: Example Billing Budget\n budgetFilter:\n projects:\n - projects/${project.number}\n amount:\n specifiedAmount:\n currencyCode: USD\n units: '100000'\n thresholdRules:\n - thresholdPercent: 1\n - thresholdPercent: 1\n spendBasis: FORECASTED_SPEND\n allUpdatesRule:\n monitoringNotificationChannels:\n - ${notificationChannel.id}\n disableDefaultIamRecipients: true\n notificationChannel:\n type: gcp:monitoring:NotificationChannel\n name: notification_channel\n properties:\n displayName: Example Notification Channel\n type: email\n labels:\n email_address: address@example.com\nvariables:\n account:\n fn::invoke:\n Function: gcp:organizations:getBillingAccount\n Arguments:\n billingAccount: 000000-0000000-0000000-000000\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Billing Budget Notify Project Recipient\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst account = gcp.organizations.getBillingAccount({\n billingAccount: \"000000-0000000-0000000-000000\",\n});\nconst project = gcp.organizations.getProject({});\nconst budget = new gcp.billing.Budget(\"budget\", {\n billingAccount: account.then(account =\u003e account.id),\n displayName: \"Example Billing Budget\",\n budgetFilter: {\n projects: [project.then(project =\u003e `projects/${project.number}`)],\n },\n amount: {\n specifiedAmount: {\n currencyCode: \"USD\",\n units: \"100000\",\n },\n },\n allUpdatesRule: {\n monitoringNotificationChannels: [],\n enableProjectLevelRecipients: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccount = gcp.organizations.get_billing_account(billing_account=\"000000-0000000-0000000-000000\")\nproject = gcp.organizations.get_project()\nbudget = gcp.billing.Budget(\"budget\",\n billing_account=account.id,\n display_name=\"Example Billing Budget\",\n budget_filter={\n \"projects\": [f\"projects/{project.number}\"],\n },\n amount={\n \"specified_amount\": {\n \"currency_code\": \"USD\",\n \"units\": \"100000\",\n },\n },\n all_updates_rule={\n \"monitoring_notification_channels\": [],\n \"enable_project_level_recipients\": True,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var account = Gcp.Organizations.GetBillingAccount.Invoke(new()\n {\n BillingAccount = \"000000-0000000-0000000-000000\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var budget = new Gcp.Billing.Budget(\"budget\", new()\n {\n BillingAccount = account.Apply(getBillingAccountResult =\u003e getBillingAccountResult.Id),\n DisplayName = \"Example Billing Budget\",\n BudgetFilter = new Gcp.Billing.Inputs.BudgetBudgetFilterArgs\n {\n Projects = new[]\n {\n $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n },\n Amount = new Gcp.Billing.Inputs.BudgetAmountArgs\n {\n SpecifiedAmount = new Gcp.Billing.Inputs.BudgetAmountSpecifiedAmountArgs\n {\n CurrencyCode = \"USD\",\n Units = \"100000\",\n },\n },\n AllUpdatesRule = new Gcp.Billing.Inputs.BudgetAllUpdatesRuleArgs\n {\n MonitoringNotificationChannels = new() { },\n EnableProjectLevelRecipients = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/billing\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\taccount, err := organizations.GetBillingAccount(ctx, \u0026organizations.GetBillingAccountArgs{\n\t\t\tBillingAccount: pulumi.StringRef(\"000000-0000000-0000000-000000\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = billing.NewBudget(ctx, \"budget\", \u0026billing.BudgetArgs{\n\t\t\tBillingAccount: pulumi.String(account.Id),\n\t\t\tDisplayName: pulumi.String(\"Example Billing Budget\"),\n\t\t\tBudgetFilter: \u0026billing.BudgetBudgetFilterArgs{\n\t\t\t\tProjects: pulumi.StringArray{\n\t\t\t\t\tpulumi.Sprintf(\"projects/%v\", project.Number),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAmount: \u0026billing.BudgetAmountArgs{\n\t\t\t\tSpecifiedAmount: \u0026billing.BudgetAmountSpecifiedAmountArgs{\n\t\t\t\t\tCurrencyCode: pulumi.String(\"USD\"),\n\t\t\t\t\tUnits: pulumi.String(\"100000\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAllUpdatesRule: \u0026billing.BudgetAllUpdatesRuleArgs{\n\t\t\t\tMonitoringNotificationChannels: pulumi.StringArray{},\n\t\t\t\tEnableProjectLevelRecipients: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetBillingAccountArgs;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.billing.Budget;\nimport com.pulumi.gcp.billing.BudgetArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetBudgetFilterArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAmountArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAmountSpecifiedAmountArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAllUpdatesRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var account = OrganizationsFunctions.getBillingAccount(GetBillingAccountArgs.builder()\n .billingAccount(\"000000-0000000-0000000-000000\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var budget = new Budget(\"budget\", BudgetArgs.builder()\n .billingAccount(account.applyValue(getBillingAccountResult -\u003e getBillingAccountResult.id()))\n .displayName(\"Example Billing Budget\")\n .budgetFilter(BudgetBudgetFilterArgs.builder()\n .projects(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .amount(BudgetAmountArgs.builder()\n .specifiedAmount(BudgetAmountSpecifiedAmountArgs.builder()\n .currencyCode(\"USD\")\n .units(\"100000\")\n .build())\n .build())\n .allUpdatesRule(BudgetAllUpdatesRuleArgs.builder()\n .monitoringNotificationChannels()\n .enableProjectLevelRecipients(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n budget:\n type: gcp:billing:Budget\n properties:\n billingAccount: ${account.id}\n displayName: Example Billing Budget\n budgetFilter:\n projects:\n - projects/${project.number}\n amount:\n specifiedAmount:\n currencyCode: USD\n units: '100000'\n allUpdatesRule:\n monitoringNotificationChannels: []\n enableProjectLevelRecipients: true\nvariables:\n account:\n fn::invoke:\n Function: gcp:organizations:getBillingAccount\n Arguments:\n billingAccount: 000000-0000000-0000000-000000\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Billing Budget Customperiod\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst account = gcp.organizations.getBillingAccount({\n billingAccount: \"000000-0000000-0000000-000000\",\n});\nconst project = gcp.organizations.getProject({});\nconst budget = new gcp.billing.Budget(\"budget\", {\n billingAccount: account.then(account =\u003e account.id),\n displayName: \"Example Billing Budget\",\n budgetFilter: {\n projects: [project.then(project =\u003e `projects/${project.number}`)],\n creditTypesTreatment: \"EXCLUDE_ALL_CREDITS\",\n services: [\"services/24E6-581D-38E5\"],\n customPeriod: {\n startDate: {\n year: 2022,\n month: 1,\n day: 1,\n },\n endDate: {\n year: 2023,\n month: 12,\n day: 31,\n },\n },\n },\n amount: {\n specifiedAmount: {\n currencyCode: \"USD\",\n units: \"100000\",\n },\n },\n thresholdRules: [\n {\n thresholdPercent: 0.5,\n },\n {\n thresholdPercent: 0.9,\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccount = gcp.organizations.get_billing_account(billing_account=\"000000-0000000-0000000-000000\")\nproject = gcp.organizations.get_project()\nbudget = gcp.billing.Budget(\"budget\",\n billing_account=account.id,\n display_name=\"Example Billing Budget\",\n budget_filter={\n \"projects\": [f\"projects/{project.number}\"],\n \"credit_types_treatment\": \"EXCLUDE_ALL_CREDITS\",\n \"services\": [\"services/24E6-581D-38E5\"],\n \"custom_period\": {\n \"start_date\": {\n \"year\": 2022,\n \"month\": 1,\n \"day\": 1,\n },\n \"end_date\": {\n \"year\": 2023,\n \"month\": 12,\n \"day\": 31,\n },\n },\n },\n amount={\n \"specified_amount\": {\n \"currency_code\": \"USD\",\n \"units\": \"100000\",\n },\n },\n threshold_rules=[\n {\n \"threshold_percent\": 0.5,\n },\n {\n \"threshold_percent\": 0.9,\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var account = Gcp.Organizations.GetBillingAccount.Invoke(new()\n {\n BillingAccount = \"000000-0000000-0000000-000000\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var budget = new Gcp.Billing.Budget(\"budget\", new()\n {\n BillingAccount = account.Apply(getBillingAccountResult =\u003e getBillingAccountResult.Id),\n DisplayName = \"Example Billing Budget\",\n BudgetFilter = new Gcp.Billing.Inputs.BudgetBudgetFilterArgs\n {\n Projects = new[]\n {\n $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n CreditTypesTreatment = \"EXCLUDE_ALL_CREDITS\",\n Services = new[]\n {\n \"services/24E6-581D-38E5\",\n },\n CustomPeriod = new Gcp.Billing.Inputs.BudgetBudgetFilterCustomPeriodArgs\n {\n StartDate = new Gcp.Billing.Inputs.BudgetBudgetFilterCustomPeriodStartDateArgs\n {\n Year = 2022,\n Month = 1,\n Day = 1,\n },\n EndDate = new Gcp.Billing.Inputs.BudgetBudgetFilterCustomPeriodEndDateArgs\n {\n Year = 2023,\n Month = 12,\n Day = 31,\n },\n },\n },\n Amount = new Gcp.Billing.Inputs.BudgetAmountArgs\n {\n SpecifiedAmount = new Gcp.Billing.Inputs.BudgetAmountSpecifiedAmountArgs\n {\n CurrencyCode = \"USD\",\n Units = \"100000\",\n },\n },\n ThresholdRules = new[]\n {\n new Gcp.Billing.Inputs.BudgetThresholdRuleArgs\n {\n ThresholdPercent = 0.5,\n },\n new Gcp.Billing.Inputs.BudgetThresholdRuleArgs\n {\n ThresholdPercent = 0.9,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/billing\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\taccount, err := organizations.GetBillingAccount(ctx, \u0026organizations.GetBillingAccountArgs{\n\t\t\tBillingAccount: pulumi.StringRef(\"000000-0000000-0000000-000000\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = billing.NewBudget(ctx, \"budget\", \u0026billing.BudgetArgs{\n\t\t\tBillingAccount: pulumi.String(account.Id),\n\t\t\tDisplayName: pulumi.String(\"Example Billing Budget\"),\n\t\t\tBudgetFilter: \u0026billing.BudgetBudgetFilterArgs{\n\t\t\t\tProjects: pulumi.StringArray{\n\t\t\t\t\tpulumi.Sprintf(\"projects/%v\", project.Number),\n\t\t\t\t},\n\t\t\t\tCreditTypesTreatment: pulumi.String(\"EXCLUDE_ALL_CREDITS\"),\n\t\t\t\tServices: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"services/24E6-581D-38E5\"),\n\t\t\t\t},\n\t\t\t\tCustomPeriod: \u0026billing.BudgetBudgetFilterCustomPeriodArgs{\n\t\t\t\t\tStartDate: \u0026billing.BudgetBudgetFilterCustomPeriodStartDateArgs{\n\t\t\t\t\t\tYear: pulumi.Int(2022),\n\t\t\t\t\t\tMonth: pulumi.Int(1),\n\t\t\t\t\t\tDay: pulumi.Int(1),\n\t\t\t\t\t},\n\t\t\t\t\tEndDate: \u0026billing.BudgetBudgetFilterCustomPeriodEndDateArgs{\n\t\t\t\t\t\tYear: pulumi.Int(2023),\n\t\t\t\t\t\tMonth: pulumi.Int(12),\n\t\t\t\t\t\tDay: pulumi.Int(31),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAmount: \u0026billing.BudgetAmountArgs{\n\t\t\t\tSpecifiedAmount: \u0026billing.BudgetAmountSpecifiedAmountArgs{\n\t\t\t\t\tCurrencyCode: pulumi.String(\"USD\"),\n\t\t\t\t\tUnits: pulumi.String(\"100000\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tThresholdRules: billing.BudgetThresholdRuleArray{\n\t\t\t\t\u0026billing.BudgetThresholdRuleArgs{\n\t\t\t\t\tThresholdPercent: pulumi.Float64(0.5),\n\t\t\t\t},\n\t\t\t\t\u0026billing.BudgetThresholdRuleArgs{\n\t\t\t\t\tThresholdPercent: pulumi.Float64(0.9),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetBillingAccountArgs;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.billing.Budget;\nimport com.pulumi.gcp.billing.BudgetArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetBudgetFilterArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetBudgetFilterCustomPeriodArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetBudgetFilterCustomPeriodStartDateArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetBudgetFilterCustomPeriodEndDateArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAmountArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAmountSpecifiedAmountArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetThresholdRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var account = OrganizationsFunctions.getBillingAccount(GetBillingAccountArgs.builder()\n .billingAccount(\"000000-0000000-0000000-000000\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var budget = new Budget(\"budget\", BudgetArgs.builder()\n .billingAccount(account.applyValue(getBillingAccountResult -\u003e getBillingAccountResult.id()))\n .displayName(\"Example Billing Budget\")\n .budgetFilter(BudgetBudgetFilterArgs.builder()\n .projects(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .creditTypesTreatment(\"EXCLUDE_ALL_CREDITS\")\n .services(\"services/24E6-581D-38E5\")\n .customPeriod(BudgetBudgetFilterCustomPeriodArgs.builder()\n .startDate(BudgetBudgetFilterCustomPeriodStartDateArgs.builder()\n .year(2022)\n .month(1)\n .day(1)\n .build())\n .endDate(BudgetBudgetFilterCustomPeriodEndDateArgs.builder()\n .year(2023)\n .month(12)\n .day(31)\n .build())\n .build())\n .build())\n .amount(BudgetAmountArgs.builder()\n .specifiedAmount(BudgetAmountSpecifiedAmountArgs.builder()\n .currencyCode(\"USD\")\n .units(\"100000\")\n .build())\n .build())\n .thresholdRules( \n BudgetThresholdRuleArgs.builder()\n .thresholdPercent(0.5)\n .build(),\n BudgetThresholdRuleArgs.builder()\n .thresholdPercent(0.9)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n budget:\n type: gcp:billing:Budget\n properties:\n billingAccount: ${account.id}\n displayName: Example Billing Budget\n budgetFilter:\n projects:\n - projects/${project.number}\n creditTypesTreatment: EXCLUDE_ALL_CREDITS\n services:\n - services/24E6-581D-38E5\n customPeriod:\n startDate:\n year: 2022\n month: 1\n day: 1\n endDate:\n year: 2023\n month: 12\n day: 31\n amount:\n specifiedAmount:\n currencyCode: USD\n units: '100000'\n thresholdRules:\n - thresholdPercent: 0.5\n - thresholdPercent: 0.9\nvariables:\n account:\n fn::invoke:\n Function: gcp:organizations:getBillingAccount\n Arguments:\n billingAccount: 000000-0000000-0000000-000000\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBudget can be imported using any of these accepted formats:\n\n* `billingAccounts/{{billing_account}}/budgets/{{name}}`\n\n* `{{billing_account}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Budget can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:billing/budget:Budget default billingAccounts/{{billing_account}}/budgets/{{name}}\n```\n\n```sh\n$ pulumi import gcp:billing/budget:Budget default {{billing_account}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:billing/budget:Budget default {{name}}\n```\n\n", + "description": "Budget configuration for a billing account.\n\n\nTo get more information about Budget, see:\n\n* [API documentation](https://cloud.google.com/billing/docs/reference/budget/rest/v1/billingAccounts.budgets)\n* How-to Guides\n * [Creating a budget](https://cloud.google.com/billing/docs/how-to/budgets)\n\n\u003e **Warning:** If you are using User ADCs (Application Default Credentials) with this resource,\nyou must specify a `billing_project` and set `user_project_override` to true\nin the provider configuration. Otherwise the Billing Budgets API will return a 403 error.\nYour account must have the `serviceusage.services.use` permission on the\n`billing_project` you defined.\n\n## Example Usage\n\n### Billing Budget Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst account = gcp.organizations.getBillingAccount({\n billingAccount: \"000000-0000000-0000000-000000\",\n});\nconst budget = new gcp.billing.Budget(\"budget\", {\n billingAccount: account.then(account =\u003e account.id),\n displayName: \"Example Billing Budget\",\n amount: {\n specifiedAmount: {\n currencyCode: \"USD\",\n units: \"100000\",\n },\n },\n thresholdRules: [{\n thresholdPercent: 0.5,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccount = gcp.organizations.get_billing_account(billing_account=\"000000-0000000-0000000-000000\")\nbudget = gcp.billing.Budget(\"budget\",\n billing_account=account.id,\n display_name=\"Example Billing Budget\",\n amount={\n \"specified_amount\": {\n \"currency_code\": \"USD\",\n \"units\": \"100000\",\n },\n },\n threshold_rules=[{\n \"threshold_percent\": 0.5,\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var account = Gcp.Organizations.GetBillingAccount.Invoke(new()\n {\n BillingAccount = \"000000-0000000-0000000-000000\",\n });\n\n var budget = new Gcp.Billing.Budget(\"budget\", new()\n {\n BillingAccount = account.Apply(getBillingAccountResult =\u003e getBillingAccountResult.Id),\n DisplayName = \"Example Billing Budget\",\n Amount = new Gcp.Billing.Inputs.BudgetAmountArgs\n {\n SpecifiedAmount = new Gcp.Billing.Inputs.BudgetAmountSpecifiedAmountArgs\n {\n CurrencyCode = \"USD\",\n Units = \"100000\",\n },\n },\n ThresholdRules = new[]\n {\n new Gcp.Billing.Inputs.BudgetThresholdRuleArgs\n {\n ThresholdPercent = 0.5,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/billing\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\taccount, err := organizations.GetBillingAccount(ctx, \u0026organizations.GetBillingAccountArgs{\n\t\t\tBillingAccount: pulumi.StringRef(\"000000-0000000-0000000-000000\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = billing.NewBudget(ctx, \"budget\", \u0026billing.BudgetArgs{\n\t\t\tBillingAccount: pulumi.String(account.Id),\n\t\t\tDisplayName: pulumi.String(\"Example Billing Budget\"),\n\t\t\tAmount: \u0026billing.BudgetAmountArgs{\n\t\t\t\tSpecifiedAmount: \u0026billing.BudgetAmountSpecifiedAmountArgs{\n\t\t\t\t\tCurrencyCode: pulumi.String(\"USD\"),\n\t\t\t\t\tUnits: pulumi.String(\"100000\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tThresholdRules: billing.BudgetThresholdRuleArray{\n\t\t\t\t\u0026billing.BudgetThresholdRuleArgs{\n\t\t\t\t\tThresholdPercent: pulumi.Float64(0.5),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetBillingAccountArgs;\nimport com.pulumi.gcp.billing.Budget;\nimport com.pulumi.gcp.billing.BudgetArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAmountArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAmountSpecifiedAmountArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetThresholdRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var account = OrganizationsFunctions.getBillingAccount(GetBillingAccountArgs.builder()\n .billingAccount(\"000000-0000000-0000000-000000\")\n .build());\n\n var budget = new Budget(\"budget\", BudgetArgs.builder()\n .billingAccount(account.applyValue(getBillingAccountResult -\u003e getBillingAccountResult.id()))\n .displayName(\"Example Billing Budget\")\n .amount(BudgetAmountArgs.builder()\n .specifiedAmount(BudgetAmountSpecifiedAmountArgs.builder()\n .currencyCode(\"USD\")\n .units(\"100000\")\n .build())\n .build())\n .thresholdRules(BudgetThresholdRuleArgs.builder()\n .thresholdPercent(0.5)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n budget:\n type: gcp:billing:Budget\n properties:\n billingAccount: ${account.id}\n displayName: Example Billing Budget\n amount:\n specifiedAmount:\n currencyCode: USD\n units: '100000'\n thresholdRules:\n - thresholdPercent: 0.5\nvariables:\n account:\n fn::invoke:\n Function: gcp:organizations:getBillingAccount\n Arguments:\n billingAccount: 000000-0000000-0000000-000000\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Billing Budget Lastperiod\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst account = gcp.organizations.getBillingAccount({\n billingAccount: \"000000-0000000-0000000-000000\",\n});\nconst project = gcp.organizations.getProject({});\nconst budget = new gcp.billing.Budget(\"budget\", {\n billingAccount: account.then(account =\u003e account.id),\n displayName: \"Example Billing Budget\",\n budgetFilter: {\n projects: [project.then(project =\u003e `projects/${project.number}`)],\n },\n amount: {\n lastPeriodAmount: true,\n },\n thresholdRules: [{\n thresholdPercent: 10,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccount = gcp.organizations.get_billing_account(billing_account=\"000000-0000000-0000000-000000\")\nproject = gcp.organizations.get_project()\nbudget = gcp.billing.Budget(\"budget\",\n billing_account=account.id,\n display_name=\"Example Billing Budget\",\n budget_filter={\n \"projects\": [f\"projects/{project.number}\"],\n },\n amount={\n \"last_period_amount\": True,\n },\n threshold_rules=[{\n \"threshold_percent\": 10,\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var account = Gcp.Organizations.GetBillingAccount.Invoke(new()\n {\n BillingAccount = \"000000-0000000-0000000-000000\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var budget = new Gcp.Billing.Budget(\"budget\", new()\n {\n BillingAccount = account.Apply(getBillingAccountResult =\u003e getBillingAccountResult.Id),\n DisplayName = \"Example Billing Budget\",\n BudgetFilter = new Gcp.Billing.Inputs.BudgetBudgetFilterArgs\n {\n Projects = new[]\n {\n $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n },\n Amount = new Gcp.Billing.Inputs.BudgetAmountArgs\n {\n LastPeriodAmount = true,\n },\n ThresholdRules = new[]\n {\n new Gcp.Billing.Inputs.BudgetThresholdRuleArgs\n {\n ThresholdPercent = 10,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/billing\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\taccount, err := organizations.GetBillingAccount(ctx, \u0026organizations.GetBillingAccountArgs{\n\t\t\tBillingAccount: pulumi.StringRef(\"000000-0000000-0000000-000000\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = billing.NewBudget(ctx, \"budget\", \u0026billing.BudgetArgs{\n\t\t\tBillingAccount: pulumi.String(account.Id),\n\t\t\tDisplayName: pulumi.String(\"Example Billing Budget\"),\n\t\t\tBudgetFilter: \u0026billing.BudgetBudgetFilterArgs{\n\t\t\t\tProjects: pulumi.StringArray{\n\t\t\t\t\tpulumi.Sprintf(\"projects/%v\", project.Number),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAmount: \u0026billing.BudgetAmountArgs{\n\t\t\t\tLastPeriodAmount: pulumi.Bool(true),\n\t\t\t},\n\t\t\tThresholdRules: billing.BudgetThresholdRuleArray{\n\t\t\t\t\u0026billing.BudgetThresholdRuleArgs{\n\t\t\t\t\tThresholdPercent: pulumi.Float64(10),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetBillingAccountArgs;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.billing.Budget;\nimport com.pulumi.gcp.billing.BudgetArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetBudgetFilterArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAmountArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetThresholdRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var account = OrganizationsFunctions.getBillingAccount(GetBillingAccountArgs.builder()\n .billingAccount(\"000000-0000000-0000000-000000\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var budget = new Budget(\"budget\", BudgetArgs.builder()\n .billingAccount(account.applyValue(getBillingAccountResult -\u003e getBillingAccountResult.id()))\n .displayName(\"Example Billing Budget\")\n .budgetFilter(BudgetBudgetFilterArgs.builder()\n .projects(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .amount(BudgetAmountArgs.builder()\n .lastPeriodAmount(true)\n .build())\n .thresholdRules(BudgetThresholdRuleArgs.builder()\n .thresholdPercent(10)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n budget:\n type: gcp:billing:Budget\n properties:\n billingAccount: ${account.id}\n displayName: Example Billing Budget\n budgetFilter:\n projects:\n - projects/${project.number}\n amount:\n lastPeriodAmount: true\n thresholdRules:\n - thresholdPercent: 10\nvariables:\n account:\n fn::invoke:\n Function: gcp:organizations:getBillingAccount\n Arguments:\n billingAccount: 000000-0000000-0000000-000000\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Billing Budget Filter\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst account = gcp.organizations.getBillingAccount({\n billingAccount: \"000000-0000000-0000000-000000\",\n});\nconst project = gcp.organizations.getProject({});\nconst budget = new gcp.billing.Budget(\"budget\", {\n billingAccount: account.then(account =\u003e account.id),\n displayName: \"Example Billing Budget\",\n budgetFilter: {\n projects: [project.then(project =\u003e `projects/${project.number}`)],\n creditTypesTreatment: \"INCLUDE_SPECIFIED_CREDITS\",\n services: [\"services/24E6-581D-38E5\"],\n creditTypes: [\n \"PROMOTION\",\n \"FREE_TIER\",\n ],\n resourceAncestors: [\"organizations/123456789\"],\n },\n amount: {\n specifiedAmount: {\n currencyCode: \"USD\",\n units: \"100000\",\n },\n },\n thresholdRules: [\n {\n thresholdPercent: 0.5,\n },\n {\n thresholdPercent: 0.9,\n spendBasis: \"FORECASTED_SPEND\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccount = gcp.organizations.get_billing_account(billing_account=\"000000-0000000-0000000-000000\")\nproject = gcp.organizations.get_project()\nbudget = gcp.billing.Budget(\"budget\",\n billing_account=account.id,\n display_name=\"Example Billing Budget\",\n budget_filter={\n \"projects\": [f\"projects/{project.number}\"],\n \"credit_types_treatment\": \"INCLUDE_SPECIFIED_CREDITS\",\n \"services\": [\"services/24E6-581D-38E5\"],\n \"credit_types\": [\n \"PROMOTION\",\n \"FREE_TIER\",\n ],\n \"resource_ancestors\": [\"organizations/123456789\"],\n },\n amount={\n \"specified_amount\": {\n \"currency_code\": \"USD\",\n \"units\": \"100000\",\n },\n },\n threshold_rules=[\n {\n \"threshold_percent\": 0.5,\n },\n {\n \"threshold_percent\": 0.9,\n \"spend_basis\": \"FORECASTED_SPEND\",\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var account = Gcp.Organizations.GetBillingAccount.Invoke(new()\n {\n BillingAccount = \"000000-0000000-0000000-000000\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var budget = new Gcp.Billing.Budget(\"budget\", new()\n {\n BillingAccount = account.Apply(getBillingAccountResult =\u003e getBillingAccountResult.Id),\n DisplayName = \"Example Billing Budget\",\n BudgetFilter = new Gcp.Billing.Inputs.BudgetBudgetFilterArgs\n {\n Projects = new[]\n {\n $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n CreditTypesTreatment = \"INCLUDE_SPECIFIED_CREDITS\",\n Services = new[]\n {\n \"services/24E6-581D-38E5\",\n },\n CreditTypes = new[]\n {\n \"PROMOTION\",\n \"FREE_TIER\",\n },\n ResourceAncestors = new[]\n {\n \"organizations/123456789\",\n },\n },\n Amount = new Gcp.Billing.Inputs.BudgetAmountArgs\n {\n SpecifiedAmount = new Gcp.Billing.Inputs.BudgetAmountSpecifiedAmountArgs\n {\n CurrencyCode = \"USD\",\n Units = \"100000\",\n },\n },\n ThresholdRules = new[]\n {\n new Gcp.Billing.Inputs.BudgetThresholdRuleArgs\n {\n ThresholdPercent = 0.5,\n },\n new Gcp.Billing.Inputs.BudgetThresholdRuleArgs\n {\n ThresholdPercent = 0.9,\n SpendBasis = \"FORECASTED_SPEND\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/billing\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\taccount, err := organizations.GetBillingAccount(ctx, \u0026organizations.GetBillingAccountArgs{\n\t\t\tBillingAccount: pulumi.StringRef(\"000000-0000000-0000000-000000\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = billing.NewBudget(ctx, \"budget\", \u0026billing.BudgetArgs{\n\t\t\tBillingAccount: pulumi.String(account.Id),\n\t\t\tDisplayName: pulumi.String(\"Example Billing Budget\"),\n\t\t\tBudgetFilter: \u0026billing.BudgetBudgetFilterArgs{\n\t\t\t\tProjects: pulumi.StringArray{\n\t\t\t\t\tpulumi.Sprintf(\"projects/%v\", project.Number),\n\t\t\t\t},\n\t\t\t\tCreditTypesTreatment: pulumi.String(\"INCLUDE_SPECIFIED_CREDITS\"),\n\t\t\t\tServices: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"services/24E6-581D-38E5\"),\n\t\t\t\t},\n\t\t\t\tCreditTypes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"PROMOTION\"),\n\t\t\t\t\tpulumi.String(\"FREE_TIER\"),\n\t\t\t\t},\n\t\t\t\tResourceAncestors: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"organizations/123456789\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAmount: \u0026billing.BudgetAmountArgs{\n\t\t\t\tSpecifiedAmount: \u0026billing.BudgetAmountSpecifiedAmountArgs{\n\t\t\t\t\tCurrencyCode: pulumi.String(\"USD\"),\n\t\t\t\t\tUnits: pulumi.String(\"100000\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tThresholdRules: billing.BudgetThresholdRuleArray{\n\t\t\t\t\u0026billing.BudgetThresholdRuleArgs{\n\t\t\t\t\tThresholdPercent: pulumi.Float64(0.5),\n\t\t\t\t},\n\t\t\t\t\u0026billing.BudgetThresholdRuleArgs{\n\t\t\t\t\tThresholdPercent: pulumi.Float64(0.9),\n\t\t\t\t\tSpendBasis: pulumi.String(\"FORECASTED_SPEND\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetBillingAccountArgs;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.billing.Budget;\nimport com.pulumi.gcp.billing.BudgetArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetBudgetFilterArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAmountArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAmountSpecifiedAmountArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetThresholdRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var account = OrganizationsFunctions.getBillingAccount(GetBillingAccountArgs.builder()\n .billingAccount(\"000000-0000000-0000000-000000\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var budget = new Budget(\"budget\", BudgetArgs.builder()\n .billingAccount(account.applyValue(getBillingAccountResult -\u003e getBillingAccountResult.id()))\n .displayName(\"Example Billing Budget\")\n .budgetFilter(BudgetBudgetFilterArgs.builder()\n .projects(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .creditTypesTreatment(\"INCLUDE_SPECIFIED_CREDITS\")\n .services(\"services/24E6-581D-38E5\")\n .creditTypes( \n \"PROMOTION\",\n \"FREE_TIER\")\n .resourceAncestors(\"organizations/123456789\")\n .build())\n .amount(BudgetAmountArgs.builder()\n .specifiedAmount(BudgetAmountSpecifiedAmountArgs.builder()\n .currencyCode(\"USD\")\n .units(\"100000\")\n .build())\n .build())\n .thresholdRules( \n BudgetThresholdRuleArgs.builder()\n .thresholdPercent(0.5)\n .build(),\n BudgetThresholdRuleArgs.builder()\n .thresholdPercent(0.9)\n .spendBasis(\"FORECASTED_SPEND\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n budget:\n type: gcp:billing:Budget\n properties:\n billingAccount: ${account.id}\n displayName: Example Billing Budget\n budgetFilter:\n projects:\n - projects/${project.number}\n creditTypesTreatment: INCLUDE_SPECIFIED_CREDITS\n services:\n - services/24E6-581D-38E5\n creditTypes:\n - PROMOTION\n - FREE_TIER\n resourceAncestors:\n - organizations/123456789\n amount:\n specifiedAmount:\n currencyCode: USD\n units: '100000'\n thresholdRules:\n - thresholdPercent: 0.5\n - thresholdPercent: 0.9\n spendBasis: FORECASTED_SPEND\nvariables:\n account:\n fn::invoke:\n Function: gcp:organizations:getBillingAccount\n Arguments:\n billingAccount: 000000-0000000-0000000-000000\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Billing Budget Notify\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst account = gcp.organizations.getBillingAccount({\n billingAccount: \"000000-0000000-0000000-000000\",\n});\nconst project = gcp.organizations.getProject({});\nconst notificationChannel = new gcp.monitoring.NotificationChannel(\"notification_channel\", {\n displayName: \"Example Notification Channel\",\n type: \"email\",\n labels: {\n email_address: \"address@example.com\",\n },\n});\nconst budget = new gcp.billing.Budget(\"budget\", {\n billingAccount: account.then(account =\u003e account.id),\n displayName: \"Example Billing Budget\",\n budgetFilter: {\n projects: [project.then(project =\u003e `projects/${project.number}`)],\n },\n amount: {\n specifiedAmount: {\n currencyCode: \"USD\",\n units: \"100000\",\n },\n },\n thresholdRules: [\n {\n thresholdPercent: 1,\n },\n {\n thresholdPercent: 1,\n spendBasis: \"FORECASTED_SPEND\",\n },\n ],\n allUpdatesRule: {\n monitoringNotificationChannels: [notificationChannel.id],\n disableDefaultIamRecipients: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccount = gcp.organizations.get_billing_account(billing_account=\"000000-0000000-0000000-000000\")\nproject = gcp.organizations.get_project()\nnotification_channel = gcp.monitoring.NotificationChannel(\"notification_channel\",\n display_name=\"Example Notification Channel\",\n type=\"email\",\n labels={\n \"email_address\": \"address@example.com\",\n })\nbudget = gcp.billing.Budget(\"budget\",\n billing_account=account.id,\n display_name=\"Example Billing Budget\",\n budget_filter={\n \"projects\": [f\"projects/{project.number}\"],\n },\n amount={\n \"specified_amount\": {\n \"currency_code\": \"USD\",\n \"units\": \"100000\",\n },\n },\n threshold_rules=[\n {\n \"threshold_percent\": 1,\n },\n {\n \"threshold_percent\": 1,\n \"spend_basis\": \"FORECASTED_SPEND\",\n },\n ],\n all_updates_rule={\n \"monitoring_notification_channels\": [notification_channel.id],\n \"disable_default_iam_recipients\": True,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var account = Gcp.Organizations.GetBillingAccount.Invoke(new()\n {\n BillingAccount = \"000000-0000000-0000000-000000\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var notificationChannel = new Gcp.Monitoring.NotificationChannel(\"notification_channel\", new()\n {\n DisplayName = \"Example Notification Channel\",\n Type = \"email\",\n Labels = \n {\n { \"email_address\", \"address@example.com\" },\n },\n });\n\n var budget = new Gcp.Billing.Budget(\"budget\", new()\n {\n BillingAccount = account.Apply(getBillingAccountResult =\u003e getBillingAccountResult.Id),\n DisplayName = \"Example Billing Budget\",\n BudgetFilter = new Gcp.Billing.Inputs.BudgetBudgetFilterArgs\n {\n Projects = new[]\n {\n $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n },\n Amount = new Gcp.Billing.Inputs.BudgetAmountArgs\n {\n SpecifiedAmount = new Gcp.Billing.Inputs.BudgetAmountSpecifiedAmountArgs\n {\n CurrencyCode = \"USD\",\n Units = \"100000\",\n },\n },\n ThresholdRules = new[]\n {\n new Gcp.Billing.Inputs.BudgetThresholdRuleArgs\n {\n ThresholdPercent = 1,\n },\n new Gcp.Billing.Inputs.BudgetThresholdRuleArgs\n {\n ThresholdPercent = 1,\n SpendBasis = \"FORECASTED_SPEND\",\n },\n },\n AllUpdatesRule = new Gcp.Billing.Inputs.BudgetAllUpdatesRuleArgs\n {\n MonitoringNotificationChannels = new[]\n {\n notificationChannel.Id,\n },\n DisableDefaultIamRecipients = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/billing\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/monitoring\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\taccount, err := organizations.GetBillingAccount(ctx, \u0026organizations.GetBillingAccountArgs{\n\t\t\tBillingAccount: pulumi.StringRef(\"000000-0000000-0000000-000000\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnotificationChannel, err := monitoring.NewNotificationChannel(ctx, \"notification_channel\", \u0026monitoring.NotificationChannelArgs{\n\t\t\tDisplayName: pulumi.String(\"Example Notification Channel\"),\n\t\t\tType: pulumi.String(\"email\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"email_address\": pulumi.String(\"address@example.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = billing.NewBudget(ctx, \"budget\", \u0026billing.BudgetArgs{\n\t\t\tBillingAccount: pulumi.String(account.Id),\n\t\t\tDisplayName: pulumi.String(\"Example Billing Budget\"),\n\t\t\tBudgetFilter: \u0026billing.BudgetBudgetFilterArgs{\n\t\t\t\tProjects: pulumi.StringArray{\n\t\t\t\t\tpulumi.Sprintf(\"projects/%v\", project.Number),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAmount: \u0026billing.BudgetAmountArgs{\n\t\t\t\tSpecifiedAmount: \u0026billing.BudgetAmountSpecifiedAmountArgs{\n\t\t\t\t\tCurrencyCode: pulumi.String(\"USD\"),\n\t\t\t\t\tUnits: pulumi.String(\"100000\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tThresholdRules: billing.BudgetThresholdRuleArray{\n\t\t\t\t\u0026billing.BudgetThresholdRuleArgs{\n\t\t\t\t\tThresholdPercent: pulumi.Float64(1),\n\t\t\t\t},\n\t\t\t\t\u0026billing.BudgetThresholdRuleArgs{\n\t\t\t\t\tThresholdPercent: pulumi.Float64(1),\n\t\t\t\t\tSpendBasis: pulumi.String(\"FORECASTED_SPEND\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAllUpdatesRule: \u0026billing.BudgetAllUpdatesRuleArgs{\n\t\t\t\tMonitoringNotificationChannels: pulumi.StringArray{\n\t\t\t\t\tnotificationChannel.ID(),\n\t\t\t\t},\n\t\t\t\tDisableDefaultIamRecipients: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetBillingAccountArgs;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.monitoring.NotificationChannel;\nimport com.pulumi.gcp.monitoring.NotificationChannelArgs;\nimport com.pulumi.gcp.billing.Budget;\nimport com.pulumi.gcp.billing.BudgetArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetBudgetFilterArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAmountArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAmountSpecifiedAmountArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetThresholdRuleArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAllUpdatesRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var account = OrganizationsFunctions.getBillingAccount(GetBillingAccountArgs.builder()\n .billingAccount(\"000000-0000000-0000000-000000\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var notificationChannel = new NotificationChannel(\"notificationChannel\", NotificationChannelArgs.builder()\n .displayName(\"Example Notification Channel\")\n .type(\"email\")\n .labels(Map.of(\"email_address\", \"address@example.com\"))\n .build());\n\n var budget = new Budget(\"budget\", BudgetArgs.builder()\n .billingAccount(account.applyValue(getBillingAccountResult -\u003e getBillingAccountResult.id()))\n .displayName(\"Example Billing Budget\")\n .budgetFilter(BudgetBudgetFilterArgs.builder()\n .projects(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .amount(BudgetAmountArgs.builder()\n .specifiedAmount(BudgetAmountSpecifiedAmountArgs.builder()\n .currencyCode(\"USD\")\n .units(\"100000\")\n .build())\n .build())\n .thresholdRules( \n BudgetThresholdRuleArgs.builder()\n .thresholdPercent(1)\n .build(),\n BudgetThresholdRuleArgs.builder()\n .thresholdPercent(1)\n .spendBasis(\"FORECASTED_SPEND\")\n .build())\n .allUpdatesRule(BudgetAllUpdatesRuleArgs.builder()\n .monitoringNotificationChannels(notificationChannel.id())\n .disableDefaultIamRecipients(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n budget:\n type: gcp:billing:Budget\n properties:\n billingAccount: ${account.id}\n displayName: Example Billing Budget\n budgetFilter:\n projects:\n - projects/${project.number}\n amount:\n specifiedAmount:\n currencyCode: USD\n units: '100000'\n thresholdRules:\n - thresholdPercent: 1\n - thresholdPercent: 1\n spendBasis: FORECASTED_SPEND\n allUpdatesRule:\n monitoringNotificationChannels:\n - ${notificationChannel.id}\n disableDefaultIamRecipients: true\n notificationChannel:\n type: gcp:monitoring:NotificationChannel\n name: notification_channel\n properties:\n displayName: Example Notification Channel\n type: email\n labels:\n email_address: address@example.com\nvariables:\n account:\n fn::invoke:\n Function: gcp:organizations:getBillingAccount\n Arguments:\n billingAccount: 000000-0000000-0000000-000000\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Billing Budget Notify Project Recipient\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst account = gcp.organizations.getBillingAccount({\n billingAccount: \"000000-0000000-0000000-000000\",\n});\nconst project = gcp.organizations.getProject({});\nconst budget = new gcp.billing.Budget(\"budget\", {\n billingAccount: account.then(account =\u003e account.id),\n displayName: \"Example Billing Budget\",\n budgetFilter: {\n projects: [project.then(project =\u003e `projects/${project.number}`)],\n },\n amount: {\n specifiedAmount: {\n currencyCode: \"USD\",\n units: \"100000\",\n },\n },\n allUpdatesRule: {\n monitoringNotificationChannels: [],\n enableProjectLevelRecipients: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccount = gcp.organizations.get_billing_account(billing_account=\"000000-0000000-0000000-000000\")\nproject = gcp.organizations.get_project()\nbudget = gcp.billing.Budget(\"budget\",\n billing_account=account.id,\n display_name=\"Example Billing Budget\",\n budget_filter={\n \"projects\": [f\"projects/{project.number}\"],\n },\n amount={\n \"specified_amount\": {\n \"currency_code\": \"USD\",\n \"units\": \"100000\",\n },\n },\n all_updates_rule={\n \"monitoring_notification_channels\": [],\n \"enable_project_level_recipients\": True,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var account = Gcp.Organizations.GetBillingAccount.Invoke(new()\n {\n BillingAccount = \"000000-0000000-0000000-000000\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var budget = new Gcp.Billing.Budget(\"budget\", new()\n {\n BillingAccount = account.Apply(getBillingAccountResult =\u003e getBillingAccountResult.Id),\n DisplayName = \"Example Billing Budget\",\n BudgetFilter = new Gcp.Billing.Inputs.BudgetBudgetFilterArgs\n {\n Projects = new[]\n {\n $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n },\n Amount = new Gcp.Billing.Inputs.BudgetAmountArgs\n {\n SpecifiedAmount = new Gcp.Billing.Inputs.BudgetAmountSpecifiedAmountArgs\n {\n CurrencyCode = \"USD\",\n Units = \"100000\",\n },\n },\n AllUpdatesRule = new Gcp.Billing.Inputs.BudgetAllUpdatesRuleArgs\n {\n MonitoringNotificationChannels = new() { },\n EnableProjectLevelRecipients = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/billing\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\taccount, err := organizations.GetBillingAccount(ctx, \u0026organizations.GetBillingAccountArgs{\n\t\t\tBillingAccount: pulumi.StringRef(\"000000-0000000-0000000-000000\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = billing.NewBudget(ctx, \"budget\", \u0026billing.BudgetArgs{\n\t\t\tBillingAccount: pulumi.String(account.Id),\n\t\t\tDisplayName: pulumi.String(\"Example Billing Budget\"),\n\t\t\tBudgetFilter: \u0026billing.BudgetBudgetFilterArgs{\n\t\t\t\tProjects: pulumi.StringArray{\n\t\t\t\t\tpulumi.Sprintf(\"projects/%v\", project.Number),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAmount: \u0026billing.BudgetAmountArgs{\n\t\t\t\tSpecifiedAmount: \u0026billing.BudgetAmountSpecifiedAmountArgs{\n\t\t\t\t\tCurrencyCode: pulumi.String(\"USD\"),\n\t\t\t\t\tUnits: pulumi.String(\"100000\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAllUpdatesRule: \u0026billing.BudgetAllUpdatesRuleArgs{\n\t\t\t\tMonitoringNotificationChannels: pulumi.StringArray{},\n\t\t\t\tEnableProjectLevelRecipients: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetBillingAccountArgs;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.billing.Budget;\nimport com.pulumi.gcp.billing.BudgetArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetBudgetFilterArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAmountArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAmountSpecifiedAmountArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAllUpdatesRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var account = OrganizationsFunctions.getBillingAccount(GetBillingAccountArgs.builder()\n .billingAccount(\"000000-0000000-0000000-000000\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var budget = new Budget(\"budget\", BudgetArgs.builder()\n .billingAccount(account.applyValue(getBillingAccountResult -\u003e getBillingAccountResult.id()))\n .displayName(\"Example Billing Budget\")\n .budgetFilter(BudgetBudgetFilterArgs.builder()\n .projects(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .amount(BudgetAmountArgs.builder()\n .specifiedAmount(BudgetAmountSpecifiedAmountArgs.builder()\n .currencyCode(\"USD\")\n .units(\"100000\")\n .build())\n .build())\n .allUpdatesRule(BudgetAllUpdatesRuleArgs.builder()\n .monitoringNotificationChannels()\n .enableProjectLevelRecipients(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n budget:\n type: gcp:billing:Budget\n properties:\n billingAccount: ${account.id}\n displayName: Example Billing Budget\n budgetFilter:\n projects:\n - projects/${project.number}\n amount:\n specifiedAmount:\n currencyCode: USD\n units: '100000'\n allUpdatesRule:\n monitoringNotificationChannels: []\n enableProjectLevelRecipients: true\nvariables:\n account:\n fn::invoke:\n Function: gcp:organizations:getBillingAccount\n Arguments:\n billingAccount: 000000-0000000-0000000-000000\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Billing Budget Customperiod\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst account = gcp.organizations.getBillingAccount({\n billingAccount: \"000000-0000000-0000000-000000\",\n});\nconst project = gcp.organizations.getProject({});\nconst budget = new gcp.billing.Budget(\"budget\", {\n billingAccount: account.then(account =\u003e account.id),\n displayName: \"Example Billing Budget\",\n budgetFilter: {\n projects: [project.then(project =\u003e `projects/${project.number}`)],\n creditTypesTreatment: \"EXCLUDE_ALL_CREDITS\",\n services: [\"services/24E6-581D-38E5\"],\n customPeriod: {\n startDate: {\n year: 2022,\n month: 1,\n day: 1,\n },\n endDate: {\n year: 2023,\n month: 12,\n day: 31,\n },\n },\n },\n amount: {\n specifiedAmount: {\n currencyCode: \"USD\",\n units: \"100000\",\n },\n },\n thresholdRules: [\n {\n thresholdPercent: 0.5,\n },\n {\n thresholdPercent: 0.9,\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccount = gcp.organizations.get_billing_account(billing_account=\"000000-0000000-0000000-000000\")\nproject = gcp.organizations.get_project()\nbudget = gcp.billing.Budget(\"budget\",\n billing_account=account.id,\n display_name=\"Example Billing Budget\",\n budget_filter={\n \"projects\": [f\"projects/{project.number}\"],\n \"credit_types_treatment\": \"EXCLUDE_ALL_CREDITS\",\n \"services\": [\"services/24E6-581D-38E5\"],\n \"custom_period\": {\n \"start_date\": {\n \"year\": 2022,\n \"month\": 1,\n \"day\": 1,\n },\n \"end_date\": {\n \"year\": 2023,\n \"month\": 12,\n \"day\": 31,\n },\n },\n },\n amount={\n \"specified_amount\": {\n \"currency_code\": \"USD\",\n \"units\": \"100000\",\n },\n },\n threshold_rules=[\n {\n \"threshold_percent\": 0.5,\n },\n {\n \"threshold_percent\": 0.9,\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var account = Gcp.Organizations.GetBillingAccount.Invoke(new()\n {\n BillingAccount = \"000000-0000000-0000000-000000\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var budget = new Gcp.Billing.Budget(\"budget\", new()\n {\n BillingAccount = account.Apply(getBillingAccountResult =\u003e getBillingAccountResult.Id),\n DisplayName = \"Example Billing Budget\",\n BudgetFilter = new Gcp.Billing.Inputs.BudgetBudgetFilterArgs\n {\n Projects = new[]\n {\n $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n CreditTypesTreatment = \"EXCLUDE_ALL_CREDITS\",\n Services = new[]\n {\n \"services/24E6-581D-38E5\",\n },\n CustomPeriod = new Gcp.Billing.Inputs.BudgetBudgetFilterCustomPeriodArgs\n {\n StartDate = new Gcp.Billing.Inputs.BudgetBudgetFilterCustomPeriodStartDateArgs\n {\n Year = 2022,\n Month = 1,\n Day = 1,\n },\n EndDate = new Gcp.Billing.Inputs.BudgetBudgetFilterCustomPeriodEndDateArgs\n {\n Year = 2023,\n Month = 12,\n Day = 31,\n },\n },\n },\n Amount = new Gcp.Billing.Inputs.BudgetAmountArgs\n {\n SpecifiedAmount = new Gcp.Billing.Inputs.BudgetAmountSpecifiedAmountArgs\n {\n CurrencyCode = \"USD\",\n Units = \"100000\",\n },\n },\n ThresholdRules = new[]\n {\n new Gcp.Billing.Inputs.BudgetThresholdRuleArgs\n {\n ThresholdPercent = 0.5,\n },\n new Gcp.Billing.Inputs.BudgetThresholdRuleArgs\n {\n ThresholdPercent = 0.9,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/billing\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\taccount, err := organizations.GetBillingAccount(ctx, \u0026organizations.GetBillingAccountArgs{\n\t\t\tBillingAccount: pulumi.StringRef(\"000000-0000000-0000000-000000\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = billing.NewBudget(ctx, \"budget\", \u0026billing.BudgetArgs{\n\t\t\tBillingAccount: pulumi.String(account.Id),\n\t\t\tDisplayName: pulumi.String(\"Example Billing Budget\"),\n\t\t\tBudgetFilter: \u0026billing.BudgetBudgetFilterArgs{\n\t\t\t\tProjects: pulumi.StringArray{\n\t\t\t\t\tpulumi.Sprintf(\"projects/%v\", project.Number),\n\t\t\t\t},\n\t\t\t\tCreditTypesTreatment: pulumi.String(\"EXCLUDE_ALL_CREDITS\"),\n\t\t\t\tServices: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"services/24E6-581D-38E5\"),\n\t\t\t\t},\n\t\t\t\tCustomPeriod: \u0026billing.BudgetBudgetFilterCustomPeriodArgs{\n\t\t\t\t\tStartDate: \u0026billing.BudgetBudgetFilterCustomPeriodStartDateArgs{\n\t\t\t\t\t\tYear: pulumi.Int(2022),\n\t\t\t\t\t\tMonth: pulumi.Int(1),\n\t\t\t\t\t\tDay: pulumi.Int(1),\n\t\t\t\t\t},\n\t\t\t\t\tEndDate: \u0026billing.BudgetBudgetFilterCustomPeriodEndDateArgs{\n\t\t\t\t\t\tYear: pulumi.Int(2023),\n\t\t\t\t\t\tMonth: pulumi.Int(12),\n\t\t\t\t\t\tDay: pulumi.Int(31),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAmount: \u0026billing.BudgetAmountArgs{\n\t\t\t\tSpecifiedAmount: \u0026billing.BudgetAmountSpecifiedAmountArgs{\n\t\t\t\t\tCurrencyCode: pulumi.String(\"USD\"),\n\t\t\t\t\tUnits: pulumi.String(\"100000\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tThresholdRules: billing.BudgetThresholdRuleArray{\n\t\t\t\t\u0026billing.BudgetThresholdRuleArgs{\n\t\t\t\t\tThresholdPercent: pulumi.Float64(0.5),\n\t\t\t\t},\n\t\t\t\t\u0026billing.BudgetThresholdRuleArgs{\n\t\t\t\t\tThresholdPercent: pulumi.Float64(0.9),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetBillingAccountArgs;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.billing.Budget;\nimport com.pulumi.gcp.billing.BudgetArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetBudgetFilterArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetBudgetFilterCustomPeriodArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetBudgetFilterCustomPeriodStartDateArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetBudgetFilterCustomPeriodEndDateArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAmountArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetAmountSpecifiedAmountArgs;\nimport com.pulumi.gcp.billing.inputs.BudgetThresholdRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var account = OrganizationsFunctions.getBillingAccount(GetBillingAccountArgs.builder()\n .billingAccount(\"000000-0000000-0000000-000000\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var budget = new Budget(\"budget\", BudgetArgs.builder()\n .billingAccount(account.applyValue(getBillingAccountResult -\u003e getBillingAccountResult.id()))\n .displayName(\"Example Billing Budget\")\n .budgetFilter(BudgetBudgetFilterArgs.builder()\n .projects(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .creditTypesTreatment(\"EXCLUDE_ALL_CREDITS\")\n .services(\"services/24E6-581D-38E5\")\n .customPeriod(BudgetBudgetFilterCustomPeriodArgs.builder()\n .startDate(BudgetBudgetFilterCustomPeriodStartDateArgs.builder()\n .year(2022)\n .month(1)\n .day(1)\n .build())\n .endDate(BudgetBudgetFilterCustomPeriodEndDateArgs.builder()\n .year(2023)\n .month(12)\n .day(31)\n .build())\n .build())\n .build())\n .amount(BudgetAmountArgs.builder()\n .specifiedAmount(BudgetAmountSpecifiedAmountArgs.builder()\n .currencyCode(\"USD\")\n .units(\"100000\")\n .build())\n .build())\n .thresholdRules( \n BudgetThresholdRuleArgs.builder()\n .thresholdPercent(0.5)\n .build(),\n BudgetThresholdRuleArgs.builder()\n .thresholdPercent(0.9)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n budget:\n type: gcp:billing:Budget\n properties:\n billingAccount: ${account.id}\n displayName: Example Billing Budget\n budgetFilter:\n projects:\n - projects/${project.number}\n creditTypesTreatment: EXCLUDE_ALL_CREDITS\n services:\n - services/24E6-581D-38E5\n customPeriod:\n startDate:\n year: 2022\n month: 1\n day: 1\n endDate:\n year: 2023\n month: 12\n day: 31\n amount:\n specifiedAmount:\n currencyCode: USD\n units: '100000'\n thresholdRules:\n - thresholdPercent: 0.5\n - thresholdPercent: 0.9\nvariables:\n account:\n fn::invoke:\n Function: gcp:organizations:getBillingAccount\n Arguments:\n billingAccount: 000000-0000000-0000000-000000\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBudget can be imported using any of these accepted formats:\n\n* `billingAccounts/{{billing_account}}/budgets/{{name}}`\n\n* `{{billing_account}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Budget can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:billing/budget:Budget default billingAccounts/{{billing_account}}/budgets/{{name}}\n```\n\n```sh\n$ pulumi import gcp:billing/budget:Budget default {{billing_account}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:billing/budget:Budget default {{name}}\n```\n\n", "properties": { "allUpdatesRule": { "$ref": "#/types/gcp:billing/BudgetAllUpdatesRule:BudgetAllUpdatesRule", @@ -137389,7 +137389,7 @@ } }, "gcp:cloudbuild/bitbucketServerConfig:BitbucketServerConfig": { - "description": "BitbucketServerConfig represents the configuration for a Bitbucket Server.\n\n\nTo get more information about BitbucketServerConfig, see:\n\n* [API documentation](https://cloud.google.com/build/docs/api/reference/rest/v1/projects.locations.bitbucketServerConfigs)\n* How-to Guides\n * [Connect to a Bitbucket Server host](https://cloud.google.com/build/docs/automating-builds/bitbucket/connect-host-bitbucket-server)\n\n## Example Usage\n\n### Cloudbuild Bitbucket Server Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bbs_config = new gcp.cloudbuild.BitbucketServerConfig(\"bbs-config\", {\n configId: \"bbs-config\",\n location: \"us-central1\",\n hostUri: \"https://bbs.com\",\n secrets: {\n adminAccessTokenVersionName: \"projects/myProject/secrets/mybbspat/versions/1\",\n readAccessTokenVersionName: \"projects/myProject/secrets/mybbspat/versions/1\",\n webhookSecretVersionName: \"projects/myProject/secrets/mybbspat/versions/1\",\n },\n username: \"test\",\n apiKey: \"\u003capi-key\u003e\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbbs_config = gcp.cloudbuild.BitbucketServerConfig(\"bbs-config\",\n config_id=\"bbs-config\",\n location=\"us-central1\",\n host_uri=\"https://bbs.com\",\n secrets={\n \"admin_access_token_version_name\": \"projects/myProject/secrets/mybbspat/versions/1\",\n \"read_access_token_version_name\": \"projects/myProject/secrets/mybbspat/versions/1\",\n \"webhook_secret_version_name\": \"projects/myProject/secrets/mybbspat/versions/1\",\n },\n username=\"test\",\n api_key=\"\u003capi-key\u003e\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bbs_config = new Gcp.CloudBuild.BitbucketServerConfig(\"bbs-config\", new()\n {\n ConfigId = \"bbs-config\",\n Location = \"us-central1\",\n HostUri = \"https://bbs.com\",\n Secrets = new Gcp.CloudBuild.Inputs.BitbucketServerConfigSecretsArgs\n {\n AdminAccessTokenVersionName = \"projects/myProject/secrets/mybbspat/versions/1\",\n ReadAccessTokenVersionName = \"projects/myProject/secrets/mybbspat/versions/1\",\n WebhookSecretVersionName = \"projects/myProject/secrets/mybbspat/versions/1\",\n },\n Username = \"test\",\n ApiKey = \"\u003capi-key\u003e\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuild.NewBitbucketServerConfig(ctx, \"bbs-config\", \u0026cloudbuild.BitbucketServerConfigArgs{\n\t\t\tConfigId: pulumi.String(\"bbs-config\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHostUri: pulumi.String(\"https://bbs.com\"),\n\t\t\tSecrets: \u0026cloudbuild.BitbucketServerConfigSecretsArgs{\n\t\t\t\tAdminAccessTokenVersionName: pulumi.String(\"projects/myProject/secrets/mybbspat/versions/1\"),\n\t\t\t\tReadAccessTokenVersionName: pulumi.String(\"projects/myProject/secrets/mybbspat/versions/1\"),\n\t\t\t\tWebhookSecretVersionName: pulumi.String(\"projects/myProject/secrets/mybbspat/versions/1\"),\n\t\t\t},\n\t\t\tUsername: pulumi.String(\"test\"),\n\t\t\tApiKey: pulumi.String(\"\u003capi-key\u003e\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuild.BitbucketServerConfig;\nimport com.pulumi.gcp.cloudbuild.BitbucketServerConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.BitbucketServerConfigSecretsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bbs_config = new BitbucketServerConfig(\"bbs-config\", BitbucketServerConfigArgs.builder()\n .configId(\"bbs-config\")\n .location(\"us-central1\")\n .hostUri(\"https://bbs.com\")\n .secrets(BitbucketServerConfigSecretsArgs.builder()\n .adminAccessTokenVersionName(\"projects/myProject/secrets/mybbspat/versions/1\")\n .readAccessTokenVersionName(\"projects/myProject/secrets/mybbspat/versions/1\")\n .webhookSecretVersionName(\"projects/myProject/secrets/mybbspat/versions/1\")\n .build())\n .username(\"test\")\n .apiKey(\"\u003capi-key\u003e\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bbs-config:\n type: gcp:cloudbuild:BitbucketServerConfig\n properties:\n configId: bbs-config\n location: us-central1\n hostUri: https://bbs.com\n secrets:\n adminAccessTokenVersionName: projects/myProject/secrets/mybbspat/versions/1\n readAccessTokenVersionName: projects/myProject/secrets/mybbspat/versions/1\n webhookSecretVersionName: projects/myProject/secrets/mybbspat/versions/1\n username: test\n apiKey: \u003capi-key\u003e\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Bitbucket Server Config Repositories\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bbs_config_with_repos = new gcp.cloudbuild.BitbucketServerConfig(\"bbs-config-with-repos\", {\n configId: \"bbs-config\",\n location: \"us-central1\",\n hostUri: \"https://bbs.com\",\n secrets: {\n adminAccessTokenVersionName: \"projects/myProject/secrets/mybbspat/versions/1\",\n readAccessTokenVersionName: \"projects/myProject/secrets/mybbspat/versions/1\",\n webhookSecretVersionName: \"projects/myProject/secrets/mybbspat/versions/1\",\n },\n username: \"test\",\n apiKey: \"\u003capi-key\u003e\",\n connectedRepositories: [\n {\n projectKey: \"DEV\",\n repoSlug: \"repo1\",\n },\n {\n projectKey: \"PROD\",\n repoSlug: \"repo1\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbbs_config_with_repos = gcp.cloudbuild.BitbucketServerConfig(\"bbs-config-with-repos\",\n config_id=\"bbs-config\",\n location=\"us-central1\",\n host_uri=\"https://bbs.com\",\n secrets={\n \"admin_access_token_version_name\": \"projects/myProject/secrets/mybbspat/versions/1\",\n \"read_access_token_version_name\": \"projects/myProject/secrets/mybbspat/versions/1\",\n \"webhook_secret_version_name\": \"projects/myProject/secrets/mybbspat/versions/1\",\n },\n username=\"test\",\n api_key=\"\u003capi-key\u003e\",\n connected_repositories=[\n {\n \"project_key\": \"DEV\",\n \"repo_slug\": \"repo1\",\n },\n {\n \"project_key\": \"PROD\",\n \"repo_slug\": \"repo1\",\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bbs_config_with_repos = new Gcp.CloudBuild.BitbucketServerConfig(\"bbs-config-with-repos\", new()\n {\n ConfigId = \"bbs-config\",\n Location = \"us-central1\",\n HostUri = \"https://bbs.com\",\n Secrets = new Gcp.CloudBuild.Inputs.BitbucketServerConfigSecretsArgs\n {\n AdminAccessTokenVersionName = \"projects/myProject/secrets/mybbspat/versions/1\",\n ReadAccessTokenVersionName = \"projects/myProject/secrets/mybbspat/versions/1\",\n WebhookSecretVersionName = \"projects/myProject/secrets/mybbspat/versions/1\",\n },\n Username = \"test\",\n ApiKey = \"\u003capi-key\u003e\",\n ConnectedRepositories = new[]\n {\n new Gcp.CloudBuild.Inputs.BitbucketServerConfigConnectedRepositoryArgs\n {\n ProjectKey = \"DEV\",\n RepoSlug = \"repo1\",\n },\n new Gcp.CloudBuild.Inputs.BitbucketServerConfigConnectedRepositoryArgs\n {\n ProjectKey = \"PROD\",\n RepoSlug = \"repo1\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuild.NewBitbucketServerConfig(ctx, \"bbs-config-with-repos\", \u0026cloudbuild.BitbucketServerConfigArgs{\n\t\t\tConfigId: pulumi.String(\"bbs-config\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHostUri: pulumi.String(\"https://bbs.com\"),\n\t\t\tSecrets: \u0026cloudbuild.BitbucketServerConfigSecretsArgs{\n\t\t\t\tAdminAccessTokenVersionName: pulumi.String(\"projects/myProject/secrets/mybbspat/versions/1\"),\n\t\t\t\tReadAccessTokenVersionName: pulumi.String(\"projects/myProject/secrets/mybbspat/versions/1\"),\n\t\t\t\tWebhookSecretVersionName: pulumi.String(\"projects/myProject/secrets/mybbspat/versions/1\"),\n\t\t\t},\n\t\t\tUsername: pulumi.String(\"test\"),\n\t\t\tApiKey: pulumi.String(\"\u003capi-key\u003e\"),\n\t\t\tConnectedRepositories: cloudbuild.BitbucketServerConfigConnectedRepositoryArray{\n\t\t\t\t\u0026cloudbuild.BitbucketServerConfigConnectedRepositoryArgs{\n\t\t\t\t\tProjectKey: pulumi.String(\"DEV\"),\n\t\t\t\t\tRepoSlug: pulumi.String(\"repo1\"),\n\t\t\t\t},\n\t\t\t\t\u0026cloudbuild.BitbucketServerConfigConnectedRepositoryArgs{\n\t\t\t\t\tProjectKey: pulumi.String(\"PROD\"),\n\t\t\t\t\tRepoSlug: pulumi.String(\"repo1\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuild.BitbucketServerConfig;\nimport com.pulumi.gcp.cloudbuild.BitbucketServerConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.BitbucketServerConfigSecretsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.BitbucketServerConfigConnectedRepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bbs_config_with_repos = new BitbucketServerConfig(\"bbs-config-with-repos\", BitbucketServerConfigArgs.builder()\n .configId(\"bbs-config\")\n .location(\"us-central1\")\n .hostUri(\"https://bbs.com\")\n .secrets(BitbucketServerConfigSecretsArgs.builder()\n .adminAccessTokenVersionName(\"projects/myProject/secrets/mybbspat/versions/1\")\n .readAccessTokenVersionName(\"projects/myProject/secrets/mybbspat/versions/1\")\n .webhookSecretVersionName(\"projects/myProject/secrets/mybbspat/versions/1\")\n .build())\n .username(\"test\")\n .apiKey(\"\u003capi-key\u003e\")\n .connectedRepositories( \n BitbucketServerConfigConnectedRepositoryArgs.builder()\n .projectKey(\"DEV\")\n .repoSlug(\"repo1\")\n .build(),\n BitbucketServerConfigConnectedRepositoryArgs.builder()\n .projectKey(\"PROD\")\n .repoSlug(\"repo1\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bbs-config-with-repos:\n type: gcp:cloudbuild:BitbucketServerConfig\n properties:\n configId: bbs-config\n location: us-central1\n hostUri: https://bbs.com\n secrets:\n adminAccessTokenVersionName: projects/myProject/secrets/mybbspat/versions/1\n readAccessTokenVersionName: projects/myProject/secrets/mybbspat/versions/1\n webhookSecretVersionName: projects/myProject/secrets/mybbspat/versions/1\n username: test\n apiKey: \u003capi-key\u003e\n connectedRepositories:\n - projectKey: DEV\n repoSlug: repo1\n - projectKey: PROD\n repoSlug: repo1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Bitbucket Server Config Peered Network\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst project = gcp.organizations.getProject({});\nconst servicenetworking = new gcp.projects.Service(\"servicenetworking\", {\n service: \"servicenetworking.googleapis.com\",\n disableOnDestroy: false,\n});\nconst vpcNetwork = new gcp.compute.Network(\"vpc_network\", {name: \"vpc-network\"}, {\n dependsOn: [servicenetworking],\n});\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"private-ip-alloc\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: vpcNetwork.id,\n});\nconst _default = new gcp.servicenetworking.Connection(\"default\", {\n network: vpcNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAlloc.name],\n}, {\n dependsOn: [servicenetworking],\n});\nconst bbs_config_with_peered_network = new gcp.cloudbuild.BitbucketServerConfig(\"bbs-config-with-peered-network\", {\n configId: \"bbs-config\",\n location: \"us-central1\",\n hostUri: \"https://bbs.com\",\n secrets: {\n adminAccessTokenVersionName: \"projects/myProject/secrets/mybbspat/versions/1\",\n readAccessTokenVersionName: \"projects/myProject/secrets/mybbspat/versions/1\",\n webhookSecretVersionName: \"projects/myProject/secrets/mybbspat/versions/1\",\n },\n username: \"test\",\n apiKey: \"\u003capi-key\u003e\",\n peeredNetwork: pulumi.all([vpcNetwork.id, project, project]).apply(([id, project, project1]) =\u003e std.replaceOutput({\n text: id,\n search: project.name,\n replace: project1.number,\n })).apply(invoke =\u003e invoke.result),\n sslCa: `-----BEGIN CERTIFICATE-----\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\n-----END CERTIFICATE-----\n`,\n}, {\n dependsOn: [_default],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nproject = gcp.organizations.get_project()\nservicenetworking = gcp.projects.Service(\"servicenetworking\",\n service=\"servicenetworking.googleapis.com\",\n disable_on_destroy=False)\nvpc_network = gcp.compute.Network(\"vpc_network\", name=\"vpc-network\",\nopts = pulumi.ResourceOptions(depends_on=[servicenetworking]))\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"private-ip-alloc\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=vpc_network.id)\ndefault = gcp.servicenetworking.Connection(\"default\",\n network=vpc_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_alloc.name],\n opts = pulumi.ResourceOptions(depends_on=[servicenetworking]))\nbbs_config_with_peered_network = gcp.cloudbuild.BitbucketServerConfig(\"bbs-config-with-peered-network\",\n config_id=\"bbs-config\",\n location=\"us-central1\",\n host_uri=\"https://bbs.com\",\n secrets={\n \"admin_access_token_version_name\": \"projects/myProject/secrets/mybbspat/versions/1\",\n \"read_access_token_version_name\": \"projects/myProject/secrets/mybbspat/versions/1\",\n \"webhook_secret_version_name\": \"projects/myProject/secrets/mybbspat/versions/1\",\n },\n username=\"test\",\n api_key=\"\u003capi-key\u003e\",\n peered_network=vpc_network.id.apply(lambda id: std.replace_output(text=id,\n search=project.name,\n replace=project.number)).apply(lambda invoke: invoke.result),\n ssl_ca=\"\"\"-----BEGIN CERTIFICATE-----\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\n-----END CERTIFICATE-----\n\"\"\",\n opts = pulumi.ResourceOptions(depends_on=[default]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var servicenetworking = new Gcp.Projects.Service(\"servicenetworking\", new()\n {\n ServiceName = \"servicenetworking.googleapis.com\",\n DisableOnDestroy = false,\n });\n\n var vpcNetwork = new Gcp.Compute.Network(\"vpc_network\", new()\n {\n Name = \"vpc-network\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n servicenetworking,\n },\n });\n\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"private-ip-alloc\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = vpcNetwork.Id,\n });\n\n var @default = new Gcp.ServiceNetworking.Connection(\"default\", new()\n {\n Network = vpcNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAlloc.Name,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n servicenetworking,\n },\n });\n\n var bbs_config_with_peered_network = new Gcp.CloudBuild.BitbucketServerConfig(\"bbs-config-with-peered-network\", new()\n {\n ConfigId = \"bbs-config\",\n Location = \"us-central1\",\n HostUri = \"https://bbs.com\",\n Secrets = new Gcp.CloudBuild.Inputs.BitbucketServerConfigSecretsArgs\n {\n AdminAccessTokenVersionName = \"projects/myProject/secrets/mybbspat/versions/1\",\n ReadAccessTokenVersionName = \"projects/myProject/secrets/mybbspat/versions/1\",\n WebhookSecretVersionName = \"projects/myProject/secrets/mybbspat/versions/1\",\n },\n Username = \"test\",\n ApiKey = \"\u003capi-key\u003e\",\n PeeredNetwork = Output.Tuple(vpcNetwork.Id, project, project).Apply(values =\u003e\n {\n var id = values.Item1;\n var project = values.Item2;\n var project1 = values.Item3;\n return Std.Replace.Invoke(new()\n {\n Text = id,\n Search = project.Apply(getProjectResult =\u003e getProjectResult.Name),\n Replace = project1.Number,\n });\n }).Apply(invoke =\u003e invoke.Result),\n SslCa = @\"-----BEGIN CERTIFICATE-----\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\n-----END CERTIFICATE-----\n\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @default,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tservicenetworking, err := projects.NewService(ctx, \"servicenetworking\", \u0026projects.ServiceArgs{\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tDisableOnDestroy: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvpcNetwork, err := compute.NewNetwork(ctx, \"vpc_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"vpc-network\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tservicenetworking,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"private-ip-alloc\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: vpcNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = servicenetworking.NewConnection(ctx, \"default\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: vpcNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tprivateIpAlloc.Name,\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tservicenetworking,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuild.NewBitbucketServerConfig(ctx, \"bbs-config-with-peered-network\", \u0026cloudbuild.BitbucketServerConfigArgs{\n\t\t\tConfigId: pulumi.String(\"bbs-config\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHostUri: pulumi.String(\"https://bbs.com\"),\n\t\t\tSecrets: \u0026cloudbuild.BitbucketServerConfigSecretsArgs{\n\t\t\t\tAdminAccessTokenVersionName: pulumi.String(\"projects/myProject/secrets/mybbspat/versions/1\"),\n\t\t\t\tReadAccessTokenVersionName: pulumi.String(\"projects/myProject/secrets/mybbspat/versions/1\"),\n\t\t\t\tWebhookSecretVersionName: pulumi.String(\"projects/myProject/secrets/mybbspat/versions/1\"),\n\t\t\t},\n\t\t\tUsername: pulumi.String(\"test\"),\n\t\t\tApiKey: pulumi.String(\"\u003capi-key\u003e\"),\n\t\t\tPeeredNetwork: pulumi.String(vpcNetwork.ID().ApplyT(func(id string) (std.ReplaceResult, error) {\n\t\t\t\treturn std.ReplaceResult(interface{}(std.ReplaceOutput(ctx, std.ReplaceOutputArgs{\n\t\t\t\t\tText: id,\n\t\t\t\t\tSearch: project.Name,\n\t\t\t\t\tReplace: project.Number,\n\t\t\t\t}, nil))), nil\n\t\t\t}).(std.ReplaceResultOutput).ApplyT(func(invoke std.ReplaceResult) (*string, error) {\n\t\t\t\treturn invoke.Result, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tSslCa: pulumi.String(\"-----BEGIN CERTIFICATE-----\\n-----END CERTIFICATE-----\\n-----BEGIN CERTIFICATE-----\\n-----END CERTIFICATE-----\\n\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\t_default,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.projects.Service;\nimport com.pulumi.gcp.projects.ServiceArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.cloudbuild.BitbucketServerConfig;\nimport com.pulumi.gcp.cloudbuild.BitbucketServerConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.BitbucketServerConfigSecretsArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var servicenetworking = new Service(\"servicenetworking\", ServiceArgs.builder()\n .service(\"servicenetworking.googleapis.com\")\n .disableOnDestroy(false)\n .build());\n\n var vpcNetwork = new Network(\"vpcNetwork\", NetworkArgs.builder()\n .name(\"vpc-network\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(servicenetworking)\n .build());\n\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"private-ip-alloc\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(vpcNetwork.id())\n .build());\n\n var default_ = new Connection(\"default\", ConnectionArgs.builder()\n .network(vpcNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAlloc.name())\n .build(), CustomResourceOptions.builder()\n .dependsOn(servicenetworking)\n .build());\n\n var bbs_config_with_peered_network = new BitbucketServerConfig(\"bbs-config-with-peered-network\", BitbucketServerConfigArgs.builder()\n .configId(\"bbs-config\")\n .location(\"us-central1\")\n .hostUri(\"https://bbs.com\")\n .secrets(BitbucketServerConfigSecretsArgs.builder()\n .adminAccessTokenVersionName(\"projects/myProject/secrets/mybbspat/versions/1\")\n .readAccessTokenVersionName(\"projects/myProject/secrets/mybbspat/versions/1\")\n .webhookSecretVersionName(\"projects/myProject/secrets/mybbspat/versions/1\")\n .build())\n .username(\"test\")\n .apiKey(\"\u003capi-key\u003e\")\n .peeredNetwork(vpcNetwork.id().applyValue(id -\u003e StdFunctions.replace()).applyValue(invoke -\u003e invoke.result()))\n .sslCa(\"\"\"\n-----BEGIN CERTIFICATE-----\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\n-----END CERTIFICATE-----\n \"\"\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n servicenetworking:\n type: gcp:projects:Service\n properties:\n service: servicenetworking.googleapis.com\n disableOnDestroy: false\n vpcNetwork:\n type: gcp:compute:Network\n name: vpc_network\n properties:\n name: vpc-network\n options:\n dependson:\n - ${servicenetworking}\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: private-ip-alloc\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${vpcNetwork.id}\n default:\n type: gcp:servicenetworking:Connection\n properties:\n network: ${vpcNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAlloc.name}\n options:\n dependson:\n - ${servicenetworking}\n bbs-config-with-peered-network:\n type: gcp:cloudbuild:BitbucketServerConfig\n properties:\n configId: bbs-config\n location: us-central1\n hostUri: https://bbs.com\n secrets:\n adminAccessTokenVersionName: projects/myProject/secrets/mybbspat/versions/1\n readAccessTokenVersionName: projects/myProject/secrets/mybbspat/versions/1\n webhookSecretVersionName: projects/myProject/secrets/mybbspat/versions/1\n username: test\n apiKey: \u003capi-key\u003e\n peeredNetwork:\n fn::invoke:\n Function: std:replace\n Arguments:\n text: ${vpcNetwork.id}\n search: ${project.name}\n replace: ${project.number}\n Return: result\n sslCa: |\n -----BEGIN CERTIFICATE-----\n -----END CERTIFICATE-----\n -----BEGIN CERTIFICATE-----\n -----END CERTIFICATE-----\n options:\n dependson:\n - ${default}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBitbucketServerConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/bitbucketServerConfigs/{{config_id}}`\n\n* `{{project}}/{{location}}/{{config_id}}`\n\n* `{{location}}/{{config_id}}`\n\nWhen using the `pulumi import` command, BitbucketServerConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudbuild/bitbucketServerConfig:BitbucketServerConfig default projects/{{project}}/locations/{{location}}/bitbucketServerConfigs/{{config_id}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuild/bitbucketServerConfig:BitbucketServerConfig default {{project}}/{{location}}/{{config_id}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuild/bitbucketServerConfig:BitbucketServerConfig default {{location}}/{{config_id}}\n```\n\n", + "description": "BitbucketServerConfig represents the configuration for a Bitbucket Server.\n\n\nTo get more information about BitbucketServerConfig, see:\n\n* [API documentation](https://cloud.google.com/build/docs/api/reference/rest/v1/projects.locations.bitbucketServerConfigs)\n* How-to Guides\n * [Connect to a Bitbucket Server host](https://cloud.google.com/build/docs/automating-builds/bitbucket/connect-host-bitbucket-server)\n\n## Example Usage\n\n### Cloudbuild Bitbucket Server Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bbs_config = new gcp.cloudbuild.BitbucketServerConfig(\"bbs-config\", {\n configId: \"bbs-config\",\n location: \"us-central1\",\n hostUri: \"https://bbs.com\",\n secrets: {\n adminAccessTokenVersionName: \"projects/myProject/secrets/mybbspat/versions/1\",\n readAccessTokenVersionName: \"projects/myProject/secrets/mybbspat/versions/1\",\n webhookSecretVersionName: \"projects/myProject/secrets/mybbspat/versions/1\",\n },\n username: \"test\",\n apiKey: \"\u003capi-key\u003e\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbbs_config = gcp.cloudbuild.BitbucketServerConfig(\"bbs-config\",\n config_id=\"bbs-config\",\n location=\"us-central1\",\n host_uri=\"https://bbs.com\",\n secrets={\n \"admin_access_token_version_name\": \"projects/myProject/secrets/mybbspat/versions/1\",\n \"read_access_token_version_name\": \"projects/myProject/secrets/mybbspat/versions/1\",\n \"webhook_secret_version_name\": \"projects/myProject/secrets/mybbspat/versions/1\",\n },\n username=\"test\",\n api_key=\"\u003capi-key\u003e\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bbs_config = new Gcp.CloudBuild.BitbucketServerConfig(\"bbs-config\", new()\n {\n ConfigId = \"bbs-config\",\n Location = \"us-central1\",\n HostUri = \"https://bbs.com\",\n Secrets = new Gcp.CloudBuild.Inputs.BitbucketServerConfigSecretsArgs\n {\n AdminAccessTokenVersionName = \"projects/myProject/secrets/mybbspat/versions/1\",\n ReadAccessTokenVersionName = \"projects/myProject/secrets/mybbspat/versions/1\",\n WebhookSecretVersionName = \"projects/myProject/secrets/mybbspat/versions/1\",\n },\n Username = \"test\",\n ApiKey = \"\u003capi-key\u003e\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuild.NewBitbucketServerConfig(ctx, \"bbs-config\", \u0026cloudbuild.BitbucketServerConfigArgs{\n\t\t\tConfigId: pulumi.String(\"bbs-config\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHostUri: pulumi.String(\"https://bbs.com\"),\n\t\t\tSecrets: \u0026cloudbuild.BitbucketServerConfigSecretsArgs{\n\t\t\t\tAdminAccessTokenVersionName: pulumi.String(\"projects/myProject/secrets/mybbspat/versions/1\"),\n\t\t\t\tReadAccessTokenVersionName: pulumi.String(\"projects/myProject/secrets/mybbspat/versions/1\"),\n\t\t\t\tWebhookSecretVersionName: pulumi.String(\"projects/myProject/secrets/mybbspat/versions/1\"),\n\t\t\t},\n\t\t\tUsername: pulumi.String(\"test\"),\n\t\t\tApiKey: pulumi.String(\"\u003capi-key\u003e\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuild.BitbucketServerConfig;\nimport com.pulumi.gcp.cloudbuild.BitbucketServerConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.BitbucketServerConfigSecretsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bbs_config = new BitbucketServerConfig(\"bbs-config\", BitbucketServerConfigArgs.builder()\n .configId(\"bbs-config\")\n .location(\"us-central1\")\n .hostUri(\"https://bbs.com\")\n .secrets(BitbucketServerConfigSecretsArgs.builder()\n .adminAccessTokenVersionName(\"projects/myProject/secrets/mybbspat/versions/1\")\n .readAccessTokenVersionName(\"projects/myProject/secrets/mybbspat/versions/1\")\n .webhookSecretVersionName(\"projects/myProject/secrets/mybbspat/versions/1\")\n .build())\n .username(\"test\")\n .apiKey(\"\u003capi-key\u003e\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bbs-config:\n type: gcp:cloudbuild:BitbucketServerConfig\n properties:\n configId: bbs-config\n location: us-central1\n hostUri: https://bbs.com\n secrets:\n adminAccessTokenVersionName: projects/myProject/secrets/mybbspat/versions/1\n readAccessTokenVersionName: projects/myProject/secrets/mybbspat/versions/1\n webhookSecretVersionName: projects/myProject/secrets/mybbspat/versions/1\n username: test\n apiKey: \u003capi-key\u003e\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Bitbucket Server Config Repositories\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bbs_config_with_repos = new gcp.cloudbuild.BitbucketServerConfig(\"bbs-config-with-repos\", {\n configId: \"bbs-config\",\n location: \"us-central1\",\n hostUri: \"https://bbs.com\",\n secrets: {\n adminAccessTokenVersionName: \"projects/myProject/secrets/mybbspat/versions/1\",\n readAccessTokenVersionName: \"projects/myProject/secrets/mybbspat/versions/1\",\n webhookSecretVersionName: \"projects/myProject/secrets/mybbspat/versions/1\",\n },\n username: \"test\",\n apiKey: \"\u003capi-key\u003e\",\n connectedRepositories: [\n {\n projectKey: \"DEV\",\n repoSlug: \"repo1\",\n },\n {\n projectKey: \"PROD\",\n repoSlug: \"repo1\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbbs_config_with_repos = gcp.cloudbuild.BitbucketServerConfig(\"bbs-config-with-repos\",\n config_id=\"bbs-config\",\n location=\"us-central1\",\n host_uri=\"https://bbs.com\",\n secrets={\n \"admin_access_token_version_name\": \"projects/myProject/secrets/mybbspat/versions/1\",\n \"read_access_token_version_name\": \"projects/myProject/secrets/mybbspat/versions/1\",\n \"webhook_secret_version_name\": \"projects/myProject/secrets/mybbspat/versions/1\",\n },\n username=\"test\",\n api_key=\"\u003capi-key\u003e\",\n connected_repositories=[\n {\n \"project_key\": \"DEV\",\n \"repo_slug\": \"repo1\",\n },\n {\n \"project_key\": \"PROD\",\n \"repo_slug\": \"repo1\",\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bbs_config_with_repos = new Gcp.CloudBuild.BitbucketServerConfig(\"bbs-config-with-repos\", new()\n {\n ConfigId = \"bbs-config\",\n Location = \"us-central1\",\n HostUri = \"https://bbs.com\",\n Secrets = new Gcp.CloudBuild.Inputs.BitbucketServerConfigSecretsArgs\n {\n AdminAccessTokenVersionName = \"projects/myProject/secrets/mybbspat/versions/1\",\n ReadAccessTokenVersionName = \"projects/myProject/secrets/mybbspat/versions/1\",\n WebhookSecretVersionName = \"projects/myProject/secrets/mybbspat/versions/1\",\n },\n Username = \"test\",\n ApiKey = \"\u003capi-key\u003e\",\n ConnectedRepositories = new[]\n {\n new Gcp.CloudBuild.Inputs.BitbucketServerConfigConnectedRepositoryArgs\n {\n ProjectKey = \"DEV\",\n RepoSlug = \"repo1\",\n },\n new Gcp.CloudBuild.Inputs.BitbucketServerConfigConnectedRepositoryArgs\n {\n ProjectKey = \"PROD\",\n RepoSlug = \"repo1\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuild.NewBitbucketServerConfig(ctx, \"bbs-config-with-repos\", \u0026cloudbuild.BitbucketServerConfigArgs{\n\t\t\tConfigId: pulumi.String(\"bbs-config\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHostUri: pulumi.String(\"https://bbs.com\"),\n\t\t\tSecrets: \u0026cloudbuild.BitbucketServerConfigSecretsArgs{\n\t\t\t\tAdminAccessTokenVersionName: pulumi.String(\"projects/myProject/secrets/mybbspat/versions/1\"),\n\t\t\t\tReadAccessTokenVersionName: pulumi.String(\"projects/myProject/secrets/mybbspat/versions/1\"),\n\t\t\t\tWebhookSecretVersionName: pulumi.String(\"projects/myProject/secrets/mybbspat/versions/1\"),\n\t\t\t},\n\t\t\tUsername: pulumi.String(\"test\"),\n\t\t\tApiKey: pulumi.String(\"\u003capi-key\u003e\"),\n\t\t\tConnectedRepositories: cloudbuild.BitbucketServerConfigConnectedRepositoryArray{\n\t\t\t\t\u0026cloudbuild.BitbucketServerConfigConnectedRepositoryArgs{\n\t\t\t\t\tProjectKey: pulumi.String(\"DEV\"),\n\t\t\t\t\tRepoSlug: pulumi.String(\"repo1\"),\n\t\t\t\t},\n\t\t\t\t\u0026cloudbuild.BitbucketServerConfigConnectedRepositoryArgs{\n\t\t\t\t\tProjectKey: pulumi.String(\"PROD\"),\n\t\t\t\t\tRepoSlug: pulumi.String(\"repo1\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuild.BitbucketServerConfig;\nimport com.pulumi.gcp.cloudbuild.BitbucketServerConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.BitbucketServerConfigSecretsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.BitbucketServerConfigConnectedRepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bbs_config_with_repos = new BitbucketServerConfig(\"bbs-config-with-repos\", BitbucketServerConfigArgs.builder()\n .configId(\"bbs-config\")\n .location(\"us-central1\")\n .hostUri(\"https://bbs.com\")\n .secrets(BitbucketServerConfigSecretsArgs.builder()\n .adminAccessTokenVersionName(\"projects/myProject/secrets/mybbspat/versions/1\")\n .readAccessTokenVersionName(\"projects/myProject/secrets/mybbspat/versions/1\")\n .webhookSecretVersionName(\"projects/myProject/secrets/mybbspat/versions/1\")\n .build())\n .username(\"test\")\n .apiKey(\"\u003capi-key\u003e\")\n .connectedRepositories( \n BitbucketServerConfigConnectedRepositoryArgs.builder()\n .projectKey(\"DEV\")\n .repoSlug(\"repo1\")\n .build(),\n BitbucketServerConfigConnectedRepositoryArgs.builder()\n .projectKey(\"PROD\")\n .repoSlug(\"repo1\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bbs-config-with-repos:\n type: gcp:cloudbuild:BitbucketServerConfig\n properties:\n configId: bbs-config\n location: us-central1\n hostUri: https://bbs.com\n secrets:\n adminAccessTokenVersionName: projects/myProject/secrets/mybbspat/versions/1\n readAccessTokenVersionName: projects/myProject/secrets/mybbspat/versions/1\n webhookSecretVersionName: projects/myProject/secrets/mybbspat/versions/1\n username: test\n apiKey: \u003capi-key\u003e\n connectedRepositories:\n - projectKey: DEV\n repoSlug: repo1\n - projectKey: PROD\n repoSlug: repo1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Bitbucket Server Config Peered Network\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst project = gcp.organizations.getProject({});\nconst servicenetworking = new gcp.projects.Service(\"servicenetworking\", {\n service: \"servicenetworking.googleapis.com\",\n disableOnDestroy: false,\n});\nconst vpcNetwork = new gcp.compute.Network(\"vpc_network\", {name: \"vpc-network\"}, {\n dependsOn: [servicenetworking],\n});\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"private-ip-alloc\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: vpcNetwork.id,\n});\nconst _default = new gcp.servicenetworking.Connection(\"default\", {\n network: vpcNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAlloc.name],\n}, {\n dependsOn: [servicenetworking],\n});\nconst bbs_config_with_peered_network = new gcp.cloudbuild.BitbucketServerConfig(\"bbs-config-with-peered-network\", {\n configId: \"bbs-config\",\n location: \"us-central1\",\n hostUri: \"https://bbs.com\",\n secrets: {\n adminAccessTokenVersionName: \"projects/myProject/secrets/mybbspat/versions/1\",\n readAccessTokenVersionName: \"projects/myProject/secrets/mybbspat/versions/1\",\n webhookSecretVersionName: \"projects/myProject/secrets/mybbspat/versions/1\",\n },\n username: \"test\",\n apiKey: \"\u003capi-key\u003e\",\n peeredNetwork: pulumi.all([vpcNetwork.id, project, project]).apply(([id, project, project1]) =\u003e std.replaceOutput({\n text: id,\n search: project.name,\n replace: project1.number,\n })).apply(invoke =\u003e invoke.result),\n sslCa: `-----BEGIN CERTIFICATE-----\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\n-----END CERTIFICATE-----\n`,\n}, {\n dependsOn: [_default],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nproject = gcp.organizations.get_project()\nservicenetworking = gcp.projects.Service(\"servicenetworking\",\n service=\"servicenetworking.googleapis.com\",\n disable_on_destroy=False)\nvpc_network = gcp.compute.Network(\"vpc_network\", name=\"vpc-network\",\nopts = pulumi.ResourceOptions(depends_on=[servicenetworking]))\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"private-ip-alloc\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=vpc_network.id)\ndefault = gcp.servicenetworking.Connection(\"default\",\n network=vpc_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_alloc.name],\n opts = pulumi.ResourceOptions(depends_on=[servicenetworking]))\nbbs_config_with_peered_network = gcp.cloudbuild.BitbucketServerConfig(\"bbs-config-with-peered-network\",\n config_id=\"bbs-config\",\n location=\"us-central1\",\n host_uri=\"https://bbs.com\",\n secrets={\n \"admin_access_token_version_name\": \"projects/myProject/secrets/mybbspat/versions/1\",\n \"read_access_token_version_name\": \"projects/myProject/secrets/mybbspat/versions/1\",\n \"webhook_secret_version_name\": \"projects/myProject/secrets/mybbspat/versions/1\",\n },\n username=\"test\",\n api_key=\"\u003capi-key\u003e\",\n peered_network=vpc_network.id.apply(lambda id: std.replace_output(text=id,\n search=project.name,\n replace=project.number)).apply(lambda invoke: invoke.result),\n ssl_ca=\"\"\"-----BEGIN CERTIFICATE-----\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\n-----END CERTIFICATE-----\n\"\"\",\n opts = pulumi.ResourceOptions(depends_on=[default]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var servicenetworking = new Gcp.Projects.Service(\"servicenetworking\", new()\n {\n ServiceName = \"servicenetworking.googleapis.com\",\n DisableOnDestroy = false,\n });\n\n var vpcNetwork = new Gcp.Compute.Network(\"vpc_network\", new()\n {\n Name = \"vpc-network\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n servicenetworking,\n },\n });\n\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"private-ip-alloc\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = vpcNetwork.Id,\n });\n\n var @default = new Gcp.ServiceNetworking.Connection(\"default\", new()\n {\n Network = vpcNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAlloc.Name,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n servicenetworking,\n },\n });\n\n var bbs_config_with_peered_network = new Gcp.CloudBuild.BitbucketServerConfig(\"bbs-config-with-peered-network\", new()\n {\n ConfigId = \"bbs-config\",\n Location = \"us-central1\",\n HostUri = \"https://bbs.com\",\n Secrets = new Gcp.CloudBuild.Inputs.BitbucketServerConfigSecretsArgs\n {\n AdminAccessTokenVersionName = \"projects/myProject/secrets/mybbspat/versions/1\",\n ReadAccessTokenVersionName = \"projects/myProject/secrets/mybbspat/versions/1\",\n WebhookSecretVersionName = \"projects/myProject/secrets/mybbspat/versions/1\",\n },\n Username = \"test\",\n ApiKey = \"\u003capi-key\u003e\",\n PeeredNetwork = Output.Tuple(vpcNetwork.Id, project, project).Apply(values =\u003e\n {\n var id = values.Item1;\n var project = values.Item2;\n var project1 = values.Item3;\n return Std.Replace.Invoke(new()\n {\n Text = id,\n Search = project.Apply(getProjectResult =\u003e getProjectResult.Name),\n Replace = project1.Number,\n });\n }).Apply(invoke =\u003e invoke.Result),\n SslCa = @\"-----BEGIN CERTIFICATE-----\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\n-----END CERTIFICATE-----\n\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @default,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tservicenetworking, err := projects.NewService(ctx, \"servicenetworking\", \u0026projects.ServiceArgs{\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tDisableOnDestroy: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvpcNetwork, err := compute.NewNetwork(ctx, \"vpc_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"vpc-network\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tservicenetworking,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"private-ip-alloc\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: vpcNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = servicenetworking.NewConnection(ctx, \"default\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: vpcNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tprivateIpAlloc.Name,\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tservicenetworking,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuild.NewBitbucketServerConfig(ctx, \"bbs-config-with-peered-network\", \u0026cloudbuild.BitbucketServerConfigArgs{\n\t\t\tConfigId: pulumi.String(\"bbs-config\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHostUri: pulumi.String(\"https://bbs.com\"),\n\t\t\tSecrets: \u0026cloudbuild.BitbucketServerConfigSecretsArgs{\n\t\t\t\tAdminAccessTokenVersionName: pulumi.String(\"projects/myProject/secrets/mybbspat/versions/1\"),\n\t\t\t\tReadAccessTokenVersionName: pulumi.String(\"projects/myProject/secrets/mybbspat/versions/1\"),\n\t\t\t\tWebhookSecretVersionName: pulumi.String(\"projects/myProject/secrets/mybbspat/versions/1\"),\n\t\t\t},\n\t\t\tUsername: pulumi.String(\"test\"),\n\t\t\tApiKey: pulumi.String(\"\u003capi-key\u003e\"),\n\t\t\tPeeredNetwork: pulumi.String(vpcNetwork.ID().ApplyT(func(id string) (std.ReplaceResult, error) {\n\t\t\t\treturn std.ReplaceResult(interface{}(std.ReplaceOutput(ctx, std.ReplaceOutputArgs{\n\t\t\t\t\tText: id,\n\t\t\t\t\tSearch: project.Name,\n\t\t\t\t\tReplace: project.Number,\n\t\t\t\t}, nil))), nil\n\t\t\t}).(std.ReplaceResultOutput).ApplyT(func(invoke std.ReplaceResult) (*string, error) {\n\t\t\t\treturn invoke.Result, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tSslCa: pulumi.String(\"-----BEGIN CERTIFICATE-----\\n-----END CERTIFICATE-----\\n-----BEGIN CERTIFICATE-----\\n-----END CERTIFICATE-----\\n\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\t_default,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.projects.Service;\nimport com.pulumi.gcp.projects.ServiceArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.cloudbuild.BitbucketServerConfig;\nimport com.pulumi.gcp.cloudbuild.BitbucketServerConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.BitbucketServerConfigSecretsArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var servicenetworking = new Service(\"servicenetworking\", ServiceArgs.builder()\n .service(\"servicenetworking.googleapis.com\")\n .disableOnDestroy(false)\n .build());\n\n var vpcNetwork = new Network(\"vpcNetwork\", NetworkArgs.builder()\n .name(\"vpc-network\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(servicenetworking)\n .build());\n\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"private-ip-alloc\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(vpcNetwork.id())\n .build());\n\n var default_ = new Connection(\"default\", ConnectionArgs.builder()\n .network(vpcNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAlloc.name())\n .build(), CustomResourceOptions.builder()\n .dependsOn(servicenetworking)\n .build());\n\n var bbs_config_with_peered_network = new BitbucketServerConfig(\"bbs-config-with-peered-network\", BitbucketServerConfigArgs.builder()\n .configId(\"bbs-config\")\n .location(\"us-central1\")\n .hostUri(\"https://bbs.com\")\n .secrets(BitbucketServerConfigSecretsArgs.builder()\n .adminAccessTokenVersionName(\"projects/myProject/secrets/mybbspat/versions/1\")\n .readAccessTokenVersionName(\"projects/myProject/secrets/mybbspat/versions/1\")\n .webhookSecretVersionName(\"projects/myProject/secrets/mybbspat/versions/1\")\n .build())\n .username(\"test\")\n .apiKey(\"\u003capi-key\u003e\")\n .peeredNetwork(vpcNetwork.id().applyValue(id -\u003e StdFunctions.replace()).applyValue(invoke -\u003e invoke.result()))\n .sslCa(\"\"\"\n-----BEGIN CERTIFICATE-----\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\n-----END CERTIFICATE-----\n \"\"\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n servicenetworking:\n type: gcp:projects:Service\n properties:\n service: servicenetworking.googleapis.com\n disableOnDestroy: false\n vpcNetwork:\n type: gcp:compute:Network\n name: vpc_network\n properties:\n name: vpc-network\n options:\n dependson:\n - ${servicenetworking}\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: private-ip-alloc\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${vpcNetwork.id}\n default:\n type: gcp:servicenetworking:Connection\n properties:\n network: ${vpcNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAlloc.name}\n options:\n dependson:\n - ${servicenetworking}\n bbs-config-with-peered-network:\n type: gcp:cloudbuild:BitbucketServerConfig\n properties:\n configId: bbs-config\n location: us-central1\n hostUri: https://bbs.com\n secrets:\n adminAccessTokenVersionName: projects/myProject/secrets/mybbspat/versions/1\n readAccessTokenVersionName: projects/myProject/secrets/mybbspat/versions/1\n webhookSecretVersionName: projects/myProject/secrets/mybbspat/versions/1\n username: test\n apiKey: \u003capi-key\u003e\n peeredNetwork:\n fn::invoke:\n Function: std:replace\n Arguments:\n text: ${vpcNetwork.id}\n search: ${project.name}\n replace: ${project.number}\n Return: result\n sslCa: |\n -----BEGIN CERTIFICATE-----\n -----END CERTIFICATE-----\n -----BEGIN CERTIFICATE-----\n -----END CERTIFICATE-----\n options:\n dependson:\n - ${default}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBitbucketServerConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/bitbucketServerConfigs/{{config_id}}`\n\n* `{{project}}/{{location}}/{{config_id}}`\n\n* `{{location}}/{{config_id}}`\n\nWhen using the `pulumi import` command, BitbucketServerConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudbuild/bitbucketServerConfig:BitbucketServerConfig default projects/{{project}}/locations/{{location}}/bitbucketServerConfigs/{{config_id}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuild/bitbucketServerConfig:BitbucketServerConfig default {{project}}/{{location}}/{{config_id}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuild/bitbucketServerConfig:BitbucketServerConfig default {{location}}/{{config_id}}\n```\n\n", "properties": { "apiKey": { "type": "string", @@ -137571,7 +137571,7 @@ } }, "gcp:cloudbuild/trigger:Trigger": { - "description": "Configuration for an automated build in response to source repository changes.\n\n\nTo get more information about Trigger, see:\n\n* [API documentation](https://cloud.google.com/cloud-build/docs/api/reference/rest/v1/projects.triggers)\n* How-to Guides\n * [Automating builds using build triggers](https://cloud.google.com/cloud-build/docs/running-builds/automate-builds)\n\n\u003e **Note:** You can retrieve the email of the Cloud Build Service Account used in jobs by using the `gcp.projects.ServiceIdentity` resource.\n\n## Example Usage\n\n### Cloudbuild Trigger Filename\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst filename_trigger = new gcp.cloudbuild.Trigger(\"filename-trigger\", {\n location: \"us-central1\",\n triggerTemplate: {\n branchName: \"main\",\n repoName: \"my-repo\",\n },\n substitutions: {\n _FOO: \"bar\",\n _BAZ: \"qux\",\n },\n filename: \"cloudbuild.yaml\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfilename_trigger = gcp.cloudbuild.Trigger(\"filename-trigger\",\n location=\"us-central1\",\n trigger_template={\n \"branch_name\": \"main\",\n \"repo_name\": \"my-repo\",\n },\n substitutions={\n \"_FOO\": \"bar\",\n \"_BAZ\": \"qux\",\n },\n filename=\"cloudbuild.yaml\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var filename_trigger = new Gcp.CloudBuild.Trigger(\"filename-trigger\", new()\n {\n Location = \"us-central1\",\n TriggerTemplate = new Gcp.CloudBuild.Inputs.TriggerTriggerTemplateArgs\n {\n BranchName = \"main\",\n RepoName = \"my-repo\",\n },\n Substitutions = \n {\n { \"_FOO\", \"bar\" },\n { \"_BAZ\", \"qux\" },\n },\n Filename = \"cloudbuild.yaml\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuild.NewTrigger(ctx, \"filename-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTriggerTemplate: \u0026cloudbuild.TriggerTriggerTemplateArgs{\n\t\t\t\tBranchName: pulumi.String(\"main\"),\n\t\t\t\tRepoName: pulumi.String(\"my-repo\"),\n\t\t\t},\n\t\t\tSubstitutions: pulumi.StringMap{\n\t\t\t\t\"_FOO\": pulumi.String(\"bar\"),\n\t\t\t\t\"_BAZ\": pulumi.String(\"qux\"),\n\t\t\t},\n\t\t\tFilename: pulumi.String(\"cloudbuild.yaml\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerTriggerTemplateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var filename_trigger = new Trigger(\"filename-trigger\", TriggerArgs.builder()\n .location(\"us-central1\")\n .triggerTemplate(TriggerTriggerTemplateArgs.builder()\n .branchName(\"main\")\n .repoName(\"my-repo\")\n .build())\n .substitutions(Map.ofEntries(\n Map.entry(\"_FOO\", \"bar\"),\n Map.entry(\"_BAZ\", \"qux\")\n ))\n .filename(\"cloudbuild.yaml\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n filename-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n location: us-central1\n triggerTemplate:\n branchName: main\n repoName: my-repo\n substitutions:\n _FOO: bar\n _BAZ: qux\n filename: cloudbuild.yaml\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Build\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst build_trigger = new gcp.cloudbuild.Trigger(\"build-trigger\", {\n name: \"my-trigger\",\n location: \"global\",\n triggerTemplate: {\n branchName: \"main\",\n repoName: \"my-repo\",\n },\n build: {\n steps: [\n {\n name: \"gcr.io/cloud-builders/gsutil\",\n args: [\n \"cp\",\n \"gs://mybucket/remotefile.zip\",\n \"localfile.zip\",\n ],\n timeout: \"120s\",\n secretEnvs: [\"MY_SECRET\"],\n },\n {\n name: \"ubuntu\",\n script: \"echo hello\",\n },\n ],\n source: {\n storageSource: {\n bucket: \"mybucket\",\n object: \"source_code.tar.gz\",\n },\n },\n tags: [\n \"build\",\n \"newFeature\",\n ],\n substitutions: {\n _FOO: \"bar\",\n _BAZ: \"qux\",\n },\n queueTtl: \"20s\",\n logsBucket: \"gs://mybucket/logs\",\n secrets: [{\n kmsKeyName: \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n secretEnv: {\n PASSWORD: \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\",\n },\n }],\n availableSecrets: {\n secretManagers: [{\n env: \"MY_SECRET\",\n versionName: \"projects/myProject/secrets/mySecret/versions/latest\",\n }],\n },\n artifacts: {\n images: [\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"],\n objects: {\n location: \"gs://bucket/path/to/somewhere/\",\n paths: [\"path\"],\n },\n npmPackages: [{\n packagePath: \"package.json\",\n repository: \"https://us-west1-npm.pkg.dev/myProject/quickstart-nodejs-repo\",\n }],\n pythonPackages: [{\n paths: [\"dist/*\"],\n repository: \"https://us-west1-python.pkg.dev/myProject/quickstart-python-repo\",\n }],\n mavenArtifacts: [{\n repository: \"https://us-west1-maven.pkg.dev/myProject/quickstart-java-repo\",\n path: \"/workspace/my-app/target/my-app-1.0.SNAPSHOT.jar\",\n artifactId: \"my-app\",\n groupId: \"com.mycompany.app\",\n version: \"1.0\",\n }],\n },\n options: {\n sourceProvenanceHashes: [\"MD5\"],\n requestedVerifyOption: \"VERIFIED\",\n machineType: \"N1_HIGHCPU_8\",\n diskSizeGb: 100,\n substitutionOption: \"ALLOW_LOOSE\",\n dynamicSubstitutions: true,\n logStreamingOption: \"STREAM_OFF\",\n workerPool: \"pool\",\n logging: \"LEGACY\",\n envs: [\"ekey = evalue\"],\n secretEnvs: [\"secretenv = svalue\"],\n volumes: [{\n name: \"v1\",\n path: \"v1\",\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbuild_trigger = gcp.cloudbuild.Trigger(\"build-trigger\",\n name=\"my-trigger\",\n location=\"global\",\n trigger_template={\n \"branch_name\": \"main\",\n \"repo_name\": \"my-repo\",\n },\n build={\n \"steps\": [\n {\n \"name\": \"gcr.io/cloud-builders/gsutil\",\n \"args\": [\n \"cp\",\n \"gs://mybucket/remotefile.zip\",\n \"localfile.zip\",\n ],\n \"timeout\": \"120s\",\n \"secret_envs\": [\"MY_SECRET\"],\n },\n {\n \"name\": \"ubuntu\",\n \"script\": \"echo hello\",\n },\n ],\n \"source\": {\n \"storage_source\": {\n \"bucket\": \"mybucket\",\n \"object\": \"source_code.tar.gz\",\n },\n },\n \"tags\": [\n \"build\",\n \"newFeature\",\n ],\n \"substitutions\": {\n \"__foo\": \"bar\",\n \"__baz\": \"qux\",\n },\n \"queue_ttl\": \"20s\",\n \"logs_bucket\": \"gs://mybucket/logs\",\n \"secrets\": [{\n \"kms_key_name\": \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n \"secret_env\": {\n \"password\": \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\",\n },\n }],\n \"available_secrets\": {\n \"secret_managers\": [{\n \"env\": \"MY_SECRET\",\n \"version_name\": \"projects/myProject/secrets/mySecret/versions/latest\",\n }],\n },\n \"artifacts\": {\n \"images\": [\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"],\n \"objects\": {\n \"location\": \"gs://bucket/path/to/somewhere/\",\n \"paths\": [\"path\"],\n },\n \"npm_packages\": [{\n \"package_path\": \"package.json\",\n \"repository\": \"https://us-west1-npm.pkg.dev/myProject/quickstart-nodejs-repo\",\n }],\n \"python_packages\": [{\n \"paths\": [\"dist/*\"],\n \"repository\": \"https://us-west1-python.pkg.dev/myProject/quickstart-python-repo\",\n }],\n \"maven_artifacts\": [{\n \"repository\": \"https://us-west1-maven.pkg.dev/myProject/quickstart-java-repo\",\n \"path\": \"/workspace/my-app/target/my-app-1.0.SNAPSHOT.jar\",\n \"artifact_id\": \"my-app\",\n \"group_id\": \"com.mycompany.app\",\n \"version\": \"1.0\",\n }],\n },\n \"options\": {\n \"source_provenance_hashes\": [\"MD5\"],\n \"requested_verify_option\": \"VERIFIED\",\n \"machine_type\": \"N1_HIGHCPU_8\",\n \"disk_size_gb\": 100,\n \"substitution_option\": \"ALLOW_LOOSE\",\n \"dynamic_substitutions\": True,\n \"log_streaming_option\": \"STREAM_OFF\",\n \"worker_pool\": \"pool\",\n \"logging\": \"LEGACY\",\n \"envs\": [\"ekey = evalue\"],\n \"secret_envs\": [\"secretenv = svalue\"],\n \"volumes\": [{\n \"name\": \"v1\",\n \"path\": \"v1\",\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var build_trigger = new Gcp.CloudBuild.Trigger(\"build-trigger\", new()\n {\n Name = \"my-trigger\",\n Location = \"global\",\n TriggerTemplate = new Gcp.CloudBuild.Inputs.TriggerTriggerTemplateArgs\n {\n BranchName = \"main\",\n RepoName = \"my-repo\",\n },\n Build = new Gcp.CloudBuild.Inputs.TriggerBuildArgs\n {\n Steps = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildStepArgs\n {\n Name = \"gcr.io/cloud-builders/gsutil\",\n Args = new[]\n {\n \"cp\",\n \"gs://mybucket/remotefile.zip\",\n \"localfile.zip\",\n },\n Timeout = \"120s\",\n SecretEnvs = new[]\n {\n \"MY_SECRET\",\n },\n },\n new Gcp.CloudBuild.Inputs.TriggerBuildStepArgs\n {\n Name = \"ubuntu\",\n Script = \"echo hello\",\n },\n },\n Source = new Gcp.CloudBuild.Inputs.TriggerBuildSourceArgs\n {\n StorageSource = new Gcp.CloudBuild.Inputs.TriggerBuildSourceStorageSourceArgs\n {\n Bucket = \"mybucket\",\n Object = \"source_code.tar.gz\",\n },\n },\n Tags = new[]\n {\n \"build\",\n \"newFeature\",\n },\n Substitutions = \n {\n { \"_FOO\", \"bar\" },\n { \"_BAZ\", \"qux\" },\n },\n QueueTtl = \"20s\",\n LogsBucket = \"gs://mybucket/logs\",\n Secrets = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildSecretArgs\n {\n KmsKeyName = \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n SecretEnv = \n {\n { \"PASSWORD\", \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\" },\n },\n },\n },\n AvailableSecrets = new Gcp.CloudBuild.Inputs.TriggerBuildAvailableSecretsArgs\n {\n SecretManagers = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildAvailableSecretsSecretManagerArgs\n {\n Env = \"MY_SECRET\",\n VersionName = \"projects/myProject/secrets/mySecret/versions/latest\",\n },\n },\n },\n Artifacts = new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsArgs\n {\n Images = new[]\n {\n \"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\",\n },\n Objects = new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsObjectsArgs\n {\n Location = \"gs://bucket/path/to/somewhere/\",\n Paths = new[]\n {\n \"path\",\n },\n },\n NpmPackages = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsNpmPackageArgs\n {\n PackagePath = \"package.json\",\n Repository = \"https://us-west1-npm.pkg.dev/myProject/quickstart-nodejs-repo\",\n },\n },\n PythonPackages = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsPythonPackageArgs\n {\n Paths = new[]\n {\n \"dist/*\",\n },\n Repository = \"https://us-west1-python.pkg.dev/myProject/quickstart-python-repo\",\n },\n },\n MavenArtifacts = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsMavenArtifactArgs\n {\n Repository = \"https://us-west1-maven.pkg.dev/myProject/quickstart-java-repo\",\n Path = \"/workspace/my-app/target/my-app-1.0.SNAPSHOT.jar\",\n ArtifactId = \"my-app\",\n GroupId = \"com.mycompany.app\",\n Version = \"1.0\",\n },\n },\n },\n Options = new Gcp.CloudBuild.Inputs.TriggerBuildOptionsArgs\n {\n SourceProvenanceHashes = new[]\n {\n \"MD5\",\n },\n RequestedVerifyOption = \"VERIFIED\",\n MachineType = \"N1_HIGHCPU_8\",\n DiskSizeGb = 100,\n SubstitutionOption = \"ALLOW_LOOSE\",\n DynamicSubstitutions = true,\n LogStreamingOption = \"STREAM_OFF\",\n WorkerPool = \"pool\",\n Logging = \"LEGACY\",\n Envs = new[]\n {\n \"ekey = evalue\",\n },\n SecretEnvs = new[]\n {\n \"secretenv = svalue\",\n },\n Volumes = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildOptionsVolumeArgs\n {\n Name = \"v1\",\n Path = \"v1\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuild.NewTrigger(ctx, \"build-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"my-trigger\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tTriggerTemplate: \u0026cloudbuild.TriggerTriggerTemplateArgs{\n\t\t\t\tBranchName: pulumi.String(\"main\"),\n\t\t\t\tRepoName: pulumi.String(\"my-repo\"),\n\t\t\t},\n\t\t\tBuild: \u0026cloudbuild.TriggerBuildArgs{\n\t\t\t\tSteps: cloudbuild.TriggerBuildStepArray{\n\t\t\t\t\t\u0026cloudbuild.TriggerBuildStepArgs{\n\t\t\t\t\t\tName: pulumi.String(\"gcr.io/cloud-builders/gsutil\"),\n\t\t\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"cp\"),\n\t\t\t\t\t\t\tpulumi.String(\"gs://mybucket/remotefile.zip\"),\n\t\t\t\t\t\t\tpulumi.String(\"localfile.zip\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTimeout: pulumi.String(\"120s\"),\n\t\t\t\t\t\tSecretEnvs: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"MY_SECRET\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026cloudbuild.TriggerBuildStepArgs{\n\t\t\t\t\t\tName: pulumi.String(\"ubuntu\"),\n\t\t\t\t\t\tScript: pulumi.String(\"echo hello\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudbuild.TriggerBuildSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudbuild.TriggerBuildSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: pulumi.String(\"mybucket\"),\n\t\t\t\t\t\tObject: pulumi.String(\"source_code.tar.gz\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"build\"),\n\t\t\t\t\tpulumi.String(\"newFeature\"),\n\t\t\t\t},\n\t\t\t\tSubstitutions: pulumi.StringMap{\n\t\t\t\t\t\"_FOO\": pulumi.String(\"bar\"),\n\t\t\t\t\t\"_BAZ\": pulumi.String(\"qux\"),\n\t\t\t\t},\n\t\t\t\tQueueTtl: pulumi.String(\"20s\"),\n\t\t\t\tLogsBucket: pulumi.String(\"gs://mybucket/logs\"),\n\t\t\t\tSecrets: cloudbuild.TriggerBuildSecretArray{\n\t\t\t\t\t\u0026cloudbuild.TriggerBuildSecretArgs{\n\t\t\t\t\t\tKmsKeyName: pulumi.String(\"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\"),\n\t\t\t\t\t\tSecretEnv: pulumi.StringMap{\n\t\t\t\t\t\t\t\"PASSWORD\": pulumi.String(\"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAvailableSecrets: \u0026cloudbuild.TriggerBuildAvailableSecretsArgs{\n\t\t\t\t\tSecretManagers: cloudbuild.TriggerBuildAvailableSecretsSecretManagerArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildAvailableSecretsSecretManagerArgs{\n\t\t\t\t\t\t\tEnv: pulumi.String(\"MY_SECRET\"),\n\t\t\t\t\t\t\tVersionName: pulumi.String(\"projects/myProject/secrets/mySecret/versions/latest\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tArtifacts: \u0026cloudbuild.TriggerBuildArtifactsArgs{\n\t\t\t\t\tImages: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"),\n\t\t\t\t\t},\n\t\t\t\t\tObjects: \u0026cloudbuild.TriggerBuildArtifactsObjectsArgs{\n\t\t\t\t\t\tLocation: pulumi.String(\"gs://bucket/path/to/somewhere/\"),\n\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"path\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tNpmPackages: cloudbuild.TriggerBuildArtifactsNpmPackageArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildArtifactsNpmPackageArgs{\n\t\t\t\t\t\t\tPackagePath: pulumi.String(\"package.json\"),\n\t\t\t\t\t\t\tRepository: pulumi.String(\"https://us-west1-npm.pkg.dev/myProject/quickstart-nodejs-repo\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tPythonPackages: cloudbuild.TriggerBuildArtifactsPythonPackageArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildArtifactsPythonPackageArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"dist/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRepository: pulumi.String(\"https://us-west1-python.pkg.dev/myProject/quickstart-python-repo\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tMavenArtifacts: cloudbuild.TriggerBuildArtifactsMavenArtifactArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildArtifactsMavenArtifactArgs{\n\t\t\t\t\t\t\tRepository: pulumi.String(\"https://us-west1-maven.pkg.dev/myProject/quickstart-java-repo\"),\n\t\t\t\t\t\t\tPath: pulumi.String(\"/workspace/my-app/target/my-app-1.0.SNAPSHOT.jar\"),\n\t\t\t\t\t\t\tArtifactId: pulumi.String(\"my-app\"),\n\t\t\t\t\t\t\tGroupId: pulumi.String(\"com.mycompany.app\"),\n\t\t\t\t\t\t\tVersion: pulumi.String(\"1.0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tOptions: \u0026cloudbuild.TriggerBuildOptionsArgs{\n\t\t\t\t\tSourceProvenanceHashes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"MD5\"),\n\t\t\t\t\t},\n\t\t\t\t\tRequestedVerifyOption: pulumi.String(\"VERIFIED\"),\n\t\t\t\t\tMachineType: pulumi.String(\"N1_HIGHCPU_8\"),\n\t\t\t\t\tDiskSizeGb: pulumi.Int(100),\n\t\t\t\t\tSubstitutionOption: pulumi.String(\"ALLOW_LOOSE\"),\n\t\t\t\t\tDynamicSubstitutions: pulumi.Bool(true),\n\t\t\t\t\tLogStreamingOption: pulumi.String(\"STREAM_OFF\"),\n\t\t\t\t\tWorkerPool: pulumi.String(\"pool\"),\n\t\t\t\t\tLogging: pulumi.String(\"LEGACY\"),\n\t\t\t\t\tEnvs: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ekey = evalue\"),\n\t\t\t\t\t},\n\t\t\t\t\tSecretEnvs: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"secretenv = svalue\"),\n\t\t\t\t\t},\n\t\t\t\t\tVolumes: cloudbuild.TriggerBuildOptionsVolumeArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildOptionsVolumeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"v1\"),\n\t\t\t\t\t\t\tPath: pulumi.String(\"v1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerTriggerTemplateArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildAvailableSecretsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsObjectsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildOptionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var build_trigger = new Trigger(\"build-trigger\", TriggerArgs.builder()\n .name(\"my-trigger\")\n .location(\"global\")\n .triggerTemplate(TriggerTriggerTemplateArgs.builder()\n .branchName(\"main\")\n .repoName(\"my-repo\")\n .build())\n .build(TriggerBuildArgs.builder()\n .steps( \n TriggerBuildStepArgs.builder()\n .name(\"gcr.io/cloud-builders/gsutil\")\n .args( \n \"cp\",\n \"gs://mybucket/remotefile.zip\",\n \"localfile.zip\")\n .timeout(\"120s\")\n .secretEnvs(\"MY_SECRET\")\n .build(),\n TriggerBuildStepArgs.builder()\n .name(\"ubuntu\")\n .script(\"echo hello\")\n .build())\n .source(TriggerBuildSourceArgs.builder()\n .storageSource(TriggerBuildSourceStorageSourceArgs.builder()\n .bucket(\"mybucket\")\n .object(\"source_code.tar.gz\")\n .build())\n .build())\n .tags( \n \"build\",\n \"newFeature\")\n .substitutions(Map.ofEntries(\n Map.entry(\"_FOO\", \"bar\"),\n Map.entry(\"_BAZ\", \"qux\")\n ))\n .queueTtl(\"20s\")\n .logsBucket(\"gs://mybucket/logs\")\n .secrets(TriggerBuildSecretArgs.builder()\n .kmsKeyName(\"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\")\n .secretEnv(Map.of(\"PASSWORD\", \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\"))\n .build())\n .availableSecrets(TriggerBuildAvailableSecretsArgs.builder()\n .secretManagers(TriggerBuildAvailableSecretsSecretManagerArgs.builder()\n .env(\"MY_SECRET\")\n .versionName(\"projects/myProject/secrets/mySecret/versions/latest\")\n .build())\n .build())\n .artifacts(TriggerBuildArtifactsArgs.builder()\n .images(\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\")\n .objects(TriggerBuildArtifactsObjectsArgs.builder()\n .location(\"gs://bucket/path/to/somewhere/\")\n .paths(\"path\")\n .build())\n .npmPackages(TriggerBuildArtifactsNpmPackageArgs.builder()\n .packagePath(\"package.json\")\n .repository(\"https://us-west1-npm.pkg.dev/myProject/quickstart-nodejs-repo\")\n .build())\n .pythonPackages(TriggerBuildArtifactsPythonPackageArgs.builder()\n .paths(\"dist/*\")\n .repository(\"https://us-west1-python.pkg.dev/myProject/quickstart-python-repo\")\n .build())\n .mavenArtifacts(TriggerBuildArtifactsMavenArtifactArgs.builder()\n .repository(\"https://us-west1-maven.pkg.dev/myProject/quickstart-java-repo\")\n .path(\"/workspace/my-app/target/my-app-1.0.SNAPSHOT.jar\")\n .artifactId(\"my-app\")\n .groupId(\"com.mycompany.app\")\n .version(\"1.0\")\n .build())\n .build())\n .options(TriggerBuildOptionsArgs.builder()\n .sourceProvenanceHashes(\"MD5\")\n .requestedVerifyOption(\"VERIFIED\")\n .machineType(\"N1_HIGHCPU_8\")\n .diskSizeGb(100)\n .substitutionOption(\"ALLOW_LOOSE\")\n .dynamicSubstitutions(true)\n .logStreamingOption(\"STREAM_OFF\")\n .workerPool(\"pool\")\n .logging(\"LEGACY\")\n .envs(\"ekey = evalue\")\n .secretEnvs(\"secretenv = svalue\")\n .volumes(TriggerBuildOptionsVolumeArgs.builder()\n .name(\"v1\")\n .path(\"v1\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n build-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: my-trigger\n location: global\n triggerTemplate:\n branchName: main\n repoName: my-repo\n build:\n steps:\n - name: gcr.io/cloud-builders/gsutil\n args:\n - cp\n - gs://mybucket/remotefile.zip\n - localfile.zip\n timeout: 120s\n secretEnvs:\n - MY_SECRET\n - name: ubuntu\n script: echo hello\n source:\n storageSource:\n bucket: mybucket\n object: source_code.tar.gz\n tags:\n - build\n - newFeature\n substitutions:\n _FOO: bar\n _BAZ: qux\n queueTtl: 20s\n logsBucket: gs://mybucket/logs\n secrets:\n - kmsKeyName: projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\n secretEnv:\n PASSWORD: ZW5jcnlwdGVkLXBhc3N3b3JkCg==\n availableSecrets:\n secretManagers:\n - env: MY_SECRET\n versionName: projects/myProject/secrets/mySecret/versions/latest\n artifacts:\n images:\n - gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\n objects:\n location: gs://bucket/path/to/somewhere/\n paths:\n - path\n npmPackages:\n - packagePath: package.json\n repository: https://us-west1-npm.pkg.dev/myProject/quickstart-nodejs-repo\n pythonPackages:\n - paths:\n - dist/*\n repository: https://us-west1-python.pkg.dev/myProject/quickstart-python-repo\n mavenArtifacts:\n - repository: https://us-west1-maven.pkg.dev/myProject/quickstart-java-repo\n path: /workspace/my-app/target/my-app-1.0.SNAPSHOT.jar\n artifactId: my-app\n groupId: com.mycompany.app\n version: '1.0'\n options:\n sourceProvenanceHashes:\n - MD5\n requestedVerifyOption: VERIFIED\n machineType: N1_HIGHCPU_8\n diskSizeGb: 100\n substitutionOption: ALLOW_LOOSE\n dynamicSubstitutions: true\n logStreamingOption: STREAM_OFF\n workerPool: pool\n logging: LEGACY\n envs:\n - ekey = evalue\n secretEnvs:\n - secretenv = svalue\n volumes:\n - name: v1\n path: v1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Service Account\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst cloudbuildServiceAccount = new gcp.serviceaccount.Account(\"cloudbuild_service_account\", {accountId: \"cloud-sa\"});\nconst actAs = new gcp.projects.IAMMember(\"act_as\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/iam.serviceAccountUser\",\n member: pulumi.interpolate`serviceAccount:${cloudbuildServiceAccount.email}`,\n});\nconst logsWriter = new gcp.projects.IAMMember(\"logs_writer\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/logging.logWriter\",\n member: pulumi.interpolate`serviceAccount:${cloudbuildServiceAccount.email}`,\n});\nconst service_account_trigger = new gcp.cloudbuild.Trigger(\"service-account-trigger\", {\n triggerTemplate: {\n branchName: \"main\",\n repoName: \"my-repo\",\n },\n serviceAccount: cloudbuildServiceAccount.id,\n filename: \"cloudbuild.yaml\",\n}, {\n dependsOn: [\n actAs,\n logsWriter,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ncloudbuild_service_account = gcp.serviceaccount.Account(\"cloudbuild_service_account\", account_id=\"cloud-sa\")\nact_as = gcp.projects.IAMMember(\"act_as\",\n project=project.project_id,\n role=\"roles/iam.serviceAccountUser\",\n member=cloudbuild_service_account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nlogs_writer = gcp.projects.IAMMember(\"logs_writer\",\n project=project.project_id,\n role=\"roles/logging.logWriter\",\n member=cloudbuild_service_account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nservice_account_trigger = gcp.cloudbuild.Trigger(\"service-account-trigger\",\n trigger_template={\n \"branch_name\": \"main\",\n \"repo_name\": \"my-repo\",\n },\n service_account=cloudbuild_service_account.id,\n filename=\"cloudbuild.yaml\",\n opts = pulumi.ResourceOptions(depends_on=[\n act_as,\n logs_writer,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cloudbuildServiceAccount = new Gcp.ServiceAccount.Account(\"cloudbuild_service_account\", new()\n {\n AccountId = \"cloud-sa\",\n });\n\n var actAs = new Gcp.Projects.IAMMember(\"act_as\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/iam.serviceAccountUser\",\n Member = cloudbuildServiceAccount.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var logsWriter = new Gcp.Projects.IAMMember(\"logs_writer\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/logging.logWriter\",\n Member = cloudbuildServiceAccount.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var service_account_trigger = new Gcp.CloudBuild.Trigger(\"service-account-trigger\", new()\n {\n TriggerTemplate = new Gcp.CloudBuild.Inputs.TriggerTriggerTemplateArgs\n {\n BranchName = \"main\",\n RepoName = \"my-repo\",\n },\n ServiceAccount = cloudbuildServiceAccount.Id,\n Filename = \"cloudbuild.yaml\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n actAs,\n logsWriter,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\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/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcloudbuildServiceAccount, err := serviceaccount.NewAccount(ctx, \"cloudbuild_service_account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"cloud-sa\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tactAs, err := projects.NewIAMMember(ctx, \"act_as\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMember: cloudbuildServiceAccount.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlogsWriter, err := projects.NewIAMMember(ctx, \"logs_writer\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/logging.logWriter\"),\n\t\t\tMember: cloudbuildServiceAccount.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuild.NewTrigger(ctx, \"service-account-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tTriggerTemplate: \u0026cloudbuild.TriggerTriggerTemplateArgs{\n\t\t\t\tBranchName: pulumi.String(\"main\"),\n\t\t\t\tRepoName: pulumi.String(\"my-repo\"),\n\t\t\t},\n\t\t\tServiceAccount: cloudbuildServiceAccount.ID(),\n\t\t\tFilename: pulumi.String(\"cloudbuild.yaml\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tactAs,\n\t\t\tlogsWriter,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerTriggerTemplateArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var cloudbuildServiceAccount = new Account(\"cloudbuildServiceAccount\", AccountArgs.builder()\n .accountId(\"cloud-sa\")\n .build());\n\n var actAs = new IAMMember(\"actAs\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/iam.serviceAccountUser\")\n .member(cloudbuildServiceAccount.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var logsWriter = new IAMMember(\"logsWriter\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/logging.logWriter\")\n .member(cloudbuildServiceAccount.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var service_account_trigger = new Trigger(\"service-account-trigger\", TriggerArgs.builder()\n .triggerTemplate(TriggerTriggerTemplateArgs.builder()\n .branchName(\"main\")\n .repoName(\"my-repo\")\n .build())\n .serviceAccount(cloudbuildServiceAccount.id())\n .filename(\"cloudbuild.yaml\")\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n actAs,\n logsWriter)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n service-account-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n triggerTemplate:\n branchName: main\n repoName: my-repo\n serviceAccount: ${cloudbuildServiceAccount.id}\n filename: cloudbuild.yaml\n options:\n dependson:\n - ${actAs}\n - ${logsWriter}\n cloudbuildServiceAccount:\n type: gcp:serviceaccount:Account\n name: cloudbuild_service_account\n properties:\n accountId: cloud-sa\n actAs:\n type: gcp:projects:IAMMember\n name: act_as\n properties:\n project: ${project.projectId}\n role: roles/iam.serviceAccountUser\n member: serviceAccount:${cloudbuildServiceAccount.email}\n logsWriter:\n type: gcp:projects:IAMMember\n name: logs_writer\n properties:\n project: ${project.projectId}\n role: roles/logging.logWriter\n member: serviceAccount:${cloudbuildServiceAccount.email}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Include Build Logs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst include_build_logs_trigger = new gcp.cloudbuild.Trigger(\"include-build-logs-trigger\", {\n location: \"us-central1\",\n name: \"include-build-logs-trigger\",\n filename: \"cloudbuild.yaml\",\n github: {\n owner: \"hashicorp\",\n name: \"terraform-provider-google-beta\",\n push: {\n branch: \"^main$\",\n },\n },\n includeBuildLogs: \"INCLUDE_BUILD_LOGS_WITH_STATUS\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninclude_build_logs_trigger = gcp.cloudbuild.Trigger(\"include-build-logs-trigger\",\n location=\"us-central1\",\n name=\"include-build-logs-trigger\",\n filename=\"cloudbuild.yaml\",\n github={\n \"owner\": \"hashicorp\",\n \"name\": \"terraform-provider-google-beta\",\n \"push\": {\n \"branch\": \"^main$\",\n },\n },\n include_build_logs=\"INCLUDE_BUILD_LOGS_WITH_STATUS\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var include_build_logs_trigger = new Gcp.CloudBuild.Trigger(\"include-build-logs-trigger\", new()\n {\n Location = \"us-central1\",\n Name = \"include-build-logs-trigger\",\n Filename = \"cloudbuild.yaml\",\n Github = new Gcp.CloudBuild.Inputs.TriggerGithubArgs\n {\n Owner = \"hashicorp\",\n Name = \"terraform-provider-google-beta\",\n Push = new Gcp.CloudBuild.Inputs.TriggerGithubPushArgs\n {\n Branch = \"^main$\",\n },\n },\n IncludeBuildLogs = \"INCLUDE_BUILD_LOGS_WITH_STATUS\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuild.NewTrigger(ctx, \"include-build-logs-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"include-build-logs-trigger\"),\n\t\t\tFilename: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\tGithub: \u0026cloudbuild.TriggerGithubArgs{\n\t\t\t\tOwner: pulumi.String(\"hashicorp\"),\n\t\t\t\tName: pulumi.String(\"terraform-provider-google-beta\"),\n\t\t\t\tPush: \u0026cloudbuild.TriggerGithubPushArgs{\n\t\t\t\t\tBranch: pulumi.String(\"^main$\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tIncludeBuildLogs: pulumi.String(\"INCLUDE_BUILD_LOGS_WITH_STATUS\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGithubArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGithubPushArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var include_build_logs_trigger = new Trigger(\"include-build-logs-trigger\", TriggerArgs.builder()\n .location(\"us-central1\")\n .name(\"include-build-logs-trigger\")\n .filename(\"cloudbuild.yaml\")\n .github(TriggerGithubArgs.builder()\n .owner(\"hashicorp\")\n .name(\"terraform-provider-google-beta\")\n .push(TriggerGithubPushArgs.builder()\n .branch(\"^main$\")\n .build())\n .build())\n .includeBuildLogs(\"INCLUDE_BUILD_LOGS_WITH_STATUS\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n include-build-logs-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n location: us-central1\n name: include-build-logs-trigger\n filename: cloudbuild.yaml\n github:\n owner: hashicorp\n name: terraform-provider-google-beta\n push:\n branch: ^main$\n includeBuildLogs: INCLUDE_BUILD_LOGS_WITH_STATUS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Pubsub Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst mytopic = new gcp.pubsub.Topic(\"mytopic\", {name: \"my-topic\"});\nconst pubsub_config_trigger = new gcp.cloudbuild.Trigger(\"pubsub-config-trigger\", {\n location: \"us-central1\",\n name: \"pubsub-trigger\",\n description: \"acceptance test example pubsub build trigger\",\n pubsubConfig: {\n topic: mytopic.id,\n },\n sourceToBuild: {\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n ref: \"refs/heads/main\",\n repoType: \"GITHUB\",\n },\n gitFileSource: {\n path: \"cloudbuild.yaml\",\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n revision: \"refs/heads/main\",\n repoType: \"GITHUB\",\n },\n substitutions: {\n _ACTION: \"$(body.message.data.action)\",\n },\n filter: \"_ACTION.matches('INSERT')\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmytopic = gcp.pubsub.Topic(\"mytopic\", name=\"my-topic\")\npubsub_config_trigger = gcp.cloudbuild.Trigger(\"pubsub-config-trigger\",\n location=\"us-central1\",\n name=\"pubsub-trigger\",\n description=\"acceptance test example pubsub build trigger\",\n pubsub_config={\n \"topic\": mytopic.id,\n },\n source_to_build={\n \"uri\": \"https://hashicorp/terraform-provider-google-beta\",\n \"ref\": \"refs/heads/main\",\n \"repo_type\": \"GITHUB\",\n },\n git_file_source={\n \"path\": \"cloudbuild.yaml\",\n \"uri\": \"https://hashicorp/terraform-provider-google-beta\",\n \"revision\": \"refs/heads/main\",\n \"repo_type\": \"GITHUB\",\n },\n substitutions={\n \"_ACTION\": \"$(body.message.data.action)\",\n },\n filter=\"_ACTION.matches('INSERT')\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var mytopic = new Gcp.PubSub.Topic(\"mytopic\", new()\n {\n Name = \"my-topic\",\n });\n\n var pubsub_config_trigger = new Gcp.CloudBuild.Trigger(\"pubsub-config-trigger\", new()\n {\n Location = \"us-central1\",\n Name = \"pubsub-trigger\",\n Description = \"acceptance test example pubsub build trigger\",\n PubsubConfig = new Gcp.CloudBuild.Inputs.TriggerPubsubConfigArgs\n {\n Topic = mytopic.Id,\n },\n SourceToBuild = new Gcp.CloudBuild.Inputs.TriggerSourceToBuildArgs\n {\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n Ref = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n },\n GitFileSource = new Gcp.CloudBuild.Inputs.TriggerGitFileSourceArgs\n {\n Path = \"cloudbuild.yaml\",\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n Revision = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n },\n Substitutions = \n {\n { \"_ACTION\", \"$(body.message.data.action)\" },\n },\n Filter = \"_ACTION.matches('INSERT')\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmytopic, err := pubsub.NewTopic(ctx, \"mytopic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"my-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuild.NewTrigger(ctx, \"pubsub-config-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"pubsub-trigger\"),\n\t\t\tDescription: pulumi.String(\"acceptance test example pubsub build trigger\"),\n\t\t\tPubsubConfig: \u0026cloudbuild.TriggerPubsubConfigArgs{\n\t\t\t\tTopic: mytopic.ID(),\n\t\t\t},\n\t\t\tSourceToBuild: \u0026cloudbuild.TriggerSourceToBuildArgs{\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t\tRef: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t},\n\t\t\tGitFileSource: \u0026cloudbuild.TriggerGitFileSourceArgs{\n\t\t\t\tPath: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t\tRevision: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t},\n\t\t\tSubstitutions: pulumi.StringMap{\n\t\t\t\t\"_ACTION\": pulumi.String(\"$(body.message.data.action)\"),\n\t\t\t},\n\t\t\tFilter: pulumi.String(\"_ACTION.matches('INSERT')\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerPubsubConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerSourceToBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGitFileSourceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var mytopic = new Topic(\"mytopic\", TopicArgs.builder()\n .name(\"my-topic\")\n .build());\n\n var pubsub_config_trigger = new Trigger(\"pubsub-config-trigger\", TriggerArgs.builder()\n .location(\"us-central1\")\n .name(\"pubsub-trigger\")\n .description(\"acceptance test example pubsub build trigger\")\n .pubsubConfig(TriggerPubsubConfigArgs.builder()\n .topic(mytopic.id())\n .build())\n .sourceToBuild(TriggerSourceToBuildArgs.builder()\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .ref(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .build())\n .gitFileSource(TriggerGitFileSourceArgs.builder()\n .path(\"cloudbuild.yaml\")\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .revision(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .build())\n .substitutions(Map.of(\"_ACTION\", \"$(body.message.data.action)\"))\n .filter(\"_ACTION.matches('INSERT')\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n mytopic:\n type: gcp:pubsub:Topic\n properties:\n name: my-topic\n pubsub-config-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n location: us-central1\n name: pubsub-trigger\n description: acceptance test example pubsub build trigger\n pubsubConfig:\n topic: ${mytopic.id}\n sourceToBuild:\n uri: https://hashicorp/terraform-provider-google-beta\n ref: refs/heads/main\n repoType: GITHUB\n gitFileSource:\n path: cloudbuild.yaml\n uri: https://hashicorp/terraform-provider-google-beta\n revision: refs/heads/main\n repoType: GITHUB\n substitutions:\n _ACTION: $(body.message.data.action)\n filter: _ACTION.matches('INSERT')\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Webhook Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst webhookTriggerSecretKey = new gcp.secretmanager.Secret(\"webhook_trigger_secret_key\", {\n secretId: \"webhook-trigger-secret-key\",\n replication: {\n userManaged: {\n replicas: [{\n location: \"us-central1\",\n }],\n },\n },\n});\nconst webhookTriggerSecretKeyData = new gcp.secretmanager.SecretVersion(\"webhook_trigger_secret_key_data\", {\n secret: webhookTriggerSecretKey.id,\n secretData: \"secretkeygoeshere\",\n});\nconst project = gcp.organizations.getProject({});\nconst secretAccessor = project.then(project =\u003e gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/secretmanager.secretAccessor\",\n members: [`serviceAccount:service-${project.number}@gcp-sa-cloudbuild.iam.gserviceaccount.com`],\n }],\n}));\nconst policy = new gcp.secretmanager.SecretIamPolicy(\"policy\", {\n project: webhookTriggerSecretKey.project,\n secretId: webhookTriggerSecretKey.secretId,\n policyData: secretAccessor.then(secretAccessor =\u003e secretAccessor.policyData),\n});\nconst webhook_config_trigger = new gcp.cloudbuild.Trigger(\"webhook-config-trigger\", {\n name: \"webhook-trigger\",\n description: \"acceptance test example webhook build trigger\",\n webhookConfig: {\n secret: webhookTriggerSecretKeyData.id,\n },\n sourceToBuild: {\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n ref: \"refs/heads/main\",\n repoType: \"GITHUB\",\n },\n gitFileSource: {\n path: \"cloudbuild.yaml\",\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n revision: \"refs/heads/main\",\n repoType: \"GITHUB\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nwebhook_trigger_secret_key = gcp.secretmanager.Secret(\"webhook_trigger_secret_key\",\n secret_id=\"webhook-trigger-secret-key\",\n replication={\n \"user_managed\": {\n \"replicas\": [{\n \"location\": \"us-central1\",\n }],\n },\n })\nwebhook_trigger_secret_key_data = gcp.secretmanager.SecretVersion(\"webhook_trigger_secret_key_data\",\n secret=webhook_trigger_secret_key.id,\n secret_data=\"secretkeygoeshere\")\nproject = gcp.organizations.get_project()\nsecret_accessor = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/secretmanager.secretAccessor\",\n \"members\": [f\"serviceAccount:service-{project.number}@gcp-sa-cloudbuild.iam.gserviceaccount.com\"],\n}])\npolicy = gcp.secretmanager.SecretIamPolicy(\"policy\",\n project=webhook_trigger_secret_key.project,\n secret_id=webhook_trigger_secret_key.secret_id,\n policy_data=secret_accessor.policy_data)\nwebhook_config_trigger = gcp.cloudbuild.Trigger(\"webhook-config-trigger\",\n name=\"webhook-trigger\",\n description=\"acceptance test example webhook build trigger\",\n webhook_config={\n \"secret\": webhook_trigger_secret_key_data.id,\n },\n source_to_build={\n \"uri\": \"https://hashicorp/terraform-provider-google-beta\",\n \"ref\": \"refs/heads/main\",\n \"repo_type\": \"GITHUB\",\n },\n git_file_source={\n \"path\": \"cloudbuild.yaml\",\n \"uri\": \"https://hashicorp/terraform-provider-google-beta\",\n \"revision\": \"refs/heads/main\",\n \"repo_type\": \"GITHUB\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var webhookTriggerSecretKey = new Gcp.SecretManager.Secret(\"webhook_trigger_secret_key\", new()\n {\n SecretId = \"webhook-trigger-secret-key\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n UserManaged = new Gcp.SecretManager.Inputs.SecretReplicationUserManagedArgs\n {\n Replicas = new[]\n {\n new Gcp.SecretManager.Inputs.SecretReplicationUserManagedReplicaArgs\n {\n Location = \"us-central1\",\n },\n },\n },\n },\n });\n\n var webhookTriggerSecretKeyData = new Gcp.SecretManager.SecretVersion(\"webhook_trigger_secret_key_data\", new()\n {\n Secret = webhookTriggerSecretKey.Id,\n SecretData = \"secretkeygoeshere\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var secretAccessor = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/secretmanager.secretAccessor\",\n Members = new[]\n {\n $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-cloudbuild.iam.gserviceaccount.com\",\n },\n },\n },\n });\n\n var policy = new Gcp.SecretManager.SecretIamPolicy(\"policy\", new()\n {\n Project = webhookTriggerSecretKey.Project,\n SecretId = webhookTriggerSecretKey.SecretId,\n PolicyData = secretAccessor.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n var webhook_config_trigger = new Gcp.CloudBuild.Trigger(\"webhook-config-trigger\", new()\n {\n Name = \"webhook-trigger\",\n Description = \"acceptance test example webhook build trigger\",\n WebhookConfig = new Gcp.CloudBuild.Inputs.TriggerWebhookConfigArgs\n {\n Secret = webhookTriggerSecretKeyData.Id,\n },\n SourceToBuild = new Gcp.CloudBuild.Inputs.TriggerSourceToBuildArgs\n {\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n Ref = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n },\n GitFileSource = new Gcp.CloudBuild.Inputs.TriggerGitFileSourceArgs\n {\n Path = \"cloudbuild.yaml\",\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n Revision = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\twebhookTriggerSecretKey, err := secretmanager.NewSecret(ctx, \"webhook_trigger_secret_key\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"webhook-trigger-secret-key\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tUserManaged: \u0026secretmanager.SecretReplicationUserManagedArgs{\n\t\t\t\t\tReplicas: secretmanager.SecretReplicationUserManagedReplicaArray{\n\t\t\t\t\t\t\u0026secretmanager.SecretReplicationUserManagedReplicaArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\twebhookTriggerSecretKeyData, err := secretmanager.NewSecretVersion(ctx, \"webhook_trigger_secret_key_data\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: webhookTriggerSecretKey.ID(),\n\t\t\tSecretData: pulumi.String(\"secretkeygoeshere\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecretAccessor, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/secretmanager.secretAccessor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\tfmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-cloudbuild.iam.gserviceaccount.com\", project.Number),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamPolicy(ctx, \"policy\", \u0026secretmanager.SecretIamPolicyArgs{\n\t\t\tProject: webhookTriggerSecretKey.Project,\n\t\t\tSecretId: webhookTriggerSecretKey.SecretId,\n\t\t\tPolicyData: pulumi.String(secretAccessor.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuild.NewTrigger(ctx, \"webhook-config-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"webhook-trigger\"),\n\t\t\tDescription: pulumi.String(\"acceptance test example webhook build trigger\"),\n\t\t\tWebhookConfig: \u0026cloudbuild.TriggerWebhookConfigArgs{\n\t\t\t\tSecret: webhookTriggerSecretKeyData.ID(),\n\t\t\t},\n\t\t\tSourceToBuild: \u0026cloudbuild.TriggerSourceToBuildArgs{\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t\tRef: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t},\n\t\t\tGitFileSource: \u0026cloudbuild.TriggerGitFileSourceArgs{\n\t\t\t\tPath: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t\tRevision: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationUserManagedArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicy;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicyArgs;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerWebhookConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerSourceToBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGitFileSourceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var webhookTriggerSecretKey = new Secret(\"webhookTriggerSecretKey\", SecretArgs.builder()\n .secretId(\"webhook-trigger-secret-key\")\n .replication(SecretReplicationArgs.builder()\n .userManaged(SecretReplicationUserManagedArgs.builder()\n .replicas(SecretReplicationUserManagedReplicaArgs.builder()\n .location(\"us-central1\")\n .build())\n .build())\n .build())\n .build());\n\n var webhookTriggerSecretKeyData = new SecretVersion(\"webhookTriggerSecretKeyData\", SecretVersionArgs.builder()\n .secret(webhookTriggerSecretKey.id())\n .secretData(\"secretkeygoeshere\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n final var secretAccessor = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/secretmanager.secretAccessor\")\n .members(String.format(\"serviceAccount:service-%s@gcp-sa-cloudbuild.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .build());\n\n var policy = new SecretIamPolicy(\"policy\", SecretIamPolicyArgs.builder()\n .project(webhookTriggerSecretKey.project())\n .secretId(webhookTriggerSecretKey.secretId())\n .policyData(secretAccessor.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n var webhook_config_trigger = new Trigger(\"webhook-config-trigger\", TriggerArgs.builder()\n .name(\"webhook-trigger\")\n .description(\"acceptance test example webhook build trigger\")\n .webhookConfig(TriggerWebhookConfigArgs.builder()\n .secret(webhookTriggerSecretKeyData.id())\n .build())\n .sourceToBuild(TriggerSourceToBuildArgs.builder()\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .ref(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .build())\n .gitFileSource(TriggerGitFileSourceArgs.builder()\n .path(\"cloudbuild.yaml\")\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .revision(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n webhookTriggerSecretKey:\n type: gcp:secretmanager:Secret\n name: webhook_trigger_secret_key\n properties:\n secretId: webhook-trigger-secret-key\n replication:\n userManaged:\n replicas:\n - location: us-central1\n webhookTriggerSecretKeyData:\n type: gcp:secretmanager:SecretVersion\n name: webhook_trigger_secret_key_data\n properties:\n secret: ${webhookTriggerSecretKey.id}\n secretData: secretkeygoeshere\n policy:\n type: gcp:secretmanager:SecretIamPolicy\n properties:\n project: ${webhookTriggerSecretKey.project}\n secretId: ${webhookTriggerSecretKey.secretId}\n policyData: ${secretAccessor.policyData}\n webhook-config-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: webhook-trigger\n description: acceptance test example webhook build trigger\n webhookConfig:\n secret: ${webhookTriggerSecretKeyData.id}\n sourceToBuild:\n uri: https://hashicorp/terraform-provider-google-beta\n ref: refs/heads/main\n repoType: GITHUB\n gitFileSource:\n path: cloudbuild.yaml\n uri: https://hashicorp/terraform-provider-google-beta\n revision: refs/heads/main\n repoType: GITHUB\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n secretAccessor:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/secretmanager.secretAccessor\n members:\n - serviceAccount:service-${project.number}@gcp-sa-cloudbuild.iam.gserviceaccount.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Manual\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst manual_trigger = new gcp.cloudbuild.Trigger(\"manual-trigger\", {\n name: \"manual-trigger\",\n sourceToBuild: {\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n ref: \"refs/heads/main\",\n repoType: \"GITHUB\",\n },\n gitFileSource: {\n path: \"cloudbuild.yaml\",\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n revision: \"refs/heads/main\",\n repoType: \"GITHUB\",\n },\n approvalConfig: {\n approvalRequired: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmanual_trigger = gcp.cloudbuild.Trigger(\"manual-trigger\",\n name=\"manual-trigger\",\n source_to_build={\n \"uri\": \"https://hashicorp/terraform-provider-google-beta\",\n \"ref\": \"refs/heads/main\",\n \"repo_type\": \"GITHUB\",\n },\n git_file_source={\n \"path\": \"cloudbuild.yaml\",\n \"uri\": \"https://hashicorp/terraform-provider-google-beta\",\n \"revision\": \"refs/heads/main\",\n \"repo_type\": \"GITHUB\",\n },\n approval_config={\n \"approval_required\": True,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var manual_trigger = new Gcp.CloudBuild.Trigger(\"manual-trigger\", new()\n {\n Name = \"manual-trigger\",\n SourceToBuild = new Gcp.CloudBuild.Inputs.TriggerSourceToBuildArgs\n {\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n Ref = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n },\n GitFileSource = new Gcp.CloudBuild.Inputs.TriggerGitFileSourceArgs\n {\n Path = \"cloudbuild.yaml\",\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n Revision = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n },\n ApprovalConfig = new Gcp.CloudBuild.Inputs.TriggerApprovalConfigArgs\n {\n ApprovalRequired = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuild.NewTrigger(ctx, \"manual-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"manual-trigger\"),\n\t\t\tSourceToBuild: \u0026cloudbuild.TriggerSourceToBuildArgs{\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t\tRef: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t},\n\t\t\tGitFileSource: \u0026cloudbuild.TriggerGitFileSourceArgs{\n\t\t\t\tPath: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t\tRevision: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t},\n\t\t\tApprovalConfig: \u0026cloudbuild.TriggerApprovalConfigArgs{\n\t\t\t\tApprovalRequired: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerSourceToBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGitFileSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerApprovalConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var manual_trigger = new Trigger(\"manual-trigger\", TriggerArgs.builder()\n .name(\"manual-trigger\")\n .sourceToBuild(TriggerSourceToBuildArgs.builder()\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .ref(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .build())\n .gitFileSource(TriggerGitFileSourceArgs.builder()\n .path(\"cloudbuild.yaml\")\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .revision(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .build())\n .approvalConfig(TriggerApprovalConfigArgs.builder()\n .approvalRequired(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n manual-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: manual-trigger\n sourceToBuild:\n uri: https://hashicorp/terraform-provider-google-beta\n ref: refs/heads/main\n repoType: GITHUB\n gitFileSource:\n path: cloudbuild.yaml\n uri: https://hashicorp/terraform-provider-google-beta\n revision: refs/heads/main\n repoType: GITHUB\n approvalConfig:\n approvalRequired: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Manual Github Enterprise\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst manual_ghe_trigger = new gcp.cloudbuild.Trigger(\"manual-ghe-trigger\", {\n name: \"\",\n sourceToBuild: {\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n ref: \"refs/heads/main\",\n repoType: \"GITHUB\",\n githubEnterpriseConfig: \"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\n },\n gitFileSource: {\n path: \"cloudbuild.yaml\",\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n revision: \"refs/heads/main\",\n repoType: \"GITHUB\",\n githubEnterpriseConfig: \"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmanual_ghe_trigger = gcp.cloudbuild.Trigger(\"manual-ghe-trigger\",\n name=\"\",\n source_to_build={\n \"uri\": \"https://hashicorp/terraform-provider-google-beta\",\n \"ref\": \"refs/heads/main\",\n \"repo_type\": \"GITHUB\",\n \"github_enterprise_config\": \"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\n },\n git_file_source={\n \"path\": \"cloudbuild.yaml\",\n \"uri\": \"https://hashicorp/terraform-provider-google-beta\",\n \"revision\": \"refs/heads/main\",\n \"repo_type\": \"GITHUB\",\n \"github_enterprise_config\": \"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var manual_ghe_trigger = new Gcp.CloudBuild.Trigger(\"manual-ghe-trigger\", new()\n {\n Name = \"\",\n SourceToBuild = new Gcp.CloudBuild.Inputs.TriggerSourceToBuildArgs\n {\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n Ref = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n GithubEnterpriseConfig = \"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\n },\n GitFileSource = new Gcp.CloudBuild.Inputs.TriggerGitFileSourceArgs\n {\n Path = \"cloudbuild.yaml\",\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n Revision = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n GithubEnterpriseConfig = \"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuild.NewTrigger(ctx, \"manual-ghe-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"\"),\n\t\t\tSourceToBuild: \u0026cloudbuild.TriggerSourceToBuildArgs{\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t\tRef: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t\tGithubEnterpriseConfig: pulumi.String(\"projects/myProject/locations/global/githubEnterpriseConfigs/configID\"),\n\t\t\t},\n\t\t\tGitFileSource: \u0026cloudbuild.TriggerGitFileSourceArgs{\n\t\t\t\tPath: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t\tRevision: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t\tGithubEnterpriseConfig: pulumi.String(\"projects/myProject/locations/global/githubEnterpriseConfigs/configID\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerSourceToBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGitFileSourceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var manual_ghe_trigger = new Trigger(\"manual-ghe-trigger\", TriggerArgs.builder()\n .name(\"\")\n .sourceToBuild(TriggerSourceToBuildArgs.builder()\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .ref(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .githubEnterpriseConfig(\"projects/myProject/locations/global/githubEnterpriseConfigs/configID\")\n .build())\n .gitFileSource(TriggerGitFileSourceArgs.builder()\n .path(\"cloudbuild.yaml\")\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .revision(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .githubEnterpriseConfig(\"projects/myProject/locations/global/githubEnterpriseConfigs/configID\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n manual-ghe-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name:\n sourceToBuild:\n uri: https://hashicorp/terraform-provider-google-beta\n ref: refs/heads/main\n repoType: GITHUB\n githubEnterpriseConfig: projects/myProject/locations/global/githubEnterpriseConfigs/configID\n gitFileSource:\n path: cloudbuild.yaml\n uri: https://hashicorp/terraform-provider-google-beta\n revision: refs/heads/main\n repoType: GITHUB\n githubEnterpriseConfig: projects/myProject/locations/global/githubEnterpriseConfigs/configID\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Manual Bitbucket Server\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst manual_bitbucket_trigger = new gcp.cloudbuild.Trigger(\"manual-bitbucket-trigger\", {\n name: \"terraform-manual-bbs-trigger\",\n sourceToBuild: {\n uri: \"https://bbs.com/scm/stag/test-repo.git\",\n ref: \"refs/heads/main\",\n repoType: \"BITBUCKET_SERVER\",\n bitbucketServerConfig: \"projects/myProject/locations/global/bitbucketServerConfigs/configID\",\n },\n gitFileSource: {\n path: \"cloudbuild.yaml\",\n uri: \"https://bbs.com/scm/stag/test-repo.git\",\n revision: \"refs/heads/main\",\n repoType: \"BITBUCKET_SERVER\",\n bitbucketServerConfig: \"projects/myProject/locations/global/bitbucketServerConfigs/configID\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmanual_bitbucket_trigger = gcp.cloudbuild.Trigger(\"manual-bitbucket-trigger\",\n name=\"terraform-manual-bbs-trigger\",\n source_to_build={\n \"uri\": \"https://bbs.com/scm/stag/test-repo.git\",\n \"ref\": \"refs/heads/main\",\n \"repo_type\": \"BITBUCKET_SERVER\",\n \"bitbucket_server_config\": \"projects/myProject/locations/global/bitbucketServerConfigs/configID\",\n },\n git_file_source={\n \"path\": \"cloudbuild.yaml\",\n \"uri\": \"https://bbs.com/scm/stag/test-repo.git\",\n \"revision\": \"refs/heads/main\",\n \"repo_type\": \"BITBUCKET_SERVER\",\n \"bitbucket_server_config\": \"projects/myProject/locations/global/bitbucketServerConfigs/configID\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var manual_bitbucket_trigger = new Gcp.CloudBuild.Trigger(\"manual-bitbucket-trigger\", new()\n {\n Name = \"terraform-manual-bbs-trigger\",\n SourceToBuild = new Gcp.CloudBuild.Inputs.TriggerSourceToBuildArgs\n {\n Uri = \"https://bbs.com/scm/stag/test-repo.git\",\n Ref = \"refs/heads/main\",\n RepoType = \"BITBUCKET_SERVER\",\n BitbucketServerConfig = \"projects/myProject/locations/global/bitbucketServerConfigs/configID\",\n },\n GitFileSource = new Gcp.CloudBuild.Inputs.TriggerGitFileSourceArgs\n {\n Path = \"cloudbuild.yaml\",\n Uri = \"https://bbs.com/scm/stag/test-repo.git\",\n Revision = \"refs/heads/main\",\n RepoType = \"BITBUCKET_SERVER\",\n BitbucketServerConfig = \"projects/myProject/locations/global/bitbucketServerConfigs/configID\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuild.NewTrigger(ctx, \"manual-bitbucket-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"terraform-manual-bbs-trigger\"),\n\t\t\tSourceToBuild: \u0026cloudbuild.TriggerSourceToBuildArgs{\n\t\t\t\tUri: pulumi.String(\"https://bbs.com/scm/stag/test-repo.git\"),\n\t\t\t\tRef: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"BITBUCKET_SERVER\"),\n\t\t\t\tBitbucketServerConfig: pulumi.String(\"projects/myProject/locations/global/bitbucketServerConfigs/configID\"),\n\t\t\t},\n\t\t\tGitFileSource: \u0026cloudbuild.TriggerGitFileSourceArgs{\n\t\t\t\tPath: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\t\tUri: pulumi.String(\"https://bbs.com/scm/stag/test-repo.git\"),\n\t\t\t\tRevision: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"BITBUCKET_SERVER\"),\n\t\t\t\tBitbucketServerConfig: pulumi.String(\"projects/myProject/locations/global/bitbucketServerConfigs/configID\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerSourceToBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGitFileSourceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var manual_bitbucket_trigger = new Trigger(\"manual-bitbucket-trigger\", TriggerArgs.builder()\n .name(\"terraform-manual-bbs-trigger\")\n .sourceToBuild(TriggerSourceToBuildArgs.builder()\n .uri(\"https://bbs.com/scm/stag/test-repo.git\")\n .ref(\"refs/heads/main\")\n .repoType(\"BITBUCKET_SERVER\")\n .bitbucketServerConfig(\"projects/myProject/locations/global/bitbucketServerConfigs/configID\")\n .build())\n .gitFileSource(TriggerGitFileSourceArgs.builder()\n .path(\"cloudbuild.yaml\")\n .uri(\"https://bbs.com/scm/stag/test-repo.git\")\n .revision(\"refs/heads/main\")\n .repoType(\"BITBUCKET_SERVER\")\n .bitbucketServerConfig(\"projects/myProject/locations/global/bitbucketServerConfigs/configID\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n manual-bitbucket-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: terraform-manual-bbs-trigger\n sourceToBuild:\n uri: https://bbs.com/scm/stag/test-repo.git\n ref: refs/heads/main\n repoType: BITBUCKET_SERVER\n bitbucketServerConfig: projects/myProject/locations/global/bitbucketServerConfigs/configID\n gitFileSource:\n path: cloudbuild.yaml\n uri: https://bbs.com/scm/stag/test-repo.git\n revision: refs/heads/main\n repoType: BITBUCKET_SERVER\n bitbucketServerConfig: projects/myProject/locations/global/bitbucketServerConfigs/configID\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Repo\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_connection = new gcp.cloudbuildv2.Connection(\"my-connection\", {\n location: \"us-central1\",\n name: \"my-connection\",\n githubConfig: {\n appInstallationId: 123123,\n authorizerCredential: {\n oauthTokenSecretVersion: \"projects/my-project/secrets/github-pat-secret/versions/latest\",\n },\n },\n});\nconst my_repository = new gcp.cloudbuildv2.Repository(\"my-repository\", {\n name: \"my-repo\",\n parentConnection: my_connection.id,\n remoteUri: \"https://github.com/myuser/my-repo.git\",\n});\nconst repo_trigger = new gcp.cloudbuild.Trigger(\"repo-trigger\", {\n location: \"us-central1\",\n repositoryEventConfig: {\n repository: my_repository.id,\n push: {\n branch: \"feature-.*\",\n },\n },\n filename: \"cloudbuild.yaml\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_connection = gcp.cloudbuildv2.Connection(\"my-connection\",\n location=\"us-central1\",\n name=\"my-connection\",\n github_config={\n \"app_installation_id\": 123123,\n \"authorizer_credential\": {\n \"oauth_token_secret_version\": \"projects/my-project/secrets/github-pat-secret/versions/latest\",\n },\n })\nmy_repository = gcp.cloudbuildv2.Repository(\"my-repository\",\n name=\"my-repo\",\n parent_connection=my_connection.id,\n remote_uri=\"https://github.com/myuser/my-repo.git\")\nrepo_trigger = gcp.cloudbuild.Trigger(\"repo-trigger\",\n location=\"us-central1\",\n repository_event_config={\n \"repository\": my_repository.id,\n \"push\": {\n \"branch\": \"feature-.*\",\n },\n },\n filename=\"cloudbuild.yaml\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_connection = new Gcp.CloudBuildV2.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n Name = \"my-connection\",\n GithubConfig = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigArgs\n {\n AppInstallationId = 123123,\n AuthorizerCredential = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigAuthorizerCredentialArgs\n {\n OauthTokenSecretVersion = \"projects/my-project/secrets/github-pat-secret/versions/latest\",\n },\n },\n });\n\n var my_repository = new Gcp.CloudBuildV2.Repository(\"my-repository\", new()\n {\n Name = \"my-repo\",\n ParentConnection = my_connection.Id,\n RemoteUri = \"https://github.com/myuser/my-repo.git\",\n });\n\n var repo_trigger = new Gcp.CloudBuild.Trigger(\"repo-trigger\", new()\n {\n Location = \"us-central1\",\n RepositoryEventConfig = new Gcp.CloudBuild.Inputs.TriggerRepositoryEventConfigArgs\n {\n Repository = my_repository.Id,\n Push = new Gcp.CloudBuild.Inputs.TriggerRepositoryEventConfigPushArgs\n {\n Branch = \"feature-.*\",\n },\n },\n Filename = \"cloudbuild.yaml\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuildv2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuildv2.NewConnection(ctx, \"my-connection\", \u0026cloudbuildv2.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-connection\"),\n\t\t\tGithubConfig: \u0026cloudbuildv2.ConnectionGithubConfigArgs{\n\t\t\t\tAppInstallationId: pulumi.Int(123123),\n\t\t\t\tAuthorizerCredential: \u0026cloudbuildv2.ConnectionGithubConfigAuthorizerCredentialArgs{\n\t\t\t\t\tOauthTokenSecretVersion: pulumi.String(\"projects/my-project/secrets/github-pat-secret/versions/latest\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuildv2.NewRepository(ctx, \"my-repository\", \u0026cloudbuildv2.RepositoryArgs{\n\t\t\tName: pulumi.String(\"my-repo\"),\n\t\t\tParentConnection: my_connection.ID(),\n\t\t\tRemoteUri: pulumi.String(\"https://github.com/myuser/my-repo.git\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuild.NewTrigger(ctx, \"repo-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryEventConfig: \u0026cloudbuild.TriggerRepositoryEventConfigArgs{\n\t\t\t\tRepository: my_repository.ID(),\n\t\t\t\tPush: \u0026cloudbuild.TriggerRepositoryEventConfigPushArgs{\n\t\t\t\t\tBranch: pulumi.String(\"feature-.*\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFilename: pulumi.String(\"cloudbuild.yaml\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuildv2.Connection;\nimport com.pulumi.gcp.cloudbuildv2.ConnectionArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubConfigArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubConfigAuthorizerCredentialArgs;\nimport com.pulumi.gcp.cloudbuildv2.Repository;\nimport com.pulumi.gcp.cloudbuildv2.RepositoryArgs;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerRepositoryEventConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerRepositoryEventConfigPushArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .name(\"my-connection\")\n .githubConfig(ConnectionGithubConfigArgs.builder()\n .appInstallationId(123123)\n .authorizerCredential(ConnectionGithubConfigAuthorizerCredentialArgs.builder()\n .oauthTokenSecretVersion(\"projects/my-project/secrets/github-pat-secret/versions/latest\")\n .build())\n .build())\n .build());\n\n var my_repository = new Repository(\"my-repository\", RepositoryArgs.builder()\n .name(\"my-repo\")\n .parentConnection(my_connection.id())\n .remoteUri(\"https://github.com/myuser/my-repo.git\")\n .build());\n\n var repo_trigger = new Trigger(\"repo-trigger\", TriggerArgs.builder()\n .location(\"us-central1\")\n .repositoryEventConfig(TriggerRepositoryEventConfigArgs.builder()\n .repository(my_repository.id())\n .push(TriggerRepositoryEventConfigPushArgs.builder()\n .branch(\"feature-.*\")\n .build())\n .build())\n .filename(\"cloudbuild.yaml\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-connection:\n type: gcp:cloudbuildv2:Connection\n properties:\n location: us-central1\n name: my-connection\n githubConfig:\n appInstallationId: 123123\n authorizerCredential:\n oauthTokenSecretVersion: projects/my-project/secrets/github-pat-secret/versions/latest\n my-repository:\n type: gcp:cloudbuildv2:Repository\n properties:\n name: my-repo\n parentConnection: ${[\"my-connection\"].id}\n remoteUri: https://github.com/myuser/my-repo.git\n repo-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n location: us-central1\n repositoryEventConfig:\n repository: ${[\"my-repository\"].id}\n push:\n branch: feature-.*\n filename: cloudbuild.yaml\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Bitbucket Server Push\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bbs_push_trigger = new gcp.cloudbuild.Trigger(\"bbs-push-trigger\", {\n name: \"bbs-push-trigger\",\n location: \"us-central1\",\n bitbucketServerTriggerConfig: {\n repoSlug: \"bbs-push-trigger\",\n projectKey: \"STAG\",\n bitbucketServerConfigResource: \"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n push: {\n tag: \"^0.1.*\",\n invertRegex: true,\n },\n },\n filename: \"cloudbuild.yaml\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbbs_push_trigger = gcp.cloudbuild.Trigger(\"bbs-push-trigger\",\n name=\"bbs-push-trigger\",\n location=\"us-central1\",\n bitbucket_server_trigger_config={\n \"repo_slug\": \"bbs-push-trigger\",\n \"project_key\": \"STAG\",\n \"bitbucket_server_config_resource\": \"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n \"push\": {\n \"tag\": \"^0.1.*\",\n \"invert_regex\": True,\n },\n },\n filename=\"cloudbuild.yaml\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bbs_push_trigger = new Gcp.CloudBuild.Trigger(\"bbs-push-trigger\", new()\n {\n Name = \"bbs-push-trigger\",\n Location = \"us-central1\",\n BitbucketServerTriggerConfig = new Gcp.CloudBuild.Inputs.TriggerBitbucketServerTriggerConfigArgs\n {\n RepoSlug = \"bbs-push-trigger\",\n ProjectKey = \"STAG\",\n BitbucketServerConfigResource = \"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n Push = new Gcp.CloudBuild.Inputs.TriggerBitbucketServerTriggerConfigPushArgs\n {\n Tag = \"^0.1.*\",\n InvertRegex = true,\n },\n },\n Filename = \"cloudbuild.yaml\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuild.NewTrigger(ctx, \"bbs-push-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"bbs-push-trigger\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBitbucketServerTriggerConfig: \u0026cloudbuild.TriggerBitbucketServerTriggerConfigArgs{\n\t\t\t\tRepoSlug: pulumi.String(\"bbs-push-trigger\"),\n\t\t\t\tProjectKey: pulumi.String(\"STAG\"),\n\t\t\t\tBitbucketServerConfigResource: pulumi.String(\"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\"),\n\t\t\t\tPush: \u0026cloudbuild.TriggerBitbucketServerTriggerConfigPushArgs{\n\t\t\t\t\tTag: pulumi.String(\"^0.1.*\"),\n\t\t\t\t\tInvertRegex: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFilename: pulumi.String(\"cloudbuild.yaml\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBitbucketServerTriggerConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBitbucketServerTriggerConfigPushArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bbs_push_trigger = new Trigger(\"bbs-push-trigger\", TriggerArgs.builder()\n .name(\"bbs-push-trigger\")\n .location(\"us-central1\")\n .bitbucketServerTriggerConfig(TriggerBitbucketServerTriggerConfigArgs.builder()\n .repoSlug(\"bbs-push-trigger\")\n .projectKey(\"STAG\")\n .bitbucketServerConfigResource(\"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\")\n .push(TriggerBitbucketServerTriggerConfigPushArgs.builder()\n .tag(\"^0.1.*\")\n .invertRegex(true)\n .build())\n .build())\n .filename(\"cloudbuild.yaml\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bbs-push-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: bbs-push-trigger\n location: us-central1\n bitbucketServerTriggerConfig:\n repoSlug: bbs-push-trigger\n projectKey: STAG\n bitbucketServerConfigResource: projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\n push:\n tag: ^0.1.*\n invertRegex: true\n filename: cloudbuild.yaml\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Bitbucket Server Pull Request\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bbs_pull_request_trigger = new gcp.cloudbuild.Trigger(\"bbs-pull-request-trigger\", {\n name: \"ghe-trigger\",\n location: \"us-central1\",\n bitbucketServerTriggerConfig: {\n repoSlug: \"terraform-provider-google\",\n projectKey: \"STAG\",\n bitbucketServerConfigResource: \"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n pullRequest: {\n branch: \"^master$\",\n invertRegex: false,\n commentControl: \"COMMENTS_ENABLED\",\n },\n },\n filename: \"cloudbuild.yaml\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbbs_pull_request_trigger = gcp.cloudbuild.Trigger(\"bbs-pull-request-trigger\",\n name=\"ghe-trigger\",\n location=\"us-central1\",\n bitbucket_server_trigger_config={\n \"repo_slug\": \"terraform-provider-google\",\n \"project_key\": \"STAG\",\n \"bitbucket_server_config_resource\": \"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n \"pull_request\": {\n \"branch\": \"^master$\",\n \"invert_regex\": False,\n \"comment_control\": \"COMMENTS_ENABLED\",\n },\n },\n filename=\"cloudbuild.yaml\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bbs_pull_request_trigger = new Gcp.CloudBuild.Trigger(\"bbs-pull-request-trigger\", new()\n {\n Name = \"ghe-trigger\",\n Location = \"us-central1\",\n BitbucketServerTriggerConfig = new Gcp.CloudBuild.Inputs.TriggerBitbucketServerTriggerConfigArgs\n {\n RepoSlug = \"terraform-provider-google\",\n ProjectKey = \"STAG\",\n BitbucketServerConfigResource = \"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n PullRequest = new Gcp.CloudBuild.Inputs.TriggerBitbucketServerTriggerConfigPullRequestArgs\n {\n Branch = \"^master$\",\n InvertRegex = false,\n CommentControl = \"COMMENTS_ENABLED\",\n },\n },\n Filename = \"cloudbuild.yaml\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuild.NewTrigger(ctx, \"bbs-pull-request-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"ghe-trigger\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBitbucketServerTriggerConfig: \u0026cloudbuild.TriggerBitbucketServerTriggerConfigArgs{\n\t\t\t\tRepoSlug: pulumi.String(\"terraform-provider-google\"),\n\t\t\t\tProjectKey: pulumi.String(\"STAG\"),\n\t\t\t\tBitbucketServerConfigResource: pulumi.String(\"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\"),\n\t\t\t\tPullRequest: \u0026cloudbuild.TriggerBitbucketServerTriggerConfigPullRequestArgs{\n\t\t\t\t\tBranch: pulumi.String(\"^master$\"),\n\t\t\t\t\tInvertRegex: pulumi.Bool(false),\n\t\t\t\t\tCommentControl: pulumi.String(\"COMMENTS_ENABLED\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFilename: pulumi.String(\"cloudbuild.yaml\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBitbucketServerTriggerConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBitbucketServerTriggerConfigPullRequestArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bbs_pull_request_trigger = new Trigger(\"bbs-pull-request-trigger\", TriggerArgs.builder()\n .name(\"ghe-trigger\")\n .location(\"us-central1\")\n .bitbucketServerTriggerConfig(TriggerBitbucketServerTriggerConfigArgs.builder()\n .repoSlug(\"terraform-provider-google\")\n .projectKey(\"STAG\")\n .bitbucketServerConfigResource(\"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\")\n .pullRequest(TriggerBitbucketServerTriggerConfigPullRequestArgs.builder()\n .branch(\"^master$\")\n .invertRegex(false)\n .commentControl(\"COMMENTS_ENABLED\")\n .build())\n .build())\n .filename(\"cloudbuild.yaml\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bbs-pull-request-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: ghe-trigger\n location: us-central1\n bitbucketServerTriggerConfig:\n repoSlug: terraform-provider-google\n projectKey: STAG\n bitbucketServerConfigResource: projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\n pullRequest:\n branch: ^master$\n invertRegex: false\n commentControl: COMMENTS_ENABLED\n filename: cloudbuild.yaml\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Github Enterprise\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst ghe_trigger = new gcp.cloudbuild.Trigger(\"ghe-trigger\", {\n name: \"ghe-trigger\",\n location: \"us-central1\",\n github: {\n owner: \"hashicorp\",\n name: \"terraform-provider-google\",\n push: {\n branch: \"^main$\",\n },\n enterpriseConfigResourceName: \"projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\",\n },\n filename: \"cloudbuild.yaml\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nghe_trigger = gcp.cloudbuild.Trigger(\"ghe-trigger\",\n name=\"ghe-trigger\",\n location=\"us-central1\",\n github={\n \"owner\": \"hashicorp\",\n \"name\": \"terraform-provider-google\",\n \"push\": {\n \"branch\": \"^main$\",\n },\n \"enterprise_config_resource_name\": \"projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\",\n },\n filename=\"cloudbuild.yaml\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var ghe_trigger = new Gcp.CloudBuild.Trigger(\"ghe-trigger\", new()\n {\n Name = \"ghe-trigger\",\n Location = \"us-central1\",\n Github = new Gcp.CloudBuild.Inputs.TriggerGithubArgs\n {\n Owner = \"hashicorp\",\n Name = \"terraform-provider-google\",\n Push = new Gcp.CloudBuild.Inputs.TriggerGithubPushArgs\n {\n Branch = \"^main$\",\n },\n EnterpriseConfigResourceName = \"projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\",\n },\n Filename = \"cloudbuild.yaml\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuild.NewTrigger(ctx, \"ghe-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"ghe-trigger\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tGithub: \u0026cloudbuild.TriggerGithubArgs{\n\t\t\t\tOwner: pulumi.String(\"hashicorp\"),\n\t\t\t\tName: pulumi.String(\"terraform-provider-google\"),\n\t\t\t\tPush: \u0026cloudbuild.TriggerGithubPushArgs{\n\t\t\t\t\tBranch: pulumi.String(\"^main$\"),\n\t\t\t\t},\n\t\t\t\tEnterpriseConfigResourceName: pulumi.String(\"projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\"),\n\t\t\t},\n\t\t\tFilename: pulumi.String(\"cloudbuild.yaml\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGithubArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGithubPushArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var ghe_trigger = new Trigger(\"ghe-trigger\", TriggerArgs.builder()\n .name(\"ghe-trigger\")\n .location(\"us-central1\")\n .github(TriggerGithubArgs.builder()\n .owner(\"hashicorp\")\n .name(\"terraform-provider-google\")\n .push(TriggerGithubPushArgs.builder()\n .branch(\"^main$\")\n .build())\n .enterpriseConfigResourceName(\"projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\")\n .build())\n .filename(\"cloudbuild.yaml\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ghe-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: ghe-trigger\n location: us-central1\n github:\n owner: hashicorp\n name: terraform-provider-google\n push:\n branch: ^main$\n enterpriseConfigResourceName: projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\n filename: cloudbuild.yaml\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Allow Failure\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst allow_failure_trigger = new gcp.cloudbuild.Trigger(\"allow-failure-trigger\", {\n name: \"my-trigger\",\n location: \"global\",\n triggerTemplate: {\n branchName: \"main\",\n repoName: \"my-repo\",\n },\n build: {\n steps: [{\n name: \"ubuntu\",\n args: [\n \"-c\",\n \"exit 1\",\n ],\n allowFailure: true,\n }],\n source: {\n storageSource: {\n bucket: \"mybucket\",\n object: \"source_code.tar.gz\",\n },\n },\n tags: [\n \"build\",\n \"newFeature\",\n ],\n substitutions: {\n _FOO: \"bar\",\n _BAZ: \"qux\",\n },\n queueTtl: \"20s\",\n logsBucket: \"gs://mybucket/logs\",\n secrets: [{\n kmsKeyName: \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n secretEnv: {\n PASSWORD: \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\",\n },\n }],\n availableSecrets: {\n secretManagers: [{\n env: \"MY_SECRET\",\n versionName: \"projects/myProject/secrets/mySecret/versions/latest\",\n }],\n },\n artifacts: {\n images: [\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"],\n objects: {\n location: \"gs://bucket/path/to/somewhere/\",\n paths: [\"path\"],\n },\n },\n options: {\n sourceProvenanceHashes: [\"MD5\"],\n requestedVerifyOption: \"VERIFIED\",\n machineType: \"N1_HIGHCPU_8\",\n diskSizeGb: 100,\n substitutionOption: \"ALLOW_LOOSE\",\n dynamicSubstitutions: true,\n logStreamingOption: \"STREAM_OFF\",\n workerPool: \"pool\",\n logging: \"LEGACY\",\n envs: [\"ekey = evalue\"],\n secretEnvs: [\"secretenv = svalue\"],\n volumes: [{\n name: \"v1\",\n path: \"v1\",\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nallow_failure_trigger = gcp.cloudbuild.Trigger(\"allow-failure-trigger\",\n name=\"my-trigger\",\n location=\"global\",\n trigger_template={\n \"branch_name\": \"main\",\n \"repo_name\": \"my-repo\",\n },\n build={\n \"steps\": [{\n \"name\": \"ubuntu\",\n \"args\": [\n \"-c\",\n \"exit 1\",\n ],\n \"allow_failure\": True,\n }],\n \"source\": {\n \"storage_source\": {\n \"bucket\": \"mybucket\",\n \"object\": \"source_code.tar.gz\",\n },\n },\n \"tags\": [\n \"build\",\n \"newFeature\",\n ],\n \"substitutions\": {\n \"__foo\": \"bar\",\n \"__baz\": \"qux\",\n },\n \"queue_ttl\": \"20s\",\n \"logs_bucket\": \"gs://mybucket/logs\",\n \"secrets\": [{\n \"kms_key_name\": \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n \"secret_env\": {\n \"password\": \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\",\n },\n }],\n \"available_secrets\": {\n \"secret_managers\": [{\n \"env\": \"MY_SECRET\",\n \"version_name\": \"projects/myProject/secrets/mySecret/versions/latest\",\n }],\n },\n \"artifacts\": {\n \"images\": [\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"],\n \"objects\": {\n \"location\": \"gs://bucket/path/to/somewhere/\",\n \"paths\": [\"path\"],\n },\n },\n \"options\": {\n \"source_provenance_hashes\": [\"MD5\"],\n \"requested_verify_option\": \"VERIFIED\",\n \"machine_type\": \"N1_HIGHCPU_8\",\n \"disk_size_gb\": 100,\n \"substitution_option\": \"ALLOW_LOOSE\",\n \"dynamic_substitutions\": True,\n \"log_streaming_option\": \"STREAM_OFF\",\n \"worker_pool\": \"pool\",\n \"logging\": \"LEGACY\",\n \"envs\": [\"ekey = evalue\"],\n \"secret_envs\": [\"secretenv = svalue\"],\n \"volumes\": [{\n \"name\": \"v1\",\n \"path\": \"v1\",\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var allow_failure_trigger = new Gcp.CloudBuild.Trigger(\"allow-failure-trigger\", new()\n {\n Name = \"my-trigger\",\n Location = \"global\",\n TriggerTemplate = new Gcp.CloudBuild.Inputs.TriggerTriggerTemplateArgs\n {\n BranchName = \"main\",\n RepoName = \"my-repo\",\n },\n Build = new Gcp.CloudBuild.Inputs.TriggerBuildArgs\n {\n Steps = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildStepArgs\n {\n Name = \"ubuntu\",\n Args = new[]\n {\n \"-c\",\n \"exit 1\",\n },\n AllowFailure = true,\n },\n },\n Source = new Gcp.CloudBuild.Inputs.TriggerBuildSourceArgs\n {\n StorageSource = new Gcp.CloudBuild.Inputs.TriggerBuildSourceStorageSourceArgs\n {\n Bucket = \"mybucket\",\n Object = \"source_code.tar.gz\",\n },\n },\n Tags = new[]\n {\n \"build\",\n \"newFeature\",\n },\n Substitutions = \n {\n { \"_FOO\", \"bar\" },\n { \"_BAZ\", \"qux\" },\n },\n QueueTtl = \"20s\",\n LogsBucket = \"gs://mybucket/logs\",\n Secrets = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildSecretArgs\n {\n KmsKeyName = \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n SecretEnv = \n {\n { \"PASSWORD\", \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\" },\n },\n },\n },\n AvailableSecrets = new Gcp.CloudBuild.Inputs.TriggerBuildAvailableSecretsArgs\n {\n SecretManagers = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildAvailableSecretsSecretManagerArgs\n {\n Env = \"MY_SECRET\",\n VersionName = \"projects/myProject/secrets/mySecret/versions/latest\",\n },\n },\n },\n Artifacts = new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsArgs\n {\n Images = new[]\n {\n \"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\",\n },\n Objects = new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsObjectsArgs\n {\n Location = \"gs://bucket/path/to/somewhere/\",\n Paths = new[]\n {\n \"path\",\n },\n },\n },\n Options = new Gcp.CloudBuild.Inputs.TriggerBuildOptionsArgs\n {\n SourceProvenanceHashes = new[]\n {\n \"MD5\",\n },\n RequestedVerifyOption = \"VERIFIED\",\n MachineType = \"N1_HIGHCPU_8\",\n DiskSizeGb = 100,\n SubstitutionOption = \"ALLOW_LOOSE\",\n DynamicSubstitutions = true,\n LogStreamingOption = \"STREAM_OFF\",\n WorkerPool = \"pool\",\n Logging = \"LEGACY\",\n Envs = new[]\n {\n \"ekey = evalue\",\n },\n SecretEnvs = new[]\n {\n \"secretenv = svalue\",\n },\n Volumes = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildOptionsVolumeArgs\n {\n Name = \"v1\",\n Path = \"v1\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuild.NewTrigger(ctx, \"allow-failure-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"my-trigger\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tTriggerTemplate: \u0026cloudbuild.TriggerTriggerTemplateArgs{\n\t\t\t\tBranchName: pulumi.String(\"main\"),\n\t\t\t\tRepoName: pulumi.String(\"my-repo\"),\n\t\t\t},\n\t\t\tBuild: \u0026cloudbuild.TriggerBuildArgs{\n\t\t\t\tSteps: cloudbuild.TriggerBuildStepArray{\n\t\t\t\t\t\u0026cloudbuild.TriggerBuildStepArgs{\n\t\t\t\t\t\tName: pulumi.String(\"ubuntu\"),\n\t\t\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"-c\"),\n\t\t\t\t\t\t\tpulumi.String(\"exit 1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAllowFailure: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudbuild.TriggerBuildSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudbuild.TriggerBuildSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: pulumi.String(\"mybucket\"),\n\t\t\t\t\t\tObject: pulumi.String(\"source_code.tar.gz\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"build\"),\n\t\t\t\t\tpulumi.String(\"newFeature\"),\n\t\t\t\t},\n\t\t\t\tSubstitutions: pulumi.StringMap{\n\t\t\t\t\t\"_FOO\": pulumi.String(\"bar\"),\n\t\t\t\t\t\"_BAZ\": pulumi.String(\"qux\"),\n\t\t\t\t},\n\t\t\t\tQueueTtl: pulumi.String(\"20s\"),\n\t\t\t\tLogsBucket: pulumi.String(\"gs://mybucket/logs\"),\n\t\t\t\tSecrets: cloudbuild.TriggerBuildSecretArray{\n\t\t\t\t\t\u0026cloudbuild.TriggerBuildSecretArgs{\n\t\t\t\t\t\tKmsKeyName: pulumi.String(\"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\"),\n\t\t\t\t\t\tSecretEnv: pulumi.StringMap{\n\t\t\t\t\t\t\t\"PASSWORD\": pulumi.String(\"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAvailableSecrets: \u0026cloudbuild.TriggerBuildAvailableSecretsArgs{\n\t\t\t\t\tSecretManagers: cloudbuild.TriggerBuildAvailableSecretsSecretManagerArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildAvailableSecretsSecretManagerArgs{\n\t\t\t\t\t\t\tEnv: pulumi.String(\"MY_SECRET\"),\n\t\t\t\t\t\t\tVersionName: pulumi.String(\"projects/myProject/secrets/mySecret/versions/latest\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tArtifacts: \u0026cloudbuild.TriggerBuildArtifactsArgs{\n\t\t\t\t\tImages: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"),\n\t\t\t\t\t},\n\t\t\t\t\tObjects: \u0026cloudbuild.TriggerBuildArtifactsObjectsArgs{\n\t\t\t\t\t\tLocation: pulumi.String(\"gs://bucket/path/to/somewhere/\"),\n\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"path\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tOptions: \u0026cloudbuild.TriggerBuildOptionsArgs{\n\t\t\t\t\tSourceProvenanceHashes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"MD5\"),\n\t\t\t\t\t},\n\t\t\t\t\tRequestedVerifyOption: pulumi.String(\"VERIFIED\"),\n\t\t\t\t\tMachineType: pulumi.String(\"N1_HIGHCPU_8\"),\n\t\t\t\t\tDiskSizeGb: pulumi.Int(100),\n\t\t\t\t\tSubstitutionOption: pulumi.String(\"ALLOW_LOOSE\"),\n\t\t\t\t\tDynamicSubstitutions: pulumi.Bool(true),\n\t\t\t\t\tLogStreamingOption: pulumi.String(\"STREAM_OFF\"),\n\t\t\t\t\tWorkerPool: pulumi.String(\"pool\"),\n\t\t\t\t\tLogging: pulumi.String(\"LEGACY\"),\n\t\t\t\t\tEnvs: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ekey = evalue\"),\n\t\t\t\t\t},\n\t\t\t\t\tSecretEnvs: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"secretenv = svalue\"),\n\t\t\t\t\t},\n\t\t\t\t\tVolumes: cloudbuild.TriggerBuildOptionsVolumeArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildOptionsVolumeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"v1\"),\n\t\t\t\t\t\t\tPath: pulumi.String(\"v1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerTriggerTemplateArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildAvailableSecretsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsObjectsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildOptionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var allow_failure_trigger = new Trigger(\"allow-failure-trigger\", TriggerArgs.builder()\n .name(\"my-trigger\")\n .location(\"global\")\n .triggerTemplate(TriggerTriggerTemplateArgs.builder()\n .branchName(\"main\")\n .repoName(\"my-repo\")\n .build())\n .build(TriggerBuildArgs.builder()\n .steps(TriggerBuildStepArgs.builder()\n .name(\"ubuntu\")\n .args( \n \"-c\",\n \"exit 1\")\n .allowFailure(true)\n .build())\n .source(TriggerBuildSourceArgs.builder()\n .storageSource(TriggerBuildSourceStorageSourceArgs.builder()\n .bucket(\"mybucket\")\n .object(\"source_code.tar.gz\")\n .build())\n .build())\n .tags( \n \"build\",\n \"newFeature\")\n .substitutions(Map.ofEntries(\n Map.entry(\"_FOO\", \"bar\"),\n Map.entry(\"_BAZ\", \"qux\")\n ))\n .queueTtl(\"20s\")\n .logsBucket(\"gs://mybucket/logs\")\n .secrets(TriggerBuildSecretArgs.builder()\n .kmsKeyName(\"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\")\n .secretEnv(Map.of(\"PASSWORD\", \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\"))\n .build())\n .availableSecrets(TriggerBuildAvailableSecretsArgs.builder()\n .secretManagers(TriggerBuildAvailableSecretsSecretManagerArgs.builder()\n .env(\"MY_SECRET\")\n .versionName(\"projects/myProject/secrets/mySecret/versions/latest\")\n .build())\n .build())\n .artifacts(TriggerBuildArtifactsArgs.builder()\n .images(\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\")\n .objects(TriggerBuildArtifactsObjectsArgs.builder()\n .location(\"gs://bucket/path/to/somewhere/\")\n .paths(\"path\")\n .build())\n .build())\n .options(TriggerBuildOptionsArgs.builder()\n .sourceProvenanceHashes(\"MD5\")\n .requestedVerifyOption(\"VERIFIED\")\n .machineType(\"N1_HIGHCPU_8\")\n .diskSizeGb(100)\n .substitutionOption(\"ALLOW_LOOSE\")\n .dynamicSubstitutions(true)\n .logStreamingOption(\"STREAM_OFF\")\n .workerPool(\"pool\")\n .logging(\"LEGACY\")\n .envs(\"ekey = evalue\")\n .secretEnvs(\"secretenv = svalue\")\n .volumes(TriggerBuildOptionsVolumeArgs.builder()\n .name(\"v1\")\n .path(\"v1\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n allow-failure-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: my-trigger\n location: global\n triggerTemplate:\n branchName: main\n repoName: my-repo\n build:\n steps:\n - name: ubuntu\n args:\n - -c\n - exit 1\n allowFailure: true\n source:\n storageSource:\n bucket: mybucket\n object: source_code.tar.gz\n tags:\n - build\n - newFeature\n substitutions:\n _FOO: bar\n _BAZ: qux\n queueTtl: 20s\n logsBucket: gs://mybucket/logs\n secrets:\n - kmsKeyName: projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\n secretEnv:\n PASSWORD: ZW5jcnlwdGVkLXBhc3N3b3JkCg==\n availableSecrets:\n secretManagers:\n - env: MY_SECRET\n versionName: projects/myProject/secrets/mySecret/versions/latest\n artifacts:\n images:\n - gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\n objects:\n location: gs://bucket/path/to/somewhere/\n paths:\n - path\n options:\n sourceProvenanceHashes:\n - MD5\n requestedVerifyOption: VERIFIED\n machineType: N1_HIGHCPU_8\n diskSizeGb: 100\n substitutionOption: ALLOW_LOOSE\n dynamicSubstitutions: true\n logStreamingOption: STREAM_OFF\n workerPool: pool\n logging: LEGACY\n envs:\n - ekey = evalue\n secretEnvs:\n - secretenv = svalue\n volumes:\n - name: v1\n path: v1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Allow Exit Codes\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst allow_exit_codes_trigger = new gcp.cloudbuild.Trigger(\"allow-exit-codes-trigger\", {\n name: \"my-trigger\",\n location: \"global\",\n triggerTemplate: {\n branchName: \"main\",\n repoName: \"my-repo\",\n },\n build: {\n steps: [{\n name: \"ubuntu\",\n args: [\n \"-c\",\n \"exit 1\",\n ],\n allowExitCodes: [\n 1,\n 3,\n ],\n }],\n source: {\n storageSource: {\n bucket: \"mybucket\",\n object: \"source_code.tar.gz\",\n },\n },\n tags: [\n \"build\",\n \"newFeature\",\n ],\n substitutions: {\n _FOO: \"bar\",\n _BAZ: \"qux\",\n },\n queueTtl: \"20s\",\n logsBucket: \"gs://mybucket/logs\",\n secrets: [{\n kmsKeyName: \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n secretEnv: {\n PASSWORD: \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\",\n },\n }],\n availableSecrets: {\n secretManagers: [{\n env: \"MY_SECRET\",\n versionName: \"projects/myProject/secrets/mySecret/versions/latest\",\n }],\n },\n artifacts: {\n images: [\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"],\n objects: {\n location: \"gs://bucket/path/to/somewhere/\",\n paths: [\"path\"],\n },\n },\n options: {\n sourceProvenanceHashes: [\"MD5\"],\n requestedVerifyOption: \"VERIFIED\",\n machineType: \"N1_HIGHCPU_8\",\n diskSizeGb: 100,\n substitutionOption: \"ALLOW_LOOSE\",\n dynamicSubstitutions: true,\n logStreamingOption: \"STREAM_OFF\",\n workerPool: \"pool\",\n logging: \"LEGACY\",\n envs: [\"ekey = evalue\"],\n secretEnvs: [\"secretenv = svalue\"],\n volumes: [{\n name: \"v1\",\n path: \"v1\",\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nallow_exit_codes_trigger = gcp.cloudbuild.Trigger(\"allow-exit-codes-trigger\",\n name=\"my-trigger\",\n location=\"global\",\n trigger_template={\n \"branch_name\": \"main\",\n \"repo_name\": \"my-repo\",\n },\n build={\n \"steps\": [{\n \"name\": \"ubuntu\",\n \"args\": [\n \"-c\",\n \"exit 1\",\n ],\n \"allow_exit_codes\": [\n 1,\n 3,\n ],\n }],\n \"source\": {\n \"storage_source\": {\n \"bucket\": \"mybucket\",\n \"object\": \"source_code.tar.gz\",\n },\n },\n \"tags\": [\n \"build\",\n \"newFeature\",\n ],\n \"substitutions\": {\n \"__foo\": \"bar\",\n \"__baz\": \"qux\",\n },\n \"queue_ttl\": \"20s\",\n \"logs_bucket\": \"gs://mybucket/logs\",\n \"secrets\": [{\n \"kms_key_name\": \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n \"secret_env\": {\n \"password\": \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\",\n },\n }],\n \"available_secrets\": {\n \"secret_managers\": [{\n \"env\": \"MY_SECRET\",\n \"version_name\": \"projects/myProject/secrets/mySecret/versions/latest\",\n }],\n },\n \"artifacts\": {\n \"images\": [\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"],\n \"objects\": {\n \"location\": \"gs://bucket/path/to/somewhere/\",\n \"paths\": [\"path\"],\n },\n },\n \"options\": {\n \"source_provenance_hashes\": [\"MD5\"],\n \"requested_verify_option\": \"VERIFIED\",\n \"machine_type\": \"N1_HIGHCPU_8\",\n \"disk_size_gb\": 100,\n \"substitution_option\": \"ALLOW_LOOSE\",\n \"dynamic_substitutions\": True,\n \"log_streaming_option\": \"STREAM_OFF\",\n \"worker_pool\": \"pool\",\n \"logging\": \"LEGACY\",\n \"envs\": [\"ekey = evalue\"],\n \"secret_envs\": [\"secretenv = svalue\"],\n \"volumes\": [{\n \"name\": \"v1\",\n \"path\": \"v1\",\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var allow_exit_codes_trigger = new Gcp.CloudBuild.Trigger(\"allow-exit-codes-trigger\", new()\n {\n Name = \"my-trigger\",\n Location = \"global\",\n TriggerTemplate = new Gcp.CloudBuild.Inputs.TriggerTriggerTemplateArgs\n {\n BranchName = \"main\",\n RepoName = \"my-repo\",\n },\n Build = new Gcp.CloudBuild.Inputs.TriggerBuildArgs\n {\n Steps = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildStepArgs\n {\n Name = \"ubuntu\",\n Args = new[]\n {\n \"-c\",\n \"exit 1\",\n },\n AllowExitCodes = new[]\n {\n 1,\n 3,\n },\n },\n },\n Source = new Gcp.CloudBuild.Inputs.TriggerBuildSourceArgs\n {\n StorageSource = new Gcp.CloudBuild.Inputs.TriggerBuildSourceStorageSourceArgs\n {\n Bucket = \"mybucket\",\n Object = \"source_code.tar.gz\",\n },\n },\n Tags = new[]\n {\n \"build\",\n \"newFeature\",\n },\n Substitutions = \n {\n { \"_FOO\", \"bar\" },\n { \"_BAZ\", \"qux\" },\n },\n QueueTtl = \"20s\",\n LogsBucket = \"gs://mybucket/logs\",\n Secrets = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildSecretArgs\n {\n KmsKeyName = \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n SecretEnv = \n {\n { \"PASSWORD\", \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\" },\n },\n },\n },\n AvailableSecrets = new Gcp.CloudBuild.Inputs.TriggerBuildAvailableSecretsArgs\n {\n SecretManagers = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildAvailableSecretsSecretManagerArgs\n {\n Env = \"MY_SECRET\",\n VersionName = \"projects/myProject/secrets/mySecret/versions/latest\",\n },\n },\n },\n Artifacts = new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsArgs\n {\n Images = new[]\n {\n \"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\",\n },\n Objects = new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsObjectsArgs\n {\n Location = \"gs://bucket/path/to/somewhere/\",\n Paths = new[]\n {\n \"path\",\n },\n },\n },\n Options = new Gcp.CloudBuild.Inputs.TriggerBuildOptionsArgs\n {\n SourceProvenanceHashes = new[]\n {\n \"MD5\",\n },\n RequestedVerifyOption = \"VERIFIED\",\n MachineType = \"N1_HIGHCPU_8\",\n DiskSizeGb = 100,\n SubstitutionOption = \"ALLOW_LOOSE\",\n DynamicSubstitutions = true,\n LogStreamingOption = \"STREAM_OFF\",\n WorkerPool = \"pool\",\n Logging = \"LEGACY\",\n Envs = new[]\n {\n \"ekey = evalue\",\n },\n SecretEnvs = new[]\n {\n \"secretenv = svalue\",\n },\n Volumes = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildOptionsVolumeArgs\n {\n Name = \"v1\",\n Path = \"v1\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuild.NewTrigger(ctx, \"allow-exit-codes-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"my-trigger\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tTriggerTemplate: \u0026cloudbuild.TriggerTriggerTemplateArgs{\n\t\t\t\tBranchName: pulumi.String(\"main\"),\n\t\t\t\tRepoName: pulumi.String(\"my-repo\"),\n\t\t\t},\n\t\t\tBuild: \u0026cloudbuild.TriggerBuildArgs{\n\t\t\t\tSteps: cloudbuild.TriggerBuildStepArray{\n\t\t\t\t\t\u0026cloudbuild.TriggerBuildStepArgs{\n\t\t\t\t\t\tName: pulumi.String(\"ubuntu\"),\n\t\t\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"-c\"),\n\t\t\t\t\t\t\tpulumi.String(\"exit 1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAllowExitCodes: pulumi.IntArray{\n\t\t\t\t\t\t\tpulumi.Int(1),\n\t\t\t\t\t\t\tpulumi.Int(3),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudbuild.TriggerBuildSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudbuild.TriggerBuildSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: pulumi.String(\"mybucket\"),\n\t\t\t\t\t\tObject: pulumi.String(\"source_code.tar.gz\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"build\"),\n\t\t\t\t\tpulumi.String(\"newFeature\"),\n\t\t\t\t},\n\t\t\t\tSubstitutions: pulumi.StringMap{\n\t\t\t\t\t\"_FOO\": pulumi.String(\"bar\"),\n\t\t\t\t\t\"_BAZ\": pulumi.String(\"qux\"),\n\t\t\t\t},\n\t\t\t\tQueueTtl: pulumi.String(\"20s\"),\n\t\t\t\tLogsBucket: pulumi.String(\"gs://mybucket/logs\"),\n\t\t\t\tSecrets: cloudbuild.TriggerBuildSecretArray{\n\t\t\t\t\t\u0026cloudbuild.TriggerBuildSecretArgs{\n\t\t\t\t\t\tKmsKeyName: pulumi.String(\"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\"),\n\t\t\t\t\t\tSecretEnv: pulumi.StringMap{\n\t\t\t\t\t\t\t\"PASSWORD\": pulumi.String(\"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAvailableSecrets: \u0026cloudbuild.TriggerBuildAvailableSecretsArgs{\n\t\t\t\t\tSecretManagers: cloudbuild.TriggerBuildAvailableSecretsSecretManagerArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildAvailableSecretsSecretManagerArgs{\n\t\t\t\t\t\t\tEnv: pulumi.String(\"MY_SECRET\"),\n\t\t\t\t\t\t\tVersionName: pulumi.String(\"projects/myProject/secrets/mySecret/versions/latest\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tArtifacts: \u0026cloudbuild.TriggerBuildArtifactsArgs{\n\t\t\t\t\tImages: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"),\n\t\t\t\t\t},\n\t\t\t\t\tObjects: \u0026cloudbuild.TriggerBuildArtifactsObjectsArgs{\n\t\t\t\t\t\tLocation: pulumi.String(\"gs://bucket/path/to/somewhere/\"),\n\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"path\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tOptions: \u0026cloudbuild.TriggerBuildOptionsArgs{\n\t\t\t\t\tSourceProvenanceHashes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"MD5\"),\n\t\t\t\t\t},\n\t\t\t\t\tRequestedVerifyOption: pulumi.String(\"VERIFIED\"),\n\t\t\t\t\tMachineType: pulumi.String(\"N1_HIGHCPU_8\"),\n\t\t\t\t\tDiskSizeGb: pulumi.Int(100),\n\t\t\t\t\tSubstitutionOption: pulumi.String(\"ALLOW_LOOSE\"),\n\t\t\t\t\tDynamicSubstitutions: pulumi.Bool(true),\n\t\t\t\t\tLogStreamingOption: pulumi.String(\"STREAM_OFF\"),\n\t\t\t\t\tWorkerPool: pulumi.String(\"pool\"),\n\t\t\t\t\tLogging: pulumi.String(\"LEGACY\"),\n\t\t\t\t\tEnvs: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ekey = evalue\"),\n\t\t\t\t\t},\n\t\t\t\t\tSecretEnvs: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"secretenv = svalue\"),\n\t\t\t\t\t},\n\t\t\t\t\tVolumes: cloudbuild.TriggerBuildOptionsVolumeArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildOptionsVolumeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"v1\"),\n\t\t\t\t\t\t\tPath: pulumi.String(\"v1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerTriggerTemplateArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildAvailableSecretsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsObjectsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildOptionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var allow_exit_codes_trigger = new Trigger(\"allow-exit-codes-trigger\", TriggerArgs.builder()\n .name(\"my-trigger\")\n .location(\"global\")\n .triggerTemplate(TriggerTriggerTemplateArgs.builder()\n .branchName(\"main\")\n .repoName(\"my-repo\")\n .build())\n .build(TriggerBuildArgs.builder()\n .steps(TriggerBuildStepArgs.builder()\n .name(\"ubuntu\")\n .args( \n \"-c\",\n \"exit 1\")\n .allowExitCodes( \n 1,\n 3)\n .build())\n .source(TriggerBuildSourceArgs.builder()\n .storageSource(TriggerBuildSourceStorageSourceArgs.builder()\n .bucket(\"mybucket\")\n .object(\"source_code.tar.gz\")\n .build())\n .build())\n .tags( \n \"build\",\n \"newFeature\")\n .substitutions(Map.ofEntries(\n Map.entry(\"_FOO\", \"bar\"),\n Map.entry(\"_BAZ\", \"qux\")\n ))\n .queueTtl(\"20s\")\n .logsBucket(\"gs://mybucket/logs\")\n .secrets(TriggerBuildSecretArgs.builder()\n .kmsKeyName(\"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\")\n .secretEnv(Map.of(\"PASSWORD\", \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\"))\n .build())\n .availableSecrets(TriggerBuildAvailableSecretsArgs.builder()\n .secretManagers(TriggerBuildAvailableSecretsSecretManagerArgs.builder()\n .env(\"MY_SECRET\")\n .versionName(\"projects/myProject/secrets/mySecret/versions/latest\")\n .build())\n .build())\n .artifacts(TriggerBuildArtifactsArgs.builder()\n .images(\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\")\n .objects(TriggerBuildArtifactsObjectsArgs.builder()\n .location(\"gs://bucket/path/to/somewhere/\")\n .paths(\"path\")\n .build())\n .build())\n .options(TriggerBuildOptionsArgs.builder()\n .sourceProvenanceHashes(\"MD5\")\n .requestedVerifyOption(\"VERIFIED\")\n .machineType(\"N1_HIGHCPU_8\")\n .diskSizeGb(100)\n .substitutionOption(\"ALLOW_LOOSE\")\n .dynamicSubstitutions(true)\n .logStreamingOption(\"STREAM_OFF\")\n .workerPool(\"pool\")\n .logging(\"LEGACY\")\n .envs(\"ekey = evalue\")\n .secretEnvs(\"secretenv = svalue\")\n .volumes(TriggerBuildOptionsVolumeArgs.builder()\n .name(\"v1\")\n .path(\"v1\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n allow-exit-codes-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: my-trigger\n location: global\n triggerTemplate:\n branchName: main\n repoName: my-repo\n build:\n steps:\n - name: ubuntu\n args:\n - -c\n - exit 1\n allowExitCodes:\n - 1\n - 3\n source:\n storageSource:\n bucket: mybucket\n object: source_code.tar.gz\n tags:\n - build\n - newFeature\n substitutions:\n _FOO: bar\n _BAZ: qux\n queueTtl: 20s\n logsBucket: gs://mybucket/logs\n secrets:\n - kmsKeyName: projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\n secretEnv:\n PASSWORD: ZW5jcnlwdGVkLXBhc3N3b3JkCg==\n availableSecrets:\n secretManagers:\n - env: MY_SECRET\n versionName: projects/myProject/secrets/mySecret/versions/latest\n artifacts:\n images:\n - gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\n objects:\n location: gs://bucket/path/to/somewhere/\n paths:\n - path\n options:\n sourceProvenanceHashes:\n - MD5\n requestedVerifyOption: VERIFIED\n machineType: N1_HIGHCPU_8\n diskSizeGb: 100\n substitutionOption: ALLOW_LOOSE\n dynamicSubstitutions: true\n logStreamingOption: STREAM_OFF\n workerPool: pool\n logging: LEGACY\n envs:\n - ekey = evalue\n secretEnvs:\n - secretenv = svalue\n volumes:\n - name: v1\n path: v1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Pubsub With Repo\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_connection = new gcp.cloudbuildv2.Connection(\"my-connection\", {\n location: \"us-central1\",\n name: \"my-connection\",\n githubConfig: {\n appInstallationId: 123123,\n authorizerCredential: {\n oauthTokenSecretVersion: \"projects/my-project/secrets/github-pat-secret/versions/latest\",\n },\n },\n});\nconst my_repository = new gcp.cloudbuildv2.Repository(\"my-repository\", {\n name: \"my-repo\",\n parentConnection: my_connection.id,\n remoteUri: \"https://github.com/myuser/my-repo.git\",\n});\nconst mytopic = new gcp.pubsub.Topic(\"mytopic\", {name: \"my-topic\"});\nconst pubsub_with_repo_trigger = new gcp.cloudbuild.Trigger(\"pubsub-with-repo-trigger\", {\n name: \"pubsub-with-repo-trigger\",\n location: \"us-central1\",\n pubsubConfig: {\n topic: mytopic.id,\n },\n sourceToBuild: {\n repository: my_repository.id,\n ref: \"refs/heads/main\",\n repoType: \"GITHUB\",\n },\n gitFileSource: {\n path: \"cloudbuild.yaml\",\n repository: my_repository.id,\n revision: \"refs/heads/main\",\n repoType: \"GITHUB\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_connection = gcp.cloudbuildv2.Connection(\"my-connection\",\n location=\"us-central1\",\n name=\"my-connection\",\n github_config={\n \"app_installation_id\": 123123,\n \"authorizer_credential\": {\n \"oauth_token_secret_version\": \"projects/my-project/secrets/github-pat-secret/versions/latest\",\n },\n })\nmy_repository = gcp.cloudbuildv2.Repository(\"my-repository\",\n name=\"my-repo\",\n parent_connection=my_connection.id,\n remote_uri=\"https://github.com/myuser/my-repo.git\")\nmytopic = gcp.pubsub.Topic(\"mytopic\", name=\"my-topic\")\npubsub_with_repo_trigger = gcp.cloudbuild.Trigger(\"pubsub-with-repo-trigger\",\n name=\"pubsub-with-repo-trigger\",\n location=\"us-central1\",\n pubsub_config={\n \"topic\": mytopic.id,\n },\n source_to_build={\n \"repository\": my_repository.id,\n \"ref\": \"refs/heads/main\",\n \"repo_type\": \"GITHUB\",\n },\n git_file_source={\n \"path\": \"cloudbuild.yaml\",\n \"repository\": my_repository.id,\n \"revision\": \"refs/heads/main\",\n \"repo_type\": \"GITHUB\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_connection = new Gcp.CloudBuildV2.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n Name = \"my-connection\",\n GithubConfig = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigArgs\n {\n AppInstallationId = 123123,\n AuthorizerCredential = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigAuthorizerCredentialArgs\n {\n OauthTokenSecretVersion = \"projects/my-project/secrets/github-pat-secret/versions/latest\",\n },\n },\n });\n\n var my_repository = new Gcp.CloudBuildV2.Repository(\"my-repository\", new()\n {\n Name = \"my-repo\",\n ParentConnection = my_connection.Id,\n RemoteUri = \"https://github.com/myuser/my-repo.git\",\n });\n\n var mytopic = new Gcp.PubSub.Topic(\"mytopic\", new()\n {\n Name = \"my-topic\",\n });\n\n var pubsub_with_repo_trigger = new Gcp.CloudBuild.Trigger(\"pubsub-with-repo-trigger\", new()\n {\n Name = \"pubsub-with-repo-trigger\",\n Location = \"us-central1\",\n PubsubConfig = new Gcp.CloudBuild.Inputs.TriggerPubsubConfigArgs\n {\n Topic = mytopic.Id,\n },\n SourceToBuild = new Gcp.CloudBuild.Inputs.TriggerSourceToBuildArgs\n {\n Repository = my_repository.Id,\n Ref = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n },\n GitFileSource = new Gcp.CloudBuild.Inputs.TriggerGitFileSourceArgs\n {\n Path = \"cloudbuild.yaml\",\n Repository = my_repository.Id,\n Revision = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuildv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuildv2.NewConnection(ctx, \"my-connection\", \u0026cloudbuildv2.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-connection\"),\n\t\t\tGithubConfig: \u0026cloudbuildv2.ConnectionGithubConfigArgs{\n\t\t\t\tAppInstallationId: pulumi.Int(123123),\n\t\t\t\tAuthorizerCredential: \u0026cloudbuildv2.ConnectionGithubConfigAuthorizerCredentialArgs{\n\t\t\t\t\tOauthTokenSecretVersion: pulumi.String(\"projects/my-project/secrets/github-pat-secret/versions/latest\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuildv2.NewRepository(ctx, \"my-repository\", \u0026cloudbuildv2.RepositoryArgs{\n\t\t\tName: pulumi.String(\"my-repo\"),\n\t\t\tParentConnection: my_connection.ID(),\n\t\t\tRemoteUri: pulumi.String(\"https://github.com/myuser/my-repo.git\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmytopic, err := pubsub.NewTopic(ctx, \"mytopic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"my-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuild.NewTrigger(ctx, \"pubsub-with-repo-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"pubsub-with-repo-trigger\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPubsubConfig: \u0026cloudbuild.TriggerPubsubConfigArgs{\n\t\t\t\tTopic: mytopic.ID(),\n\t\t\t},\n\t\t\tSourceToBuild: \u0026cloudbuild.TriggerSourceToBuildArgs{\n\t\t\t\tRepository: my_repository.ID(),\n\t\t\t\tRef: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t},\n\t\t\tGitFileSource: \u0026cloudbuild.TriggerGitFileSourceArgs{\n\t\t\t\tPath: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\t\tRepository: my_repository.ID(),\n\t\t\t\tRevision: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuildv2.Connection;\nimport com.pulumi.gcp.cloudbuildv2.ConnectionArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubConfigArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubConfigAuthorizerCredentialArgs;\nimport com.pulumi.gcp.cloudbuildv2.Repository;\nimport com.pulumi.gcp.cloudbuildv2.RepositoryArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerPubsubConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerSourceToBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGitFileSourceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .name(\"my-connection\")\n .githubConfig(ConnectionGithubConfigArgs.builder()\n .appInstallationId(123123)\n .authorizerCredential(ConnectionGithubConfigAuthorizerCredentialArgs.builder()\n .oauthTokenSecretVersion(\"projects/my-project/secrets/github-pat-secret/versions/latest\")\n .build())\n .build())\n .build());\n\n var my_repository = new Repository(\"my-repository\", RepositoryArgs.builder()\n .name(\"my-repo\")\n .parentConnection(my_connection.id())\n .remoteUri(\"https://github.com/myuser/my-repo.git\")\n .build());\n\n var mytopic = new Topic(\"mytopic\", TopicArgs.builder()\n .name(\"my-topic\")\n .build());\n\n var pubsub_with_repo_trigger = new Trigger(\"pubsub-with-repo-trigger\", TriggerArgs.builder()\n .name(\"pubsub-with-repo-trigger\")\n .location(\"us-central1\")\n .pubsubConfig(TriggerPubsubConfigArgs.builder()\n .topic(mytopic.id())\n .build())\n .sourceToBuild(TriggerSourceToBuildArgs.builder()\n .repository(my_repository.id())\n .ref(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .build())\n .gitFileSource(TriggerGitFileSourceArgs.builder()\n .path(\"cloudbuild.yaml\")\n .repository(my_repository.id())\n .revision(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-connection:\n type: gcp:cloudbuildv2:Connection\n properties:\n location: us-central1\n name: my-connection\n githubConfig:\n appInstallationId: 123123\n authorizerCredential:\n oauthTokenSecretVersion: projects/my-project/secrets/github-pat-secret/versions/latest\n my-repository:\n type: gcp:cloudbuildv2:Repository\n properties:\n name: my-repo\n parentConnection: ${[\"my-connection\"].id}\n remoteUri: https://github.com/myuser/my-repo.git\n mytopic:\n type: gcp:pubsub:Topic\n properties:\n name: my-topic\n pubsub-with-repo-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: pubsub-with-repo-trigger\n location: us-central1\n pubsubConfig:\n topic: ${mytopic.id}\n sourceToBuild:\n repository: ${[\"my-repository\"].id}\n ref: refs/heads/main\n repoType: GITHUB\n gitFileSource:\n path: cloudbuild.yaml\n repository: ${[\"my-repository\"].id}\n revision: refs/heads/main\n repoType: GITHUB\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTrigger can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/triggers/{{trigger_id}}`\n\n* `projects/{{project}}/triggers/{{trigger_id}}`\n\n* `{{project}}/{{trigger_id}}`\n\n* `{{trigger_id}}`\n\nWhen using the `pulumi import` command, Trigger can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudbuild/trigger:Trigger default projects/{{project}}/locations/{{location}}/triggers/{{trigger_id}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuild/trigger:Trigger default projects/{{project}}/triggers/{{trigger_id}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuild/trigger:Trigger default {{project}}/{{trigger_id}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuild/trigger:Trigger default {{trigger_id}}\n```\n\n", + "description": "Configuration for an automated build in response to source repository changes.\n\n\nTo get more information about Trigger, see:\n\n* [API documentation](https://cloud.google.com/cloud-build/docs/api/reference/rest/v1/projects.triggers)\n* How-to Guides\n * [Automating builds using build triggers](https://cloud.google.com/cloud-build/docs/running-builds/automate-builds)\n\n\u003e **Note:** You can retrieve the email of the Cloud Build Service Account used in jobs by using the `gcp.projects.ServiceIdentity` resource.\n\n## Example Usage\n\n### Cloudbuild Trigger Filename\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst filename_trigger = new gcp.cloudbuild.Trigger(\"filename-trigger\", {\n location: \"us-central1\",\n triggerTemplate: {\n branchName: \"main\",\n repoName: \"my-repo\",\n },\n substitutions: {\n _FOO: \"bar\",\n _BAZ: \"qux\",\n },\n filename: \"cloudbuild.yaml\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfilename_trigger = gcp.cloudbuild.Trigger(\"filename-trigger\",\n location=\"us-central1\",\n trigger_template={\n \"branch_name\": \"main\",\n \"repo_name\": \"my-repo\",\n },\n substitutions={\n \"_FOO\": \"bar\",\n \"_BAZ\": \"qux\",\n },\n filename=\"cloudbuild.yaml\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var filename_trigger = new Gcp.CloudBuild.Trigger(\"filename-trigger\", new()\n {\n Location = \"us-central1\",\n TriggerTemplate = new Gcp.CloudBuild.Inputs.TriggerTriggerTemplateArgs\n {\n BranchName = \"main\",\n RepoName = \"my-repo\",\n },\n Substitutions = \n {\n { \"_FOO\", \"bar\" },\n { \"_BAZ\", \"qux\" },\n },\n Filename = \"cloudbuild.yaml\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuild.NewTrigger(ctx, \"filename-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTriggerTemplate: \u0026cloudbuild.TriggerTriggerTemplateArgs{\n\t\t\t\tBranchName: pulumi.String(\"main\"),\n\t\t\t\tRepoName: pulumi.String(\"my-repo\"),\n\t\t\t},\n\t\t\tSubstitutions: pulumi.StringMap{\n\t\t\t\t\"_FOO\": pulumi.String(\"bar\"),\n\t\t\t\t\"_BAZ\": pulumi.String(\"qux\"),\n\t\t\t},\n\t\t\tFilename: pulumi.String(\"cloudbuild.yaml\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerTriggerTemplateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var filename_trigger = new Trigger(\"filename-trigger\", TriggerArgs.builder()\n .location(\"us-central1\")\n .triggerTemplate(TriggerTriggerTemplateArgs.builder()\n .branchName(\"main\")\n .repoName(\"my-repo\")\n .build())\n .substitutions(Map.ofEntries(\n Map.entry(\"_FOO\", \"bar\"),\n Map.entry(\"_BAZ\", \"qux\")\n ))\n .filename(\"cloudbuild.yaml\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n filename-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n location: us-central1\n triggerTemplate:\n branchName: main\n repoName: my-repo\n substitutions:\n _FOO: bar\n _BAZ: qux\n filename: cloudbuild.yaml\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Build\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst build_trigger = new gcp.cloudbuild.Trigger(\"build-trigger\", {\n name: \"my-trigger\",\n location: \"global\",\n triggerTemplate: {\n branchName: \"main\",\n repoName: \"my-repo\",\n },\n build: {\n steps: [\n {\n name: \"gcr.io/cloud-builders/gsutil\",\n args: [\n \"cp\",\n \"gs://mybucket/remotefile.zip\",\n \"localfile.zip\",\n ],\n timeout: \"120s\",\n secretEnvs: [\"MY_SECRET\"],\n },\n {\n name: \"ubuntu\",\n script: \"echo hello\",\n },\n ],\n source: {\n storageSource: {\n bucket: \"mybucket\",\n object: \"source_code.tar.gz\",\n },\n },\n tags: [\n \"build\",\n \"newFeature\",\n ],\n substitutions: {\n _FOO: \"bar\",\n _BAZ: \"qux\",\n },\n queueTtl: \"20s\",\n logsBucket: \"gs://mybucket/logs\",\n secrets: [{\n kmsKeyName: \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n secretEnv: {\n PASSWORD: \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\",\n },\n }],\n availableSecrets: {\n secretManagers: [{\n env: \"MY_SECRET\",\n versionName: \"projects/myProject/secrets/mySecret/versions/latest\",\n }],\n },\n artifacts: {\n images: [\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"],\n objects: {\n location: \"gs://bucket/path/to/somewhere/\",\n paths: [\"path\"],\n },\n npmPackages: [{\n packagePath: \"package.json\",\n repository: \"https://us-west1-npm.pkg.dev/myProject/quickstart-nodejs-repo\",\n }],\n pythonPackages: [{\n paths: [\"dist/*\"],\n repository: \"https://us-west1-python.pkg.dev/myProject/quickstart-python-repo\",\n }],\n mavenArtifacts: [{\n repository: \"https://us-west1-maven.pkg.dev/myProject/quickstart-java-repo\",\n path: \"/workspace/my-app/target/my-app-1.0.SNAPSHOT.jar\",\n artifactId: \"my-app\",\n groupId: \"com.mycompany.app\",\n version: \"1.0\",\n }],\n },\n options: {\n sourceProvenanceHashes: [\"MD5\"],\n requestedVerifyOption: \"VERIFIED\",\n machineType: \"N1_HIGHCPU_8\",\n diskSizeGb: 100,\n substitutionOption: \"ALLOW_LOOSE\",\n dynamicSubstitutions: true,\n logStreamingOption: \"STREAM_OFF\",\n workerPool: \"pool\",\n logging: \"LEGACY\",\n envs: [\"ekey = evalue\"],\n secretEnvs: [\"secretenv = svalue\"],\n volumes: [{\n name: \"v1\",\n path: \"v1\",\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbuild_trigger = gcp.cloudbuild.Trigger(\"build-trigger\",\n name=\"my-trigger\",\n location=\"global\",\n trigger_template={\n \"branch_name\": \"main\",\n \"repo_name\": \"my-repo\",\n },\n build={\n \"steps\": [\n {\n \"name\": \"gcr.io/cloud-builders/gsutil\",\n \"args\": [\n \"cp\",\n \"gs://mybucket/remotefile.zip\",\n \"localfile.zip\",\n ],\n \"timeout\": \"120s\",\n \"secret_envs\": [\"MY_SECRET\"],\n },\n {\n \"name\": \"ubuntu\",\n \"script\": \"echo hello\",\n },\n ],\n \"source\": {\n \"storage_source\": {\n \"bucket\": \"mybucket\",\n \"object\": \"source_code.tar.gz\",\n },\n },\n \"tags\": [\n \"build\",\n \"newFeature\",\n ],\n \"substitutions\": {\n \"_FOO\": \"bar\",\n \"_BAZ\": \"qux\",\n },\n \"queue_ttl\": \"20s\",\n \"logs_bucket\": \"gs://mybucket/logs\",\n \"secrets\": [{\n \"kms_key_name\": \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n \"secret_env\": {\n \"PASSWORD\": \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\",\n },\n }],\n \"available_secrets\": {\n \"secret_managers\": [{\n \"env\": \"MY_SECRET\",\n \"version_name\": \"projects/myProject/secrets/mySecret/versions/latest\",\n }],\n },\n \"artifacts\": {\n \"images\": [\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"],\n \"objects\": {\n \"location\": \"gs://bucket/path/to/somewhere/\",\n \"paths\": [\"path\"],\n },\n \"npm_packages\": [{\n \"package_path\": \"package.json\",\n \"repository\": \"https://us-west1-npm.pkg.dev/myProject/quickstart-nodejs-repo\",\n }],\n \"python_packages\": [{\n \"paths\": [\"dist/*\"],\n \"repository\": \"https://us-west1-python.pkg.dev/myProject/quickstart-python-repo\",\n }],\n \"maven_artifacts\": [{\n \"repository\": \"https://us-west1-maven.pkg.dev/myProject/quickstart-java-repo\",\n \"path\": \"/workspace/my-app/target/my-app-1.0.SNAPSHOT.jar\",\n \"artifact_id\": \"my-app\",\n \"group_id\": \"com.mycompany.app\",\n \"version\": \"1.0\",\n }],\n },\n \"options\": {\n \"source_provenance_hashes\": [\"MD5\"],\n \"requested_verify_option\": \"VERIFIED\",\n \"machine_type\": \"N1_HIGHCPU_8\",\n \"disk_size_gb\": 100,\n \"substitution_option\": \"ALLOW_LOOSE\",\n \"dynamic_substitutions\": True,\n \"log_streaming_option\": \"STREAM_OFF\",\n \"worker_pool\": \"pool\",\n \"logging\": \"LEGACY\",\n \"envs\": [\"ekey = evalue\"],\n \"secret_envs\": [\"secretenv = svalue\"],\n \"volumes\": [{\n \"name\": \"v1\",\n \"path\": \"v1\",\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var build_trigger = new Gcp.CloudBuild.Trigger(\"build-trigger\", new()\n {\n Name = \"my-trigger\",\n Location = \"global\",\n TriggerTemplate = new Gcp.CloudBuild.Inputs.TriggerTriggerTemplateArgs\n {\n BranchName = \"main\",\n RepoName = \"my-repo\",\n },\n Build = new Gcp.CloudBuild.Inputs.TriggerBuildArgs\n {\n Steps = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildStepArgs\n {\n Name = \"gcr.io/cloud-builders/gsutil\",\n Args = new[]\n {\n \"cp\",\n \"gs://mybucket/remotefile.zip\",\n \"localfile.zip\",\n },\n Timeout = \"120s\",\n SecretEnvs = new[]\n {\n \"MY_SECRET\",\n },\n },\n new Gcp.CloudBuild.Inputs.TriggerBuildStepArgs\n {\n Name = \"ubuntu\",\n Script = \"echo hello\",\n },\n },\n Source = new Gcp.CloudBuild.Inputs.TriggerBuildSourceArgs\n {\n StorageSource = new Gcp.CloudBuild.Inputs.TriggerBuildSourceStorageSourceArgs\n {\n Bucket = \"mybucket\",\n Object = \"source_code.tar.gz\",\n },\n },\n Tags = new[]\n {\n \"build\",\n \"newFeature\",\n },\n Substitutions = \n {\n { \"_FOO\", \"bar\" },\n { \"_BAZ\", \"qux\" },\n },\n QueueTtl = \"20s\",\n LogsBucket = \"gs://mybucket/logs\",\n Secrets = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildSecretArgs\n {\n KmsKeyName = \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n SecretEnv = \n {\n { \"PASSWORD\", \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\" },\n },\n },\n },\n AvailableSecrets = new Gcp.CloudBuild.Inputs.TriggerBuildAvailableSecretsArgs\n {\n SecretManagers = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildAvailableSecretsSecretManagerArgs\n {\n Env = \"MY_SECRET\",\n VersionName = \"projects/myProject/secrets/mySecret/versions/latest\",\n },\n },\n },\n Artifacts = new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsArgs\n {\n Images = new[]\n {\n \"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\",\n },\n Objects = new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsObjectsArgs\n {\n Location = \"gs://bucket/path/to/somewhere/\",\n Paths = new[]\n {\n \"path\",\n },\n },\n NpmPackages = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsNpmPackageArgs\n {\n PackagePath = \"package.json\",\n Repository = \"https://us-west1-npm.pkg.dev/myProject/quickstart-nodejs-repo\",\n },\n },\n PythonPackages = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsPythonPackageArgs\n {\n Paths = new[]\n {\n \"dist/*\",\n },\n Repository = \"https://us-west1-python.pkg.dev/myProject/quickstart-python-repo\",\n },\n },\n MavenArtifacts = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsMavenArtifactArgs\n {\n Repository = \"https://us-west1-maven.pkg.dev/myProject/quickstart-java-repo\",\n Path = \"/workspace/my-app/target/my-app-1.0.SNAPSHOT.jar\",\n ArtifactId = \"my-app\",\n GroupId = \"com.mycompany.app\",\n Version = \"1.0\",\n },\n },\n },\n Options = new Gcp.CloudBuild.Inputs.TriggerBuildOptionsArgs\n {\n SourceProvenanceHashes = new[]\n {\n \"MD5\",\n },\n RequestedVerifyOption = \"VERIFIED\",\n MachineType = \"N1_HIGHCPU_8\",\n DiskSizeGb = 100,\n SubstitutionOption = \"ALLOW_LOOSE\",\n DynamicSubstitutions = true,\n LogStreamingOption = \"STREAM_OFF\",\n WorkerPool = \"pool\",\n Logging = \"LEGACY\",\n Envs = new[]\n {\n \"ekey = evalue\",\n },\n SecretEnvs = new[]\n {\n \"secretenv = svalue\",\n },\n Volumes = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildOptionsVolumeArgs\n {\n Name = \"v1\",\n Path = \"v1\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuild.NewTrigger(ctx, \"build-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"my-trigger\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tTriggerTemplate: \u0026cloudbuild.TriggerTriggerTemplateArgs{\n\t\t\t\tBranchName: pulumi.String(\"main\"),\n\t\t\t\tRepoName: pulumi.String(\"my-repo\"),\n\t\t\t},\n\t\t\tBuild: \u0026cloudbuild.TriggerBuildArgs{\n\t\t\t\tSteps: cloudbuild.TriggerBuildStepArray{\n\t\t\t\t\t\u0026cloudbuild.TriggerBuildStepArgs{\n\t\t\t\t\t\tName: pulumi.String(\"gcr.io/cloud-builders/gsutil\"),\n\t\t\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"cp\"),\n\t\t\t\t\t\t\tpulumi.String(\"gs://mybucket/remotefile.zip\"),\n\t\t\t\t\t\t\tpulumi.String(\"localfile.zip\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTimeout: pulumi.String(\"120s\"),\n\t\t\t\t\t\tSecretEnvs: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"MY_SECRET\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026cloudbuild.TriggerBuildStepArgs{\n\t\t\t\t\t\tName: pulumi.String(\"ubuntu\"),\n\t\t\t\t\t\tScript: pulumi.String(\"echo hello\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudbuild.TriggerBuildSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudbuild.TriggerBuildSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: pulumi.String(\"mybucket\"),\n\t\t\t\t\t\tObject: pulumi.String(\"source_code.tar.gz\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"build\"),\n\t\t\t\t\tpulumi.String(\"newFeature\"),\n\t\t\t\t},\n\t\t\t\tSubstitutions: pulumi.StringMap{\n\t\t\t\t\t\"_FOO\": pulumi.String(\"bar\"),\n\t\t\t\t\t\"_BAZ\": pulumi.String(\"qux\"),\n\t\t\t\t},\n\t\t\t\tQueueTtl: pulumi.String(\"20s\"),\n\t\t\t\tLogsBucket: pulumi.String(\"gs://mybucket/logs\"),\n\t\t\t\tSecrets: cloudbuild.TriggerBuildSecretArray{\n\t\t\t\t\t\u0026cloudbuild.TriggerBuildSecretArgs{\n\t\t\t\t\t\tKmsKeyName: pulumi.String(\"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\"),\n\t\t\t\t\t\tSecretEnv: pulumi.StringMap{\n\t\t\t\t\t\t\t\"PASSWORD\": pulumi.String(\"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAvailableSecrets: \u0026cloudbuild.TriggerBuildAvailableSecretsArgs{\n\t\t\t\t\tSecretManagers: cloudbuild.TriggerBuildAvailableSecretsSecretManagerArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildAvailableSecretsSecretManagerArgs{\n\t\t\t\t\t\t\tEnv: pulumi.String(\"MY_SECRET\"),\n\t\t\t\t\t\t\tVersionName: pulumi.String(\"projects/myProject/secrets/mySecret/versions/latest\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tArtifacts: \u0026cloudbuild.TriggerBuildArtifactsArgs{\n\t\t\t\t\tImages: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"),\n\t\t\t\t\t},\n\t\t\t\t\tObjects: \u0026cloudbuild.TriggerBuildArtifactsObjectsArgs{\n\t\t\t\t\t\tLocation: pulumi.String(\"gs://bucket/path/to/somewhere/\"),\n\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"path\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tNpmPackages: cloudbuild.TriggerBuildArtifactsNpmPackageArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildArtifactsNpmPackageArgs{\n\t\t\t\t\t\t\tPackagePath: pulumi.String(\"package.json\"),\n\t\t\t\t\t\t\tRepository: pulumi.String(\"https://us-west1-npm.pkg.dev/myProject/quickstart-nodejs-repo\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tPythonPackages: cloudbuild.TriggerBuildArtifactsPythonPackageArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildArtifactsPythonPackageArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"dist/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRepository: pulumi.String(\"https://us-west1-python.pkg.dev/myProject/quickstart-python-repo\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tMavenArtifacts: cloudbuild.TriggerBuildArtifactsMavenArtifactArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildArtifactsMavenArtifactArgs{\n\t\t\t\t\t\t\tRepository: pulumi.String(\"https://us-west1-maven.pkg.dev/myProject/quickstart-java-repo\"),\n\t\t\t\t\t\t\tPath: pulumi.String(\"/workspace/my-app/target/my-app-1.0.SNAPSHOT.jar\"),\n\t\t\t\t\t\t\tArtifactId: pulumi.String(\"my-app\"),\n\t\t\t\t\t\t\tGroupId: pulumi.String(\"com.mycompany.app\"),\n\t\t\t\t\t\t\tVersion: pulumi.String(\"1.0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tOptions: \u0026cloudbuild.TriggerBuildOptionsArgs{\n\t\t\t\t\tSourceProvenanceHashes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"MD5\"),\n\t\t\t\t\t},\n\t\t\t\t\tRequestedVerifyOption: pulumi.String(\"VERIFIED\"),\n\t\t\t\t\tMachineType: pulumi.String(\"N1_HIGHCPU_8\"),\n\t\t\t\t\tDiskSizeGb: pulumi.Int(100),\n\t\t\t\t\tSubstitutionOption: pulumi.String(\"ALLOW_LOOSE\"),\n\t\t\t\t\tDynamicSubstitutions: pulumi.Bool(true),\n\t\t\t\t\tLogStreamingOption: pulumi.String(\"STREAM_OFF\"),\n\t\t\t\t\tWorkerPool: pulumi.String(\"pool\"),\n\t\t\t\t\tLogging: pulumi.String(\"LEGACY\"),\n\t\t\t\t\tEnvs: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ekey = evalue\"),\n\t\t\t\t\t},\n\t\t\t\t\tSecretEnvs: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"secretenv = svalue\"),\n\t\t\t\t\t},\n\t\t\t\t\tVolumes: cloudbuild.TriggerBuildOptionsVolumeArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildOptionsVolumeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"v1\"),\n\t\t\t\t\t\t\tPath: pulumi.String(\"v1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerTriggerTemplateArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildAvailableSecretsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsObjectsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildOptionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var build_trigger = new Trigger(\"build-trigger\", TriggerArgs.builder()\n .name(\"my-trigger\")\n .location(\"global\")\n .triggerTemplate(TriggerTriggerTemplateArgs.builder()\n .branchName(\"main\")\n .repoName(\"my-repo\")\n .build())\n .build(TriggerBuildArgs.builder()\n .steps( \n TriggerBuildStepArgs.builder()\n .name(\"gcr.io/cloud-builders/gsutil\")\n .args( \n \"cp\",\n \"gs://mybucket/remotefile.zip\",\n \"localfile.zip\")\n .timeout(\"120s\")\n .secretEnvs(\"MY_SECRET\")\n .build(),\n TriggerBuildStepArgs.builder()\n .name(\"ubuntu\")\n .script(\"echo hello\")\n .build())\n .source(TriggerBuildSourceArgs.builder()\n .storageSource(TriggerBuildSourceStorageSourceArgs.builder()\n .bucket(\"mybucket\")\n .object(\"source_code.tar.gz\")\n .build())\n .build())\n .tags( \n \"build\",\n \"newFeature\")\n .substitutions(Map.ofEntries(\n Map.entry(\"_FOO\", \"bar\"),\n Map.entry(\"_BAZ\", \"qux\")\n ))\n .queueTtl(\"20s\")\n .logsBucket(\"gs://mybucket/logs\")\n .secrets(TriggerBuildSecretArgs.builder()\n .kmsKeyName(\"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\")\n .secretEnv(Map.of(\"PASSWORD\", \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\"))\n .build())\n .availableSecrets(TriggerBuildAvailableSecretsArgs.builder()\n .secretManagers(TriggerBuildAvailableSecretsSecretManagerArgs.builder()\n .env(\"MY_SECRET\")\n .versionName(\"projects/myProject/secrets/mySecret/versions/latest\")\n .build())\n .build())\n .artifacts(TriggerBuildArtifactsArgs.builder()\n .images(\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\")\n .objects(TriggerBuildArtifactsObjectsArgs.builder()\n .location(\"gs://bucket/path/to/somewhere/\")\n .paths(\"path\")\n .build())\n .npmPackages(TriggerBuildArtifactsNpmPackageArgs.builder()\n .packagePath(\"package.json\")\n .repository(\"https://us-west1-npm.pkg.dev/myProject/quickstart-nodejs-repo\")\n .build())\n .pythonPackages(TriggerBuildArtifactsPythonPackageArgs.builder()\n .paths(\"dist/*\")\n .repository(\"https://us-west1-python.pkg.dev/myProject/quickstart-python-repo\")\n .build())\n .mavenArtifacts(TriggerBuildArtifactsMavenArtifactArgs.builder()\n .repository(\"https://us-west1-maven.pkg.dev/myProject/quickstart-java-repo\")\n .path(\"/workspace/my-app/target/my-app-1.0.SNAPSHOT.jar\")\n .artifactId(\"my-app\")\n .groupId(\"com.mycompany.app\")\n .version(\"1.0\")\n .build())\n .build())\n .options(TriggerBuildOptionsArgs.builder()\n .sourceProvenanceHashes(\"MD5\")\n .requestedVerifyOption(\"VERIFIED\")\n .machineType(\"N1_HIGHCPU_8\")\n .diskSizeGb(100)\n .substitutionOption(\"ALLOW_LOOSE\")\n .dynamicSubstitutions(true)\n .logStreamingOption(\"STREAM_OFF\")\n .workerPool(\"pool\")\n .logging(\"LEGACY\")\n .envs(\"ekey = evalue\")\n .secretEnvs(\"secretenv = svalue\")\n .volumes(TriggerBuildOptionsVolumeArgs.builder()\n .name(\"v1\")\n .path(\"v1\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n build-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: my-trigger\n location: global\n triggerTemplate:\n branchName: main\n repoName: my-repo\n build:\n steps:\n - name: gcr.io/cloud-builders/gsutil\n args:\n - cp\n - gs://mybucket/remotefile.zip\n - localfile.zip\n timeout: 120s\n secretEnvs:\n - MY_SECRET\n - name: ubuntu\n script: echo hello\n source:\n storageSource:\n bucket: mybucket\n object: source_code.tar.gz\n tags:\n - build\n - newFeature\n substitutions:\n _FOO: bar\n _BAZ: qux\n queueTtl: 20s\n logsBucket: gs://mybucket/logs\n secrets:\n - kmsKeyName: projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\n secretEnv:\n PASSWORD: ZW5jcnlwdGVkLXBhc3N3b3JkCg==\n availableSecrets:\n secretManagers:\n - env: MY_SECRET\n versionName: projects/myProject/secrets/mySecret/versions/latest\n artifacts:\n images:\n - gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\n objects:\n location: gs://bucket/path/to/somewhere/\n paths:\n - path\n npmPackages:\n - packagePath: package.json\n repository: https://us-west1-npm.pkg.dev/myProject/quickstart-nodejs-repo\n pythonPackages:\n - paths:\n - dist/*\n repository: https://us-west1-python.pkg.dev/myProject/quickstart-python-repo\n mavenArtifacts:\n - repository: https://us-west1-maven.pkg.dev/myProject/quickstart-java-repo\n path: /workspace/my-app/target/my-app-1.0.SNAPSHOT.jar\n artifactId: my-app\n groupId: com.mycompany.app\n version: '1.0'\n options:\n sourceProvenanceHashes:\n - MD5\n requestedVerifyOption: VERIFIED\n machineType: N1_HIGHCPU_8\n diskSizeGb: 100\n substitutionOption: ALLOW_LOOSE\n dynamicSubstitutions: true\n logStreamingOption: STREAM_OFF\n workerPool: pool\n logging: LEGACY\n envs:\n - ekey = evalue\n secretEnvs:\n - secretenv = svalue\n volumes:\n - name: v1\n path: v1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Service Account\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst cloudbuildServiceAccount = new gcp.serviceaccount.Account(\"cloudbuild_service_account\", {accountId: \"cloud-sa\"});\nconst actAs = new gcp.projects.IAMMember(\"act_as\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/iam.serviceAccountUser\",\n member: pulumi.interpolate`serviceAccount:${cloudbuildServiceAccount.email}`,\n});\nconst logsWriter = new gcp.projects.IAMMember(\"logs_writer\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/logging.logWriter\",\n member: pulumi.interpolate`serviceAccount:${cloudbuildServiceAccount.email}`,\n});\nconst service_account_trigger = new gcp.cloudbuild.Trigger(\"service-account-trigger\", {\n triggerTemplate: {\n branchName: \"main\",\n repoName: \"my-repo\",\n },\n serviceAccount: cloudbuildServiceAccount.id,\n filename: \"cloudbuild.yaml\",\n}, {\n dependsOn: [\n actAs,\n logsWriter,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ncloudbuild_service_account = gcp.serviceaccount.Account(\"cloudbuild_service_account\", account_id=\"cloud-sa\")\nact_as = gcp.projects.IAMMember(\"act_as\",\n project=project.project_id,\n role=\"roles/iam.serviceAccountUser\",\n member=cloudbuild_service_account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nlogs_writer = gcp.projects.IAMMember(\"logs_writer\",\n project=project.project_id,\n role=\"roles/logging.logWriter\",\n member=cloudbuild_service_account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nservice_account_trigger = gcp.cloudbuild.Trigger(\"service-account-trigger\",\n trigger_template={\n \"branch_name\": \"main\",\n \"repo_name\": \"my-repo\",\n },\n service_account=cloudbuild_service_account.id,\n filename=\"cloudbuild.yaml\",\n opts = pulumi.ResourceOptions(depends_on=[\n act_as,\n logs_writer,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cloudbuildServiceAccount = new Gcp.ServiceAccount.Account(\"cloudbuild_service_account\", new()\n {\n AccountId = \"cloud-sa\",\n });\n\n var actAs = new Gcp.Projects.IAMMember(\"act_as\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/iam.serviceAccountUser\",\n Member = cloudbuildServiceAccount.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var logsWriter = new Gcp.Projects.IAMMember(\"logs_writer\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/logging.logWriter\",\n Member = cloudbuildServiceAccount.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var service_account_trigger = new Gcp.CloudBuild.Trigger(\"service-account-trigger\", new()\n {\n TriggerTemplate = new Gcp.CloudBuild.Inputs.TriggerTriggerTemplateArgs\n {\n BranchName = \"main\",\n RepoName = \"my-repo\",\n },\n ServiceAccount = cloudbuildServiceAccount.Id,\n Filename = \"cloudbuild.yaml\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n actAs,\n logsWriter,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\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/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcloudbuildServiceAccount, err := serviceaccount.NewAccount(ctx, \"cloudbuild_service_account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"cloud-sa\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tactAs, err := projects.NewIAMMember(ctx, \"act_as\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMember: cloudbuildServiceAccount.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlogsWriter, err := projects.NewIAMMember(ctx, \"logs_writer\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/logging.logWriter\"),\n\t\t\tMember: cloudbuildServiceAccount.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuild.NewTrigger(ctx, \"service-account-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tTriggerTemplate: \u0026cloudbuild.TriggerTriggerTemplateArgs{\n\t\t\t\tBranchName: pulumi.String(\"main\"),\n\t\t\t\tRepoName: pulumi.String(\"my-repo\"),\n\t\t\t},\n\t\t\tServiceAccount: cloudbuildServiceAccount.ID(),\n\t\t\tFilename: pulumi.String(\"cloudbuild.yaml\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tactAs,\n\t\t\tlogsWriter,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerTriggerTemplateArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var cloudbuildServiceAccount = new Account(\"cloudbuildServiceAccount\", AccountArgs.builder()\n .accountId(\"cloud-sa\")\n .build());\n\n var actAs = new IAMMember(\"actAs\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/iam.serviceAccountUser\")\n .member(cloudbuildServiceAccount.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var logsWriter = new IAMMember(\"logsWriter\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/logging.logWriter\")\n .member(cloudbuildServiceAccount.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var service_account_trigger = new Trigger(\"service-account-trigger\", TriggerArgs.builder()\n .triggerTemplate(TriggerTriggerTemplateArgs.builder()\n .branchName(\"main\")\n .repoName(\"my-repo\")\n .build())\n .serviceAccount(cloudbuildServiceAccount.id())\n .filename(\"cloudbuild.yaml\")\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n actAs,\n logsWriter)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n service-account-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n triggerTemplate:\n branchName: main\n repoName: my-repo\n serviceAccount: ${cloudbuildServiceAccount.id}\n filename: cloudbuild.yaml\n options:\n dependson:\n - ${actAs}\n - ${logsWriter}\n cloudbuildServiceAccount:\n type: gcp:serviceaccount:Account\n name: cloudbuild_service_account\n properties:\n accountId: cloud-sa\n actAs:\n type: gcp:projects:IAMMember\n name: act_as\n properties:\n project: ${project.projectId}\n role: roles/iam.serviceAccountUser\n member: serviceAccount:${cloudbuildServiceAccount.email}\n logsWriter:\n type: gcp:projects:IAMMember\n name: logs_writer\n properties:\n project: ${project.projectId}\n role: roles/logging.logWriter\n member: serviceAccount:${cloudbuildServiceAccount.email}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Include Build Logs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst include_build_logs_trigger = new gcp.cloudbuild.Trigger(\"include-build-logs-trigger\", {\n location: \"us-central1\",\n name: \"include-build-logs-trigger\",\n filename: \"cloudbuild.yaml\",\n github: {\n owner: \"hashicorp\",\n name: \"terraform-provider-google-beta\",\n push: {\n branch: \"^main$\",\n },\n },\n includeBuildLogs: \"INCLUDE_BUILD_LOGS_WITH_STATUS\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninclude_build_logs_trigger = gcp.cloudbuild.Trigger(\"include-build-logs-trigger\",\n location=\"us-central1\",\n name=\"include-build-logs-trigger\",\n filename=\"cloudbuild.yaml\",\n github={\n \"owner\": \"hashicorp\",\n \"name\": \"terraform-provider-google-beta\",\n \"push\": {\n \"branch\": \"^main$\",\n },\n },\n include_build_logs=\"INCLUDE_BUILD_LOGS_WITH_STATUS\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var include_build_logs_trigger = new Gcp.CloudBuild.Trigger(\"include-build-logs-trigger\", new()\n {\n Location = \"us-central1\",\n Name = \"include-build-logs-trigger\",\n Filename = \"cloudbuild.yaml\",\n Github = new Gcp.CloudBuild.Inputs.TriggerGithubArgs\n {\n Owner = \"hashicorp\",\n Name = \"terraform-provider-google-beta\",\n Push = new Gcp.CloudBuild.Inputs.TriggerGithubPushArgs\n {\n Branch = \"^main$\",\n },\n },\n IncludeBuildLogs = \"INCLUDE_BUILD_LOGS_WITH_STATUS\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuild.NewTrigger(ctx, \"include-build-logs-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"include-build-logs-trigger\"),\n\t\t\tFilename: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\tGithub: \u0026cloudbuild.TriggerGithubArgs{\n\t\t\t\tOwner: pulumi.String(\"hashicorp\"),\n\t\t\t\tName: pulumi.String(\"terraform-provider-google-beta\"),\n\t\t\t\tPush: \u0026cloudbuild.TriggerGithubPushArgs{\n\t\t\t\t\tBranch: pulumi.String(\"^main$\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tIncludeBuildLogs: pulumi.String(\"INCLUDE_BUILD_LOGS_WITH_STATUS\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGithubArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGithubPushArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var include_build_logs_trigger = new Trigger(\"include-build-logs-trigger\", TriggerArgs.builder()\n .location(\"us-central1\")\n .name(\"include-build-logs-trigger\")\n .filename(\"cloudbuild.yaml\")\n .github(TriggerGithubArgs.builder()\n .owner(\"hashicorp\")\n .name(\"terraform-provider-google-beta\")\n .push(TriggerGithubPushArgs.builder()\n .branch(\"^main$\")\n .build())\n .build())\n .includeBuildLogs(\"INCLUDE_BUILD_LOGS_WITH_STATUS\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n include-build-logs-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n location: us-central1\n name: include-build-logs-trigger\n filename: cloudbuild.yaml\n github:\n owner: hashicorp\n name: terraform-provider-google-beta\n push:\n branch: ^main$\n includeBuildLogs: INCLUDE_BUILD_LOGS_WITH_STATUS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Pubsub Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst mytopic = new gcp.pubsub.Topic(\"mytopic\", {name: \"my-topic\"});\nconst pubsub_config_trigger = new gcp.cloudbuild.Trigger(\"pubsub-config-trigger\", {\n location: \"us-central1\",\n name: \"pubsub-trigger\",\n description: \"acceptance test example pubsub build trigger\",\n pubsubConfig: {\n topic: mytopic.id,\n },\n sourceToBuild: {\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n ref: \"refs/heads/main\",\n repoType: \"GITHUB\",\n },\n gitFileSource: {\n path: \"cloudbuild.yaml\",\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n revision: \"refs/heads/main\",\n repoType: \"GITHUB\",\n },\n substitutions: {\n _ACTION: \"$(body.message.data.action)\",\n },\n filter: \"_ACTION.matches('INSERT')\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmytopic = gcp.pubsub.Topic(\"mytopic\", name=\"my-topic\")\npubsub_config_trigger = gcp.cloudbuild.Trigger(\"pubsub-config-trigger\",\n location=\"us-central1\",\n name=\"pubsub-trigger\",\n description=\"acceptance test example pubsub build trigger\",\n pubsub_config={\n \"topic\": mytopic.id,\n },\n source_to_build={\n \"uri\": \"https://hashicorp/terraform-provider-google-beta\",\n \"ref\": \"refs/heads/main\",\n \"repo_type\": \"GITHUB\",\n },\n git_file_source={\n \"path\": \"cloudbuild.yaml\",\n \"uri\": \"https://hashicorp/terraform-provider-google-beta\",\n \"revision\": \"refs/heads/main\",\n \"repo_type\": \"GITHUB\",\n },\n substitutions={\n \"_ACTION\": \"$(body.message.data.action)\",\n },\n filter=\"_ACTION.matches('INSERT')\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var mytopic = new Gcp.PubSub.Topic(\"mytopic\", new()\n {\n Name = \"my-topic\",\n });\n\n var pubsub_config_trigger = new Gcp.CloudBuild.Trigger(\"pubsub-config-trigger\", new()\n {\n Location = \"us-central1\",\n Name = \"pubsub-trigger\",\n Description = \"acceptance test example pubsub build trigger\",\n PubsubConfig = new Gcp.CloudBuild.Inputs.TriggerPubsubConfigArgs\n {\n Topic = mytopic.Id,\n },\n SourceToBuild = new Gcp.CloudBuild.Inputs.TriggerSourceToBuildArgs\n {\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n Ref = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n },\n GitFileSource = new Gcp.CloudBuild.Inputs.TriggerGitFileSourceArgs\n {\n Path = \"cloudbuild.yaml\",\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n Revision = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n },\n Substitutions = \n {\n { \"_ACTION\", \"$(body.message.data.action)\" },\n },\n Filter = \"_ACTION.matches('INSERT')\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmytopic, err := pubsub.NewTopic(ctx, \"mytopic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"my-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuild.NewTrigger(ctx, \"pubsub-config-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"pubsub-trigger\"),\n\t\t\tDescription: pulumi.String(\"acceptance test example pubsub build trigger\"),\n\t\t\tPubsubConfig: \u0026cloudbuild.TriggerPubsubConfigArgs{\n\t\t\t\tTopic: mytopic.ID(),\n\t\t\t},\n\t\t\tSourceToBuild: \u0026cloudbuild.TriggerSourceToBuildArgs{\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t\tRef: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t},\n\t\t\tGitFileSource: \u0026cloudbuild.TriggerGitFileSourceArgs{\n\t\t\t\tPath: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t\tRevision: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t},\n\t\t\tSubstitutions: pulumi.StringMap{\n\t\t\t\t\"_ACTION\": pulumi.String(\"$(body.message.data.action)\"),\n\t\t\t},\n\t\t\tFilter: pulumi.String(\"_ACTION.matches('INSERT')\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerPubsubConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerSourceToBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGitFileSourceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var mytopic = new Topic(\"mytopic\", TopicArgs.builder()\n .name(\"my-topic\")\n .build());\n\n var pubsub_config_trigger = new Trigger(\"pubsub-config-trigger\", TriggerArgs.builder()\n .location(\"us-central1\")\n .name(\"pubsub-trigger\")\n .description(\"acceptance test example pubsub build trigger\")\n .pubsubConfig(TriggerPubsubConfigArgs.builder()\n .topic(mytopic.id())\n .build())\n .sourceToBuild(TriggerSourceToBuildArgs.builder()\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .ref(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .build())\n .gitFileSource(TriggerGitFileSourceArgs.builder()\n .path(\"cloudbuild.yaml\")\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .revision(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .build())\n .substitutions(Map.of(\"_ACTION\", \"$(body.message.data.action)\"))\n .filter(\"_ACTION.matches('INSERT')\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n mytopic:\n type: gcp:pubsub:Topic\n properties:\n name: my-topic\n pubsub-config-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n location: us-central1\n name: pubsub-trigger\n description: acceptance test example pubsub build trigger\n pubsubConfig:\n topic: ${mytopic.id}\n sourceToBuild:\n uri: https://hashicorp/terraform-provider-google-beta\n ref: refs/heads/main\n repoType: GITHUB\n gitFileSource:\n path: cloudbuild.yaml\n uri: https://hashicorp/terraform-provider-google-beta\n revision: refs/heads/main\n repoType: GITHUB\n substitutions:\n _ACTION: $(body.message.data.action)\n filter: _ACTION.matches('INSERT')\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Webhook Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst webhookTriggerSecretKey = new gcp.secretmanager.Secret(\"webhook_trigger_secret_key\", {\n secretId: \"webhook-trigger-secret-key\",\n replication: {\n userManaged: {\n replicas: [{\n location: \"us-central1\",\n }],\n },\n },\n});\nconst webhookTriggerSecretKeyData = new gcp.secretmanager.SecretVersion(\"webhook_trigger_secret_key_data\", {\n secret: webhookTriggerSecretKey.id,\n secretData: \"secretkeygoeshere\",\n});\nconst project = gcp.organizations.getProject({});\nconst secretAccessor = project.then(project =\u003e gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/secretmanager.secretAccessor\",\n members: [`serviceAccount:service-${project.number}@gcp-sa-cloudbuild.iam.gserviceaccount.com`],\n }],\n}));\nconst policy = new gcp.secretmanager.SecretIamPolicy(\"policy\", {\n project: webhookTriggerSecretKey.project,\n secretId: webhookTriggerSecretKey.secretId,\n policyData: secretAccessor.then(secretAccessor =\u003e secretAccessor.policyData),\n});\nconst webhook_config_trigger = new gcp.cloudbuild.Trigger(\"webhook-config-trigger\", {\n name: \"webhook-trigger\",\n description: \"acceptance test example webhook build trigger\",\n webhookConfig: {\n secret: webhookTriggerSecretKeyData.id,\n },\n sourceToBuild: {\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n ref: \"refs/heads/main\",\n repoType: \"GITHUB\",\n },\n gitFileSource: {\n path: \"cloudbuild.yaml\",\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n revision: \"refs/heads/main\",\n repoType: \"GITHUB\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nwebhook_trigger_secret_key = gcp.secretmanager.Secret(\"webhook_trigger_secret_key\",\n secret_id=\"webhook-trigger-secret-key\",\n replication={\n \"user_managed\": {\n \"replicas\": [{\n \"location\": \"us-central1\",\n }],\n },\n })\nwebhook_trigger_secret_key_data = gcp.secretmanager.SecretVersion(\"webhook_trigger_secret_key_data\",\n secret=webhook_trigger_secret_key.id,\n secret_data=\"secretkeygoeshere\")\nproject = gcp.organizations.get_project()\nsecret_accessor = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/secretmanager.secretAccessor\",\n \"members\": [f\"serviceAccount:service-{project.number}@gcp-sa-cloudbuild.iam.gserviceaccount.com\"],\n}])\npolicy = gcp.secretmanager.SecretIamPolicy(\"policy\",\n project=webhook_trigger_secret_key.project,\n secret_id=webhook_trigger_secret_key.secret_id,\n policy_data=secret_accessor.policy_data)\nwebhook_config_trigger = gcp.cloudbuild.Trigger(\"webhook-config-trigger\",\n name=\"webhook-trigger\",\n description=\"acceptance test example webhook build trigger\",\n webhook_config={\n \"secret\": webhook_trigger_secret_key_data.id,\n },\n source_to_build={\n \"uri\": \"https://hashicorp/terraform-provider-google-beta\",\n \"ref\": \"refs/heads/main\",\n \"repo_type\": \"GITHUB\",\n },\n git_file_source={\n \"path\": \"cloudbuild.yaml\",\n \"uri\": \"https://hashicorp/terraform-provider-google-beta\",\n \"revision\": \"refs/heads/main\",\n \"repo_type\": \"GITHUB\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var webhookTriggerSecretKey = new Gcp.SecretManager.Secret(\"webhook_trigger_secret_key\", new()\n {\n SecretId = \"webhook-trigger-secret-key\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n UserManaged = new Gcp.SecretManager.Inputs.SecretReplicationUserManagedArgs\n {\n Replicas = new[]\n {\n new Gcp.SecretManager.Inputs.SecretReplicationUserManagedReplicaArgs\n {\n Location = \"us-central1\",\n },\n },\n },\n },\n });\n\n var webhookTriggerSecretKeyData = new Gcp.SecretManager.SecretVersion(\"webhook_trigger_secret_key_data\", new()\n {\n Secret = webhookTriggerSecretKey.Id,\n SecretData = \"secretkeygoeshere\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var secretAccessor = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/secretmanager.secretAccessor\",\n Members = new[]\n {\n $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-cloudbuild.iam.gserviceaccount.com\",\n },\n },\n },\n });\n\n var policy = new Gcp.SecretManager.SecretIamPolicy(\"policy\", new()\n {\n Project = webhookTriggerSecretKey.Project,\n SecretId = webhookTriggerSecretKey.SecretId,\n PolicyData = secretAccessor.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n var webhook_config_trigger = new Gcp.CloudBuild.Trigger(\"webhook-config-trigger\", new()\n {\n Name = \"webhook-trigger\",\n Description = \"acceptance test example webhook build trigger\",\n WebhookConfig = new Gcp.CloudBuild.Inputs.TriggerWebhookConfigArgs\n {\n Secret = webhookTriggerSecretKeyData.Id,\n },\n SourceToBuild = new Gcp.CloudBuild.Inputs.TriggerSourceToBuildArgs\n {\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n Ref = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n },\n GitFileSource = new Gcp.CloudBuild.Inputs.TriggerGitFileSourceArgs\n {\n Path = \"cloudbuild.yaml\",\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n Revision = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\twebhookTriggerSecretKey, err := secretmanager.NewSecret(ctx, \"webhook_trigger_secret_key\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"webhook-trigger-secret-key\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tUserManaged: \u0026secretmanager.SecretReplicationUserManagedArgs{\n\t\t\t\t\tReplicas: secretmanager.SecretReplicationUserManagedReplicaArray{\n\t\t\t\t\t\t\u0026secretmanager.SecretReplicationUserManagedReplicaArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\twebhookTriggerSecretKeyData, err := secretmanager.NewSecretVersion(ctx, \"webhook_trigger_secret_key_data\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: webhookTriggerSecretKey.ID(),\n\t\t\tSecretData: pulumi.String(\"secretkeygoeshere\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecretAccessor, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/secretmanager.secretAccessor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\tfmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-cloudbuild.iam.gserviceaccount.com\", project.Number),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamPolicy(ctx, \"policy\", \u0026secretmanager.SecretIamPolicyArgs{\n\t\t\tProject: webhookTriggerSecretKey.Project,\n\t\t\tSecretId: webhookTriggerSecretKey.SecretId,\n\t\t\tPolicyData: pulumi.String(secretAccessor.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuild.NewTrigger(ctx, \"webhook-config-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"webhook-trigger\"),\n\t\t\tDescription: pulumi.String(\"acceptance test example webhook build trigger\"),\n\t\t\tWebhookConfig: \u0026cloudbuild.TriggerWebhookConfigArgs{\n\t\t\t\tSecret: webhookTriggerSecretKeyData.ID(),\n\t\t\t},\n\t\t\tSourceToBuild: \u0026cloudbuild.TriggerSourceToBuildArgs{\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t\tRef: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t},\n\t\t\tGitFileSource: \u0026cloudbuild.TriggerGitFileSourceArgs{\n\t\t\t\tPath: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t\tRevision: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationUserManagedArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicy;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicyArgs;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerWebhookConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerSourceToBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGitFileSourceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var webhookTriggerSecretKey = new Secret(\"webhookTriggerSecretKey\", SecretArgs.builder()\n .secretId(\"webhook-trigger-secret-key\")\n .replication(SecretReplicationArgs.builder()\n .userManaged(SecretReplicationUserManagedArgs.builder()\n .replicas(SecretReplicationUserManagedReplicaArgs.builder()\n .location(\"us-central1\")\n .build())\n .build())\n .build())\n .build());\n\n var webhookTriggerSecretKeyData = new SecretVersion(\"webhookTriggerSecretKeyData\", SecretVersionArgs.builder()\n .secret(webhookTriggerSecretKey.id())\n .secretData(\"secretkeygoeshere\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n final var secretAccessor = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/secretmanager.secretAccessor\")\n .members(String.format(\"serviceAccount:service-%s@gcp-sa-cloudbuild.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .build());\n\n var policy = new SecretIamPolicy(\"policy\", SecretIamPolicyArgs.builder()\n .project(webhookTriggerSecretKey.project())\n .secretId(webhookTriggerSecretKey.secretId())\n .policyData(secretAccessor.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n var webhook_config_trigger = new Trigger(\"webhook-config-trigger\", TriggerArgs.builder()\n .name(\"webhook-trigger\")\n .description(\"acceptance test example webhook build trigger\")\n .webhookConfig(TriggerWebhookConfigArgs.builder()\n .secret(webhookTriggerSecretKeyData.id())\n .build())\n .sourceToBuild(TriggerSourceToBuildArgs.builder()\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .ref(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .build())\n .gitFileSource(TriggerGitFileSourceArgs.builder()\n .path(\"cloudbuild.yaml\")\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .revision(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n webhookTriggerSecretKey:\n type: gcp:secretmanager:Secret\n name: webhook_trigger_secret_key\n properties:\n secretId: webhook-trigger-secret-key\n replication:\n userManaged:\n replicas:\n - location: us-central1\n webhookTriggerSecretKeyData:\n type: gcp:secretmanager:SecretVersion\n name: webhook_trigger_secret_key_data\n properties:\n secret: ${webhookTriggerSecretKey.id}\n secretData: secretkeygoeshere\n policy:\n type: gcp:secretmanager:SecretIamPolicy\n properties:\n project: ${webhookTriggerSecretKey.project}\n secretId: ${webhookTriggerSecretKey.secretId}\n policyData: ${secretAccessor.policyData}\n webhook-config-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: webhook-trigger\n description: acceptance test example webhook build trigger\n webhookConfig:\n secret: ${webhookTriggerSecretKeyData.id}\n sourceToBuild:\n uri: https://hashicorp/terraform-provider-google-beta\n ref: refs/heads/main\n repoType: GITHUB\n gitFileSource:\n path: cloudbuild.yaml\n uri: https://hashicorp/terraform-provider-google-beta\n revision: refs/heads/main\n repoType: GITHUB\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n secretAccessor:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/secretmanager.secretAccessor\n members:\n - serviceAccount:service-${project.number}@gcp-sa-cloudbuild.iam.gserviceaccount.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Manual\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst manual_trigger = new gcp.cloudbuild.Trigger(\"manual-trigger\", {\n name: \"manual-trigger\",\n sourceToBuild: {\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n ref: \"refs/heads/main\",\n repoType: \"GITHUB\",\n },\n gitFileSource: {\n path: \"cloudbuild.yaml\",\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n revision: \"refs/heads/main\",\n repoType: \"GITHUB\",\n },\n approvalConfig: {\n approvalRequired: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmanual_trigger = gcp.cloudbuild.Trigger(\"manual-trigger\",\n name=\"manual-trigger\",\n source_to_build={\n \"uri\": \"https://hashicorp/terraform-provider-google-beta\",\n \"ref\": \"refs/heads/main\",\n \"repo_type\": \"GITHUB\",\n },\n git_file_source={\n \"path\": \"cloudbuild.yaml\",\n \"uri\": \"https://hashicorp/terraform-provider-google-beta\",\n \"revision\": \"refs/heads/main\",\n \"repo_type\": \"GITHUB\",\n },\n approval_config={\n \"approval_required\": True,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var manual_trigger = new Gcp.CloudBuild.Trigger(\"manual-trigger\", new()\n {\n Name = \"manual-trigger\",\n SourceToBuild = new Gcp.CloudBuild.Inputs.TriggerSourceToBuildArgs\n {\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n Ref = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n },\n GitFileSource = new Gcp.CloudBuild.Inputs.TriggerGitFileSourceArgs\n {\n Path = \"cloudbuild.yaml\",\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n Revision = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n },\n ApprovalConfig = new Gcp.CloudBuild.Inputs.TriggerApprovalConfigArgs\n {\n ApprovalRequired = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuild.NewTrigger(ctx, \"manual-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"manual-trigger\"),\n\t\t\tSourceToBuild: \u0026cloudbuild.TriggerSourceToBuildArgs{\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t\tRef: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t},\n\t\t\tGitFileSource: \u0026cloudbuild.TriggerGitFileSourceArgs{\n\t\t\t\tPath: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t\tRevision: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t},\n\t\t\tApprovalConfig: \u0026cloudbuild.TriggerApprovalConfigArgs{\n\t\t\t\tApprovalRequired: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerSourceToBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGitFileSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerApprovalConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var manual_trigger = new Trigger(\"manual-trigger\", TriggerArgs.builder()\n .name(\"manual-trigger\")\n .sourceToBuild(TriggerSourceToBuildArgs.builder()\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .ref(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .build())\n .gitFileSource(TriggerGitFileSourceArgs.builder()\n .path(\"cloudbuild.yaml\")\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .revision(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .build())\n .approvalConfig(TriggerApprovalConfigArgs.builder()\n .approvalRequired(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n manual-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: manual-trigger\n sourceToBuild:\n uri: https://hashicorp/terraform-provider-google-beta\n ref: refs/heads/main\n repoType: GITHUB\n gitFileSource:\n path: cloudbuild.yaml\n uri: https://hashicorp/terraform-provider-google-beta\n revision: refs/heads/main\n repoType: GITHUB\n approvalConfig:\n approvalRequired: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Manual Github Enterprise\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst manual_ghe_trigger = new gcp.cloudbuild.Trigger(\"manual-ghe-trigger\", {\n name: \"\",\n sourceToBuild: {\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n ref: \"refs/heads/main\",\n repoType: \"GITHUB\",\n githubEnterpriseConfig: \"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\n },\n gitFileSource: {\n path: \"cloudbuild.yaml\",\n uri: \"https://hashicorp/terraform-provider-google-beta\",\n revision: \"refs/heads/main\",\n repoType: \"GITHUB\",\n githubEnterpriseConfig: \"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmanual_ghe_trigger = gcp.cloudbuild.Trigger(\"manual-ghe-trigger\",\n name=\"\",\n source_to_build={\n \"uri\": \"https://hashicorp/terraform-provider-google-beta\",\n \"ref\": \"refs/heads/main\",\n \"repo_type\": \"GITHUB\",\n \"github_enterprise_config\": \"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\n },\n git_file_source={\n \"path\": \"cloudbuild.yaml\",\n \"uri\": \"https://hashicorp/terraform-provider-google-beta\",\n \"revision\": \"refs/heads/main\",\n \"repo_type\": \"GITHUB\",\n \"github_enterprise_config\": \"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var manual_ghe_trigger = new Gcp.CloudBuild.Trigger(\"manual-ghe-trigger\", new()\n {\n Name = \"\",\n SourceToBuild = new Gcp.CloudBuild.Inputs.TriggerSourceToBuildArgs\n {\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n Ref = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n GithubEnterpriseConfig = \"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\n },\n GitFileSource = new Gcp.CloudBuild.Inputs.TriggerGitFileSourceArgs\n {\n Path = \"cloudbuild.yaml\",\n Uri = \"https://hashicorp/terraform-provider-google-beta\",\n Revision = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n GithubEnterpriseConfig = \"projects/myProject/locations/global/githubEnterpriseConfigs/configID\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuild.NewTrigger(ctx, \"manual-ghe-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"\"),\n\t\t\tSourceToBuild: \u0026cloudbuild.TriggerSourceToBuildArgs{\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t\tRef: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t\tGithubEnterpriseConfig: pulumi.String(\"projects/myProject/locations/global/githubEnterpriseConfigs/configID\"),\n\t\t\t},\n\t\t\tGitFileSource: \u0026cloudbuild.TriggerGitFileSourceArgs{\n\t\t\t\tPath: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\t\tUri: pulumi.String(\"https://hashicorp/terraform-provider-google-beta\"),\n\t\t\t\tRevision: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t\tGithubEnterpriseConfig: pulumi.String(\"projects/myProject/locations/global/githubEnterpriseConfigs/configID\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerSourceToBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGitFileSourceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var manual_ghe_trigger = new Trigger(\"manual-ghe-trigger\", TriggerArgs.builder()\n .name(\"\")\n .sourceToBuild(TriggerSourceToBuildArgs.builder()\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .ref(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .githubEnterpriseConfig(\"projects/myProject/locations/global/githubEnterpriseConfigs/configID\")\n .build())\n .gitFileSource(TriggerGitFileSourceArgs.builder()\n .path(\"cloudbuild.yaml\")\n .uri(\"https://hashicorp/terraform-provider-google-beta\")\n .revision(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .githubEnterpriseConfig(\"projects/myProject/locations/global/githubEnterpriseConfigs/configID\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n manual-ghe-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name:\n sourceToBuild:\n uri: https://hashicorp/terraform-provider-google-beta\n ref: refs/heads/main\n repoType: GITHUB\n githubEnterpriseConfig: projects/myProject/locations/global/githubEnterpriseConfigs/configID\n gitFileSource:\n path: cloudbuild.yaml\n uri: https://hashicorp/terraform-provider-google-beta\n revision: refs/heads/main\n repoType: GITHUB\n githubEnterpriseConfig: projects/myProject/locations/global/githubEnterpriseConfigs/configID\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Manual Bitbucket Server\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst manual_bitbucket_trigger = new gcp.cloudbuild.Trigger(\"manual-bitbucket-trigger\", {\n name: \"terraform-manual-bbs-trigger\",\n sourceToBuild: {\n uri: \"https://bbs.com/scm/stag/test-repo.git\",\n ref: \"refs/heads/main\",\n repoType: \"BITBUCKET_SERVER\",\n bitbucketServerConfig: \"projects/myProject/locations/global/bitbucketServerConfigs/configID\",\n },\n gitFileSource: {\n path: \"cloudbuild.yaml\",\n uri: \"https://bbs.com/scm/stag/test-repo.git\",\n revision: \"refs/heads/main\",\n repoType: \"BITBUCKET_SERVER\",\n bitbucketServerConfig: \"projects/myProject/locations/global/bitbucketServerConfigs/configID\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmanual_bitbucket_trigger = gcp.cloudbuild.Trigger(\"manual-bitbucket-trigger\",\n name=\"terraform-manual-bbs-trigger\",\n source_to_build={\n \"uri\": \"https://bbs.com/scm/stag/test-repo.git\",\n \"ref\": \"refs/heads/main\",\n \"repo_type\": \"BITBUCKET_SERVER\",\n \"bitbucket_server_config\": \"projects/myProject/locations/global/bitbucketServerConfigs/configID\",\n },\n git_file_source={\n \"path\": \"cloudbuild.yaml\",\n \"uri\": \"https://bbs.com/scm/stag/test-repo.git\",\n \"revision\": \"refs/heads/main\",\n \"repo_type\": \"BITBUCKET_SERVER\",\n \"bitbucket_server_config\": \"projects/myProject/locations/global/bitbucketServerConfigs/configID\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var manual_bitbucket_trigger = new Gcp.CloudBuild.Trigger(\"manual-bitbucket-trigger\", new()\n {\n Name = \"terraform-manual-bbs-trigger\",\n SourceToBuild = new Gcp.CloudBuild.Inputs.TriggerSourceToBuildArgs\n {\n Uri = \"https://bbs.com/scm/stag/test-repo.git\",\n Ref = \"refs/heads/main\",\n RepoType = \"BITBUCKET_SERVER\",\n BitbucketServerConfig = \"projects/myProject/locations/global/bitbucketServerConfigs/configID\",\n },\n GitFileSource = new Gcp.CloudBuild.Inputs.TriggerGitFileSourceArgs\n {\n Path = \"cloudbuild.yaml\",\n Uri = \"https://bbs.com/scm/stag/test-repo.git\",\n Revision = \"refs/heads/main\",\n RepoType = \"BITBUCKET_SERVER\",\n BitbucketServerConfig = \"projects/myProject/locations/global/bitbucketServerConfigs/configID\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuild.NewTrigger(ctx, \"manual-bitbucket-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"terraform-manual-bbs-trigger\"),\n\t\t\tSourceToBuild: \u0026cloudbuild.TriggerSourceToBuildArgs{\n\t\t\t\tUri: pulumi.String(\"https://bbs.com/scm/stag/test-repo.git\"),\n\t\t\t\tRef: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"BITBUCKET_SERVER\"),\n\t\t\t\tBitbucketServerConfig: pulumi.String(\"projects/myProject/locations/global/bitbucketServerConfigs/configID\"),\n\t\t\t},\n\t\t\tGitFileSource: \u0026cloudbuild.TriggerGitFileSourceArgs{\n\t\t\t\tPath: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\t\tUri: pulumi.String(\"https://bbs.com/scm/stag/test-repo.git\"),\n\t\t\t\tRevision: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"BITBUCKET_SERVER\"),\n\t\t\t\tBitbucketServerConfig: pulumi.String(\"projects/myProject/locations/global/bitbucketServerConfigs/configID\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerSourceToBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGitFileSourceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var manual_bitbucket_trigger = new Trigger(\"manual-bitbucket-trigger\", TriggerArgs.builder()\n .name(\"terraform-manual-bbs-trigger\")\n .sourceToBuild(TriggerSourceToBuildArgs.builder()\n .uri(\"https://bbs.com/scm/stag/test-repo.git\")\n .ref(\"refs/heads/main\")\n .repoType(\"BITBUCKET_SERVER\")\n .bitbucketServerConfig(\"projects/myProject/locations/global/bitbucketServerConfigs/configID\")\n .build())\n .gitFileSource(TriggerGitFileSourceArgs.builder()\n .path(\"cloudbuild.yaml\")\n .uri(\"https://bbs.com/scm/stag/test-repo.git\")\n .revision(\"refs/heads/main\")\n .repoType(\"BITBUCKET_SERVER\")\n .bitbucketServerConfig(\"projects/myProject/locations/global/bitbucketServerConfigs/configID\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n manual-bitbucket-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: terraform-manual-bbs-trigger\n sourceToBuild:\n uri: https://bbs.com/scm/stag/test-repo.git\n ref: refs/heads/main\n repoType: BITBUCKET_SERVER\n bitbucketServerConfig: projects/myProject/locations/global/bitbucketServerConfigs/configID\n gitFileSource:\n path: cloudbuild.yaml\n uri: https://bbs.com/scm/stag/test-repo.git\n revision: refs/heads/main\n repoType: BITBUCKET_SERVER\n bitbucketServerConfig: projects/myProject/locations/global/bitbucketServerConfigs/configID\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Repo\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_connection = new gcp.cloudbuildv2.Connection(\"my-connection\", {\n location: \"us-central1\",\n name: \"my-connection\",\n githubConfig: {\n appInstallationId: 123123,\n authorizerCredential: {\n oauthTokenSecretVersion: \"projects/my-project/secrets/github-pat-secret/versions/latest\",\n },\n },\n});\nconst my_repository = new gcp.cloudbuildv2.Repository(\"my-repository\", {\n name: \"my-repo\",\n parentConnection: my_connection.id,\n remoteUri: \"https://github.com/myuser/my-repo.git\",\n});\nconst repo_trigger = new gcp.cloudbuild.Trigger(\"repo-trigger\", {\n location: \"us-central1\",\n repositoryEventConfig: {\n repository: my_repository.id,\n push: {\n branch: \"feature-.*\",\n },\n },\n filename: \"cloudbuild.yaml\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_connection = gcp.cloudbuildv2.Connection(\"my-connection\",\n location=\"us-central1\",\n name=\"my-connection\",\n github_config={\n \"app_installation_id\": 123123,\n \"authorizer_credential\": {\n \"oauth_token_secret_version\": \"projects/my-project/secrets/github-pat-secret/versions/latest\",\n },\n })\nmy_repository = gcp.cloudbuildv2.Repository(\"my-repository\",\n name=\"my-repo\",\n parent_connection=my_connection.id,\n remote_uri=\"https://github.com/myuser/my-repo.git\")\nrepo_trigger = gcp.cloudbuild.Trigger(\"repo-trigger\",\n location=\"us-central1\",\n repository_event_config={\n \"repository\": my_repository.id,\n \"push\": {\n \"branch\": \"feature-.*\",\n },\n },\n filename=\"cloudbuild.yaml\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_connection = new Gcp.CloudBuildV2.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n Name = \"my-connection\",\n GithubConfig = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigArgs\n {\n AppInstallationId = 123123,\n AuthorizerCredential = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigAuthorizerCredentialArgs\n {\n OauthTokenSecretVersion = \"projects/my-project/secrets/github-pat-secret/versions/latest\",\n },\n },\n });\n\n var my_repository = new Gcp.CloudBuildV2.Repository(\"my-repository\", new()\n {\n Name = \"my-repo\",\n ParentConnection = my_connection.Id,\n RemoteUri = \"https://github.com/myuser/my-repo.git\",\n });\n\n var repo_trigger = new Gcp.CloudBuild.Trigger(\"repo-trigger\", new()\n {\n Location = \"us-central1\",\n RepositoryEventConfig = new Gcp.CloudBuild.Inputs.TriggerRepositoryEventConfigArgs\n {\n Repository = my_repository.Id,\n Push = new Gcp.CloudBuild.Inputs.TriggerRepositoryEventConfigPushArgs\n {\n Branch = \"feature-.*\",\n },\n },\n Filename = \"cloudbuild.yaml\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuildv2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuildv2.NewConnection(ctx, \"my-connection\", \u0026cloudbuildv2.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-connection\"),\n\t\t\tGithubConfig: \u0026cloudbuildv2.ConnectionGithubConfigArgs{\n\t\t\t\tAppInstallationId: pulumi.Int(123123),\n\t\t\t\tAuthorizerCredential: \u0026cloudbuildv2.ConnectionGithubConfigAuthorizerCredentialArgs{\n\t\t\t\t\tOauthTokenSecretVersion: pulumi.String(\"projects/my-project/secrets/github-pat-secret/versions/latest\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuildv2.NewRepository(ctx, \"my-repository\", \u0026cloudbuildv2.RepositoryArgs{\n\t\t\tName: pulumi.String(\"my-repo\"),\n\t\t\tParentConnection: my_connection.ID(),\n\t\t\tRemoteUri: pulumi.String(\"https://github.com/myuser/my-repo.git\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuild.NewTrigger(ctx, \"repo-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryEventConfig: \u0026cloudbuild.TriggerRepositoryEventConfigArgs{\n\t\t\t\tRepository: my_repository.ID(),\n\t\t\t\tPush: \u0026cloudbuild.TriggerRepositoryEventConfigPushArgs{\n\t\t\t\t\tBranch: pulumi.String(\"feature-.*\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFilename: pulumi.String(\"cloudbuild.yaml\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuildv2.Connection;\nimport com.pulumi.gcp.cloudbuildv2.ConnectionArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubConfigArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubConfigAuthorizerCredentialArgs;\nimport com.pulumi.gcp.cloudbuildv2.Repository;\nimport com.pulumi.gcp.cloudbuildv2.RepositoryArgs;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerRepositoryEventConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerRepositoryEventConfigPushArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .name(\"my-connection\")\n .githubConfig(ConnectionGithubConfigArgs.builder()\n .appInstallationId(123123)\n .authorizerCredential(ConnectionGithubConfigAuthorizerCredentialArgs.builder()\n .oauthTokenSecretVersion(\"projects/my-project/secrets/github-pat-secret/versions/latest\")\n .build())\n .build())\n .build());\n\n var my_repository = new Repository(\"my-repository\", RepositoryArgs.builder()\n .name(\"my-repo\")\n .parentConnection(my_connection.id())\n .remoteUri(\"https://github.com/myuser/my-repo.git\")\n .build());\n\n var repo_trigger = new Trigger(\"repo-trigger\", TriggerArgs.builder()\n .location(\"us-central1\")\n .repositoryEventConfig(TriggerRepositoryEventConfigArgs.builder()\n .repository(my_repository.id())\n .push(TriggerRepositoryEventConfigPushArgs.builder()\n .branch(\"feature-.*\")\n .build())\n .build())\n .filename(\"cloudbuild.yaml\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-connection:\n type: gcp:cloudbuildv2:Connection\n properties:\n location: us-central1\n name: my-connection\n githubConfig:\n appInstallationId: 123123\n authorizerCredential:\n oauthTokenSecretVersion: projects/my-project/secrets/github-pat-secret/versions/latest\n my-repository:\n type: gcp:cloudbuildv2:Repository\n properties:\n name: my-repo\n parentConnection: ${[\"my-connection\"].id}\n remoteUri: https://github.com/myuser/my-repo.git\n repo-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n location: us-central1\n repositoryEventConfig:\n repository: ${[\"my-repository\"].id}\n push:\n branch: feature-.*\n filename: cloudbuild.yaml\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Bitbucket Server Push\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bbs_push_trigger = new gcp.cloudbuild.Trigger(\"bbs-push-trigger\", {\n name: \"bbs-push-trigger\",\n location: \"us-central1\",\n bitbucketServerTriggerConfig: {\n repoSlug: \"bbs-push-trigger\",\n projectKey: \"STAG\",\n bitbucketServerConfigResource: \"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n push: {\n tag: \"^0.1.*\",\n invertRegex: true,\n },\n },\n filename: \"cloudbuild.yaml\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbbs_push_trigger = gcp.cloudbuild.Trigger(\"bbs-push-trigger\",\n name=\"bbs-push-trigger\",\n location=\"us-central1\",\n bitbucket_server_trigger_config={\n \"repo_slug\": \"bbs-push-trigger\",\n \"project_key\": \"STAG\",\n \"bitbucket_server_config_resource\": \"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n \"push\": {\n \"tag\": \"^0.1.*\",\n \"invert_regex\": True,\n },\n },\n filename=\"cloudbuild.yaml\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bbs_push_trigger = new Gcp.CloudBuild.Trigger(\"bbs-push-trigger\", new()\n {\n Name = \"bbs-push-trigger\",\n Location = \"us-central1\",\n BitbucketServerTriggerConfig = new Gcp.CloudBuild.Inputs.TriggerBitbucketServerTriggerConfigArgs\n {\n RepoSlug = \"bbs-push-trigger\",\n ProjectKey = \"STAG\",\n BitbucketServerConfigResource = \"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n Push = new Gcp.CloudBuild.Inputs.TriggerBitbucketServerTriggerConfigPushArgs\n {\n Tag = \"^0.1.*\",\n InvertRegex = true,\n },\n },\n Filename = \"cloudbuild.yaml\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuild.NewTrigger(ctx, \"bbs-push-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"bbs-push-trigger\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBitbucketServerTriggerConfig: \u0026cloudbuild.TriggerBitbucketServerTriggerConfigArgs{\n\t\t\t\tRepoSlug: pulumi.String(\"bbs-push-trigger\"),\n\t\t\t\tProjectKey: pulumi.String(\"STAG\"),\n\t\t\t\tBitbucketServerConfigResource: pulumi.String(\"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\"),\n\t\t\t\tPush: \u0026cloudbuild.TriggerBitbucketServerTriggerConfigPushArgs{\n\t\t\t\t\tTag: pulumi.String(\"^0.1.*\"),\n\t\t\t\t\tInvertRegex: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFilename: pulumi.String(\"cloudbuild.yaml\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBitbucketServerTriggerConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBitbucketServerTriggerConfigPushArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bbs_push_trigger = new Trigger(\"bbs-push-trigger\", TriggerArgs.builder()\n .name(\"bbs-push-trigger\")\n .location(\"us-central1\")\n .bitbucketServerTriggerConfig(TriggerBitbucketServerTriggerConfigArgs.builder()\n .repoSlug(\"bbs-push-trigger\")\n .projectKey(\"STAG\")\n .bitbucketServerConfigResource(\"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\")\n .push(TriggerBitbucketServerTriggerConfigPushArgs.builder()\n .tag(\"^0.1.*\")\n .invertRegex(true)\n .build())\n .build())\n .filename(\"cloudbuild.yaml\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bbs-push-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: bbs-push-trigger\n location: us-central1\n bitbucketServerTriggerConfig:\n repoSlug: bbs-push-trigger\n projectKey: STAG\n bitbucketServerConfigResource: projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\n push:\n tag: ^0.1.*\n invertRegex: true\n filename: cloudbuild.yaml\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Bitbucket Server Pull Request\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bbs_pull_request_trigger = new gcp.cloudbuild.Trigger(\"bbs-pull-request-trigger\", {\n name: \"ghe-trigger\",\n location: \"us-central1\",\n bitbucketServerTriggerConfig: {\n repoSlug: \"terraform-provider-google\",\n projectKey: \"STAG\",\n bitbucketServerConfigResource: \"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n pullRequest: {\n branch: \"^master$\",\n invertRegex: false,\n commentControl: \"COMMENTS_ENABLED\",\n },\n },\n filename: \"cloudbuild.yaml\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbbs_pull_request_trigger = gcp.cloudbuild.Trigger(\"bbs-pull-request-trigger\",\n name=\"ghe-trigger\",\n location=\"us-central1\",\n bitbucket_server_trigger_config={\n \"repo_slug\": \"terraform-provider-google\",\n \"project_key\": \"STAG\",\n \"bitbucket_server_config_resource\": \"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n \"pull_request\": {\n \"branch\": \"^master$\",\n \"invert_regex\": False,\n \"comment_control\": \"COMMENTS_ENABLED\",\n },\n },\n filename=\"cloudbuild.yaml\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bbs_pull_request_trigger = new Gcp.CloudBuild.Trigger(\"bbs-pull-request-trigger\", new()\n {\n Name = \"ghe-trigger\",\n Location = \"us-central1\",\n BitbucketServerTriggerConfig = new Gcp.CloudBuild.Inputs.TriggerBitbucketServerTriggerConfigArgs\n {\n RepoSlug = \"terraform-provider-google\",\n ProjectKey = \"STAG\",\n BitbucketServerConfigResource = \"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\",\n PullRequest = new Gcp.CloudBuild.Inputs.TriggerBitbucketServerTriggerConfigPullRequestArgs\n {\n Branch = \"^master$\",\n InvertRegex = false,\n CommentControl = \"COMMENTS_ENABLED\",\n },\n },\n Filename = \"cloudbuild.yaml\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuild.NewTrigger(ctx, \"bbs-pull-request-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"ghe-trigger\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBitbucketServerTriggerConfig: \u0026cloudbuild.TriggerBitbucketServerTriggerConfigArgs{\n\t\t\t\tRepoSlug: pulumi.String(\"terraform-provider-google\"),\n\t\t\t\tProjectKey: pulumi.String(\"STAG\"),\n\t\t\t\tBitbucketServerConfigResource: pulumi.String(\"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\"),\n\t\t\t\tPullRequest: \u0026cloudbuild.TriggerBitbucketServerTriggerConfigPullRequestArgs{\n\t\t\t\t\tBranch: pulumi.String(\"^master$\"),\n\t\t\t\t\tInvertRegex: pulumi.Bool(false),\n\t\t\t\t\tCommentControl: pulumi.String(\"COMMENTS_ENABLED\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFilename: pulumi.String(\"cloudbuild.yaml\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBitbucketServerTriggerConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBitbucketServerTriggerConfigPullRequestArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bbs_pull_request_trigger = new Trigger(\"bbs-pull-request-trigger\", TriggerArgs.builder()\n .name(\"ghe-trigger\")\n .location(\"us-central1\")\n .bitbucketServerTriggerConfig(TriggerBitbucketServerTriggerConfigArgs.builder()\n .repoSlug(\"terraform-provider-google\")\n .projectKey(\"STAG\")\n .bitbucketServerConfigResource(\"projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\")\n .pullRequest(TriggerBitbucketServerTriggerConfigPullRequestArgs.builder()\n .branch(\"^master$\")\n .invertRegex(false)\n .commentControl(\"COMMENTS_ENABLED\")\n .build())\n .build())\n .filename(\"cloudbuild.yaml\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bbs-pull-request-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: ghe-trigger\n location: us-central1\n bitbucketServerTriggerConfig:\n repoSlug: terraform-provider-google\n projectKey: STAG\n bitbucketServerConfigResource: projects/123456789/locations/us-central1/bitbucketServerConfigs/myBitbucketConfig\n pullRequest:\n branch: ^master$\n invertRegex: false\n commentControl: COMMENTS_ENABLED\n filename: cloudbuild.yaml\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Github Enterprise\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst ghe_trigger = new gcp.cloudbuild.Trigger(\"ghe-trigger\", {\n name: \"ghe-trigger\",\n location: \"us-central1\",\n github: {\n owner: \"hashicorp\",\n name: \"terraform-provider-google\",\n push: {\n branch: \"^main$\",\n },\n enterpriseConfigResourceName: \"projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\",\n },\n filename: \"cloudbuild.yaml\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nghe_trigger = gcp.cloudbuild.Trigger(\"ghe-trigger\",\n name=\"ghe-trigger\",\n location=\"us-central1\",\n github={\n \"owner\": \"hashicorp\",\n \"name\": \"terraform-provider-google\",\n \"push\": {\n \"branch\": \"^main$\",\n },\n \"enterprise_config_resource_name\": \"projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\",\n },\n filename=\"cloudbuild.yaml\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var ghe_trigger = new Gcp.CloudBuild.Trigger(\"ghe-trigger\", new()\n {\n Name = \"ghe-trigger\",\n Location = \"us-central1\",\n Github = new Gcp.CloudBuild.Inputs.TriggerGithubArgs\n {\n Owner = \"hashicorp\",\n Name = \"terraform-provider-google\",\n Push = new Gcp.CloudBuild.Inputs.TriggerGithubPushArgs\n {\n Branch = \"^main$\",\n },\n EnterpriseConfigResourceName = \"projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\",\n },\n Filename = \"cloudbuild.yaml\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuild.NewTrigger(ctx, \"ghe-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"ghe-trigger\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tGithub: \u0026cloudbuild.TriggerGithubArgs{\n\t\t\t\tOwner: pulumi.String(\"hashicorp\"),\n\t\t\t\tName: pulumi.String(\"terraform-provider-google\"),\n\t\t\t\tPush: \u0026cloudbuild.TriggerGithubPushArgs{\n\t\t\t\t\tBranch: pulumi.String(\"^main$\"),\n\t\t\t\t},\n\t\t\t\tEnterpriseConfigResourceName: pulumi.String(\"projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\"),\n\t\t\t},\n\t\t\tFilename: pulumi.String(\"cloudbuild.yaml\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGithubArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGithubPushArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var ghe_trigger = new Trigger(\"ghe-trigger\", TriggerArgs.builder()\n .name(\"ghe-trigger\")\n .location(\"us-central1\")\n .github(TriggerGithubArgs.builder()\n .owner(\"hashicorp\")\n .name(\"terraform-provider-google\")\n .push(TriggerGithubPushArgs.builder()\n .branch(\"^main$\")\n .build())\n .enterpriseConfigResourceName(\"projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\")\n .build())\n .filename(\"cloudbuild.yaml\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ghe-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: ghe-trigger\n location: us-central1\n github:\n owner: hashicorp\n name: terraform-provider-google\n push:\n branch: ^main$\n enterpriseConfigResourceName: projects/123456789/locations/us-central1/githubEnterpriseConfigs/configID\n filename: cloudbuild.yaml\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Allow Failure\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst allow_failure_trigger = new gcp.cloudbuild.Trigger(\"allow-failure-trigger\", {\n name: \"my-trigger\",\n location: \"global\",\n triggerTemplate: {\n branchName: \"main\",\n repoName: \"my-repo\",\n },\n build: {\n steps: [{\n name: \"ubuntu\",\n args: [\n \"-c\",\n \"exit 1\",\n ],\n allowFailure: true,\n }],\n source: {\n storageSource: {\n bucket: \"mybucket\",\n object: \"source_code.tar.gz\",\n },\n },\n tags: [\n \"build\",\n \"newFeature\",\n ],\n substitutions: {\n _FOO: \"bar\",\n _BAZ: \"qux\",\n },\n queueTtl: \"20s\",\n logsBucket: \"gs://mybucket/logs\",\n secrets: [{\n kmsKeyName: \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n secretEnv: {\n PASSWORD: \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\",\n },\n }],\n availableSecrets: {\n secretManagers: [{\n env: \"MY_SECRET\",\n versionName: \"projects/myProject/secrets/mySecret/versions/latest\",\n }],\n },\n artifacts: {\n images: [\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"],\n objects: {\n location: \"gs://bucket/path/to/somewhere/\",\n paths: [\"path\"],\n },\n },\n options: {\n sourceProvenanceHashes: [\"MD5\"],\n requestedVerifyOption: \"VERIFIED\",\n machineType: \"N1_HIGHCPU_8\",\n diskSizeGb: 100,\n substitutionOption: \"ALLOW_LOOSE\",\n dynamicSubstitutions: true,\n logStreamingOption: \"STREAM_OFF\",\n workerPool: \"pool\",\n logging: \"LEGACY\",\n envs: [\"ekey = evalue\"],\n secretEnvs: [\"secretenv = svalue\"],\n volumes: [{\n name: \"v1\",\n path: \"v1\",\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nallow_failure_trigger = gcp.cloudbuild.Trigger(\"allow-failure-trigger\",\n name=\"my-trigger\",\n location=\"global\",\n trigger_template={\n \"branch_name\": \"main\",\n \"repo_name\": \"my-repo\",\n },\n build={\n \"steps\": [{\n \"name\": \"ubuntu\",\n \"args\": [\n \"-c\",\n \"exit 1\",\n ],\n \"allow_failure\": True,\n }],\n \"source\": {\n \"storage_source\": {\n \"bucket\": \"mybucket\",\n \"object\": \"source_code.tar.gz\",\n },\n },\n \"tags\": [\n \"build\",\n \"newFeature\",\n ],\n \"substitutions\": {\n \"_FOO\": \"bar\",\n \"_BAZ\": \"qux\",\n },\n \"queue_ttl\": \"20s\",\n \"logs_bucket\": \"gs://mybucket/logs\",\n \"secrets\": [{\n \"kms_key_name\": \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n \"secret_env\": {\n \"PASSWORD\": \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\",\n },\n }],\n \"available_secrets\": {\n \"secret_managers\": [{\n \"env\": \"MY_SECRET\",\n \"version_name\": \"projects/myProject/secrets/mySecret/versions/latest\",\n }],\n },\n \"artifacts\": {\n \"images\": [\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"],\n \"objects\": {\n \"location\": \"gs://bucket/path/to/somewhere/\",\n \"paths\": [\"path\"],\n },\n },\n \"options\": {\n \"source_provenance_hashes\": [\"MD5\"],\n \"requested_verify_option\": \"VERIFIED\",\n \"machine_type\": \"N1_HIGHCPU_8\",\n \"disk_size_gb\": 100,\n \"substitution_option\": \"ALLOW_LOOSE\",\n \"dynamic_substitutions\": True,\n \"log_streaming_option\": \"STREAM_OFF\",\n \"worker_pool\": \"pool\",\n \"logging\": \"LEGACY\",\n \"envs\": [\"ekey = evalue\"],\n \"secret_envs\": [\"secretenv = svalue\"],\n \"volumes\": [{\n \"name\": \"v1\",\n \"path\": \"v1\",\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var allow_failure_trigger = new Gcp.CloudBuild.Trigger(\"allow-failure-trigger\", new()\n {\n Name = \"my-trigger\",\n Location = \"global\",\n TriggerTemplate = new Gcp.CloudBuild.Inputs.TriggerTriggerTemplateArgs\n {\n BranchName = \"main\",\n RepoName = \"my-repo\",\n },\n Build = new Gcp.CloudBuild.Inputs.TriggerBuildArgs\n {\n Steps = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildStepArgs\n {\n Name = \"ubuntu\",\n Args = new[]\n {\n \"-c\",\n \"exit 1\",\n },\n AllowFailure = true,\n },\n },\n Source = new Gcp.CloudBuild.Inputs.TriggerBuildSourceArgs\n {\n StorageSource = new Gcp.CloudBuild.Inputs.TriggerBuildSourceStorageSourceArgs\n {\n Bucket = \"mybucket\",\n Object = \"source_code.tar.gz\",\n },\n },\n Tags = new[]\n {\n \"build\",\n \"newFeature\",\n },\n Substitutions = \n {\n { \"_FOO\", \"bar\" },\n { \"_BAZ\", \"qux\" },\n },\n QueueTtl = \"20s\",\n LogsBucket = \"gs://mybucket/logs\",\n Secrets = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildSecretArgs\n {\n KmsKeyName = \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n SecretEnv = \n {\n { \"PASSWORD\", \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\" },\n },\n },\n },\n AvailableSecrets = new Gcp.CloudBuild.Inputs.TriggerBuildAvailableSecretsArgs\n {\n SecretManagers = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildAvailableSecretsSecretManagerArgs\n {\n Env = \"MY_SECRET\",\n VersionName = \"projects/myProject/secrets/mySecret/versions/latest\",\n },\n },\n },\n Artifacts = new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsArgs\n {\n Images = new[]\n {\n \"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\",\n },\n Objects = new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsObjectsArgs\n {\n Location = \"gs://bucket/path/to/somewhere/\",\n Paths = new[]\n {\n \"path\",\n },\n },\n },\n Options = new Gcp.CloudBuild.Inputs.TriggerBuildOptionsArgs\n {\n SourceProvenanceHashes = new[]\n {\n \"MD5\",\n },\n RequestedVerifyOption = \"VERIFIED\",\n MachineType = \"N1_HIGHCPU_8\",\n DiskSizeGb = 100,\n SubstitutionOption = \"ALLOW_LOOSE\",\n DynamicSubstitutions = true,\n LogStreamingOption = \"STREAM_OFF\",\n WorkerPool = \"pool\",\n Logging = \"LEGACY\",\n Envs = new[]\n {\n \"ekey = evalue\",\n },\n SecretEnvs = new[]\n {\n \"secretenv = svalue\",\n },\n Volumes = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildOptionsVolumeArgs\n {\n Name = \"v1\",\n Path = \"v1\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuild.NewTrigger(ctx, \"allow-failure-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"my-trigger\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tTriggerTemplate: \u0026cloudbuild.TriggerTriggerTemplateArgs{\n\t\t\t\tBranchName: pulumi.String(\"main\"),\n\t\t\t\tRepoName: pulumi.String(\"my-repo\"),\n\t\t\t},\n\t\t\tBuild: \u0026cloudbuild.TriggerBuildArgs{\n\t\t\t\tSteps: cloudbuild.TriggerBuildStepArray{\n\t\t\t\t\t\u0026cloudbuild.TriggerBuildStepArgs{\n\t\t\t\t\t\tName: pulumi.String(\"ubuntu\"),\n\t\t\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"-c\"),\n\t\t\t\t\t\t\tpulumi.String(\"exit 1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAllowFailure: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudbuild.TriggerBuildSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudbuild.TriggerBuildSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: pulumi.String(\"mybucket\"),\n\t\t\t\t\t\tObject: pulumi.String(\"source_code.tar.gz\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"build\"),\n\t\t\t\t\tpulumi.String(\"newFeature\"),\n\t\t\t\t},\n\t\t\t\tSubstitutions: pulumi.StringMap{\n\t\t\t\t\t\"_FOO\": pulumi.String(\"bar\"),\n\t\t\t\t\t\"_BAZ\": pulumi.String(\"qux\"),\n\t\t\t\t},\n\t\t\t\tQueueTtl: pulumi.String(\"20s\"),\n\t\t\t\tLogsBucket: pulumi.String(\"gs://mybucket/logs\"),\n\t\t\t\tSecrets: cloudbuild.TriggerBuildSecretArray{\n\t\t\t\t\t\u0026cloudbuild.TriggerBuildSecretArgs{\n\t\t\t\t\t\tKmsKeyName: pulumi.String(\"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\"),\n\t\t\t\t\t\tSecretEnv: pulumi.StringMap{\n\t\t\t\t\t\t\t\"PASSWORD\": pulumi.String(\"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAvailableSecrets: \u0026cloudbuild.TriggerBuildAvailableSecretsArgs{\n\t\t\t\t\tSecretManagers: cloudbuild.TriggerBuildAvailableSecretsSecretManagerArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildAvailableSecretsSecretManagerArgs{\n\t\t\t\t\t\t\tEnv: pulumi.String(\"MY_SECRET\"),\n\t\t\t\t\t\t\tVersionName: pulumi.String(\"projects/myProject/secrets/mySecret/versions/latest\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tArtifacts: \u0026cloudbuild.TriggerBuildArtifactsArgs{\n\t\t\t\t\tImages: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"),\n\t\t\t\t\t},\n\t\t\t\t\tObjects: \u0026cloudbuild.TriggerBuildArtifactsObjectsArgs{\n\t\t\t\t\t\tLocation: pulumi.String(\"gs://bucket/path/to/somewhere/\"),\n\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"path\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tOptions: \u0026cloudbuild.TriggerBuildOptionsArgs{\n\t\t\t\t\tSourceProvenanceHashes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"MD5\"),\n\t\t\t\t\t},\n\t\t\t\t\tRequestedVerifyOption: pulumi.String(\"VERIFIED\"),\n\t\t\t\t\tMachineType: pulumi.String(\"N1_HIGHCPU_8\"),\n\t\t\t\t\tDiskSizeGb: pulumi.Int(100),\n\t\t\t\t\tSubstitutionOption: pulumi.String(\"ALLOW_LOOSE\"),\n\t\t\t\t\tDynamicSubstitutions: pulumi.Bool(true),\n\t\t\t\t\tLogStreamingOption: pulumi.String(\"STREAM_OFF\"),\n\t\t\t\t\tWorkerPool: pulumi.String(\"pool\"),\n\t\t\t\t\tLogging: pulumi.String(\"LEGACY\"),\n\t\t\t\t\tEnvs: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ekey = evalue\"),\n\t\t\t\t\t},\n\t\t\t\t\tSecretEnvs: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"secretenv = svalue\"),\n\t\t\t\t\t},\n\t\t\t\t\tVolumes: cloudbuild.TriggerBuildOptionsVolumeArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildOptionsVolumeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"v1\"),\n\t\t\t\t\t\t\tPath: pulumi.String(\"v1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerTriggerTemplateArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildAvailableSecretsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsObjectsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildOptionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var allow_failure_trigger = new Trigger(\"allow-failure-trigger\", TriggerArgs.builder()\n .name(\"my-trigger\")\n .location(\"global\")\n .triggerTemplate(TriggerTriggerTemplateArgs.builder()\n .branchName(\"main\")\n .repoName(\"my-repo\")\n .build())\n .build(TriggerBuildArgs.builder()\n .steps(TriggerBuildStepArgs.builder()\n .name(\"ubuntu\")\n .args( \n \"-c\",\n \"exit 1\")\n .allowFailure(true)\n .build())\n .source(TriggerBuildSourceArgs.builder()\n .storageSource(TriggerBuildSourceStorageSourceArgs.builder()\n .bucket(\"mybucket\")\n .object(\"source_code.tar.gz\")\n .build())\n .build())\n .tags( \n \"build\",\n \"newFeature\")\n .substitutions(Map.ofEntries(\n Map.entry(\"_FOO\", \"bar\"),\n Map.entry(\"_BAZ\", \"qux\")\n ))\n .queueTtl(\"20s\")\n .logsBucket(\"gs://mybucket/logs\")\n .secrets(TriggerBuildSecretArgs.builder()\n .kmsKeyName(\"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\")\n .secretEnv(Map.of(\"PASSWORD\", \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\"))\n .build())\n .availableSecrets(TriggerBuildAvailableSecretsArgs.builder()\n .secretManagers(TriggerBuildAvailableSecretsSecretManagerArgs.builder()\n .env(\"MY_SECRET\")\n .versionName(\"projects/myProject/secrets/mySecret/versions/latest\")\n .build())\n .build())\n .artifacts(TriggerBuildArtifactsArgs.builder()\n .images(\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\")\n .objects(TriggerBuildArtifactsObjectsArgs.builder()\n .location(\"gs://bucket/path/to/somewhere/\")\n .paths(\"path\")\n .build())\n .build())\n .options(TriggerBuildOptionsArgs.builder()\n .sourceProvenanceHashes(\"MD5\")\n .requestedVerifyOption(\"VERIFIED\")\n .machineType(\"N1_HIGHCPU_8\")\n .diskSizeGb(100)\n .substitutionOption(\"ALLOW_LOOSE\")\n .dynamicSubstitutions(true)\n .logStreamingOption(\"STREAM_OFF\")\n .workerPool(\"pool\")\n .logging(\"LEGACY\")\n .envs(\"ekey = evalue\")\n .secretEnvs(\"secretenv = svalue\")\n .volumes(TriggerBuildOptionsVolumeArgs.builder()\n .name(\"v1\")\n .path(\"v1\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n allow-failure-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: my-trigger\n location: global\n triggerTemplate:\n branchName: main\n repoName: my-repo\n build:\n steps:\n - name: ubuntu\n args:\n - -c\n - exit 1\n allowFailure: true\n source:\n storageSource:\n bucket: mybucket\n object: source_code.tar.gz\n tags:\n - build\n - newFeature\n substitutions:\n _FOO: bar\n _BAZ: qux\n queueTtl: 20s\n logsBucket: gs://mybucket/logs\n secrets:\n - kmsKeyName: projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\n secretEnv:\n PASSWORD: ZW5jcnlwdGVkLXBhc3N3b3JkCg==\n availableSecrets:\n secretManagers:\n - env: MY_SECRET\n versionName: projects/myProject/secrets/mySecret/versions/latest\n artifacts:\n images:\n - gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\n objects:\n location: gs://bucket/path/to/somewhere/\n paths:\n - path\n options:\n sourceProvenanceHashes:\n - MD5\n requestedVerifyOption: VERIFIED\n machineType: N1_HIGHCPU_8\n diskSizeGb: 100\n substitutionOption: ALLOW_LOOSE\n dynamicSubstitutions: true\n logStreamingOption: STREAM_OFF\n workerPool: pool\n logging: LEGACY\n envs:\n - ekey = evalue\n secretEnvs:\n - secretenv = svalue\n volumes:\n - name: v1\n path: v1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Allow Exit Codes\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst allow_exit_codes_trigger = new gcp.cloudbuild.Trigger(\"allow-exit-codes-trigger\", {\n name: \"my-trigger\",\n location: \"global\",\n triggerTemplate: {\n branchName: \"main\",\n repoName: \"my-repo\",\n },\n build: {\n steps: [{\n name: \"ubuntu\",\n args: [\n \"-c\",\n \"exit 1\",\n ],\n allowExitCodes: [\n 1,\n 3,\n ],\n }],\n source: {\n storageSource: {\n bucket: \"mybucket\",\n object: \"source_code.tar.gz\",\n },\n },\n tags: [\n \"build\",\n \"newFeature\",\n ],\n substitutions: {\n _FOO: \"bar\",\n _BAZ: \"qux\",\n },\n queueTtl: \"20s\",\n logsBucket: \"gs://mybucket/logs\",\n secrets: [{\n kmsKeyName: \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n secretEnv: {\n PASSWORD: \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\",\n },\n }],\n availableSecrets: {\n secretManagers: [{\n env: \"MY_SECRET\",\n versionName: \"projects/myProject/secrets/mySecret/versions/latest\",\n }],\n },\n artifacts: {\n images: [\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"],\n objects: {\n location: \"gs://bucket/path/to/somewhere/\",\n paths: [\"path\"],\n },\n },\n options: {\n sourceProvenanceHashes: [\"MD5\"],\n requestedVerifyOption: \"VERIFIED\",\n machineType: \"N1_HIGHCPU_8\",\n diskSizeGb: 100,\n substitutionOption: \"ALLOW_LOOSE\",\n dynamicSubstitutions: true,\n logStreamingOption: \"STREAM_OFF\",\n workerPool: \"pool\",\n logging: \"LEGACY\",\n envs: [\"ekey = evalue\"],\n secretEnvs: [\"secretenv = svalue\"],\n volumes: [{\n name: \"v1\",\n path: \"v1\",\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nallow_exit_codes_trigger = gcp.cloudbuild.Trigger(\"allow-exit-codes-trigger\",\n name=\"my-trigger\",\n location=\"global\",\n trigger_template={\n \"branch_name\": \"main\",\n \"repo_name\": \"my-repo\",\n },\n build={\n \"steps\": [{\n \"name\": \"ubuntu\",\n \"args\": [\n \"-c\",\n \"exit 1\",\n ],\n \"allow_exit_codes\": [\n 1,\n 3,\n ],\n }],\n \"source\": {\n \"storage_source\": {\n \"bucket\": \"mybucket\",\n \"object\": \"source_code.tar.gz\",\n },\n },\n \"tags\": [\n \"build\",\n \"newFeature\",\n ],\n \"substitutions\": {\n \"_FOO\": \"bar\",\n \"_BAZ\": \"qux\",\n },\n \"queue_ttl\": \"20s\",\n \"logs_bucket\": \"gs://mybucket/logs\",\n \"secrets\": [{\n \"kms_key_name\": \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n \"secret_env\": {\n \"PASSWORD\": \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\",\n },\n }],\n \"available_secrets\": {\n \"secret_managers\": [{\n \"env\": \"MY_SECRET\",\n \"version_name\": \"projects/myProject/secrets/mySecret/versions/latest\",\n }],\n },\n \"artifacts\": {\n \"images\": [\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"],\n \"objects\": {\n \"location\": \"gs://bucket/path/to/somewhere/\",\n \"paths\": [\"path\"],\n },\n },\n \"options\": {\n \"source_provenance_hashes\": [\"MD5\"],\n \"requested_verify_option\": \"VERIFIED\",\n \"machine_type\": \"N1_HIGHCPU_8\",\n \"disk_size_gb\": 100,\n \"substitution_option\": \"ALLOW_LOOSE\",\n \"dynamic_substitutions\": True,\n \"log_streaming_option\": \"STREAM_OFF\",\n \"worker_pool\": \"pool\",\n \"logging\": \"LEGACY\",\n \"envs\": [\"ekey = evalue\"],\n \"secret_envs\": [\"secretenv = svalue\"],\n \"volumes\": [{\n \"name\": \"v1\",\n \"path\": \"v1\",\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var allow_exit_codes_trigger = new Gcp.CloudBuild.Trigger(\"allow-exit-codes-trigger\", new()\n {\n Name = \"my-trigger\",\n Location = \"global\",\n TriggerTemplate = new Gcp.CloudBuild.Inputs.TriggerTriggerTemplateArgs\n {\n BranchName = \"main\",\n RepoName = \"my-repo\",\n },\n Build = new Gcp.CloudBuild.Inputs.TriggerBuildArgs\n {\n Steps = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildStepArgs\n {\n Name = \"ubuntu\",\n Args = new[]\n {\n \"-c\",\n \"exit 1\",\n },\n AllowExitCodes = new[]\n {\n 1,\n 3,\n },\n },\n },\n Source = new Gcp.CloudBuild.Inputs.TriggerBuildSourceArgs\n {\n StorageSource = new Gcp.CloudBuild.Inputs.TriggerBuildSourceStorageSourceArgs\n {\n Bucket = \"mybucket\",\n Object = \"source_code.tar.gz\",\n },\n },\n Tags = new[]\n {\n \"build\",\n \"newFeature\",\n },\n Substitutions = \n {\n { \"_FOO\", \"bar\" },\n { \"_BAZ\", \"qux\" },\n },\n QueueTtl = \"20s\",\n LogsBucket = \"gs://mybucket/logs\",\n Secrets = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildSecretArgs\n {\n KmsKeyName = \"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\",\n SecretEnv = \n {\n { \"PASSWORD\", \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\" },\n },\n },\n },\n AvailableSecrets = new Gcp.CloudBuild.Inputs.TriggerBuildAvailableSecretsArgs\n {\n SecretManagers = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildAvailableSecretsSecretManagerArgs\n {\n Env = \"MY_SECRET\",\n VersionName = \"projects/myProject/secrets/mySecret/versions/latest\",\n },\n },\n },\n Artifacts = new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsArgs\n {\n Images = new[]\n {\n \"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\",\n },\n Objects = new Gcp.CloudBuild.Inputs.TriggerBuildArtifactsObjectsArgs\n {\n Location = \"gs://bucket/path/to/somewhere/\",\n Paths = new[]\n {\n \"path\",\n },\n },\n },\n Options = new Gcp.CloudBuild.Inputs.TriggerBuildOptionsArgs\n {\n SourceProvenanceHashes = new[]\n {\n \"MD5\",\n },\n RequestedVerifyOption = \"VERIFIED\",\n MachineType = \"N1_HIGHCPU_8\",\n DiskSizeGb = 100,\n SubstitutionOption = \"ALLOW_LOOSE\",\n DynamicSubstitutions = true,\n LogStreamingOption = \"STREAM_OFF\",\n WorkerPool = \"pool\",\n Logging = \"LEGACY\",\n Envs = new[]\n {\n \"ekey = evalue\",\n },\n SecretEnvs = new[]\n {\n \"secretenv = svalue\",\n },\n Volumes = new[]\n {\n new Gcp.CloudBuild.Inputs.TriggerBuildOptionsVolumeArgs\n {\n Name = \"v1\",\n Path = \"v1\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuild.NewTrigger(ctx, \"allow-exit-codes-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"my-trigger\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tTriggerTemplate: \u0026cloudbuild.TriggerTriggerTemplateArgs{\n\t\t\t\tBranchName: pulumi.String(\"main\"),\n\t\t\t\tRepoName: pulumi.String(\"my-repo\"),\n\t\t\t},\n\t\t\tBuild: \u0026cloudbuild.TriggerBuildArgs{\n\t\t\t\tSteps: cloudbuild.TriggerBuildStepArray{\n\t\t\t\t\t\u0026cloudbuild.TriggerBuildStepArgs{\n\t\t\t\t\t\tName: pulumi.String(\"ubuntu\"),\n\t\t\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"-c\"),\n\t\t\t\t\t\t\tpulumi.String(\"exit 1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAllowExitCodes: pulumi.IntArray{\n\t\t\t\t\t\t\tpulumi.Int(1),\n\t\t\t\t\t\t\tpulumi.Int(3),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudbuild.TriggerBuildSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudbuild.TriggerBuildSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: pulumi.String(\"mybucket\"),\n\t\t\t\t\t\tObject: pulumi.String(\"source_code.tar.gz\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"build\"),\n\t\t\t\t\tpulumi.String(\"newFeature\"),\n\t\t\t\t},\n\t\t\t\tSubstitutions: pulumi.StringMap{\n\t\t\t\t\t\"_FOO\": pulumi.String(\"bar\"),\n\t\t\t\t\t\"_BAZ\": pulumi.String(\"qux\"),\n\t\t\t\t},\n\t\t\t\tQueueTtl: pulumi.String(\"20s\"),\n\t\t\t\tLogsBucket: pulumi.String(\"gs://mybucket/logs\"),\n\t\t\t\tSecrets: cloudbuild.TriggerBuildSecretArray{\n\t\t\t\t\t\u0026cloudbuild.TriggerBuildSecretArgs{\n\t\t\t\t\t\tKmsKeyName: pulumi.String(\"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\"),\n\t\t\t\t\t\tSecretEnv: pulumi.StringMap{\n\t\t\t\t\t\t\t\"PASSWORD\": pulumi.String(\"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAvailableSecrets: \u0026cloudbuild.TriggerBuildAvailableSecretsArgs{\n\t\t\t\t\tSecretManagers: cloudbuild.TriggerBuildAvailableSecretsSecretManagerArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildAvailableSecretsSecretManagerArgs{\n\t\t\t\t\t\t\tEnv: pulumi.String(\"MY_SECRET\"),\n\t\t\t\t\t\t\tVersionName: pulumi.String(\"projects/myProject/secrets/mySecret/versions/latest\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tArtifacts: \u0026cloudbuild.TriggerBuildArtifactsArgs{\n\t\t\t\t\tImages: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\"),\n\t\t\t\t\t},\n\t\t\t\t\tObjects: \u0026cloudbuild.TriggerBuildArtifactsObjectsArgs{\n\t\t\t\t\t\tLocation: pulumi.String(\"gs://bucket/path/to/somewhere/\"),\n\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"path\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tOptions: \u0026cloudbuild.TriggerBuildOptionsArgs{\n\t\t\t\t\tSourceProvenanceHashes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"MD5\"),\n\t\t\t\t\t},\n\t\t\t\t\tRequestedVerifyOption: pulumi.String(\"VERIFIED\"),\n\t\t\t\t\tMachineType: pulumi.String(\"N1_HIGHCPU_8\"),\n\t\t\t\t\tDiskSizeGb: pulumi.Int(100),\n\t\t\t\t\tSubstitutionOption: pulumi.String(\"ALLOW_LOOSE\"),\n\t\t\t\t\tDynamicSubstitutions: pulumi.Bool(true),\n\t\t\t\t\tLogStreamingOption: pulumi.String(\"STREAM_OFF\"),\n\t\t\t\t\tWorkerPool: pulumi.String(\"pool\"),\n\t\t\t\t\tLogging: pulumi.String(\"LEGACY\"),\n\t\t\t\t\tEnvs: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ekey = evalue\"),\n\t\t\t\t\t},\n\t\t\t\t\tSecretEnvs: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"secretenv = svalue\"),\n\t\t\t\t\t},\n\t\t\t\t\tVolumes: cloudbuild.TriggerBuildOptionsVolumeArray{\n\t\t\t\t\t\t\u0026cloudbuild.TriggerBuildOptionsVolumeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"v1\"),\n\t\t\t\t\t\t\tPath: pulumi.String(\"v1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerTriggerTemplateArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildAvailableSecretsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildArtifactsObjectsArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerBuildOptionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var allow_exit_codes_trigger = new Trigger(\"allow-exit-codes-trigger\", TriggerArgs.builder()\n .name(\"my-trigger\")\n .location(\"global\")\n .triggerTemplate(TriggerTriggerTemplateArgs.builder()\n .branchName(\"main\")\n .repoName(\"my-repo\")\n .build())\n .build(TriggerBuildArgs.builder()\n .steps(TriggerBuildStepArgs.builder()\n .name(\"ubuntu\")\n .args( \n \"-c\",\n \"exit 1\")\n .allowExitCodes( \n 1,\n 3)\n .build())\n .source(TriggerBuildSourceArgs.builder()\n .storageSource(TriggerBuildSourceStorageSourceArgs.builder()\n .bucket(\"mybucket\")\n .object(\"source_code.tar.gz\")\n .build())\n .build())\n .tags( \n \"build\",\n \"newFeature\")\n .substitutions(Map.ofEntries(\n Map.entry(\"_FOO\", \"bar\"),\n Map.entry(\"_BAZ\", \"qux\")\n ))\n .queueTtl(\"20s\")\n .logsBucket(\"gs://mybucket/logs\")\n .secrets(TriggerBuildSecretArgs.builder()\n .kmsKeyName(\"projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\")\n .secretEnv(Map.of(\"PASSWORD\", \"ZW5jcnlwdGVkLXBhc3N3b3JkCg==\"))\n .build())\n .availableSecrets(TriggerBuildAvailableSecretsArgs.builder()\n .secretManagers(TriggerBuildAvailableSecretsSecretManagerArgs.builder()\n .env(\"MY_SECRET\")\n .versionName(\"projects/myProject/secrets/mySecret/versions/latest\")\n .build())\n .build())\n .artifacts(TriggerBuildArtifactsArgs.builder()\n .images(\"gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\")\n .objects(TriggerBuildArtifactsObjectsArgs.builder()\n .location(\"gs://bucket/path/to/somewhere/\")\n .paths(\"path\")\n .build())\n .build())\n .options(TriggerBuildOptionsArgs.builder()\n .sourceProvenanceHashes(\"MD5\")\n .requestedVerifyOption(\"VERIFIED\")\n .machineType(\"N1_HIGHCPU_8\")\n .diskSizeGb(100)\n .substitutionOption(\"ALLOW_LOOSE\")\n .dynamicSubstitutions(true)\n .logStreamingOption(\"STREAM_OFF\")\n .workerPool(\"pool\")\n .logging(\"LEGACY\")\n .envs(\"ekey = evalue\")\n .secretEnvs(\"secretenv = svalue\")\n .volumes(TriggerBuildOptionsVolumeArgs.builder()\n .name(\"v1\")\n .path(\"v1\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n allow-exit-codes-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: my-trigger\n location: global\n triggerTemplate:\n branchName: main\n repoName: my-repo\n build:\n steps:\n - name: ubuntu\n args:\n - -c\n - exit 1\n allowExitCodes:\n - 1\n - 3\n source:\n storageSource:\n bucket: mybucket\n object: source_code.tar.gz\n tags:\n - build\n - newFeature\n substitutions:\n _FOO: bar\n _BAZ: qux\n queueTtl: 20s\n logsBucket: gs://mybucket/logs\n secrets:\n - kmsKeyName: projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name\n secretEnv:\n PASSWORD: ZW5jcnlwdGVkLXBhc3N3b3JkCg==\n availableSecrets:\n secretManagers:\n - env: MY_SECRET\n versionName: projects/myProject/secrets/mySecret/versions/latest\n artifacts:\n images:\n - gcr.io/$PROJECT_ID/$REPO_NAME:$COMMIT_SHA\n objects:\n location: gs://bucket/path/to/somewhere/\n paths:\n - path\n options:\n sourceProvenanceHashes:\n - MD5\n requestedVerifyOption: VERIFIED\n machineType: N1_HIGHCPU_8\n diskSizeGb: 100\n substitutionOption: ALLOW_LOOSE\n dynamicSubstitutions: true\n logStreamingOption: STREAM_OFF\n workerPool: pool\n logging: LEGACY\n envs:\n - ekey = evalue\n secretEnvs:\n - secretenv = svalue\n volumes:\n - name: v1\n path: v1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuild Trigger Pubsub With Repo\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_connection = new gcp.cloudbuildv2.Connection(\"my-connection\", {\n location: \"us-central1\",\n name: \"my-connection\",\n githubConfig: {\n appInstallationId: 123123,\n authorizerCredential: {\n oauthTokenSecretVersion: \"projects/my-project/secrets/github-pat-secret/versions/latest\",\n },\n },\n});\nconst my_repository = new gcp.cloudbuildv2.Repository(\"my-repository\", {\n name: \"my-repo\",\n parentConnection: my_connection.id,\n remoteUri: \"https://github.com/myuser/my-repo.git\",\n});\nconst mytopic = new gcp.pubsub.Topic(\"mytopic\", {name: \"my-topic\"});\nconst pubsub_with_repo_trigger = new gcp.cloudbuild.Trigger(\"pubsub-with-repo-trigger\", {\n name: \"pubsub-with-repo-trigger\",\n location: \"us-central1\",\n pubsubConfig: {\n topic: mytopic.id,\n },\n sourceToBuild: {\n repository: my_repository.id,\n ref: \"refs/heads/main\",\n repoType: \"GITHUB\",\n },\n gitFileSource: {\n path: \"cloudbuild.yaml\",\n repository: my_repository.id,\n revision: \"refs/heads/main\",\n repoType: \"GITHUB\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_connection = gcp.cloudbuildv2.Connection(\"my-connection\",\n location=\"us-central1\",\n name=\"my-connection\",\n github_config={\n \"app_installation_id\": 123123,\n \"authorizer_credential\": {\n \"oauth_token_secret_version\": \"projects/my-project/secrets/github-pat-secret/versions/latest\",\n },\n })\nmy_repository = gcp.cloudbuildv2.Repository(\"my-repository\",\n name=\"my-repo\",\n parent_connection=my_connection.id,\n remote_uri=\"https://github.com/myuser/my-repo.git\")\nmytopic = gcp.pubsub.Topic(\"mytopic\", name=\"my-topic\")\npubsub_with_repo_trigger = gcp.cloudbuild.Trigger(\"pubsub-with-repo-trigger\",\n name=\"pubsub-with-repo-trigger\",\n location=\"us-central1\",\n pubsub_config={\n \"topic\": mytopic.id,\n },\n source_to_build={\n \"repository\": my_repository.id,\n \"ref\": \"refs/heads/main\",\n \"repo_type\": \"GITHUB\",\n },\n git_file_source={\n \"path\": \"cloudbuild.yaml\",\n \"repository\": my_repository.id,\n \"revision\": \"refs/heads/main\",\n \"repo_type\": \"GITHUB\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_connection = new Gcp.CloudBuildV2.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n Name = \"my-connection\",\n GithubConfig = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigArgs\n {\n AppInstallationId = 123123,\n AuthorizerCredential = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigAuthorizerCredentialArgs\n {\n OauthTokenSecretVersion = \"projects/my-project/secrets/github-pat-secret/versions/latest\",\n },\n },\n });\n\n var my_repository = new Gcp.CloudBuildV2.Repository(\"my-repository\", new()\n {\n Name = \"my-repo\",\n ParentConnection = my_connection.Id,\n RemoteUri = \"https://github.com/myuser/my-repo.git\",\n });\n\n var mytopic = new Gcp.PubSub.Topic(\"mytopic\", new()\n {\n Name = \"my-topic\",\n });\n\n var pubsub_with_repo_trigger = new Gcp.CloudBuild.Trigger(\"pubsub-with-repo-trigger\", new()\n {\n Name = \"pubsub-with-repo-trigger\",\n Location = \"us-central1\",\n PubsubConfig = new Gcp.CloudBuild.Inputs.TriggerPubsubConfigArgs\n {\n Topic = mytopic.Id,\n },\n SourceToBuild = new Gcp.CloudBuild.Inputs.TriggerSourceToBuildArgs\n {\n Repository = my_repository.Id,\n Ref = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n },\n GitFileSource = new Gcp.CloudBuild.Inputs.TriggerGitFileSourceArgs\n {\n Path = \"cloudbuild.yaml\",\n Repository = my_repository.Id,\n Revision = \"refs/heads/main\",\n RepoType = \"GITHUB\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuildv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuildv2.NewConnection(ctx, \"my-connection\", \u0026cloudbuildv2.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-connection\"),\n\t\t\tGithubConfig: \u0026cloudbuildv2.ConnectionGithubConfigArgs{\n\t\t\t\tAppInstallationId: pulumi.Int(123123),\n\t\t\t\tAuthorizerCredential: \u0026cloudbuildv2.ConnectionGithubConfigAuthorizerCredentialArgs{\n\t\t\t\t\tOauthTokenSecretVersion: pulumi.String(\"projects/my-project/secrets/github-pat-secret/versions/latest\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuildv2.NewRepository(ctx, \"my-repository\", \u0026cloudbuildv2.RepositoryArgs{\n\t\t\tName: pulumi.String(\"my-repo\"),\n\t\t\tParentConnection: my_connection.ID(),\n\t\t\tRemoteUri: pulumi.String(\"https://github.com/myuser/my-repo.git\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmytopic, err := pubsub.NewTopic(ctx, \"mytopic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"my-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuild.NewTrigger(ctx, \"pubsub-with-repo-trigger\", \u0026cloudbuild.TriggerArgs{\n\t\t\tName: pulumi.String(\"pubsub-with-repo-trigger\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPubsubConfig: \u0026cloudbuild.TriggerPubsubConfigArgs{\n\t\t\t\tTopic: mytopic.ID(),\n\t\t\t},\n\t\t\tSourceToBuild: \u0026cloudbuild.TriggerSourceToBuildArgs{\n\t\t\t\tRepository: my_repository.ID(),\n\t\t\t\tRef: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t},\n\t\t\tGitFileSource: \u0026cloudbuild.TriggerGitFileSourceArgs{\n\t\t\t\tPath: pulumi.String(\"cloudbuild.yaml\"),\n\t\t\t\tRepository: my_repository.ID(),\n\t\t\t\tRevision: pulumi.String(\"refs/heads/main\"),\n\t\t\t\tRepoType: pulumi.String(\"GITHUB\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuildv2.Connection;\nimport com.pulumi.gcp.cloudbuildv2.ConnectionArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubConfigArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubConfigAuthorizerCredentialArgs;\nimport com.pulumi.gcp.cloudbuildv2.Repository;\nimport com.pulumi.gcp.cloudbuildv2.RepositoryArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.cloudbuild.Trigger;\nimport com.pulumi.gcp.cloudbuild.TriggerArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerPubsubConfigArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerSourceToBuildArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.TriggerGitFileSourceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .name(\"my-connection\")\n .githubConfig(ConnectionGithubConfigArgs.builder()\n .appInstallationId(123123)\n .authorizerCredential(ConnectionGithubConfigAuthorizerCredentialArgs.builder()\n .oauthTokenSecretVersion(\"projects/my-project/secrets/github-pat-secret/versions/latest\")\n .build())\n .build())\n .build());\n\n var my_repository = new Repository(\"my-repository\", RepositoryArgs.builder()\n .name(\"my-repo\")\n .parentConnection(my_connection.id())\n .remoteUri(\"https://github.com/myuser/my-repo.git\")\n .build());\n\n var mytopic = new Topic(\"mytopic\", TopicArgs.builder()\n .name(\"my-topic\")\n .build());\n\n var pubsub_with_repo_trigger = new Trigger(\"pubsub-with-repo-trigger\", TriggerArgs.builder()\n .name(\"pubsub-with-repo-trigger\")\n .location(\"us-central1\")\n .pubsubConfig(TriggerPubsubConfigArgs.builder()\n .topic(mytopic.id())\n .build())\n .sourceToBuild(TriggerSourceToBuildArgs.builder()\n .repository(my_repository.id())\n .ref(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .build())\n .gitFileSource(TriggerGitFileSourceArgs.builder()\n .path(\"cloudbuild.yaml\")\n .repository(my_repository.id())\n .revision(\"refs/heads/main\")\n .repoType(\"GITHUB\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-connection:\n type: gcp:cloudbuildv2:Connection\n properties:\n location: us-central1\n name: my-connection\n githubConfig:\n appInstallationId: 123123\n authorizerCredential:\n oauthTokenSecretVersion: projects/my-project/secrets/github-pat-secret/versions/latest\n my-repository:\n type: gcp:cloudbuildv2:Repository\n properties:\n name: my-repo\n parentConnection: ${[\"my-connection\"].id}\n remoteUri: https://github.com/myuser/my-repo.git\n mytopic:\n type: gcp:pubsub:Topic\n properties:\n name: my-topic\n pubsub-with-repo-trigger:\n type: gcp:cloudbuild:Trigger\n properties:\n name: pubsub-with-repo-trigger\n location: us-central1\n pubsubConfig:\n topic: ${mytopic.id}\n sourceToBuild:\n repository: ${[\"my-repository\"].id}\n ref: refs/heads/main\n repoType: GITHUB\n gitFileSource:\n path: cloudbuild.yaml\n repository: ${[\"my-repository\"].id}\n revision: refs/heads/main\n repoType: GITHUB\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTrigger can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/triggers/{{trigger_id}}`\n\n* `projects/{{project}}/triggers/{{trigger_id}}`\n\n* `{{project}}/{{trigger_id}}`\n\n* `{{trigger_id}}`\n\nWhen using the `pulumi import` command, Trigger can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudbuild/trigger:Trigger default projects/{{project}}/locations/{{location}}/triggers/{{trigger_id}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuild/trigger:Trigger default projects/{{project}}/triggers/{{trigger_id}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuild/trigger:Trigger default {{project}}/{{trigger_id}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuild/trigger:Trigger default {{trigger_id}}\n```\n\n", "properties": { "approvalConfig": { "$ref": "#/types/gcp:cloudbuild/TriggerApprovalConfig:TriggerApprovalConfig", @@ -138104,7 +138104,7 @@ } }, "gcp:cloudbuildv2/connection:Connection": { - "description": "A connection to a SCM like GitHub, GitHub Enterprise, Bitbucket Data Center/Cloud or GitLab.\n\n\nTo get more information about Connection, see:\n\n* [API documentation](https://cloud.google.com/build/docs/api/reference/rest)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/build/docs)\n\n## Example Usage\n\n### Cloudbuildv2 Connection\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_connection = new gcp.cloudbuildv2.Connection(\"my-connection\", {\n location: \"us-central1\",\n name: \"tf-test-connection\",\n githubConfig: {\n appInstallationId: 0,\n authorizerCredential: {\n oauthTokenSecretVersion: \"projects/gcb-terraform-creds/secrets/github-pat/versions/1\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_connection = gcp.cloudbuildv2.Connection(\"my-connection\",\n location=\"us-central1\",\n name=\"tf-test-connection\",\n github_config={\n \"app_installation_id\": 0,\n \"authorizer_credential\": {\n \"oauth_token_secret_version\": \"projects/gcb-terraform-creds/secrets/github-pat/versions/1\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_connection = new Gcp.CloudBuildV2.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n Name = \"tf-test-connection\",\n GithubConfig = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigArgs\n {\n AppInstallationId = 0,\n AuthorizerCredential = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigAuthorizerCredentialArgs\n {\n OauthTokenSecretVersion = \"projects/gcb-terraform-creds/secrets/github-pat/versions/1\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuildv2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuildv2.NewConnection(ctx, \"my-connection\", \u0026cloudbuildv2.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"tf-test-connection\"),\n\t\t\tGithubConfig: \u0026cloudbuildv2.ConnectionGithubConfigArgs{\n\t\t\t\tAppInstallationId: pulumi.Int(0),\n\t\t\t\tAuthorizerCredential: \u0026cloudbuildv2.ConnectionGithubConfigAuthorizerCredentialArgs{\n\t\t\t\t\tOauthTokenSecretVersion: pulumi.String(\"projects/gcb-terraform-creds/secrets/github-pat/versions/1\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuildv2.Connection;\nimport com.pulumi.gcp.cloudbuildv2.ConnectionArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubConfigArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubConfigAuthorizerCredentialArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .name(\"tf-test-connection\")\n .githubConfig(ConnectionGithubConfigArgs.builder()\n .appInstallationId(0)\n .authorizerCredential(ConnectionGithubConfigAuthorizerCredentialArgs.builder()\n .oauthTokenSecretVersion(\"projects/gcb-terraform-creds/secrets/github-pat/versions/1\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-connection:\n type: gcp:cloudbuildv2:Connection\n properties:\n location: us-central1\n name: tf-test-connection\n githubConfig:\n appInstallationId: 0\n authorizerCredential:\n oauthTokenSecretVersion: projects/gcb-terraform-creds/secrets/github-pat/versions/1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuildv2 Connection Ghe\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst private_key_secret = new gcp.secretmanager.Secret(\"private-key-secret\", {\n secretId: \"ghe-pk-secret\",\n replication: {\n auto: {},\n },\n});\nconst private_key_secret_version = new gcp.secretmanager.SecretVersion(\"private-key-secret-version\", {\n secret: private_key_secret.id,\n secretData: std.file({\n input: \"private-key.pem\",\n }).then(invoke =\u003e invoke.result),\n});\nconst webhook_secret_secret = new gcp.secretmanager.Secret(\"webhook-secret-secret\", {\n secretId: \"github-token-secret\",\n replication: {\n auto: {},\n },\n});\nconst webhook_secret_secret_version = new gcp.secretmanager.SecretVersion(\"webhook-secret-secret-version\", {\n secret: webhook_secret_secret.id,\n secretData: \"\u003cwebhook-secret-data\u003e\",\n});\nconst p4sa-secretAccessor = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/secretmanager.secretAccessor\",\n members: [\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\"],\n }],\n});\nconst policy_pk = new gcp.secretmanager.SecretIamPolicy(\"policy-pk\", {\n secretId: private_key_secret.secretId,\n policyData: p4sa_secretAccessor.then(p4sa_secretAccessor =\u003e p4sa_secretAccessor.policyData),\n});\nconst policy_whs = new gcp.secretmanager.SecretIamPolicy(\"policy-whs\", {\n secretId: webhook_secret_secret.secretId,\n policyData: p4sa_secretAccessor.then(p4sa_secretAccessor =\u003e p4sa_secretAccessor.policyData),\n});\nconst my_connection = new gcp.cloudbuildv2.Connection(\"my-connection\", {\n location: \"us-central1\",\n name: \"my-terraform-ghe-connection\",\n githubEnterpriseConfig: {\n hostUri: \"https://ghe.com\",\n privateKeySecretVersion: private_key_secret_version.id,\n webhookSecretSecretVersion: webhook_secret_secret_version.id,\n appId: 200,\n appSlug: \"gcb-app\",\n appInstallationId: 300,\n },\n}, {\n dependsOn: [\n policy_pk,\n policy_whs,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nprivate_key_secret = gcp.secretmanager.Secret(\"private-key-secret\",\n secret_id=\"ghe-pk-secret\",\n replication={\n \"auto\": {},\n })\nprivate_key_secret_version = gcp.secretmanager.SecretVersion(\"private-key-secret-version\",\n secret=private_key_secret.id,\n secret_data=std.file(input=\"private-key.pem\").result)\nwebhook_secret_secret = gcp.secretmanager.Secret(\"webhook-secret-secret\",\n secret_id=\"github-token-secret\",\n replication={\n \"auto\": {},\n })\nwebhook_secret_secret_version = gcp.secretmanager.SecretVersion(\"webhook-secret-secret-version\",\n secret=webhook_secret_secret.id,\n secret_data=\"\u003cwebhook-secret-data\u003e\")\np4sa_secret_accessor = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/secretmanager.secretAccessor\",\n \"members\": [\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\"],\n}])\npolicy_pk = gcp.secretmanager.SecretIamPolicy(\"policy-pk\",\n secret_id=private_key_secret.secret_id,\n policy_data=p4sa_secret_accessor.policy_data)\npolicy_whs = gcp.secretmanager.SecretIamPolicy(\"policy-whs\",\n secret_id=webhook_secret_secret.secret_id,\n policy_data=p4sa_secret_accessor.policy_data)\nmy_connection = gcp.cloudbuildv2.Connection(\"my-connection\",\n location=\"us-central1\",\n name=\"my-terraform-ghe-connection\",\n github_enterprise_config={\n \"host_uri\": \"https://ghe.com\",\n \"private_key_secret_version\": private_key_secret_version.id,\n \"webhook_secret_secret_version\": webhook_secret_secret_version.id,\n \"app_id\": 200,\n \"app_slug\": \"gcb-app\",\n \"app_installation_id\": 300,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n policy_pk,\n policy_whs,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var private_key_secret = new Gcp.SecretManager.Secret(\"private-key-secret\", new()\n {\n SecretId = \"ghe-pk-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var private_key_secret_version = new Gcp.SecretManager.SecretVersion(\"private-key-secret-version\", new()\n {\n Secret = private_key_secret.Id,\n SecretData = Std.File.Invoke(new()\n {\n Input = \"private-key.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var webhook_secret_secret = new Gcp.SecretManager.Secret(\"webhook-secret-secret\", new()\n {\n SecretId = \"github-token-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var webhook_secret_secret_version = new Gcp.SecretManager.SecretVersion(\"webhook-secret-secret-version\", new()\n {\n Secret = webhook_secret_secret.Id,\n SecretData = \"\u003cwebhook-secret-data\u003e\",\n });\n\n var p4sa_secretAccessor = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/secretmanager.secretAccessor\",\n Members = new[]\n {\n \"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\",\n },\n },\n },\n });\n\n var policy_pk = new Gcp.SecretManager.SecretIamPolicy(\"policy-pk\", new()\n {\n SecretId = private_key_secret.SecretId,\n PolicyData = p4sa_secretAccessor.Apply(p4sa_secretAccessor =\u003e p4sa_secretAccessor.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData)),\n });\n\n var policy_whs = new Gcp.SecretManager.SecretIamPolicy(\"policy-whs\", new()\n {\n SecretId = webhook_secret_secret.SecretId,\n PolicyData = p4sa_secretAccessor.Apply(p4sa_secretAccessor =\u003e p4sa_secretAccessor.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData)),\n });\n\n var my_connection = new Gcp.CloudBuildV2.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n Name = \"my-terraform-ghe-connection\",\n GithubEnterpriseConfig = new Gcp.CloudBuildV2.Inputs.ConnectionGithubEnterpriseConfigArgs\n {\n HostUri = \"https://ghe.com\",\n PrivateKeySecretVersion = private_key_secret_version.Id,\n WebhookSecretSecretVersion = webhook_secret_secret_version.Id,\n AppId = 200,\n AppSlug = \"gcb-app\",\n AppInstallationId = 300,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n policy_pk,\n policy_whs,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuildv2\"\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: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"private-key.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"private-key-secret-version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: private_key_secret.ID(),\n\t\t\tSecretData: pulumi.String(invokeFile.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"webhook-secret-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"github-token-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"webhook-secret-secret-version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: webhook_secret_secret.ID(),\n\t\t\tSecretData: pulumi.String(\"\u003cwebhook-secret-data\u003e\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tp4sa_secretAccessor, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/secretmanager.secretAccessor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamPolicy(ctx, \"policy-pk\", \u0026secretmanager.SecretIamPolicyArgs{\n\t\t\tSecretId: private_key_secret.SecretId,\n\t\t\tPolicyData: pulumi.String(p4sa_secretAccessor.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamPolicy(ctx, \"policy-whs\", \u0026secretmanager.SecretIamPolicyArgs{\n\t\t\tSecretId: webhook_secret_secret.SecretId,\n\t\t\tPolicyData: pulumi.String(p4sa_secretAccessor.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuildv2.NewConnection(ctx, \"my-connection\", \u0026cloudbuildv2.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-terraform-ghe-connection\"),\n\t\t\tGithubEnterpriseConfig: \u0026cloudbuildv2.ConnectionGithubEnterpriseConfigArgs{\n\t\t\t\tHostUri: pulumi.String(\"https://ghe.com\"),\n\t\t\t\tPrivateKeySecretVersion: private_key_secret_version.ID(),\n\t\t\t\tWebhookSecretSecretVersion: webhook_secret_secret_version.ID(),\n\t\t\t\tAppId: pulumi.Int(200),\n\t\t\t\tAppSlug: pulumi.String(\"gcb-app\"),\n\t\t\t\tAppInstallationId: pulumi.Int(300),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tpolicy_pk,\n\t\t\tpolicy_whs,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicy;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicyArgs;\nimport com.pulumi.gcp.cloudbuildv2.Connection;\nimport com.pulumi.gcp.cloudbuildv2.ConnectionArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubEnterpriseConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var private_key_secret = new Secret(\"private-key-secret\", SecretArgs.builder()\n .secretId(\"ghe-pk-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var private_key_secret_version = new SecretVersion(\"private-key-secret-version\", SecretVersionArgs.builder()\n .secret(private_key_secret.id())\n .secretData(StdFunctions.file(FileArgs.builder()\n .input(\"private-key.pem\")\n .build()).result())\n .build());\n\n var webhook_secret_secret = new Secret(\"webhook-secret-secret\", SecretArgs.builder()\n .secretId(\"github-token-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var webhook_secret_secret_version = new SecretVersion(\"webhook-secret-secret-version\", SecretVersionArgs.builder()\n .secret(webhook_secret_secret.id())\n .secretData(\"\u003cwebhook-secret-data\u003e\")\n .build());\n\n final var p4sa-secretAccessor = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/secretmanager.secretAccessor\")\n .members(\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\")\n .build())\n .build());\n\n var policy_pk = new SecretIamPolicy(\"policy-pk\", SecretIamPolicyArgs.builder()\n .secretId(private_key_secret.secretId())\n .policyData(p4sa_secretAccessor.policyData())\n .build());\n\n var policy_whs = new SecretIamPolicy(\"policy-whs\", SecretIamPolicyArgs.builder()\n .secretId(webhook_secret_secret.secretId())\n .policyData(p4sa_secretAccessor.policyData())\n .build());\n\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .name(\"my-terraform-ghe-connection\")\n .githubEnterpriseConfig(ConnectionGithubEnterpriseConfigArgs.builder()\n .hostUri(\"https://ghe.com\")\n .privateKeySecretVersion(private_key_secret_version.id())\n .webhookSecretSecretVersion(webhook_secret_secret_version.id())\n .appId(200)\n .appSlug(\"gcb-app\")\n .appInstallationId(300)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n policy_pk,\n policy_whs)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n private-key-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: ghe-pk-secret\n replication:\n auto: {}\n private-key-secret-version:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"private-key-secret\"].id}\n secretData:\n fn::invoke:\n Function: std:file\n Arguments:\n input: private-key.pem\n Return: result\n webhook-secret-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: github-token-secret\n replication:\n auto: {}\n webhook-secret-secret-version:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"webhook-secret-secret\"].id}\n secretData: \u003cwebhook-secret-data\u003e\n policy-pk:\n type: gcp:secretmanager:SecretIamPolicy\n properties:\n secretId: ${[\"private-key-secret\"].secretId}\n policyData: ${[\"p4sa-secretAccessor\"].policyData}\n policy-whs:\n type: gcp:secretmanager:SecretIamPolicy\n properties:\n secretId: ${[\"webhook-secret-secret\"].secretId}\n policyData: ${[\"p4sa-secretAccessor\"].policyData}\n my-connection:\n type: gcp:cloudbuildv2:Connection\n properties:\n location: us-central1\n name: my-terraform-ghe-connection\n githubEnterpriseConfig:\n hostUri: https://ghe.com\n privateKeySecretVersion: ${[\"private-key-secret-version\"].id}\n webhookSecretSecretVersion: ${[\"webhook-secret-secret-version\"].id}\n appId: 200\n appSlug: gcb-app\n appInstallationId: 300\n options:\n dependson:\n - ${[\"policy-pk\"]}\n - ${[\"policy-whs\"]}\nvariables:\n p4sa-secretAccessor:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/secretmanager.secretAccessor\n members:\n - serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuildv2 Connection Github\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst github_token_secret = new gcp.secretmanager.Secret(\"github-token-secret\", {\n secretId: \"github-token-secret\",\n replication: {\n auto: {},\n },\n});\nconst github_token_secret_version = new gcp.secretmanager.SecretVersion(\"github-token-secret-version\", {\n secret: github_token_secret.id,\n secretData: std.file({\n input: \"my-github-token.txt\",\n }).then(invoke =\u003e invoke.result),\n});\nconst p4sa-secretAccessor = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/secretmanager.secretAccessor\",\n members: [\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\"],\n }],\n});\nconst policy = new gcp.secretmanager.SecretIamPolicy(\"policy\", {\n secretId: github_token_secret.secretId,\n policyData: p4sa_secretAccessor.then(p4sa_secretAccessor =\u003e p4sa_secretAccessor.policyData),\n});\nconst my_connection = new gcp.cloudbuildv2.Connection(\"my-connection\", {\n location: \"us-central1\",\n name: \"my-connection\",\n githubConfig: {\n appInstallationId: 123123,\n authorizerCredential: {\n oauthTokenSecretVersion: github_token_secret_version.id,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ngithub_token_secret = gcp.secretmanager.Secret(\"github-token-secret\",\n secret_id=\"github-token-secret\",\n replication={\n \"auto\": {},\n })\ngithub_token_secret_version = gcp.secretmanager.SecretVersion(\"github-token-secret-version\",\n secret=github_token_secret.id,\n secret_data=std.file(input=\"my-github-token.txt\").result)\np4sa_secret_accessor = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/secretmanager.secretAccessor\",\n \"members\": [\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\"],\n}])\npolicy = gcp.secretmanager.SecretIamPolicy(\"policy\",\n secret_id=github_token_secret.secret_id,\n policy_data=p4sa_secret_accessor.policy_data)\nmy_connection = gcp.cloudbuildv2.Connection(\"my-connection\",\n location=\"us-central1\",\n name=\"my-connection\",\n github_config={\n \"app_installation_id\": 123123,\n \"authorizer_credential\": {\n \"oauth_token_secret_version\": github_token_secret_version.id,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var github_token_secret = new Gcp.SecretManager.Secret(\"github-token-secret\", new()\n {\n SecretId = \"github-token-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var github_token_secret_version = new Gcp.SecretManager.SecretVersion(\"github-token-secret-version\", new()\n {\n Secret = github_token_secret.Id,\n SecretData = Std.File.Invoke(new()\n {\n Input = \"my-github-token.txt\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var p4sa_secretAccessor = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/secretmanager.secretAccessor\",\n Members = new[]\n {\n \"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\",\n },\n },\n },\n });\n\n var policy = new Gcp.SecretManager.SecretIamPolicy(\"policy\", new()\n {\n SecretId = github_token_secret.SecretId,\n PolicyData = p4sa_secretAccessor.Apply(p4sa_secretAccessor =\u003e p4sa_secretAccessor.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData)),\n });\n\n var my_connection = new Gcp.CloudBuildV2.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n Name = \"my-connection\",\n GithubConfig = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigArgs\n {\n AppInstallationId = 123123,\n AuthorizerCredential = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigAuthorizerCredentialArgs\n {\n OauthTokenSecretVersion = github_token_secret_version.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuildv2\"\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: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"my-github-token.txt\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"github-token-secret-version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: github_token_secret.ID(),\n\t\t\tSecretData: pulumi.String(invokeFile.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tp4sa_secretAccessor, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/secretmanager.secretAccessor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamPolicy(ctx, \"policy\", \u0026secretmanager.SecretIamPolicyArgs{\n\t\t\tSecretId: github_token_secret.SecretId,\n\t\t\tPolicyData: pulumi.String(p4sa_secretAccessor.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuildv2.NewConnection(ctx, \"my-connection\", \u0026cloudbuildv2.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-connection\"),\n\t\t\tGithubConfig: \u0026cloudbuildv2.ConnectionGithubConfigArgs{\n\t\t\t\tAppInstallationId: pulumi.Int(123123),\n\t\t\t\tAuthorizerCredential: \u0026cloudbuildv2.ConnectionGithubConfigAuthorizerCredentialArgs{\n\t\t\t\t\tOauthTokenSecretVersion: github_token_secret_version.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicy;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicyArgs;\nimport com.pulumi.gcp.cloudbuildv2.Connection;\nimport com.pulumi.gcp.cloudbuildv2.ConnectionArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubConfigArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubConfigAuthorizerCredentialArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var github_token_secret = new Secret(\"github-token-secret\", SecretArgs.builder()\n .secretId(\"github-token-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var github_token_secret_version = new SecretVersion(\"github-token-secret-version\", SecretVersionArgs.builder()\n .secret(github_token_secret.id())\n .secretData(StdFunctions.file(FileArgs.builder()\n .input(\"my-github-token.txt\")\n .build()).result())\n .build());\n\n final var p4sa-secretAccessor = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/secretmanager.secretAccessor\")\n .members(\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\")\n .build())\n .build());\n\n var policy = new SecretIamPolicy(\"policy\", SecretIamPolicyArgs.builder()\n .secretId(github_token_secret.secretId())\n .policyData(p4sa_secretAccessor.policyData())\n .build());\n\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .name(\"my-connection\")\n .githubConfig(ConnectionGithubConfigArgs.builder()\n .appInstallationId(123123)\n .authorizerCredential(ConnectionGithubConfigAuthorizerCredentialArgs.builder()\n .oauthTokenSecretVersion(github_token_secret_version.id())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n github-token-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: github-token-secret\n replication:\n auto: {}\n github-token-secret-version:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"github-token-secret\"].id}\n secretData:\n fn::invoke:\n Function: std:file\n Arguments:\n input: my-github-token.txt\n Return: result\n policy:\n type: gcp:secretmanager:SecretIamPolicy\n properties:\n secretId: ${[\"github-token-secret\"].secretId}\n policyData: ${[\"p4sa-secretAccessor\"].policyData}\n my-connection:\n type: gcp:cloudbuildv2:Connection\n properties:\n location: us-central1\n name: my-connection\n githubConfig:\n appInstallationId: 123123\n authorizerCredential:\n oauthTokenSecretVersion: ${[\"github-token-secret-version\"].id}\nvariables:\n p4sa-secretAccessor:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/secretmanager.secretAccessor\n members:\n - serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nConnection can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/connections/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Connection can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudbuildv2/connection:Connection default projects/{{project}}/locations/{{location}}/connections/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuildv2/connection:Connection default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuildv2/connection:Connection default {{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuildv2/connection:Connection default {{name}}\n```\n\n", + "description": "A connection to a SCM like GitHub, GitHub Enterprise, Bitbucket Data Center/Cloud or GitLab.\n\n\nTo get more information about Connection, see:\n\n* [API documentation](https://cloud.google.com/build/docs/api/reference/rest)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/build/docs)\n\n## Example Usage\n\n### Cloudbuildv2 Connection\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_connection = new gcp.cloudbuildv2.Connection(\"my-connection\", {\n location: \"us-central1\",\n name: \"tf-test-connection\",\n githubConfig: {\n appInstallationId: 0,\n authorizerCredential: {\n oauthTokenSecretVersion: \"projects/gcb-terraform-creds/secrets/github-pat/versions/1\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_connection = gcp.cloudbuildv2.Connection(\"my-connection\",\n location=\"us-central1\",\n name=\"tf-test-connection\",\n github_config={\n \"app_installation_id\": 0,\n \"authorizer_credential\": {\n \"oauth_token_secret_version\": \"projects/gcb-terraform-creds/secrets/github-pat/versions/1\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_connection = new Gcp.CloudBuildV2.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n Name = \"tf-test-connection\",\n GithubConfig = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigArgs\n {\n AppInstallationId = 0,\n AuthorizerCredential = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigAuthorizerCredentialArgs\n {\n OauthTokenSecretVersion = \"projects/gcb-terraform-creds/secrets/github-pat/versions/1\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuildv2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudbuildv2.NewConnection(ctx, \"my-connection\", \u0026cloudbuildv2.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"tf-test-connection\"),\n\t\t\tGithubConfig: \u0026cloudbuildv2.ConnectionGithubConfigArgs{\n\t\t\t\tAppInstallationId: pulumi.Int(0),\n\t\t\t\tAuthorizerCredential: \u0026cloudbuildv2.ConnectionGithubConfigAuthorizerCredentialArgs{\n\t\t\t\t\tOauthTokenSecretVersion: pulumi.String(\"projects/gcb-terraform-creds/secrets/github-pat/versions/1\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudbuildv2.Connection;\nimport com.pulumi.gcp.cloudbuildv2.ConnectionArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubConfigArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubConfigAuthorizerCredentialArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .name(\"tf-test-connection\")\n .githubConfig(ConnectionGithubConfigArgs.builder()\n .appInstallationId(0)\n .authorizerCredential(ConnectionGithubConfigAuthorizerCredentialArgs.builder()\n .oauthTokenSecretVersion(\"projects/gcb-terraform-creds/secrets/github-pat/versions/1\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-connection:\n type: gcp:cloudbuildv2:Connection\n properties:\n location: us-central1\n name: tf-test-connection\n githubConfig:\n appInstallationId: 0\n authorizerCredential:\n oauthTokenSecretVersion: projects/gcb-terraform-creds/secrets/github-pat/versions/1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuildv2 Connection Ghe\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst private_key_secret = new gcp.secretmanager.Secret(\"private-key-secret\", {\n secretId: \"ghe-pk-secret\",\n replication: {\n auto: {},\n },\n});\nconst private_key_secret_version = new gcp.secretmanager.SecretVersion(\"private-key-secret-version\", {\n secret: private_key_secret.id,\n secretData: std.file({\n input: \"private-key.pem\",\n }).then(invoke =\u003e invoke.result),\n});\nconst webhook_secret_secret = new gcp.secretmanager.Secret(\"webhook-secret-secret\", {\n secretId: \"github-token-secret\",\n replication: {\n auto: {},\n },\n});\nconst webhook_secret_secret_version = new gcp.secretmanager.SecretVersion(\"webhook-secret-secret-version\", {\n secret: webhook_secret_secret.id,\n secretData: \"\u003cwebhook-secret-data\u003e\",\n});\nconst p4sa-secretAccessor = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/secretmanager.secretAccessor\",\n members: [\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\"],\n }],\n});\nconst policy_pk = new gcp.secretmanager.SecretIamPolicy(\"policy-pk\", {\n secretId: private_key_secret.secretId,\n policyData: p4sa_secretAccessor.then(p4sa_secretAccessor =\u003e p4sa_secretAccessor.policyData),\n});\nconst policy_whs = new gcp.secretmanager.SecretIamPolicy(\"policy-whs\", {\n secretId: webhook_secret_secret.secretId,\n policyData: p4sa_secretAccessor.then(p4sa_secretAccessor =\u003e p4sa_secretAccessor.policyData),\n});\nconst my_connection = new gcp.cloudbuildv2.Connection(\"my-connection\", {\n location: \"us-central1\",\n name: \"my-terraform-ghe-connection\",\n githubEnterpriseConfig: {\n hostUri: \"https://ghe.com\",\n privateKeySecretVersion: private_key_secret_version.id,\n webhookSecretSecretVersion: webhook_secret_secret_version.id,\n appId: 200,\n appSlug: \"gcb-app\",\n appInstallationId: 300,\n },\n}, {\n dependsOn: [\n policy_pk,\n policy_whs,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nprivate_key_secret = gcp.secretmanager.Secret(\"private-key-secret\",\n secret_id=\"ghe-pk-secret\",\n replication={\n \"auto\": {},\n })\nprivate_key_secret_version = gcp.secretmanager.SecretVersion(\"private-key-secret-version\",\n secret=private_key_secret.id,\n secret_data=std.file(input=\"private-key.pem\").result)\nwebhook_secret_secret = gcp.secretmanager.Secret(\"webhook-secret-secret\",\n secret_id=\"github-token-secret\",\n replication={\n \"auto\": {},\n })\nwebhook_secret_secret_version = gcp.secretmanager.SecretVersion(\"webhook-secret-secret-version\",\n secret=webhook_secret_secret.id,\n secret_data=\"\u003cwebhook-secret-data\u003e\")\np4sa_secret_accessor = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/secretmanager.secretAccessor\",\n \"members\": [\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\"],\n}])\npolicy_pk = gcp.secretmanager.SecretIamPolicy(\"policy-pk\",\n secret_id=private_key_secret.secret_id,\n policy_data=p4sa_secret_accessor.policy_data)\npolicy_whs = gcp.secretmanager.SecretIamPolicy(\"policy-whs\",\n secret_id=webhook_secret_secret.secret_id,\n policy_data=p4sa_secret_accessor.policy_data)\nmy_connection = gcp.cloudbuildv2.Connection(\"my-connection\",\n location=\"us-central1\",\n name=\"my-terraform-ghe-connection\",\n github_enterprise_config={\n \"host_uri\": \"https://ghe.com\",\n \"private_key_secret_version\": private_key_secret_version.id,\n \"webhook_secret_secret_version\": webhook_secret_secret_version.id,\n \"app_id\": 200,\n \"app_slug\": \"gcb-app\",\n \"app_installation_id\": 300,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n policy_pk,\n policy_whs,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var private_key_secret = new Gcp.SecretManager.Secret(\"private-key-secret\", new()\n {\n SecretId = \"ghe-pk-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var private_key_secret_version = new Gcp.SecretManager.SecretVersion(\"private-key-secret-version\", new()\n {\n Secret = private_key_secret.Id,\n SecretData = Std.File.Invoke(new()\n {\n Input = \"private-key.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var webhook_secret_secret = new Gcp.SecretManager.Secret(\"webhook-secret-secret\", new()\n {\n SecretId = \"github-token-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var webhook_secret_secret_version = new Gcp.SecretManager.SecretVersion(\"webhook-secret-secret-version\", new()\n {\n Secret = webhook_secret_secret.Id,\n SecretData = \"\u003cwebhook-secret-data\u003e\",\n });\n\n var p4sa_secretAccessor = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/secretmanager.secretAccessor\",\n Members = new[]\n {\n \"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\",\n },\n },\n },\n });\n\n var policy_pk = new Gcp.SecretManager.SecretIamPolicy(\"policy-pk\", new()\n {\n SecretId = private_key_secret.SecretId,\n PolicyData = p4sa_secretAccessor.Apply(p4sa_secretAccessor =\u003e p4sa_secretAccessor.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData)),\n });\n\n var policy_whs = new Gcp.SecretManager.SecretIamPolicy(\"policy-whs\", new()\n {\n SecretId = webhook_secret_secret.SecretId,\n PolicyData = p4sa_secretAccessor.Apply(p4sa_secretAccessor =\u003e p4sa_secretAccessor.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData)),\n });\n\n var my_connection = new Gcp.CloudBuildV2.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n Name = \"my-terraform-ghe-connection\",\n GithubEnterpriseConfig = new Gcp.CloudBuildV2.Inputs.ConnectionGithubEnterpriseConfigArgs\n {\n HostUri = \"https://ghe.com\",\n PrivateKeySecretVersion = private_key_secret_version.Id,\n WebhookSecretSecretVersion = webhook_secret_secret_version.Id,\n AppId = 200,\n AppSlug = \"gcb-app\",\n AppInstallationId = 300,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n policy_pk,\n policy_whs,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuildv2\"\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(\"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\t_, err = secretmanager.NewSecretVersion(ctx, \"webhook-secret-secret-version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: webhook_secret_secret.ID(),\n\t\t\tSecretData: pulumi.String(\"\u003cwebhook-secret-data\u003e\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tp4sa_secretAccessor, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/secretmanager.secretAccessor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamPolicy(ctx, \"policy-pk\", \u0026secretmanager.SecretIamPolicyArgs{\n\t\t\tSecretId: private_key_secret.SecretId,\n\t\t\tPolicyData: pulumi.String(p4sa_secretAccessor.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamPolicy(ctx, \"policy-whs\", \u0026secretmanager.SecretIamPolicyArgs{\n\t\t\tSecretId: webhook_secret_secret.SecretId,\n\t\t\tPolicyData: pulumi.String(p4sa_secretAccessor.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuildv2.NewConnection(ctx, \"my-connection\", \u0026cloudbuildv2.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-terraform-ghe-connection\"),\n\t\t\tGithubEnterpriseConfig: \u0026cloudbuildv2.ConnectionGithubEnterpriseConfigArgs{\n\t\t\t\tHostUri: pulumi.String(\"https://ghe.com\"),\n\t\t\t\tPrivateKeySecretVersion: private_key_secret_version.ID(),\n\t\t\t\tWebhookSecretSecretVersion: webhook_secret_secret_version.ID(),\n\t\t\t\tAppId: pulumi.Int(200),\n\t\t\t\tAppSlug: pulumi.String(\"gcb-app\"),\n\t\t\t\tAppInstallationId: pulumi.Int(300),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tpolicy_pk,\n\t\t\tpolicy_whs,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicy;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicyArgs;\nimport com.pulumi.gcp.cloudbuildv2.Connection;\nimport com.pulumi.gcp.cloudbuildv2.ConnectionArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubEnterpriseConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var private_key_secret = new Secret(\"private-key-secret\", SecretArgs.builder()\n .secretId(\"ghe-pk-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var private_key_secret_version = new SecretVersion(\"private-key-secret-version\", SecretVersionArgs.builder()\n .secret(private_key_secret.id())\n .secretData(StdFunctions.file(FileArgs.builder()\n .input(\"private-key.pem\")\n .build()).result())\n .build());\n\n var webhook_secret_secret = new Secret(\"webhook-secret-secret\", SecretArgs.builder()\n .secretId(\"github-token-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var webhook_secret_secret_version = new SecretVersion(\"webhook-secret-secret-version\", SecretVersionArgs.builder()\n .secret(webhook_secret_secret.id())\n .secretData(\"\u003cwebhook-secret-data\u003e\")\n .build());\n\n final var p4sa-secretAccessor = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/secretmanager.secretAccessor\")\n .members(\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\")\n .build())\n .build());\n\n var policy_pk = new SecretIamPolicy(\"policy-pk\", SecretIamPolicyArgs.builder()\n .secretId(private_key_secret.secretId())\n .policyData(p4sa_secretAccessor.policyData())\n .build());\n\n var policy_whs = new SecretIamPolicy(\"policy-whs\", SecretIamPolicyArgs.builder()\n .secretId(webhook_secret_secret.secretId())\n .policyData(p4sa_secretAccessor.policyData())\n .build());\n\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .name(\"my-terraform-ghe-connection\")\n .githubEnterpriseConfig(ConnectionGithubEnterpriseConfigArgs.builder()\n .hostUri(\"https://ghe.com\")\n .privateKeySecretVersion(private_key_secret_version.id())\n .webhookSecretSecretVersion(webhook_secret_secret_version.id())\n .appId(200)\n .appSlug(\"gcb-app\")\n .appInstallationId(300)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n policy_pk,\n policy_whs)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n private-key-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: ghe-pk-secret\n replication:\n auto: {}\n private-key-secret-version:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"private-key-secret\"].id}\n secretData:\n fn::invoke:\n Function: std:file\n Arguments:\n input: private-key.pem\n Return: result\n webhook-secret-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: github-token-secret\n replication:\n auto: {}\n webhook-secret-secret-version:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"webhook-secret-secret\"].id}\n secretData: \u003cwebhook-secret-data\u003e\n policy-pk:\n type: gcp:secretmanager:SecretIamPolicy\n properties:\n secretId: ${[\"private-key-secret\"].secretId}\n policyData: ${[\"p4sa-secretAccessor\"].policyData}\n policy-whs:\n type: gcp:secretmanager:SecretIamPolicy\n properties:\n secretId: ${[\"webhook-secret-secret\"].secretId}\n policyData: ${[\"p4sa-secretAccessor\"].policyData}\n my-connection:\n type: gcp:cloudbuildv2:Connection\n properties:\n location: us-central1\n name: my-terraform-ghe-connection\n githubEnterpriseConfig:\n hostUri: https://ghe.com\n privateKeySecretVersion: ${[\"private-key-secret-version\"].id}\n webhookSecretSecretVersion: ${[\"webhook-secret-secret-version\"].id}\n appId: 200\n appSlug: gcb-app\n appInstallationId: 300\n options:\n dependson:\n - ${[\"policy-pk\"]}\n - ${[\"policy-whs\"]}\nvariables:\n p4sa-secretAccessor:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/secretmanager.secretAccessor\n members:\n - serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuildv2 Connection Github\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst github_token_secret = new gcp.secretmanager.Secret(\"github-token-secret\", {\n secretId: \"github-token-secret\",\n replication: {\n auto: {},\n },\n});\nconst github_token_secret_version = new gcp.secretmanager.SecretVersion(\"github-token-secret-version\", {\n secret: github_token_secret.id,\n secretData: std.file({\n input: \"my-github-token.txt\",\n }).then(invoke =\u003e invoke.result),\n});\nconst p4sa-secretAccessor = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/secretmanager.secretAccessor\",\n members: [\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\"],\n }],\n});\nconst policy = new gcp.secretmanager.SecretIamPolicy(\"policy\", {\n secretId: github_token_secret.secretId,\n policyData: p4sa_secretAccessor.then(p4sa_secretAccessor =\u003e p4sa_secretAccessor.policyData),\n});\nconst my_connection = new gcp.cloudbuildv2.Connection(\"my-connection\", {\n location: \"us-central1\",\n name: \"my-connection\",\n githubConfig: {\n appInstallationId: 123123,\n authorizerCredential: {\n oauthTokenSecretVersion: github_token_secret_version.id,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ngithub_token_secret = gcp.secretmanager.Secret(\"github-token-secret\",\n secret_id=\"github-token-secret\",\n replication={\n \"auto\": {},\n })\ngithub_token_secret_version = gcp.secretmanager.SecretVersion(\"github-token-secret-version\",\n secret=github_token_secret.id,\n secret_data=std.file(input=\"my-github-token.txt\").result)\np4sa_secret_accessor = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/secretmanager.secretAccessor\",\n \"members\": [\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\"],\n}])\npolicy = gcp.secretmanager.SecretIamPolicy(\"policy\",\n secret_id=github_token_secret.secret_id,\n policy_data=p4sa_secret_accessor.policy_data)\nmy_connection = gcp.cloudbuildv2.Connection(\"my-connection\",\n location=\"us-central1\",\n name=\"my-connection\",\n github_config={\n \"app_installation_id\": 123123,\n \"authorizer_credential\": {\n \"oauth_token_secret_version\": github_token_secret_version.id,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var github_token_secret = new Gcp.SecretManager.Secret(\"github-token-secret\", new()\n {\n SecretId = \"github-token-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var github_token_secret_version = new Gcp.SecretManager.SecretVersion(\"github-token-secret-version\", new()\n {\n Secret = github_token_secret.Id,\n SecretData = Std.File.Invoke(new()\n {\n Input = \"my-github-token.txt\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var p4sa_secretAccessor = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/secretmanager.secretAccessor\",\n Members = new[]\n {\n \"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\",\n },\n },\n },\n });\n\n var policy = new Gcp.SecretManager.SecretIamPolicy(\"policy\", new()\n {\n SecretId = github_token_secret.SecretId,\n PolicyData = p4sa_secretAccessor.Apply(p4sa_secretAccessor =\u003e p4sa_secretAccessor.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData)),\n });\n\n var my_connection = new Gcp.CloudBuildV2.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n Name = \"my-connection\",\n GithubConfig = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigArgs\n {\n AppInstallationId = 123123,\n AuthorizerCredential = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigAuthorizerCredentialArgs\n {\n OauthTokenSecretVersion = github_token_secret_version.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuildv2\"\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-cloudbuild.iam.gserviceaccount.com\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamPolicy(ctx, \"policy\", \u0026secretmanager.SecretIamPolicyArgs{\n\t\t\tSecretId: github_token_secret.SecretId,\n\t\t\tPolicyData: pulumi.String(p4sa_secretAccessor.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuildv2.NewConnection(ctx, \"my-connection\", \u0026cloudbuildv2.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-connection\"),\n\t\t\tGithubConfig: \u0026cloudbuildv2.ConnectionGithubConfigArgs{\n\t\t\t\tAppInstallationId: pulumi.Int(123123),\n\t\t\t\tAuthorizerCredential: \u0026cloudbuildv2.ConnectionGithubConfigAuthorizerCredentialArgs{\n\t\t\t\t\tOauthTokenSecretVersion: github_token_secret_version.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicy;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicyArgs;\nimport com.pulumi.gcp.cloudbuildv2.Connection;\nimport com.pulumi.gcp.cloudbuildv2.ConnectionArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubConfigArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubConfigAuthorizerCredentialArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var github_token_secret = new Secret(\"github-token-secret\", SecretArgs.builder()\n .secretId(\"github-token-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var github_token_secret_version = new SecretVersion(\"github-token-secret-version\", SecretVersionArgs.builder()\n .secret(github_token_secret.id())\n .secretData(StdFunctions.file(FileArgs.builder()\n .input(\"my-github-token.txt\")\n .build()).result())\n .build());\n\n final var p4sa-secretAccessor = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/secretmanager.secretAccessor\")\n .members(\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\")\n .build())\n .build());\n\n var policy = new SecretIamPolicy(\"policy\", SecretIamPolicyArgs.builder()\n .secretId(github_token_secret.secretId())\n .policyData(p4sa_secretAccessor.policyData())\n .build());\n\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .name(\"my-connection\")\n .githubConfig(ConnectionGithubConfigArgs.builder()\n .appInstallationId(123123)\n .authorizerCredential(ConnectionGithubConfigAuthorizerCredentialArgs.builder()\n .oauthTokenSecretVersion(github_token_secret_version.id())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n github-token-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: github-token-secret\n replication:\n auto: {}\n github-token-secret-version:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"github-token-secret\"].id}\n secretData:\n fn::invoke:\n Function: std:file\n Arguments:\n input: my-github-token.txt\n Return: result\n policy:\n type: gcp:secretmanager:SecretIamPolicy\n properties:\n secretId: ${[\"github-token-secret\"].secretId}\n policyData: ${[\"p4sa-secretAccessor\"].policyData}\n my-connection:\n type: gcp:cloudbuildv2:Connection\n properties:\n location: us-central1\n name: my-connection\n githubConfig:\n appInstallationId: 123123\n authorizerCredential:\n oauthTokenSecretVersion: ${[\"github-token-secret-version\"].id}\nvariables:\n p4sa-secretAccessor:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/secretmanager.secretAccessor\n members:\n - serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nConnection can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/connections/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Connection can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudbuildv2/connection:Connection default projects/{{project}}/locations/{{location}}/connections/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuildv2/connection:Connection default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuildv2/connection:Connection default {{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuildv2/connection:Connection default {{name}}\n```\n\n", "properties": { "annotations": { "type": "object", @@ -138644,7 +138644,7 @@ } }, "gcp:cloudbuildv2/repository:Repository": { - "description": "A repository associated to a parent connection.\n\n\nTo get more information about Repository, see:\n\n* [API documentation](https://cloud.google.com/build/docs/api/reference/rest)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/build/docs)\n\n## Example Usage\n\n### Cloudbuildv2 Repository Ghe Doc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst private_key_secret = new gcp.secretmanager.Secret(\"private-key-secret\", {\n secretId: \"ghe-pk-secret\",\n replication: {\n auto: {},\n },\n});\nconst private_key_secret_version = new gcp.secretmanager.SecretVersion(\"private-key-secret-version\", {\n secret: private_key_secret.id,\n secretData: std.file({\n input: \"private-key.pem\",\n }).then(invoke =\u003e invoke.result),\n});\nconst webhook_secret_secret = new gcp.secretmanager.Secret(\"webhook-secret-secret\", {\n secretId: \"github-token-secret\",\n replication: {\n auto: {},\n },\n});\nconst webhook_secret_secret_version = new gcp.secretmanager.SecretVersion(\"webhook-secret-secret-version\", {\n secret: webhook_secret_secret.id,\n secretData: \"\u003cwebhook-secret-data\u003e\",\n});\nconst p4sa-secretAccessor = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/secretmanager.secretAccessor\",\n members: [\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\"],\n }],\n});\nconst policy_pk = new gcp.secretmanager.SecretIamPolicy(\"policy-pk\", {\n secretId: private_key_secret.secretId,\n policyData: p4sa_secretAccessor.then(p4sa_secretAccessor =\u003e p4sa_secretAccessor.policyData),\n});\nconst policy_whs = new gcp.secretmanager.SecretIamPolicy(\"policy-whs\", {\n secretId: webhook_secret_secret.secretId,\n policyData: p4sa_secretAccessor.then(p4sa_secretAccessor =\u003e p4sa_secretAccessor.policyData),\n});\nconst my_connection = new gcp.cloudbuildv2.Connection(\"my-connection\", {\n location: \"us-central1\",\n name: \"my-terraform-ghe-connection\",\n githubEnterpriseConfig: {\n hostUri: \"https://ghe.com\",\n privateKeySecretVersion: private_key_secret_version.id,\n webhookSecretSecretVersion: webhook_secret_secret_version.id,\n appId: 200,\n appSlug: \"gcb-app\",\n appInstallationId: 300,\n },\n}, {\n dependsOn: [\n policy_pk,\n policy_whs,\n ],\n});\nconst my_repository = new gcp.cloudbuildv2.Repository(\"my-repository\", {\n name: \"my-terraform-ghe-repo\",\n location: \"us-central1\",\n parentConnection: my_connection.name,\n remoteUri: \"https://ghe.com/hashicorp/terraform-provider-google.git\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nprivate_key_secret = gcp.secretmanager.Secret(\"private-key-secret\",\n secret_id=\"ghe-pk-secret\",\n replication={\n \"auto\": {},\n })\nprivate_key_secret_version = gcp.secretmanager.SecretVersion(\"private-key-secret-version\",\n secret=private_key_secret.id,\n secret_data=std.file(input=\"private-key.pem\").result)\nwebhook_secret_secret = gcp.secretmanager.Secret(\"webhook-secret-secret\",\n secret_id=\"github-token-secret\",\n replication={\n \"auto\": {},\n })\nwebhook_secret_secret_version = gcp.secretmanager.SecretVersion(\"webhook-secret-secret-version\",\n secret=webhook_secret_secret.id,\n secret_data=\"\u003cwebhook-secret-data\u003e\")\np4sa_secret_accessor = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/secretmanager.secretAccessor\",\n \"members\": [\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\"],\n}])\npolicy_pk = gcp.secretmanager.SecretIamPolicy(\"policy-pk\",\n secret_id=private_key_secret.secret_id,\n policy_data=p4sa_secret_accessor.policy_data)\npolicy_whs = gcp.secretmanager.SecretIamPolicy(\"policy-whs\",\n secret_id=webhook_secret_secret.secret_id,\n policy_data=p4sa_secret_accessor.policy_data)\nmy_connection = gcp.cloudbuildv2.Connection(\"my-connection\",\n location=\"us-central1\",\n name=\"my-terraform-ghe-connection\",\n github_enterprise_config={\n \"host_uri\": \"https://ghe.com\",\n \"private_key_secret_version\": private_key_secret_version.id,\n \"webhook_secret_secret_version\": webhook_secret_secret_version.id,\n \"app_id\": 200,\n \"app_slug\": \"gcb-app\",\n \"app_installation_id\": 300,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n policy_pk,\n policy_whs,\n ]))\nmy_repository = gcp.cloudbuildv2.Repository(\"my-repository\",\n name=\"my-terraform-ghe-repo\",\n location=\"us-central1\",\n parent_connection=my_connection.name,\n remote_uri=\"https://ghe.com/hashicorp/terraform-provider-google.git\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var private_key_secret = new Gcp.SecretManager.Secret(\"private-key-secret\", new()\n {\n SecretId = \"ghe-pk-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var private_key_secret_version = new Gcp.SecretManager.SecretVersion(\"private-key-secret-version\", new()\n {\n Secret = private_key_secret.Id,\n SecretData = Std.File.Invoke(new()\n {\n Input = \"private-key.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var webhook_secret_secret = new Gcp.SecretManager.Secret(\"webhook-secret-secret\", new()\n {\n SecretId = \"github-token-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var webhook_secret_secret_version = new Gcp.SecretManager.SecretVersion(\"webhook-secret-secret-version\", new()\n {\n Secret = webhook_secret_secret.Id,\n SecretData = \"\u003cwebhook-secret-data\u003e\",\n });\n\n var p4sa_secretAccessor = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/secretmanager.secretAccessor\",\n Members = new[]\n {\n \"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\",\n },\n },\n },\n });\n\n var policy_pk = new Gcp.SecretManager.SecretIamPolicy(\"policy-pk\", new()\n {\n SecretId = private_key_secret.SecretId,\n PolicyData = p4sa_secretAccessor.Apply(p4sa_secretAccessor =\u003e p4sa_secretAccessor.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData)),\n });\n\n var policy_whs = new Gcp.SecretManager.SecretIamPolicy(\"policy-whs\", new()\n {\n SecretId = webhook_secret_secret.SecretId,\n PolicyData = p4sa_secretAccessor.Apply(p4sa_secretAccessor =\u003e p4sa_secretAccessor.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData)),\n });\n\n var my_connection = new Gcp.CloudBuildV2.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n Name = \"my-terraform-ghe-connection\",\n GithubEnterpriseConfig = new Gcp.CloudBuildV2.Inputs.ConnectionGithubEnterpriseConfigArgs\n {\n HostUri = \"https://ghe.com\",\n PrivateKeySecretVersion = private_key_secret_version.Id,\n WebhookSecretSecretVersion = webhook_secret_secret_version.Id,\n AppId = 200,\n AppSlug = \"gcb-app\",\n AppInstallationId = 300,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n policy_pk,\n policy_whs,\n },\n });\n\n var my_repository = new Gcp.CloudBuildV2.Repository(\"my-repository\", new()\n {\n Name = \"my-terraform-ghe-repo\",\n Location = \"us-central1\",\n ParentConnection = my_connection.Name,\n RemoteUri = \"https://ghe.com/hashicorp/terraform-provider-google.git\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuildv2\"\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: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"private-key.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"private-key-secret-version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: private_key_secret.ID(),\n\t\t\tSecretData: pulumi.String(invokeFile.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"webhook-secret-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"github-token-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"webhook-secret-secret-version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: webhook_secret_secret.ID(),\n\t\t\tSecretData: pulumi.String(\"\u003cwebhook-secret-data\u003e\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tp4sa_secretAccessor, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/secretmanager.secretAccessor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamPolicy(ctx, \"policy-pk\", \u0026secretmanager.SecretIamPolicyArgs{\n\t\t\tSecretId: private_key_secret.SecretId,\n\t\t\tPolicyData: pulumi.String(p4sa_secretAccessor.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamPolicy(ctx, \"policy-whs\", \u0026secretmanager.SecretIamPolicyArgs{\n\t\t\tSecretId: webhook_secret_secret.SecretId,\n\t\t\tPolicyData: pulumi.String(p4sa_secretAccessor.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuildv2.NewConnection(ctx, \"my-connection\", \u0026cloudbuildv2.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-terraform-ghe-connection\"),\n\t\t\tGithubEnterpriseConfig: \u0026cloudbuildv2.ConnectionGithubEnterpriseConfigArgs{\n\t\t\t\tHostUri: pulumi.String(\"https://ghe.com\"),\n\t\t\t\tPrivateKeySecretVersion: private_key_secret_version.ID(),\n\t\t\t\tWebhookSecretSecretVersion: webhook_secret_secret_version.ID(),\n\t\t\t\tAppId: pulumi.Int(200),\n\t\t\t\tAppSlug: pulumi.String(\"gcb-app\"),\n\t\t\t\tAppInstallationId: pulumi.Int(300),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tpolicy_pk,\n\t\t\tpolicy_whs,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuildv2.NewRepository(ctx, \"my-repository\", \u0026cloudbuildv2.RepositoryArgs{\n\t\t\tName: pulumi.String(\"my-terraform-ghe-repo\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tParentConnection: my_connection.Name,\n\t\t\tRemoteUri: pulumi.String(\"https://ghe.com/hashicorp/terraform-provider-google.git\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicy;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicyArgs;\nimport com.pulumi.gcp.cloudbuildv2.Connection;\nimport com.pulumi.gcp.cloudbuildv2.ConnectionArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubEnterpriseConfigArgs;\nimport com.pulumi.gcp.cloudbuildv2.Repository;\nimport com.pulumi.gcp.cloudbuildv2.RepositoryArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var private_key_secret = new Secret(\"private-key-secret\", SecretArgs.builder()\n .secretId(\"ghe-pk-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var private_key_secret_version = new SecretVersion(\"private-key-secret-version\", SecretVersionArgs.builder()\n .secret(private_key_secret.id())\n .secretData(StdFunctions.file(FileArgs.builder()\n .input(\"private-key.pem\")\n .build()).result())\n .build());\n\n var webhook_secret_secret = new Secret(\"webhook-secret-secret\", SecretArgs.builder()\n .secretId(\"github-token-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var webhook_secret_secret_version = new SecretVersion(\"webhook-secret-secret-version\", SecretVersionArgs.builder()\n .secret(webhook_secret_secret.id())\n .secretData(\"\u003cwebhook-secret-data\u003e\")\n .build());\n\n final var p4sa-secretAccessor = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/secretmanager.secretAccessor\")\n .members(\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\")\n .build())\n .build());\n\n var policy_pk = new SecretIamPolicy(\"policy-pk\", SecretIamPolicyArgs.builder()\n .secretId(private_key_secret.secretId())\n .policyData(p4sa_secretAccessor.policyData())\n .build());\n\n var policy_whs = new SecretIamPolicy(\"policy-whs\", SecretIamPolicyArgs.builder()\n .secretId(webhook_secret_secret.secretId())\n .policyData(p4sa_secretAccessor.policyData())\n .build());\n\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .name(\"my-terraform-ghe-connection\")\n .githubEnterpriseConfig(ConnectionGithubEnterpriseConfigArgs.builder()\n .hostUri(\"https://ghe.com\")\n .privateKeySecretVersion(private_key_secret_version.id())\n .webhookSecretSecretVersion(webhook_secret_secret_version.id())\n .appId(200)\n .appSlug(\"gcb-app\")\n .appInstallationId(300)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n policy_pk,\n policy_whs)\n .build());\n\n var my_repository = new Repository(\"my-repository\", RepositoryArgs.builder()\n .name(\"my-terraform-ghe-repo\")\n .location(\"us-central1\")\n .parentConnection(my_connection.name())\n .remoteUri(\"https://ghe.com/hashicorp/terraform-provider-google.git\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n private-key-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: ghe-pk-secret\n replication:\n auto: {}\n private-key-secret-version:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"private-key-secret\"].id}\n secretData:\n fn::invoke:\n Function: std:file\n Arguments:\n input: private-key.pem\n Return: result\n webhook-secret-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: github-token-secret\n replication:\n auto: {}\n webhook-secret-secret-version:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"webhook-secret-secret\"].id}\n secretData: \u003cwebhook-secret-data\u003e\n policy-pk:\n type: gcp:secretmanager:SecretIamPolicy\n properties:\n secretId: ${[\"private-key-secret\"].secretId}\n policyData: ${[\"p4sa-secretAccessor\"].policyData}\n policy-whs:\n type: gcp:secretmanager:SecretIamPolicy\n properties:\n secretId: ${[\"webhook-secret-secret\"].secretId}\n policyData: ${[\"p4sa-secretAccessor\"].policyData}\n my-connection:\n type: gcp:cloudbuildv2:Connection\n properties:\n location: us-central1\n name: my-terraform-ghe-connection\n githubEnterpriseConfig:\n hostUri: https://ghe.com\n privateKeySecretVersion: ${[\"private-key-secret-version\"].id}\n webhookSecretSecretVersion: ${[\"webhook-secret-secret-version\"].id}\n appId: 200\n appSlug: gcb-app\n appInstallationId: 300\n options:\n dependson:\n - ${[\"policy-pk\"]}\n - ${[\"policy-whs\"]}\n my-repository:\n type: gcp:cloudbuildv2:Repository\n properties:\n name: my-terraform-ghe-repo\n location: us-central1\n parentConnection: ${[\"my-connection\"].name}\n remoteUri: https://ghe.com/hashicorp/terraform-provider-google.git\nvariables:\n p4sa-secretAccessor:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/secretmanager.secretAccessor\n members:\n - serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuildv2 Repository Github Doc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst github_token_secret = new gcp.secretmanager.Secret(\"github-token-secret\", {\n secretId: \"github-token-secret\",\n replication: {\n auto: {},\n },\n});\nconst github_token_secret_version = new gcp.secretmanager.SecretVersion(\"github-token-secret-version\", {\n secret: github_token_secret.id,\n secretData: std.file({\n input: \"my-github-token.txt\",\n }).then(invoke =\u003e invoke.result),\n});\nconst p4sa-secretAccessor = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/secretmanager.secretAccessor\",\n members: [\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\"],\n }],\n});\nconst policy = new gcp.secretmanager.SecretIamPolicy(\"policy\", {\n secretId: github_token_secret.secretId,\n policyData: p4sa_secretAccessor.then(p4sa_secretAccessor =\u003e p4sa_secretAccessor.policyData),\n});\nconst my_connection = new gcp.cloudbuildv2.Connection(\"my-connection\", {\n location: \"us-central1\",\n name: \"my-connection\",\n githubConfig: {\n appInstallationId: 123123,\n authorizerCredential: {\n oauthTokenSecretVersion: github_token_secret_version.id,\n },\n },\n});\nconst my_repository = new gcp.cloudbuildv2.Repository(\"my-repository\", {\n location: \"us-central1\",\n name: \"my-repo\",\n parentConnection: my_connection.name,\n remoteUri: \"https://github.com/myuser/myrepo.git\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ngithub_token_secret = gcp.secretmanager.Secret(\"github-token-secret\",\n secret_id=\"github-token-secret\",\n replication={\n \"auto\": {},\n })\ngithub_token_secret_version = gcp.secretmanager.SecretVersion(\"github-token-secret-version\",\n secret=github_token_secret.id,\n secret_data=std.file(input=\"my-github-token.txt\").result)\np4sa_secret_accessor = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/secretmanager.secretAccessor\",\n \"members\": [\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\"],\n}])\npolicy = gcp.secretmanager.SecretIamPolicy(\"policy\",\n secret_id=github_token_secret.secret_id,\n policy_data=p4sa_secret_accessor.policy_data)\nmy_connection = gcp.cloudbuildv2.Connection(\"my-connection\",\n location=\"us-central1\",\n name=\"my-connection\",\n github_config={\n \"app_installation_id\": 123123,\n \"authorizer_credential\": {\n \"oauth_token_secret_version\": github_token_secret_version.id,\n },\n })\nmy_repository = gcp.cloudbuildv2.Repository(\"my-repository\",\n location=\"us-central1\",\n name=\"my-repo\",\n parent_connection=my_connection.name,\n remote_uri=\"https://github.com/myuser/myrepo.git\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var github_token_secret = new Gcp.SecretManager.Secret(\"github-token-secret\", new()\n {\n SecretId = \"github-token-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var github_token_secret_version = new Gcp.SecretManager.SecretVersion(\"github-token-secret-version\", new()\n {\n Secret = github_token_secret.Id,\n SecretData = Std.File.Invoke(new()\n {\n Input = \"my-github-token.txt\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var p4sa_secretAccessor = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/secretmanager.secretAccessor\",\n Members = new[]\n {\n \"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\",\n },\n },\n },\n });\n\n var policy = new Gcp.SecretManager.SecretIamPolicy(\"policy\", new()\n {\n SecretId = github_token_secret.SecretId,\n PolicyData = p4sa_secretAccessor.Apply(p4sa_secretAccessor =\u003e p4sa_secretAccessor.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData)),\n });\n\n var my_connection = new Gcp.CloudBuildV2.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n Name = \"my-connection\",\n GithubConfig = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigArgs\n {\n AppInstallationId = 123123,\n AuthorizerCredential = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigAuthorizerCredentialArgs\n {\n OauthTokenSecretVersion = github_token_secret_version.Id,\n },\n },\n });\n\n var my_repository = new Gcp.CloudBuildV2.Repository(\"my-repository\", new()\n {\n Location = \"us-central1\",\n Name = \"my-repo\",\n ParentConnection = my_connection.Name,\n RemoteUri = \"https://github.com/myuser/myrepo.git\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuildv2\"\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: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"my-github-token.txt\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"github-token-secret-version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: github_token_secret.ID(),\n\t\t\tSecretData: pulumi.String(invokeFile.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tp4sa_secretAccessor, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/secretmanager.secretAccessor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamPolicy(ctx, \"policy\", \u0026secretmanager.SecretIamPolicyArgs{\n\t\t\tSecretId: github_token_secret.SecretId,\n\t\t\tPolicyData: pulumi.String(p4sa_secretAccessor.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuildv2.NewConnection(ctx, \"my-connection\", \u0026cloudbuildv2.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-connection\"),\n\t\t\tGithubConfig: \u0026cloudbuildv2.ConnectionGithubConfigArgs{\n\t\t\t\tAppInstallationId: pulumi.Int(123123),\n\t\t\t\tAuthorizerCredential: \u0026cloudbuildv2.ConnectionGithubConfigAuthorizerCredentialArgs{\n\t\t\t\t\tOauthTokenSecretVersion: github_token_secret_version.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuildv2.NewRepository(ctx, \"my-repository\", \u0026cloudbuildv2.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-repo\"),\n\t\t\tParentConnection: my_connection.Name,\n\t\t\tRemoteUri: pulumi.String(\"https://github.com/myuser/myrepo.git\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicy;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicyArgs;\nimport com.pulumi.gcp.cloudbuildv2.Connection;\nimport com.pulumi.gcp.cloudbuildv2.ConnectionArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubConfigArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubConfigAuthorizerCredentialArgs;\nimport com.pulumi.gcp.cloudbuildv2.Repository;\nimport com.pulumi.gcp.cloudbuildv2.RepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var github_token_secret = new Secret(\"github-token-secret\", SecretArgs.builder()\n .secretId(\"github-token-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var github_token_secret_version = new SecretVersion(\"github-token-secret-version\", SecretVersionArgs.builder()\n .secret(github_token_secret.id())\n .secretData(StdFunctions.file(FileArgs.builder()\n .input(\"my-github-token.txt\")\n .build()).result())\n .build());\n\n final var p4sa-secretAccessor = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/secretmanager.secretAccessor\")\n .members(\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\")\n .build())\n .build());\n\n var policy = new SecretIamPolicy(\"policy\", SecretIamPolicyArgs.builder()\n .secretId(github_token_secret.secretId())\n .policyData(p4sa_secretAccessor.policyData())\n .build());\n\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .name(\"my-connection\")\n .githubConfig(ConnectionGithubConfigArgs.builder()\n .appInstallationId(123123)\n .authorizerCredential(ConnectionGithubConfigAuthorizerCredentialArgs.builder()\n .oauthTokenSecretVersion(github_token_secret_version.id())\n .build())\n .build())\n .build());\n\n var my_repository = new Repository(\"my-repository\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .name(\"my-repo\")\n .parentConnection(my_connection.name())\n .remoteUri(\"https://github.com/myuser/myrepo.git\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n github-token-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: github-token-secret\n replication:\n auto: {}\n github-token-secret-version:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"github-token-secret\"].id}\n secretData:\n fn::invoke:\n Function: std:file\n Arguments:\n input: my-github-token.txt\n Return: result\n policy:\n type: gcp:secretmanager:SecretIamPolicy\n properties:\n secretId: ${[\"github-token-secret\"].secretId}\n policyData: ${[\"p4sa-secretAccessor\"].policyData}\n my-connection:\n type: gcp:cloudbuildv2:Connection\n properties:\n location: us-central1\n name: my-connection\n githubConfig:\n appInstallationId: 123123\n authorizerCredential:\n oauthTokenSecretVersion: ${[\"github-token-secret-version\"].id}\n my-repository:\n type: gcp:cloudbuildv2:Repository\n properties:\n location: us-central1\n name: my-repo\n parentConnection: ${[\"my-connection\"].name}\n remoteUri: https://github.com/myuser/myrepo.git\nvariables:\n p4sa-secretAccessor:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/secretmanager.secretAccessor\n members:\n - serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRepository can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/connections/{{parent_connection}}/repositories/{{name}}`\n\n* `{{project}}/{{location}}/{{parent_connection}}/{{name}}`\n\n* `{{location}}/{{parent_connection}}/{{name}}`\n\nWhen using the `pulumi import` command, Repository can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudbuildv2/repository:Repository default projects/{{project}}/locations/{{location}}/connections/{{parent_connection}}/repositories/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuildv2/repository:Repository default {{project}}/{{location}}/{{parent_connection}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuildv2/repository:Repository default {{location}}/{{parent_connection}}/{{name}}\n```\n\n", + "description": "A repository associated to a parent connection.\n\n\nTo get more information about Repository, see:\n\n* [API documentation](https://cloud.google.com/build/docs/api/reference/rest)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/build/docs)\n\n## Example Usage\n\n### Cloudbuildv2 Repository Ghe Doc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst private_key_secret = new gcp.secretmanager.Secret(\"private-key-secret\", {\n secretId: \"ghe-pk-secret\",\n replication: {\n auto: {},\n },\n});\nconst private_key_secret_version = new gcp.secretmanager.SecretVersion(\"private-key-secret-version\", {\n secret: private_key_secret.id,\n secretData: std.file({\n input: \"private-key.pem\",\n }).then(invoke =\u003e invoke.result),\n});\nconst webhook_secret_secret = new gcp.secretmanager.Secret(\"webhook-secret-secret\", {\n secretId: \"github-token-secret\",\n replication: {\n auto: {},\n },\n});\nconst webhook_secret_secret_version = new gcp.secretmanager.SecretVersion(\"webhook-secret-secret-version\", {\n secret: webhook_secret_secret.id,\n secretData: \"\u003cwebhook-secret-data\u003e\",\n});\nconst p4sa-secretAccessor = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/secretmanager.secretAccessor\",\n members: [\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\"],\n }],\n});\nconst policy_pk = new gcp.secretmanager.SecretIamPolicy(\"policy-pk\", {\n secretId: private_key_secret.secretId,\n policyData: p4sa_secretAccessor.then(p4sa_secretAccessor =\u003e p4sa_secretAccessor.policyData),\n});\nconst policy_whs = new gcp.secretmanager.SecretIamPolicy(\"policy-whs\", {\n secretId: webhook_secret_secret.secretId,\n policyData: p4sa_secretAccessor.then(p4sa_secretAccessor =\u003e p4sa_secretAccessor.policyData),\n});\nconst my_connection = new gcp.cloudbuildv2.Connection(\"my-connection\", {\n location: \"us-central1\",\n name: \"my-terraform-ghe-connection\",\n githubEnterpriseConfig: {\n hostUri: \"https://ghe.com\",\n privateKeySecretVersion: private_key_secret_version.id,\n webhookSecretSecretVersion: webhook_secret_secret_version.id,\n appId: 200,\n appSlug: \"gcb-app\",\n appInstallationId: 300,\n },\n}, {\n dependsOn: [\n policy_pk,\n policy_whs,\n ],\n});\nconst my_repository = new gcp.cloudbuildv2.Repository(\"my-repository\", {\n name: \"my-terraform-ghe-repo\",\n location: \"us-central1\",\n parentConnection: my_connection.name,\n remoteUri: \"https://ghe.com/hashicorp/terraform-provider-google.git\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nprivate_key_secret = gcp.secretmanager.Secret(\"private-key-secret\",\n secret_id=\"ghe-pk-secret\",\n replication={\n \"auto\": {},\n })\nprivate_key_secret_version = gcp.secretmanager.SecretVersion(\"private-key-secret-version\",\n secret=private_key_secret.id,\n secret_data=std.file(input=\"private-key.pem\").result)\nwebhook_secret_secret = gcp.secretmanager.Secret(\"webhook-secret-secret\",\n secret_id=\"github-token-secret\",\n replication={\n \"auto\": {},\n })\nwebhook_secret_secret_version = gcp.secretmanager.SecretVersion(\"webhook-secret-secret-version\",\n secret=webhook_secret_secret.id,\n secret_data=\"\u003cwebhook-secret-data\u003e\")\np4sa_secret_accessor = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/secretmanager.secretAccessor\",\n \"members\": [\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\"],\n}])\npolicy_pk = gcp.secretmanager.SecretIamPolicy(\"policy-pk\",\n secret_id=private_key_secret.secret_id,\n policy_data=p4sa_secret_accessor.policy_data)\npolicy_whs = gcp.secretmanager.SecretIamPolicy(\"policy-whs\",\n secret_id=webhook_secret_secret.secret_id,\n policy_data=p4sa_secret_accessor.policy_data)\nmy_connection = gcp.cloudbuildv2.Connection(\"my-connection\",\n location=\"us-central1\",\n name=\"my-terraform-ghe-connection\",\n github_enterprise_config={\n \"host_uri\": \"https://ghe.com\",\n \"private_key_secret_version\": private_key_secret_version.id,\n \"webhook_secret_secret_version\": webhook_secret_secret_version.id,\n \"app_id\": 200,\n \"app_slug\": \"gcb-app\",\n \"app_installation_id\": 300,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n policy_pk,\n policy_whs,\n ]))\nmy_repository = gcp.cloudbuildv2.Repository(\"my-repository\",\n name=\"my-terraform-ghe-repo\",\n location=\"us-central1\",\n parent_connection=my_connection.name,\n remote_uri=\"https://ghe.com/hashicorp/terraform-provider-google.git\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var private_key_secret = new Gcp.SecretManager.Secret(\"private-key-secret\", new()\n {\n SecretId = \"ghe-pk-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var private_key_secret_version = new Gcp.SecretManager.SecretVersion(\"private-key-secret-version\", new()\n {\n Secret = private_key_secret.Id,\n SecretData = Std.File.Invoke(new()\n {\n Input = \"private-key.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var webhook_secret_secret = new Gcp.SecretManager.Secret(\"webhook-secret-secret\", new()\n {\n SecretId = \"github-token-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var webhook_secret_secret_version = new Gcp.SecretManager.SecretVersion(\"webhook-secret-secret-version\", new()\n {\n Secret = webhook_secret_secret.Id,\n SecretData = \"\u003cwebhook-secret-data\u003e\",\n });\n\n var p4sa_secretAccessor = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/secretmanager.secretAccessor\",\n Members = new[]\n {\n \"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\",\n },\n },\n },\n });\n\n var policy_pk = new Gcp.SecretManager.SecretIamPolicy(\"policy-pk\", new()\n {\n SecretId = private_key_secret.SecretId,\n PolicyData = p4sa_secretAccessor.Apply(p4sa_secretAccessor =\u003e p4sa_secretAccessor.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData)),\n });\n\n var policy_whs = new Gcp.SecretManager.SecretIamPolicy(\"policy-whs\", new()\n {\n SecretId = webhook_secret_secret.SecretId,\n PolicyData = p4sa_secretAccessor.Apply(p4sa_secretAccessor =\u003e p4sa_secretAccessor.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData)),\n });\n\n var my_connection = new Gcp.CloudBuildV2.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n Name = \"my-terraform-ghe-connection\",\n GithubEnterpriseConfig = new Gcp.CloudBuildV2.Inputs.ConnectionGithubEnterpriseConfigArgs\n {\n HostUri = \"https://ghe.com\",\n PrivateKeySecretVersion = private_key_secret_version.Id,\n WebhookSecretSecretVersion = webhook_secret_secret_version.Id,\n AppId = 200,\n AppSlug = \"gcb-app\",\n AppInstallationId = 300,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n policy_pk,\n policy_whs,\n },\n });\n\n var my_repository = new Gcp.CloudBuildV2.Repository(\"my-repository\", new()\n {\n Name = \"my-terraform-ghe-repo\",\n Location = \"us-central1\",\n ParentConnection = my_connection.Name,\n RemoteUri = \"https://ghe.com/hashicorp/terraform-provider-google.git\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuildv2\"\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(\"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\t_, err = secretmanager.NewSecretVersion(ctx, \"webhook-secret-secret-version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: webhook_secret_secret.ID(),\n\t\t\tSecretData: pulumi.String(\"\u003cwebhook-secret-data\u003e\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tp4sa_secretAccessor, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/secretmanager.secretAccessor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamPolicy(ctx, \"policy-pk\", \u0026secretmanager.SecretIamPolicyArgs{\n\t\t\tSecretId: private_key_secret.SecretId,\n\t\t\tPolicyData: pulumi.String(p4sa_secretAccessor.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamPolicy(ctx, \"policy-whs\", \u0026secretmanager.SecretIamPolicyArgs{\n\t\t\tSecretId: webhook_secret_secret.SecretId,\n\t\t\tPolicyData: pulumi.String(p4sa_secretAccessor.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuildv2.NewConnection(ctx, \"my-connection\", \u0026cloudbuildv2.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-terraform-ghe-connection\"),\n\t\t\tGithubEnterpriseConfig: \u0026cloudbuildv2.ConnectionGithubEnterpriseConfigArgs{\n\t\t\t\tHostUri: pulumi.String(\"https://ghe.com\"),\n\t\t\t\tPrivateKeySecretVersion: private_key_secret_version.ID(),\n\t\t\t\tWebhookSecretSecretVersion: webhook_secret_secret_version.ID(),\n\t\t\t\tAppId: pulumi.Int(200),\n\t\t\t\tAppSlug: pulumi.String(\"gcb-app\"),\n\t\t\t\tAppInstallationId: pulumi.Int(300),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tpolicy_pk,\n\t\t\tpolicy_whs,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuildv2.NewRepository(ctx, \"my-repository\", \u0026cloudbuildv2.RepositoryArgs{\n\t\t\tName: pulumi.String(\"my-terraform-ghe-repo\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tParentConnection: my_connection.Name,\n\t\t\tRemoteUri: pulumi.String(\"https://ghe.com/hashicorp/terraform-provider-google.git\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicy;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicyArgs;\nimport com.pulumi.gcp.cloudbuildv2.Connection;\nimport com.pulumi.gcp.cloudbuildv2.ConnectionArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubEnterpriseConfigArgs;\nimport com.pulumi.gcp.cloudbuildv2.Repository;\nimport com.pulumi.gcp.cloudbuildv2.RepositoryArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var private_key_secret = new Secret(\"private-key-secret\", SecretArgs.builder()\n .secretId(\"ghe-pk-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var private_key_secret_version = new SecretVersion(\"private-key-secret-version\", SecretVersionArgs.builder()\n .secret(private_key_secret.id())\n .secretData(StdFunctions.file(FileArgs.builder()\n .input(\"private-key.pem\")\n .build()).result())\n .build());\n\n var webhook_secret_secret = new Secret(\"webhook-secret-secret\", SecretArgs.builder()\n .secretId(\"github-token-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var webhook_secret_secret_version = new SecretVersion(\"webhook-secret-secret-version\", SecretVersionArgs.builder()\n .secret(webhook_secret_secret.id())\n .secretData(\"\u003cwebhook-secret-data\u003e\")\n .build());\n\n final var p4sa-secretAccessor = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/secretmanager.secretAccessor\")\n .members(\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\")\n .build())\n .build());\n\n var policy_pk = new SecretIamPolicy(\"policy-pk\", SecretIamPolicyArgs.builder()\n .secretId(private_key_secret.secretId())\n .policyData(p4sa_secretAccessor.policyData())\n .build());\n\n var policy_whs = new SecretIamPolicy(\"policy-whs\", SecretIamPolicyArgs.builder()\n .secretId(webhook_secret_secret.secretId())\n .policyData(p4sa_secretAccessor.policyData())\n .build());\n\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .name(\"my-terraform-ghe-connection\")\n .githubEnterpriseConfig(ConnectionGithubEnterpriseConfigArgs.builder()\n .hostUri(\"https://ghe.com\")\n .privateKeySecretVersion(private_key_secret_version.id())\n .webhookSecretSecretVersion(webhook_secret_secret_version.id())\n .appId(200)\n .appSlug(\"gcb-app\")\n .appInstallationId(300)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n policy_pk,\n policy_whs)\n .build());\n\n var my_repository = new Repository(\"my-repository\", RepositoryArgs.builder()\n .name(\"my-terraform-ghe-repo\")\n .location(\"us-central1\")\n .parentConnection(my_connection.name())\n .remoteUri(\"https://ghe.com/hashicorp/terraform-provider-google.git\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n private-key-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: ghe-pk-secret\n replication:\n auto: {}\n private-key-secret-version:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"private-key-secret\"].id}\n secretData:\n fn::invoke:\n Function: std:file\n Arguments:\n input: private-key.pem\n Return: result\n webhook-secret-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: github-token-secret\n replication:\n auto: {}\n webhook-secret-secret-version:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"webhook-secret-secret\"].id}\n secretData: \u003cwebhook-secret-data\u003e\n policy-pk:\n type: gcp:secretmanager:SecretIamPolicy\n properties:\n secretId: ${[\"private-key-secret\"].secretId}\n policyData: ${[\"p4sa-secretAccessor\"].policyData}\n policy-whs:\n type: gcp:secretmanager:SecretIamPolicy\n properties:\n secretId: ${[\"webhook-secret-secret\"].secretId}\n policyData: ${[\"p4sa-secretAccessor\"].policyData}\n my-connection:\n type: gcp:cloudbuildv2:Connection\n properties:\n location: us-central1\n name: my-terraform-ghe-connection\n githubEnterpriseConfig:\n hostUri: https://ghe.com\n privateKeySecretVersion: ${[\"private-key-secret-version\"].id}\n webhookSecretSecretVersion: ${[\"webhook-secret-secret-version\"].id}\n appId: 200\n appSlug: gcb-app\n appInstallationId: 300\n options:\n dependson:\n - ${[\"policy-pk\"]}\n - ${[\"policy-whs\"]}\n my-repository:\n type: gcp:cloudbuildv2:Repository\n properties:\n name: my-terraform-ghe-repo\n location: us-central1\n parentConnection: ${[\"my-connection\"].name}\n remoteUri: https://ghe.com/hashicorp/terraform-provider-google.git\nvariables:\n p4sa-secretAccessor:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/secretmanager.secretAccessor\n members:\n - serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudbuildv2 Repository Github Doc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst github_token_secret = new gcp.secretmanager.Secret(\"github-token-secret\", {\n secretId: \"github-token-secret\",\n replication: {\n auto: {},\n },\n});\nconst github_token_secret_version = new gcp.secretmanager.SecretVersion(\"github-token-secret-version\", {\n secret: github_token_secret.id,\n secretData: std.file({\n input: \"my-github-token.txt\",\n }).then(invoke =\u003e invoke.result),\n});\nconst p4sa-secretAccessor = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/secretmanager.secretAccessor\",\n members: [\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\"],\n }],\n});\nconst policy = new gcp.secretmanager.SecretIamPolicy(\"policy\", {\n secretId: github_token_secret.secretId,\n policyData: p4sa_secretAccessor.then(p4sa_secretAccessor =\u003e p4sa_secretAccessor.policyData),\n});\nconst my_connection = new gcp.cloudbuildv2.Connection(\"my-connection\", {\n location: \"us-central1\",\n name: \"my-connection\",\n githubConfig: {\n appInstallationId: 123123,\n authorizerCredential: {\n oauthTokenSecretVersion: github_token_secret_version.id,\n },\n },\n});\nconst my_repository = new gcp.cloudbuildv2.Repository(\"my-repository\", {\n location: \"us-central1\",\n name: \"my-repo\",\n parentConnection: my_connection.name,\n remoteUri: \"https://github.com/myuser/myrepo.git\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ngithub_token_secret = gcp.secretmanager.Secret(\"github-token-secret\",\n secret_id=\"github-token-secret\",\n replication={\n \"auto\": {},\n })\ngithub_token_secret_version = gcp.secretmanager.SecretVersion(\"github-token-secret-version\",\n secret=github_token_secret.id,\n secret_data=std.file(input=\"my-github-token.txt\").result)\np4sa_secret_accessor = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/secretmanager.secretAccessor\",\n \"members\": [\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\"],\n}])\npolicy = gcp.secretmanager.SecretIamPolicy(\"policy\",\n secret_id=github_token_secret.secret_id,\n policy_data=p4sa_secret_accessor.policy_data)\nmy_connection = gcp.cloudbuildv2.Connection(\"my-connection\",\n location=\"us-central1\",\n name=\"my-connection\",\n github_config={\n \"app_installation_id\": 123123,\n \"authorizer_credential\": {\n \"oauth_token_secret_version\": github_token_secret_version.id,\n },\n })\nmy_repository = gcp.cloudbuildv2.Repository(\"my-repository\",\n location=\"us-central1\",\n name=\"my-repo\",\n parent_connection=my_connection.name,\n remote_uri=\"https://github.com/myuser/myrepo.git\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var github_token_secret = new Gcp.SecretManager.Secret(\"github-token-secret\", new()\n {\n SecretId = \"github-token-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var github_token_secret_version = new Gcp.SecretManager.SecretVersion(\"github-token-secret-version\", new()\n {\n Secret = github_token_secret.Id,\n SecretData = Std.File.Invoke(new()\n {\n Input = \"my-github-token.txt\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var p4sa_secretAccessor = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/secretmanager.secretAccessor\",\n Members = new[]\n {\n \"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\",\n },\n },\n },\n });\n\n var policy = new Gcp.SecretManager.SecretIamPolicy(\"policy\", new()\n {\n SecretId = github_token_secret.SecretId,\n PolicyData = p4sa_secretAccessor.Apply(p4sa_secretAccessor =\u003e p4sa_secretAccessor.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData)),\n });\n\n var my_connection = new Gcp.CloudBuildV2.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n Name = \"my-connection\",\n GithubConfig = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigArgs\n {\n AppInstallationId = 123123,\n AuthorizerCredential = new Gcp.CloudBuildV2.Inputs.ConnectionGithubConfigAuthorizerCredentialArgs\n {\n OauthTokenSecretVersion = github_token_secret_version.Id,\n },\n },\n });\n\n var my_repository = new Gcp.CloudBuildV2.Repository(\"my-repository\", new()\n {\n Location = \"us-central1\",\n Name = \"my-repo\",\n ParentConnection = my_connection.Name,\n RemoteUri = \"https://github.com/myuser/myrepo.git\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuildv2\"\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-cloudbuild.iam.gserviceaccount.com\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamPolicy(ctx, \"policy\", \u0026secretmanager.SecretIamPolicyArgs{\n\t\t\tSecretId: github_token_secret.SecretId,\n\t\t\tPolicyData: pulumi.String(p4sa_secretAccessor.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuildv2.NewConnection(ctx, \"my-connection\", \u0026cloudbuildv2.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-connection\"),\n\t\t\tGithubConfig: \u0026cloudbuildv2.ConnectionGithubConfigArgs{\n\t\t\t\tAppInstallationId: pulumi.Int(123123),\n\t\t\t\tAuthorizerCredential: \u0026cloudbuildv2.ConnectionGithubConfigAuthorizerCredentialArgs{\n\t\t\t\t\tOauthTokenSecretVersion: github_token_secret_version.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudbuildv2.NewRepository(ctx, \"my-repository\", \u0026cloudbuildv2.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-repo\"),\n\t\t\tParentConnection: my_connection.Name,\n\t\t\tRemoteUri: pulumi.String(\"https://github.com/myuser/myrepo.git\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicy;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicyArgs;\nimport com.pulumi.gcp.cloudbuildv2.Connection;\nimport com.pulumi.gcp.cloudbuildv2.ConnectionArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubConfigArgs;\nimport com.pulumi.gcp.cloudbuildv2.inputs.ConnectionGithubConfigAuthorizerCredentialArgs;\nimport com.pulumi.gcp.cloudbuildv2.Repository;\nimport com.pulumi.gcp.cloudbuildv2.RepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var github_token_secret = new Secret(\"github-token-secret\", SecretArgs.builder()\n .secretId(\"github-token-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var github_token_secret_version = new SecretVersion(\"github-token-secret-version\", SecretVersionArgs.builder()\n .secret(github_token_secret.id())\n .secretData(StdFunctions.file(FileArgs.builder()\n .input(\"my-github-token.txt\")\n .build()).result())\n .build());\n\n final var p4sa-secretAccessor = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/secretmanager.secretAccessor\")\n .members(\"serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\")\n .build())\n .build());\n\n var policy = new SecretIamPolicy(\"policy\", SecretIamPolicyArgs.builder()\n .secretId(github_token_secret.secretId())\n .policyData(p4sa_secretAccessor.policyData())\n .build());\n\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .name(\"my-connection\")\n .githubConfig(ConnectionGithubConfigArgs.builder()\n .appInstallationId(123123)\n .authorizerCredential(ConnectionGithubConfigAuthorizerCredentialArgs.builder()\n .oauthTokenSecretVersion(github_token_secret_version.id())\n .build())\n .build())\n .build());\n\n var my_repository = new Repository(\"my-repository\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .name(\"my-repo\")\n .parentConnection(my_connection.name())\n .remoteUri(\"https://github.com/myuser/myrepo.git\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n github-token-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: github-token-secret\n replication:\n auto: {}\n github-token-secret-version:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"github-token-secret\"].id}\n secretData:\n fn::invoke:\n Function: std:file\n Arguments:\n input: my-github-token.txt\n Return: result\n policy:\n type: gcp:secretmanager:SecretIamPolicy\n properties:\n secretId: ${[\"github-token-secret\"].secretId}\n policyData: ${[\"p4sa-secretAccessor\"].policyData}\n my-connection:\n type: gcp:cloudbuildv2:Connection\n properties:\n location: us-central1\n name: my-connection\n githubConfig:\n appInstallationId: 123123\n authorizerCredential:\n oauthTokenSecretVersion: ${[\"github-token-secret-version\"].id}\n my-repository:\n type: gcp:cloudbuildv2:Repository\n properties:\n location: us-central1\n name: my-repo\n parentConnection: ${[\"my-connection\"].name}\n remoteUri: https://github.com/myuser/myrepo.git\nvariables:\n p4sa-secretAccessor:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/secretmanager.secretAccessor\n members:\n - serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRepository can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/connections/{{parent_connection}}/repositories/{{name}}`\n\n* `{{project}}/{{location}}/{{parent_connection}}/{{name}}`\n\n* `{{location}}/{{parent_connection}}/{{name}}`\n\nWhen using the `pulumi import` command, Repository can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudbuildv2/repository:Repository default projects/{{project}}/locations/{{location}}/connections/{{parent_connection}}/repositories/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuildv2/repository:Repository default {{project}}/{{location}}/{{parent_connection}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudbuildv2/repository:Repository default {{location}}/{{parent_connection}}/{{name}}\n```\n\n", "properties": { "annotations": { "type": "object", @@ -139568,7 +139568,7 @@ } }, "gcp:clouddeploy/deliveryPipeline:DeliveryPipeline": { - "description": "The Cloud Deploy `DeliveryPipeline` resource\n\n## Example Usage\n\n### Canary_delivery_pipeline\nCreates a basic Cloud Deploy delivery pipeline\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.clouddeploy.DeliveryPipeline(\"primary\", {\n location: \"us-west1\",\n name: \"pipeline\",\n description: \"basic description\",\n project: \"my-project-name\",\n serialPipeline: {\n stages: [\n {\n deployParameters: [{\n values: {\n deployParameterKey: \"deployParameterValue\",\n },\n matchTargetLabels: {},\n }],\n profiles: [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n targetId: \"example-target-one\",\n },\n {\n profiles: [],\n targetId: \"example-target-two\",\n },\n ],\n },\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.clouddeploy.DeliveryPipeline(\"primary\",\n location=\"us-west1\",\n name=\"pipeline\",\n description=\"basic description\",\n project=\"my-project-name\",\n serial_pipeline={\n \"stages\": [\n {\n \"deploy_parameters\": [{\n \"values\": {\n \"deploy_parameter_key\": \"deployParameterValue\",\n },\n \"match_target_labels\": {},\n }],\n \"profiles\": [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n \"target_id\": \"example-target-one\",\n },\n {\n \"profiles\": [],\n \"target_id\": \"example-target-two\",\n },\n ],\n },\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-2\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.CloudDeploy.DeliveryPipeline(\"primary\", new()\n {\n Location = \"us-west1\",\n Name = \"pipeline\",\n Description = \"basic description\",\n Project = \"my-project-name\",\n SerialPipeline = new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineArgs\n {\n Stages = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n DeployParameters = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageDeployParameterArgs\n {\n Values = \n {\n { \"deployParameterKey\", \"deployParameterValue\" },\n },\n MatchTargetLabels = null,\n },\n },\n Profiles = new[]\n {\n \"example-profile-one\",\n \"example-profile-two\",\n },\n TargetId = \"example-target-one\",\n },\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n Profiles = new() { },\n TargetId = \"example-target-two\",\n },\n },\n },\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/clouddeploy\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := clouddeploy.NewDeliveryPipeline(ctx, \"primary\", \u0026clouddeploy.DeliveryPipelineArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"pipeline\"),\n\t\t\tDescription: pulumi.String(\"basic description\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSerialPipeline: \u0026clouddeploy.DeliveryPipelineSerialPipelineArgs{\n\t\t\t\tStages: clouddeploy.DeliveryPipelineSerialPipelineStageArray{\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tDeployParameters: clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArray{\n\t\t\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArgs{\n\t\t\t\t\t\t\t\tValues: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\t\"deployParameterKey\": pulumi.String(\"deployParameterValue\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tMatchTargetLabels: nil,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tProfiles: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-one\"),\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-two\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-one\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tProfiles: pulumi.StringArray{},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-two\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-2\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.clouddeploy.DeliveryPipeline;\nimport com.pulumi.gcp.clouddeploy.DeliveryPipelineArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.DeliveryPipelineSerialPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new DeliveryPipeline(\"primary\", DeliveryPipelineArgs.builder()\n .location(\"us-west1\")\n .name(\"pipeline\")\n .description(\"basic description\")\n .project(\"my-project-name\")\n .serialPipeline(DeliveryPipelineSerialPipelineArgs.builder()\n .stages( \n DeliveryPipelineSerialPipelineStageArgs.builder()\n .deployParameters(DeliveryPipelineSerialPipelineStageDeployParameterArgs.builder()\n .values(Map.of(\"deployParameterKey\", \"deployParameterValue\"))\n .matchTargetLabels()\n .build())\n .profiles( \n \"example-profile-one\",\n \"example-profile-two\")\n .targetId(\"example-target-one\")\n .build(),\n DeliveryPipelineSerialPipelineStageArgs.builder()\n .profiles()\n .targetId(\"example-target-two\")\n .build())\n .build())\n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:clouddeploy:DeliveryPipeline\n properties:\n location: us-west1\n name: pipeline\n description: basic description\n project: my-project-name\n serialPipeline:\n stages:\n - deployParameters:\n - values:\n deployParameterKey: deployParameterValue\n matchTargetLabels: {}\n profiles:\n - example-profile-one\n - example-profile-two\n targetId: example-target-one\n - profiles: []\n targetId: example-target-two\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Canary_service_networking_delivery_pipeline\nCreates a basic Cloud Deploy delivery pipeline\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.clouddeploy.DeliveryPipeline(\"primary\", {\n location: \"us-west1\",\n name: \"pipeline\",\n description: \"basic description\",\n project: \"my-project-name\",\n serialPipeline: {\n stages: [\n {\n deployParameters: [{\n values: {\n deployParameterKey: \"deployParameterValue\",\n },\n matchTargetLabels: {},\n }],\n profiles: [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n targetId: \"example-target-one\",\n },\n {\n profiles: [],\n targetId: \"example-target-two\",\n },\n ],\n },\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.clouddeploy.DeliveryPipeline(\"primary\",\n location=\"us-west1\",\n name=\"pipeline\",\n description=\"basic description\",\n project=\"my-project-name\",\n serial_pipeline={\n \"stages\": [\n {\n \"deploy_parameters\": [{\n \"values\": {\n \"deploy_parameter_key\": \"deployParameterValue\",\n },\n \"match_target_labels\": {},\n }],\n \"profiles\": [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n \"target_id\": \"example-target-one\",\n },\n {\n \"profiles\": [],\n \"target_id\": \"example-target-two\",\n },\n ],\n },\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-2\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.CloudDeploy.DeliveryPipeline(\"primary\", new()\n {\n Location = \"us-west1\",\n Name = \"pipeline\",\n Description = \"basic description\",\n Project = \"my-project-name\",\n SerialPipeline = new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineArgs\n {\n Stages = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n DeployParameters = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageDeployParameterArgs\n {\n Values = \n {\n { \"deployParameterKey\", \"deployParameterValue\" },\n },\n MatchTargetLabels = null,\n },\n },\n Profiles = new[]\n {\n \"example-profile-one\",\n \"example-profile-two\",\n },\n TargetId = \"example-target-one\",\n },\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n Profiles = new() { },\n TargetId = \"example-target-two\",\n },\n },\n },\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/clouddeploy\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := clouddeploy.NewDeliveryPipeline(ctx, \"primary\", \u0026clouddeploy.DeliveryPipelineArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"pipeline\"),\n\t\t\tDescription: pulumi.String(\"basic description\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSerialPipeline: \u0026clouddeploy.DeliveryPipelineSerialPipelineArgs{\n\t\t\t\tStages: clouddeploy.DeliveryPipelineSerialPipelineStageArray{\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tDeployParameters: clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArray{\n\t\t\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArgs{\n\t\t\t\t\t\t\t\tValues: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\t\"deployParameterKey\": pulumi.String(\"deployParameterValue\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tMatchTargetLabels: nil,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tProfiles: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-one\"),\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-two\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-one\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tProfiles: pulumi.StringArray{},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-two\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-2\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.clouddeploy.DeliveryPipeline;\nimport com.pulumi.gcp.clouddeploy.DeliveryPipelineArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.DeliveryPipelineSerialPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new DeliveryPipeline(\"primary\", DeliveryPipelineArgs.builder()\n .location(\"us-west1\")\n .name(\"pipeline\")\n .description(\"basic description\")\n .project(\"my-project-name\")\n .serialPipeline(DeliveryPipelineSerialPipelineArgs.builder()\n .stages( \n DeliveryPipelineSerialPipelineStageArgs.builder()\n .deployParameters(DeliveryPipelineSerialPipelineStageDeployParameterArgs.builder()\n .values(Map.of(\"deployParameterKey\", \"deployParameterValue\"))\n .matchTargetLabels()\n .build())\n .profiles( \n \"example-profile-one\",\n \"example-profile-two\")\n .targetId(\"example-target-one\")\n .build(),\n DeliveryPipelineSerialPipelineStageArgs.builder()\n .profiles()\n .targetId(\"example-target-two\")\n .build())\n .build())\n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:clouddeploy:DeliveryPipeline\n properties:\n location: us-west1\n name: pipeline\n description: basic description\n project: my-project-name\n serialPipeline:\n stages:\n - deployParameters:\n - values:\n deployParameterKey: deployParameterValue\n matchTargetLabels: {}\n profiles:\n - example-profile-one\n - example-profile-two\n targetId: example-target-one\n - profiles: []\n targetId: example-target-two\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Canaryrun_delivery_pipeline\nCreates a basic Cloud Deploy delivery pipeline\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.clouddeploy.DeliveryPipeline(\"primary\", {\n location: \"us-west1\",\n name: \"pipeline\",\n description: \"basic description\",\n project: \"my-project-name\",\n serialPipeline: {\n stages: [\n {\n deployParameters: [{\n values: {\n deployParameterKey: \"deployParameterValue\",\n },\n matchTargetLabels: {},\n }],\n profiles: [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n targetId: \"example-target-one\",\n },\n {\n profiles: [],\n targetId: \"example-target-two\",\n },\n ],\n },\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.clouddeploy.DeliveryPipeline(\"primary\",\n location=\"us-west1\",\n name=\"pipeline\",\n description=\"basic description\",\n project=\"my-project-name\",\n serial_pipeline={\n \"stages\": [\n {\n \"deploy_parameters\": [{\n \"values\": {\n \"deploy_parameter_key\": \"deployParameterValue\",\n },\n \"match_target_labels\": {},\n }],\n \"profiles\": [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n \"target_id\": \"example-target-one\",\n },\n {\n \"profiles\": [],\n \"target_id\": \"example-target-two\",\n },\n ],\n },\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-2\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.CloudDeploy.DeliveryPipeline(\"primary\", new()\n {\n Location = \"us-west1\",\n Name = \"pipeline\",\n Description = \"basic description\",\n Project = \"my-project-name\",\n SerialPipeline = new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineArgs\n {\n Stages = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n DeployParameters = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageDeployParameterArgs\n {\n Values = \n {\n { \"deployParameterKey\", \"deployParameterValue\" },\n },\n MatchTargetLabels = null,\n },\n },\n Profiles = new[]\n {\n \"example-profile-one\",\n \"example-profile-two\",\n },\n TargetId = \"example-target-one\",\n },\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n Profiles = new() { },\n TargetId = \"example-target-two\",\n },\n },\n },\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/clouddeploy\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := clouddeploy.NewDeliveryPipeline(ctx, \"primary\", \u0026clouddeploy.DeliveryPipelineArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"pipeline\"),\n\t\t\tDescription: pulumi.String(\"basic description\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSerialPipeline: \u0026clouddeploy.DeliveryPipelineSerialPipelineArgs{\n\t\t\t\tStages: clouddeploy.DeliveryPipelineSerialPipelineStageArray{\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tDeployParameters: clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArray{\n\t\t\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArgs{\n\t\t\t\t\t\t\t\tValues: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\t\"deployParameterKey\": pulumi.String(\"deployParameterValue\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tMatchTargetLabels: nil,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tProfiles: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-one\"),\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-two\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-one\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tProfiles: pulumi.StringArray{},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-two\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-2\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.clouddeploy.DeliveryPipeline;\nimport com.pulumi.gcp.clouddeploy.DeliveryPipelineArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.DeliveryPipelineSerialPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new DeliveryPipeline(\"primary\", DeliveryPipelineArgs.builder()\n .location(\"us-west1\")\n .name(\"pipeline\")\n .description(\"basic description\")\n .project(\"my-project-name\")\n .serialPipeline(DeliveryPipelineSerialPipelineArgs.builder()\n .stages( \n DeliveryPipelineSerialPipelineStageArgs.builder()\n .deployParameters(DeliveryPipelineSerialPipelineStageDeployParameterArgs.builder()\n .values(Map.of(\"deployParameterKey\", \"deployParameterValue\"))\n .matchTargetLabels()\n .build())\n .profiles( \n \"example-profile-one\",\n \"example-profile-two\")\n .targetId(\"example-target-one\")\n .build(),\n DeliveryPipelineSerialPipelineStageArgs.builder()\n .profiles()\n .targetId(\"example-target-two\")\n .build())\n .build())\n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:clouddeploy:DeliveryPipeline\n properties:\n location: us-west1\n name: pipeline\n description: basic description\n project: my-project-name\n serialPipeline:\n stages:\n - deployParameters:\n - values:\n deployParameterKey: deployParameterValue\n matchTargetLabels: {}\n profiles:\n - example-profile-one\n - example-profile-two\n targetId: example-target-one\n - profiles: []\n targetId: example-target-two\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Delivery_pipeline\nCreates a basic Cloud Deploy delivery pipeline\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.clouddeploy.DeliveryPipeline(\"primary\", {\n location: \"us-west1\",\n name: \"pipeline\",\n description: \"basic description\",\n project: \"my-project-name\",\n serialPipeline: {\n stages: [\n {\n deployParameters: [{\n values: {\n deployParameterKey: \"deployParameterValue\",\n },\n matchTargetLabels: {},\n }],\n profiles: [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n targetId: \"example-target-one\",\n },\n {\n profiles: [],\n targetId: \"example-target-two\",\n },\n ],\n },\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.clouddeploy.DeliveryPipeline(\"primary\",\n location=\"us-west1\",\n name=\"pipeline\",\n description=\"basic description\",\n project=\"my-project-name\",\n serial_pipeline={\n \"stages\": [\n {\n \"deploy_parameters\": [{\n \"values\": {\n \"deploy_parameter_key\": \"deployParameterValue\",\n },\n \"match_target_labels\": {},\n }],\n \"profiles\": [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n \"target_id\": \"example-target-one\",\n },\n {\n \"profiles\": [],\n \"target_id\": \"example-target-two\",\n },\n ],\n },\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-2\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.CloudDeploy.DeliveryPipeline(\"primary\", new()\n {\n Location = \"us-west1\",\n Name = \"pipeline\",\n Description = \"basic description\",\n Project = \"my-project-name\",\n SerialPipeline = new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineArgs\n {\n Stages = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n DeployParameters = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageDeployParameterArgs\n {\n Values = \n {\n { \"deployParameterKey\", \"deployParameterValue\" },\n },\n MatchTargetLabels = null,\n },\n },\n Profiles = new[]\n {\n \"example-profile-one\",\n \"example-profile-two\",\n },\n TargetId = \"example-target-one\",\n },\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n Profiles = new() { },\n TargetId = \"example-target-two\",\n },\n },\n },\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/clouddeploy\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := clouddeploy.NewDeliveryPipeline(ctx, \"primary\", \u0026clouddeploy.DeliveryPipelineArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"pipeline\"),\n\t\t\tDescription: pulumi.String(\"basic description\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSerialPipeline: \u0026clouddeploy.DeliveryPipelineSerialPipelineArgs{\n\t\t\t\tStages: clouddeploy.DeliveryPipelineSerialPipelineStageArray{\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tDeployParameters: clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArray{\n\t\t\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArgs{\n\t\t\t\t\t\t\t\tValues: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\t\"deployParameterKey\": pulumi.String(\"deployParameterValue\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tMatchTargetLabels: nil,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tProfiles: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-one\"),\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-two\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-one\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tProfiles: pulumi.StringArray{},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-two\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-2\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.clouddeploy.DeliveryPipeline;\nimport com.pulumi.gcp.clouddeploy.DeliveryPipelineArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.DeliveryPipelineSerialPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new DeliveryPipeline(\"primary\", DeliveryPipelineArgs.builder()\n .location(\"us-west1\")\n .name(\"pipeline\")\n .description(\"basic description\")\n .project(\"my-project-name\")\n .serialPipeline(DeliveryPipelineSerialPipelineArgs.builder()\n .stages( \n DeliveryPipelineSerialPipelineStageArgs.builder()\n .deployParameters(DeliveryPipelineSerialPipelineStageDeployParameterArgs.builder()\n .values(Map.of(\"deployParameterKey\", \"deployParameterValue\"))\n .matchTargetLabels()\n .build())\n .profiles( \n \"example-profile-one\",\n \"example-profile-two\")\n .targetId(\"example-target-one\")\n .build(),\n DeliveryPipelineSerialPipelineStageArgs.builder()\n .profiles()\n .targetId(\"example-target-two\")\n .build())\n .build())\n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:clouddeploy:DeliveryPipeline\n properties:\n location: us-west1\n name: pipeline\n description: basic description\n project: my-project-name\n serialPipeline:\n stages:\n - deployParameters:\n - values:\n deployParameterKey: deployParameterValue\n matchTargetLabels: {}\n profiles:\n - example-profile-one\n - example-profile-two\n targetId: example-target-one\n - profiles: []\n targetId: example-target-two\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Verify_delivery_pipeline\ntests creating and updating a delivery pipeline with deployment verification strategy\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.clouddeploy.DeliveryPipeline(\"primary\", {\n location: \"us-west1\",\n name: \"pipeline\",\n description: \"basic description\",\n project: \"my-project-name\",\n serialPipeline: {\n stages: [\n {\n deployParameters: [{\n values: {\n deployParameterKey: \"deployParameterValue\",\n },\n matchTargetLabels: {},\n }],\n profiles: [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n targetId: \"example-target-one\",\n },\n {\n profiles: [],\n targetId: \"example-target-two\",\n },\n ],\n },\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.clouddeploy.DeliveryPipeline(\"primary\",\n location=\"us-west1\",\n name=\"pipeline\",\n description=\"basic description\",\n project=\"my-project-name\",\n serial_pipeline={\n \"stages\": [\n {\n \"deploy_parameters\": [{\n \"values\": {\n \"deploy_parameter_key\": \"deployParameterValue\",\n },\n \"match_target_labels\": {},\n }],\n \"profiles\": [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n \"target_id\": \"example-target-one\",\n },\n {\n \"profiles\": [],\n \"target_id\": \"example-target-two\",\n },\n ],\n },\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-2\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.CloudDeploy.DeliveryPipeline(\"primary\", new()\n {\n Location = \"us-west1\",\n Name = \"pipeline\",\n Description = \"basic description\",\n Project = \"my-project-name\",\n SerialPipeline = new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineArgs\n {\n Stages = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n DeployParameters = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageDeployParameterArgs\n {\n Values = \n {\n { \"deployParameterKey\", \"deployParameterValue\" },\n },\n MatchTargetLabels = null,\n },\n },\n Profiles = new[]\n {\n \"example-profile-one\",\n \"example-profile-two\",\n },\n TargetId = \"example-target-one\",\n },\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n Profiles = new() { },\n TargetId = \"example-target-two\",\n },\n },\n },\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/clouddeploy\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := clouddeploy.NewDeliveryPipeline(ctx, \"primary\", \u0026clouddeploy.DeliveryPipelineArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"pipeline\"),\n\t\t\tDescription: pulumi.String(\"basic description\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSerialPipeline: \u0026clouddeploy.DeliveryPipelineSerialPipelineArgs{\n\t\t\t\tStages: clouddeploy.DeliveryPipelineSerialPipelineStageArray{\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tDeployParameters: clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArray{\n\t\t\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArgs{\n\t\t\t\t\t\t\t\tValues: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\t\"deployParameterKey\": pulumi.String(\"deployParameterValue\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tMatchTargetLabels: nil,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tProfiles: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-one\"),\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-two\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-one\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tProfiles: pulumi.StringArray{},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-two\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-2\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.clouddeploy.DeliveryPipeline;\nimport com.pulumi.gcp.clouddeploy.DeliveryPipelineArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.DeliveryPipelineSerialPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new DeliveryPipeline(\"primary\", DeliveryPipelineArgs.builder()\n .location(\"us-west1\")\n .name(\"pipeline\")\n .description(\"basic description\")\n .project(\"my-project-name\")\n .serialPipeline(DeliveryPipelineSerialPipelineArgs.builder()\n .stages( \n DeliveryPipelineSerialPipelineStageArgs.builder()\n .deployParameters(DeliveryPipelineSerialPipelineStageDeployParameterArgs.builder()\n .values(Map.of(\"deployParameterKey\", \"deployParameterValue\"))\n .matchTargetLabels()\n .build())\n .profiles( \n \"example-profile-one\",\n \"example-profile-two\")\n .targetId(\"example-target-one\")\n .build(),\n DeliveryPipelineSerialPipelineStageArgs.builder()\n .profiles()\n .targetId(\"example-target-two\")\n .build())\n .build())\n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:clouddeploy:DeliveryPipeline\n properties:\n location: us-west1\n name: pipeline\n description: basic description\n project: my-project-name\n serialPipeline:\n stages:\n - deployParameters:\n - values:\n deployParameterKey: deployParameterValue\n matchTargetLabels: {}\n profiles:\n - example-profile-one\n - example-profile-two\n targetId: example-target-one\n - profiles: []\n targetId: example-target-two\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDeliveryPipeline can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/deliveryPipelines/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, DeliveryPipeline can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:clouddeploy/deliveryPipeline:DeliveryPipeline default projects/{{project}}/locations/{{location}}/deliveryPipelines/{{name}}\n```\n\n```sh\n$ pulumi import gcp:clouddeploy/deliveryPipeline:DeliveryPipeline default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:clouddeploy/deliveryPipeline:DeliveryPipeline default {{location}}/{{name}}\n```\n\n", + "description": "The Cloud Deploy `DeliveryPipeline` resource\n\n## Example Usage\n\n### Canary_delivery_pipeline\nCreates a basic Cloud Deploy delivery pipeline\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.clouddeploy.DeliveryPipeline(\"primary\", {\n location: \"us-west1\",\n name: \"pipeline\",\n description: \"basic description\",\n project: \"my-project-name\",\n serialPipeline: {\n stages: [\n {\n deployParameters: [{\n values: {\n deployParameterKey: \"deployParameterValue\",\n },\n matchTargetLabels: {},\n }],\n profiles: [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n targetId: \"example-target-one\",\n },\n {\n profiles: [],\n targetId: \"example-target-two\",\n },\n ],\n },\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.clouddeploy.DeliveryPipeline(\"primary\",\n location=\"us-west1\",\n name=\"pipeline\",\n description=\"basic description\",\n project=\"my-project-name\",\n serial_pipeline={\n \"stages\": [\n {\n \"deploy_parameters\": [{\n \"values\": {\n \"deployParameterKey\": \"deployParameterValue\",\n },\n \"match_target_labels\": {},\n }],\n \"profiles\": [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n \"target_id\": \"example-target-one\",\n },\n {\n \"profiles\": [],\n \"target_id\": \"example-target-two\",\n },\n ],\n },\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-2\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.CloudDeploy.DeliveryPipeline(\"primary\", new()\n {\n Location = \"us-west1\",\n Name = \"pipeline\",\n Description = \"basic description\",\n Project = \"my-project-name\",\n SerialPipeline = new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineArgs\n {\n Stages = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n DeployParameters = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageDeployParameterArgs\n {\n Values = \n {\n { \"deployParameterKey\", \"deployParameterValue\" },\n },\n MatchTargetLabels = null,\n },\n },\n Profiles = new[]\n {\n \"example-profile-one\",\n \"example-profile-two\",\n },\n TargetId = \"example-target-one\",\n },\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n Profiles = new() { },\n TargetId = \"example-target-two\",\n },\n },\n },\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/clouddeploy\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := clouddeploy.NewDeliveryPipeline(ctx, \"primary\", \u0026clouddeploy.DeliveryPipelineArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"pipeline\"),\n\t\t\tDescription: pulumi.String(\"basic description\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSerialPipeline: \u0026clouddeploy.DeliveryPipelineSerialPipelineArgs{\n\t\t\t\tStages: clouddeploy.DeliveryPipelineSerialPipelineStageArray{\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tDeployParameters: clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArray{\n\t\t\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArgs{\n\t\t\t\t\t\t\t\tValues: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\t\"deployParameterKey\": pulumi.String(\"deployParameterValue\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tMatchTargetLabels: pulumi.StringMap{},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tProfiles: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-one\"),\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-two\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-one\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tProfiles: pulumi.StringArray{},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-two\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-2\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.clouddeploy.DeliveryPipeline;\nimport com.pulumi.gcp.clouddeploy.DeliveryPipelineArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.DeliveryPipelineSerialPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new DeliveryPipeline(\"primary\", DeliveryPipelineArgs.builder()\n .location(\"us-west1\")\n .name(\"pipeline\")\n .description(\"basic description\")\n .project(\"my-project-name\")\n .serialPipeline(DeliveryPipelineSerialPipelineArgs.builder()\n .stages( \n DeliveryPipelineSerialPipelineStageArgs.builder()\n .deployParameters(DeliveryPipelineSerialPipelineStageDeployParameterArgs.builder()\n .values(Map.of(\"deployParameterKey\", \"deployParameterValue\"))\n .matchTargetLabels()\n .build())\n .profiles( \n \"example-profile-one\",\n \"example-profile-two\")\n .targetId(\"example-target-one\")\n .build(),\n DeliveryPipelineSerialPipelineStageArgs.builder()\n .profiles()\n .targetId(\"example-target-two\")\n .build())\n .build())\n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:clouddeploy:DeliveryPipeline\n properties:\n location: us-west1\n name: pipeline\n description: basic description\n project: my-project-name\n serialPipeline:\n stages:\n - deployParameters:\n - values:\n deployParameterKey: deployParameterValue\n matchTargetLabels: {}\n profiles:\n - example-profile-one\n - example-profile-two\n targetId: example-target-one\n - profiles: []\n targetId: example-target-two\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Canary_service_networking_delivery_pipeline\nCreates a basic Cloud Deploy delivery pipeline\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.clouddeploy.DeliveryPipeline(\"primary\", {\n location: \"us-west1\",\n name: \"pipeline\",\n description: \"basic description\",\n project: \"my-project-name\",\n serialPipeline: {\n stages: [\n {\n deployParameters: [{\n values: {\n deployParameterKey: \"deployParameterValue\",\n },\n matchTargetLabels: {},\n }],\n profiles: [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n targetId: \"example-target-one\",\n },\n {\n profiles: [],\n targetId: \"example-target-two\",\n },\n ],\n },\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.clouddeploy.DeliveryPipeline(\"primary\",\n location=\"us-west1\",\n name=\"pipeline\",\n description=\"basic description\",\n project=\"my-project-name\",\n serial_pipeline={\n \"stages\": [\n {\n \"deploy_parameters\": [{\n \"values\": {\n \"deployParameterKey\": \"deployParameterValue\",\n },\n \"match_target_labels\": {},\n }],\n \"profiles\": [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n \"target_id\": \"example-target-one\",\n },\n {\n \"profiles\": [],\n \"target_id\": \"example-target-two\",\n },\n ],\n },\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-2\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.CloudDeploy.DeliveryPipeline(\"primary\", new()\n {\n Location = \"us-west1\",\n Name = \"pipeline\",\n Description = \"basic description\",\n Project = \"my-project-name\",\n SerialPipeline = new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineArgs\n {\n Stages = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n DeployParameters = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageDeployParameterArgs\n {\n Values = \n {\n { \"deployParameterKey\", \"deployParameterValue\" },\n },\n MatchTargetLabels = null,\n },\n },\n Profiles = new[]\n {\n \"example-profile-one\",\n \"example-profile-two\",\n },\n TargetId = \"example-target-one\",\n },\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n Profiles = new() { },\n TargetId = \"example-target-two\",\n },\n },\n },\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/clouddeploy\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := clouddeploy.NewDeliveryPipeline(ctx, \"primary\", \u0026clouddeploy.DeliveryPipelineArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"pipeline\"),\n\t\t\tDescription: pulumi.String(\"basic description\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSerialPipeline: \u0026clouddeploy.DeliveryPipelineSerialPipelineArgs{\n\t\t\t\tStages: clouddeploy.DeliveryPipelineSerialPipelineStageArray{\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tDeployParameters: clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArray{\n\t\t\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArgs{\n\t\t\t\t\t\t\t\tValues: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\t\"deployParameterKey\": pulumi.String(\"deployParameterValue\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tMatchTargetLabels: pulumi.StringMap{},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tProfiles: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-one\"),\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-two\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-one\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tProfiles: pulumi.StringArray{},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-two\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-2\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.clouddeploy.DeliveryPipeline;\nimport com.pulumi.gcp.clouddeploy.DeliveryPipelineArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.DeliveryPipelineSerialPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new DeliveryPipeline(\"primary\", DeliveryPipelineArgs.builder()\n .location(\"us-west1\")\n .name(\"pipeline\")\n .description(\"basic description\")\n .project(\"my-project-name\")\n .serialPipeline(DeliveryPipelineSerialPipelineArgs.builder()\n .stages( \n DeliveryPipelineSerialPipelineStageArgs.builder()\n .deployParameters(DeliveryPipelineSerialPipelineStageDeployParameterArgs.builder()\n .values(Map.of(\"deployParameterKey\", \"deployParameterValue\"))\n .matchTargetLabels()\n .build())\n .profiles( \n \"example-profile-one\",\n \"example-profile-two\")\n .targetId(\"example-target-one\")\n .build(),\n DeliveryPipelineSerialPipelineStageArgs.builder()\n .profiles()\n .targetId(\"example-target-two\")\n .build())\n .build())\n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:clouddeploy:DeliveryPipeline\n properties:\n location: us-west1\n name: pipeline\n description: basic description\n project: my-project-name\n serialPipeline:\n stages:\n - deployParameters:\n - values:\n deployParameterKey: deployParameterValue\n matchTargetLabels: {}\n profiles:\n - example-profile-one\n - example-profile-two\n targetId: example-target-one\n - profiles: []\n targetId: example-target-two\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Canaryrun_delivery_pipeline\nCreates a basic Cloud Deploy delivery pipeline\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.clouddeploy.DeliveryPipeline(\"primary\", {\n location: \"us-west1\",\n name: \"pipeline\",\n description: \"basic description\",\n project: \"my-project-name\",\n serialPipeline: {\n stages: [\n {\n deployParameters: [{\n values: {\n deployParameterKey: \"deployParameterValue\",\n },\n matchTargetLabels: {},\n }],\n profiles: [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n targetId: \"example-target-one\",\n },\n {\n profiles: [],\n targetId: \"example-target-two\",\n },\n ],\n },\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.clouddeploy.DeliveryPipeline(\"primary\",\n location=\"us-west1\",\n name=\"pipeline\",\n description=\"basic description\",\n project=\"my-project-name\",\n serial_pipeline={\n \"stages\": [\n {\n \"deploy_parameters\": [{\n \"values\": {\n \"deployParameterKey\": \"deployParameterValue\",\n },\n \"match_target_labels\": {},\n }],\n \"profiles\": [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n \"target_id\": \"example-target-one\",\n },\n {\n \"profiles\": [],\n \"target_id\": \"example-target-two\",\n },\n ],\n },\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-2\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.CloudDeploy.DeliveryPipeline(\"primary\", new()\n {\n Location = \"us-west1\",\n Name = \"pipeline\",\n Description = \"basic description\",\n Project = \"my-project-name\",\n SerialPipeline = new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineArgs\n {\n Stages = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n DeployParameters = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageDeployParameterArgs\n {\n Values = \n {\n { \"deployParameterKey\", \"deployParameterValue\" },\n },\n MatchTargetLabels = null,\n },\n },\n Profiles = new[]\n {\n \"example-profile-one\",\n \"example-profile-two\",\n },\n TargetId = \"example-target-one\",\n },\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n Profiles = new() { },\n TargetId = \"example-target-two\",\n },\n },\n },\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/clouddeploy\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := clouddeploy.NewDeliveryPipeline(ctx, \"primary\", \u0026clouddeploy.DeliveryPipelineArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"pipeline\"),\n\t\t\tDescription: pulumi.String(\"basic description\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSerialPipeline: \u0026clouddeploy.DeliveryPipelineSerialPipelineArgs{\n\t\t\t\tStages: clouddeploy.DeliveryPipelineSerialPipelineStageArray{\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tDeployParameters: clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArray{\n\t\t\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArgs{\n\t\t\t\t\t\t\t\tValues: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\t\"deployParameterKey\": pulumi.String(\"deployParameterValue\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tMatchTargetLabels: pulumi.StringMap{},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tProfiles: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-one\"),\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-two\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-one\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tProfiles: pulumi.StringArray{},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-two\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-2\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.clouddeploy.DeliveryPipeline;\nimport com.pulumi.gcp.clouddeploy.DeliveryPipelineArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.DeliveryPipelineSerialPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new DeliveryPipeline(\"primary\", DeliveryPipelineArgs.builder()\n .location(\"us-west1\")\n .name(\"pipeline\")\n .description(\"basic description\")\n .project(\"my-project-name\")\n .serialPipeline(DeliveryPipelineSerialPipelineArgs.builder()\n .stages( \n DeliveryPipelineSerialPipelineStageArgs.builder()\n .deployParameters(DeliveryPipelineSerialPipelineStageDeployParameterArgs.builder()\n .values(Map.of(\"deployParameterKey\", \"deployParameterValue\"))\n .matchTargetLabels()\n .build())\n .profiles( \n \"example-profile-one\",\n \"example-profile-two\")\n .targetId(\"example-target-one\")\n .build(),\n DeliveryPipelineSerialPipelineStageArgs.builder()\n .profiles()\n .targetId(\"example-target-two\")\n .build())\n .build())\n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:clouddeploy:DeliveryPipeline\n properties:\n location: us-west1\n name: pipeline\n description: basic description\n project: my-project-name\n serialPipeline:\n stages:\n - deployParameters:\n - values:\n deployParameterKey: deployParameterValue\n matchTargetLabels: {}\n profiles:\n - example-profile-one\n - example-profile-two\n targetId: example-target-one\n - profiles: []\n targetId: example-target-two\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Delivery_pipeline\nCreates a basic Cloud Deploy delivery pipeline\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.clouddeploy.DeliveryPipeline(\"primary\", {\n location: \"us-west1\",\n name: \"pipeline\",\n description: \"basic description\",\n project: \"my-project-name\",\n serialPipeline: {\n stages: [\n {\n deployParameters: [{\n values: {\n deployParameterKey: \"deployParameterValue\",\n },\n matchTargetLabels: {},\n }],\n profiles: [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n targetId: \"example-target-one\",\n },\n {\n profiles: [],\n targetId: \"example-target-two\",\n },\n ],\n },\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.clouddeploy.DeliveryPipeline(\"primary\",\n location=\"us-west1\",\n name=\"pipeline\",\n description=\"basic description\",\n project=\"my-project-name\",\n serial_pipeline={\n \"stages\": [\n {\n \"deploy_parameters\": [{\n \"values\": {\n \"deployParameterKey\": \"deployParameterValue\",\n },\n \"match_target_labels\": {},\n }],\n \"profiles\": [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n \"target_id\": \"example-target-one\",\n },\n {\n \"profiles\": [],\n \"target_id\": \"example-target-two\",\n },\n ],\n },\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-2\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.CloudDeploy.DeliveryPipeline(\"primary\", new()\n {\n Location = \"us-west1\",\n Name = \"pipeline\",\n Description = \"basic description\",\n Project = \"my-project-name\",\n SerialPipeline = new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineArgs\n {\n Stages = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n DeployParameters = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageDeployParameterArgs\n {\n Values = \n {\n { \"deployParameterKey\", \"deployParameterValue\" },\n },\n MatchTargetLabels = null,\n },\n },\n Profiles = new[]\n {\n \"example-profile-one\",\n \"example-profile-two\",\n },\n TargetId = \"example-target-one\",\n },\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n Profiles = new() { },\n TargetId = \"example-target-two\",\n },\n },\n },\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/clouddeploy\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := clouddeploy.NewDeliveryPipeline(ctx, \"primary\", \u0026clouddeploy.DeliveryPipelineArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"pipeline\"),\n\t\t\tDescription: pulumi.String(\"basic description\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSerialPipeline: \u0026clouddeploy.DeliveryPipelineSerialPipelineArgs{\n\t\t\t\tStages: clouddeploy.DeliveryPipelineSerialPipelineStageArray{\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tDeployParameters: clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArray{\n\t\t\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArgs{\n\t\t\t\t\t\t\t\tValues: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\t\"deployParameterKey\": pulumi.String(\"deployParameterValue\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tMatchTargetLabels: pulumi.StringMap{},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tProfiles: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-one\"),\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-two\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-one\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tProfiles: pulumi.StringArray{},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-two\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-2\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.clouddeploy.DeliveryPipeline;\nimport com.pulumi.gcp.clouddeploy.DeliveryPipelineArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.DeliveryPipelineSerialPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new DeliveryPipeline(\"primary\", DeliveryPipelineArgs.builder()\n .location(\"us-west1\")\n .name(\"pipeline\")\n .description(\"basic description\")\n .project(\"my-project-name\")\n .serialPipeline(DeliveryPipelineSerialPipelineArgs.builder()\n .stages( \n DeliveryPipelineSerialPipelineStageArgs.builder()\n .deployParameters(DeliveryPipelineSerialPipelineStageDeployParameterArgs.builder()\n .values(Map.of(\"deployParameterKey\", \"deployParameterValue\"))\n .matchTargetLabels()\n .build())\n .profiles( \n \"example-profile-one\",\n \"example-profile-two\")\n .targetId(\"example-target-one\")\n .build(),\n DeliveryPipelineSerialPipelineStageArgs.builder()\n .profiles()\n .targetId(\"example-target-two\")\n .build())\n .build())\n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:clouddeploy:DeliveryPipeline\n properties:\n location: us-west1\n name: pipeline\n description: basic description\n project: my-project-name\n serialPipeline:\n stages:\n - deployParameters:\n - values:\n deployParameterKey: deployParameterValue\n matchTargetLabels: {}\n profiles:\n - example-profile-one\n - example-profile-two\n targetId: example-target-one\n - profiles: []\n targetId: example-target-two\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Verify_delivery_pipeline\ntests creating and updating a delivery pipeline with deployment verification strategy\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.clouddeploy.DeliveryPipeline(\"primary\", {\n location: \"us-west1\",\n name: \"pipeline\",\n description: \"basic description\",\n project: \"my-project-name\",\n serialPipeline: {\n stages: [\n {\n deployParameters: [{\n values: {\n deployParameterKey: \"deployParameterValue\",\n },\n matchTargetLabels: {},\n }],\n profiles: [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n targetId: \"example-target-one\",\n },\n {\n profiles: [],\n targetId: \"example-target-two\",\n },\n ],\n },\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.clouddeploy.DeliveryPipeline(\"primary\",\n location=\"us-west1\",\n name=\"pipeline\",\n description=\"basic description\",\n project=\"my-project-name\",\n serial_pipeline={\n \"stages\": [\n {\n \"deploy_parameters\": [{\n \"values\": {\n \"deployParameterKey\": \"deployParameterValue\",\n },\n \"match_target_labels\": {},\n }],\n \"profiles\": [\n \"example-profile-one\",\n \"example-profile-two\",\n ],\n \"target_id\": \"example-target-one\",\n },\n {\n \"profiles\": [],\n \"target_id\": \"example-target-two\",\n },\n ],\n },\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-2\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.CloudDeploy.DeliveryPipeline(\"primary\", new()\n {\n Location = \"us-west1\",\n Name = \"pipeline\",\n Description = \"basic description\",\n Project = \"my-project-name\",\n SerialPipeline = new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineArgs\n {\n Stages = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n DeployParameters = new[]\n {\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageDeployParameterArgs\n {\n Values = \n {\n { \"deployParameterKey\", \"deployParameterValue\" },\n },\n MatchTargetLabels = null,\n },\n },\n Profiles = new[]\n {\n \"example-profile-one\",\n \"example-profile-two\",\n },\n TargetId = \"example-target-one\",\n },\n new Gcp.CloudDeploy.Inputs.DeliveryPipelineSerialPipelineStageArgs\n {\n Profiles = new() { },\n TargetId = \"example-target-two\",\n },\n },\n },\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/clouddeploy\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := clouddeploy.NewDeliveryPipeline(ctx, \"primary\", \u0026clouddeploy.DeliveryPipelineArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"pipeline\"),\n\t\t\tDescription: pulumi.String(\"basic description\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSerialPipeline: \u0026clouddeploy.DeliveryPipelineSerialPipelineArgs{\n\t\t\t\tStages: clouddeploy.DeliveryPipelineSerialPipelineStageArray{\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tDeployParameters: clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArray{\n\t\t\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageDeployParameterArgs{\n\t\t\t\t\t\t\t\tValues: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\t\"deployParameterKey\": pulumi.String(\"deployParameterValue\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tMatchTargetLabels: pulumi.StringMap{},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tProfiles: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-one\"),\n\t\t\t\t\t\t\tpulumi.String(\"example-profile-two\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-one\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026clouddeploy.DeliveryPipelineSerialPipelineStageArgs{\n\t\t\t\t\t\tProfiles: pulumi.StringArray{},\n\t\t\t\t\t\tTargetId: pulumi.String(\"example-target-two\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-2\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.clouddeploy.DeliveryPipeline;\nimport com.pulumi.gcp.clouddeploy.DeliveryPipelineArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.DeliveryPipelineSerialPipelineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new DeliveryPipeline(\"primary\", DeliveryPipelineArgs.builder()\n .location(\"us-west1\")\n .name(\"pipeline\")\n .description(\"basic description\")\n .project(\"my-project-name\")\n .serialPipeline(DeliveryPipelineSerialPipelineArgs.builder()\n .stages( \n DeliveryPipelineSerialPipelineStageArgs.builder()\n .deployParameters(DeliveryPipelineSerialPipelineStageDeployParameterArgs.builder()\n .values(Map.of(\"deployParameterKey\", \"deployParameterValue\"))\n .matchTargetLabels()\n .build())\n .profiles( \n \"example-profile-one\",\n \"example-profile-two\")\n .targetId(\"example-target-one\")\n .build(),\n DeliveryPipelineSerialPipelineStageArgs.builder()\n .profiles()\n .targetId(\"example-target-two\")\n .build())\n .build())\n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:clouddeploy:DeliveryPipeline\n properties:\n location: us-west1\n name: pipeline\n description: basic description\n project: my-project-name\n serialPipeline:\n stages:\n - deployParameters:\n - values:\n deployParameterKey: deployParameterValue\n matchTargetLabels: {}\n profiles:\n - example-profile-one\n - example-profile-two\n targetId: example-target-one\n - profiles: []\n targetId: example-target-two\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDeliveryPipeline can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/deliveryPipelines/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, DeliveryPipeline can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:clouddeploy/deliveryPipeline:DeliveryPipeline default projects/{{project}}/locations/{{location}}/deliveryPipelines/{{name}}\n```\n\n```sh\n$ pulumi import gcp:clouddeploy/deliveryPipeline:DeliveryPipeline default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:clouddeploy/deliveryPipeline:DeliveryPipeline default {{location}}/{{name}}\n```\n\n", "properties": { "annotations": { "type": "object", @@ -140076,7 +140076,7 @@ } }, "gcp:clouddeploy/target:Target": { - "description": "The Cloud Deploy `Target` resource\n\n## Example Usage\n\n### Multi_target\ntests creating and updating a multi-target\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.clouddeploy.Target(\"primary\", {\n location: \"us-west1\",\n name: \"target\",\n deployParameters: {},\n description: \"multi-target description\",\n executionConfigs: [{\n usages: [\n \"RENDER\",\n \"DEPLOY\",\n ],\n executionTimeout: \"3600s\",\n }],\n multiTarget: {\n targetIds: [\n \"1\",\n \"2\",\n ],\n },\n project: \"my-project-name\",\n requireApproval: false,\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.clouddeploy.Target(\"primary\",\n location=\"us-west1\",\n name=\"target\",\n deploy_parameters={},\n description=\"multi-target description\",\n execution_configs=[{\n \"usages\": [\n \"RENDER\",\n \"DEPLOY\",\n ],\n \"execution_timeout\": \"3600s\",\n }],\n multi_target={\n \"target_ids\": [\n \"1\",\n \"2\",\n ],\n },\n project=\"my-project-name\",\n require_approval=False,\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-2\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.CloudDeploy.Target(\"primary\", new()\n {\n Location = \"us-west1\",\n Name = \"target\",\n DeployParameters = null,\n Description = \"multi-target description\",\n ExecutionConfigs = new[]\n {\n new Gcp.CloudDeploy.Inputs.TargetExecutionConfigArgs\n {\n Usages = new[]\n {\n \"RENDER\",\n \"DEPLOY\",\n },\n ExecutionTimeout = \"3600s\",\n },\n },\n MultiTarget = new Gcp.CloudDeploy.Inputs.TargetMultiTargetArgs\n {\n TargetIds = new[]\n {\n \"1\",\n \"2\",\n },\n },\n Project = \"my-project-name\",\n RequireApproval = false,\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/clouddeploy\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := clouddeploy.NewTarget(ctx, \"primary\", \u0026clouddeploy.TargetArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"target\"),\n\t\t\tDeployParameters: nil,\n\t\t\tDescription: pulumi.String(\"multi-target description\"),\n\t\t\tExecutionConfigs: clouddeploy.TargetExecutionConfigArray{\n\t\t\t\t\u0026clouddeploy.TargetExecutionConfigArgs{\n\t\t\t\t\tUsages: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"RENDER\"),\n\t\t\t\t\t\tpulumi.String(\"DEPLOY\"),\n\t\t\t\t\t},\n\t\t\t\t\tExecutionTimeout: pulumi.String(\"3600s\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMultiTarget: \u0026clouddeploy.TargetMultiTargetArgs{\n\t\t\t\tTargetIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"1\"),\n\t\t\t\t\tpulumi.String(\"2\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRequireApproval: pulumi.Bool(false),\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-2\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.clouddeploy.Target;\nimport com.pulumi.gcp.clouddeploy.TargetArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.TargetExecutionConfigArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.TargetMultiTargetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new Target(\"primary\", TargetArgs.builder()\n .location(\"us-west1\")\n .name(\"target\")\n .deployParameters()\n .description(\"multi-target description\")\n .executionConfigs(TargetExecutionConfigArgs.builder()\n .usages( \n \"RENDER\",\n \"DEPLOY\")\n .executionTimeout(\"3600s\")\n .build())\n .multiTarget(TargetMultiTargetArgs.builder()\n .targetIds( \n \"1\",\n \"2\")\n .build())\n .project(\"my-project-name\")\n .requireApproval(false)\n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:clouddeploy:Target\n properties:\n location: us-west1\n name: target\n deployParameters: {}\n description: multi-target description\n executionConfigs:\n - usages:\n - RENDER\n - DEPLOY\n executionTimeout: 3600s\n multiTarget:\n targetIds:\n - '1'\n - '2'\n project: my-project-name\n requireApproval: false\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Run_target\ntests creating and updating a cloud run target\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.clouddeploy.Target(\"primary\", {\n location: \"us-west1\",\n name: \"target\",\n deployParameters: {},\n description: \"basic description\",\n executionConfigs: [{\n usages: [\n \"RENDER\",\n \"DEPLOY\",\n ],\n executionTimeout: \"3600s\",\n }],\n project: \"my-project-name\",\n requireApproval: false,\n run: {\n location: \"projects/my-project-name/locations/us-west1\",\n },\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.clouddeploy.Target(\"primary\",\n location=\"us-west1\",\n name=\"target\",\n deploy_parameters={},\n description=\"basic description\",\n execution_configs=[{\n \"usages\": [\n \"RENDER\",\n \"DEPLOY\",\n ],\n \"execution_timeout\": \"3600s\",\n }],\n project=\"my-project-name\",\n require_approval=False,\n run={\n \"location\": \"projects/my-project-name/locations/us-west1\",\n },\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-2\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.CloudDeploy.Target(\"primary\", new()\n {\n Location = \"us-west1\",\n Name = \"target\",\n DeployParameters = null,\n Description = \"basic description\",\n ExecutionConfigs = new[]\n {\n new Gcp.CloudDeploy.Inputs.TargetExecutionConfigArgs\n {\n Usages = new[]\n {\n \"RENDER\",\n \"DEPLOY\",\n },\n ExecutionTimeout = \"3600s\",\n },\n },\n Project = \"my-project-name\",\n RequireApproval = false,\n Run = new Gcp.CloudDeploy.Inputs.TargetRunArgs\n {\n Location = \"projects/my-project-name/locations/us-west1\",\n },\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/clouddeploy\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := clouddeploy.NewTarget(ctx, \"primary\", \u0026clouddeploy.TargetArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"target\"),\n\t\t\tDeployParameters: nil,\n\t\t\tDescription: pulumi.String(\"basic description\"),\n\t\t\tExecutionConfigs: clouddeploy.TargetExecutionConfigArray{\n\t\t\t\t\u0026clouddeploy.TargetExecutionConfigArgs{\n\t\t\t\t\tUsages: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"RENDER\"),\n\t\t\t\t\t\tpulumi.String(\"DEPLOY\"),\n\t\t\t\t\t},\n\t\t\t\t\tExecutionTimeout: pulumi.String(\"3600s\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRequireApproval: pulumi.Bool(false),\n\t\t\tRun: \u0026clouddeploy.TargetRunArgs{\n\t\t\t\tLocation: pulumi.String(\"projects/my-project-name/locations/us-west1\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-2\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.clouddeploy.Target;\nimport com.pulumi.gcp.clouddeploy.TargetArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.TargetExecutionConfigArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.TargetRunArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new Target(\"primary\", TargetArgs.builder()\n .location(\"us-west1\")\n .name(\"target\")\n .deployParameters()\n .description(\"basic description\")\n .executionConfigs(TargetExecutionConfigArgs.builder()\n .usages( \n \"RENDER\",\n \"DEPLOY\")\n .executionTimeout(\"3600s\")\n .build())\n .project(\"my-project-name\")\n .requireApproval(false)\n .run(TargetRunArgs.builder()\n .location(\"projects/my-project-name/locations/us-west1\")\n .build())\n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:clouddeploy:Target\n properties:\n location: us-west1\n name: target\n deployParameters: {}\n description: basic description\n executionConfigs:\n - usages:\n - RENDER\n - DEPLOY\n executionTimeout: 3600s\n project: my-project-name\n requireApproval: false\n run:\n location: projects/my-project-name/locations/us-west1\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Target\nCreates a basic Cloud Deploy target\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.clouddeploy.Target(\"primary\", {\n location: \"us-west1\",\n name: \"target\",\n deployParameters: {\n deployParameterKey: \"deployParameterValue\",\n },\n description: \"basic description\",\n gke: {\n cluster: \"projects/my-project-name/locations/us-west1/clusters/example-cluster-name\",\n },\n project: \"my-project-name\",\n requireApproval: false,\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.clouddeploy.Target(\"primary\",\n location=\"us-west1\",\n name=\"target\",\n deploy_parameters={\n \"deployParameterKey\": \"deployParameterValue\",\n },\n description=\"basic description\",\n gke={\n \"cluster\": \"projects/my-project-name/locations/us-west1/clusters/example-cluster-name\",\n },\n project=\"my-project-name\",\n require_approval=False,\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-2\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.CloudDeploy.Target(\"primary\", new()\n {\n Location = \"us-west1\",\n Name = \"target\",\n DeployParameters = \n {\n { \"deployParameterKey\", \"deployParameterValue\" },\n },\n Description = \"basic description\",\n Gke = new Gcp.CloudDeploy.Inputs.TargetGkeArgs\n {\n Cluster = \"projects/my-project-name/locations/us-west1/clusters/example-cluster-name\",\n },\n Project = \"my-project-name\",\n RequireApproval = false,\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/clouddeploy\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := clouddeploy.NewTarget(ctx, \"primary\", \u0026clouddeploy.TargetArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"target\"),\n\t\t\tDeployParameters: pulumi.StringMap{\n\t\t\t\t\"deployParameterKey\": pulumi.String(\"deployParameterValue\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"basic description\"),\n\t\t\tGke: \u0026clouddeploy.TargetGkeArgs{\n\t\t\t\tCluster: pulumi.String(\"projects/my-project-name/locations/us-west1/clusters/example-cluster-name\"),\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRequireApproval: pulumi.Bool(false),\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-2\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.clouddeploy.Target;\nimport com.pulumi.gcp.clouddeploy.TargetArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.TargetGkeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new Target(\"primary\", TargetArgs.builder()\n .location(\"us-west1\")\n .name(\"target\")\n .deployParameters(Map.of(\"deployParameterKey\", \"deployParameterValue\"))\n .description(\"basic description\")\n .gke(TargetGkeArgs.builder()\n .cluster(\"projects/my-project-name/locations/us-west1/clusters/example-cluster-name\")\n .build())\n .project(\"my-project-name\")\n .requireApproval(false)\n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:clouddeploy:Target\n properties:\n location: us-west1\n name: target\n deployParameters:\n deployParameterKey: deployParameterValue\n description: basic description\n gke:\n cluster: projects/my-project-name/locations/us-west1/clusters/example-cluster-name\n project: my-project-name\n requireApproval: false\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTarget can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/targets/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Target can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:clouddeploy/target:Target default projects/{{project}}/locations/{{location}}/targets/{{name}}\n```\n\n```sh\n$ pulumi import gcp:clouddeploy/target:Target default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:clouddeploy/target:Target default {{location}}/{{name}}\n```\n\n", + "description": "The Cloud Deploy `Target` resource\n\n## Example Usage\n\n### Multi_target\ntests creating and updating a multi-target\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.clouddeploy.Target(\"primary\", {\n location: \"us-west1\",\n name: \"target\",\n deployParameters: {},\n description: \"multi-target description\",\n executionConfigs: [{\n usages: [\n \"RENDER\",\n \"DEPLOY\",\n ],\n executionTimeout: \"3600s\",\n }],\n multiTarget: {\n targetIds: [\n \"1\",\n \"2\",\n ],\n },\n project: \"my-project-name\",\n requireApproval: false,\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.clouddeploy.Target(\"primary\",\n location=\"us-west1\",\n name=\"target\",\n deploy_parameters={},\n description=\"multi-target description\",\n execution_configs=[{\n \"usages\": [\n \"RENDER\",\n \"DEPLOY\",\n ],\n \"execution_timeout\": \"3600s\",\n }],\n multi_target={\n \"target_ids\": [\n \"1\",\n \"2\",\n ],\n },\n project=\"my-project-name\",\n require_approval=False,\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-2\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.CloudDeploy.Target(\"primary\", new()\n {\n Location = \"us-west1\",\n Name = \"target\",\n DeployParameters = null,\n Description = \"multi-target description\",\n ExecutionConfigs = new[]\n {\n new Gcp.CloudDeploy.Inputs.TargetExecutionConfigArgs\n {\n Usages = new[]\n {\n \"RENDER\",\n \"DEPLOY\",\n },\n ExecutionTimeout = \"3600s\",\n },\n },\n MultiTarget = new Gcp.CloudDeploy.Inputs.TargetMultiTargetArgs\n {\n TargetIds = new[]\n {\n \"1\",\n \"2\",\n },\n },\n Project = \"my-project-name\",\n RequireApproval = false,\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/clouddeploy\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := clouddeploy.NewTarget(ctx, \"primary\", \u0026clouddeploy.TargetArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"target\"),\n\t\t\tDeployParameters: pulumi.StringMap{},\n\t\t\tDescription: pulumi.String(\"multi-target description\"),\n\t\t\tExecutionConfigs: clouddeploy.TargetExecutionConfigArray{\n\t\t\t\t\u0026clouddeploy.TargetExecutionConfigArgs{\n\t\t\t\t\tUsages: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"RENDER\"),\n\t\t\t\t\t\tpulumi.String(\"DEPLOY\"),\n\t\t\t\t\t},\n\t\t\t\t\tExecutionTimeout: pulumi.String(\"3600s\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMultiTarget: \u0026clouddeploy.TargetMultiTargetArgs{\n\t\t\t\tTargetIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"1\"),\n\t\t\t\t\tpulumi.String(\"2\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRequireApproval: pulumi.Bool(false),\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-2\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.clouddeploy.Target;\nimport com.pulumi.gcp.clouddeploy.TargetArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.TargetExecutionConfigArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.TargetMultiTargetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new Target(\"primary\", TargetArgs.builder()\n .location(\"us-west1\")\n .name(\"target\")\n .deployParameters()\n .description(\"multi-target description\")\n .executionConfigs(TargetExecutionConfigArgs.builder()\n .usages( \n \"RENDER\",\n \"DEPLOY\")\n .executionTimeout(\"3600s\")\n .build())\n .multiTarget(TargetMultiTargetArgs.builder()\n .targetIds( \n \"1\",\n \"2\")\n .build())\n .project(\"my-project-name\")\n .requireApproval(false)\n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:clouddeploy:Target\n properties:\n location: us-west1\n name: target\n deployParameters: {}\n description: multi-target description\n executionConfigs:\n - usages:\n - RENDER\n - DEPLOY\n executionTimeout: 3600s\n multiTarget:\n targetIds:\n - '1'\n - '2'\n project: my-project-name\n requireApproval: false\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Run_target\ntests creating and updating a cloud run target\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.clouddeploy.Target(\"primary\", {\n location: \"us-west1\",\n name: \"target\",\n deployParameters: {},\n description: \"basic description\",\n executionConfigs: [{\n usages: [\n \"RENDER\",\n \"DEPLOY\",\n ],\n executionTimeout: \"3600s\",\n }],\n project: \"my-project-name\",\n requireApproval: false,\n run: {\n location: \"projects/my-project-name/locations/us-west1\",\n },\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.clouddeploy.Target(\"primary\",\n location=\"us-west1\",\n name=\"target\",\n deploy_parameters={},\n description=\"basic description\",\n execution_configs=[{\n \"usages\": [\n \"RENDER\",\n \"DEPLOY\",\n ],\n \"execution_timeout\": \"3600s\",\n }],\n project=\"my-project-name\",\n require_approval=False,\n run={\n \"location\": \"projects/my-project-name/locations/us-west1\",\n },\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-2\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.CloudDeploy.Target(\"primary\", new()\n {\n Location = \"us-west1\",\n Name = \"target\",\n DeployParameters = null,\n Description = \"basic description\",\n ExecutionConfigs = new[]\n {\n new Gcp.CloudDeploy.Inputs.TargetExecutionConfigArgs\n {\n Usages = new[]\n {\n \"RENDER\",\n \"DEPLOY\",\n },\n ExecutionTimeout = \"3600s\",\n },\n },\n Project = \"my-project-name\",\n RequireApproval = false,\n Run = new Gcp.CloudDeploy.Inputs.TargetRunArgs\n {\n Location = \"projects/my-project-name/locations/us-west1\",\n },\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/clouddeploy\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := clouddeploy.NewTarget(ctx, \"primary\", \u0026clouddeploy.TargetArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"target\"),\n\t\t\tDeployParameters: pulumi.StringMap{},\n\t\t\tDescription: pulumi.String(\"basic description\"),\n\t\t\tExecutionConfigs: clouddeploy.TargetExecutionConfigArray{\n\t\t\t\t\u0026clouddeploy.TargetExecutionConfigArgs{\n\t\t\t\t\tUsages: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"RENDER\"),\n\t\t\t\t\t\tpulumi.String(\"DEPLOY\"),\n\t\t\t\t\t},\n\t\t\t\t\tExecutionTimeout: pulumi.String(\"3600s\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRequireApproval: pulumi.Bool(false),\n\t\t\tRun: \u0026clouddeploy.TargetRunArgs{\n\t\t\t\tLocation: pulumi.String(\"projects/my-project-name/locations/us-west1\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-2\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.clouddeploy.Target;\nimport com.pulumi.gcp.clouddeploy.TargetArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.TargetExecutionConfigArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.TargetRunArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new Target(\"primary\", TargetArgs.builder()\n .location(\"us-west1\")\n .name(\"target\")\n .deployParameters()\n .description(\"basic description\")\n .executionConfigs(TargetExecutionConfigArgs.builder()\n .usages( \n \"RENDER\",\n \"DEPLOY\")\n .executionTimeout(\"3600s\")\n .build())\n .project(\"my-project-name\")\n .requireApproval(false)\n .run(TargetRunArgs.builder()\n .location(\"projects/my-project-name/locations/us-west1\")\n .build())\n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:clouddeploy:Target\n properties:\n location: us-west1\n name: target\n deployParameters: {}\n description: basic description\n executionConfigs:\n - usages:\n - RENDER\n - DEPLOY\n executionTimeout: 3600s\n project: my-project-name\n requireApproval: false\n run:\n location: projects/my-project-name/locations/us-west1\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Target\nCreates a basic Cloud Deploy target\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.clouddeploy.Target(\"primary\", {\n location: \"us-west1\",\n name: \"target\",\n deployParameters: {\n deployParameterKey: \"deployParameterValue\",\n },\n description: \"basic description\",\n gke: {\n cluster: \"projects/my-project-name/locations/us-west1/clusters/example-cluster-name\",\n },\n project: \"my-project-name\",\n requireApproval: false,\n annotations: {\n my_first_annotation: \"example-annotation-1\",\n my_second_annotation: \"example-annotation-2\",\n },\n labels: {\n my_first_label: \"example-label-1\",\n my_second_label: \"example-label-2\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.clouddeploy.Target(\"primary\",\n location=\"us-west1\",\n name=\"target\",\n deploy_parameters={\n \"deployParameterKey\": \"deployParameterValue\",\n },\n description=\"basic description\",\n gke={\n \"cluster\": \"projects/my-project-name/locations/us-west1/clusters/example-cluster-name\",\n },\n project=\"my-project-name\",\n require_approval=False,\n annotations={\n \"my_first_annotation\": \"example-annotation-1\",\n \"my_second_annotation\": \"example-annotation-2\",\n },\n labels={\n \"my_first_label\": \"example-label-1\",\n \"my_second_label\": \"example-label-2\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.CloudDeploy.Target(\"primary\", new()\n {\n Location = \"us-west1\",\n Name = \"target\",\n DeployParameters = \n {\n { \"deployParameterKey\", \"deployParameterValue\" },\n },\n Description = \"basic description\",\n Gke = new Gcp.CloudDeploy.Inputs.TargetGkeArgs\n {\n Cluster = \"projects/my-project-name/locations/us-west1/clusters/example-cluster-name\",\n },\n Project = \"my-project-name\",\n RequireApproval = false,\n Annotations = \n {\n { \"my_first_annotation\", \"example-annotation-1\" },\n { \"my_second_annotation\", \"example-annotation-2\" },\n },\n Labels = \n {\n { \"my_first_label\", \"example-label-1\" },\n { \"my_second_label\", \"example-label-2\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/clouddeploy\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := clouddeploy.NewTarget(ctx, \"primary\", \u0026clouddeploy.TargetArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"target\"),\n\t\t\tDeployParameters: pulumi.StringMap{\n\t\t\t\t\"deployParameterKey\": pulumi.String(\"deployParameterValue\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"basic description\"),\n\t\t\tGke: \u0026clouddeploy.TargetGkeArgs{\n\t\t\t\tCluster: pulumi.String(\"projects/my-project-name/locations/us-west1/clusters/example-cluster-name\"),\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRequireApproval: pulumi.Bool(false),\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"my_first_annotation\": pulumi.String(\"example-annotation-1\"),\n\t\t\t\t\"my_second_annotation\": pulumi.String(\"example-annotation-2\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_first_label\": pulumi.String(\"example-label-1\"),\n\t\t\t\t\"my_second_label\": pulumi.String(\"example-label-2\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.clouddeploy.Target;\nimport com.pulumi.gcp.clouddeploy.TargetArgs;\nimport com.pulumi.gcp.clouddeploy.inputs.TargetGkeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new Target(\"primary\", TargetArgs.builder()\n .location(\"us-west1\")\n .name(\"target\")\n .deployParameters(Map.of(\"deployParameterKey\", \"deployParameterValue\"))\n .description(\"basic description\")\n .gke(TargetGkeArgs.builder()\n .cluster(\"projects/my-project-name/locations/us-west1/clusters/example-cluster-name\")\n .build())\n .project(\"my-project-name\")\n .requireApproval(false)\n .annotations(Map.ofEntries(\n Map.entry(\"my_first_annotation\", \"example-annotation-1\"),\n Map.entry(\"my_second_annotation\", \"example-annotation-2\")\n ))\n .labels(Map.ofEntries(\n Map.entry(\"my_first_label\", \"example-label-1\"),\n Map.entry(\"my_second_label\", \"example-label-2\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:clouddeploy:Target\n properties:\n location: us-west1\n name: target\n deployParameters:\n deployParameterKey: deployParameterValue\n description: basic description\n gke:\n cluster: projects/my-project-name/locations/us-west1/clusters/example-cluster-name\n project: my-project-name\n requireApproval: false\n annotations:\n my_first_annotation: example-annotation-1\n my_second_annotation: example-annotation-2\n labels:\n my_first_label: example-label-1\n my_second_label: example-label-2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTarget can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/targets/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Target can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:clouddeploy/target:Target default projects/{{project}}/locations/{{location}}/targets/{{name}}\n```\n\n```sh\n$ pulumi import gcp:clouddeploy/target:Target default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:clouddeploy/target:Target default {{location}}/{{name}}\n```\n\n", "properties": { "annotations": { "type": "object", @@ -141802,7 +141802,7 @@ } }, "gcp:cloudfunctionsv2/function:Function": { - "description": "A Cloud Function that contains user computation executed in response to an event.\n\n\nTo get more information about function, see:\n\n* [API documentation](https://cloud.google.com/functions/docs/reference/rest/v2beta/projects.locations.functions)\n\n## Example Usage\n\n### Cloudfunctions2 Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"function-v2\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"function-v2\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloHttp\",\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"max_instance_count\": 1,\n \"available_memory\": \"256M\",\n \"timeout_seconds\": 60,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"function-v2\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.Sprintf(\"%v-gcf-source\", project),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-v2\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = \"my-project-name\";\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"function-v2\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: function-v2\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account\",\n});\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"functions2-topic\"});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"gcf-function\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloPubSub\",\n environmentVariables: {\n BUILD_CONFIG_TEST: \"build_test\",\n },\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 3,\n minInstanceCount: 1,\n availableMemory: \"4Gi\",\n timeoutSeconds: 60,\n maxInstanceRequestConcurrency: 80,\n availableCpu: \"4\",\n environmentVariables: {\n SERVICE_CONFIG_TEST: \"config_test\",\n SERVICE_CONFIG_DIFF_TEST: account.email,\n },\n ingressSettings: \"ALLOW_INTERNAL_ONLY\",\n allTrafficOnLatestRevision: true,\n serviceAccountEmail: account.email,\n },\n eventTrigger: {\n triggerRegion: \"us-central1\",\n eventType: \"google.cloud.pubsub.topic.v1.messagePublished\",\n pubsubTopic: topic.id,\n retryPolicy: \"RETRY_POLICY_RETRY\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account\")\ntopic = gcp.pubsub.Topic(\"topic\", name=\"functions2-topic\")\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"gcf-function\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloPubSub\",\n \"environment_variables\": {\n \"buil_d__confi_g__test\": \"build_test\",\n },\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"max_instance_count\": 3,\n \"min_instance_count\": 1,\n \"available_memory\": \"4Gi\",\n \"timeout_seconds\": 60,\n \"max_instance_request_concurrency\": 80,\n \"available_cpu\": \"4\",\n \"environment_variables\": {\n \"servic_e__confi_g__test\": \"config_test\",\n \"servic_e__confi_g__dif_f__test\": account.email,\n },\n \"ingress_settings\": \"ALLOW_INTERNAL_ONLY\",\n \"all_traffic_on_latest_revision\": True,\n \"service_account_email\": account.email,\n },\n event_trigger={\n \"trigger_region\": \"us-central1\",\n \"event_type\": \"google.cloud.pubsub.topic.v1.messagePublished\",\n \"pubsub_topic\": topic.id,\n \"retry_policy\": \"RETRY_POLICY_RETRY\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account\",\n });\n\n var topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n Name = \"functions2-topic\",\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"gcf-function\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloPubSub\",\n EnvironmentVariables = \n {\n { \"BUILD_CONFIG_TEST\", \"build_test\" },\n },\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 3,\n MinInstanceCount = 1,\n AvailableMemory = \"4Gi\",\n TimeoutSeconds = 60,\n MaxInstanceRequestConcurrency = 80,\n AvailableCpu = \"4\",\n EnvironmentVariables = \n {\n { \"SERVICE_CONFIG_TEST\", \"config_test\" },\n { \"SERVICE_CONFIG_DIFF_TEST\", account.Email },\n },\n IngressSettings = \"ALLOW_INTERNAL_ONLY\",\n AllTrafficOnLatestRevision = true,\n ServiceAccountEmail = account.Email,\n },\n EventTrigger = new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerArgs\n {\n TriggerRegion = \"us-central1\",\n EventType = \"google.cloud.pubsub.topic.v1.messagePublished\",\n PubsubTopic = topic.Id,\n RetryPolicy = \"RETRY_POLICY_RETRY\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttopic, err := pubsub.NewTopic(ctx, \"topic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"functions2-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.Sprintf(\"%v-gcf-source\", project),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"gcf-function\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloPubSub\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"BUILD_CONFIG_TEST\": pulumi.String(\"build_test\"),\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(3),\n\t\t\t\tMinInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"4Gi\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tMaxInstanceRequestConcurrency: pulumi.Int(80),\n\t\t\t\tAvailableCpu: pulumi.String(\"4\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"SERVICE_CONFIG_TEST\": pulumi.String(\"config_test\"),\n\t\t\t\t\t\"SERVICE_CONFIG_DIFF_TEST\": account.Email,\n\t\t\t\t},\n\t\t\t\tIngressSettings: pulumi.String(\"ALLOW_INTERNAL_ONLY\"),\n\t\t\t\tAllTrafficOnLatestRevision: pulumi.Bool(true),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t},\n\t\t\tEventTrigger: \u0026cloudfunctionsv2.FunctionEventTriggerArgs{\n\t\t\t\tTriggerRegion: pulumi.String(\"us-central1\"),\n\t\t\t\tEventType: pulumi.String(\"google.cloud.pubsub.topic.v1.messagePublished\"),\n\t\t\t\tPubsubTopic: topic.ID(),\n\t\t\t\tRetryPolicy: pulumi.String(\"RETRY_POLICY_RETRY\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionEventTriggerArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = \"my-project-name\";\n\n var account = new Account(\"account\", AccountArgs.builder()\n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account\")\n .build());\n\n var topic = new Topic(\"topic\", TopicArgs.builder()\n .name(\"functions2-topic\")\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"gcf-function\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloPubSub\")\n .environmentVariables(Map.of(\"BUILD_CONFIG_TEST\", \"build_test\"))\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(3)\n .minInstanceCount(1)\n .availableMemory(\"4Gi\")\n .timeoutSeconds(60)\n .maxInstanceRequestConcurrency(80)\n .availableCpu(\"4\")\n .environmentVariables(Map.ofEntries(\n Map.entry(\"SERVICE_CONFIG_TEST\", \"config_test\"),\n Map.entry(\"SERVICE_CONFIG_DIFF_TEST\", account.email())\n ))\n .ingressSettings(\"ALLOW_INTERNAL_ONLY\")\n .allTrafficOnLatestRevision(true)\n .serviceAccountEmail(account.email())\n .build())\n .eventTrigger(FunctionEventTriggerArgs.builder()\n .triggerRegion(\"us-central1\")\n .eventType(\"google.cloud.pubsub.topic.v1.messagePublished\")\n .pubsubTopic(topic.id())\n .retryPolicy(\"RETRY_POLICY_RETRY\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: functions2-topic\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: gcf-function\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloPubSub\n environmentVariables:\n BUILD_CONFIG_TEST: build_test\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 3\n minInstanceCount: 1\n availableMemory: 4Gi\n timeoutSeconds: 60\n maxInstanceRequestConcurrency: 80\n availableCpu: '4'\n environmentVariables:\n SERVICE_CONFIG_TEST: config_test\n SERVICE_CONFIG_DIFF_TEST: ${account.email}\n ingressSettings: ALLOW_INTERNAL_ONLY\n allTrafficOnLatestRevision: true\n serviceAccountEmail: ${account.email}\n eventTrigger:\n triggerRegion: us-central1\n eventType: google.cloud.pubsub.topic.v1.messagePublished\n pubsubTopic: ${topic.id}\n retryPolicy: RETRY_POLICY_RETRY\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Scheduler Auth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account\",\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"gcf-function\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n minInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n serviceAccountEmail: account.email,\n },\n});\nconst invoker = new gcp.cloudfunctionsv2.FunctionIamMember(\"invoker\", {\n project: _function.project,\n location: _function.location,\n cloudFunction: _function.name,\n role: \"roles/cloudfunctions.invoker\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst cloudRunInvoker = new gcp.cloudrun.IamMember(\"cloud_run_invoker\", {\n project: _function.project,\n location: _function.location,\n service: _function.name,\n role: \"roles/run.invoker\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst invokeCloudFunction = new gcp.cloudscheduler.Job(\"invoke_cloud_function\", {\n name: \"invoke-gcf-function\",\n description: \"Schedule the HTTPS trigger for cloud function\",\n schedule: \"0 0 * * *\",\n project: _function.project,\n region: _function.location,\n httpTarget: {\n uri: _function.serviceConfig.apply(serviceConfig =\u003e serviceConfig?.uri),\n httpMethod: \"POST\",\n oidcToken: {\n audience: _function.serviceConfig.apply(serviceConfig =\u003e `${serviceConfig?.uri}/`),\n serviceAccountEmail: account.email,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account\")\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"gcf-function\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloHttp\",\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"min_instance_count\": 1,\n \"available_memory\": \"256M\",\n \"timeout_seconds\": 60,\n \"service_account_email\": account.email,\n })\ninvoker = gcp.cloudfunctionsv2.FunctionIamMember(\"invoker\",\n project=function.project,\n location=function.location,\n cloud_function=function.name,\n role=\"roles/cloudfunctions.invoker\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\ncloud_run_invoker = gcp.cloudrun.IamMember(\"cloud_run_invoker\",\n project=function.project,\n location=function.location,\n service=function.name,\n role=\"roles/run.invoker\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\ninvoke_cloud_function = gcp.cloudscheduler.Job(\"invoke_cloud_function\",\n name=\"invoke-gcf-function\",\n description=\"Schedule the HTTPS trigger for cloud function\",\n schedule=\"0 0 * * *\",\n project=function.project,\n region=function.location,\n http_target={\n \"uri\": function.service_config.uri,\n \"http_method\": \"POST\",\n \"oidc_token\": {\n \"audience\": function.service_config.apply(lambda service_config: f\"{service_config.uri}/\"),\n \"service_account_email\": account.email,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account\",\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"gcf-function\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MinInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n ServiceAccountEmail = account.Email,\n },\n });\n\n var invoker = new Gcp.CloudFunctionsV2.FunctionIamMember(\"invoker\", new()\n {\n Project = function.Project,\n Location = function.Location,\n CloudFunction = function.Name,\n Role = \"roles/cloudfunctions.invoker\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var cloudRunInvoker = new Gcp.CloudRun.IamMember(\"cloud_run_invoker\", new()\n {\n Project = function.Project,\n Location = function.Location,\n Service = function.Name,\n Role = \"roles/run.invoker\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var invokeCloudFunction = new Gcp.CloudScheduler.Job(\"invoke_cloud_function\", new()\n {\n Name = \"invoke-gcf-function\",\n Description = \"Schedule the HTTPS trigger for cloud function\",\n Schedule = \"0 0 * * *\",\n Project = function.Project,\n Region = function.Location,\n HttpTarget = new Gcp.CloudScheduler.Inputs.JobHttpTargetArgs\n {\n Uri = function.ServiceConfig.Apply(serviceConfig =\u003e serviceConfig?.Uri),\n HttpMethod = \"POST\",\n OidcToken = new Gcp.CloudScheduler.Inputs.JobHttpTargetOidcTokenArgs\n {\n Audience = function.ServiceConfig.Apply(serviceConfig =\u003e $\"{serviceConfig?.Uri}/\"),\n ServiceAccountEmail = account.Email,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrun\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudscheduler\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.Sprintf(\"%v-gcf-source\", project),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfunction, err := cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"gcf-function\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMinInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunctionIamMember(ctx, \"invoker\", \u0026cloudfunctionsv2.FunctionIamMemberArgs{\n\t\t\tProject: function.Project,\n\t\t\tLocation: function.Location,\n\t\t\tCloudFunction: function.Name,\n\t\t\tRole: pulumi.String(\"roles/cloudfunctions.invoker\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrun.NewIamMember(ctx, \"cloud_run_invoker\", \u0026cloudrun.IamMemberArgs{\n\t\t\tProject: function.Project,\n\t\t\tLocation: function.Location,\n\t\t\tService: function.Name,\n\t\t\tRole: pulumi.String(\"roles/run.invoker\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudscheduler.NewJob(ctx, \"invoke_cloud_function\", \u0026cloudscheduler.JobArgs{\n\t\t\tName: pulumi.String(\"invoke-gcf-function\"),\n\t\t\tDescription: pulumi.String(\"Schedule the HTTPS trigger for cloud function\"),\n\t\t\tSchedule: pulumi.String(\"0 0 * * *\"),\n\t\t\tProject: function.Project,\n\t\t\tRegion: function.Location,\n\t\t\tHttpTarget: \u0026cloudscheduler.JobHttpTargetArgs{\n\t\t\t\tUri: function.ServiceConfig.ApplyT(func(serviceConfig cloudfunctionsv2.FunctionServiceConfig) (*string, error) {\n\t\t\t\t\treturn \u0026serviceConfig.Uri, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tHttpMethod: pulumi.String(\"POST\"),\n\t\t\t\tOidcToken: \u0026cloudscheduler.JobHttpTargetOidcTokenArgs{\n\t\t\t\t\tAudience: function.ServiceConfig.ApplyT(func(serviceConfig cloudfunctionsv2.FunctionServiceConfig) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"%v/\", serviceConfig.Uri), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionIamMember;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionIamMemberArgs;\nimport com.pulumi.gcp.cloudrun.IamMember;\nimport com.pulumi.gcp.cloudrun.IamMemberArgs;\nimport com.pulumi.gcp.cloudscheduler.Job;\nimport com.pulumi.gcp.cloudscheduler.JobArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetOidcTokenArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = \"my-project-name\";\n\n var account = new Account(\"account\", AccountArgs.builder()\n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account\")\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"gcf-function\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .minInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .serviceAccountEmail(account.email())\n .build())\n .build());\n\n var invoker = new FunctionIamMember(\"invoker\", FunctionIamMemberArgs.builder()\n .project(function.project())\n .location(function.location())\n .cloudFunction(function.name())\n .role(\"roles/cloudfunctions.invoker\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var cloudRunInvoker = new IamMember(\"cloudRunInvoker\", IamMemberArgs.builder()\n .project(function.project())\n .location(function.location())\n .service(function.name())\n .role(\"roles/run.invoker\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var invokeCloudFunction = new Job(\"invokeCloudFunction\", JobArgs.builder()\n .name(\"invoke-gcf-function\")\n .description(\"Schedule the HTTPS trigger for cloud function\")\n .schedule(\"0 0 * * *\")\n .project(function.project())\n .region(function.location())\n .httpTarget(JobHttpTargetArgs.builder()\n .uri(function.serviceConfig().applyValue(serviceConfig -\u003e serviceConfig.uri()))\n .httpMethod(\"POST\")\n .oidcToken(JobHttpTargetOidcTokenArgs.builder()\n .audience(function.serviceConfig().applyValue(serviceConfig -\u003e String.format(\"%s/\", serviceConfig.uri())))\n .serviceAccountEmail(account.email())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: gcf-function\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n minInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n serviceAccountEmail: ${account.email}\n invoker:\n type: gcp:cloudfunctionsv2:FunctionIamMember\n properties:\n project: ${function.project}\n location: ${function.location}\n cloudFunction: ${function.name}\n role: roles/cloudfunctions.invoker\n member: serviceAccount:${account.email}\n cloudRunInvoker:\n type: gcp:cloudrun:IamMember\n name: cloud_run_invoker\n properties:\n project: ${function.project}\n location: ${function.location}\n service: ${function.name}\n role: roles/run.invoker\n member: serviceAccount:${account.email}\n invokeCloudFunction:\n type: gcp:cloudscheduler:Job\n name: invoke_cloud_function\n properties:\n name: invoke-gcf-function\n description: Schedule the HTTPS trigger for cloud function\n schedule: 0 0 * * *\n project: ${function.project}\n region: ${function.location}\n httpTarget:\n uri: ${function.serviceConfig.uri}\n httpMethod: POST\n oidcToken:\n audience: ${function.serviceConfig.uri}/\n serviceAccountEmail: ${account.email}\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Basic Gcs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst source_bucket = new gcp.storage.Bucket(\"source-bucket\", {\n name: \"gcf-source-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: source_bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst trigger_bucket = new gcp.storage.Bucket(\"trigger-bucket\", {\n name: \"gcf-trigger-bucket\",\n location: \"us-central1\",\n uniformBucketLevelAccess: true,\n});\nconst gcsAccount = gcp.storage.getProjectServiceAccount({});\n// To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n// (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\nconst gcs_pubsub_publishing = new gcp.projects.IAMMember(\"gcs-pubsub-publishing\", {\n project: \"my-project-name\",\n role: \"roles/pubsub.publisher\",\n member: gcsAccount.then(gcsAccount =\u003e `serviceAccount:${gcsAccount.emailAddress}`),\n});\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account - used for both the cloud function and eventarc trigger in the test\",\n});\n// Permissions on the service account used by the function and Eventarc trigger\nconst invoking = new gcp.projects.IAMMember(\"invoking\", {\n project: \"my-project-name\",\n role: \"roles/run.invoker\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n}, {\n dependsOn: [gcs_pubsub_publishing],\n});\nconst event_receiving = new gcp.projects.IAMMember(\"event-receiving\", {\n project: \"my-project-name\",\n role: \"roles/eventarc.eventReceiver\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n}, {\n dependsOn: [invoking],\n});\nconst artifactregistry_reader = new gcp.projects.IAMMember(\"artifactregistry-reader\", {\n project: \"my-project-name\",\n role: \"roles/artifactregistry.reader\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n}, {\n dependsOn: [event_receiving],\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"gcf-function\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs12\",\n entryPoint: \"entryPoint\",\n environmentVariables: {\n BUILD_CONFIG_TEST: \"build_test\",\n },\n source: {\n storageSource: {\n bucket: source_bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 3,\n minInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n environmentVariables: {\n SERVICE_CONFIG_TEST: \"config_test\",\n },\n ingressSettings: \"ALLOW_INTERNAL_ONLY\",\n allTrafficOnLatestRevision: true,\n serviceAccountEmail: account.email,\n },\n eventTrigger: {\n eventType: \"google.cloud.storage.object.v1.finalized\",\n retryPolicy: \"RETRY_POLICY_RETRY\",\n serviceAccountEmail: account.email,\n eventFilters: [{\n attribute: \"bucket\",\n value: trigger_bucket.name,\n }],\n },\n}, {\n dependsOn: [\n event_receiving,\n artifactregistry_reader,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsource_bucket = gcp.storage.Bucket(\"source-bucket\",\n name=\"gcf-source-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=source_bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\ntrigger_bucket = gcp.storage.Bucket(\"trigger-bucket\",\n name=\"gcf-trigger-bucket\",\n location=\"us-central1\",\n uniform_bucket_level_access=True)\ngcs_account = gcp.storage.get_project_service_account()\n# To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n# (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\ngcs_pubsub_publishing = gcp.projects.IAMMember(\"gcs-pubsub-publishing\",\n project=\"my-project-name\",\n role=\"roles/pubsub.publisher\",\n member=f\"serviceAccount:{gcs_account.email_address}\")\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account - used for both the cloud function and eventarc trigger in the test\")\n# Permissions on the service account used by the function and Eventarc trigger\ninvoking = gcp.projects.IAMMember(\"invoking\",\n project=\"my-project-name\",\n role=\"roles/run.invoker\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"),\n opts = pulumi.ResourceOptions(depends_on=[gcs_pubsub_publishing]))\nevent_receiving = gcp.projects.IAMMember(\"event-receiving\",\n project=\"my-project-name\",\n role=\"roles/eventarc.eventReceiver\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"),\n opts = pulumi.ResourceOptions(depends_on=[invoking]))\nartifactregistry_reader = gcp.projects.IAMMember(\"artifactregistry-reader\",\n project=\"my-project-name\",\n role=\"roles/artifactregistry.reader\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"),\n opts = pulumi.ResourceOptions(depends_on=[event_receiving]))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"gcf-function\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs12\",\n \"entry_point\": \"entryPoint\",\n \"environment_variables\": {\n \"buil_d__confi_g__test\": \"build_test\",\n },\n \"source\": {\n \"storage_source\": {\n \"bucket\": source_bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"max_instance_count\": 3,\n \"min_instance_count\": 1,\n \"available_memory\": \"256M\",\n \"timeout_seconds\": 60,\n \"environment_variables\": {\n \"servic_e__confi_g__test\": \"config_test\",\n },\n \"ingress_settings\": \"ALLOW_INTERNAL_ONLY\",\n \"all_traffic_on_latest_revision\": True,\n \"service_account_email\": account.email,\n },\n event_trigger={\n \"event_type\": \"google.cloud.storage.object.v1.finalized\",\n \"retry_policy\": \"RETRY_POLICY_RETRY\",\n \"service_account_email\": account.email,\n \"event_filters\": [{\n \"attribute\": \"bucket\",\n \"value\": trigger_bucket.name,\n }],\n },\n opts = pulumi.ResourceOptions(depends_on=[\n event_receiving,\n artifactregistry_reader,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var source_bucket = new Gcp.Storage.Bucket(\"source-bucket\", new()\n {\n Name = \"gcf-source-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = source_bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var trigger_bucket = new Gcp.Storage.Bucket(\"trigger-bucket\", new()\n {\n Name = \"gcf-trigger-bucket\",\n Location = \"us-central1\",\n UniformBucketLevelAccess = true,\n });\n\n var gcsAccount = Gcp.Storage.GetProjectServiceAccount.Invoke();\n\n // To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n // (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\n var gcs_pubsub_publishing = new Gcp.Projects.IAMMember(\"gcs-pubsub-publishing\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/pubsub.publisher\",\n Member = $\"serviceAccount:{gcsAccount.Apply(getProjectServiceAccountResult =\u003e getProjectServiceAccountResult.EmailAddress)}\",\n });\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account - used for both the cloud function and eventarc trigger in the test\",\n });\n\n // Permissions on the service account used by the function and Eventarc trigger\n var invoking = new Gcp.Projects.IAMMember(\"invoking\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/run.invoker\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n gcs_pubsub_publishing,\n },\n });\n\n var event_receiving = new Gcp.Projects.IAMMember(\"event-receiving\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/eventarc.eventReceiver\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n invoking,\n },\n });\n\n var artifactregistry_reader = new Gcp.Projects.IAMMember(\"artifactregistry-reader\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/artifactregistry.reader\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n event_receiving,\n },\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"gcf-function\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs12\",\n EntryPoint = \"entryPoint\",\n EnvironmentVariables = \n {\n { \"BUILD_CONFIG_TEST\", \"build_test\" },\n },\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = source_bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 3,\n MinInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n EnvironmentVariables = \n {\n { \"SERVICE_CONFIG_TEST\", \"config_test\" },\n },\n IngressSettings = \"ALLOW_INTERNAL_ONLY\",\n AllTrafficOnLatestRevision = true,\n ServiceAccountEmail = account.Email,\n },\n EventTrigger = new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerArgs\n {\n EventType = \"google.cloud.storage.object.v1.finalized\",\n RetryPolicy = \"RETRY_POLICY_RETRY\",\n ServiceAccountEmail = account.Email,\n EventFilters = new[]\n {\n new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerEventFilterArgs\n {\n Attribute = \"bucket\",\n Value = trigger_bucket.Name,\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n event_receiving,\n artifactregistry_reader,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := storage.NewBucket(ctx, \"source-bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"gcf-source-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: source_bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewBucket(ctx, \"trigger-bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"gcf-trigger-bucket\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tgcsAccount, err := storage.GetProjectServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n\t\t// (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\n\t\t_, err = projects.NewIAMMember(ctx, \"gcs-pubsub-publishing\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/pubsub.publisher\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:%v\", gcsAccount.EmailAddress),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account - used for both the cloud function and eventarc trigger in the test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Permissions on the service account used by the function and Eventarc trigger\n\t\tinvoking, err := projects.NewIAMMember(ctx, \"invoking\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/run.invoker\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tgcs_pubsub_publishing,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"event-receiving\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/eventarc.eventReceiver\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tinvoking,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"artifactregistry-reader\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/artifactregistry.reader\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tevent_receiving,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"gcf-function\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs12\"),\n\t\t\t\tEntryPoint: pulumi.String(\"entryPoint\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"BUILD_CONFIG_TEST\": pulumi.String(\"build_test\"),\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: source_bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(3),\n\t\t\t\tMinInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"SERVICE_CONFIG_TEST\": pulumi.String(\"config_test\"),\n\t\t\t\t},\n\t\t\t\tIngressSettings: pulumi.String(\"ALLOW_INTERNAL_ONLY\"),\n\t\t\t\tAllTrafficOnLatestRevision: pulumi.Bool(true),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t},\n\t\t\tEventTrigger: \u0026cloudfunctionsv2.FunctionEventTriggerArgs{\n\t\t\t\tEventType: pulumi.String(\"google.cloud.storage.object.v1.finalized\"),\n\t\t\t\tRetryPolicy: pulumi.String(\"RETRY_POLICY_RETRY\"),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t\tEventFilters: cloudfunctionsv2.FunctionEventTriggerEventFilterArray{\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionEventTriggerEventFilterArgs{\n\t\t\t\t\t\tAttribute: pulumi.String(\"bucket\"),\n\t\t\t\t\t\tValue: trigger_bucket.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tevent_receiving,\n\t\t\tartifactregistry_reader,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.storage.StorageFunctions;\nimport com.pulumi.gcp.storage.inputs.GetProjectServiceAccountArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionEventTriggerArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var source_bucket = new Bucket(\"source-bucket\", BucketArgs.builder()\n .name(\"gcf-source-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(source_bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var trigger_bucket = new Bucket(\"trigger-bucket\", BucketArgs.builder()\n .name(\"gcf-trigger-bucket\")\n .location(\"us-central1\")\n .uniformBucketLevelAccess(true)\n .build());\n\n final var gcsAccount = StorageFunctions.getProjectServiceAccount();\n\n // To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n // (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\n var gcs_pubsub_publishing = new IAMMember(\"gcs-pubsub-publishing\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/pubsub.publisher\")\n .member(String.format(\"serviceAccount:%s\", gcsAccount.applyValue(getProjectServiceAccountResult -\u003e getProjectServiceAccountResult.emailAddress())))\n .build());\n\n var account = new Account(\"account\", AccountArgs.builder()\n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account - used for both the cloud function and eventarc trigger in the test\")\n .build());\n\n // Permissions on the service account used by the function and Eventarc trigger\n var invoking = new IAMMember(\"invoking\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/run.invoker\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build(), CustomResourceOptions.builder()\n .dependsOn(gcs_pubsub_publishing)\n .build());\n\n var event_receiving = new IAMMember(\"event-receiving\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/eventarc.eventReceiver\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build(), CustomResourceOptions.builder()\n .dependsOn(invoking)\n .build());\n\n var artifactregistry_reader = new IAMMember(\"artifactregistry-reader\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/artifactregistry.reader\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build(), CustomResourceOptions.builder()\n .dependsOn(event_receiving)\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"gcf-function\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs12\")\n .entryPoint(\"entryPoint\")\n .environmentVariables(Map.of(\"BUILD_CONFIG_TEST\", \"build_test\"))\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(source_bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(3)\n .minInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .environmentVariables(Map.of(\"SERVICE_CONFIG_TEST\", \"config_test\"))\n .ingressSettings(\"ALLOW_INTERNAL_ONLY\")\n .allTrafficOnLatestRevision(true)\n .serviceAccountEmail(account.email())\n .build())\n .eventTrigger(FunctionEventTriggerArgs.builder()\n .eventType(\"google.cloud.storage.object.v1.finalized\")\n .retryPolicy(\"RETRY_POLICY_RETRY\")\n .serviceAccountEmail(account.email())\n .eventFilters(FunctionEventTriggerEventFilterArgs.builder()\n .attribute(\"bucket\")\n .value(trigger_bucket.name())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n event_receiving,\n artifactregistry_reader)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n source-bucket:\n type: gcp:storage:Bucket\n properties:\n name: gcf-source-bucket\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${[\"source-bucket\"].name}\n source:\n fn::FileAsset: function-source.zip\n trigger-bucket:\n type: gcp:storage:Bucket\n properties:\n name: gcf-trigger-bucket\n location: us-central1\n uniformBucketLevelAccess: true\n # To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n # (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\n gcs-pubsub-publishing:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/pubsub.publisher\n member: serviceAccount:${gcsAccount.emailAddress}\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account - used for both the cloud function and eventarc trigger in the test\n # Permissions on the service account used by the function and Eventarc trigger\n invoking:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/run.invoker\n member: serviceAccount:${account.email}\n options:\n dependson:\n - ${[\"gcs-pubsub-publishing\"]}\n event-receiving:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/eventarc.eventReceiver\n member: serviceAccount:${account.email}\n options:\n dependson:\n - ${invoking}\n artifactregistry-reader:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/artifactregistry.reader\n member: serviceAccount:${account.email}\n options:\n dependson:\n - ${[\"event-receiving\"]}\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: gcf-function\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs12\n entryPoint: entryPoint\n environmentVariables:\n BUILD_CONFIG_TEST: build_test\n source:\n storageSource:\n bucket: ${[\"source-bucket\"].name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 3\n minInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n environmentVariables:\n SERVICE_CONFIG_TEST: config_test\n ingressSettings: ALLOW_INTERNAL_ONLY\n allTrafficOnLatestRevision: true\n serviceAccountEmail: ${account.email}\n eventTrigger:\n eventType: google.cloud.storage.object.v1.finalized\n retryPolicy: RETRY_POLICY_RETRY\n serviceAccountEmail: ${account.email}\n eventFilters:\n - attribute: bucket\n value: ${[\"trigger-bucket\"].name}\n options:\n dependson:\n - ${[\"event-receiving\"]}\n - ${[\"artifactregistry-reader\"]}\nvariables:\n gcsAccount:\n fn::invoke:\n Function: gcp:storage:getProjectServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Basic Auditlogs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// This example follows the examples shown in this Google Cloud Community blog post\n// https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n// and the docs:\n// https://cloud.google.com/eventarc/docs/path-patterns\nconst source_bucket = new gcp.storage.Bucket(\"source-bucket\", {\n name: \"gcf-source-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: source_bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account - used for both the cloud function and eventarc trigger in the test\",\n});\n// Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n// Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n// google_cloudfunctions2_function below (Audit Log events have path pattern support)\nconst audit_log_bucket = new gcp.storage.Bucket(\"audit-log-bucket\", {\n name: \"gcf-auditlog-bucket\",\n location: \"us-central1\",\n uniformBucketLevelAccess: true,\n});\n// Permissions on the service account used by the function and Eventarc trigger\nconst invoking = new gcp.projects.IAMMember(\"invoking\", {\n project: \"my-project-name\",\n role: \"roles/run.invoker\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst event_receiving = new gcp.projects.IAMMember(\"event-receiving\", {\n project: \"my-project-name\",\n role: \"roles/eventarc.eventReceiver\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n}, {\n dependsOn: [invoking],\n});\nconst artifactregistry_reader = new gcp.projects.IAMMember(\"artifactregistry-reader\", {\n project: \"my-project-name\",\n role: \"roles/artifactregistry.reader\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n}, {\n dependsOn: [event_receiving],\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"gcf-function\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs12\",\n entryPoint: \"entryPoint\",\n environmentVariables: {\n BUILD_CONFIG_TEST: \"build_test\",\n },\n source: {\n storageSource: {\n bucket: source_bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 3,\n minInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n environmentVariables: {\n SERVICE_CONFIG_TEST: \"config_test\",\n },\n ingressSettings: \"ALLOW_INTERNAL_ONLY\",\n allTrafficOnLatestRevision: true,\n serviceAccountEmail: account.email,\n },\n eventTrigger: {\n triggerRegion: \"us-central1\",\n eventType: \"google.cloud.audit.log.v1.written\",\n retryPolicy: \"RETRY_POLICY_RETRY\",\n serviceAccountEmail: account.email,\n eventFilters: [\n {\n attribute: \"serviceName\",\n value: \"storage.googleapis.com\",\n },\n {\n attribute: \"methodName\",\n value: \"storage.objects.create\",\n },\n {\n attribute: \"resourceName\",\n value: pulumi.interpolate`/projects/_/buckets/${audit_log_bucket.name}/objects/*.txt`,\n operator: \"match-path-pattern\",\n },\n ],\n },\n}, {\n dependsOn: [\n event_receiving,\n artifactregistry_reader,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# This example follows the examples shown in this Google Cloud Community blog post\n# https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n# and the docs:\n# https://cloud.google.com/eventarc/docs/path-patterns\nsource_bucket = gcp.storage.Bucket(\"source-bucket\",\n name=\"gcf-source-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=source_bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account - used for both the cloud function and eventarc trigger in the test\")\n# Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n# Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n# google_cloudfunctions2_function below (Audit Log events have path pattern support)\naudit_log_bucket = gcp.storage.Bucket(\"audit-log-bucket\",\n name=\"gcf-auditlog-bucket\",\n location=\"us-central1\",\n uniform_bucket_level_access=True)\n# Permissions on the service account used by the function and Eventarc trigger\ninvoking = gcp.projects.IAMMember(\"invoking\",\n project=\"my-project-name\",\n role=\"roles/run.invoker\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nevent_receiving = gcp.projects.IAMMember(\"event-receiving\",\n project=\"my-project-name\",\n role=\"roles/eventarc.eventReceiver\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"),\n opts = pulumi.ResourceOptions(depends_on=[invoking]))\nartifactregistry_reader = gcp.projects.IAMMember(\"artifactregistry-reader\",\n project=\"my-project-name\",\n role=\"roles/artifactregistry.reader\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"),\n opts = pulumi.ResourceOptions(depends_on=[event_receiving]))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"gcf-function\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs12\",\n \"entry_point\": \"entryPoint\",\n \"environment_variables\": {\n \"buil_d__confi_g__test\": \"build_test\",\n },\n \"source\": {\n \"storage_source\": {\n \"bucket\": source_bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"max_instance_count\": 3,\n \"min_instance_count\": 1,\n \"available_memory\": \"256M\",\n \"timeout_seconds\": 60,\n \"environment_variables\": {\n \"servic_e__confi_g__test\": \"config_test\",\n },\n \"ingress_settings\": \"ALLOW_INTERNAL_ONLY\",\n \"all_traffic_on_latest_revision\": True,\n \"service_account_email\": account.email,\n },\n event_trigger={\n \"trigger_region\": \"us-central1\",\n \"event_type\": \"google.cloud.audit.log.v1.written\",\n \"retry_policy\": \"RETRY_POLICY_RETRY\",\n \"service_account_email\": account.email,\n \"event_filters\": [\n {\n \"attribute\": \"serviceName\",\n \"value\": \"storage.googleapis.com\",\n },\n {\n \"attribute\": \"methodName\",\n \"value\": \"storage.objects.create\",\n },\n {\n \"attribute\": \"resourceName\",\n \"value\": audit_log_bucket.name.apply(lambda name: f\"/projects/_/buckets/{name}/objects/*.txt\"),\n \"operator\": \"match-path-pattern\",\n },\n ],\n },\n opts = pulumi.ResourceOptions(depends_on=[\n event_receiving,\n artifactregistry_reader,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // This example follows the examples shown in this Google Cloud Community blog post\n // https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n // and the docs:\n // https://cloud.google.com/eventarc/docs/path-patterns\n var source_bucket = new Gcp.Storage.Bucket(\"source-bucket\", new()\n {\n Name = \"gcf-source-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = source_bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account - used for both the cloud function and eventarc trigger in the test\",\n });\n\n // Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n // Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n // google_cloudfunctions2_function below (Audit Log events have path pattern support)\n var audit_log_bucket = new Gcp.Storage.Bucket(\"audit-log-bucket\", new()\n {\n Name = \"gcf-auditlog-bucket\",\n Location = \"us-central1\",\n UniformBucketLevelAccess = true,\n });\n\n // Permissions on the service account used by the function and Eventarc trigger\n var invoking = new Gcp.Projects.IAMMember(\"invoking\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/run.invoker\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var event_receiving = new Gcp.Projects.IAMMember(\"event-receiving\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/eventarc.eventReceiver\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n invoking,\n },\n });\n\n var artifactregistry_reader = new Gcp.Projects.IAMMember(\"artifactregistry-reader\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/artifactregistry.reader\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n event_receiving,\n },\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"gcf-function\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs12\",\n EntryPoint = \"entryPoint\",\n EnvironmentVariables = \n {\n { \"BUILD_CONFIG_TEST\", \"build_test\" },\n },\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = source_bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 3,\n MinInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n EnvironmentVariables = \n {\n { \"SERVICE_CONFIG_TEST\", \"config_test\" },\n },\n IngressSettings = \"ALLOW_INTERNAL_ONLY\",\n AllTrafficOnLatestRevision = true,\n ServiceAccountEmail = account.Email,\n },\n EventTrigger = new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerArgs\n {\n TriggerRegion = \"us-central1\",\n EventType = \"google.cloud.audit.log.v1.written\",\n RetryPolicy = \"RETRY_POLICY_RETRY\",\n ServiceAccountEmail = account.Email,\n EventFilters = new[]\n {\n new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerEventFilterArgs\n {\n Attribute = \"serviceName\",\n Value = \"storage.googleapis.com\",\n },\n new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerEventFilterArgs\n {\n Attribute = \"methodName\",\n Value = \"storage.objects.create\",\n },\n new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerEventFilterArgs\n {\n Attribute = \"resourceName\",\n Value = audit_log_bucket.Name.Apply(name =\u003e $\"/projects/_/buckets/{name}/objects/*.txt\"),\n Operator = \"match-path-pattern\",\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n event_receiving,\n artifactregistry_reader,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// This example follows the examples shown in this Google Cloud Community blog post\n\t\t// https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n\t\t// and the docs:\n\t\t// https://cloud.google.com/eventarc/docs/path-patterns\n\t\t_, err := storage.NewBucket(ctx, \"source-bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"gcf-source-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: source_bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account - used for both the cloud function and eventarc trigger in the test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n\t\t// Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n\t\t// google_cloudfunctions2_function below (Audit Log events have path pattern support)\n\t\t_, err = storage.NewBucket(ctx, \"audit-log-bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"gcf-auditlog-bucket\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Permissions on the service account used by the function and Eventarc trigger\n\t\tinvoking, err := projects.NewIAMMember(ctx, \"invoking\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/run.invoker\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"event-receiving\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/eventarc.eventReceiver\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tinvoking,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"artifactregistry-reader\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/artifactregistry.reader\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tevent_receiving,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"gcf-function\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs12\"),\n\t\t\t\tEntryPoint: pulumi.String(\"entryPoint\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"BUILD_CONFIG_TEST\": pulumi.String(\"build_test\"),\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: source_bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(3),\n\t\t\t\tMinInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"SERVICE_CONFIG_TEST\": pulumi.String(\"config_test\"),\n\t\t\t\t},\n\t\t\t\tIngressSettings: pulumi.String(\"ALLOW_INTERNAL_ONLY\"),\n\t\t\t\tAllTrafficOnLatestRevision: pulumi.Bool(true),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t},\n\t\t\tEventTrigger: \u0026cloudfunctionsv2.FunctionEventTriggerArgs{\n\t\t\t\tTriggerRegion: pulumi.String(\"us-central1\"),\n\t\t\t\tEventType: pulumi.String(\"google.cloud.audit.log.v1.written\"),\n\t\t\t\tRetryPolicy: pulumi.String(\"RETRY_POLICY_RETRY\"),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t\tEventFilters: cloudfunctionsv2.FunctionEventTriggerEventFilterArray{\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionEventTriggerEventFilterArgs{\n\t\t\t\t\t\tAttribute: pulumi.String(\"serviceName\"),\n\t\t\t\t\t\tValue: pulumi.String(\"storage.googleapis.com\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionEventTriggerEventFilterArgs{\n\t\t\t\t\t\tAttribute: pulumi.String(\"methodName\"),\n\t\t\t\t\t\tValue: pulumi.String(\"storage.objects.create\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionEventTriggerEventFilterArgs{\n\t\t\t\t\t\tAttribute: pulumi.String(\"resourceName\"),\n\t\t\t\t\t\tValue: audit_log_bucket.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\t\treturn fmt.Sprintf(\"/projects/_/buckets/%v/objects/*.txt\", name), nil\n\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t\tOperator: pulumi.String(\"match-path-pattern\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tevent_receiving,\n\t\t\tartifactregistry_reader,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionEventTriggerArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // This example follows the examples shown in this Google Cloud Community blog post\n // https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n // and the docs:\n // https://cloud.google.com/eventarc/docs/path-patterns\n var source_bucket = new Bucket(\"source-bucket\", BucketArgs.builder()\n .name(\"gcf-source-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(source_bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var account = new Account(\"account\", AccountArgs.builder()\n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account - used for both the cloud function and eventarc trigger in the test\")\n .build());\n\n // Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n // Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n // google_cloudfunctions2_function below (Audit Log events have path pattern support)\n var audit_log_bucket = new Bucket(\"audit-log-bucket\", BucketArgs.builder()\n .name(\"gcf-auditlog-bucket\")\n .location(\"us-central1\")\n .uniformBucketLevelAccess(true)\n .build());\n\n // Permissions on the service account used by the function and Eventarc trigger\n var invoking = new IAMMember(\"invoking\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/run.invoker\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var event_receiving = new IAMMember(\"event-receiving\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/eventarc.eventReceiver\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build(), CustomResourceOptions.builder()\n .dependsOn(invoking)\n .build());\n\n var artifactregistry_reader = new IAMMember(\"artifactregistry-reader\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/artifactregistry.reader\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build(), CustomResourceOptions.builder()\n .dependsOn(event_receiving)\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"gcf-function\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs12\")\n .entryPoint(\"entryPoint\")\n .environmentVariables(Map.of(\"BUILD_CONFIG_TEST\", \"build_test\"))\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(source_bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(3)\n .minInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .environmentVariables(Map.of(\"SERVICE_CONFIG_TEST\", \"config_test\"))\n .ingressSettings(\"ALLOW_INTERNAL_ONLY\")\n .allTrafficOnLatestRevision(true)\n .serviceAccountEmail(account.email())\n .build())\n .eventTrigger(FunctionEventTriggerArgs.builder()\n .triggerRegion(\"us-central1\")\n .eventType(\"google.cloud.audit.log.v1.written\")\n .retryPolicy(\"RETRY_POLICY_RETRY\")\n .serviceAccountEmail(account.email())\n .eventFilters( \n FunctionEventTriggerEventFilterArgs.builder()\n .attribute(\"serviceName\")\n .value(\"storage.googleapis.com\")\n .build(),\n FunctionEventTriggerEventFilterArgs.builder()\n .attribute(\"methodName\")\n .value(\"storage.objects.create\")\n .build(),\n FunctionEventTriggerEventFilterArgs.builder()\n .attribute(\"resourceName\")\n .value(audit_log_bucket.name().applyValue(name -\u003e String.format(\"/projects/_/buckets/%s/objects/*.txt\", name)))\n .operator(\"match-path-pattern\")\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n event_receiving,\n artifactregistry_reader)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # This example follows the examples shown in this Google Cloud Community blog post\n # https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n # and the docs:\n # https://cloud.google.com/eventarc/docs/path-patterns\n source-bucket:\n type: gcp:storage:Bucket\n properties:\n name: gcf-source-bucket\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${[\"source-bucket\"].name}\n source:\n fn::FileAsset: function-source.zip\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account - used for both the cloud function and eventarc trigger in the test\n # Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n # Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n # google_cloudfunctions2_function below (Audit Log events have path pattern support)\n audit-log-bucket:\n type: gcp:storage:Bucket\n properties:\n name: gcf-auditlog-bucket\n location: us-central1\n uniformBucketLevelAccess: true\n # Permissions on the service account used by the function and Eventarc trigger\n invoking:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/run.invoker\n member: serviceAccount:${account.email}\n event-receiving:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/eventarc.eventReceiver\n member: serviceAccount:${account.email}\n options:\n dependson:\n - ${invoking}\n artifactregistry-reader:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/artifactregistry.reader\n member: serviceAccount:${account.email}\n options:\n dependson:\n - ${[\"event-receiving\"]}\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: gcf-function\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs12\n entryPoint: entryPoint\n environmentVariables:\n BUILD_CONFIG_TEST: build_test\n source:\n storageSource:\n bucket: ${[\"source-bucket\"].name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 3\n minInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n environmentVariables:\n SERVICE_CONFIG_TEST: config_test\n ingressSettings: ALLOW_INTERNAL_ONLY\n allTrafficOnLatestRevision: true\n serviceAccountEmail: ${account.email}\n eventTrigger:\n triggerRegion: us-central1\n eventType: google.cloud.audit.log.v1.written\n retryPolicy: RETRY_POLICY_RETRY\n serviceAccountEmail: ${account.email}\n eventFilters:\n - attribute: serviceName\n value: storage.googleapis.com\n - attribute: methodName\n value: storage.objects.create\n - attribute: resourceName\n value: /projects/_/buckets/${[\"audit-log-bucket\"].name}/objects/*.txt\n operator: match-path-pattern\n options:\n dependson:\n - ${[\"event-receiving\"]}\n - ${[\"artifactregistry-reader\"]}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Basic Builder\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\nconst project = \"my-project-name\";\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account\",\n});\nconst logWriter = new gcp.projects.IAMMember(\"log_writer\", {\n project: account.project,\n role: \"roles/logging.logWriter\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst artifactRegistryWriter = new gcp.projects.IAMMember(\"artifact_registry_writer\", {\n project: account.project,\n role: \"roles/artifactregistry.writer\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst storageObjectAdmin = new gcp.projects.IAMMember(\"storage_object_admin\", {\n project: account.project,\n role: \"roles/storage.objectAdmin\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\n// builder permissions need to stablize before it can pull the source zip\nconst wait60s = new time.index.Sleep(\"wait_60s\", {createDuration: \"60s\"}, {\n dependsOn: [\n logWriter,\n artifactRegistryWriter,\n storageObjectAdmin,\n ],\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"function-v2\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n serviceAccount: account.id,\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n },\n}, {\n dependsOn: [wait60s],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\nproject = \"my-project-name\"\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account\")\nlog_writer = gcp.projects.IAMMember(\"log_writer\",\n project=account.project,\n role=\"roles/logging.logWriter\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nartifact_registry_writer = gcp.projects.IAMMember(\"artifact_registry_writer\",\n project=account.project,\n role=\"roles/artifactregistry.writer\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nstorage_object_admin = gcp.projects.IAMMember(\"storage_object_admin\",\n project=account.project,\n role=\"roles/storage.objectAdmin\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\n# builder permissions need to stablize before it can pull the source zip\nwait60s = time.index.Sleep(\"wait_60s\", create_duration=60s,\nopts = pulumi.ResourceOptions(depends_on=[\n log_writer,\n artifact_registry_writer,\n storage_object_admin,\n ]))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"function-v2\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloHttp\",\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n \"service_account\": account.id,\n },\n service_config={\n \"max_instance_count\": 1,\n \"available_memory\": \"256M\",\n \"timeout_seconds\": 60,\n },\n opts = pulumi.ResourceOptions(depends_on=[wait60s]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Time = Pulumi.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account\",\n });\n\n var logWriter = new Gcp.Projects.IAMMember(\"log_writer\", new()\n {\n Project = account.Project,\n Role = \"roles/logging.logWriter\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var artifactRegistryWriter = new Gcp.Projects.IAMMember(\"artifact_registry_writer\", new()\n {\n Project = account.Project,\n Role = \"roles/artifactregistry.writer\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var storageObjectAdmin = new Gcp.Projects.IAMMember(\"storage_object_admin\", new()\n {\n Project = account.Project,\n Role = \"roles/storage.objectAdmin\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n // builder permissions need to stablize before it can pull the source zip\n var wait60s = new Time.Index.Sleep(\"wait_60s\", new()\n {\n CreateDuration = \"60s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n logWriter,\n artifactRegistryWriter,\n storageObjectAdmin,\n },\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"function-v2\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n ServiceAccount = account.Id,\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait60s,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlogWriter, err := projects.NewIAMMember(ctx, \"log_writer\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: account.Project,\n\t\t\tRole: pulumi.String(\"roles/logging.logWriter\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tartifactRegistryWriter, err := projects.NewIAMMember(ctx, \"artifact_registry_writer\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: account.Project,\n\t\t\tRole: pulumi.String(\"roles/artifactregistry.writer\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tstorageObjectAdmin, err := projects.NewIAMMember(ctx, \"storage_object_admin\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: account.Project,\n\t\t\tRole: pulumi.String(\"roles/storage.objectAdmin\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.Sprintf(\"%v-gcf-source\", project),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// builder permissions need to stablize before it can pull the source zip\n\t\twait60s, err := time.NewSleep(ctx, \"wait_60s\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"60s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tlogWriter,\n\t\t\tartifactRegistryWriter,\n\t\t\tstorageObjectAdmin,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-v2\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tServiceAccount: account.ID(),\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait60s,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = \"my-project-name\";\n\n var account = new Account(\"account\", AccountArgs.builder()\n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account\")\n .build());\n\n var logWriter = new IAMMember(\"logWriter\", IAMMemberArgs.builder()\n .project(account.project())\n .role(\"roles/logging.logWriter\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var artifactRegistryWriter = new IAMMember(\"artifactRegistryWriter\", IAMMemberArgs.builder()\n .project(account.project())\n .role(\"roles/artifactregistry.writer\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var storageObjectAdmin = new IAMMember(\"storageObjectAdmin\", IAMMemberArgs.builder()\n .project(account.project())\n .role(\"roles/storage.objectAdmin\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n // builder permissions need to stablize before it can pull the source zip\n var wait60s = new Sleep(\"wait60s\", SleepArgs.builder()\n .createDuration(\"60s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n logWriter,\n artifactRegistryWriter,\n storageObjectAdmin)\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"function-v2\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .serviceAccount(account.id())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait60s)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account\n logWriter:\n type: gcp:projects:IAMMember\n name: log_writer\n properties:\n project: ${account.project}\n role: roles/logging.logWriter\n member: serviceAccount:${account.email}\n artifactRegistryWriter:\n type: gcp:projects:IAMMember\n name: artifact_registry_writer\n properties:\n project: ${account.project}\n role: roles/artifactregistry.writer\n member: serviceAccount:${account.email}\n storageObjectAdmin:\n type: gcp:projects:IAMMember\n name: storage_object_admin\n properties:\n project: ${account.project}\n role: roles/storage.objectAdmin\n member: serviceAccount:${account.email}\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n # builder permissions need to stablize before it can pull the source zip\n wait60s:\n type: time:sleep\n name: wait_60s\n properties:\n createDuration: 60s\n options:\n dependson:\n - ${logWriter}\n - ${artifactRegistryWriter}\n - ${storageObjectAdmin}\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: function-v2\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceAccount: ${account.id}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n options:\n dependson:\n - ${wait60s}\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Secret Env\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"secret\",\n replication: {\n userManaged: {\n replicas: [{\n location: \"us-central1\",\n }],\n },\n },\n});\nconst secretSecretVersion = new gcp.secretmanager.SecretVersion(\"secret\", {\n secret: secret.name,\n secretData: \"secret\",\n enabled: true,\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"function-secret\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n secretEnvironmentVariables: [{\n key: \"TEST\",\n projectId: project,\n secret: secret.secretId,\n version: \"latest\",\n }],\n },\n}, {\n dependsOn: [secretSecretVersion],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"secret\",\n replication={\n \"user_managed\": {\n \"replicas\": [{\n \"location\": \"us-central1\",\n }],\n },\n })\nsecret_secret_version = gcp.secretmanager.SecretVersion(\"secret\",\n secret=secret.name,\n secret_data=\"secret\",\n enabled=True)\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"function-secret\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloHttp\",\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"max_instance_count\": 1,\n \"available_memory\": \"256M\",\n \"timeout_seconds\": 60,\n \"secret_environment_variables\": [{\n \"key\": \"TEST\",\n \"project_id\": project,\n \"secret\": secret.secret_id,\n \"version\": \"latest\",\n }],\n },\n opts = pulumi.ResourceOptions(depends_on=[secret_secret_version]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n UserManaged = new Gcp.SecretManager.Inputs.SecretReplicationUserManagedArgs\n {\n Replicas = new[]\n {\n new Gcp.SecretManager.Inputs.SecretReplicationUserManagedReplicaArgs\n {\n Location = \"us-central1\",\n },\n },\n },\n },\n });\n\n var secretSecretVersion = new Gcp.SecretManager.SecretVersion(\"secret\", new()\n {\n Secret = secret.Name,\n SecretData = \"secret\",\n Enabled = true,\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"function-secret\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n SecretEnvironmentVariables = new[]\n {\n new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigSecretEnvironmentVariableArgs\n {\n Key = \"TEST\",\n ProjectId = project,\n Secret = secret.SecretId,\n Version = \"latest\",\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secretSecretVersion,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.Sprintf(\"%v-gcf-source\", project),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tUserManaged: \u0026secretmanager.SecretReplicationUserManagedArgs{\n\t\t\t\t\tReplicas: secretmanager.SecretReplicationUserManagedReplicaArray{\n\t\t\t\t\t\t\u0026secretmanager.SecretReplicationUserManagedReplicaArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecretSecretVersion, err := secretmanager.NewSecretVersion(ctx, \"secret\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.Name,\n\t\t\tSecretData: pulumi.String(\"secret\"),\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-secret\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tSecretEnvironmentVariables: cloudfunctionsv2.FunctionServiceConfigSecretEnvironmentVariableArray{\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionServiceConfigSecretEnvironmentVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"TEST\"),\n\t\t\t\t\t\tProjectId: pulumi.String(project),\n\t\t\t\t\t\tSecret: secret.SecretId,\n\t\t\t\t\t\tVersion: pulumi.String(\"latest\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecretSecretVersion,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationUserManagedArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = \"my-project-name\";\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var secret = new Secret(\"secret\", SecretArgs.builder()\n .secretId(\"secret\")\n .replication(SecretReplicationArgs.builder()\n .userManaged(SecretReplicationUserManagedArgs.builder()\n .replicas(SecretReplicationUserManagedReplicaArgs.builder()\n .location(\"us-central1\")\n .build())\n .build())\n .build())\n .build());\n\n var secretSecretVersion = new SecretVersion(\"secretSecretVersion\", SecretVersionArgs.builder()\n .secret(secret.name())\n .secretData(\"secret\")\n .enabled(true)\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"function-secret\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .secretEnvironmentVariables(FunctionServiceConfigSecretEnvironmentVariableArgs.builder()\n .key(\"TEST\")\n .projectId(project)\n .secret(secret.secretId())\n .version(\"latest\")\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(secretSecretVersion)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: function-secret\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n secretEnvironmentVariables:\n - key: TEST\n projectId: ${project}\n secret: ${secret.secretId}\n version: latest\n options:\n dependson:\n - ${secretSecretVersion}\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret\n replication:\n userManaged:\n replicas:\n - location: us-central1\n secretSecretVersion:\n type: gcp:secretmanager:SecretVersion\n name: secret\n properties:\n secret: ${secret.name}\n secretData: secret\n enabled: true\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Secret Volume\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"secret\",\n replication: {\n userManaged: {\n replicas: [{\n location: \"us-central1\",\n }],\n },\n },\n});\nconst secretSecretVersion = new gcp.secretmanager.SecretVersion(\"secret\", {\n secret: secret.name,\n secretData: \"secret\",\n enabled: true,\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"function-secret\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n secretVolumes: [{\n mountPath: \"/etc/secrets\",\n projectId: project,\n secret: secret.secretId,\n }],\n },\n}, {\n dependsOn: [secretSecretVersion],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"secret\",\n replication={\n \"user_managed\": {\n \"replicas\": [{\n \"location\": \"us-central1\",\n }],\n },\n })\nsecret_secret_version = gcp.secretmanager.SecretVersion(\"secret\",\n secret=secret.name,\n secret_data=\"secret\",\n enabled=True)\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"function-secret\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloHttp\",\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"max_instance_count\": 1,\n \"available_memory\": \"256M\",\n \"timeout_seconds\": 60,\n \"secret_volumes\": [{\n \"mount_path\": \"/etc/secrets\",\n \"project_id\": project,\n \"secret\": secret.secret_id,\n }],\n },\n opts = pulumi.ResourceOptions(depends_on=[secret_secret_version]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n UserManaged = new Gcp.SecretManager.Inputs.SecretReplicationUserManagedArgs\n {\n Replicas = new[]\n {\n new Gcp.SecretManager.Inputs.SecretReplicationUserManagedReplicaArgs\n {\n Location = \"us-central1\",\n },\n },\n },\n },\n });\n\n var secretSecretVersion = new Gcp.SecretManager.SecretVersion(\"secret\", new()\n {\n Secret = secret.Name,\n SecretData = \"secret\",\n Enabled = true,\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"function-secret\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n SecretVolumes = new[]\n {\n new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigSecretVolumeArgs\n {\n MountPath = \"/etc/secrets\",\n ProjectId = project,\n Secret = secret.SecretId,\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secretSecretVersion,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.Sprintf(\"%v-gcf-source\", project),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tUserManaged: \u0026secretmanager.SecretReplicationUserManagedArgs{\n\t\t\t\t\tReplicas: secretmanager.SecretReplicationUserManagedReplicaArray{\n\t\t\t\t\t\t\u0026secretmanager.SecretReplicationUserManagedReplicaArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecretSecretVersion, err := secretmanager.NewSecretVersion(ctx, \"secret\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.Name,\n\t\t\tSecretData: pulumi.String(\"secret\"),\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-secret\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tSecretVolumes: cloudfunctionsv2.FunctionServiceConfigSecretVolumeArray{\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionServiceConfigSecretVolumeArgs{\n\t\t\t\t\t\tMountPath: pulumi.String(\"/etc/secrets\"),\n\t\t\t\t\t\tProjectId: pulumi.String(project),\n\t\t\t\t\t\tSecret: secret.SecretId,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecretSecretVersion,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationUserManagedArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = \"my-project-name\";\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var secret = new Secret(\"secret\", SecretArgs.builder()\n .secretId(\"secret\")\n .replication(SecretReplicationArgs.builder()\n .userManaged(SecretReplicationUserManagedArgs.builder()\n .replicas(SecretReplicationUserManagedReplicaArgs.builder()\n .location(\"us-central1\")\n .build())\n .build())\n .build())\n .build());\n\n var secretSecretVersion = new SecretVersion(\"secretSecretVersion\", SecretVersionArgs.builder()\n .secret(secret.name())\n .secretData(\"secret\")\n .enabled(true)\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"function-secret\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .secretVolumes(FunctionServiceConfigSecretVolumeArgs.builder()\n .mountPath(\"/etc/secrets\")\n .projectId(project)\n .secret(secret.secretId())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(secretSecretVersion)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: function-secret\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n secretVolumes:\n - mountPath: /etc/secrets\n projectId: ${project}\n secret: ${secret.secretId}\n options:\n dependson:\n - ${secretSecretVersion}\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret\n replication:\n userManaged:\n replicas:\n - location: us-central1\n secretSecretVersion:\n type: gcp:secretmanager:SecretVersion\n name: secret\n properties:\n secret: ${secret.name}\n secretData: secret\n enabled: true\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Private Workerpool\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst pool = new gcp.cloudbuild.WorkerPool(\"pool\", {\n name: \"workerpool\",\n location: \"us-central1\",\n workerConfig: {\n diskSizeGb: 100,\n machineType: \"e2-standard-8\",\n noExternalIp: false,\n },\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"function-workerpool\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n workerPool: pool.id,\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\npool = gcp.cloudbuild.WorkerPool(\"pool\",\n name=\"workerpool\",\n location=\"us-central1\",\n worker_config={\n \"disk_size_gb\": 100,\n \"machine_type\": \"e2-standard-8\",\n \"no_external_ip\": False,\n })\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"function-workerpool\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloHttp\",\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n \"worker_pool\": pool.id,\n },\n service_config={\n \"max_instance_count\": 1,\n \"available_memory\": \"256M\",\n \"timeout_seconds\": 60,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var pool = new Gcp.CloudBuild.WorkerPool(\"pool\", new()\n {\n Name = \"workerpool\",\n Location = \"us-central1\",\n WorkerConfig = new Gcp.CloudBuild.Inputs.WorkerPoolWorkerConfigArgs\n {\n DiskSizeGb = 100,\n MachineType = \"e2-standard-8\",\n NoExternalIp = false,\n },\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"function-workerpool\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n WorkerPool = pool.Id,\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.Sprintf(\"%v-gcf-source\", project),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpool, err := cloudbuild.NewWorkerPool(ctx, \"pool\", \u0026cloudbuild.WorkerPoolArgs{\n\t\t\tName: pulumi.String(\"workerpool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tWorkerConfig: \u0026cloudbuild.WorkerPoolWorkerConfigArgs{\n\t\t\t\tDiskSizeGb: pulumi.Int(100),\n\t\t\t\tMachineType: pulumi.String(\"e2-standard-8\"),\n\t\t\t\tNoExternalIp: pulumi.Bool(false),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-workerpool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tWorkerPool: pool.ID(),\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.cloudbuild.WorkerPool;\nimport com.pulumi.gcp.cloudbuild.WorkerPoolArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.WorkerPoolWorkerConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = \"my-project-name\";\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var pool = new WorkerPool(\"pool\", WorkerPoolArgs.builder()\n .name(\"workerpool\")\n .location(\"us-central1\")\n .workerConfig(WorkerPoolWorkerConfigArgs.builder()\n .diskSizeGb(100)\n .machineType(\"e2-standard-8\")\n .noExternalIp(false)\n .build())\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"function-workerpool\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .workerPool(pool.id())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n pool:\n type: gcp:cloudbuild:WorkerPool\n properties:\n name: workerpool\n location: us-central1\n workerConfig:\n diskSizeGb: 100\n machineType: e2-standard-8\n noExternalIp: false\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: function-workerpool\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n workerPool: ${pool.id}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Cmek Docs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst projectGetProject = gcp.organizations.getProject({});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst eaSa = new gcp.projects.ServiceIdentity(\"ea_sa\", {\n project: projectGetProject.then(projectGetProject =\u003e projectGetProject.projectId),\n service: \"eventarc.googleapis.com\",\n});\nconst unencoded_ar_repo = new gcp.artifactregistry.Repository(\"unencoded-ar-repo\", {\n repositoryId: \"ar-repo\",\n location: \"us-central1\",\n format: \"DOCKER\",\n});\nconst gcfCmekKeyuser = new gcp.kms.CryptoKeyIAMBinding(\"gcf_cmek_keyuser\", {\n cryptoKeyId: \"cmek-key\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members: [\n projectGetProject.then(projectGetProject =\u003e `serviceAccount:service-${projectGetProject.number}@gcf-admin-robot.iam.gserviceaccount.com`),\n projectGetProject.then(projectGetProject =\u003e `serviceAccount:service-${projectGetProject.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n projectGetProject.then(projectGetProject =\u003e `serviceAccount:service-${projectGetProject.number}@gs-project-accounts.iam.gserviceaccount.com`),\n projectGetProject.then(projectGetProject =\u003e `serviceAccount:service-${projectGetProject.number}@serverless-robot-prod.iam.gserviceaccount.com`),\n eaSa.member,\n ],\n}, {\n dependsOn: [eaSa],\n});\nconst encoded_ar_repo = new gcp.artifactregistry.Repository(\"encoded-ar-repo\", {\n location: \"us-central1\",\n repositoryId: \"cmek-repo\",\n format: \"DOCKER\",\n kmsKeyName: \"cmek-key\",\n}, {\n dependsOn: [gcfCmekKeyuser],\n});\nconst binding = new gcp.artifactregistry.RepositoryIamBinding(\"binding\", {\n location: encoded_ar_repo.location,\n repository: encoded_ar_repo.name,\n role: \"roles/artifactregistry.admin\",\n members: [projectGetProject.then(projectGetProject =\u003e `serviceAccount:service-${projectGetProject.number}@gcf-admin-robot.iam.gserviceaccount.com`)],\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"function-cmek\",\n location: \"us-central1\",\n description: \"CMEK function\",\n kmsKeyName: \"cmek-key\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n dockerRepository: encoded_ar_repo.id,\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n },\n}, {\n dependsOn: [gcfCmekKeyuser],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\nproject_get_project = gcp.organizations.get_project()\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nea_sa = gcp.projects.ServiceIdentity(\"ea_sa\",\n project=project_get_project.project_id,\n service=\"eventarc.googleapis.com\")\nunencoded_ar_repo = gcp.artifactregistry.Repository(\"unencoded-ar-repo\",\n repository_id=\"ar-repo\",\n location=\"us-central1\",\n format=\"DOCKER\")\ngcf_cmek_keyuser = gcp.kms.CryptoKeyIAMBinding(\"gcf_cmek_keyuser\",\n crypto_key_id=\"cmek-key\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members=[\n f\"serviceAccount:service-{project_get_project.number}@gcf-admin-robot.iam.gserviceaccount.com\",\n f\"serviceAccount:service-{project_get_project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n f\"serviceAccount:service-{project_get_project.number}@gs-project-accounts.iam.gserviceaccount.com\",\n f\"serviceAccount:service-{project_get_project.number}@serverless-robot-prod.iam.gserviceaccount.com\",\n ea_sa.member,\n ],\n opts = pulumi.ResourceOptions(depends_on=[ea_sa]))\nencoded_ar_repo = gcp.artifactregistry.Repository(\"encoded-ar-repo\",\n location=\"us-central1\",\n repository_id=\"cmek-repo\",\n format=\"DOCKER\",\n kms_key_name=\"cmek-key\",\n opts = pulumi.ResourceOptions(depends_on=[gcf_cmek_keyuser]))\nbinding = gcp.artifactregistry.RepositoryIamBinding(\"binding\",\n location=encoded_ar_repo.location,\n repository=encoded_ar_repo.name,\n role=\"roles/artifactregistry.admin\",\n members=[f\"serviceAccount:service-{project_get_project.number}@gcf-admin-robot.iam.gserviceaccount.com\"])\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"function-cmek\",\n location=\"us-central1\",\n description=\"CMEK function\",\n kms_key_name=\"cmek-key\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloHttp\",\n \"docker_repository\": encoded_ar_repo.id,\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"max_instance_count\": 1,\n \"available_memory\": \"256M\",\n \"timeout_seconds\": 60,\n },\n opts = pulumi.ResourceOptions(depends_on=[gcf_cmek_keyuser]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var projectGetProject = Gcp.Organizations.GetProject.Invoke();\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var eaSa = new Gcp.Projects.ServiceIdentity(\"ea_sa\", new()\n {\n Project = projectGetProject.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Service = \"eventarc.googleapis.com\",\n });\n\n var unencoded_ar_repo = new Gcp.ArtifactRegistry.Repository(\"unencoded-ar-repo\", new()\n {\n RepositoryId = \"ar-repo\",\n Location = \"us-central1\",\n Format = \"DOCKER\",\n });\n\n var gcfCmekKeyuser = new Gcp.Kms.CryptoKeyIAMBinding(\"gcf_cmek_keyuser\", new()\n {\n CryptoKeyId = \"cmek-key\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Members = new[]\n {\n $\"serviceAccount:service-{projectGetProject.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcf-admin-robot.iam.gserviceaccount.com\",\n $\"serviceAccount:service-{projectGetProject.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n $\"serviceAccount:service-{projectGetProject.Apply(getProjectResult =\u003e getProjectResult.Number)}@gs-project-accounts.iam.gserviceaccount.com\",\n $\"serviceAccount:service-{projectGetProject.Apply(getProjectResult =\u003e getProjectResult.Number)}@serverless-robot-prod.iam.gserviceaccount.com\",\n eaSa.Member,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n eaSa,\n },\n });\n\n var encoded_ar_repo = new Gcp.ArtifactRegistry.Repository(\"encoded-ar-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"cmek-repo\",\n Format = \"DOCKER\",\n KmsKeyName = \"cmek-key\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n gcfCmekKeyuser,\n },\n });\n\n var binding = new Gcp.ArtifactRegistry.RepositoryIamBinding(\"binding\", new()\n {\n Location = encoded_ar_repo.Location,\n Repository = encoded_ar_repo.Name,\n Role = \"roles/artifactregistry.admin\",\n Members = new[]\n {\n $\"serviceAccount:service-{projectGetProject.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcf-admin-robot.iam.gserviceaccount.com\",\n },\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"function-cmek\",\n Location = \"us-central1\",\n Description = \"CMEK function\",\n KmsKeyName = \"cmek-key\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n DockerRepository = encoded_ar_repo.Id,\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n gcfCmekKeyuser,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\tprojectGetProject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.Sprintf(\"%v-gcf-source\", project),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\teaSa, err := projects.NewServiceIdentity(ctx, \"ea_sa\", \u0026projects.ServiceIdentityArgs{\n\t\t\tProject: pulumi.String(projectGetProject.ProjectId),\n\t\t\tService: pulumi.String(\"eventarc.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"unencoded-ar-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tRepositoryId: pulumi.String(\"ar-repo\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tgcfCmekKeyuser, err := kms.NewCryptoKeyIAMBinding(ctx, \"gcf_cmek_keyuser\", \u0026kms.CryptoKeyIAMBindingArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"cmek-key\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:service-%v@gcf-admin-robot.iam.gserviceaccount.com\", projectGetProject.Number),\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", projectGetProject.Number),\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:service-%v@gs-project-accounts.iam.gserviceaccount.com\", projectGetProject.Number),\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:service-%v@serverless-robot-prod.iam.gserviceaccount.com\", projectGetProject.Number),\n\t\t\t\teaSa.Member,\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\teaSa,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"encoded-ar-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"cmek-repo\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tKmsKeyName: pulumi.String(\"cmek-key\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tgcfCmekKeyuser,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepositoryIamBinding(ctx, \"binding\", \u0026artifactregistry.RepositoryIamBindingArgs{\n\t\t\tLocation: encoded_ar_repo.Location,\n\t\t\tRepository: encoded_ar_repo.Name,\n\t\t\tRole: pulumi.String(\"roles/artifactregistry.admin\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:service-%v@gcf-admin-robot.iam.gserviceaccount.com\", projectGetProject.Number),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-cmek\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"CMEK function\"),\n\t\t\tKmsKeyName: pulumi.String(\"cmek-key\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tDockerRepository: encoded_ar_repo.ID(),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tgcfCmekKeyuser,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.projects.ServiceIdentity;\nimport com.pulumi.gcp.projects.ServiceIdentityArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBinding;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBindingArgs;\nimport com.pulumi.gcp.artifactregistry.RepositoryIamBinding;\nimport com.pulumi.gcp.artifactregistry.RepositoryIamBindingArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = \"my-project-name\";\n\n final var projectGetProject = OrganizationsFunctions.getProject();\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var eaSa = new ServiceIdentity(\"eaSa\", ServiceIdentityArgs.builder()\n .project(projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .service(\"eventarc.googleapis.com\")\n .build());\n\n var unencoded_ar_repo = new Repository(\"unencoded-ar-repo\", RepositoryArgs.builder()\n .repositoryId(\"ar-repo\")\n .location(\"us-central1\")\n .format(\"DOCKER\")\n .build());\n\n var gcfCmekKeyuser = new CryptoKeyIAMBinding(\"gcfCmekKeyuser\", CryptoKeyIAMBindingArgs.builder()\n .cryptoKeyId(\"cmek-key\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .members( \n String.format(\"serviceAccount:service-%s@gcf-admin-robot.iam.gserviceaccount.com\", projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.number())),\n String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.number())),\n String.format(\"serviceAccount:service-%s@gs-project-accounts.iam.gserviceaccount.com\", projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.number())),\n String.format(\"serviceAccount:service-%s@serverless-robot-prod.iam.gserviceaccount.com\", projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.number())),\n eaSa.member())\n .build(), CustomResourceOptions.builder()\n .dependsOn(eaSa)\n .build());\n\n var encoded_ar_repo = new Repository(\"encoded-ar-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"cmek-repo\")\n .format(\"DOCKER\")\n .kmsKeyName(\"cmek-key\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(gcfCmekKeyuser)\n .build());\n\n var binding = new RepositoryIamBinding(\"binding\", RepositoryIamBindingArgs.builder()\n .location(encoded_ar_repo.location())\n .repository(encoded_ar_repo.name())\n .role(\"roles/artifactregistry.admin\")\n .members(String.format(\"serviceAccount:service-%s@gcf-admin-robot.iam.gserviceaccount.com\", projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"function-cmek\")\n .location(\"us-central1\")\n .description(\"CMEK function\")\n .kmsKeyName(\"cmek-key\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .dockerRepository(encoded_ar_repo.id())\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(gcfCmekKeyuser)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n eaSa:\n type: gcp:projects:ServiceIdentity\n name: ea_sa\n properties:\n project: ${projectGetProject.projectId}\n service: eventarc.googleapis.com\n unencoded-ar-repo:\n type: gcp:artifactregistry:Repository\n properties:\n repositoryId: ar-repo\n location: us-central1\n format: DOCKER\n binding:\n type: gcp:artifactregistry:RepositoryIamBinding\n properties:\n location: ${[\"encoded-ar-repo\"].location}\n repository: ${[\"encoded-ar-repo\"].name}\n role: roles/artifactregistry.admin\n members:\n - serviceAccount:service-${projectGetProject.number}@gcf-admin-robot.iam.gserviceaccount.com\n gcfCmekKeyuser:\n type: gcp:kms:CryptoKeyIAMBinding\n name: gcf_cmek_keyuser\n properties:\n cryptoKeyId: cmek-key\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n members:\n - serviceAccount:service-${projectGetProject.number}@gcf-admin-robot.iam.gserviceaccount.com\n - serviceAccount:service-${projectGetProject.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\n - serviceAccount:service-${projectGetProject.number}@gs-project-accounts.iam.gserviceaccount.com\n - serviceAccount:service-${projectGetProject.number}@serverless-robot-prod.iam.gserviceaccount.com\n - ${eaSa.member}\n options:\n dependson:\n - ${eaSa}\n encoded-ar-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: cmek-repo\n format: DOCKER\n kmsKeyName: cmek-key\n options:\n dependson:\n - ${gcfCmekKeyuser}\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: function-cmek\n location: us-central1\n description: CMEK function\n kmsKeyName: cmek-key\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n dockerRepository: ${[\"encoded-ar-repo\"].id}\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n options:\n dependson:\n - ${gcfCmekKeyuser}\nvariables:\n project: my-project-name\n projectGetProject:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Abiu\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account\",\n});\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"functions2-topic\"});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"gcf-function\",\n location: \"europe-west6\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloPubSub\",\n environmentVariables: {\n BUILD_CONFIG_TEST: \"build_test\",\n },\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n automaticUpdatePolicy: {},\n },\n serviceConfig: {\n maxInstanceCount: 3,\n minInstanceCount: 1,\n availableMemory: \"4Gi\",\n timeoutSeconds: 60,\n maxInstanceRequestConcurrency: 80,\n availableCpu: \"4\",\n environmentVariables: {\n SERVICE_CONFIG_TEST: \"config_test\",\n },\n ingressSettings: \"ALLOW_INTERNAL_ONLY\",\n allTrafficOnLatestRevision: true,\n serviceAccountEmail: account.email,\n },\n eventTrigger: {\n triggerRegion: \"us-central1\",\n eventType: \"google.cloud.pubsub.topic.v1.messagePublished\",\n pubsubTopic: topic.id,\n retryPolicy: \"RETRY_POLICY_RETRY\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account\")\ntopic = gcp.pubsub.Topic(\"topic\", name=\"functions2-topic\")\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"gcf-function\",\n location=\"europe-west6\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloPubSub\",\n \"environment_variables\": {\n \"buil_d__confi_g__test\": \"build_test\",\n },\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n \"automatic_update_policy\": {},\n },\n service_config={\n \"max_instance_count\": 3,\n \"min_instance_count\": 1,\n \"available_memory\": \"4Gi\",\n \"timeout_seconds\": 60,\n \"max_instance_request_concurrency\": 80,\n \"available_cpu\": \"4\",\n \"environment_variables\": {\n \"servic_e__confi_g__test\": \"config_test\",\n },\n \"ingress_settings\": \"ALLOW_INTERNAL_ONLY\",\n \"all_traffic_on_latest_revision\": True,\n \"service_account_email\": account.email,\n },\n event_trigger={\n \"trigger_region\": \"us-central1\",\n \"event_type\": \"google.cloud.pubsub.topic.v1.messagePublished\",\n \"pubsub_topic\": topic.id,\n \"retry_policy\": \"RETRY_POLICY_RETRY\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account\",\n });\n\n var topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n Name = \"functions2-topic\",\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"gcf-function\",\n Location = \"europe-west6\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloPubSub\",\n EnvironmentVariables = \n {\n { \"BUILD_CONFIG_TEST\", \"build_test\" },\n },\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n AutomaticUpdatePolicy = null,\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 3,\n MinInstanceCount = 1,\n AvailableMemory = \"4Gi\",\n TimeoutSeconds = 60,\n MaxInstanceRequestConcurrency = 80,\n AvailableCpu = \"4\",\n EnvironmentVariables = \n {\n { \"SERVICE_CONFIG_TEST\", \"config_test\" },\n },\n IngressSettings = \"ALLOW_INTERNAL_ONLY\",\n AllTrafficOnLatestRevision = true,\n ServiceAccountEmail = account.Email,\n },\n EventTrigger = new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerArgs\n {\n TriggerRegion = \"us-central1\",\n EventType = \"google.cloud.pubsub.topic.v1.messagePublished\",\n PubsubTopic = topic.Id,\n RetryPolicy = \"RETRY_POLICY_RETRY\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttopic, err := pubsub.NewTopic(ctx, \"topic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"functions2-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.Sprintf(\"%v-gcf-source\", project),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"gcf-function\"),\n\t\t\tLocation: pulumi.String(\"europe-west6\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloPubSub\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"BUILD_CONFIG_TEST\": pulumi.String(\"build_test\"),\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAutomaticUpdatePolicy: nil,\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(3),\n\t\t\t\tMinInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"4Gi\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tMaxInstanceRequestConcurrency: pulumi.Int(80),\n\t\t\t\tAvailableCpu: pulumi.String(\"4\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"SERVICE_CONFIG_TEST\": pulumi.String(\"config_test\"),\n\t\t\t\t},\n\t\t\t\tIngressSettings: pulumi.String(\"ALLOW_INTERNAL_ONLY\"),\n\t\t\t\tAllTrafficOnLatestRevision: pulumi.Bool(true),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t},\n\t\t\tEventTrigger: \u0026cloudfunctionsv2.FunctionEventTriggerArgs{\n\t\t\t\tTriggerRegion: pulumi.String(\"us-central1\"),\n\t\t\t\tEventType: pulumi.String(\"google.cloud.pubsub.topic.v1.messagePublished\"),\n\t\t\t\tPubsubTopic: topic.ID(),\n\t\t\t\tRetryPolicy: pulumi.String(\"RETRY_POLICY_RETRY\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigAutomaticUpdatePolicyArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionEventTriggerArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = \"my-project-name\";\n\n var account = new Account(\"account\", AccountArgs.builder()\n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account\")\n .build());\n\n var topic = new Topic(\"topic\", TopicArgs.builder()\n .name(\"functions2-topic\")\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"gcf-function\")\n .location(\"europe-west6\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloPubSub\")\n .environmentVariables(Map.of(\"BUILD_CONFIG_TEST\", \"build_test\"))\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .automaticUpdatePolicy()\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(3)\n .minInstanceCount(1)\n .availableMemory(\"4Gi\")\n .timeoutSeconds(60)\n .maxInstanceRequestConcurrency(80)\n .availableCpu(\"4\")\n .environmentVariables(Map.of(\"SERVICE_CONFIG_TEST\", \"config_test\"))\n .ingressSettings(\"ALLOW_INTERNAL_ONLY\")\n .allTrafficOnLatestRevision(true)\n .serviceAccountEmail(account.email())\n .build())\n .eventTrigger(FunctionEventTriggerArgs.builder()\n .triggerRegion(\"us-central1\")\n .eventType(\"google.cloud.pubsub.topic.v1.messagePublished\")\n .pubsubTopic(topic.id())\n .retryPolicy(\"RETRY_POLICY_RETRY\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: functions2-topic\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: gcf-function\n location: europe-west6\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloPubSub\n environmentVariables:\n BUILD_CONFIG_TEST: build_test\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n automaticUpdatePolicy: {}\n serviceConfig:\n maxInstanceCount: 3\n minInstanceCount: 1\n availableMemory: 4Gi\n timeoutSeconds: 60\n maxInstanceRequestConcurrency: 80\n availableCpu: '4'\n environmentVariables:\n SERVICE_CONFIG_TEST: config_test\n ingressSettings: ALLOW_INTERNAL_ONLY\n allTrafficOnLatestRevision: true\n serviceAccountEmail: ${account.email}\n eventTrigger:\n triggerRegion: us-central1\n eventType: google.cloud.pubsub.topic.v1.messagePublished\n pubsubTopic: ${topic.id}\n retryPolicy: RETRY_POLICY_RETRY\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Abiu On Deploy\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account\",\n});\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"functions2-topic\"});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"gcf-function\",\n location: \"europe-west6\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloPubSub\",\n environmentVariables: {\n BUILD_CONFIG_TEST: \"build_test\",\n },\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n onDeployUpdatePolicy: {},\n },\n serviceConfig: {\n maxInstanceCount: 3,\n minInstanceCount: 1,\n availableMemory: \"4Gi\",\n timeoutSeconds: 60,\n maxInstanceRequestConcurrency: 80,\n availableCpu: \"4\",\n environmentVariables: {\n SERVICE_CONFIG_TEST: \"config_test\",\n },\n ingressSettings: \"ALLOW_INTERNAL_ONLY\",\n allTrafficOnLatestRevision: true,\n serviceAccountEmail: account.email,\n },\n eventTrigger: {\n triggerRegion: \"us-central1\",\n eventType: \"google.cloud.pubsub.topic.v1.messagePublished\",\n pubsubTopic: topic.id,\n retryPolicy: \"RETRY_POLICY_RETRY\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account\")\ntopic = gcp.pubsub.Topic(\"topic\", name=\"functions2-topic\")\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"gcf-function\",\n location=\"europe-west6\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloPubSub\",\n \"environment_variables\": {\n \"buil_d__confi_g__test\": \"build_test\",\n },\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n \"on_deploy_update_policy\": {},\n },\n service_config={\n \"max_instance_count\": 3,\n \"min_instance_count\": 1,\n \"available_memory\": \"4Gi\",\n \"timeout_seconds\": 60,\n \"max_instance_request_concurrency\": 80,\n \"available_cpu\": \"4\",\n \"environment_variables\": {\n \"servic_e__confi_g__test\": \"config_test\",\n },\n \"ingress_settings\": \"ALLOW_INTERNAL_ONLY\",\n \"all_traffic_on_latest_revision\": True,\n \"service_account_email\": account.email,\n },\n event_trigger={\n \"trigger_region\": \"us-central1\",\n \"event_type\": \"google.cloud.pubsub.topic.v1.messagePublished\",\n \"pubsub_topic\": topic.id,\n \"retry_policy\": \"RETRY_POLICY_RETRY\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account\",\n });\n\n var topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n Name = \"functions2-topic\",\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"gcf-function\",\n Location = \"europe-west6\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloPubSub\",\n EnvironmentVariables = \n {\n { \"BUILD_CONFIG_TEST\", \"build_test\" },\n },\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n OnDeployUpdatePolicy = null,\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 3,\n MinInstanceCount = 1,\n AvailableMemory = \"4Gi\",\n TimeoutSeconds = 60,\n MaxInstanceRequestConcurrency = 80,\n AvailableCpu = \"4\",\n EnvironmentVariables = \n {\n { \"SERVICE_CONFIG_TEST\", \"config_test\" },\n },\n IngressSettings = \"ALLOW_INTERNAL_ONLY\",\n AllTrafficOnLatestRevision = true,\n ServiceAccountEmail = account.Email,\n },\n EventTrigger = new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerArgs\n {\n TriggerRegion = \"us-central1\",\n EventType = \"google.cloud.pubsub.topic.v1.messagePublished\",\n PubsubTopic = topic.Id,\n RetryPolicy = \"RETRY_POLICY_RETRY\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttopic, err := pubsub.NewTopic(ctx, \"topic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"functions2-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.Sprintf(\"%v-gcf-source\", project),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"gcf-function\"),\n\t\t\tLocation: pulumi.String(\"europe-west6\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloPubSub\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"BUILD_CONFIG_TEST\": pulumi.String(\"build_test\"),\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tOnDeployUpdatePolicy: nil,\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(3),\n\t\t\t\tMinInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"4Gi\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tMaxInstanceRequestConcurrency: pulumi.Int(80),\n\t\t\t\tAvailableCpu: pulumi.String(\"4\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"SERVICE_CONFIG_TEST\": pulumi.String(\"config_test\"),\n\t\t\t\t},\n\t\t\t\tIngressSettings: pulumi.String(\"ALLOW_INTERNAL_ONLY\"),\n\t\t\t\tAllTrafficOnLatestRevision: pulumi.Bool(true),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t},\n\t\t\tEventTrigger: \u0026cloudfunctionsv2.FunctionEventTriggerArgs{\n\t\t\t\tTriggerRegion: pulumi.String(\"us-central1\"),\n\t\t\t\tEventType: pulumi.String(\"google.cloud.pubsub.topic.v1.messagePublished\"),\n\t\t\t\tPubsubTopic: topic.ID(),\n\t\t\t\tRetryPolicy: pulumi.String(\"RETRY_POLICY_RETRY\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigOnDeployUpdatePolicyArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionEventTriggerArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = \"my-project-name\";\n\n var account = new Account(\"account\", AccountArgs.builder()\n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account\")\n .build());\n\n var topic = new Topic(\"topic\", TopicArgs.builder()\n .name(\"functions2-topic\")\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"gcf-function\")\n .location(\"europe-west6\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloPubSub\")\n .environmentVariables(Map.of(\"BUILD_CONFIG_TEST\", \"build_test\"))\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .onDeployUpdatePolicy()\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(3)\n .minInstanceCount(1)\n .availableMemory(\"4Gi\")\n .timeoutSeconds(60)\n .maxInstanceRequestConcurrency(80)\n .availableCpu(\"4\")\n .environmentVariables(Map.of(\"SERVICE_CONFIG_TEST\", \"config_test\"))\n .ingressSettings(\"ALLOW_INTERNAL_ONLY\")\n .allTrafficOnLatestRevision(true)\n .serviceAccountEmail(account.email())\n .build())\n .eventTrigger(FunctionEventTriggerArgs.builder()\n .triggerRegion(\"us-central1\")\n .eventType(\"google.cloud.pubsub.topic.v1.messagePublished\")\n .pubsubTopic(topic.id())\n .retryPolicy(\"RETRY_POLICY_RETRY\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: functions2-topic\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: gcf-function\n location: europe-west6\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloPubSub\n environmentVariables:\n BUILD_CONFIG_TEST: build_test\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n onDeployUpdatePolicy: {}\n serviceConfig:\n maxInstanceCount: 3\n minInstanceCount: 1\n availableMemory: 4Gi\n timeoutSeconds: 60\n maxInstanceRequestConcurrency: 80\n availableCpu: '4'\n environmentVariables:\n SERVICE_CONFIG_TEST: config_test\n ingressSettings: ALLOW_INTERNAL_ONLY\n allTrafficOnLatestRevision: true\n serviceAccountEmail: ${account.email}\n eventTrigger:\n triggerRegion: us-central1\n eventType: google.cloud.pubsub.topic.v1.messagePublished\n pubsubTopic: ${topic.id}\n retryPolicy: RETRY_POLICY_RETRY\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nfunction can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/functions/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, function can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudfunctionsv2/function:Function default projects/{{project}}/locations/{{location}}/functions/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudfunctionsv2/function:Function default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudfunctionsv2/function:Function default {{location}}/{{name}}\n```\n\n", + "description": "A Cloud Function that contains user computation executed in response to an event.\n\n\nTo get more information about function, see:\n\n* [API documentation](https://cloud.google.com/functions/docs/reference/rest/v2beta/projects.locations.functions)\n\n## Example Usage\n\n### Cloudfunctions2 Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"function-v2\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"function-v2\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloHttp\",\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"max_instance_count\": 1,\n \"available_memory\": \"256M\",\n \"timeout_seconds\": 60,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"function-v2\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.Sprintf(\"%v-gcf-source\", project),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-v2\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = \"my-project-name\";\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"function-v2\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: function-v2\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account\",\n});\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"functions2-topic\"});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"gcf-function\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloPubSub\",\n environmentVariables: {\n BUILD_CONFIG_TEST: \"build_test\",\n },\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 3,\n minInstanceCount: 1,\n availableMemory: \"4Gi\",\n timeoutSeconds: 60,\n maxInstanceRequestConcurrency: 80,\n availableCpu: \"4\",\n environmentVariables: {\n SERVICE_CONFIG_TEST: \"config_test\",\n SERVICE_CONFIG_DIFF_TEST: account.email,\n },\n ingressSettings: \"ALLOW_INTERNAL_ONLY\",\n allTrafficOnLatestRevision: true,\n serviceAccountEmail: account.email,\n },\n eventTrigger: {\n triggerRegion: \"us-central1\",\n eventType: \"google.cloud.pubsub.topic.v1.messagePublished\",\n pubsubTopic: topic.id,\n retryPolicy: \"RETRY_POLICY_RETRY\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account\")\ntopic = gcp.pubsub.Topic(\"topic\", name=\"functions2-topic\")\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"gcf-function\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloPubSub\",\n \"environment_variables\": {\n \"BUILD_CONFIG_TEST\": \"build_test\",\n },\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"max_instance_count\": 3,\n \"min_instance_count\": 1,\n \"available_memory\": \"4Gi\",\n \"timeout_seconds\": 60,\n \"max_instance_request_concurrency\": 80,\n \"available_cpu\": \"4\",\n \"environment_variables\": {\n \"SERVICE_CONFIG_TEST\": \"config_test\",\n \"SERVICE_CONFIG_DIFF_TEST\": account.email,\n },\n \"ingress_settings\": \"ALLOW_INTERNAL_ONLY\",\n \"all_traffic_on_latest_revision\": True,\n \"service_account_email\": account.email,\n },\n event_trigger={\n \"trigger_region\": \"us-central1\",\n \"event_type\": \"google.cloud.pubsub.topic.v1.messagePublished\",\n \"pubsub_topic\": topic.id,\n \"retry_policy\": \"RETRY_POLICY_RETRY\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account\",\n });\n\n var topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n Name = \"functions2-topic\",\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"gcf-function\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloPubSub\",\n EnvironmentVariables = \n {\n { \"BUILD_CONFIG_TEST\", \"build_test\" },\n },\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 3,\n MinInstanceCount = 1,\n AvailableMemory = \"4Gi\",\n TimeoutSeconds = 60,\n MaxInstanceRequestConcurrency = 80,\n AvailableCpu = \"4\",\n EnvironmentVariables = \n {\n { \"SERVICE_CONFIG_TEST\", \"config_test\" },\n { \"SERVICE_CONFIG_DIFF_TEST\", account.Email },\n },\n IngressSettings = \"ALLOW_INTERNAL_ONLY\",\n AllTrafficOnLatestRevision = true,\n ServiceAccountEmail = account.Email,\n },\n EventTrigger = new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerArgs\n {\n TriggerRegion = \"us-central1\",\n EventType = \"google.cloud.pubsub.topic.v1.messagePublished\",\n PubsubTopic = topic.Id,\n RetryPolicy = \"RETRY_POLICY_RETRY\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttopic, err := pubsub.NewTopic(ctx, \"topic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"functions2-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.Sprintf(\"%v-gcf-source\", project),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"gcf-function\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloPubSub\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"BUILD_CONFIG_TEST\": pulumi.String(\"build_test\"),\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(3),\n\t\t\t\tMinInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"4Gi\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tMaxInstanceRequestConcurrency: pulumi.Int(80),\n\t\t\t\tAvailableCpu: pulumi.String(\"4\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"SERVICE_CONFIG_TEST\": pulumi.String(\"config_test\"),\n\t\t\t\t\t\"SERVICE_CONFIG_DIFF_TEST\": account.Email,\n\t\t\t\t},\n\t\t\t\tIngressSettings: pulumi.String(\"ALLOW_INTERNAL_ONLY\"),\n\t\t\t\tAllTrafficOnLatestRevision: pulumi.Bool(true),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t},\n\t\t\tEventTrigger: \u0026cloudfunctionsv2.FunctionEventTriggerArgs{\n\t\t\t\tTriggerRegion: pulumi.String(\"us-central1\"),\n\t\t\t\tEventType: pulumi.String(\"google.cloud.pubsub.topic.v1.messagePublished\"),\n\t\t\t\tPubsubTopic: topic.ID(),\n\t\t\t\tRetryPolicy: pulumi.String(\"RETRY_POLICY_RETRY\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionEventTriggerArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = \"my-project-name\";\n\n var account = new Account(\"account\", AccountArgs.builder()\n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account\")\n .build());\n\n var topic = new Topic(\"topic\", TopicArgs.builder()\n .name(\"functions2-topic\")\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"gcf-function\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloPubSub\")\n .environmentVariables(Map.of(\"BUILD_CONFIG_TEST\", \"build_test\"))\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(3)\n .minInstanceCount(1)\n .availableMemory(\"4Gi\")\n .timeoutSeconds(60)\n .maxInstanceRequestConcurrency(80)\n .availableCpu(\"4\")\n .environmentVariables(Map.ofEntries(\n Map.entry(\"SERVICE_CONFIG_TEST\", \"config_test\"),\n Map.entry(\"SERVICE_CONFIG_DIFF_TEST\", account.email())\n ))\n .ingressSettings(\"ALLOW_INTERNAL_ONLY\")\n .allTrafficOnLatestRevision(true)\n .serviceAccountEmail(account.email())\n .build())\n .eventTrigger(FunctionEventTriggerArgs.builder()\n .triggerRegion(\"us-central1\")\n .eventType(\"google.cloud.pubsub.topic.v1.messagePublished\")\n .pubsubTopic(topic.id())\n .retryPolicy(\"RETRY_POLICY_RETRY\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: functions2-topic\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: gcf-function\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloPubSub\n environmentVariables:\n BUILD_CONFIG_TEST: build_test\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 3\n minInstanceCount: 1\n availableMemory: 4Gi\n timeoutSeconds: 60\n maxInstanceRequestConcurrency: 80\n availableCpu: '4'\n environmentVariables:\n SERVICE_CONFIG_TEST: config_test\n SERVICE_CONFIG_DIFF_TEST: ${account.email}\n ingressSettings: ALLOW_INTERNAL_ONLY\n allTrafficOnLatestRevision: true\n serviceAccountEmail: ${account.email}\n eventTrigger:\n triggerRegion: us-central1\n eventType: google.cloud.pubsub.topic.v1.messagePublished\n pubsubTopic: ${topic.id}\n retryPolicy: RETRY_POLICY_RETRY\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Scheduler Auth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account\",\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"gcf-function\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n minInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n serviceAccountEmail: account.email,\n },\n});\nconst invoker = new gcp.cloudfunctionsv2.FunctionIamMember(\"invoker\", {\n project: _function.project,\n location: _function.location,\n cloudFunction: _function.name,\n role: \"roles/cloudfunctions.invoker\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst cloudRunInvoker = new gcp.cloudrun.IamMember(\"cloud_run_invoker\", {\n project: _function.project,\n location: _function.location,\n service: _function.name,\n role: \"roles/run.invoker\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst invokeCloudFunction = new gcp.cloudscheduler.Job(\"invoke_cloud_function\", {\n name: \"invoke-gcf-function\",\n description: \"Schedule the HTTPS trigger for cloud function\",\n schedule: \"0 0 * * *\",\n project: _function.project,\n region: _function.location,\n httpTarget: {\n uri: _function.serviceConfig.apply(serviceConfig =\u003e serviceConfig?.uri),\n httpMethod: \"POST\",\n oidcToken: {\n audience: _function.serviceConfig.apply(serviceConfig =\u003e `${serviceConfig?.uri}/`),\n serviceAccountEmail: account.email,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account\")\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"gcf-function\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloHttp\",\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"min_instance_count\": 1,\n \"available_memory\": \"256M\",\n \"timeout_seconds\": 60,\n \"service_account_email\": account.email,\n })\ninvoker = gcp.cloudfunctionsv2.FunctionIamMember(\"invoker\",\n project=function.project,\n location=function.location,\n cloud_function=function.name,\n role=\"roles/cloudfunctions.invoker\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\ncloud_run_invoker = gcp.cloudrun.IamMember(\"cloud_run_invoker\",\n project=function.project,\n location=function.location,\n service=function.name,\n role=\"roles/run.invoker\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\ninvoke_cloud_function = gcp.cloudscheduler.Job(\"invoke_cloud_function\",\n name=\"invoke-gcf-function\",\n description=\"Schedule the HTTPS trigger for cloud function\",\n schedule=\"0 0 * * *\",\n project=function.project,\n region=function.location,\n http_target={\n \"uri\": function.service_config.uri,\n \"http_method\": \"POST\",\n \"oidc_token\": {\n \"audience\": function.service_config.apply(lambda service_config: f\"{service_config.uri}/\"),\n \"service_account_email\": account.email,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account\",\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"gcf-function\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MinInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n ServiceAccountEmail = account.Email,\n },\n });\n\n var invoker = new Gcp.CloudFunctionsV2.FunctionIamMember(\"invoker\", new()\n {\n Project = function.Project,\n Location = function.Location,\n CloudFunction = function.Name,\n Role = \"roles/cloudfunctions.invoker\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var cloudRunInvoker = new Gcp.CloudRun.IamMember(\"cloud_run_invoker\", new()\n {\n Project = function.Project,\n Location = function.Location,\n Service = function.Name,\n Role = \"roles/run.invoker\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var invokeCloudFunction = new Gcp.CloudScheduler.Job(\"invoke_cloud_function\", new()\n {\n Name = \"invoke-gcf-function\",\n Description = \"Schedule the HTTPS trigger for cloud function\",\n Schedule = \"0 0 * * *\",\n Project = function.Project,\n Region = function.Location,\n HttpTarget = new Gcp.CloudScheduler.Inputs.JobHttpTargetArgs\n {\n Uri = function.ServiceConfig.Apply(serviceConfig =\u003e serviceConfig?.Uri),\n HttpMethod = \"POST\",\n OidcToken = new Gcp.CloudScheduler.Inputs.JobHttpTargetOidcTokenArgs\n {\n Audience = function.ServiceConfig.Apply(serviceConfig =\u003e $\"{serviceConfig?.Uri}/\"),\n ServiceAccountEmail = account.Email,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrun\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudscheduler\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.Sprintf(\"%v-gcf-source\", project),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfunction, err := cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"gcf-function\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMinInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunctionIamMember(ctx, \"invoker\", \u0026cloudfunctionsv2.FunctionIamMemberArgs{\n\t\t\tProject: function.Project,\n\t\t\tLocation: function.Location,\n\t\t\tCloudFunction: function.Name,\n\t\t\tRole: pulumi.String(\"roles/cloudfunctions.invoker\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrun.NewIamMember(ctx, \"cloud_run_invoker\", \u0026cloudrun.IamMemberArgs{\n\t\t\tProject: function.Project,\n\t\t\tLocation: function.Location,\n\t\t\tService: function.Name,\n\t\t\tRole: pulumi.String(\"roles/run.invoker\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudscheduler.NewJob(ctx, \"invoke_cloud_function\", \u0026cloudscheduler.JobArgs{\n\t\t\tName: pulumi.String(\"invoke-gcf-function\"),\n\t\t\tDescription: pulumi.String(\"Schedule the HTTPS trigger for cloud function\"),\n\t\t\tSchedule: pulumi.String(\"0 0 * * *\"),\n\t\t\tProject: function.Project,\n\t\t\tRegion: function.Location,\n\t\t\tHttpTarget: \u0026cloudscheduler.JobHttpTargetArgs{\n\t\t\t\tUri: function.ServiceConfig.ApplyT(func(serviceConfig cloudfunctionsv2.FunctionServiceConfig) (*string, error) {\n\t\t\t\t\treturn \u0026serviceConfig.Uri, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tHttpMethod: pulumi.String(\"POST\"),\n\t\t\t\tOidcToken: \u0026cloudscheduler.JobHttpTargetOidcTokenArgs{\n\t\t\t\t\tAudience: function.ServiceConfig.ApplyT(func(serviceConfig cloudfunctionsv2.FunctionServiceConfig) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"%v/\", serviceConfig.Uri), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionIamMember;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionIamMemberArgs;\nimport com.pulumi.gcp.cloudrun.IamMember;\nimport com.pulumi.gcp.cloudrun.IamMemberArgs;\nimport com.pulumi.gcp.cloudscheduler.Job;\nimport com.pulumi.gcp.cloudscheduler.JobArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetOidcTokenArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = \"my-project-name\";\n\n var account = new Account(\"account\", AccountArgs.builder()\n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account\")\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"gcf-function\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .minInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .serviceAccountEmail(account.email())\n .build())\n .build());\n\n var invoker = new FunctionIamMember(\"invoker\", FunctionIamMemberArgs.builder()\n .project(function.project())\n .location(function.location())\n .cloudFunction(function.name())\n .role(\"roles/cloudfunctions.invoker\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var cloudRunInvoker = new IamMember(\"cloudRunInvoker\", IamMemberArgs.builder()\n .project(function.project())\n .location(function.location())\n .service(function.name())\n .role(\"roles/run.invoker\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var invokeCloudFunction = new Job(\"invokeCloudFunction\", JobArgs.builder()\n .name(\"invoke-gcf-function\")\n .description(\"Schedule the HTTPS trigger for cloud function\")\n .schedule(\"0 0 * * *\")\n .project(function.project())\n .region(function.location())\n .httpTarget(JobHttpTargetArgs.builder()\n .uri(function.serviceConfig().applyValue(serviceConfig -\u003e serviceConfig.uri()))\n .httpMethod(\"POST\")\n .oidcToken(JobHttpTargetOidcTokenArgs.builder()\n .audience(function.serviceConfig().applyValue(serviceConfig -\u003e String.format(\"%s/\", serviceConfig.uri())))\n .serviceAccountEmail(account.email())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: gcf-function\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n minInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n serviceAccountEmail: ${account.email}\n invoker:\n type: gcp:cloudfunctionsv2:FunctionIamMember\n properties:\n project: ${function.project}\n location: ${function.location}\n cloudFunction: ${function.name}\n role: roles/cloudfunctions.invoker\n member: serviceAccount:${account.email}\n cloudRunInvoker:\n type: gcp:cloudrun:IamMember\n name: cloud_run_invoker\n properties:\n project: ${function.project}\n location: ${function.location}\n service: ${function.name}\n role: roles/run.invoker\n member: serviceAccount:${account.email}\n invokeCloudFunction:\n type: gcp:cloudscheduler:Job\n name: invoke_cloud_function\n properties:\n name: invoke-gcf-function\n description: Schedule the HTTPS trigger for cloud function\n schedule: 0 0 * * *\n project: ${function.project}\n region: ${function.location}\n httpTarget:\n uri: ${function.serviceConfig.uri}\n httpMethod: POST\n oidcToken:\n audience: ${function.serviceConfig.uri}/\n serviceAccountEmail: ${account.email}\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Basic Gcs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst source_bucket = new gcp.storage.Bucket(\"source-bucket\", {\n name: \"gcf-source-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: source_bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst trigger_bucket = new gcp.storage.Bucket(\"trigger-bucket\", {\n name: \"gcf-trigger-bucket\",\n location: \"us-central1\",\n uniformBucketLevelAccess: true,\n});\nconst gcsAccount = gcp.storage.getProjectServiceAccount({});\n// To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n// (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\nconst gcs_pubsub_publishing = new gcp.projects.IAMMember(\"gcs-pubsub-publishing\", {\n project: \"my-project-name\",\n role: \"roles/pubsub.publisher\",\n member: gcsAccount.then(gcsAccount =\u003e `serviceAccount:${gcsAccount.emailAddress}`),\n});\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account - used for both the cloud function and eventarc trigger in the test\",\n});\n// Permissions on the service account used by the function and Eventarc trigger\nconst invoking = new gcp.projects.IAMMember(\"invoking\", {\n project: \"my-project-name\",\n role: \"roles/run.invoker\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n}, {\n dependsOn: [gcs_pubsub_publishing],\n});\nconst event_receiving = new gcp.projects.IAMMember(\"event-receiving\", {\n project: \"my-project-name\",\n role: \"roles/eventarc.eventReceiver\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n}, {\n dependsOn: [invoking],\n});\nconst artifactregistry_reader = new gcp.projects.IAMMember(\"artifactregistry-reader\", {\n project: \"my-project-name\",\n role: \"roles/artifactregistry.reader\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n}, {\n dependsOn: [event_receiving],\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"gcf-function\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs12\",\n entryPoint: \"entryPoint\",\n environmentVariables: {\n BUILD_CONFIG_TEST: \"build_test\",\n },\n source: {\n storageSource: {\n bucket: source_bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 3,\n minInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n environmentVariables: {\n SERVICE_CONFIG_TEST: \"config_test\",\n },\n ingressSettings: \"ALLOW_INTERNAL_ONLY\",\n allTrafficOnLatestRevision: true,\n serviceAccountEmail: account.email,\n },\n eventTrigger: {\n eventType: \"google.cloud.storage.object.v1.finalized\",\n retryPolicy: \"RETRY_POLICY_RETRY\",\n serviceAccountEmail: account.email,\n eventFilters: [{\n attribute: \"bucket\",\n value: trigger_bucket.name,\n }],\n },\n}, {\n dependsOn: [\n event_receiving,\n artifactregistry_reader,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsource_bucket = gcp.storage.Bucket(\"source-bucket\",\n name=\"gcf-source-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=source_bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\ntrigger_bucket = gcp.storage.Bucket(\"trigger-bucket\",\n name=\"gcf-trigger-bucket\",\n location=\"us-central1\",\n uniform_bucket_level_access=True)\ngcs_account = gcp.storage.get_project_service_account()\n# To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n# (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\ngcs_pubsub_publishing = gcp.projects.IAMMember(\"gcs-pubsub-publishing\",\n project=\"my-project-name\",\n role=\"roles/pubsub.publisher\",\n member=f\"serviceAccount:{gcs_account.email_address}\")\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account - used for both the cloud function and eventarc trigger in the test\")\n# Permissions on the service account used by the function and Eventarc trigger\ninvoking = gcp.projects.IAMMember(\"invoking\",\n project=\"my-project-name\",\n role=\"roles/run.invoker\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"),\n opts = pulumi.ResourceOptions(depends_on=[gcs_pubsub_publishing]))\nevent_receiving = gcp.projects.IAMMember(\"event-receiving\",\n project=\"my-project-name\",\n role=\"roles/eventarc.eventReceiver\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"),\n opts = pulumi.ResourceOptions(depends_on=[invoking]))\nartifactregistry_reader = gcp.projects.IAMMember(\"artifactregistry-reader\",\n project=\"my-project-name\",\n role=\"roles/artifactregistry.reader\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"),\n opts = pulumi.ResourceOptions(depends_on=[event_receiving]))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"gcf-function\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs12\",\n \"entry_point\": \"entryPoint\",\n \"environment_variables\": {\n \"BUILD_CONFIG_TEST\": \"build_test\",\n },\n \"source\": {\n \"storage_source\": {\n \"bucket\": source_bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"max_instance_count\": 3,\n \"min_instance_count\": 1,\n \"available_memory\": \"256M\",\n \"timeout_seconds\": 60,\n \"environment_variables\": {\n \"SERVICE_CONFIG_TEST\": \"config_test\",\n },\n \"ingress_settings\": \"ALLOW_INTERNAL_ONLY\",\n \"all_traffic_on_latest_revision\": True,\n \"service_account_email\": account.email,\n },\n event_trigger={\n \"event_type\": \"google.cloud.storage.object.v1.finalized\",\n \"retry_policy\": \"RETRY_POLICY_RETRY\",\n \"service_account_email\": account.email,\n \"event_filters\": [{\n \"attribute\": \"bucket\",\n \"value\": trigger_bucket.name,\n }],\n },\n opts = pulumi.ResourceOptions(depends_on=[\n event_receiving,\n artifactregistry_reader,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var source_bucket = new Gcp.Storage.Bucket(\"source-bucket\", new()\n {\n Name = \"gcf-source-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = source_bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var trigger_bucket = new Gcp.Storage.Bucket(\"trigger-bucket\", new()\n {\n Name = \"gcf-trigger-bucket\",\n Location = \"us-central1\",\n UniformBucketLevelAccess = true,\n });\n\n var gcsAccount = Gcp.Storage.GetProjectServiceAccount.Invoke();\n\n // To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n // (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\n var gcs_pubsub_publishing = new Gcp.Projects.IAMMember(\"gcs-pubsub-publishing\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/pubsub.publisher\",\n Member = $\"serviceAccount:{gcsAccount.Apply(getProjectServiceAccountResult =\u003e getProjectServiceAccountResult.EmailAddress)}\",\n });\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account - used for both the cloud function and eventarc trigger in the test\",\n });\n\n // Permissions on the service account used by the function and Eventarc trigger\n var invoking = new Gcp.Projects.IAMMember(\"invoking\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/run.invoker\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n gcs_pubsub_publishing,\n },\n });\n\n var event_receiving = new Gcp.Projects.IAMMember(\"event-receiving\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/eventarc.eventReceiver\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n invoking,\n },\n });\n\n var artifactregistry_reader = new Gcp.Projects.IAMMember(\"artifactregistry-reader\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/artifactregistry.reader\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n event_receiving,\n },\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"gcf-function\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs12\",\n EntryPoint = \"entryPoint\",\n EnvironmentVariables = \n {\n { \"BUILD_CONFIG_TEST\", \"build_test\" },\n },\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = source_bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 3,\n MinInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n EnvironmentVariables = \n {\n { \"SERVICE_CONFIG_TEST\", \"config_test\" },\n },\n IngressSettings = \"ALLOW_INTERNAL_ONLY\",\n AllTrafficOnLatestRevision = true,\n ServiceAccountEmail = account.Email,\n },\n EventTrigger = new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerArgs\n {\n EventType = \"google.cloud.storage.object.v1.finalized\",\n RetryPolicy = \"RETRY_POLICY_RETRY\",\n ServiceAccountEmail = account.Email,\n EventFilters = new[]\n {\n new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerEventFilterArgs\n {\n Attribute = \"bucket\",\n Value = trigger_bucket.Name,\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n event_receiving,\n artifactregistry_reader,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := storage.NewBucket(ctx, \"source-bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"gcf-source-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: source_bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewBucket(ctx, \"trigger-bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"gcf-trigger-bucket\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tgcsAccount, err := storage.GetProjectServiceAccount(ctx, \u0026storage.GetProjectServiceAccountArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n\t\t// (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\n\t\t_, err = projects.NewIAMMember(ctx, \"gcs-pubsub-publishing\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/pubsub.publisher\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:%v\", gcsAccount.EmailAddress),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account - used for both the cloud function and eventarc trigger in the test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Permissions on the service account used by the function and Eventarc trigger\n\t\tinvoking, err := projects.NewIAMMember(ctx, \"invoking\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/run.invoker\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tgcs_pubsub_publishing,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"event-receiving\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/eventarc.eventReceiver\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tinvoking,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"artifactregistry-reader\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/artifactregistry.reader\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tevent_receiving,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"gcf-function\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs12\"),\n\t\t\t\tEntryPoint: pulumi.String(\"entryPoint\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"BUILD_CONFIG_TEST\": pulumi.String(\"build_test\"),\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: source_bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(3),\n\t\t\t\tMinInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"SERVICE_CONFIG_TEST\": pulumi.String(\"config_test\"),\n\t\t\t\t},\n\t\t\t\tIngressSettings: pulumi.String(\"ALLOW_INTERNAL_ONLY\"),\n\t\t\t\tAllTrafficOnLatestRevision: pulumi.Bool(true),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t},\n\t\t\tEventTrigger: \u0026cloudfunctionsv2.FunctionEventTriggerArgs{\n\t\t\t\tEventType: pulumi.String(\"google.cloud.storage.object.v1.finalized\"),\n\t\t\t\tRetryPolicy: pulumi.String(\"RETRY_POLICY_RETRY\"),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t\tEventFilters: cloudfunctionsv2.FunctionEventTriggerEventFilterArray{\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionEventTriggerEventFilterArgs{\n\t\t\t\t\t\tAttribute: pulumi.String(\"bucket\"),\n\t\t\t\t\t\tValue: trigger_bucket.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tevent_receiving,\n\t\t\tartifactregistry_reader,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.storage.StorageFunctions;\nimport com.pulumi.gcp.storage.inputs.GetProjectServiceAccountArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionEventTriggerArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var source_bucket = new Bucket(\"source-bucket\", BucketArgs.builder()\n .name(\"gcf-source-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(source_bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var trigger_bucket = new Bucket(\"trigger-bucket\", BucketArgs.builder()\n .name(\"gcf-trigger-bucket\")\n .location(\"us-central1\")\n .uniformBucketLevelAccess(true)\n .build());\n\n final var gcsAccount = StorageFunctions.getProjectServiceAccount();\n\n // To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n // (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\n var gcs_pubsub_publishing = new IAMMember(\"gcs-pubsub-publishing\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/pubsub.publisher\")\n .member(String.format(\"serviceAccount:%s\", gcsAccount.applyValue(getProjectServiceAccountResult -\u003e getProjectServiceAccountResult.emailAddress())))\n .build());\n\n var account = new Account(\"account\", AccountArgs.builder()\n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account - used for both the cloud function and eventarc trigger in the test\")\n .build());\n\n // Permissions on the service account used by the function and Eventarc trigger\n var invoking = new IAMMember(\"invoking\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/run.invoker\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build(), CustomResourceOptions.builder()\n .dependsOn(gcs_pubsub_publishing)\n .build());\n\n var event_receiving = new IAMMember(\"event-receiving\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/eventarc.eventReceiver\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build(), CustomResourceOptions.builder()\n .dependsOn(invoking)\n .build());\n\n var artifactregistry_reader = new IAMMember(\"artifactregistry-reader\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/artifactregistry.reader\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build(), CustomResourceOptions.builder()\n .dependsOn(event_receiving)\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"gcf-function\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs12\")\n .entryPoint(\"entryPoint\")\n .environmentVariables(Map.of(\"BUILD_CONFIG_TEST\", \"build_test\"))\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(source_bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(3)\n .minInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .environmentVariables(Map.of(\"SERVICE_CONFIG_TEST\", \"config_test\"))\n .ingressSettings(\"ALLOW_INTERNAL_ONLY\")\n .allTrafficOnLatestRevision(true)\n .serviceAccountEmail(account.email())\n .build())\n .eventTrigger(FunctionEventTriggerArgs.builder()\n .eventType(\"google.cloud.storage.object.v1.finalized\")\n .retryPolicy(\"RETRY_POLICY_RETRY\")\n .serviceAccountEmail(account.email())\n .eventFilters(FunctionEventTriggerEventFilterArgs.builder()\n .attribute(\"bucket\")\n .value(trigger_bucket.name())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n event_receiving,\n artifactregistry_reader)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n source-bucket:\n type: gcp:storage:Bucket\n properties:\n name: gcf-source-bucket\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${[\"source-bucket\"].name}\n source:\n fn::FileAsset: function-source.zip\n trigger-bucket:\n type: gcp:storage:Bucket\n properties:\n name: gcf-trigger-bucket\n location: us-central1\n uniformBucketLevelAccess: true\n # To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project.\n # (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin)\n gcs-pubsub-publishing:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/pubsub.publisher\n member: serviceAccount:${gcsAccount.emailAddress}\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account - used for both the cloud function and eventarc trigger in the test\n # Permissions on the service account used by the function and Eventarc trigger\n invoking:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/run.invoker\n member: serviceAccount:${account.email}\n options:\n dependson:\n - ${[\"gcs-pubsub-publishing\"]}\n event-receiving:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/eventarc.eventReceiver\n member: serviceAccount:${account.email}\n options:\n dependson:\n - ${invoking}\n artifactregistry-reader:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/artifactregistry.reader\n member: serviceAccount:${account.email}\n options:\n dependson:\n - ${[\"event-receiving\"]}\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: gcf-function\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs12\n entryPoint: entryPoint\n environmentVariables:\n BUILD_CONFIG_TEST: build_test\n source:\n storageSource:\n bucket: ${[\"source-bucket\"].name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 3\n minInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n environmentVariables:\n SERVICE_CONFIG_TEST: config_test\n ingressSettings: ALLOW_INTERNAL_ONLY\n allTrafficOnLatestRevision: true\n serviceAccountEmail: ${account.email}\n eventTrigger:\n eventType: google.cloud.storage.object.v1.finalized\n retryPolicy: RETRY_POLICY_RETRY\n serviceAccountEmail: ${account.email}\n eventFilters:\n - attribute: bucket\n value: ${[\"trigger-bucket\"].name}\n options:\n dependson:\n - ${[\"event-receiving\"]}\n - ${[\"artifactregistry-reader\"]}\nvariables:\n gcsAccount:\n fn::invoke:\n Function: gcp:storage:getProjectServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Basic Auditlogs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// This example follows the examples shown in this Google Cloud Community blog post\n// https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n// and the docs:\n// https://cloud.google.com/eventarc/docs/path-patterns\nconst source_bucket = new gcp.storage.Bucket(\"source-bucket\", {\n name: \"gcf-source-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: source_bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account - used for both the cloud function and eventarc trigger in the test\",\n});\n// Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n// Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n// google_cloudfunctions2_function below (Audit Log events have path pattern support)\nconst audit_log_bucket = new gcp.storage.Bucket(\"audit-log-bucket\", {\n name: \"gcf-auditlog-bucket\",\n location: \"us-central1\",\n uniformBucketLevelAccess: true,\n});\n// Permissions on the service account used by the function and Eventarc trigger\nconst invoking = new gcp.projects.IAMMember(\"invoking\", {\n project: \"my-project-name\",\n role: \"roles/run.invoker\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst event_receiving = new gcp.projects.IAMMember(\"event-receiving\", {\n project: \"my-project-name\",\n role: \"roles/eventarc.eventReceiver\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n}, {\n dependsOn: [invoking],\n});\nconst artifactregistry_reader = new gcp.projects.IAMMember(\"artifactregistry-reader\", {\n project: \"my-project-name\",\n role: \"roles/artifactregistry.reader\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n}, {\n dependsOn: [event_receiving],\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"gcf-function\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs12\",\n entryPoint: \"entryPoint\",\n environmentVariables: {\n BUILD_CONFIG_TEST: \"build_test\",\n },\n source: {\n storageSource: {\n bucket: source_bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 3,\n minInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n environmentVariables: {\n SERVICE_CONFIG_TEST: \"config_test\",\n },\n ingressSettings: \"ALLOW_INTERNAL_ONLY\",\n allTrafficOnLatestRevision: true,\n serviceAccountEmail: account.email,\n },\n eventTrigger: {\n triggerRegion: \"us-central1\",\n eventType: \"google.cloud.audit.log.v1.written\",\n retryPolicy: \"RETRY_POLICY_RETRY\",\n serviceAccountEmail: account.email,\n eventFilters: [\n {\n attribute: \"serviceName\",\n value: \"storage.googleapis.com\",\n },\n {\n attribute: \"methodName\",\n value: \"storage.objects.create\",\n },\n {\n attribute: \"resourceName\",\n value: pulumi.interpolate`/projects/_/buckets/${audit_log_bucket.name}/objects/*.txt`,\n operator: \"match-path-pattern\",\n },\n ],\n },\n}, {\n dependsOn: [\n event_receiving,\n artifactregistry_reader,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# This example follows the examples shown in this Google Cloud Community blog post\n# https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n# and the docs:\n# https://cloud.google.com/eventarc/docs/path-patterns\nsource_bucket = gcp.storage.Bucket(\"source-bucket\",\n name=\"gcf-source-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=source_bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account - used for both the cloud function and eventarc trigger in the test\")\n# Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n# Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n# google_cloudfunctions2_function below (Audit Log events have path pattern support)\naudit_log_bucket = gcp.storage.Bucket(\"audit-log-bucket\",\n name=\"gcf-auditlog-bucket\",\n location=\"us-central1\",\n uniform_bucket_level_access=True)\n# Permissions on the service account used by the function and Eventarc trigger\ninvoking = gcp.projects.IAMMember(\"invoking\",\n project=\"my-project-name\",\n role=\"roles/run.invoker\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nevent_receiving = gcp.projects.IAMMember(\"event-receiving\",\n project=\"my-project-name\",\n role=\"roles/eventarc.eventReceiver\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"),\n opts = pulumi.ResourceOptions(depends_on=[invoking]))\nartifactregistry_reader = gcp.projects.IAMMember(\"artifactregistry-reader\",\n project=\"my-project-name\",\n role=\"roles/artifactregistry.reader\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"),\n opts = pulumi.ResourceOptions(depends_on=[event_receiving]))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"gcf-function\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs12\",\n \"entry_point\": \"entryPoint\",\n \"environment_variables\": {\n \"BUILD_CONFIG_TEST\": \"build_test\",\n },\n \"source\": {\n \"storage_source\": {\n \"bucket\": source_bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"max_instance_count\": 3,\n \"min_instance_count\": 1,\n \"available_memory\": \"256M\",\n \"timeout_seconds\": 60,\n \"environment_variables\": {\n \"SERVICE_CONFIG_TEST\": \"config_test\",\n },\n \"ingress_settings\": \"ALLOW_INTERNAL_ONLY\",\n \"all_traffic_on_latest_revision\": True,\n \"service_account_email\": account.email,\n },\n event_trigger={\n \"trigger_region\": \"us-central1\",\n \"event_type\": \"google.cloud.audit.log.v1.written\",\n \"retry_policy\": \"RETRY_POLICY_RETRY\",\n \"service_account_email\": account.email,\n \"event_filters\": [\n {\n \"attribute\": \"serviceName\",\n \"value\": \"storage.googleapis.com\",\n },\n {\n \"attribute\": \"methodName\",\n \"value\": \"storage.objects.create\",\n },\n {\n \"attribute\": \"resourceName\",\n \"value\": audit_log_bucket.name.apply(lambda name: f\"/projects/_/buckets/{name}/objects/*.txt\"),\n \"operator\": \"match-path-pattern\",\n },\n ],\n },\n opts = pulumi.ResourceOptions(depends_on=[\n event_receiving,\n artifactregistry_reader,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // This example follows the examples shown in this Google Cloud Community blog post\n // https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n // and the docs:\n // https://cloud.google.com/eventarc/docs/path-patterns\n var source_bucket = new Gcp.Storage.Bucket(\"source-bucket\", new()\n {\n Name = \"gcf-source-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = source_bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account - used for both the cloud function and eventarc trigger in the test\",\n });\n\n // Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n // Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n // google_cloudfunctions2_function below (Audit Log events have path pattern support)\n var audit_log_bucket = new Gcp.Storage.Bucket(\"audit-log-bucket\", new()\n {\n Name = \"gcf-auditlog-bucket\",\n Location = \"us-central1\",\n UniformBucketLevelAccess = true,\n });\n\n // Permissions on the service account used by the function and Eventarc trigger\n var invoking = new Gcp.Projects.IAMMember(\"invoking\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/run.invoker\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var event_receiving = new Gcp.Projects.IAMMember(\"event-receiving\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/eventarc.eventReceiver\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n invoking,\n },\n });\n\n var artifactregistry_reader = new Gcp.Projects.IAMMember(\"artifactregistry-reader\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/artifactregistry.reader\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n event_receiving,\n },\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"gcf-function\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs12\",\n EntryPoint = \"entryPoint\",\n EnvironmentVariables = \n {\n { \"BUILD_CONFIG_TEST\", \"build_test\" },\n },\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = source_bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 3,\n MinInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n EnvironmentVariables = \n {\n { \"SERVICE_CONFIG_TEST\", \"config_test\" },\n },\n IngressSettings = \"ALLOW_INTERNAL_ONLY\",\n AllTrafficOnLatestRevision = true,\n ServiceAccountEmail = account.Email,\n },\n EventTrigger = new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerArgs\n {\n TriggerRegion = \"us-central1\",\n EventType = \"google.cloud.audit.log.v1.written\",\n RetryPolicy = \"RETRY_POLICY_RETRY\",\n ServiceAccountEmail = account.Email,\n EventFilters = new[]\n {\n new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerEventFilterArgs\n {\n Attribute = \"serviceName\",\n Value = \"storage.googleapis.com\",\n },\n new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerEventFilterArgs\n {\n Attribute = \"methodName\",\n Value = \"storage.objects.create\",\n },\n new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerEventFilterArgs\n {\n Attribute = \"resourceName\",\n Value = audit_log_bucket.Name.Apply(name =\u003e $\"/projects/_/buckets/{name}/objects/*.txt\"),\n Operator = \"match-path-pattern\",\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n event_receiving,\n artifactregistry_reader,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// This example follows the examples shown in this Google Cloud Community blog post\n\t\t// https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n\t\t// and the docs:\n\t\t// https://cloud.google.com/eventarc/docs/path-patterns\n\t\t_, err := storage.NewBucket(ctx, \"source-bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"gcf-source-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: source_bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account - used for both the cloud function and eventarc trigger in the test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n\t\t// Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n\t\t// google_cloudfunctions2_function below (Audit Log events have path pattern support)\n\t\t_, err = storage.NewBucket(ctx, \"audit-log-bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"gcf-auditlog-bucket\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Permissions on the service account used by the function and Eventarc trigger\n\t\tinvoking, err := projects.NewIAMMember(ctx, \"invoking\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/run.invoker\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"event-receiving\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/eventarc.eventReceiver\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tinvoking,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"artifactregistry-reader\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/artifactregistry.reader\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tevent_receiving,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"gcf-function\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs12\"),\n\t\t\t\tEntryPoint: pulumi.String(\"entryPoint\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"BUILD_CONFIG_TEST\": pulumi.String(\"build_test\"),\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: source_bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(3),\n\t\t\t\tMinInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"SERVICE_CONFIG_TEST\": pulumi.String(\"config_test\"),\n\t\t\t\t},\n\t\t\t\tIngressSettings: pulumi.String(\"ALLOW_INTERNAL_ONLY\"),\n\t\t\t\tAllTrafficOnLatestRevision: pulumi.Bool(true),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t},\n\t\t\tEventTrigger: \u0026cloudfunctionsv2.FunctionEventTriggerArgs{\n\t\t\t\tTriggerRegion: pulumi.String(\"us-central1\"),\n\t\t\t\tEventType: pulumi.String(\"google.cloud.audit.log.v1.written\"),\n\t\t\t\tRetryPolicy: pulumi.String(\"RETRY_POLICY_RETRY\"),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t\tEventFilters: cloudfunctionsv2.FunctionEventTriggerEventFilterArray{\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionEventTriggerEventFilterArgs{\n\t\t\t\t\t\tAttribute: pulumi.String(\"serviceName\"),\n\t\t\t\t\t\tValue: pulumi.String(\"storage.googleapis.com\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionEventTriggerEventFilterArgs{\n\t\t\t\t\t\tAttribute: pulumi.String(\"methodName\"),\n\t\t\t\t\t\tValue: pulumi.String(\"storage.objects.create\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionEventTriggerEventFilterArgs{\n\t\t\t\t\t\tAttribute: pulumi.String(\"resourceName\"),\n\t\t\t\t\t\tValue: audit_log_bucket.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\t\treturn fmt.Sprintf(\"/projects/_/buckets/%v/objects/*.txt\", name), nil\n\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t\tOperator: pulumi.String(\"match-path-pattern\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tevent_receiving,\n\t\t\tartifactregistry_reader,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionEventTriggerArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // This example follows the examples shown in this Google Cloud Community blog post\n // https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n // and the docs:\n // https://cloud.google.com/eventarc/docs/path-patterns\n var source_bucket = new Bucket(\"source-bucket\", BucketArgs.builder()\n .name(\"gcf-source-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(source_bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var account = new Account(\"account\", AccountArgs.builder()\n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account - used for both the cloud function and eventarc trigger in the test\")\n .build());\n\n // Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n // Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n // google_cloudfunctions2_function below (Audit Log events have path pattern support)\n var audit_log_bucket = new Bucket(\"audit-log-bucket\", BucketArgs.builder()\n .name(\"gcf-auditlog-bucket\")\n .location(\"us-central1\")\n .uniformBucketLevelAccess(true)\n .build());\n\n // Permissions on the service account used by the function and Eventarc trigger\n var invoking = new IAMMember(\"invoking\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/run.invoker\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var event_receiving = new IAMMember(\"event-receiving\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/eventarc.eventReceiver\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build(), CustomResourceOptions.builder()\n .dependsOn(invoking)\n .build());\n\n var artifactregistry_reader = new IAMMember(\"artifactregistry-reader\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/artifactregistry.reader\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build(), CustomResourceOptions.builder()\n .dependsOn(event_receiving)\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"gcf-function\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs12\")\n .entryPoint(\"entryPoint\")\n .environmentVariables(Map.of(\"BUILD_CONFIG_TEST\", \"build_test\"))\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(source_bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(3)\n .minInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .environmentVariables(Map.of(\"SERVICE_CONFIG_TEST\", \"config_test\"))\n .ingressSettings(\"ALLOW_INTERNAL_ONLY\")\n .allTrafficOnLatestRevision(true)\n .serviceAccountEmail(account.email())\n .build())\n .eventTrigger(FunctionEventTriggerArgs.builder()\n .triggerRegion(\"us-central1\")\n .eventType(\"google.cloud.audit.log.v1.written\")\n .retryPolicy(\"RETRY_POLICY_RETRY\")\n .serviceAccountEmail(account.email())\n .eventFilters( \n FunctionEventTriggerEventFilterArgs.builder()\n .attribute(\"serviceName\")\n .value(\"storage.googleapis.com\")\n .build(),\n FunctionEventTriggerEventFilterArgs.builder()\n .attribute(\"methodName\")\n .value(\"storage.objects.create\")\n .build(),\n FunctionEventTriggerEventFilterArgs.builder()\n .attribute(\"resourceName\")\n .value(audit_log_bucket.name().applyValue(name -\u003e String.format(\"/projects/_/buckets/%s/objects/*.txt\", name)))\n .operator(\"match-path-pattern\")\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n event_receiving,\n artifactregistry_reader)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # This example follows the examples shown in this Google Cloud Community blog post\n # https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34\n # and the docs:\n # https://cloud.google.com/eventarc/docs/path-patterns\n source-bucket:\n type: gcp:storage:Bucket\n properties:\n name: gcf-source-bucket\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${[\"source-bucket\"].name}\n source:\n fn::FileAsset: function-source.zip\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account - used for both the cloud function and eventarc trigger in the test\n # Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger.\n # Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of\n # google_cloudfunctions2_function below (Audit Log events have path pattern support)\n audit-log-bucket:\n type: gcp:storage:Bucket\n properties:\n name: gcf-auditlog-bucket\n location: us-central1\n uniformBucketLevelAccess: true\n # Permissions on the service account used by the function and Eventarc trigger\n invoking:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/run.invoker\n member: serviceAccount:${account.email}\n event-receiving:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/eventarc.eventReceiver\n member: serviceAccount:${account.email}\n options:\n dependson:\n - ${invoking}\n artifactregistry-reader:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/artifactregistry.reader\n member: serviceAccount:${account.email}\n options:\n dependson:\n - ${[\"event-receiving\"]}\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: gcf-function\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs12\n entryPoint: entryPoint\n environmentVariables:\n BUILD_CONFIG_TEST: build_test\n source:\n storageSource:\n bucket: ${[\"source-bucket\"].name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 3\n minInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n environmentVariables:\n SERVICE_CONFIG_TEST: config_test\n ingressSettings: ALLOW_INTERNAL_ONLY\n allTrafficOnLatestRevision: true\n serviceAccountEmail: ${account.email}\n eventTrigger:\n triggerRegion: us-central1\n eventType: google.cloud.audit.log.v1.written\n retryPolicy: RETRY_POLICY_RETRY\n serviceAccountEmail: ${account.email}\n eventFilters:\n - attribute: serviceName\n value: storage.googleapis.com\n - attribute: methodName\n value: storage.objects.create\n - attribute: resourceName\n value: /projects/_/buckets/${[\"audit-log-bucket\"].name}/objects/*.txt\n operator: match-path-pattern\n options:\n dependson:\n - ${[\"event-receiving\"]}\n - ${[\"artifactregistry-reader\"]}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Basic Builder\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\nconst project = \"my-project-name\";\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account\",\n});\nconst logWriter = new gcp.projects.IAMMember(\"log_writer\", {\n project: account.project,\n role: \"roles/logging.logWriter\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst artifactRegistryWriter = new gcp.projects.IAMMember(\"artifact_registry_writer\", {\n project: account.project,\n role: \"roles/artifactregistry.writer\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst storageObjectAdmin = new gcp.projects.IAMMember(\"storage_object_admin\", {\n project: account.project,\n role: \"roles/storage.objectAdmin\",\n member: pulumi.interpolate`serviceAccount:${account.email}`,\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\n// builder permissions need to stablize before it can pull the source zip\nconst wait60s = new time.index.Sleep(\"wait_60s\", {createDuration: \"60s\"}, {\n dependsOn: [\n logWriter,\n artifactRegistryWriter,\n storageObjectAdmin,\n ],\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"function-v2\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n serviceAccount: account.id,\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n },\n}, {\n dependsOn: [wait60s],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\nproject = \"my-project-name\"\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account\")\nlog_writer = gcp.projects.IAMMember(\"log_writer\",\n project=account.project,\n role=\"roles/logging.logWriter\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nartifact_registry_writer = gcp.projects.IAMMember(\"artifact_registry_writer\",\n project=account.project,\n role=\"roles/artifactregistry.writer\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nstorage_object_admin = gcp.projects.IAMMember(\"storage_object_admin\",\n project=account.project,\n role=\"roles/storage.objectAdmin\",\n member=account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\n# builder permissions need to stablize before it can pull the source zip\nwait60s = time.index.Sleep(\"wait_60s\", create_duration=60s,\nopts = pulumi.ResourceOptions(depends_on=[\n log_writer,\n artifact_registry_writer,\n storage_object_admin,\n ]))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"function-v2\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloHttp\",\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n \"service_account\": account.id,\n },\n service_config={\n \"max_instance_count\": 1,\n \"available_memory\": \"256M\",\n \"timeout_seconds\": 60,\n },\n opts = pulumi.ResourceOptions(depends_on=[wait60s]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Time = Pulumi.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account\",\n });\n\n var logWriter = new Gcp.Projects.IAMMember(\"log_writer\", new()\n {\n Project = account.Project,\n Role = \"roles/logging.logWriter\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var artifactRegistryWriter = new Gcp.Projects.IAMMember(\"artifact_registry_writer\", new()\n {\n Project = account.Project,\n Role = \"roles/artifactregistry.writer\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var storageObjectAdmin = new Gcp.Projects.IAMMember(\"storage_object_admin\", new()\n {\n Project = account.Project,\n Role = \"roles/storage.objectAdmin\",\n Member = account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n // builder permissions need to stablize before it can pull the source zip\n var wait60s = new Time.Index.Sleep(\"wait_60s\", new()\n {\n CreateDuration = \"60s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n logWriter,\n artifactRegistryWriter,\n storageObjectAdmin,\n },\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"function-v2\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n ServiceAccount = account.Id,\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait60s,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlogWriter, err := projects.NewIAMMember(ctx, \"log_writer\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: account.Project,\n\t\t\tRole: pulumi.String(\"roles/logging.logWriter\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tartifactRegistryWriter, err := projects.NewIAMMember(ctx, \"artifact_registry_writer\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: account.Project,\n\t\t\tRole: pulumi.String(\"roles/artifactregistry.writer\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tstorageObjectAdmin, err := projects.NewIAMMember(ctx, \"storage_object_admin\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: account.Project,\n\t\t\tRole: pulumi.String(\"roles/storage.objectAdmin\"),\n\t\t\tMember: account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.Sprintf(\"%v-gcf-source\", project),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// builder permissions need to stablize before it can pull the source zip\n\t\twait60s, err := time.NewSleep(ctx, \"wait_60s\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"60s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tlogWriter,\n\t\t\tartifactRegistryWriter,\n\t\t\tstorageObjectAdmin,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-v2\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tServiceAccount: account.ID(),\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait60s,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = \"my-project-name\";\n\n var account = new Account(\"account\", AccountArgs.builder()\n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account\")\n .build());\n\n var logWriter = new IAMMember(\"logWriter\", IAMMemberArgs.builder()\n .project(account.project())\n .role(\"roles/logging.logWriter\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var artifactRegistryWriter = new IAMMember(\"artifactRegistryWriter\", IAMMemberArgs.builder()\n .project(account.project())\n .role(\"roles/artifactregistry.writer\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var storageObjectAdmin = new IAMMember(\"storageObjectAdmin\", IAMMemberArgs.builder()\n .project(account.project())\n .role(\"roles/storage.objectAdmin\")\n .member(account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n // builder permissions need to stablize before it can pull the source zip\n var wait60s = new Sleep(\"wait60s\", SleepArgs.builder()\n .createDuration(\"60s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n logWriter,\n artifactRegistryWriter,\n storageObjectAdmin)\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"function-v2\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .serviceAccount(account.id())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait60s)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account\n logWriter:\n type: gcp:projects:IAMMember\n name: log_writer\n properties:\n project: ${account.project}\n role: roles/logging.logWriter\n member: serviceAccount:${account.email}\n artifactRegistryWriter:\n type: gcp:projects:IAMMember\n name: artifact_registry_writer\n properties:\n project: ${account.project}\n role: roles/artifactregistry.writer\n member: serviceAccount:${account.email}\n storageObjectAdmin:\n type: gcp:projects:IAMMember\n name: storage_object_admin\n properties:\n project: ${account.project}\n role: roles/storage.objectAdmin\n member: serviceAccount:${account.email}\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n # builder permissions need to stablize before it can pull the source zip\n wait60s:\n type: time:sleep\n name: wait_60s\n properties:\n createDuration: 60s\n options:\n dependson:\n - ${logWriter}\n - ${artifactRegistryWriter}\n - ${storageObjectAdmin}\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: function-v2\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceAccount: ${account.id}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n options:\n dependson:\n - ${wait60s}\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Secret Env\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"secret\",\n replication: {\n userManaged: {\n replicas: [{\n location: \"us-central1\",\n }],\n },\n },\n});\nconst secretSecretVersion = new gcp.secretmanager.SecretVersion(\"secret\", {\n secret: secret.name,\n secretData: \"secret\",\n enabled: true,\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"function-secret\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n secretEnvironmentVariables: [{\n key: \"TEST\",\n projectId: project,\n secret: secret.secretId,\n version: \"latest\",\n }],\n },\n}, {\n dependsOn: [secretSecretVersion],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"secret\",\n replication={\n \"user_managed\": {\n \"replicas\": [{\n \"location\": \"us-central1\",\n }],\n },\n })\nsecret_secret_version = gcp.secretmanager.SecretVersion(\"secret\",\n secret=secret.name,\n secret_data=\"secret\",\n enabled=True)\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"function-secret\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloHttp\",\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"max_instance_count\": 1,\n \"available_memory\": \"256M\",\n \"timeout_seconds\": 60,\n \"secret_environment_variables\": [{\n \"key\": \"TEST\",\n \"project_id\": project,\n \"secret\": secret.secret_id,\n \"version\": \"latest\",\n }],\n },\n opts = pulumi.ResourceOptions(depends_on=[secret_secret_version]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n UserManaged = new Gcp.SecretManager.Inputs.SecretReplicationUserManagedArgs\n {\n Replicas = new[]\n {\n new Gcp.SecretManager.Inputs.SecretReplicationUserManagedReplicaArgs\n {\n Location = \"us-central1\",\n },\n },\n },\n },\n });\n\n var secretSecretVersion = new Gcp.SecretManager.SecretVersion(\"secret\", new()\n {\n Secret = secret.Name,\n SecretData = \"secret\",\n Enabled = true,\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"function-secret\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n SecretEnvironmentVariables = new[]\n {\n new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigSecretEnvironmentVariableArgs\n {\n Key = \"TEST\",\n ProjectId = project,\n Secret = secret.SecretId,\n Version = \"latest\",\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secretSecretVersion,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.Sprintf(\"%v-gcf-source\", project),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tUserManaged: \u0026secretmanager.SecretReplicationUserManagedArgs{\n\t\t\t\t\tReplicas: secretmanager.SecretReplicationUserManagedReplicaArray{\n\t\t\t\t\t\t\u0026secretmanager.SecretReplicationUserManagedReplicaArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecretSecretVersion, err := secretmanager.NewSecretVersion(ctx, \"secret\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.Name,\n\t\t\tSecretData: pulumi.String(\"secret\"),\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-secret\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tSecretEnvironmentVariables: cloudfunctionsv2.FunctionServiceConfigSecretEnvironmentVariableArray{\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionServiceConfigSecretEnvironmentVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"TEST\"),\n\t\t\t\t\t\tProjectId: pulumi.String(project),\n\t\t\t\t\t\tSecret: secret.SecretId,\n\t\t\t\t\t\tVersion: pulumi.String(\"latest\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecretSecretVersion,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationUserManagedArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = \"my-project-name\";\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var secret = new Secret(\"secret\", SecretArgs.builder()\n .secretId(\"secret\")\n .replication(SecretReplicationArgs.builder()\n .userManaged(SecretReplicationUserManagedArgs.builder()\n .replicas(SecretReplicationUserManagedReplicaArgs.builder()\n .location(\"us-central1\")\n .build())\n .build())\n .build())\n .build());\n\n var secretSecretVersion = new SecretVersion(\"secretSecretVersion\", SecretVersionArgs.builder()\n .secret(secret.name())\n .secretData(\"secret\")\n .enabled(true)\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"function-secret\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .secretEnvironmentVariables(FunctionServiceConfigSecretEnvironmentVariableArgs.builder()\n .key(\"TEST\")\n .projectId(project)\n .secret(secret.secretId())\n .version(\"latest\")\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(secretSecretVersion)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: function-secret\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n secretEnvironmentVariables:\n - key: TEST\n projectId: ${project}\n secret: ${secret.secretId}\n version: latest\n options:\n dependson:\n - ${secretSecretVersion}\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret\n replication:\n userManaged:\n replicas:\n - location: us-central1\n secretSecretVersion:\n type: gcp:secretmanager:SecretVersion\n name: secret\n properties:\n secret: ${secret.name}\n secretData: secret\n enabled: true\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Secret Volume\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"secret\",\n replication: {\n userManaged: {\n replicas: [{\n location: \"us-central1\",\n }],\n },\n },\n});\nconst secretSecretVersion = new gcp.secretmanager.SecretVersion(\"secret\", {\n secret: secret.name,\n secretData: \"secret\",\n enabled: true,\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"function-secret\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n secretVolumes: [{\n mountPath: \"/etc/secrets\",\n projectId: project,\n secret: secret.secretId,\n }],\n },\n}, {\n dependsOn: [secretSecretVersion],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"secret\",\n replication={\n \"user_managed\": {\n \"replicas\": [{\n \"location\": \"us-central1\",\n }],\n },\n })\nsecret_secret_version = gcp.secretmanager.SecretVersion(\"secret\",\n secret=secret.name,\n secret_data=\"secret\",\n enabled=True)\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"function-secret\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloHttp\",\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"max_instance_count\": 1,\n \"available_memory\": \"256M\",\n \"timeout_seconds\": 60,\n \"secret_volumes\": [{\n \"mount_path\": \"/etc/secrets\",\n \"project_id\": project,\n \"secret\": secret.secret_id,\n }],\n },\n opts = pulumi.ResourceOptions(depends_on=[secret_secret_version]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n UserManaged = new Gcp.SecretManager.Inputs.SecretReplicationUserManagedArgs\n {\n Replicas = new[]\n {\n new Gcp.SecretManager.Inputs.SecretReplicationUserManagedReplicaArgs\n {\n Location = \"us-central1\",\n },\n },\n },\n },\n });\n\n var secretSecretVersion = new Gcp.SecretManager.SecretVersion(\"secret\", new()\n {\n Secret = secret.Name,\n SecretData = \"secret\",\n Enabled = true,\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"function-secret\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n SecretVolumes = new[]\n {\n new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigSecretVolumeArgs\n {\n MountPath = \"/etc/secrets\",\n ProjectId = project,\n Secret = secret.SecretId,\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secretSecretVersion,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.Sprintf(\"%v-gcf-source\", project),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tUserManaged: \u0026secretmanager.SecretReplicationUserManagedArgs{\n\t\t\t\t\tReplicas: secretmanager.SecretReplicationUserManagedReplicaArray{\n\t\t\t\t\t\t\u0026secretmanager.SecretReplicationUserManagedReplicaArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecretSecretVersion, err := secretmanager.NewSecretVersion(ctx, \"secret\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.Name,\n\t\t\tSecretData: pulumi.String(\"secret\"),\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-secret\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tSecretVolumes: cloudfunctionsv2.FunctionServiceConfigSecretVolumeArray{\n\t\t\t\t\t\u0026cloudfunctionsv2.FunctionServiceConfigSecretVolumeArgs{\n\t\t\t\t\t\tMountPath: pulumi.String(\"/etc/secrets\"),\n\t\t\t\t\t\tProjectId: pulumi.String(project),\n\t\t\t\t\t\tSecret: secret.SecretId,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecretSecretVersion,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationUserManagedArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = \"my-project-name\";\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var secret = new Secret(\"secret\", SecretArgs.builder()\n .secretId(\"secret\")\n .replication(SecretReplicationArgs.builder()\n .userManaged(SecretReplicationUserManagedArgs.builder()\n .replicas(SecretReplicationUserManagedReplicaArgs.builder()\n .location(\"us-central1\")\n .build())\n .build())\n .build())\n .build());\n\n var secretSecretVersion = new SecretVersion(\"secretSecretVersion\", SecretVersionArgs.builder()\n .secret(secret.name())\n .secretData(\"secret\")\n .enabled(true)\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"function-secret\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .secretVolumes(FunctionServiceConfigSecretVolumeArgs.builder()\n .mountPath(\"/etc/secrets\")\n .projectId(project)\n .secret(secret.secretId())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(secretSecretVersion)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: function-secret\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n secretVolumes:\n - mountPath: /etc/secrets\n projectId: ${project}\n secret: ${secret.secretId}\n options:\n dependson:\n - ${secretSecretVersion}\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret\n replication:\n userManaged:\n replicas:\n - location: us-central1\n secretSecretVersion:\n type: gcp:secretmanager:SecretVersion\n name: secret\n properties:\n secret: ${secret.name}\n secretData: secret\n enabled: true\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Private Workerpool\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst pool = new gcp.cloudbuild.WorkerPool(\"pool\", {\n name: \"workerpool\",\n location: \"us-central1\",\n workerConfig: {\n diskSizeGb: 100,\n machineType: \"e2-standard-8\",\n noExternalIp: false,\n },\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"function-workerpool\",\n location: \"us-central1\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n workerPool: pool.id,\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\npool = gcp.cloudbuild.WorkerPool(\"pool\",\n name=\"workerpool\",\n location=\"us-central1\",\n worker_config={\n \"disk_size_gb\": 100,\n \"machine_type\": \"e2-standard-8\",\n \"no_external_ip\": False,\n })\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"function-workerpool\",\n location=\"us-central1\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloHttp\",\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n \"worker_pool\": pool.id,\n },\n service_config={\n \"max_instance_count\": 1,\n \"available_memory\": \"256M\",\n \"timeout_seconds\": 60,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var pool = new Gcp.CloudBuild.WorkerPool(\"pool\", new()\n {\n Name = \"workerpool\",\n Location = \"us-central1\",\n WorkerConfig = new Gcp.CloudBuild.Inputs.WorkerPoolWorkerConfigArgs\n {\n DiskSizeGb = 100,\n MachineType = \"e2-standard-8\",\n NoExternalIp = false,\n },\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"function-workerpool\",\n Location = \"us-central1\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n WorkerPool = pool.Id,\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudbuild\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.Sprintf(\"%v-gcf-source\", project),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpool, err := cloudbuild.NewWorkerPool(ctx, \"pool\", \u0026cloudbuild.WorkerPoolArgs{\n\t\t\tName: pulumi.String(\"workerpool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tWorkerConfig: \u0026cloudbuild.WorkerPoolWorkerConfigArgs{\n\t\t\t\tDiskSizeGb: pulumi.Int(100),\n\t\t\t\tMachineType: pulumi.String(\"e2-standard-8\"),\n\t\t\t\tNoExternalIp: pulumi.Bool(false),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-workerpool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tWorkerPool: pool.ID(),\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.cloudbuild.WorkerPool;\nimport com.pulumi.gcp.cloudbuild.WorkerPoolArgs;\nimport com.pulumi.gcp.cloudbuild.inputs.WorkerPoolWorkerConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = \"my-project-name\";\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var pool = new WorkerPool(\"pool\", WorkerPoolArgs.builder()\n .name(\"workerpool\")\n .location(\"us-central1\")\n .workerConfig(WorkerPoolWorkerConfigArgs.builder()\n .diskSizeGb(100)\n .machineType(\"e2-standard-8\")\n .noExternalIp(false)\n .build())\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"function-workerpool\")\n .location(\"us-central1\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .workerPool(pool.id())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n pool:\n type: gcp:cloudbuild:WorkerPool\n properties:\n name: workerpool\n location: us-central1\n workerConfig:\n diskSizeGb: 100\n machineType: e2-standard-8\n noExternalIp: false\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: function-workerpool\n location: us-central1\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n workerPool: ${pool.id}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Cmek Docs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst projectGetProject = gcp.organizations.getProject({});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst eaSa = new gcp.projects.ServiceIdentity(\"ea_sa\", {\n project: projectGetProject.then(projectGetProject =\u003e projectGetProject.projectId),\n service: \"eventarc.googleapis.com\",\n});\nconst unencoded_ar_repo = new gcp.artifactregistry.Repository(\"unencoded-ar-repo\", {\n repositoryId: \"ar-repo\",\n location: \"us-central1\",\n format: \"DOCKER\",\n});\nconst gcfCmekKeyuser = new gcp.kms.CryptoKeyIAMBinding(\"gcf_cmek_keyuser\", {\n cryptoKeyId: \"cmek-key\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members: [\n projectGetProject.then(projectGetProject =\u003e `serviceAccount:service-${projectGetProject.number}@gcf-admin-robot.iam.gserviceaccount.com`),\n projectGetProject.then(projectGetProject =\u003e `serviceAccount:service-${projectGetProject.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n projectGetProject.then(projectGetProject =\u003e `serviceAccount:service-${projectGetProject.number}@gs-project-accounts.iam.gserviceaccount.com`),\n projectGetProject.then(projectGetProject =\u003e `serviceAccount:service-${projectGetProject.number}@serverless-robot-prod.iam.gserviceaccount.com`),\n eaSa.member,\n ],\n}, {\n dependsOn: [eaSa],\n});\nconst encoded_ar_repo = new gcp.artifactregistry.Repository(\"encoded-ar-repo\", {\n location: \"us-central1\",\n repositoryId: \"cmek-repo\",\n format: \"DOCKER\",\n kmsKeyName: \"cmek-key\",\n}, {\n dependsOn: [gcfCmekKeyuser],\n});\nconst binding = new gcp.artifactregistry.RepositoryIamBinding(\"binding\", {\n location: encoded_ar_repo.location,\n repository: encoded_ar_repo.name,\n role: \"roles/artifactregistry.admin\",\n members: [projectGetProject.then(projectGetProject =\u003e `serviceAccount:service-${projectGetProject.number}@gcf-admin-robot.iam.gserviceaccount.com`)],\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"function-cmek\",\n location: \"us-central1\",\n description: \"CMEK function\",\n kmsKeyName: \"cmek-key\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloHttp\",\n dockerRepository: encoded_ar_repo.id,\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n },\n serviceConfig: {\n maxInstanceCount: 1,\n availableMemory: \"256M\",\n timeoutSeconds: 60,\n },\n}, {\n dependsOn: [gcfCmekKeyuser],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\nproject_get_project = gcp.organizations.get_project()\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nea_sa = gcp.projects.ServiceIdentity(\"ea_sa\",\n project=project_get_project.project_id,\n service=\"eventarc.googleapis.com\")\nunencoded_ar_repo = gcp.artifactregistry.Repository(\"unencoded-ar-repo\",\n repository_id=\"ar-repo\",\n location=\"us-central1\",\n format=\"DOCKER\")\ngcf_cmek_keyuser = gcp.kms.CryptoKeyIAMBinding(\"gcf_cmek_keyuser\",\n crypto_key_id=\"cmek-key\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members=[\n f\"serviceAccount:service-{project_get_project.number}@gcf-admin-robot.iam.gserviceaccount.com\",\n f\"serviceAccount:service-{project_get_project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n f\"serviceAccount:service-{project_get_project.number}@gs-project-accounts.iam.gserviceaccount.com\",\n f\"serviceAccount:service-{project_get_project.number}@serverless-robot-prod.iam.gserviceaccount.com\",\n ea_sa.member,\n ],\n opts = pulumi.ResourceOptions(depends_on=[ea_sa]))\nencoded_ar_repo = gcp.artifactregistry.Repository(\"encoded-ar-repo\",\n location=\"us-central1\",\n repository_id=\"cmek-repo\",\n format=\"DOCKER\",\n kms_key_name=\"cmek-key\",\n opts = pulumi.ResourceOptions(depends_on=[gcf_cmek_keyuser]))\nbinding = gcp.artifactregistry.RepositoryIamBinding(\"binding\",\n location=encoded_ar_repo.location,\n repository=encoded_ar_repo.name,\n role=\"roles/artifactregistry.admin\",\n members=[f\"serviceAccount:service-{project_get_project.number}@gcf-admin-robot.iam.gserviceaccount.com\"])\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"function-cmek\",\n location=\"us-central1\",\n description=\"CMEK function\",\n kms_key_name=\"cmek-key\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloHttp\",\n \"docker_repository\": encoded_ar_repo.id,\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n },\n service_config={\n \"max_instance_count\": 1,\n \"available_memory\": \"256M\",\n \"timeout_seconds\": 60,\n },\n opts = pulumi.ResourceOptions(depends_on=[gcf_cmek_keyuser]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var projectGetProject = Gcp.Organizations.GetProject.Invoke();\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var eaSa = new Gcp.Projects.ServiceIdentity(\"ea_sa\", new()\n {\n Project = projectGetProject.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Service = \"eventarc.googleapis.com\",\n });\n\n var unencoded_ar_repo = new Gcp.ArtifactRegistry.Repository(\"unencoded-ar-repo\", new()\n {\n RepositoryId = \"ar-repo\",\n Location = \"us-central1\",\n Format = \"DOCKER\",\n });\n\n var gcfCmekKeyuser = new Gcp.Kms.CryptoKeyIAMBinding(\"gcf_cmek_keyuser\", new()\n {\n CryptoKeyId = \"cmek-key\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Members = new[]\n {\n $\"serviceAccount:service-{projectGetProject.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcf-admin-robot.iam.gserviceaccount.com\",\n $\"serviceAccount:service-{projectGetProject.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n $\"serviceAccount:service-{projectGetProject.Apply(getProjectResult =\u003e getProjectResult.Number)}@gs-project-accounts.iam.gserviceaccount.com\",\n $\"serviceAccount:service-{projectGetProject.Apply(getProjectResult =\u003e getProjectResult.Number)}@serverless-robot-prod.iam.gserviceaccount.com\",\n eaSa.Member,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n eaSa,\n },\n });\n\n var encoded_ar_repo = new Gcp.ArtifactRegistry.Repository(\"encoded-ar-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"cmek-repo\",\n Format = \"DOCKER\",\n KmsKeyName = \"cmek-key\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n gcfCmekKeyuser,\n },\n });\n\n var binding = new Gcp.ArtifactRegistry.RepositoryIamBinding(\"binding\", new()\n {\n Location = encoded_ar_repo.Location,\n Repository = encoded_ar_repo.Name,\n Role = \"roles/artifactregistry.admin\",\n Members = new[]\n {\n $\"serviceAccount:service-{projectGetProject.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcf-admin-robot.iam.gserviceaccount.com\",\n },\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"function-cmek\",\n Location = \"us-central1\",\n Description = \"CMEK function\",\n KmsKeyName = \"cmek-key\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloHttp\",\n DockerRepository = encoded_ar_repo.Id,\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 1,\n AvailableMemory = \"256M\",\n TimeoutSeconds = 60,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n gcfCmekKeyuser,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\tprojectGetProject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.Sprintf(\"%v-gcf-source\", project),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\teaSa, err := projects.NewServiceIdentity(ctx, \"ea_sa\", \u0026projects.ServiceIdentityArgs{\n\t\t\tProject: pulumi.String(projectGetProject.ProjectId),\n\t\t\tService: pulumi.String(\"eventarc.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"unencoded-ar-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tRepositoryId: pulumi.String(\"ar-repo\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tgcfCmekKeyuser, err := kms.NewCryptoKeyIAMBinding(ctx, \"gcf_cmek_keyuser\", \u0026kms.CryptoKeyIAMBindingArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"cmek-key\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:service-%v@gcf-admin-robot.iam.gserviceaccount.com\", projectGetProject.Number),\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", projectGetProject.Number),\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:service-%v@gs-project-accounts.iam.gserviceaccount.com\", projectGetProject.Number),\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:service-%v@serverless-robot-prod.iam.gserviceaccount.com\", projectGetProject.Number),\n\t\t\t\teaSa.Member,\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\teaSa,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"encoded-ar-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"cmek-repo\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tKmsKeyName: pulumi.String(\"cmek-key\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tgcfCmekKeyuser,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepositoryIamBinding(ctx, \"binding\", \u0026artifactregistry.RepositoryIamBindingArgs{\n\t\t\tLocation: encoded_ar_repo.Location,\n\t\t\tRepository: encoded_ar_repo.Name,\n\t\t\tRole: pulumi.String(\"roles/artifactregistry.admin\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:service-%v@gcf-admin-robot.iam.gserviceaccount.com\", projectGetProject.Number),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-cmek\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"CMEK function\"),\n\t\t\tKmsKeyName: pulumi.String(\"cmek-key\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t\t\tDockerRepository: encoded_ar_repo.ID(),\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"256M\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tgcfCmekKeyuser,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.projects.ServiceIdentity;\nimport com.pulumi.gcp.projects.ServiceIdentityArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBinding;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBindingArgs;\nimport com.pulumi.gcp.artifactregistry.RepositoryIamBinding;\nimport com.pulumi.gcp.artifactregistry.RepositoryIamBindingArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = \"my-project-name\";\n\n final var projectGetProject = OrganizationsFunctions.getProject();\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var eaSa = new ServiceIdentity(\"eaSa\", ServiceIdentityArgs.builder()\n .project(projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .service(\"eventarc.googleapis.com\")\n .build());\n\n var unencoded_ar_repo = new Repository(\"unencoded-ar-repo\", RepositoryArgs.builder()\n .repositoryId(\"ar-repo\")\n .location(\"us-central1\")\n .format(\"DOCKER\")\n .build());\n\n var gcfCmekKeyuser = new CryptoKeyIAMBinding(\"gcfCmekKeyuser\", CryptoKeyIAMBindingArgs.builder()\n .cryptoKeyId(\"cmek-key\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .members( \n String.format(\"serviceAccount:service-%s@gcf-admin-robot.iam.gserviceaccount.com\", projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.number())),\n String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.number())),\n String.format(\"serviceAccount:service-%s@gs-project-accounts.iam.gserviceaccount.com\", projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.number())),\n String.format(\"serviceAccount:service-%s@serverless-robot-prod.iam.gserviceaccount.com\", projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.number())),\n eaSa.member())\n .build(), CustomResourceOptions.builder()\n .dependsOn(eaSa)\n .build());\n\n var encoded_ar_repo = new Repository(\"encoded-ar-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"cmek-repo\")\n .format(\"DOCKER\")\n .kmsKeyName(\"cmek-key\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(gcfCmekKeyuser)\n .build());\n\n var binding = new RepositoryIamBinding(\"binding\", RepositoryIamBindingArgs.builder()\n .location(encoded_ar_repo.location())\n .repository(encoded_ar_repo.name())\n .role(\"roles/artifactregistry.admin\")\n .members(String.format(\"serviceAccount:service-%s@gcf-admin-robot.iam.gserviceaccount.com\", projectGetProject.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"function-cmek\")\n .location(\"us-central1\")\n .description(\"CMEK function\")\n .kmsKeyName(\"cmek-key\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloHttp\")\n .dockerRepository(encoded_ar_repo.id())\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(1)\n .availableMemory(\"256M\")\n .timeoutSeconds(60)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(gcfCmekKeyuser)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n eaSa:\n type: gcp:projects:ServiceIdentity\n name: ea_sa\n properties:\n project: ${projectGetProject.projectId}\n service: eventarc.googleapis.com\n unencoded-ar-repo:\n type: gcp:artifactregistry:Repository\n properties:\n repositoryId: ar-repo\n location: us-central1\n format: DOCKER\n binding:\n type: gcp:artifactregistry:RepositoryIamBinding\n properties:\n location: ${[\"encoded-ar-repo\"].location}\n repository: ${[\"encoded-ar-repo\"].name}\n role: roles/artifactregistry.admin\n members:\n - serviceAccount:service-${projectGetProject.number}@gcf-admin-robot.iam.gserviceaccount.com\n gcfCmekKeyuser:\n type: gcp:kms:CryptoKeyIAMBinding\n name: gcf_cmek_keyuser\n properties:\n cryptoKeyId: cmek-key\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n members:\n - serviceAccount:service-${projectGetProject.number}@gcf-admin-robot.iam.gserviceaccount.com\n - serviceAccount:service-${projectGetProject.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\n - serviceAccount:service-${projectGetProject.number}@gs-project-accounts.iam.gserviceaccount.com\n - serviceAccount:service-${projectGetProject.number}@serverless-robot-prod.iam.gserviceaccount.com\n - ${eaSa.member}\n options:\n dependson:\n - ${eaSa}\n encoded-ar-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: cmek-repo\n format: DOCKER\n kmsKeyName: cmek-key\n options:\n dependson:\n - ${gcfCmekKeyuser}\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: function-cmek\n location: us-central1\n description: CMEK function\n kmsKeyName: cmek-key\n buildConfig:\n runtime: nodejs16\n entryPoint: helloHttp\n dockerRepository: ${[\"encoded-ar-repo\"].id}\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n serviceConfig:\n maxInstanceCount: 1\n availableMemory: 256M\n timeoutSeconds: 60\n options:\n dependson:\n - ${gcfCmekKeyuser}\nvariables:\n project: my-project-name\n projectGetProject:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Abiu\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account\",\n});\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"functions2-topic\"});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"gcf-function\",\n location: \"europe-west6\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloPubSub\",\n environmentVariables: {\n BUILD_CONFIG_TEST: \"build_test\",\n },\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n automaticUpdatePolicy: {},\n },\n serviceConfig: {\n maxInstanceCount: 3,\n minInstanceCount: 1,\n availableMemory: \"4Gi\",\n timeoutSeconds: 60,\n maxInstanceRequestConcurrency: 80,\n availableCpu: \"4\",\n environmentVariables: {\n SERVICE_CONFIG_TEST: \"config_test\",\n },\n ingressSettings: \"ALLOW_INTERNAL_ONLY\",\n allTrafficOnLatestRevision: true,\n serviceAccountEmail: account.email,\n },\n eventTrigger: {\n triggerRegion: \"us-central1\",\n eventType: \"google.cloud.pubsub.topic.v1.messagePublished\",\n pubsubTopic: topic.id,\n retryPolicy: \"RETRY_POLICY_RETRY\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account\")\ntopic = gcp.pubsub.Topic(\"topic\", name=\"functions2-topic\")\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"gcf-function\",\n location=\"europe-west6\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloPubSub\",\n \"environment_variables\": {\n \"BUILD_CONFIG_TEST\": \"build_test\",\n },\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n \"automatic_update_policy\": {},\n },\n service_config={\n \"max_instance_count\": 3,\n \"min_instance_count\": 1,\n \"available_memory\": \"4Gi\",\n \"timeout_seconds\": 60,\n \"max_instance_request_concurrency\": 80,\n \"available_cpu\": \"4\",\n \"environment_variables\": {\n \"SERVICE_CONFIG_TEST\": \"config_test\",\n },\n \"ingress_settings\": \"ALLOW_INTERNAL_ONLY\",\n \"all_traffic_on_latest_revision\": True,\n \"service_account_email\": account.email,\n },\n event_trigger={\n \"trigger_region\": \"us-central1\",\n \"event_type\": \"google.cloud.pubsub.topic.v1.messagePublished\",\n \"pubsub_topic\": topic.id,\n \"retry_policy\": \"RETRY_POLICY_RETRY\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account\",\n });\n\n var topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n Name = \"functions2-topic\",\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"gcf-function\",\n Location = \"europe-west6\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloPubSub\",\n EnvironmentVariables = \n {\n { \"BUILD_CONFIG_TEST\", \"build_test\" },\n },\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n AutomaticUpdatePolicy = null,\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 3,\n MinInstanceCount = 1,\n AvailableMemory = \"4Gi\",\n TimeoutSeconds = 60,\n MaxInstanceRequestConcurrency = 80,\n AvailableCpu = \"4\",\n EnvironmentVariables = \n {\n { \"SERVICE_CONFIG_TEST\", \"config_test\" },\n },\n IngressSettings = \"ALLOW_INTERNAL_ONLY\",\n AllTrafficOnLatestRevision = true,\n ServiceAccountEmail = account.Email,\n },\n EventTrigger = new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerArgs\n {\n TriggerRegion = \"us-central1\",\n EventType = \"google.cloud.pubsub.topic.v1.messagePublished\",\n PubsubTopic = topic.Id,\n RetryPolicy = \"RETRY_POLICY_RETRY\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttopic, err := pubsub.NewTopic(ctx, \"topic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"functions2-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.Sprintf(\"%v-gcf-source\", project),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"gcf-function\"),\n\t\t\tLocation: pulumi.String(\"europe-west6\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloPubSub\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"BUILD_CONFIG_TEST\": pulumi.String(\"build_test\"),\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAutomaticUpdatePolicy: \u0026cloudfunctionsv2.FunctionBuildConfigAutomaticUpdatePolicyArgs{},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(3),\n\t\t\t\tMinInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"4Gi\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tMaxInstanceRequestConcurrency: pulumi.Int(80),\n\t\t\t\tAvailableCpu: pulumi.String(\"4\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"SERVICE_CONFIG_TEST\": pulumi.String(\"config_test\"),\n\t\t\t\t},\n\t\t\t\tIngressSettings: pulumi.String(\"ALLOW_INTERNAL_ONLY\"),\n\t\t\t\tAllTrafficOnLatestRevision: pulumi.Bool(true),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t},\n\t\t\tEventTrigger: \u0026cloudfunctionsv2.FunctionEventTriggerArgs{\n\t\t\t\tTriggerRegion: pulumi.String(\"us-central1\"),\n\t\t\t\tEventType: pulumi.String(\"google.cloud.pubsub.topic.v1.messagePublished\"),\n\t\t\t\tPubsubTopic: topic.ID(),\n\t\t\t\tRetryPolicy: pulumi.String(\"RETRY_POLICY_RETRY\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigAutomaticUpdatePolicyArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionEventTriggerArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = \"my-project-name\";\n\n var account = new Account(\"account\", AccountArgs.builder()\n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account\")\n .build());\n\n var topic = new Topic(\"topic\", TopicArgs.builder()\n .name(\"functions2-topic\")\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"gcf-function\")\n .location(\"europe-west6\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloPubSub\")\n .environmentVariables(Map.of(\"BUILD_CONFIG_TEST\", \"build_test\"))\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .automaticUpdatePolicy()\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(3)\n .minInstanceCount(1)\n .availableMemory(\"4Gi\")\n .timeoutSeconds(60)\n .maxInstanceRequestConcurrency(80)\n .availableCpu(\"4\")\n .environmentVariables(Map.of(\"SERVICE_CONFIG_TEST\", \"config_test\"))\n .ingressSettings(\"ALLOW_INTERNAL_ONLY\")\n .allTrafficOnLatestRevision(true)\n .serviceAccountEmail(account.email())\n .build())\n .eventTrigger(FunctionEventTriggerArgs.builder()\n .triggerRegion(\"us-central1\")\n .eventType(\"google.cloud.pubsub.topic.v1.messagePublished\")\n .pubsubTopic(topic.id())\n .retryPolicy(\"RETRY_POLICY_RETRY\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: functions2-topic\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: gcf-function\n location: europe-west6\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloPubSub\n environmentVariables:\n BUILD_CONFIG_TEST: build_test\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n automaticUpdatePolicy: {}\n serviceConfig:\n maxInstanceCount: 3\n minInstanceCount: 1\n availableMemory: 4Gi\n timeoutSeconds: 60\n maxInstanceRequestConcurrency: 80\n availableCpu: '4'\n environmentVariables:\n SERVICE_CONFIG_TEST: config_test\n ingressSettings: ALLOW_INTERNAL_ONLY\n allTrafficOnLatestRevision: true\n serviceAccountEmail: ${account.email}\n eventTrigger:\n triggerRegion: us-central1\n eventType: google.cloud.pubsub.topic.v1.messagePublished\n pubsubTopic: ${topic.id}\n retryPolicy: RETRY_POLICY_RETRY\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudfunctions2 Abiu On Deploy\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst account = new gcp.serviceaccount.Account(\"account\", {\n accountId: \"gcf-sa\",\n displayName: \"Test Service Account\",\n});\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"functions2-topic\"});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-gcf-source`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst _function = new gcp.cloudfunctionsv2.Function(\"function\", {\n name: \"gcf-function\",\n location: \"europe-west6\",\n description: \"a new function\",\n buildConfig: {\n runtime: \"nodejs16\",\n entryPoint: \"helloPubSub\",\n environmentVariables: {\n BUILD_CONFIG_TEST: \"build_test\",\n },\n source: {\n storageSource: {\n bucket: bucket.name,\n object: object.name,\n },\n },\n onDeployUpdatePolicy: {},\n },\n serviceConfig: {\n maxInstanceCount: 3,\n minInstanceCount: 1,\n availableMemory: \"4Gi\",\n timeoutSeconds: 60,\n maxInstanceRequestConcurrency: 80,\n availableCpu: \"4\",\n environmentVariables: {\n SERVICE_CONFIG_TEST: \"config_test\",\n },\n ingressSettings: \"ALLOW_INTERNAL_ONLY\",\n allTrafficOnLatestRevision: true,\n serviceAccountEmail: account.email,\n },\n eventTrigger: {\n triggerRegion: \"us-central1\",\n eventType: \"google.cloud.pubsub.topic.v1.messagePublished\",\n pubsubTopic: topic.id,\n retryPolicy: \"RETRY_POLICY_RETRY\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\naccount = gcp.serviceaccount.Account(\"account\",\n account_id=\"gcf-sa\",\n display_name=\"Test Service Account\")\ntopic = gcp.pubsub.Topic(\"topic\", name=\"functions2-topic\")\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-gcf-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nfunction = gcp.cloudfunctionsv2.Function(\"function\",\n name=\"gcf-function\",\n location=\"europe-west6\",\n description=\"a new function\",\n build_config={\n \"runtime\": \"nodejs16\",\n \"entry_point\": \"helloPubSub\",\n \"environment_variables\": {\n \"BUILD_CONFIG_TEST\": \"build_test\",\n },\n \"source\": {\n \"storage_source\": {\n \"bucket\": bucket.name,\n \"object\": object.name,\n },\n },\n \"on_deploy_update_policy\": {},\n },\n service_config={\n \"max_instance_count\": 3,\n \"min_instance_count\": 1,\n \"available_memory\": \"4Gi\",\n \"timeout_seconds\": 60,\n \"max_instance_request_concurrency\": 80,\n \"available_cpu\": \"4\",\n \"environment_variables\": {\n \"SERVICE_CONFIG_TEST\": \"config_test\",\n },\n \"ingress_settings\": \"ALLOW_INTERNAL_ONLY\",\n \"all_traffic_on_latest_revision\": True,\n \"service_account_email\": account.email,\n },\n event_trigger={\n \"trigger_region\": \"us-central1\",\n \"event_type\": \"google.cloud.pubsub.topic.v1.messagePublished\",\n \"pubsub_topic\": topic.id,\n \"retry_policy\": \"RETRY_POLICY_RETRY\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var account = new Gcp.ServiceAccount.Account(\"account\", new()\n {\n AccountId = \"gcf-sa\",\n DisplayName = \"Test Service Account\",\n });\n\n var topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n Name = \"functions2-topic\",\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-gcf-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var function = new Gcp.CloudFunctionsV2.Function(\"function\", new()\n {\n Name = \"gcf-function\",\n Location = \"europe-west6\",\n Description = \"a new function\",\n BuildConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigArgs\n {\n Runtime = \"nodejs16\",\n EntryPoint = \"helloPubSub\",\n EnvironmentVariables = \n {\n { \"BUILD_CONFIG_TEST\", \"build_test\" },\n },\n Source = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceArgs\n {\n StorageSource = new Gcp.CloudFunctionsV2.Inputs.FunctionBuildConfigSourceStorageSourceArgs\n {\n Bucket = bucket.Name,\n Object = @object.Name,\n },\n },\n OnDeployUpdatePolicy = null,\n },\n ServiceConfig = new Gcp.CloudFunctionsV2.Inputs.FunctionServiceConfigArgs\n {\n MaxInstanceCount = 3,\n MinInstanceCount = 1,\n AvailableMemory = \"4Gi\",\n TimeoutSeconds = 60,\n MaxInstanceRequestConcurrency = 80,\n AvailableCpu = \"4\",\n EnvironmentVariables = \n {\n { \"SERVICE_CONFIG_TEST\", \"config_test\" },\n },\n IngressSettings = \"ALLOW_INTERNAL_ONLY\",\n AllTrafficOnLatestRevision = true,\n ServiceAccountEmail = account.Email,\n },\n EventTrigger = new Gcp.CloudFunctionsV2.Inputs.FunctionEventTriggerArgs\n {\n TriggerRegion = \"us-central1\",\n EventType = \"google.cloud.pubsub.topic.v1.messagePublished\",\n PubsubTopic = topic.Id,\n RetryPolicy = \"RETRY_POLICY_RETRY\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\taccount, err := serviceaccount.NewAccount(ctx, \"account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"gcf-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttopic, err := pubsub.NewTopic(ctx, \"topic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"functions2-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.Sprintf(\"%v-gcf-source\", project),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudfunctionsv2.NewFunction(ctx, \"function\", \u0026cloudfunctionsv2.FunctionArgs{\n\t\t\tName: pulumi.String(\"gcf-function\"),\n\t\t\tLocation: pulumi.String(\"europe-west6\"),\n\t\t\tDescription: pulumi.String(\"a new function\"),\n\t\t\tBuildConfig: \u0026cloudfunctionsv2.FunctionBuildConfigArgs{\n\t\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\t\tEntryPoint: pulumi.String(\"helloPubSub\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"BUILD_CONFIG_TEST\": pulumi.String(\"build_test\"),\n\t\t\t\t},\n\t\t\t\tSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceArgs{\n\t\t\t\t\tStorageSource: \u0026cloudfunctionsv2.FunctionBuildConfigSourceStorageSourceArgs{\n\t\t\t\t\t\tBucket: bucket.Name,\n\t\t\t\t\t\tObject: object.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tOnDeployUpdatePolicy: \u0026cloudfunctionsv2.FunctionBuildConfigOnDeployUpdatePolicyArgs{},\n\t\t\t},\n\t\t\tServiceConfig: \u0026cloudfunctionsv2.FunctionServiceConfigArgs{\n\t\t\t\tMaxInstanceCount: pulumi.Int(3),\n\t\t\t\tMinInstanceCount: pulumi.Int(1),\n\t\t\t\tAvailableMemory: pulumi.String(\"4Gi\"),\n\t\t\t\tTimeoutSeconds: pulumi.Int(60),\n\t\t\t\tMaxInstanceRequestConcurrency: pulumi.Int(80),\n\t\t\t\tAvailableCpu: pulumi.String(\"4\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"SERVICE_CONFIG_TEST\": pulumi.String(\"config_test\"),\n\t\t\t\t},\n\t\t\t\tIngressSettings: pulumi.String(\"ALLOW_INTERNAL_ONLY\"),\n\t\t\t\tAllTrafficOnLatestRevision: pulumi.Bool(true),\n\t\t\t\tServiceAccountEmail: account.Email,\n\t\t\t},\n\t\t\tEventTrigger: \u0026cloudfunctionsv2.FunctionEventTriggerArgs{\n\t\t\t\tTriggerRegion: pulumi.String(\"us-central1\"),\n\t\t\t\tEventType: pulumi.String(\"google.cloud.pubsub.topic.v1.messagePublished\"),\n\t\t\t\tPubsubTopic: topic.ID(),\n\t\t\t\tRetryPolicy: pulumi.String(\"RETRY_POLICY_RETRY\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.Function;\nimport com.pulumi.gcp.cloudfunctionsv2.FunctionArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigSourceStorageSourceArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionBuildConfigOnDeployUpdatePolicyArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionServiceConfigArgs;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.FunctionEventTriggerArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = \"my-project-name\";\n\n var account = new Account(\"account\", AccountArgs.builder()\n .accountId(\"gcf-sa\")\n .displayName(\"Test Service Account\")\n .build());\n\n var topic = new Topic(\"topic\", TopicArgs.builder()\n .name(\"functions2-topic\")\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .name(\"gcf-function\")\n .location(\"europe-west6\")\n .description(\"a new function\")\n .buildConfig(FunctionBuildConfigArgs.builder()\n .runtime(\"nodejs16\")\n .entryPoint(\"helloPubSub\")\n .environmentVariables(Map.of(\"BUILD_CONFIG_TEST\", \"build_test\"))\n .source(FunctionBuildConfigSourceArgs.builder()\n .storageSource(FunctionBuildConfigSourceStorageSourceArgs.builder()\n .bucket(bucket.name())\n .object(object.name())\n .build())\n .build())\n .onDeployUpdatePolicy()\n .build())\n .serviceConfig(FunctionServiceConfigArgs.builder()\n .maxInstanceCount(3)\n .minInstanceCount(1)\n .availableMemory(\"4Gi\")\n .timeoutSeconds(60)\n .maxInstanceRequestConcurrency(80)\n .availableCpu(\"4\")\n .environmentVariables(Map.of(\"SERVICE_CONFIG_TEST\", \"config_test\"))\n .ingressSettings(\"ALLOW_INTERNAL_ONLY\")\n .allTrafficOnLatestRevision(true)\n .serviceAccountEmail(account.email())\n .build())\n .eventTrigger(FunctionEventTriggerArgs.builder()\n .triggerRegion(\"us-central1\")\n .eventType(\"google.cloud.pubsub.topic.v1.messagePublished\")\n .pubsubTopic(topic.id())\n .retryPolicy(\"RETRY_POLICY_RETRY\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: gcf-sa\n displayName: Test Service Account\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: functions2-topic\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-gcf-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctionsv2:Function\n properties:\n name: gcf-function\n location: europe-west6\n description: a new function\n buildConfig:\n runtime: nodejs16\n entryPoint: helloPubSub\n environmentVariables:\n BUILD_CONFIG_TEST: build_test\n source:\n storageSource:\n bucket: ${bucket.name}\n object: ${object.name}\n onDeployUpdatePolicy: {}\n serviceConfig:\n maxInstanceCount: 3\n minInstanceCount: 1\n availableMemory: 4Gi\n timeoutSeconds: 60\n maxInstanceRequestConcurrency: 80\n availableCpu: '4'\n environmentVariables:\n SERVICE_CONFIG_TEST: config_test\n ingressSettings: ALLOW_INTERNAL_ONLY\n allTrafficOnLatestRevision: true\n serviceAccountEmail: ${account.email}\n eventTrigger:\n triggerRegion: us-central1\n eventType: google.cloud.pubsub.topic.v1.messagePublished\n pubsubTopic: ${topic.id}\n retryPolicy: RETRY_POLICY_RETRY\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nfunction can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/functions/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, function can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudfunctionsv2/function:Function default projects/{{project}}/locations/{{location}}/functions/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudfunctionsv2/function:Function default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudfunctionsv2/function:Function default {{location}}/{{name}}\n```\n\n", "properties": { "buildConfig": { "$ref": "#/types/gcp:cloudfunctionsv2/FunctionBuildConfig:FunctionBuildConfig", @@ -143387,7 +143387,7 @@ } }, "gcp:cloudrun/service:Service": { - "description": "A Cloud Run service has a unique endpoint and autoscales containers.\n\n\nTo get more information about Service, see:\n\n* [API documentation](https://cloud.google.com/run/docs/reference/rest/v1/namespaces.services)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/run/docs/)\n\n\u003e **Warning:** We recommend using the `gcp.cloudrunv2.Service` resource which offers a better\ndeveloper experience and broader support of Cloud Run features.\n\n## Example Usage\n\n### Cloud Run Service Pubsub\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrun.Service(\"default\", {\n name: \"cloud_run_service_name\",\n location: \"us-central1\",\n template: {\n spec: {\n containers: [{\n image: \"gcr.io/cloudrun/hello\",\n }],\n },\n },\n traffics: [{\n percent: 100,\n latestRevision: true,\n }],\n});\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"cloud-run-pubsub-invoker\",\n displayName: \"Cloud Run Pub/Sub Invoker\",\n});\nconst binding = new gcp.cloudrun.IamBinding(\"binding\", {\n location: _default.location,\n service: _default.name,\n role: \"roles/run.invoker\",\n members: [pulumi.interpolate`serviceAccount:${sa.email}`],\n});\nconst project = new gcp.projects.IAMBinding(\"project\", {\n role: \"roles/iam.serviceAccountTokenCreator\",\n members: [pulumi.interpolate`serviceAccount:${sa.email}`],\n});\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"pubsub_topic\"});\nconst subscription = new gcp.pubsub.Subscription(\"subscription\", {\n name: \"pubsub_subscription\",\n topic: topic.name,\n pushConfig: {\n pushEndpoint: _default.statuses.apply(statuses =\u003e statuses[0].url),\n oidcToken: {\n serviceAccountEmail: sa.email,\n },\n attributes: {\n \"x-goog-version\": \"v1\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"cloud_run_service_name\",\n location=\"us-central1\",\n template={\n \"spec\": {\n \"containers\": [{\n \"image\": \"gcr.io/cloudrun/hello\",\n }],\n },\n },\n traffics=[{\n \"percent\": 100,\n \"latest_revision\": True,\n }])\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"cloud-run-pubsub-invoker\",\n display_name=\"Cloud Run Pub/Sub Invoker\")\nbinding = gcp.cloudrun.IamBinding(\"binding\",\n location=default.location,\n service=default.name,\n role=\"roles/run.invoker\",\n members=[sa.email.apply(lambda email: f\"serviceAccount:{email}\")])\nproject = gcp.projects.IAMBinding(\"project\",\n role=\"roles/iam.serviceAccountTokenCreator\",\n members=[sa.email.apply(lambda email: f\"serviceAccount:{email}\")])\ntopic = gcp.pubsub.Topic(\"topic\", name=\"pubsub_topic\")\nsubscription = gcp.pubsub.Subscription(\"subscription\",\n name=\"pubsub_subscription\",\n topic=topic.name,\n push_config={\n \"push_endpoint\": default.statuses[0].url,\n \"oidc_token\": {\n \"service_account_email\": sa.email,\n },\n \"attributes\": {\n \"x_goog_version\": \"v1\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRun.Service(\"default\", new()\n {\n Name = \"cloud_run_service_name\",\n Location = \"us-central1\",\n Template = new Gcp.CloudRun.Inputs.ServiceTemplateArgs\n {\n Spec = new Gcp.CloudRun.Inputs.ServiceTemplateSpecArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerArgs\n {\n Image = \"gcr.io/cloudrun/hello\",\n },\n },\n },\n },\n Traffics = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTrafficArgs\n {\n Percent = 100,\n LatestRevision = true,\n },\n },\n });\n\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"cloud-run-pubsub-invoker\",\n DisplayName = \"Cloud Run Pub/Sub Invoker\",\n });\n\n var binding = new Gcp.CloudRun.IamBinding(\"binding\", new()\n {\n Location = @default.Location,\n Service = @default.Name,\n Role = \"roles/run.invoker\",\n Members = new[]\n {\n sa.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n },\n });\n\n var project = new Gcp.Projects.IAMBinding(\"project\", new()\n {\n Role = \"roles/iam.serviceAccountTokenCreator\",\n Members = new[]\n {\n sa.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n },\n });\n\n var topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n Name = \"pubsub_topic\",\n });\n\n var subscription = new Gcp.PubSub.Subscription(\"subscription\", new()\n {\n Name = \"pubsub_subscription\",\n Topic = topic.Name,\n PushConfig = new Gcp.PubSub.Inputs.SubscriptionPushConfigArgs\n {\n PushEndpoint = @default.Statuses.Apply(statuses =\u003e statuses[0].Url),\n OidcToken = new Gcp.PubSub.Inputs.SubscriptionPushConfigOidcTokenArgs\n {\n ServiceAccountEmail = sa.Email,\n },\n Attributes = \n {\n { \"x-goog-version\", \"v1\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrun\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudrun.NewService(ctx, \"default\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloud_run_service_name\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTemplate: \u0026cloudrun.ServiceTemplateArgs{\n\t\t\t\tSpec: \u0026cloudrun.ServiceTemplateSpecArgs{\n\t\t\t\t\tContainers: cloudrun.ServiceTemplateSpecContainerArray{\n\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"gcr.io/cloudrun/hello\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTraffics: cloudrun.ServiceTrafficArray{\n\t\t\t\t\u0026cloudrun.ServiceTrafficArgs{\n\t\t\t\t\tPercent: pulumi.Int(100),\n\t\t\t\t\tLatestRevision: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"cloud-run-pubsub-invoker\"),\n\t\t\tDisplayName: pulumi.String(\"Cloud Run Pub/Sub Invoker\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrun.NewIamBinding(ctx, \"binding\", \u0026cloudrun.IamBindingArgs{\n\t\t\tLocation: _default.Location,\n\t\t\tService: _default.Name,\n\t\t\tRole: pulumi.String(\"roles/run.invoker\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tsa.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMBinding(ctx, \"project\", \u0026projects.IAMBindingArgs{\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountTokenCreator\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tsa.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttopic, err := pubsub.NewTopic(ctx, \"topic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"pubsub_topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"subscription\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"pubsub_subscription\"),\n\t\t\tTopic: topic.Name,\n\t\t\tPushConfig: \u0026pubsub.SubscriptionPushConfigArgs{\n\t\t\t\tPushEndpoint: _default.Statuses.ApplyT(func(statuses []cloudrun.ServiceStatus) (*string, error) {\n\t\t\t\t\treturn \u0026statuses[0].Url, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tOidcToken: \u0026pubsub.SubscriptionPushConfigOidcTokenArgs{\n\t\t\t\t\tServiceAccountEmail: sa.Email,\n\t\t\t\t},\n\t\t\t\tAttributes: pulumi.StringMap{\n\t\t\t\t\t\"x-goog-version\": pulumi.String(\"v1\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudrun.Service;\nimport com.pulumi.gcp.cloudrun.ServiceArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateSpecArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTrafficArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.cloudrun.IamBinding;\nimport com.pulumi.gcp.cloudrun.IamBindingArgs;\nimport com.pulumi.gcp.projects.IAMBinding;\nimport com.pulumi.gcp.projects.IAMBindingArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionPushConfigArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionPushConfigOidcTokenArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloud_run_service_name\")\n .location(\"us-central1\")\n .template(ServiceTemplateArgs.builder()\n .spec(ServiceTemplateSpecArgs.builder()\n .containers(ServiceTemplateSpecContainerArgs.builder()\n .image(\"gcr.io/cloudrun/hello\")\n .build())\n .build())\n .build())\n .traffics(ServiceTrafficArgs.builder()\n .percent(100)\n .latestRevision(true)\n .build())\n .build());\n\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"cloud-run-pubsub-invoker\")\n .displayName(\"Cloud Run Pub/Sub Invoker\")\n .build());\n\n var binding = new IamBinding(\"binding\", IamBindingArgs.builder()\n .location(default_.location())\n .service(default_.name())\n .role(\"roles/run.invoker\")\n .members(sa.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var project = new IAMBinding(\"project\", IAMBindingArgs.builder()\n .role(\"roles/iam.serviceAccountTokenCreator\")\n .members(sa.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var topic = new Topic(\"topic\", TopicArgs.builder()\n .name(\"pubsub_topic\")\n .build());\n\n var subscription = new Subscription(\"subscription\", SubscriptionArgs.builder()\n .name(\"pubsub_subscription\")\n .topic(topic.name())\n .pushConfig(SubscriptionPushConfigArgs.builder()\n .pushEndpoint(default_.statuses().applyValue(statuses -\u003e statuses[0].url()))\n .oidcToken(SubscriptionPushConfigOidcTokenArgs.builder()\n .serviceAccountEmail(sa.email())\n .build())\n .attributes(Map.of(\"x-goog-version\", \"v1\"))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrun:Service\n properties:\n name: cloud_run_service_name\n location: us-central1\n template:\n spec:\n containers:\n - image: gcr.io/cloudrun/hello\n traffics:\n - percent: 100\n latestRevision: true\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: cloud-run-pubsub-invoker\n displayName: Cloud Run Pub/Sub Invoker\n binding:\n type: gcp:cloudrun:IamBinding\n properties:\n location: ${default.location}\n service: ${default.name}\n role: roles/run.invoker\n members:\n - serviceAccount:${sa.email}\n project:\n type: gcp:projects:IAMBinding\n properties:\n role: roles/iam.serviceAccountTokenCreator\n members:\n - serviceAccount:${sa.email}\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: pubsub_topic\n subscription:\n type: gcp:pubsub:Subscription\n properties:\n name: pubsub_subscription\n topic: ${topic.name}\n pushConfig:\n pushEndpoint: ${default.statuses[0].url}\n oidcToken:\n serviceAccountEmail: ${sa.email}\n attributes:\n x-goog-version: v1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Cloud Run Service Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrun.Service(\"default\", {\n name: \"cloudrun-srv\",\n location: \"us-central1\",\n template: {\n spec: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n },\n traffics: [{\n percent: 100,\n latestRevision: true,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"cloudrun-srv\",\n location=\"us-central1\",\n template={\n \"spec\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n },\n traffics=[{\n \"percent\": 100,\n \"latest_revision\": True,\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRun.Service(\"default\", new()\n {\n Name = \"cloudrun-srv\",\n Location = \"us-central1\",\n Template = new Gcp.CloudRun.Inputs.ServiceTemplateArgs\n {\n Spec = new Gcp.CloudRun.Inputs.ServiceTemplateSpecArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n },\n },\n Traffics = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTrafficArgs\n {\n Percent = 100,\n LatestRevision = true,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrun\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudrun.NewService(ctx, \"default\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-srv\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTemplate: \u0026cloudrun.ServiceTemplateArgs{\n\t\t\t\tSpec: \u0026cloudrun.ServiceTemplateSpecArgs{\n\t\t\t\t\tContainers: cloudrun.ServiceTemplateSpecContainerArray{\n\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTraffics: cloudrun.ServiceTrafficArray{\n\t\t\t\t\u0026cloudrun.ServiceTrafficArgs{\n\t\t\t\t\tPercent: pulumi.Int(100),\n\t\t\t\t\tLatestRevision: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudrun.Service;\nimport com.pulumi.gcp.cloudrun.ServiceArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateSpecArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTrafficArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-srv\")\n .location(\"us-central1\")\n .template(ServiceTemplateArgs.builder()\n .spec(ServiceTemplateSpecArgs.builder()\n .containers(ServiceTemplateSpecContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .build())\n .build())\n .traffics(ServiceTrafficArgs.builder()\n .percent(100)\n .latestRevision(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrun:Service\n properties:\n name: cloudrun-srv\n location: us-central1\n template:\n spec:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n traffics:\n - percent: 100\n latestRevision: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloud Run Service Sql\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"cloudrun-sql\",\n region: \"us-east1\",\n databaseVersion: \"MYSQL_5_7\",\n settings: {\n tier: \"db-f1-micro\",\n },\n deletionProtection: true,\n});\nconst _default = new gcp.cloudrun.Service(\"default\", {\n name: \"cloudrun-srv\",\n location: \"us-central1\",\n template: {\n spec: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n metadata: {\n annotations: {\n \"autoscaling.knative.dev/maxScale\": \"1000\",\n \"run.googleapis.com/cloudsql-instances\": instance.connectionName,\n \"run.googleapis.com/client-name\": \"demo\",\n },\n },\n },\n autogenerateRevisionName: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"cloudrun-sql\",\n region=\"us-east1\",\n database_version=\"MYSQL_5_7\",\n settings={\n \"tier\": \"db-f1-micro\",\n },\n deletion_protection=True)\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"cloudrun-srv\",\n location=\"us-central1\",\n template={\n \"spec\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n \"metadata\": {\n \"annotations\": {\n \"autoscaling_knative_dev_max_scale\": \"1000\",\n \"run_googleapis_com_cloudsql_instances\": instance.connection_name,\n \"run_googleapis_com_client_name\": \"demo\",\n },\n },\n },\n autogenerate_revision_name=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"cloudrun-sql\",\n Region = \"us-east1\",\n DatabaseVersion = \"MYSQL_5_7\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n },\n DeletionProtection = true,\n });\n\n var @default = new Gcp.CloudRun.Service(\"default\", new()\n {\n Name = \"cloudrun-srv\",\n Location = \"us-central1\",\n Template = new Gcp.CloudRun.Inputs.ServiceTemplateArgs\n {\n Spec = new Gcp.CloudRun.Inputs.ServiceTemplateSpecArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n },\n Metadata = new Gcp.CloudRun.Inputs.ServiceTemplateMetadataArgs\n {\n Annotations = \n {\n { \"autoscaling.knative.dev/maxScale\", \"1000\" },\n { \"run.googleapis.com/cloudsql-instances\", instance.ConnectionName },\n { \"run.googleapis.com/client-name\", \"demo\" },\n },\n },\n },\n AutogenerateRevisionName = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrun\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-sql\"),\n\t\t\tRegion: pulumi.String(\"us-east1\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_5_7\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrun.NewService(ctx, \"default\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-srv\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTemplate: \u0026cloudrun.ServiceTemplateArgs{\n\t\t\t\tSpec: \u0026cloudrun.ServiceTemplateSpecArgs{\n\t\t\t\t\tContainers: cloudrun.ServiceTemplateSpecContainerArray{\n\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMetadata: \u0026cloudrun.ServiceTemplateMetadataArgs{\n\t\t\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\t\t\"autoscaling.knative.dev/maxScale\": pulumi.String(\"1000\"),\n\t\t\t\t\t\t\"run.googleapis.com/cloudsql-instances\": instance.ConnectionName,\n\t\t\t\t\t\t\"run.googleapis.com/client-name\": pulumi.String(\"demo\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAutogenerateRevisionName: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.cloudrun.Service;\nimport com.pulumi.gcp.cloudrun.ServiceArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateSpecArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateMetadataArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"cloudrun-sql\")\n .region(\"us-east1\")\n .databaseVersion(\"MYSQL_5_7\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-srv\")\n .location(\"us-central1\")\n .template(ServiceTemplateArgs.builder()\n .spec(ServiceTemplateSpecArgs.builder()\n .containers(ServiceTemplateSpecContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .build())\n .metadata(ServiceTemplateMetadataArgs.builder()\n .annotations(Map.ofEntries(\n Map.entry(\"autoscaling.knative.dev/maxScale\", \"1000\"),\n Map.entry(\"run.googleapis.com/cloudsql-instances\", instance.connectionName()),\n Map.entry(\"run.googleapis.com/client-name\", \"demo\")\n ))\n .build())\n .build())\n .autogenerateRevisionName(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrun:Service\n properties:\n name: cloudrun-srv\n location: us-central1\n template:\n spec:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n metadata:\n annotations:\n autoscaling.knative.dev/maxScale: '1000'\n run.googleapis.com/cloudsql-instances: ${instance.connectionName}\n run.googleapis.com/client-name: demo\n autogenerateRevisionName: true\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: cloudrun-sql\n region: us-east1\n databaseVersion: MYSQL_5_7\n settings:\n tier: db-f1-micro\n deletionProtection: 'true'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloud Run Service Noauth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrun.Service(\"default\", {\n name: \"cloudrun-srv\",\n location: \"us-central1\",\n template: {\n spec: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n },\n});\nconst noauth = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/run.invoker\",\n members: [\"allUsers\"],\n }],\n});\nconst noauthIamPolicy = new gcp.cloudrun.IamPolicy(\"noauth\", {\n location: _default.location,\n project: _default.project,\n service: _default.name,\n policyData: noauth.then(noauth =\u003e noauth.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"cloudrun-srv\",\n location=\"us-central1\",\n template={\n \"spec\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n })\nnoauth = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/run.invoker\",\n \"members\": [\"allUsers\"],\n}])\nnoauth_iam_policy = gcp.cloudrun.IamPolicy(\"noauth\",\n location=default.location,\n project=default.project,\n service=default.name,\n policy_data=noauth.policy_data)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRun.Service(\"default\", new()\n {\n Name = \"cloudrun-srv\",\n Location = \"us-central1\",\n Template = new Gcp.CloudRun.Inputs.ServiceTemplateArgs\n {\n Spec = new Gcp.CloudRun.Inputs.ServiceTemplateSpecArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n },\n },\n });\n\n var noauth = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/run.invoker\",\n Members = new[]\n {\n \"allUsers\",\n },\n },\n },\n });\n\n var noauthIamPolicy = new Gcp.CloudRun.IamPolicy(\"noauth\", new()\n {\n Location = @default.Location,\n Project = @default.Project,\n Service = @default.Name,\n PolicyData = noauth.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrun\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudrun.NewService(ctx, \"default\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-srv\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTemplate: \u0026cloudrun.ServiceTemplateArgs{\n\t\t\t\tSpec: \u0026cloudrun.ServiceTemplateSpecArgs{\n\t\t\t\t\tContainers: cloudrun.ServiceTemplateSpecContainerArray{\n\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnoauth, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/run.invoker\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"allUsers\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrun.NewIamPolicy(ctx, \"noauth\", \u0026cloudrun.IamPolicyArgs{\n\t\t\tLocation: _default.Location,\n\t\t\tProject: _default.Project,\n\t\t\tService: _default.Name,\n\t\t\tPolicyData: pulumi.String(noauth.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudrun.Service;\nimport com.pulumi.gcp.cloudrun.ServiceArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateSpecArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.cloudrun.IamPolicy;\nimport com.pulumi.gcp.cloudrun.IamPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-srv\")\n .location(\"us-central1\")\n .template(ServiceTemplateArgs.builder()\n .spec(ServiceTemplateSpecArgs.builder()\n .containers(ServiceTemplateSpecContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .build())\n .build())\n .build());\n\n final var noauth = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/run.invoker\")\n .members(\"allUsers\")\n .build())\n .build());\n\n var noauthIamPolicy = new IamPolicy(\"noauthIamPolicy\", IamPolicyArgs.builder()\n .location(default_.location())\n .project(default_.project())\n .service(default_.name())\n .policyData(noauth.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrun:Service\n properties:\n name: cloudrun-srv\n location: us-central1\n template:\n spec:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n noauthIamPolicy:\n type: gcp:cloudrun:IamPolicy\n name: noauth\n properties:\n location: ${default.location}\n project: ${default.project}\n service: ${default.name}\n policyData: ${noauth.policyData}\nvariables:\n noauth:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/run.invoker\n members:\n - allUsers\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloud Run Service Probes\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrun.Service(\"default\", {\n name: \"cloudrun-srv\",\n location: \"us-central1\",\n template: {\n spec: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n startupProbe: {\n initialDelaySeconds: 0,\n timeoutSeconds: 1,\n periodSeconds: 3,\n failureThreshold: 1,\n tcpSocket: {\n port: 8080,\n },\n },\n livenessProbe: {\n httpGet: {\n path: \"/\",\n },\n },\n }],\n },\n },\n traffics: [{\n percent: 100,\n latestRevision: true,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"cloudrun-srv\",\n location=\"us-central1\",\n template={\n \"spec\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"startup_probe\": {\n \"initial_delay_seconds\": 0,\n \"timeout_seconds\": 1,\n \"period_seconds\": 3,\n \"failure_threshold\": 1,\n \"tcp_socket\": {\n \"port\": 8080,\n },\n },\n \"liveness_probe\": {\n \"http_get\": {\n \"path\": \"/\",\n },\n },\n }],\n },\n },\n traffics=[{\n \"percent\": 100,\n \"latest_revision\": True,\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRun.Service(\"default\", new()\n {\n Name = \"cloudrun-srv\",\n Location = \"us-central1\",\n Template = new Gcp.CloudRun.Inputs.ServiceTemplateArgs\n {\n Spec = new Gcp.CloudRun.Inputs.ServiceTemplateSpecArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n StartupProbe = new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerStartupProbeArgs\n {\n InitialDelaySeconds = 0,\n TimeoutSeconds = 1,\n PeriodSeconds = 3,\n FailureThreshold = 1,\n TcpSocket = new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerStartupProbeTcpSocketArgs\n {\n Port = 8080,\n },\n },\n LivenessProbe = new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerLivenessProbeArgs\n {\n HttpGet = new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerLivenessProbeHttpGetArgs\n {\n Path = \"/\",\n },\n },\n },\n },\n },\n },\n Traffics = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTrafficArgs\n {\n Percent = 100,\n LatestRevision = true,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrun\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudrun.NewService(ctx, \"default\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-srv\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTemplate: \u0026cloudrun.ServiceTemplateArgs{\n\t\t\t\tSpec: \u0026cloudrun.ServiceTemplateSpecArgs{\n\t\t\t\t\tContainers: cloudrun.ServiceTemplateSpecContainerArray{\n\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\t\tStartupProbe: \u0026cloudrun.ServiceTemplateSpecContainerStartupProbeArgs{\n\t\t\t\t\t\t\t\tInitialDelaySeconds: pulumi.Int(0),\n\t\t\t\t\t\t\t\tTimeoutSeconds: pulumi.Int(1),\n\t\t\t\t\t\t\t\tPeriodSeconds: pulumi.Int(3),\n\t\t\t\t\t\t\t\tFailureThreshold: pulumi.Int(1),\n\t\t\t\t\t\t\t\tTcpSocket: \u0026cloudrun.ServiceTemplateSpecContainerStartupProbeTcpSocketArgs{\n\t\t\t\t\t\t\t\t\tPort: pulumi.Int(8080),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tLivenessProbe: \u0026cloudrun.ServiceTemplateSpecContainerLivenessProbeArgs{\n\t\t\t\t\t\t\t\tHttpGet: \u0026cloudrun.ServiceTemplateSpecContainerLivenessProbeHttpGetArgs{\n\t\t\t\t\t\t\t\t\tPath: pulumi.String(\"/\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTraffics: cloudrun.ServiceTrafficArray{\n\t\t\t\t\u0026cloudrun.ServiceTrafficArgs{\n\t\t\t\t\tPercent: pulumi.Int(100),\n\t\t\t\t\tLatestRevision: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudrun.Service;\nimport com.pulumi.gcp.cloudrun.ServiceArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateSpecArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTrafficArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-srv\")\n .location(\"us-central1\")\n .template(ServiceTemplateArgs.builder()\n .spec(ServiceTemplateSpecArgs.builder()\n .containers(ServiceTemplateSpecContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .startupProbe(ServiceTemplateSpecContainerStartupProbeArgs.builder()\n .initialDelaySeconds(0)\n .timeoutSeconds(1)\n .periodSeconds(3)\n .failureThreshold(1)\n .tcpSocket(ServiceTemplateSpecContainerStartupProbeTcpSocketArgs.builder()\n .port(8080)\n .build())\n .build())\n .livenessProbe(ServiceTemplateSpecContainerLivenessProbeArgs.builder()\n .httpGet(ServiceTemplateSpecContainerLivenessProbeHttpGetArgs.builder()\n .path(\"/\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .traffics(ServiceTrafficArgs.builder()\n .percent(100)\n .latestRevision(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrun:Service\n properties:\n name: cloudrun-srv\n location: us-central1\n template:\n spec:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n startupProbe:\n initialDelaySeconds: 0\n timeoutSeconds: 1\n periodSeconds: 3\n failureThreshold: 1\n tcpSocket:\n port: 8080\n livenessProbe:\n httpGet:\n path: /\n traffics:\n - percent: 100\n latestRevision: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloud Run Service Multicontainer\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrun.Service(\"default\", {\n name: \"cloudrun-srv\",\n location: \"us-central1\",\n metadata: {\n annotations: {\n \"run.googleapis.com/launch-stage\": \"BETA\",\n },\n },\n template: {\n metadata: {\n annotations: {\n \"run.googleapis.com/container-dependencies\": JSON.stringify({\n \"hello-1\": [\"hello-2\"],\n }),\n },\n },\n spec: {\n containers: [\n {\n name: \"hello-1\",\n ports: [{\n containerPort: 8080,\n }],\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n volumeMounts: [{\n name: \"shared-volume\",\n mountPath: \"/mnt/shared\",\n }],\n },\n {\n name: \"hello-2\",\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n envs: [{\n name: \"PORT\",\n value: \"8081\",\n }],\n startupProbe: {\n httpGet: {\n port: 8081,\n },\n },\n volumeMounts: [{\n name: \"shared-volume\",\n mountPath: \"/mnt/shared\",\n }],\n },\n ],\n volumes: [{\n name: \"shared-volume\",\n emptyDir: {\n medium: \"Memory\",\n sizeLimit: \"128Mi\",\n },\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"cloudrun-srv\",\n location=\"us-central1\",\n metadata={\n \"annotations\": {\n \"run_googleapis_com_launch_stage\": \"BETA\",\n },\n },\n template={\n \"metadata\": {\n \"annotations\": {\n \"run_googleapis_com_container_dependencies\": json.dumps({\n \"hello_1\": [\"hello-2\"],\n }),\n },\n },\n \"spec\": {\n \"containers\": [\n {\n \"name\": \"hello-1\",\n \"ports\": [{\n \"container_port\": 8080,\n }],\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"volume_mounts\": [{\n \"name\": \"shared-volume\",\n \"mount_path\": \"/mnt/shared\",\n }],\n },\n {\n \"name\": \"hello-2\",\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"envs\": [{\n \"name\": \"PORT\",\n \"value\": \"8081\",\n }],\n \"startup_probe\": {\n \"http_get\": {\n \"port\": 8081,\n },\n },\n \"volume_mounts\": [{\n \"name\": \"shared-volume\",\n \"mount_path\": \"/mnt/shared\",\n }],\n },\n ],\n \"volumes\": [{\n \"name\": \"shared-volume\",\n \"empty_dir\": {\n \"medium\": \"Memory\",\n \"size_limit\": \"128Mi\",\n },\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRun.Service(\"default\", new()\n {\n Name = \"cloudrun-srv\",\n Location = \"us-central1\",\n Metadata = new Gcp.CloudRun.Inputs.ServiceMetadataArgs\n {\n Annotations = \n {\n { \"run.googleapis.com/launch-stage\", \"BETA\" },\n },\n },\n Template = new Gcp.CloudRun.Inputs.ServiceTemplateArgs\n {\n Metadata = new Gcp.CloudRun.Inputs.ServiceTemplateMetadataArgs\n {\n Annotations = \n {\n { \"run.googleapis.com/container-dependencies\", JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"hello-1\"] = new[]\n {\n \"hello-2\",\n },\n }) },\n },\n },\n Spec = new Gcp.CloudRun.Inputs.ServiceTemplateSpecArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerArgs\n {\n Name = \"hello-1\",\n Ports = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerPortArgs\n {\n ContainerPort = 8080,\n },\n },\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n VolumeMounts = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerVolumeMountArgs\n {\n Name = \"shared-volume\",\n MountPath = \"/mnt/shared\",\n },\n },\n },\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerArgs\n {\n Name = \"hello-2\",\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n Envs = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerEnvArgs\n {\n Name = \"PORT\",\n Value = \"8081\",\n },\n },\n StartupProbe = new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerStartupProbeArgs\n {\n HttpGet = new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerStartupProbeHttpGetArgs\n {\n Port = 8081,\n },\n },\n VolumeMounts = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerVolumeMountArgs\n {\n Name = \"shared-volume\",\n MountPath = \"/mnt/shared\",\n },\n },\n },\n },\n Volumes = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecVolumeArgs\n {\n Name = \"shared-volume\",\n EmptyDir = new Gcp.CloudRun.Inputs.ServiceTemplateSpecVolumeEmptyDirArgs\n {\n Medium = \"Memory\",\n SizeLimit = \"128Mi\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrun\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"hello-1\": []string{\n\t\t\t\t\"hello-2\",\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\t_, err = cloudrun.NewService(ctx, \"default\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-srv\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tMetadata: \u0026cloudrun.ServiceMetadataArgs{\n\t\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\t\"run.googleapis.com/launch-stage\": pulumi.String(\"BETA\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTemplate: \u0026cloudrun.ServiceTemplateArgs{\n\t\t\t\tMetadata: \u0026cloudrun.ServiceTemplateMetadataArgs{\n\t\t\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\t\t\"run.googleapis.com/container-dependencies\": pulumi.String(json0),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSpec: \u0026cloudrun.ServiceTemplateSpecArgs{\n\t\t\t\t\tContainers: cloudrun.ServiceTemplateSpecContainerArray{\n\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"hello-1\"),\n\t\t\t\t\t\t\tPorts: cloudrun.ServiceTemplateSpecContainerPortArray{\n\t\t\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerPortArgs{\n\t\t\t\t\t\t\t\t\tContainerPort: pulumi.Int(8080),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\t\tVolumeMounts: cloudrun.ServiceTemplateSpecContainerVolumeMountArray{\n\t\t\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"shared-volume\"),\n\t\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/mnt/shared\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"hello-2\"),\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\t\tEnvs: cloudrun.ServiceTemplateSpecContainerEnvArray{\n\t\t\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerEnvArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"PORT\"),\n\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"8081\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tStartupProbe: \u0026cloudrun.ServiceTemplateSpecContainerStartupProbeArgs{\n\t\t\t\t\t\t\t\tHttpGet: \u0026cloudrun.ServiceTemplateSpecContainerStartupProbeHttpGetArgs{\n\t\t\t\t\t\t\t\t\tPort: pulumi.Int(8081),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tVolumeMounts: cloudrun.ServiceTemplateSpecContainerVolumeMountArray{\n\t\t\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"shared-volume\"),\n\t\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/mnt/shared\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tVolumes: cloudrun.ServiceTemplateSpecVolumeArray{\n\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecVolumeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"shared-volume\"),\n\t\t\t\t\t\t\tEmptyDir: \u0026cloudrun.ServiceTemplateSpecVolumeEmptyDirArgs{\n\t\t\t\t\t\t\t\tMedium: pulumi.String(\"Memory\"),\n\t\t\t\t\t\t\t\tSizeLimit: pulumi.String(\"128Mi\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudrun.Service;\nimport com.pulumi.gcp.cloudrun.ServiceArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceMetadataArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateMetadataArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateSpecArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-srv\")\n .location(\"us-central1\")\n .metadata(ServiceMetadataArgs.builder()\n .annotations(Map.of(\"run.googleapis.com/launch-stage\", \"BETA\"))\n .build())\n .template(ServiceTemplateArgs.builder()\n .metadata(ServiceTemplateMetadataArgs.builder()\n .annotations(Map.of(\"run.googleapis.com/container-dependencies\", serializeJson(\n jsonObject(\n jsonProperty(\"hello-1\", jsonArray(\"hello-2\"))\n ))))\n .build())\n .spec(ServiceTemplateSpecArgs.builder()\n .containers( \n ServiceTemplateSpecContainerArgs.builder()\n .name(\"hello-1\")\n .ports(ServiceTemplateSpecContainerPortArgs.builder()\n .containerPort(8080)\n .build())\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .volumeMounts(ServiceTemplateSpecContainerVolumeMountArgs.builder()\n .name(\"shared-volume\")\n .mountPath(\"/mnt/shared\")\n .build())\n .build(),\n ServiceTemplateSpecContainerArgs.builder()\n .name(\"hello-2\")\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .envs(ServiceTemplateSpecContainerEnvArgs.builder()\n .name(\"PORT\")\n .value(\"8081\")\n .build())\n .startupProbe(ServiceTemplateSpecContainerStartupProbeArgs.builder()\n .httpGet(ServiceTemplateSpecContainerStartupProbeHttpGetArgs.builder()\n .port(8081)\n .build())\n .build())\n .volumeMounts(ServiceTemplateSpecContainerVolumeMountArgs.builder()\n .name(\"shared-volume\")\n .mountPath(\"/mnt/shared\")\n .build())\n .build())\n .volumes(ServiceTemplateSpecVolumeArgs.builder()\n .name(\"shared-volume\")\n .emptyDir(ServiceTemplateSpecVolumeEmptyDirArgs.builder()\n .medium(\"Memory\")\n .sizeLimit(\"128Mi\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrun:Service\n properties:\n name: cloudrun-srv\n location: us-central1\n metadata:\n annotations:\n run.googleapis.com/launch-stage: BETA\n template:\n metadata:\n annotations:\n run.googleapis.com/container-dependencies:\n fn::toJSON:\n hello-1:\n - hello-2\n spec:\n containers:\n - name: hello-1\n ports:\n - containerPort: 8080\n image: us-docker.pkg.dev/cloudrun/container/hello\n volumeMounts:\n - name: shared-volume\n mountPath: /mnt/shared\n - name: hello-2\n image: us-docker.pkg.dev/cloudrun/container/hello\n envs:\n - name: PORT\n value: '8081'\n startupProbe:\n httpGet:\n port: 8081\n volumeMounts:\n - name: shared-volume\n mountPath: /mnt/shared\n volumes:\n - name: shared-volume\n emptyDir:\n medium: Memory\n sizeLimit: 128Mi\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nService can be imported using any of these accepted formats:\n\n* `locations/{{location}}/namespaces/{{project}}/services/{{name}}`\n\n* `{{location}}/{{project}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Service can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudrun/service:Service default locations/{{location}}/namespaces/{{project}}/services/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudrun/service:Service default {{location}}/{{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudrun/service:Service default {{location}}/{{name}}\n```\n\n", + "description": "A Cloud Run service has a unique endpoint and autoscales containers.\n\n\nTo get more information about Service, see:\n\n* [API documentation](https://cloud.google.com/run/docs/reference/rest/v1/namespaces.services)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/run/docs/)\n\n\u003e **Warning:** We recommend using the `gcp.cloudrunv2.Service` resource which offers a better\ndeveloper experience and broader support of Cloud Run features.\n\n## Example Usage\n\n### Cloud Run Service Pubsub\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrun.Service(\"default\", {\n name: \"cloud_run_service_name\",\n location: \"us-central1\",\n template: {\n spec: {\n containers: [{\n image: \"gcr.io/cloudrun/hello\",\n }],\n },\n },\n traffics: [{\n percent: 100,\n latestRevision: true,\n }],\n});\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"cloud-run-pubsub-invoker\",\n displayName: \"Cloud Run Pub/Sub Invoker\",\n});\nconst binding = new gcp.cloudrun.IamBinding(\"binding\", {\n location: _default.location,\n service: _default.name,\n role: \"roles/run.invoker\",\n members: [pulumi.interpolate`serviceAccount:${sa.email}`],\n});\nconst project = new gcp.projects.IAMBinding(\"project\", {\n role: \"roles/iam.serviceAccountTokenCreator\",\n members: [pulumi.interpolate`serviceAccount:${sa.email}`],\n});\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"pubsub_topic\"});\nconst subscription = new gcp.pubsub.Subscription(\"subscription\", {\n name: \"pubsub_subscription\",\n topic: topic.name,\n pushConfig: {\n pushEndpoint: _default.statuses.apply(statuses =\u003e statuses[0].url),\n oidcToken: {\n serviceAccountEmail: sa.email,\n },\n attributes: {\n \"x-goog-version\": \"v1\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"cloud_run_service_name\",\n location=\"us-central1\",\n template={\n \"spec\": {\n \"containers\": [{\n \"image\": \"gcr.io/cloudrun/hello\",\n }],\n },\n },\n traffics=[{\n \"percent\": 100,\n \"latest_revision\": True,\n }])\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"cloud-run-pubsub-invoker\",\n display_name=\"Cloud Run Pub/Sub Invoker\")\nbinding = gcp.cloudrun.IamBinding(\"binding\",\n location=default.location,\n service=default.name,\n role=\"roles/run.invoker\",\n members=[sa.email.apply(lambda email: f\"serviceAccount:{email}\")])\nproject = gcp.projects.IAMBinding(\"project\",\n role=\"roles/iam.serviceAccountTokenCreator\",\n members=[sa.email.apply(lambda email: f\"serviceAccount:{email}\")])\ntopic = gcp.pubsub.Topic(\"topic\", name=\"pubsub_topic\")\nsubscription = gcp.pubsub.Subscription(\"subscription\",\n name=\"pubsub_subscription\",\n topic=topic.name,\n push_config={\n \"push_endpoint\": default.statuses[0].url,\n \"oidc_token\": {\n \"service_account_email\": sa.email,\n },\n \"attributes\": {\n \"x-goog-version\": \"v1\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRun.Service(\"default\", new()\n {\n Name = \"cloud_run_service_name\",\n Location = \"us-central1\",\n Template = new Gcp.CloudRun.Inputs.ServiceTemplateArgs\n {\n Spec = new Gcp.CloudRun.Inputs.ServiceTemplateSpecArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerArgs\n {\n Image = \"gcr.io/cloudrun/hello\",\n },\n },\n },\n },\n Traffics = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTrafficArgs\n {\n Percent = 100,\n LatestRevision = true,\n },\n },\n });\n\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"cloud-run-pubsub-invoker\",\n DisplayName = \"Cloud Run Pub/Sub Invoker\",\n });\n\n var binding = new Gcp.CloudRun.IamBinding(\"binding\", new()\n {\n Location = @default.Location,\n Service = @default.Name,\n Role = \"roles/run.invoker\",\n Members = new[]\n {\n sa.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n },\n });\n\n var project = new Gcp.Projects.IAMBinding(\"project\", new()\n {\n Role = \"roles/iam.serviceAccountTokenCreator\",\n Members = new[]\n {\n sa.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n },\n });\n\n var topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n Name = \"pubsub_topic\",\n });\n\n var subscription = new Gcp.PubSub.Subscription(\"subscription\", new()\n {\n Name = \"pubsub_subscription\",\n Topic = topic.Name,\n PushConfig = new Gcp.PubSub.Inputs.SubscriptionPushConfigArgs\n {\n PushEndpoint = @default.Statuses.Apply(statuses =\u003e statuses[0].Url),\n OidcToken = new Gcp.PubSub.Inputs.SubscriptionPushConfigOidcTokenArgs\n {\n ServiceAccountEmail = sa.Email,\n },\n Attributes = \n {\n { \"x-goog-version\", \"v1\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrun\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudrun.NewService(ctx, \"default\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloud_run_service_name\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTemplate: \u0026cloudrun.ServiceTemplateArgs{\n\t\t\t\tSpec: \u0026cloudrun.ServiceTemplateSpecArgs{\n\t\t\t\t\tContainers: cloudrun.ServiceTemplateSpecContainerArray{\n\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"gcr.io/cloudrun/hello\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTraffics: cloudrun.ServiceTrafficArray{\n\t\t\t\t\u0026cloudrun.ServiceTrafficArgs{\n\t\t\t\t\tPercent: pulumi.Int(100),\n\t\t\t\t\tLatestRevision: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"cloud-run-pubsub-invoker\"),\n\t\t\tDisplayName: pulumi.String(\"Cloud Run Pub/Sub Invoker\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrun.NewIamBinding(ctx, \"binding\", \u0026cloudrun.IamBindingArgs{\n\t\t\tLocation: _default.Location,\n\t\t\tService: _default.Name,\n\t\t\tRole: pulumi.String(\"roles/run.invoker\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tsa.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMBinding(ctx, \"project\", \u0026projects.IAMBindingArgs{\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountTokenCreator\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tsa.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttopic, err := pubsub.NewTopic(ctx, \"topic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"pubsub_topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"subscription\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"pubsub_subscription\"),\n\t\t\tTopic: topic.Name,\n\t\t\tPushConfig: \u0026pubsub.SubscriptionPushConfigArgs{\n\t\t\t\tPushEndpoint: _default.Statuses.ApplyT(func(statuses []cloudrun.ServiceStatus) (*string, error) {\n\t\t\t\t\treturn \u0026statuses[0].Url, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tOidcToken: \u0026pubsub.SubscriptionPushConfigOidcTokenArgs{\n\t\t\t\t\tServiceAccountEmail: sa.Email,\n\t\t\t\t},\n\t\t\t\tAttributes: pulumi.StringMap{\n\t\t\t\t\t\"x-goog-version\": pulumi.String(\"v1\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudrun.Service;\nimport com.pulumi.gcp.cloudrun.ServiceArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateSpecArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTrafficArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.cloudrun.IamBinding;\nimport com.pulumi.gcp.cloudrun.IamBindingArgs;\nimport com.pulumi.gcp.projects.IAMBinding;\nimport com.pulumi.gcp.projects.IAMBindingArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionPushConfigArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionPushConfigOidcTokenArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloud_run_service_name\")\n .location(\"us-central1\")\n .template(ServiceTemplateArgs.builder()\n .spec(ServiceTemplateSpecArgs.builder()\n .containers(ServiceTemplateSpecContainerArgs.builder()\n .image(\"gcr.io/cloudrun/hello\")\n .build())\n .build())\n .build())\n .traffics(ServiceTrafficArgs.builder()\n .percent(100)\n .latestRevision(true)\n .build())\n .build());\n\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"cloud-run-pubsub-invoker\")\n .displayName(\"Cloud Run Pub/Sub Invoker\")\n .build());\n\n var binding = new IamBinding(\"binding\", IamBindingArgs.builder()\n .location(default_.location())\n .service(default_.name())\n .role(\"roles/run.invoker\")\n .members(sa.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var project = new IAMBinding(\"project\", IAMBindingArgs.builder()\n .role(\"roles/iam.serviceAccountTokenCreator\")\n .members(sa.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var topic = new Topic(\"topic\", TopicArgs.builder()\n .name(\"pubsub_topic\")\n .build());\n\n var subscription = new Subscription(\"subscription\", SubscriptionArgs.builder()\n .name(\"pubsub_subscription\")\n .topic(topic.name())\n .pushConfig(SubscriptionPushConfigArgs.builder()\n .pushEndpoint(default_.statuses().applyValue(statuses -\u003e statuses[0].url()))\n .oidcToken(SubscriptionPushConfigOidcTokenArgs.builder()\n .serviceAccountEmail(sa.email())\n .build())\n .attributes(Map.of(\"x-goog-version\", \"v1\"))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrun:Service\n properties:\n name: cloud_run_service_name\n location: us-central1\n template:\n spec:\n containers:\n - image: gcr.io/cloudrun/hello\n traffics:\n - percent: 100\n latestRevision: true\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: cloud-run-pubsub-invoker\n displayName: Cloud Run Pub/Sub Invoker\n binding:\n type: gcp:cloudrun:IamBinding\n properties:\n location: ${default.location}\n service: ${default.name}\n role: roles/run.invoker\n members:\n - serviceAccount:${sa.email}\n project:\n type: gcp:projects:IAMBinding\n properties:\n role: roles/iam.serviceAccountTokenCreator\n members:\n - serviceAccount:${sa.email}\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: pubsub_topic\n subscription:\n type: gcp:pubsub:Subscription\n properties:\n name: pubsub_subscription\n topic: ${topic.name}\n pushConfig:\n pushEndpoint: ${default.statuses[0].url}\n oidcToken:\n serviceAccountEmail: ${sa.email}\n attributes:\n x-goog-version: v1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Cloud Run Service Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrun.Service(\"default\", {\n name: \"cloudrun-srv\",\n location: \"us-central1\",\n template: {\n spec: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n },\n traffics: [{\n percent: 100,\n latestRevision: true,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"cloudrun-srv\",\n location=\"us-central1\",\n template={\n \"spec\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n },\n traffics=[{\n \"percent\": 100,\n \"latest_revision\": True,\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRun.Service(\"default\", new()\n {\n Name = \"cloudrun-srv\",\n Location = \"us-central1\",\n Template = new Gcp.CloudRun.Inputs.ServiceTemplateArgs\n {\n Spec = new Gcp.CloudRun.Inputs.ServiceTemplateSpecArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n },\n },\n Traffics = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTrafficArgs\n {\n Percent = 100,\n LatestRevision = true,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrun\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudrun.NewService(ctx, \"default\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-srv\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTemplate: \u0026cloudrun.ServiceTemplateArgs{\n\t\t\t\tSpec: \u0026cloudrun.ServiceTemplateSpecArgs{\n\t\t\t\t\tContainers: cloudrun.ServiceTemplateSpecContainerArray{\n\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTraffics: cloudrun.ServiceTrafficArray{\n\t\t\t\t\u0026cloudrun.ServiceTrafficArgs{\n\t\t\t\t\tPercent: pulumi.Int(100),\n\t\t\t\t\tLatestRevision: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudrun.Service;\nimport com.pulumi.gcp.cloudrun.ServiceArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateSpecArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTrafficArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-srv\")\n .location(\"us-central1\")\n .template(ServiceTemplateArgs.builder()\n .spec(ServiceTemplateSpecArgs.builder()\n .containers(ServiceTemplateSpecContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .build())\n .build())\n .traffics(ServiceTrafficArgs.builder()\n .percent(100)\n .latestRevision(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrun:Service\n properties:\n name: cloudrun-srv\n location: us-central1\n template:\n spec:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n traffics:\n - percent: 100\n latestRevision: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloud Run Service Sql\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"cloudrun-sql\",\n region: \"us-east1\",\n databaseVersion: \"MYSQL_5_7\",\n settings: {\n tier: \"db-f1-micro\",\n },\n deletionProtection: true,\n});\nconst _default = new gcp.cloudrun.Service(\"default\", {\n name: \"cloudrun-srv\",\n location: \"us-central1\",\n template: {\n spec: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n metadata: {\n annotations: {\n \"autoscaling.knative.dev/maxScale\": \"1000\",\n \"run.googleapis.com/cloudsql-instances\": instance.connectionName,\n \"run.googleapis.com/client-name\": \"demo\",\n },\n },\n },\n autogenerateRevisionName: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"cloudrun-sql\",\n region=\"us-east1\",\n database_version=\"MYSQL_5_7\",\n settings={\n \"tier\": \"db-f1-micro\",\n },\n deletion_protection=True)\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"cloudrun-srv\",\n location=\"us-central1\",\n template={\n \"spec\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n \"metadata\": {\n \"annotations\": {\n \"autoscaling.knative.dev/maxScale\": \"1000\",\n \"run.googleapis.com/cloudsql-instances\": instance.connection_name,\n \"run.googleapis.com/client-name\": \"demo\",\n },\n },\n },\n autogenerate_revision_name=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"cloudrun-sql\",\n Region = \"us-east1\",\n DatabaseVersion = \"MYSQL_5_7\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n },\n DeletionProtection = true,\n });\n\n var @default = new Gcp.CloudRun.Service(\"default\", new()\n {\n Name = \"cloudrun-srv\",\n Location = \"us-central1\",\n Template = new Gcp.CloudRun.Inputs.ServiceTemplateArgs\n {\n Spec = new Gcp.CloudRun.Inputs.ServiceTemplateSpecArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n },\n Metadata = new Gcp.CloudRun.Inputs.ServiceTemplateMetadataArgs\n {\n Annotations = \n {\n { \"autoscaling.knative.dev/maxScale\", \"1000\" },\n { \"run.googleapis.com/cloudsql-instances\", instance.ConnectionName },\n { \"run.googleapis.com/client-name\", \"demo\" },\n },\n },\n },\n AutogenerateRevisionName = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrun\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-sql\"),\n\t\t\tRegion: pulumi.String(\"us-east1\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_5_7\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrun.NewService(ctx, \"default\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-srv\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTemplate: \u0026cloudrun.ServiceTemplateArgs{\n\t\t\t\tSpec: \u0026cloudrun.ServiceTemplateSpecArgs{\n\t\t\t\t\tContainers: cloudrun.ServiceTemplateSpecContainerArray{\n\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMetadata: \u0026cloudrun.ServiceTemplateMetadataArgs{\n\t\t\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\t\t\"autoscaling.knative.dev/maxScale\": pulumi.String(\"1000\"),\n\t\t\t\t\t\t\"run.googleapis.com/cloudsql-instances\": instance.ConnectionName,\n\t\t\t\t\t\t\"run.googleapis.com/client-name\": pulumi.String(\"demo\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAutogenerateRevisionName: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.cloudrun.Service;\nimport com.pulumi.gcp.cloudrun.ServiceArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateSpecArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateMetadataArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"cloudrun-sql\")\n .region(\"us-east1\")\n .databaseVersion(\"MYSQL_5_7\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-srv\")\n .location(\"us-central1\")\n .template(ServiceTemplateArgs.builder()\n .spec(ServiceTemplateSpecArgs.builder()\n .containers(ServiceTemplateSpecContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .build())\n .metadata(ServiceTemplateMetadataArgs.builder()\n .annotations(Map.ofEntries(\n Map.entry(\"autoscaling.knative.dev/maxScale\", \"1000\"),\n Map.entry(\"run.googleapis.com/cloudsql-instances\", instance.connectionName()),\n Map.entry(\"run.googleapis.com/client-name\", \"demo\")\n ))\n .build())\n .build())\n .autogenerateRevisionName(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrun:Service\n properties:\n name: cloudrun-srv\n location: us-central1\n template:\n spec:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n metadata:\n annotations:\n autoscaling.knative.dev/maxScale: '1000'\n run.googleapis.com/cloudsql-instances: ${instance.connectionName}\n run.googleapis.com/client-name: demo\n autogenerateRevisionName: true\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: cloudrun-sql\n region: us-east1\n databaseVersion: MYSQL_5_7\n settings:\n tier: db-f1-micro\n deletionProtection: 'true'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloud Run Service Noauth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrun.Service(\"default\", {\n name: \"cloudrun-srv\",\n location: \"us-central1\",\n template: {\n spec: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n },\n});\nconst noauth = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/run.invoker\",\n members: [\"allUsers\"],\n }],\n});\nconst noauthIamPolicy = new gcp.cloudrun.IamPolicy(\"noauth\", {\n location: _default.location,\n project: _default.project,\n service: _default.name,\n policyData: noauth.then(noauth =\u003e noauth.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"cloudrun-srv\",\n location=\"us-central1\",\n template={\n \"spec\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n })\nnoauth = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/run.invoker\",\n \"members\": [\"allUsers\"],\n}])\nnoauth_iam_policy = gcp.cloudrun.IamPolicy(\"noauth\",\n location=default.location,\n project=default.project,\n service=default.name,\n policy_data=noauth.policy_data)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRun.Service(\"default\", new()\n {\n Name = \"cloudrun-srv\",\n Location = \"us-central1\",\n Template = new Gcp.CloudRun.Inputs.ServiceTemplateArgs\n {\n Spec = new Gcp.CloudRun.Inputs.ServiceTemplateSpecArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n },\n },\n });\n\n var noauth = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/run.invoker\",\n Members = new[]\n {\n \"allUsers\",\n },\n },\n },\n });\n\n var noauthIamPolicy = new Gcp.CloudRun.IamPolicy(\"noauth\", new()\n {\n Location = @default.Location,\n Project = @default.Project,\n Service = @default.Name,\n PolicyData = noauth.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrun\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudrun.NewService(ctx, \"default\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-srv\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTemplate: \u0026cloudrun.ServiceTemplateArgs{\n\t\t\t\tSpec: \u0026cloudrun.ServiceTemplateSpecArgs{\n\t\t\t\t\tContainers: cloudrun.ServiceTemplateSpecContainerArray{\n\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnoauth, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/run.invoker\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"allUsers\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrun.NewIamPolicy(ctx, \"noauth\", \u0026cloudrun.IamPolicyArgs{\n\t\t\tLocation: _default.Location,\n\t\t\tProject: _default.Project,\n\t\t\tService: _default.Name,\n\t\t\tPolicyData: pulumi.String(noauth.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudrun.Service;\nimport com.pulumi.gcp.cloudrun.ServiceArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateSpecArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.cloudrun.IamPolicy;\nimport com.pulumi.gcp.cloudrun.IamPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-srv\")\n .location(\"us-central1\")\n .template(ServiceTemplateArgs.builder()\n .spec(ServiceTemplateSpecArgs.builder()\n .containers(ServiceTemplateSpecContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .build())\n .build())\n .build());\n\n final var noauth = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/run.invoker\")\n .members(\"allUsers\")\n .build())\n .build());\n\n var noauthIamPolicy = new IamPolicy(\"noauthIamPolicy\", IamPolicyArgs.builder()\n .location(default_.location())\n .project(default_.project())\n .service(default_.name())\n .policyData(noauth.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrun:Service\n properties:\n name: cloudrun-srv\n location: us-central1\n template:\n spec:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n noauthIamPolicy:\n type: gcp:cloudrun:IamPolicy\n name: noauth\n properties:\n location: ${default.location}\n project: ${default.project}\n service: ${default.name}\n policyData: ${noauth.policyData}\nvariables:\n noauth:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/run.invoker\n members:\n - allUsers\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloud Run Service Probes\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrun.Service(\"default\", {\n name: \"cloudrun-srv\",\n location: \"us-central1\",\n template: {\n spec: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n startupProbe: {\n initialDelaySeconds: 0,\n timeoutSeconds: 1,\n periodSeconds: 3,\n failureThreshold: 1,\n tcpSocket: {\n port: 8080,\n },\n },\n livenessProbe: {\n httpGet: {\n path: \"/\",\n },\n },\n }],\n },\n },\n traffics: [{\n percent: 100,\n latestRevision: true,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"cloudrun-srv\",\n location=\"us-central1\",\n template={\n \"spec\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"startup_probe\": {\n \"initial_delay_seconds\": 0,\n \"timeout_seconds\": 1,\n \"period_seconds\": 3,\n \"failure_threshold\": 1,\n \"tcp_socket\": {\n \"port\": 8080,\n },\n },\n \"liveness_probe\": {\n \"http_get\": {\n \"path\": \"/\",\n },\n },\n }],\n },\n },\n traffics=[{\n \"percent\": 100,\n \"latest_revision\": True,\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRun.Service(\"default\", new()\n {\n Name = \"cloudrun-srv\",\n Location = \"us-central1\",\n Template = new Gcp.CloudRun.Inputs.ServiceTemplateArgs\n {\n Spec = new Gcp.CloudRun.Inputs.ServiceTemplateSpecArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n StartupProbe = new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerStartupProbeArgs\n {\n InitialDelaySeconds = 0,\n TimeoutSeconds = 1,\n PeriodSeconds = 3,\n FailureThreshold = 1,\n TcpSocket = new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerStartupProbeTcpSocketArgs\n {\n Port = 8080,\n },\n },\n LivenessProbe = new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerLivenessProbeArgs\n {\n HttpGet = new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerLivenessProbeHttpGetArgs\n {\n Path = \"/\",\n },\n },\n },\n },\n },\n },\n Traffics = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTrafficArgs\n {\n Percent = 100,\n LatestRevision = true,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrun\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudrun.NewService(ctx, \"default\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-srv\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTemplate: \u0026cloudrun.ServiceTemplateArgs{\n\t\t\t\tSpec: \u0026cloudrun.ServiceTemplateSpecArgs{\n\t\t\t\t\tContainers: cloudrun.ServiceTemplateSpecContainerArray{\n\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\t\tStartupProbe: \u0026cloudrun.ServiceTemplateSpecContainerStartupProbeArgs{\n\t\t\t\t\t\t\t\tInitialDelaySeconds: pulumi.Int(0),\n\t\t\t\t\t\t\t\tTimeoutSeconds: pulumi.Int(1),\n\t\t\t\t\t\t\t\tPeriodSeconds: pulumi.Int(3),\n\t\t\t\t\t\t\t\tFailureThreshold: pulumi.Int(1),\n\t\t\t\t\t\t\t\tTcpSocket: \u0026cloudrun.ServiceTemplateSpecContainerStartupProbeTcpSocketArgs{\n\t\t\t\t\t\t\t\t\tPort: pulumi.Int(8080),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tLivenessProbe: \u0026cloudrun.ServiceTemplateSpecContainerLivenessProbeArgs{\n\t\t\t\t\t\t\t\tHttpGet: \u0026cloudrun.ServiceTemplateSpecContainerLivenessProbeHttpGetArgs{\n\t\t\t\t\t\t\t\t\tPath: pulumi.String(\"/\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTraffics: cloudrun.ServiceTrafficArray{\n\t\t\t\t\u0026cloudrun.ServiceTrafficArgs{\n\t\t\t\t\tPercent: pulumi.Int(100),\n\t\t\t\t\tLatestRevision: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudrun.Service;\nimport com.pulumi.gcp.cloudrun.ServiceArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateSpecArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTrafficArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-srv\")\n .location(\"us-central1\")\n .template(ServiceTemplateArgs.builder()\n .spec(ServiceTemplateSpecArgs.builder()\n .containers(ServiceTemplateSpecContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .startupProbe(ServiceTemplateSpecContainerStartupProbeArgs.builder()\n .initialDelaySeconds(0)\n .timeoutSeconds(1)\n .periodSeconds(3)\n .failureThreshold(1)\n .tcpSocket(ServiceTemplateSpecContainerStartupProbeTcpSocketArgs.builder()\n .port(8080)\n .build())\n .build())\n .livenessProbe(ServiceTemplateSpecContainerLivenessProbeArgs.builder()\n .httpGet(ServiceTemplateSpecContainerLivenessProbeHttpGetArgs.builder()\n .path(\"/\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .traffics(ServiceTrafficArgs.builder()\n .percent(100)\n .latestRevision(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrun:Service\n properties:\n name: cloudrun-srv\n location: us-central1\n template:\n spec:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n startupProbe:\n initialDelaySeconds: 0\n timeoutSeconds: 1\n periodSeconds: 3\n failureThreshold: 1\n tcpSocket:\n port: 8080\n livenessProbe:\n httpGet:\n path: /\n traffics:\n - percent: 100\n latestRevision: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloud Run Service Multicontainer\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrun.Service(\"default\", {\n name: \"cloudrun-srv\",\n location: \"us-central1\",\n metadata: {\n annotations: {\n \"run.googleapis.com/launch-stage\": \"BETA\",\n },\n },\n template: {\n metadata: {\n annotations: {\n \"run.googleapis.com/container-dependencies\": JSON.stringify({\n \"hello-1\": [\"hello-2\"],\n }),\n },\n },\n spec: {\n containers: [\n {\n name: \"hello-1\",\n ports: [{\n containerPort: 8080,\n }],\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n volumeMounts: [{\n name: \"shared-volume\",\n mountPath: \"/mnt/shared\",\n }],\n },\n {\n name: \"hello-2\",\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n envs: [{\n name: \"PORT\",\n value: \"8081\",\n }],\n startupProbe: {\n httpGet: {\n port: 8081,\n },\n },\n volumeMounts: [{\n name: \"shared-volume\",\n mountPath: \"/mnt/shared\",\n }],\n },\n ],\n volumes: [{\n name: \"shared-volume\",\n emptyDir: {\n medium: \"Memory\",\n sizeLimit: \"128Mi\",\n },\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"cloudrun-srv\",\n location=\"us-central1\",\n metadata={\n \"annotations\": {\n \"run.googleapis.com/launch-stage\": \"BETA\",\n },\n },\n template={\n \"metadata\": {\n \"annotations\": {\n \"run.googleapis.com/container-dependencies\": json.dumps({\n \"hello-1\": [\"hello-2\"],\n }),\n },\n },\n \"spec\": {\n \"containers\": [\n {\n \"name\": \"hello-1\",\n \"ports\": [{\n \"container_port\": 8080,\n }],\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"volume_mounts\": [{\n \"name\": \"shared-volume\",\n \"mount_path\": \"/mnt/shared\",\n }],\n },\n {\n \"name\": \"hello-2\",\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"envs\": [{\n \"name\": \"PORT\",\n \"value\": \"8081\",\n }],\n \"startup_probe\": {\n \"http_get\": {\n \"port\": 8081,\n },\n },\n \"volume_mounts\": [{\n \"name\": \"shared-volume\",\n \"mount_path\": \"/mnt/shared\",\n }],\n },\n ],\n \"volumes\": [{\n \"name\": \"shared-volume\",\n \"empty_dir\": {\n \"medium\": \"Memory\",\n \"size_limit\": \"128Mi\",\n },\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRun.Service(\"default\", new()\n {\n Name = \"cloudrun-srv\",\n Location = \"us-central1\",\n Metadata = new Gcp.CloudRun.Inputs.ServiceMetadataArgs\n {\n Annotations = \n {\n { \"run.googleapis.com/launch-stage\", \"BETA\" },\n },\n },\n Template = new Gcp.CloudRun.Inputs.ServiceTemplateArgs\n {\n Metadata = new Gcp.CloudRun.Inputs.ServiceTemplateMetadataArgs\n {\n Annotations = \n {\n { \"run.googleapis.com/container-dependencies\", JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"hello-1\"] = new[]\n {\n \"hello-2\",\n },\n }) },\n },\n },\n Spec = new Gcp.CloudRun.Inputs.ServiceTemplateSpecArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerArgs\n {\n Name = \"hello-1\",\n Ports = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerPortArgs\n {\n ContainerPort = 8080,\n },\n },\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n VolumeMounts = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerVolumeMountArgs\n {\n Name = \"shared-volume\",\n MountPath = \"/mnt/shared\",\n },\n },\n },\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerArgs\n {\n Name = \"hello-2\",\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n Envs = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerEnvArgs\n {\n Name = \"PORT\",\n Value = \"8081\",\n },\n },\n StartupProbe = new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerStartupProbeArgs\n {\n HttpGet = new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerStartupProbeHttpGetArgs\n {\n Port = 8081,\n },\n },\n VolumeMounts = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerVolumeMountArgs\n {\n Name = \"shared-volume\",\n MountPath = \"/mnt/shared\",\n },\n },\n },\n },\n Volumes = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecVolumeArgs\n {\n Name = \"shared-volume\",\n EmptyDir = new Gcp.CloudRun.Inputs.ServiceTemplateSpecVolumeEmptyDirArgs\n {\n Medium = \"Memory\",\n SizeLimit = \"128Mi\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrun\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"hello-1\": []string{\n\t\t\t\t\"hello-2\",\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\t_, err = cloudrun.NewService(ctx, \"default\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-srv\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tMetadata: \u0026cloudrun.ServiceMetadataArgs{\n\t\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\t\"run.googleapis.com/launch-stage\": pulumi.String(\"BETA\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTemplate: \u0026cloudrun.ServiceTemplateArgs{\n\t\t\t\tMetadata: \u0026cloudrun.ServiceTemplateMetadataArgs{\n\t\t\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\t\t\"run.googleapis.com/container-dependencies\": pulumi.String(json0),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSpec: \u0026cloudrun.ServiceTemplateSpecArgs{\n\t\t\t\t\tContainers: cloudrun.ServiceTemplateSpecContainerArray{\n\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"hello-1\"),\n\t\t\t\t\t\t\tPorts: cloudrun.ServiceTemplateSpecContainerPortArray{\n\t\t\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerPortArgs{\n\t\t\t\t\t\t\t\t\tContainerPort: pulumi.Int(8080),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\t\tVolumeMounts: cloudrun.ServiceTemplateSpecContainerVolumeMountArray{\n\t\t\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"shared-volume\"),\n\t\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/mnt/shared\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"hello-2\"),\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\t\tEnvs: cloudrun.ServiceTemplateSpecContainerEnvArray{\n\t\t\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerEnvArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"PORT\"),\n\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"8081\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tStartupProbe: \u0026cloudrun.ServiceTemplateSpecContainerStartupProbeArgs{\n\t\t\t\t\t\t\t\tHttpGet: \u0026cloudrun.ServiceTemplateSpecContainerStartupProbeHttpGetArgs{\n\t\t\t\t\t\t\t\t\tPort: pulumi.Int(8081),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tVolumeMounts: cloudrun.ServiceTemplateSpecContainerVolumeMountArray{\n\t\t\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"shared-volume\"),\n\t\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/mnt/shared\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tVolumes: cloudrun.ServiceTemplateSpecVolumeArray{\n\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecVolumeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"shared-volume\"),\n\t\t\t\t\t\t\tEmptyDir: \u0026cloudrun.ServiceTemplateSpecVolumeEmptyDirArgs{\n\t\t\t\t\t\t\t\tMedium: pulumi.String(\"Memory\"),\n\t\t\t\t\t\t\t\tSizeLimit: pulumi.String(\"128Mi\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudrun.Service;\nimport com.pulumi.gcp.cloudrun.ServiceArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceMetadataArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateMetadataArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateSpecArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-srv\")\n .location(\"us-central1\")\n .metadata(ServiceMetadataArgs.builder()\n .annotations(Map.of(\"run.googleapis.com/launch-stage\", \"BETA\"))\n .build())\n .template(ServiceTemplateArgs.builder()\n .metadata(ServiceTemplateMetadataArgs.builder()\n .annotations(Map.of(\"run.googleapis.com/container-dependencies\", serializeJson(\n jsonObject(\n jsonProperty(\"hello-1\", jsonArray(\"hello-2\"))\n ))))\n .build())\n .spec(ServiceTemplateSpecArgs.builder()\n .containers( \n ServiceTemplateSpecContainerArgs.builder()\n .name(\"hello-1\")\n .ports(ServiceTemplateSpecContainerPortArgs.builder()\n .containerPort(8080)\n .build())\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .volumeMounts(ServiceTemplateSpecContainerVolumeMountArgs.builder()\n .name(\"shared-volume\")\n .mountPath(\"/mnt/shared\")\n .build())\n .build(),\n ServiceTemplateSpecContainerArgs.builder()\n .name(\"hello-2\")\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .envs(ServiceTemplateSpecContainerEnvArgs.builder()\n .name(\"PORT\")\n .value(\"8081\")\n .build())\n .startupProbe(ServiceTemplateSpecContainerStartupProbeArgs.builder()\n .httpGet(ServiceTemplateSpecContainerStartupProbeHttpGetArgs.builder()\n .port(8081)\n .build())\n .build())\n .volumeMounts(ServiceTemplateSpecContainerVolumeMountArgs.builder()\n .name(\"shared-volume\")\n .mountPath(\"/mnt/shared\")\n .build())\n .build())\n .volumes(ServiceTemplateSpecVolumeArgs.builder()\n .name(\"shared-volume\")\n .emptyDir(ServiceTemplateSpecVolumeEmptyDirArgs.builder()\n .medium(\"Memory\")\n .sizeLimit(\"128Mi\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrun:Service\n properties:\n name: cloudrun-srv\n location: us-central1\n metadata:\n annotations:\n run.googleapis.com/launch-stage: BETA\n template:\n metadata:\n annotations:\n run.googleapis.com/container-dependencies:\n fn::toJSON:\n hello-1:\n - hello-2\n spec:\n containers:\n - name: hello-1\n ports:\n - containerPort: 8080\n image: us-docker.pkg.dev/cloudrun/container/hello\n volumeMounts:\n - name: shared-volume\n mountPath: /mnt/shared\n - name: hello-2\n image: us-docker.pkg.dev/cloudrun/container/hello\n envs:\n - name: PORT\n value: '8081'\n startupProbe:\n httpGet:\n port: 8081\n volumeMounts:\n - name: shared-volume\n mountPath: /mnt/shared\n volumes:\n - name: shared-volume\n emptyDir:\n medium: Memory\n sizeLimit: 128Mi\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nService can be imported using any of these accepted formats:\n\n* `locations/{{location}}/namespaces/{{project}}/services/{{name}}`\n\n* `{{location}}/{{project}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Service can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudrun/service:Service default locations/{{location}}/namespaces/{{project}}/services/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudrun/service:Service default {{location}}/{{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudrun/service:Service default {{location}}/{{name}}\n```\n\n", "properties": { "autogenerateRevisionName": { "type": "boolean", @@ -143521,7 +143521,7 @@ } }, "gcp:cloudrunv2/job:Job": { - "description": "A Cloud Run Job resource that references a container image which is run to completion.\n\n\nTo get more information about Job, see:\n\n* [API documentation](https://cloud.google.com/run/docs/reference/rest/v2/projects.locations.jobs)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/run/docs/)\n\n## Example Usage\n\n### Cloudrunv2 Job Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Job(\"default\", {\n name: \"cloudrun-job\",\n location: \"us-central1\",\n deletionProtection: false,\n template: {\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/job\",\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Job(\"default\",\n name=\"cloudrun-job\",\n location=\"us-central1\",\n deletion_protection=False,\n template={\n \"template\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/job\",\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRunV2.Job(\"default\", new()\n {\n Name = \"cloudrun-job\",\n Location = \"us-central1\",\n DeletionProtection = false,\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateArgs\n {\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/job\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudrunv2.NewJob(ctx, \"default\", \u0026cloudrunv2.JobArgs{\n\t\t\tName: pulumi.String(\"cloudrun-job\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTemplate: \u0026cloudrunv2.JobTemplateArgs{\n\t\t\t\tTemplate: \u0026cloudrunv2.JobTemplateTemplateArgs{\n\t\t\t\t\tContainers: cloudrunv2.JobTemplateTemplateContainerArray{\n\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/job\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudrunv2.Job;\nimport com.pulumi.gcp.cloudrunv2.JobArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateTemplateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Job(\"default\", JobArgs.builder()\n .name(\"cloudrun-job\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .template(JobTemplateArgs.builder()\n .template(JobTemplateTemplateArgs.builder()\n .containers(JobTemplateTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/job\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Job\n properties:\n name: cloudrun-job\n location: us-central1\n deletionProtection: false\n template:\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/job\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Job Limits\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Job(\"default\", {\n name: \"cloudrun-job\",\n location: \"us-central1\",\n deletionProtection: false,\n template: {\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/job\",\n resources: {\n limits: {\n cpu: \"2\",\n memory: \"1024Mi\",\n },\n },\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Job(\"default\",\n name=\"cloudrun-job\",\n location=\"us-central1\",\n deletion_protection=False,\n template={\n \"template\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/job\",\n \"resources\": {\n \"limits\": {\n \"cpu\": \"2\",\n \"memory\": \"1024Mi\",\n },\n },\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRunV2.Job(\"default\", new()\n {\n Name = \"cloudrun-job\",\n Location = \"us-central1\",\n DeletionProtection = false,\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateArgs\n {\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/job\",\n Resources = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerResourcesArgs\n {\n Limits = \n {\n { \"cpu\", \"2\" },\n { \"memory\", \"1024Mi\" },\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudrunv2.NewJob(ctx, \"default\", \u0026cloudrunv2.JobArgs{\n\t\t\tName: pulumi.String(\"cloudrun-job\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTemplate: \u0026cloudrunv2.JobTemplateArgs{\n\t\t\t\tTemplate: \u0026cloudrunv2.JobTemplateTemplateArgs{\n\t\t\t\t\tContainers: cloudrunv2.JobTemplateTemplateContainerArray{\n\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/job\"),\n\t\t\t\t\t\t\tResources: \u0026cloudrunv2.JobTemplateTemplateContainerResourcesArgs{\n\t\t\t\t\t\t\t\tLimits: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\t\"cpu\": pulumi.String(\"2\"),\n\t\t\t\t\t\t\t\t\t\"memory\": pulumi.String(\"1024Mi\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudrunv2.Job;\nimport com.pulumi.gcp.cloudrunv2.JobArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateTemplateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Job(\"default\", JobArgs.builder()\n .name(\"cloudrun-job\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .template(JobTemplateArgs.builder()\n .template(JobTemplateTemplateArgs.builder()\n .containers(JobTemplateTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/job\")\n .resources(JobTemplateTemplateContainerResourcesArgs.builder()\n .limits(Map.ofEntries(\n Map.entry(\"cpu\", \"2\"),\n Map.entry(\"memory\", \"1024Mi\")\n ))\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Job\n properties:\n name: cloudrun-job\n location: us-central1\n deletionProtection: false\n template:\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/job\n resources:\n limits:\n cpu: '2'\n memory: 1024Mi\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Job Sql\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"secret\",\n replication: {\n auto: {},\n },\n});\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"cloudrun-sql\",\n region: \"us-central1\",\n databaseVersion: \"MYSQL_5_7\",\n settings: {\n tier: \"db-f1-micro\",\n },\n deletionProtection: true,\n});\nconst _default = new gcp.cloudrunv2.Job(\"default\", {\n name: \"cloudrun-job\",\n location: \"us-central1\",\n deletionProtection: false,\n template: {\n template: {\n volumes: [{\n name: \"cloudsql\",\n cloudSqlInstance: {\n instances: [instance.connectionName],\n },\n }],\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/job\",\n envs: [\n {\n name: \"FOO\",\n value: \"bar\",\n },\n {\n name: \"latestdclsecret\",\n valueSource: {\n secretKeyRef: {\n secret: secret.secretId,\n version: \"1\",\n },\n },\n },\n ],\n volumeMounts: [{\n name: \"cloudsql\",\n mountPath: \"/cloudsql\",\n }],\n }],\n },\n },\n});\nconst project = gcp.organizations.getProject({});\nconst secret_version_data = new gcp.secretmanager.SecretVersion(\"secret-version-data\", {\n secret: secret.name,\n secretData: \"secret-data\",\n});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:${project.number}-compute@developer.gserviceaccount.com`),\n}, {\n dependsOn: [secret],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"secret\",\n replication={\n \"auto\": {},\n })\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"cloudrun-sql\",\n region=\"us-central1\",\n database_version=\"MYSQL_5_7\",\n settings={\n \"tier\": \"db-f1-micro\",\n },\n deletion_protection=True)\ndefault = gcp.cloudrunv2.Job(\"default\",\n name=\"cloudrun-job\",\n location=\"us-central1\",\n deletion_protection=False,\n template={\n \"template\": {\n \"volumes\": [{\n \"name\": \"cloudsql\",\n \"cloud_sql_instance\": {\n \"instances\": [instance.connection_name],\n },\n }],\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/job\",\n \"envs\": [\n {\n \"name\": \"FOO\",\n \"value\": \"bar\",\n },\n {\n \"name\": \"latestdclsecret\",\n \"value_source\": {\n \"secret_key_ref\": {\n \"secret\": secret.secret_id,\n \"version\": \"1\",\n },\n },\n },\n ],\n \"volume_mounts\": [{\n \"name\": \"cloudsql\",\n \"mount_path\": \"/cloudsql\",\n }],\n }],\n },\n })\nproject = gcp.organizations.get_project()\nsecret_version_data = gcp.secretmanager.SecretVersion(\"secret-version-data\",\n secret=secret.name,\n secret_data=\"secret-data\")\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:{project.number}-compute@developer.gserviceaccount.com\",\n opts = pulumi.ResourceOptions(depends_on=[secret]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"cloudrun-sql\",\n Region = \"us-central1\",\n DatabaseVersion = \"MYSQL_5_7\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n },\n DeletionProtection = true,\n });\n\n var @default = new Gcp.CloudRunV2.Job(\"default\", new()\n {\n Name = \"cloudrun-job\",\n Location = \"us-central1\",\n DeletionProtection = false,\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateArgs\n {\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateArgs\n {\n Volumes = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateVolumeArgs\n {\n Name = \"cloudsql\",\n CloudSqlInstance = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateVolumeCloudSqlInstanceArgs\n {\n Instances = new[]\n {\n instance.ConnectionName,\n },\n },\n },\n },\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/job\",\n Envs = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerEnvArgs\n {\n Name = \"FOO\",\n Value = \"bar\",\n },\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerEnvArgs\n {\n Name = \"latestdclsecret\",\n ValueSource = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerEnvValueSourceArgs\n {\n SecretKeyRef = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerEnvValueSourceSecretKeyRefArgs\n {\n Secret = secret.SecretId,\n Version = \"1\",\n },\n },\n },\n },\n VolumeMounts = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerVolumeMountArgs\n {\n Name = \"cloudsql\",\n MountPath = \"/cloudsql\",\n },\n },\n },\n },\n },\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var secret_version_data = new Gcp.SecretManager.SecretVersion(\"secret-version-data\", new()\n {\n Secret = secret.Name,\n SecretData = \"secret-data\",\n });\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:{project.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secret,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\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-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\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-sql\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_5_7\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrunv2.NewJob(ctx, \"default\", \u0026cloudrunv2.JobArgs{\n\t\t\tName: pulumi.String(\"cloudrun-job\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTemplate: \u0026cloudrunv2.JobTemplateArgs{\n\t\t\t\tTemplate: \u0026cloudrunv2.JobTemplateTemplateArgs{\n\t\t\t\t\tVolumes: cloudrunv2.JobTemplateTemplateVolumeArray{\n\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateVolumeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"cloudsql\"),\n\t\t\t\t\t\t\tCloudSqlInstance: \u0026cloudrunv2.JobTemplateTemplateVolumeCloudSqlInstanceArgs{\n\t\t\t\t\t\t\t\tInstances: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tinstance.ConnectionName,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tContainers: cloudrunv2.JobTemplateTemplateContainerArray{\n\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/job\"),\n\t\t\t\t\t\t\tEnvs: cloudrunv2.JobTemplateTemplateContainerEnvArray{\n\t\t\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerEnvArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"FOO\"),\n\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"bar\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerEnvArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"latestdclsecret\"),\n\t\t\t\t\t\t\t\t\tValueSource: \u0026cloudrunv2.JobTemplateTemplateContainerEnvValueSourceArgs{\n\t\t\t\t\t\t\t\t\t\tSecretKeyRef: \u0026cloudrunv2.JobTemplateTemplateContainerEnvValueSourceSecretKeyRefArgs{\n\t\t\t\t\t\t\t\t\t\t\tSecret: secret.SecretId,\n\t\t\t\t\t\t\t\t\t\t\tVersion: pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tVolumeMounts: cloudrunv2.JobTemplateTemplateContainerVolumeMountArray{\n\t\t\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"cloudsql\"),\n\t\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/cloudsql\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"secret-version-data\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.Name,\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:%v-compute@developer.gserviceaccount.com\", project.Number),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecret,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.cloudrunv2.Job;\nimport com.pulumi.gcp.cloudrunv2.JobArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateTemplateArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var secret = new Secret(\"secret\", SecretArgs.builder()\n .secretId(\"secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"cloudrun-sql\")\n .region(\"us-central1\")\n .databaseVersion(\"MYSQL_5_7\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var default_ = new Job(\"default\", JobArgs.builder()\n .name(\"cloudrun-job\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .template(JobTemplateArgs.builder()\n .template(JobTemplateTemplateArgs.builder()\n .volumes(JobTemplateTemplateVolumeArgs.builder()\n .name(\"cloudsql\")\n .cloudSqlInstance(JobTemplateTemplateVolumeCloudSqlInstanceArgs.builder()\n .instances(instance.connectionName())\n .build())\n .build())\n .containers(JobTemplateTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/job\")\n .envs( \n JobTemplateTemplateContainerEnvArgs.builder()\n .name(\"FOO\")\n .value(\"bar\")\n .build(),\n JobTemplateTemplateContainerEnvArgs.builder()\n .name(\"latestdclsecret\")\n .valueSource(JobTemplateTemplateContainerEnvValueSourceArgs.builder()\n .secretKeyRef(JobTemplateTemplateContainerEnvValueSourceSecretKeyRefArgs.builder()\n .secret(secret.secretId())\n .version(\"1\")\n .build())\n .build())\n .build())\n .volumeMounts(JobTemplateTemplateContainerVolumeMountArgs.builder()\n .name(\"cloudsql\")\n .mountPath(\"/cloudsql\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var secret_version_data = new SecretVersion(\"secret-version-data\", SecretVersionArgs.builder()\n .secret(secret.name())\n .secretData(\"secret-data\")\n .build());\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:%s-compute@developer.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build(), CustomResourceOptions.builder()\n .dependsOn(secret)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Job\n properties:\n name: cloudrun-job\n location: us-central1\n deletionProtection: false\n template:\n template:\n volumes:\n - name: cloudsql\n cloudSqlInstance:\n instances:\n - ${instance.connectionName}\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/job\n envs:\n - name: FOO\n value: bar\n - name: latestdclsecret\n valueSource:\n secretKeyRef:\n secret: ${secret.secretId}\n version: '1'\n volumeMounts:\n - name: cloudsql\n mountPath: /cloudsql\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret\n replication:\n auto: {}\n secret-version-data:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${secret.name}\n secretData: secret-data\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${secret.id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:${project.number}-compute@developer.gserviceaccount.com\n options:\n dependson:\n - ${secret}\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: cloudrun-sql\n region: us-central1\n databaseVersion: MYSQL_5_7\n settings:\n tier: db-f1-micro\n deletionProtection: 'true'\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Job Vpcaccess\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst customTestNetwork = new gcp.compute.Network(\"custom_test\", {\n name: \"run-network\",\n autoCreateSubnetworks: false,\n});\nconst customTest = new gcp.compute.Subnetwork(\"custom_test\", {\n name: \"run-subnetwork\",\n ipCidrRange: \"10.2.0.0/28\",\n region: \"us-central1\",\n network: customTestNetwork.id,\n});\nconst connector = new gcp.vpcaccess.Connector(\"connector\", {\n name: \"run-vpc\",\n subnet: {\n name: customTest.name,\n },\n machineType: \"e2-standard-4\",\n minInstances: 2,\n maxInstances: 3,\n region: \"us-central1\",\n});\nconst _default = new gcp.cloudrunv2.Job(\"default\", {\n name: \"cloudrun-job\",\n location: \"us-central1\",\n deletionProtection: false,\n template: {\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/job\",\n }],\n vpcAccess: {\n connector: connector.id,\n egress: \"ALL_TRAFFIC\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_test_network = gcp.compute.Network(\"custom_test\",\n name=\"run-network\",\n auto_create_subnetworks=False)\ncustom_test = gcp.compute.Subnetwork(\"custom_test\",\n name=\"run-subnetwork\",\n ip_cidr_range=\"10.2.0.0/28\",\n region=\"us-central1\",\n network=custom_test_network.id)\nconnector = gcp.vpcaccess.Connector(\"connector\",\n name=\"run-vpc\",\n subnet={\n \"name\": custom_test.name,\n },\n machine_type=\"e2-standard-4\",\n min_instances=2,\n max_instances=3,\n region=\"us-central1\")\ndefault = gcp.cloudrunv2.Job(\"default\",\n name=\"cloudrun-job\",\n location=\"us-central1\",\n deletion_protection=False,\n template={\n \"template\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/job\",\n }],\n \"vpc_access\": {\n \"connector\": connector.id,\n \"egress\": \"ALL_TRAFFIC\",\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var customTestNetwork = new Gcp.Compute.Network(\"custom_test\", new()\n {\n Name = \"run-network\",\n AutoCreateSubnetworks = false,\n });\n\n var customTest = new Gcp.Compute.Subnetwork(\"custom_test\", new()\n {\n Name = \"run-subnetwork\",\n IpCidrRange = \"10.2.0.0/28\",\n Region = \"us-central1\",\n Network = customTestNetwork.Id,\n });\n\n var connector = new Gcp.VpcAccess.Connector(\"connector\", new()\n {\n Name = \"run-vpc\",\n Subnet = new Gcp.VpcAccess.Inputs.ConnectorSubnetArgs\n {\n Name = customTest.Name,\n },\n MachineType = \"e2-standard-4\",\n MinInstances = 2,\n MaxInstances = 3,\n Region = \"us-central1\",\n });\n\n var @default = new Gcp.CloudRunV2.Job(\"default\", new()\n {\n Name = \"cloudrun-job\",\n Location = \"us-central1\",\n DeletionProtection = false,\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateArgs\n {\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/job\",\n },\n },\n VpcAccess = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateVpcAccessArgs\n {\n Connector = connector.Id,\n Egress = \"ALL_TRAFFIC\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vpcaccess\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcustomTestNetwork, err := compute.NewNetwork(ctx, \"custom_test\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"run-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcustomTest, err := compute.NewSubnetwork(ctx, \"custom_test\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"run-subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.2.0.0/28\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: customTestNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tconnector, err := vpcaccess.NewConnector(ctx, \"connector\", \u0026vpcaccess.ConnectorArgs{\n\t\t\tName: pulumi.String(\"run-vpc\"),\n\t\t\tSubnet: \u0026vpcaccess.ConnectorSubnetArgs{\n\t\t\t\tName: customTest.Name,\n\t\t\t},\n\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\tMinInstances: pulumi.Int(2),\n\t\t\tMaxInstances: pulumi.Int(3),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrunv2.NewJob(ctx, \"default\", \u0026cloudrunv2.JobArgs{\n\t\t\tName: pulumi.String(\"cloudrun-job\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTemplate: \u0026cloudrunv2.JobTemplateArgs{\n\t\t\t\tTemplate: \u0026cloudrunv2.JobTemplateTemplateArgs{\n\t\t\t\t\tContainers: cloudrunv2.JobTemplateTemplateContainerArray{\n\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/job\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tVpcAccess: \u0026cloudrunv2.JobTemplateTemplateVpcAccessArgs{\n\t\t\t\t\t\tConnector: connector.ID(),\n\t\t\t\t\t\tEgress: pulumi.String(\"ALL_TRAFFIC\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.vpcaccess.Connector;\nimport com.pulumi.gcp.vpcaccess.ConnectorArgs;\nimport com.pulumi.gcp.vpcaccess.inputs.ConnectorSubnetArgs;\nimport com.pulumi.gcp.cloudrunv2.Job;\nimport com.pulumi.gcp.cloudrunv2.JobArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateTemplateVpcAccessArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var customTestNetwork = new Network(\"customTestNetwork\", NetworkArgs.builder()\n .name(\"run-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var customTest = new Subnetwork(\"customTest\", SubnetworkArgs.builder()\n .name(\"run-subnetwork\")\n .ipCidrRange(\"10.2.0.0/28\")\n .region(\"us-central1\")\n .network(customTestNetwork.id())\n .build());\n\n var connector = new Connector(\"connector\", ConnectorArgs.builder()\n .name(\"run-vpc\")\n .subnet(ConnectorSubnetArgs.builder()\n .name(customTest.name())\n .build())\n .machineType(\"e2-standard-4\")\n .minInstances(2)\n .maxInstances(3)\n .region(\"us-central1\")\n .build());\n\n var default_ = new Job(\"default\", JobArgs.builder()\n .name(\"cloudrun-job\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .template(JobTemplateArgs.builder()\n .template(JobTemplateTemplateArgs.builder()\n .containers(JobTemplateTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/job\")\n .build())\n .vpcAccess(JobTemplateTemplateVpcAccessArgs.builder()\n .connector(connector.id())\n .egress(\"ALL_TRAFFIC\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Job\n properties:\n name: cloudrun-job\n location: us-central1\n deletionProtection: false\n template:\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/job\n vpcAccess:\n connector: ${connector.id}\n egress: ALL_TRAFFIC\n connector:\n type: gcp:vpcaccess:Connector\n properties:\n name: run-vpc\n subnet:\n name: ${customTest.name}\n machineType: e2-standard-4\n minInstances: 2\n maxInstances: 3\n region: us-central1\n customTest:\n type: gcp:compute:Subnetwork\n name: custom_test\n properties:\n name: run-subnetwork\n ipCidrRange: 10.2.0.0/28\n region: us-central1\n network: ${customTestNetwork.id}\n customTestNetwork:\n type: gcp:compute:Network\n name: custom_test\n properties:\n name: run-network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Job Directvpc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Job(\"default\", {\n name: \"cloudrun-job\",\n location: \"us-central1\",\n deletionProtection: false,\n launchStage: \"GA\",\n template: {\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/job\",\n }],\n vpcAccess: {\n networkInterfaces: [{\n network: \"default\",\n subnetwork: \"default\",\n tags: [\n \"tag1\",\n \"tag2\",\n \"tag3\",\n ],\n }],\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Job(\"default\",\n name=\"cloudrun-job\",\n location=\"us-central1\",\n deletion_protection=False,\n launch_stage=\"GA\",\n template={\n \"template\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/job\",\n }],\n \"vpc_access\": {\n \"network_interfaces\": [{\n \"network\": \"default\",\n \"subnetwork\": \"default\",\n \"tags\": [\n \"tag1\",\n \"tag2\",\n \"tag3\",\n ],\n }],\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRunV2.Job(\"default\", new()\n {\n Name = \"cloudrun-job\",\n Location = \"us-central1\",\n DeletionProtection = false,\n LaunchStage = \"GA\",\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateArgs\n {\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/job\",\n },\n },\n VpcAccess = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateVpcAccessArgs\n {\n NetworkInterfaces = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateVpcAccessNetworkInterfaceArgs\n {\n Network = \"default\",\n Subnetwork = \"default\",\n Tags = new[]\n {\n \"tag1\",\n \"tag2\",\n \"tag3\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudrunv2.NewJob(ctx, \"default\", \u0026cloudrunv2.JobArgs{\n\t\t\tName: pulumi.String(\"cloudrun-job\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tLaunchStage: pulumi.String(\"GA\"),\n\t\t\tTemplate: \u0026cloudrunv2.JobTemplateArgs{\n\t\t\t\tTemplate: \u0026cloudrunv2.JobTemplateTemplateArgs{\n\t\t\t\t\tContainers: cloudrunv2.JobTemplateTemplateContainerArray{\n\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/job\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tVpcAccess: \u0026cloudrunv2.JobTemplateTemplateVpcAccessArgs{\n\t\t\t\t\t\tNetworkInterfaces: cloudrunv2.JobTemplateTemplateVpcAccessNetworkInterfaceArray{\n\t\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateVpcAccessNetworkInterfaceArgs{\n\t\t\t\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t\t\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t\t\t\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"tag1\"),\n\t\t\t\t\t\t\t\t\tpulumi.String(\"tag2\"),\n\t\t\t\t\t\t\t\t\tpulumi.String(\"tag3\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudrunv2.Job;\nimport com.pulumi.gcp.cloudrunv2.JobArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateTemplateVpcAccessArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Job(\"default\", JobArgs.builder()\n .name(\"cloudrun-job\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .launchStage(\"GA\")\n .template(JobTemplateArgs.builder()\n .template(JobTemplateTemplateArgs.builder()\n .containers(JobTemplateTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/job\")\n .build())\n .vpcAccess(JobTemplateTemplateVpcAccessArgs.builder()\n .networkInterfaces(JobTemplateTemplateVpcAccessNetworkInterfaceArgs.builder()\n .network(\"default\")\n .subnetwork(\"default\")\n .tags( \n \"tag1\",\n \"tag2\",\n \"tag3\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Job\n properties:\n name: cloudrun-job\n location: us-central1\n deletionProtection: false\n launchStage: GA\n template:\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/job\n vpcAccess:\n networkInterfaces:\n - network: default\n subnetwork: default\n tags:\n - tag1\n - tag2\n - tag3\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Job Secret\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"secret\",\n replication: {\n auto: {},\n },\n});\nconst secret_version_data = new gcp.secretmanager.SecretVersion(\"secret-version-data\", {\n secret: secret.name,\n secretData: \"secret-data\",\n});\nconst project = gcp.organizations.getProject({});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:${project.number}-compute@developer.gserviceaccount.com`),\n}, {\n dependsOn: [secret],\n});\nconst _default = new gcp.cloudrunv2.Job(\"default\", {\n name: \"cloudrun-job\",\n location: \"us-central1\",\n deletionProtection: false,\n template: {\n template: {\n volumes: [{\n name: \"a-volume\",\n secret: {\n secret: secret.secretId,\n defaultMode: 292,\n items: [{\n version: \"1\",\n path: \"my-secret\",\n mode: 256,\n }],\n },\n }],\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/job\",\n volumeMounts: [{\n name: \"a-volume\",\n mountPath: \"/secrets\",\n }],\n }],\n },\n },\n}, {\n dependsOn: [\n secret_version_data,\n secret_access,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"secret\",\n replication={\n \"auto\": {},\n })\nsecret_version_data = gcp.secretmanager.SecretVersion(\"secret-version-data\",\n secret=secret.name,\n secret_data=\"secret-data\")\nproject = gcp.organizations.get_project()\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:{project.number}-compute@developer.gserviceaccount.com\",\n opts = pulumi.ResourceOptions(depends_on=[secret]))\ndefault = gcp.cloudrunv2.Job(\"default\",\n name=\"cloudrun-job\",\n location=\"us-central1\",\n deletion_protection=False,\n template={\n \"template\": {\n \"volumes\": [{\n \"name\": \"a-volume\",\n \"secret\": {\n \"secret\": secret.secret_id,\n \"default_mode\": 292,\n \"items\": [{\n \"version\": \"1\",\n \"path\": \"my-secret\",\n \"mode\": 256,\n }],\n },\n }],\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/job\",\n \"volume_mounts\": [{\n \"name\": \"a-volume\",\n \"mount_path\": \"/secrets\",\n }],\n }],\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[\n secret_version_data,\n secret_access,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var secret_version_data = new Gcp.SecretManager.SecretVersion(\"secret-version-data\", new()\n {\n Secret = secret.Name,\n SecretData = \"secret-data\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:{project.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secret,\n },\n });\n\n var @default = new Gcp.CloudRunV2.Job(\"default\", new()\n {\n Name = \"cloudrun-job\",\n Location = \"us-central1\",\n DeletionProtection = false,\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateArgs\n {\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateArgs\n {\n Volumes = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateVolumeArgs\n {\n Name = \"a-volume\",\n Secret = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateVolumeSecretArgs\n {\n Secret = secret.SecretId,\n DefaultMode = 292,\n Items = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateVolumeSecretItemArgs\n {\n Version = \"1\",\n Path = \"my-secret\",\n Mode = 256,\n },\n },\n },\n },\n },\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/job\",\n VolumeMounts = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerVolumeMountArgs\n {\n Name = \"a-volume\",\n MountPath = \"/secrets\",\n },\n },\n },\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secret_version_data,\n secret_access,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"secret-version-data\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.Name,\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:%v-compute@developer.gserviceaccount.com\", project.Number),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecret,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrunv2.NewJob(ctx, \"default\", \u0026cloudrunv2.JobArgs{\n\t\t\tName: pulumi.String(\"cloudrun-job\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTemplate: \u0026cloudrunv2.JobTemplateArgs{\n\t\t\t\tTemplate: \u0026cloudrunv2.JobTemplateTemplateArgs{\n\t\t\t\t\tVolumes: cloudrunv2.JobTemplateTemplateVolumeArray{\n\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateVolumeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"a-volume\"),\n\t\t\t\t\t\t\tSecret: \u0026cloudrunv2.JobTemplateTemplateVolumeSecretArgs{\n\t\t\t\t\t\t\t\tSecret: secret.SecretId,\n\t\t\t\t\t\t\t\tDefaultMode: pulumi.Int(292),\n\t\t\t\t\t\t\t\tItems: cloudrunv2.JobTemplateTemplateVolumeSecretItemArray{\n\t\t\t\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateVolumeSecretItemArgs{\n\t\t\t\t\t\t\t\t\t\tVersion: pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\t\t\tPath: pulumi.String(\"my-secret\"),\n\t\t\t\t\t\t\t\t\t\tMode: pulumi.Int(256),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tContainers: cloudrunv2.JobTemplateTemplateContainerArray{\n\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/job\"),\n\t\t\t\t\t\t\tVolumeMounts: cloudrunv2.JobTemplateTemplateContainerVolumeMountArray{\n\t\t\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"a-volume\"),\n\t\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/secrets\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecret_version_data,\n\t\t\tsecret_access,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.gcp.cloudrunv2.Job;\nimport com.pulumi.gcp.cloudrunv2.JobArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateTemplateArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var secret = new Secret(\"secret\", SecretArgs.builder()\n .secretId(\"secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var secret_version_data = new SecretVersion(\"secret-version-data\", SecretVersionArgs.builder()\n .secret(secret.name())\n .secretData(\"secret-data\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:%s-compute@developer.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build(), CustomResourceOptions.builder()\n .dependsOn(secret)\n .build());\n\n var default_ = new Job(\"default\", JobArgs.builder()\n .name(\"cloudrun-job\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .template(JobTemplateArgs.builder()\n .template(JobTemplateTemplateArgs.builder()\n .volumes(JobTemplateTemplateVolumeArgs.builder()\n .name(\"a-volume\")\n .secret(JobTemplateTemplateVolumeSecretArgs.builder()\n .secret(secret.secretId())\n .defaultMode(292)\n .items(JobTemplateTemplateVolumeSecretItemArgs.builder()\n .version(\"1\")\n .path(\"my-secret\")\n .mode(256)\n .build())\n .build())\n .build())\n .containers(JobTemplateTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/job\")\n .volumeMounts(JobTemplateTemplateContainerVolumeMountArgs.builder()\n .name(\"a-volume\")\n .mountPath(\"/secrets\")\n .build())\n .build())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n secret_version_data,\n secret_access)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Job\n properties:\n name: cloudrun-job\n location: us-central1\n deletionProtection: false\n template:\n template:\n volumes:\n - name: a-volume\n secret:\n secret: ${secret.secretId}\n defaultMode: 292\n items:\n - version: '1'\n path: my-secret\n mode: 256\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/job\n volumeMounts:\n - name: a-volume\n mountPath: /secrets\n options:\n dependson:\n - ${[\"secret-version-data\"]}\n - ${[\"secret-access\"]}\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret\n replication:\n auto: {}\n secret-version-data:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${secret.name}\n secretData: secret-data\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${secret.id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:${project.number}-compute@developer.gserviceaccount.com\n options:\n dependson:\n - ${secret}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Job Emptydir\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Job(\"default\", {\n name: \"cloudrun-job\",\n location: \"us-central1\",\n deletionProtection: false,\n launchStage: \"BETA\",\n template: {\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/job\",\n volumeMounts: [{\n name: \"empty-dir-volume\",\n mountPath: \"/mnt\",\n }],\n }],\n volumes: [{\n name: \"empty-dir-volume\",\n emptyDir: {\n medium: \"MEMORY\",\n sizeLimit: \"128Mi\",\n },\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Job(\"default\",\n name=\"cloudrun-job\",\n location=\"us-central1\",\n deletion_protection=False,\n launch_stage=\"BETA\",\n template={\n \"template\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/job\",\n \"volume_mounts\": [{\n \"name\": \"empty-dir-volume\",\n \"mount_path\": \"/mnt\",\n }],\n }],\n \"volumes\": [{\n \"name\": \"empty-dir-volume\",\n \"empty_dir\": {\n \"medium\": \"MEMORY\",\n \"size_limit\": \"128Mi\",\n },\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRunV2.Job(\"default\", new()\n {\n Name = \"cloudrun-job\",\n Location = \"us-central1\",\n DeletionProtection = false,\n LaunchStage = \"BETA\",\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateArgs\n {\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/job\",\n VolumeMounts = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerVolumeMountArgs\n {\n Name = \"empty-dir-volume\",\n MountPath = \"/mnt\",\n },\n },\n },\n },\n Volumes = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateVolumeArgs\n {\n Name = \"empty-dir-volume\",\n EmptyDir = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateVolumeEmptyDirArgs\n {\n Medium = \"MEMORY\",\n SizeLimit = \"128Mi\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudrunv2.NewJob(ctx, \"default\", \u0026cloudrunv2.JobArgs{\n\t\t\tName: pulumi.String(\"cloudrun-job\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tLaunchStage: pulumi.String(\"BETA\"),\n\t\t\tTemplate: \u0026cloudrunv2.JobTemplateArgs{\n\t\t\t\tTemplate: \u0026cloudrunv2.JobTemplateTemplateArgs{\n\t\t\t\t\tContainers: cloudrunv2.JobTemplateTemplateContainerArray{\n\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/job\"),\n\t\t\t\t\t\t\tVolumeMounts: cloudrunv2.JobTemplateTemplateContainerVolumeMountArray{\n\t\t\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"empty-dir-volume\"),\n\t\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/mnt\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tVolumes: cloudrunv2.JobTemplateTemplateVolumeArray{\n\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateVolumeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"empty-dir-volume\"),\n\t\t\t\t\t\t\tEmptyDir: \u0026cloudrunv2.JobTemplateTemplateVolumeEmptyDirArgs{\n\t\t\t\t\t\t\t\tMedium: pulumi.String(\"MEMORY\"),\n\t\t\t\t\t\t\t\tSizeLimit: pulumi.String(\"128Mi\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudrunv2.Job;\nimport com.pulumi.gcp.cloudrunv2.JobArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateTemplateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Job(\"default\", JobArgs.builder()\n .name(\"cloudrun-job\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .launchStage(\"BETA\")\n .template(JobTemplateArgs.builder()\n .template(JobTemplateTemplateArgs.builder()\n .containers(JobTemplateTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/job\")\n .volumeMounts(JobTemplateTemplateContainerVolumeMountArgs.builder()\n .name(\"empty-dir-volume\")\n .mountPath(\"/mnt\")\n .build())\n .build())\n .volumes(JobTemplateTemplateVolumeArgs.builder()\n .name(\"empty-dir-volume\")\n .emptyDir(JobTemplateTemplateVolumeEmptyDirArgs.builder()\n .medium(\"MEMORY\")\n .sizeLimit(\"128Mi\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Job\n properties:\n name: cloudrun-job\n location: us-central1\n deletionProtection: false\n launchStage: BETA\n template:\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/job\n volumeMounts:\n - name: empty-dir-volume\n mountPath: /mnt\n volumes:\n - name: empty-dir-volume\n emptyDir:\n medium: MEMORY\n sizeLimit: 128Mi\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Job Run Job\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Job(\"default\", {\n name: \"cloudrun-job\",\n location: \"us-central1\",\n deletionProtection: false,\n startExecutionToken: \"start-once-created\",\n template: {\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/job\",\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Job(\"default\",\n name=\"cloudrun-job\",\n location=\"us-central1\",\n deletion_protection=False,\n start_execution_token=\"start-once-created\",\n template={\n \"template\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/job\",\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRunV2.Job(\"default\", new()\n {\n Name = \"cloudrun-job\",\n Location = \"us-central1\",\n DeletionProtection = false,\n StartExecutionToken = \"start-once-created\",\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateArgs\n {\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/job\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudrunv2.NewJob(ctx, \"default\", \u0026cloudrunv2.JobArgs{\n\t\t\tName: pulumi.String(\"cloudrun-job\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tStartExecutionToken: pulumi.String(\"start-once-created\"),\n\t\t\tTemplate: \u0026cloudrunv2.JobTemplateArgs{\n\t\t\t\tTemplate: \u0026cloudrunv2.JobTemplateTemplateArgs{\n\t\t\t\t\tContainers: cloudrunv2.JobTemplateTemplateContainerArray{\n\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/job\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudrunv2.Job;\nimport com.pulumi.gcp.cloudrunv2.JobArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateTemplateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Job(\"default\", JobArgs.builder()\n .name(\"cloudrun-job\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .startExecutionToken(\"start-once-created\")\n .template(JobTemplateArgs.builder()\n .template(JobTemplateTemplateArgs.builder()\n .containers(JobTemplateTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/job\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Job\n properties:\n name: cloudrun-job\n location: us-central1\n deletionProtection: false\n startExecutionToken: start-once-created\n template:\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/job\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nJob can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/jobs/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Job can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudrunv2/job:Job default projects/{{project}}/locations/{{location}}/jobs/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudrunv2/job:Job default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudrunv2/job:Job default {{location}}/{{name}}\n```\n\n", + "description": "A Cloud Run Job resource that references a container image which is run to completion.\n\n\nTo get more information about Job, see:\n\n* [API documentation](https://cloud.google.com/run/docs/reference/rest/v2/projects.locations.jobs)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/run/docs/)\n\n## Example Usage\n\n### Cloudrunv2 Job Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Job(\"default\", {\n name: \"cloudrun-job\",\n location: \"us-central1\",\n deletionProtection: false,\n template: {\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/job\",\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Job(\"default\",\n name=\"cloudrun-job\",\n location=\"us-central1\",\n deletion_protection=False,\n template={\n \"template\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/job\",\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRunV2.Job(\"default\", new()\n {\n Name = \"cloudrun-job\",\n Location = \"us-central1\",\n DeletionProtection = false,\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateArgs\n {\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/job\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudrunv2.NewJob(ctx, \"default\", \u0026cloudrunv2.JobArgs{\n\t\t\tName: pulumi.String(\"cloudrun-job\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTemplate: \u0026cloudrunv2.JobTemplateArgs{\n\t\t\t\tTemplate: \u0026cloudrunv2.JobTemplateTemplateArgs{\n\t\t\t\t\tContainers: cloudrunv2.JobTemplateTemplateContainerArray{\n\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/job\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudrunv2.Job;\nimport com.pulumi.gcp.cloudrunv2.JobArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateTemplateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Job(\"default\", JobArgs.builder()\n .name(\"cloudrun-job\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .template(JobTemplateArgs.builder()\n .template(JobTemplateTemplateArgs.builder()\n .containers(JobTemplateTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/job\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Job\n properties:\n name: cloudrun-job\n location: us-central1\n deletionProtection: false\n template:\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/job\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Job Limits\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Job(\"default\", {\n name: \"cloudrun-job\",\n location: \"us-central1\",\n deletionProtection: false,\n template: {\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/job\",\n resources: {\n limits: {\n cpu: \"2\",\n memory: \"1024Mi\",\n },\n },\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Job(\"default\",\n name=\"cloudrun-job\",\n location=\"us-central1\",\n deletion_protection=False,\n template={\n \"template\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/job\",\n \"resources\": {\n \"limits\": {\n \"cpu\": \"2\",\n \"memory\": \"1024Mi\",\n },\n },\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRunV2.Job(\"default\", new()\n {\n Name = \"cloudrun-job\",\n Location = \"us-central1\",\n DeletionProtection = false,\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateArgs\n {\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/job\",\n Resources = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerResourcesArgs\n {\n Limits = \n {\n { \"cpu\", \"2\" },\n { \"memory\", \"1024Mi\" },\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudrunv2.NewJob(ctx, \"default\", \u0026cloudrunv2.JobArgs{\n\t\t\tName: pulumi.String(\"cloudrun-job\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTemplate: \u0026cloudrunv2.JobTemplateArgs{\n\t\t\t\tTemplate: \u0026cloudrunv2.JobTemplateTemplateArgs{\n\t\t\t\t\tContainers: cloudrunv2.JobTemplateTemplateContainerArray{\n\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/job\"),\n\t\t\t\t\t\t\tResources: \u0026cloudrunv2.JobTemplateTemplateContainerResourcesArgs{\n\t\t\t\t\t\t\t\tLimits: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\t\"cpu\": pulumi.String(\"2\"),\n\t\t\t\t\t\t\t\t\t\"memory\": pulumi.String(\"1024Mi\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudrunv2.Job;\nimport com.pulumi.gcp.cloudrunv2.JobArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateTemplateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Job(\"default\", JobArgs.builder()\n .name(\"cloudrun-job\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .template(JobTemplateArgs.builder()\n .template(JobTemplateTemplateArgs.builder()\n .containers(JobTemplateTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/job\")\n .resources(JobTemplateTemplateContainerResourcesArgs.builder()\n .limits(Map.ofEntries(\n Map.entry(\"cpu\", \"2\"),\n Map.entry(\"memory\", \"1024Mi\")\n ))\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Job\n properties:\n name: cloudrun-job\n location: us-central1\n deletionProtection: false\n template:\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/job\n resources:\n limits:\n cpu: '2'\n memory: 1024Mi\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Job Sql\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"secret\",\n replication: {\n auto: {},\n },\n});\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"cloudrun-sql\",\n region: \"us-central1\",\n databaseVersion: \"MYSQL_5_7\",\n settings: {\n tier: \"db-f1-micro\",\n },\n deletionProtection: true,\n});\nconst _default = new gcp.cloudrunv2.Job(\"default\", {\n name: \"cloudrun-job\",\n location: \"us-central1\",\n deletionProtection: false,\n template: {\n template: {\n volumes: [{\n name: \"cloudsql\",\n cloudSqlInstance: {\n instances: [instance.connectionName],\n },\n }],\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/job\",\n envs: [\n {\n name: \"FOO\",\n value: \"bar\",\n },\n {\n name: \"latestdclsecret\",\n valueSource: {\n secretKeyRef: {\n secret: secret.secretId,\n version: \"1\",\n },\n },\n },\n ],\n volumeMounts: [{\n name: \"cloudsql\",\n mountPath: \"/cloudsql\",\n }],\n }],\n },\n },\n});\nconst project = gcp.organizations.getProject({});\nconst secret_version_data = new gcp.secretmanager.SecretVersion(\"secret-version-data\", {\n secret: secret.name,\n secretData: \"secret-data\",\n});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:${project.number}-compute@developer.gserviceaccount.com`),\n}, {\n dependsOn: [secret],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"secret\",\n replication={\n \"auto\": {},\n })\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"cloudrun-sql\",\n region=\"us-central1\",\n database_version=\"MYSQL_5_7\",\n settings={\n \"tier\": \"db-f1-micro\",\n },\n deletion_protection=True)\ndefault = gcp.cloudrunv2.Job(\"default\",\n name=\"cloudrun-job\",\n location=\"us-central1\",\n deletion_protection=False,\n template={\n \"template\": {\n \"volumes\": [{\n \"name\": \"cloudsql\",\n \"cloud_sql_instance\": {\n \"instances\": [instance.connection_name],\n },\n }],\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/job\",\n \"envs\": [\n {\n \"name\": \"FOO\",\n \"value\": \"bar\",\n },\n {\n \"name\": \"latestdclsecret\",\n \"value_source\": {\n \"secret_key_ref\": {\n \"secret\": secret.secret_id,\n \"version\": \"1\",\n },\n },\n },\n ],\n \"volume_mounts\": [{\n \"name\": \"cloudsql\",\n \"mount_path\": \"/cloudsql\",\n }],\n }],\n },\n })\nproject = gcp.organizations.get_project()\nsecret_version_data = gcp.secretmanager.SecretVersion(\"secret-version-data\",\n secret=secret.name,\n secret_data=\"secret-data\")\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:{project.number}-compute@developer.gserviceaccount.com\",\n opts = pulumi.ResourceOptions(depends_on=[secret]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"cloudrun-sql\",\n Region = \"us-central1\",\n DatabaseVersion = \"MYSQL_5_7\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n },\n DeletionProtection = true,\n });\n\n var @default = new Gcp.CloudRunV2.Job(\"default\", new()\n {\n Name = \"cloudrun-job\",\n Location = \"us-central1\",\n DeletionProtection = false,\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateArgs\n {\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateArgs\n {\n Volumes = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateVolumeArgs\n {\n Name = \"cloudsql\",\n CloudSqlInstance = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateVolumeCloudSqlInstanceArgs\n {\n Instances = new[]\n {\n instance.ConnectionName,\n },\n },\n },\n },\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/job\",\n Envs = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerEnvArgs\n {\n Name = \"FOO\",\n Value = \"bar\",\n },\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerEnvArgs\n {\n Name = \"latestdclsecret\",\n ValueSource = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerEnvValueSourceArgs\n {\n SecretKeyRef = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerEnvValueSourceSecretKeyRefArgs\n {\n Secret = secret.SecretId,\n Version = \"1\",\n },\n },\n },\n },\n VolumeMounts = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerVolumeMountArgs\n {\n Name = \"cloudsql\",\n MountPath = \"/cloudsql\",\n },\n },\n },\n },\n },\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var secret_version_data = new Gcp.SecretManager.SecretVersion(\"secret-version-data\", new()\n {\n Secret = secret.Name,\n SecretData = \"secret-data\",\n });\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:{project.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secret,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\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-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\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: \u0026secretmanager.SecretReplicationAutoArgs{},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-sql\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_5_7\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrunv2.NewJob(ctx, \"default\", \u0026cloudrunv2.JobArgs{\n\t\t\tName: pulumi.String(\"cloudrun-job\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTemplate: \u0026cloudrunv2.JobTemplateArgs{\n\t\t\t\tTemplate: \u0026cloudrunv2.JobTemplateTemplateArgs{\n\t\t\t\t\tVolumes: cloudrunv2.JobTemplateTemplateVolumeArray{\n\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateVolumeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"cloudsql\"),\n\t\t\t\t\t\t\tCloudSqlInstance: \u0026cloudrunv2.JobTemplateTemplateVolumeCloudSqlInstanceArgs{\n\t\t\t\t\t\t\t\tInstances: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tinstance.ConnectionName,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tContainers: cloudrunv2.JobTemplateTemplateContainerArray{\n\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/job\"),\n\t\t\t\t\t\t\tEnvs: cloudrunv2.JobTemplateTemplateContainerEnvArray{\n\t\t\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerEnvArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"FOO\"),\n\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"bar\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerEnvArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"latestdclsecret\"),\n\t\t\t\t\t\t\t\t\tValueSource: \u0026cloudrunv2.JobTemplateTemplateContainerEnvValueSourceArgs{\n\t\t\t\t\t\t\t\t\t\tSecretKeyRef: \u0026cloudrunv2.JobTemplateTemplateContainerEnvValueSourceSecretKeyRefArgs{\n\t\t\t\t\t\t\t\t\t\t\tSecret: secret.SecretId,\n\t\t\t\t\t\t\t\t\t\t\tVersion: pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tVolumeMounts: cloudrunv2.JobTemplateTemplateContainerVolumeMountArray{\n\t\t\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"cloudsql\"),\n\t\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/cloudsql\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"secret-version-data\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.Name,\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:%v-compute@developer.gserviceaccount.com\", project.Number),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecret,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.cloudrunv2.Job;\nimport com.pulumi.gcp.cloudrunv2.JobArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateTemplateArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var secret = new Secret(\"secret\", SecretArgs.builder()\n .secretId(\"secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"cloudrun-sql\")\n .region(\"us-central1\")\n .databaseVersion(\"MYSQL_5_7\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var default_ = new Job(\"default\", JobArgs.builder()\n .name(\"cloudrun-job\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .template(JobTemplateArgs.builder()\n .template(JobTemplateTemplateArgs.builder()\n .volumes(JobTemplateTemplateVolumeArgs.builder()\n .name(\"cloudsql\")\n .cloudSqlInstance(JobTemplateTemplateVolumeCloudSqlInstanceArgs.builder()\n .instances(instance.connectionName())\n .build())\n .build())\n .containers(JobTemplateTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/job\")\n .envs( \n JobTemplateTemplateContainerEnvArgs.builder()\n .name(\"FOO\")\n .value(\"bar\")\n .build(),\n JobTemplateTemplateContainerEnvArgs.builder()\n .name(\"latestdclsecret\")\n .valueSource(JobTemplateTemplateContainerEnvValueSourceArgs.builder()\n .secretKeyRef(JobTemplateTemplateContainerEnvValueSourceSecretKeyRefArgs.builder()\n .secret(secret.secretId())\n .version(\"1\")\n .build())\n .build())\n .build())\n .volumeMounts(JobTemplateTemplateContainerVolumeMountArgs.builder()\n .name(\"cloudsql\")\n .mountPath(\"/cloudsql\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var secret_version_data = new SecretVersion(\"secret-version-data\", SecretVersionArgs.builder()\n .secret(secret.name())\n .secretData(\"secret-data\")\n .build());\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:%s-compute@developer.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build(), CustomResourceOptions.builder()\n .dependsOn(secret)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Job\n properties:\n name: cloudrun-job\n location: us-central1\n deletionProtection: false\n template:\n template:\n volumes:\n - name: cloudsql\n cloudSqlInstance:\n instances:\n - ${instance.connectionName}\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/job\n envs:\n - name: FOO\n value: bar\n - name: latestdclsecret\n valueSource:\n secretKeyRef:\n secret: ${secret.secretId}\n version: '1'\n volumeMounts:\n - name: cloudsql\n mountPath: /cloudsql\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret\n replication:\n auto: {}\n secret-version-data:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${secret.name}\n secretData: secret-data\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${secret.id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:${project.number}-compute@developer.gserviceaccount.com\n options:\n dependson:\n - ${secret}\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: cloudrun-sql\n region: us-central1\n databaseVersion: MYSQL_5_7\n settings:\n tier: db-f1-micro\n deletionProtection: 'true'\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Job Vpcaccess\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst customTestNetwork = new gcp.compute.Network(\"custom_test\", {\n name: \"run-network\",\n autoCreateSubnetworks: false,\n});\nconst customTest = new gcp.compute.Subnetwork(\"custom_test\", {\n name: \"run-subnetwork\",\n ipCidrRange: \"10.2.0.0/28\",\n region: \"us-central1\",\n network: customTestNetwork.id,\n});\nconst connector = new gcp.vpcaccess.Connector(\"connector\", {\n name: \"run-vpc\",\n subnet: {\n name: customTest.name,\n },\n machineType: \"e2-standard-4\",\n minInstances: 2,\n maxInstances: 3,\n region: \"us-central1\",\n});\nconst _default = new gcp.cloudrunv2.Job(\"default\", {\n name: \"cloudrun-job\",\n location: \"us-central1\",\n deletionProtection: false,\n template: {\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/job\",\n }],\n vpcAccess: {\n connector: connector.id,\n egress: \"ALL_TRAFFIC\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_test_network = gcp.compute.Network(\"custom_test\",\n name=\"run-network\",\n auto_create_subnetworks=False)\ncustom_test = gcp.compute.Subnetwork(\"custom_test\",\n name=\"run-subnetwork\",\n ip_cidr_range=\"10.2.0.0/28\",\n region=\"us-central1\",\n network=custom_test_network.id)\nconnector = gcp.vpcaccess.Connector(\"connector\",\n name=\"run-vpc\",\n subnet={\n \"name\": custom_test.name,\n },\n machine_type=\"e2-standard-4\",\n min_instances=2,\n max_instances=3,\n region=\"us-central1\")\ndefault = gcp.cloudrunv2.Job(\"default\",\n name=\"cloudrun-job\",\n location=\"us-central1\",\n deletion_protection=False,\n template={\n \"template\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/job\",\n }],\n \"vpc_access\": {\n \"connector\": connector.id,\n \"egress\": \"ALL_TRAFFIC\",\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var customTestNetwork = new Gcp.Compute.Network(\"custom_test\", new()\n {\n Name = \"run-network\",\n AutoCreateSubnetworks = false,\n });\n\n var customTest = new Gcp.Compute.Subnetwork(\"custom_test\", new()\n {\n Name = \"run-subnetwork\",\n IpCidrRange = \"10.2.0.0/28\",\n Region = \"us-central1\",\n Network = customTestNetwork.Id,\n });\n\n var connector = new Gcp.VpcAccess.Connector(\"connector\", new()\n {\n Name = \"run-vpc\",\n Subnet = new Gcp.VpcAccess.Inputs.ConnectorSubnetArgs\n {\n Name = customTest.Name,\n },\n MachineType = \"e2-standard-4\",\n MinInstances = 2,\n MaxInstances = 3,\n Region = \"us-central1\",\n });\n\n var @default = new Gcp.CloudRunV2.Job(\"default\", new()\n {\n Name = \"cloudrun-job\",\n Location = \"us-central1\",\n DeletionProtection = false,\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateArgs\n {\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/job\",\n },\n },\n VpcAccess = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateVpcAccessArgs\n {\n Connector = connector.Id,\n Egress = \"ALL_TRAFFIC\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vpcaccess\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcustomTestNetwork, err := compute.NewNetwork(ctx, \"custom_test\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"run-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcustomTest, err := compute.NewSubnetwork(ctx, \"custom_test\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"run-subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.2.0.0/28\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: customTestNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tconnector, err := vpcaccess.NewConnector(ctx, \"connector\", \u0026vpcaccess.ConnectorArgs{\n\t\t\tName: pulumi.String(\"run-vpc\"),\n\t\t\tSubnet: \u0026vpcaccess.ConnectorSubnetArgs{\n\t\t\t\tName: customTest.Name,\n\t\t\t},\n\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\tMinInstances: pulumi.Int(2),\n\t\t\tMaxInstances: pulumi.Int(3),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrunv2.NewJob(ctx, \"default\", \u0026cloudrunv2.JobArgs{\n\t\t\tName: pulumi.String(\"cloudrun-job\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTemplate: \u0026cloudrunv2.JobTemplateArgs{\n\t\t\t\tTemplate: \u0026cloudrunv2.JobTemplateTemplateArgs{\n\t\t\t\t\tContainers: cloudrunv2.JobTemplateTemplateContainerArray{\n\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/job\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tVpcAccess: \u0026cloudrunv2.JobTemplateTemplateVpcAccessArgs{\n\t\t\t\t\t\tConnector: connector.ID(),\n\t\t\t\t\t\tEgress: pulumi.String(\"ALL_TRAFFIC\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.vpcaccess.Connector;\nimport com.pulumi.gcp.vpcaccess.ConnectorArgs;\nimport com.pulumi.gcp.vpcaccess.inputs.ConnectorSubnetArgs;\nimport com.pulumi.gcp.cloudrunv2.Job;\nimport com.pulumi.gcp.cloudrunv2.JobArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateTemplateVpcAccessArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var customTestNetwork = new Network(\"customTestNetwork\", NetworkArgs.builder()\n .name(\"run-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var customTest = new Subnetwork(\"customTest\", SubnetworkArgs.builder()\n .name(\"run-subnetwork\")\n .ipCidrRange(\"10.2.0.0/28\")\n .region(\"us-central1\")\n .network(customTestNetwork.id())\n .build());\n\n var connector = new Connector(\"connector\", ConnectorArgs.builder()\n .name(\"run-vpc\")\n .subnet(ConnectorSubnetArgs.builder()\n .name(customTest.name())\n .build())\n .machineType(\"e2-standard-4\")\n .minInstances(2)\n .maxInstances(3)\n .region(\"us-central1\")\n .build());\n\n var default_ = new Job(\"default\", JobArgs.builder()\n .name(\"cloudrun-job\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .template(JobTemplateArgs.builder()\n .template(JobTemplateTemplateArgs.builder()\n .containers(JobTemplateTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/job\")\n .build())\n .vpcAccess(JobTemplateTemplateVpcAccessArgs.builder()\n .connector(connector.id())\n .egress(\"ALL_TRAFFIC\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Job\n properties:\n name: cloudrun-job\n location: us-central1\n deletionProtection: false\n template:\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/job\n vpcAccess:\n connector: ${connector.id}\n egress: ALL_TRAFFIC\n connector:\n type: gcp:vpcaccess:Connector\n properties:\n name: run-vpc\n subnet:\n name: ${customTest.name}\n machineType: e2-standard-4\n minInstances: 2\n maxInstances: 3\n region: us-central1\n customTest:\n type: gcp:compute:Subnetwork\n name: custom_test\n properties:\n name: run-subnetwork\n ipCidrRange: 10.2.0.0/28\n region: us-central1\n network: ${customTestNetwork.id}\n customTestNetwork:\n type: gcp:compute:Network\n name: custom_test\n properties:\n name: run-network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Job Directvpc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Job(\"default\", {\n name: \"cloudrun-job\",\n location: \"us-central1\",\n deletionProtection: false,\n launchStage: \"GA\",\n template: {\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/job\",\n }],\n vpcAccess: {\n networkInterfaces: [{\n network: \"default\",\n subnetwork: \"default\",\n tags: [\n \"tag1\",\n \"tag2\",\n \"tag3\",\n ],\n }],\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Job(\"default\",\n name=\"cloudrun-job\",\n location=\"us-central1\",\n deletion_protection=False,\n launch_stage=\"GA\",\n template={\n \"template\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/job\",\n }],\n \"vpc_access\": {\n \"network_interfaces\": [{\n \"network\": \"default\",\n \"subnetwork\": \"default\",\n \"tags\": [\n \"tag1\",\n \"tag2\",\n \"tag3\",\n ],\n }],\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRunV2.Job(\"default\", new()\n {\n Name = \"cloudrun-job\",\n Location = \"us-central1\",\n DeletionProtection = false,\n LaunchStage = \"GA\",\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateArgs\n {\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/job\",\n },\n },\n VpcAccess = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateVpcAccessArgs\n {\n NetworkInterfaces = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateVpcAccessNetworkInterfaceArgs\n {\n Network = \"default\",\n Subnetwork = \"default\",\n Tags = new[]\n {\n \"tag1\",\n \"tag2\",\n \"tag3\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudrunv2.NewJob(ctx, \"default\", \u0026cloudrunv2.JobArgs{\n\t\t\tName: pulumi.String(\"cloudrun-job\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tLaunchStage: pulumi.String(\"GA\"),\n\t\t\tTemplate: \u0026cloudrunv2.JobTemplateArgs{\n\t\t\t\tTemplate: \u0026cloudrunv2.JobTemplateTemplateArgs{\n\t\t\t\t\tContainers: cloudrunv2.JobTemplateTemplateContainerArray{\n\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/job\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tVpcAccess: \u0026cloudrunv2.JobTemplateTemplateVpcAccessArgs{\n\t\t\t\t\t\tNetworkInterfaces: cloudrunv2.JobTemplateTemplateVpcAccessNetworkInterfaceArray{\n\t\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateVpcAccessNetworkInterfaceArgs{\n\t\t\t\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t\t\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t\t\t\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"tag1\"),\n\t\t\t\t\t\t\t\t\tpulumi.String(\"tag2\"),\n\t\t\t\t\t\t\t\t\tpulumi.String(\"tag3\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudrunv2.Job;\nimport com.pulumi.gcp.cloudrunv2.JobArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateTemplateVpcAccessArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Job(\"default\", JobArgs.builder()\n .name(\"cloudrun-job\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .launchStage(\"GA\")\n .template(JobTemplateArgs.builder()\n .template(JobTemplateTemplateArgs.builder()\n .containers(JobTemplateTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/job\")\n .build())\n .vpcAccess(JobTemplateTemplateVpcAccessArgs.builder()\n .networkInterfaces(JobTemplateTemplateVpcAccessNetworkInterfaceArgs.builder()\n .network(\"default\")\n .subnetwork(\"default\")\n .tags( \n \"tag1\",\n \"tag2\",\n \"tag3\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Job\n properties:\n name: cloudrun-job\n location: us-central1\n deletionProtection: false\n launchStage: GA\n template:\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/job\n vpcAccess:\n networkInterfaces:\n - network: default\n subnetwork: default\n tags:\n - tag1\n - tag2\n - tag3\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Job Secret\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"secret\",\n replication: {\n auto: {},\n },\n});\nconst secret_version_data = new gcp.secretmanager.SecretVersion(\"secret-version-data\", {\n secret: secret.name,\n secretData: \"secret-data\",\n});\nconst project = gcp.organizations.getProject({});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:${project.number}-compute@developer.gserviceaccount.com`),\n}, {\n dependsOn: [secret],\n});\nconst _default = new gcp.cloudrunv2.Job(\"default\", {\n name: \"cloudrun-job\",\n location: \"us-central1\",\n deletionProtection: false,\n template: {\n template: {\n volumes: [{\n name: \"a-volume\",\n secret: {\n secret: secret.secretId,\n defaultMode: 292,\n items: [{\n version: \"1\",\n path: \"my-secret\",\n mode: 256,\n }],\n },\n }],\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/job\",\n volumeMounts: [{\n name: \"a-volume\",\n mountPath: \"/secrets\",\n }],\n }],\n },\n },\n}, {\n dependsOn: [\n secret_version_data,\n secret_access,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"secret\",\n replication={\n \"auto\": {},\n })\nsecret_version_data = gcp.secretmanager.SecretVersion(\"secret-version-data\",\n secret=secret.name,\n secret_data=\"secret-data\")\nproject = gcp.organizations.get_project()\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:{project.number}-compute@developer.gserviceaccount.com\",\n opts = pulumi.ResourceOptions(depends_on=[secret]))\ndefault = gcp.cloudrunv2.Job(\"default\",\n name=\"cloudrun-job\",\n location=\"us-central1\",\n deletion_protection=False,\n template={\n \"template\": {\n \"volumes\": [{\n \"name\": \"a-volume\",\n \"secret\": {\n \"secret\": secret.secret_id,\n \"default_mode\": 292,\n \"items\": [{\n \"version\": \"1\",\n \"path\": \"my-secret\",\n \"mode\": 256,\n }],\n },\n }],\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/job\",\n \"volume_mounts\": [{\n \"name\": \"a-volume\",\n \"mount_path\": \"/secrets\",\n }],\n }],\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[\n secret_version_data,\n secret_access,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var secret_version_data = new Gcp.SecretManager.SecretVersion(\"secret-version-data\", new()\n {\n Secret = secret.Name,\n SecretData = \"secret-data\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:{project.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secret,\n },\n });\n\n var @default = new Gcp.CloudRunV2.Job(\"default\", new()\n {\n Name = \"cloudrun-job\",\n Location = \"us-central1\",\n DeletionProtection = false,\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateArgs\n {\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateArgs\n {\n Volumes = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateVolumeArgs\n {\n Name = \"a-volume\",\n Secret = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateVolumeSecretArgs\n {\n Secret = secret.SecretId,\n DefaultMode = 292,\n Items = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateVolumeSecretItemArgs\n {\n Version = \"1\",\n Path = \"my-secret\",\n Mode = 256,\n },\n },\n },\n },\n },\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/job\",\n VolumeMounts = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerVolumeMountArgs\n {\n Name = \"a-volume\",\n MountPath = \"/secrets\",\n },\n },\n },\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secret_version_data,\n secret_access,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: \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, \"secret-version-data\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.Name,\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:%v-compute@developer.gserviceaccount.com\", project.Number),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecret,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrunv2.NewJob(ctx, \"default\", \u0026cloudrunv2.JobArgs{\n\t\t\tName: pulumi.String(\"cloudrun-job\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTemplate: \u0026cloudrunv2.JobTemplateArgs{\n\t\t\t\tTemplate: \u0026cloudrunv2.JobTemplateTemplateArgs{\n\t\t\t\t\tVolumes: cloudrunv2.JobTemplateTemplateVolumeArray{\n\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateVolumeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"a-volume\"),\n\t\t\t\t\t\t\tSecret: \u0026cloudrunv2.JobTemplateTemplateVolumeSecretArgs{\n\t\t\t\t\t\t\t\tSecret: secret.SecretId,\n\t\t\t\t\t\t\t\tDefaultMode: pulumi.Int(292),\n\t\t\t\t\t\t\t\tItems: cloudrunv2.JobTemplateTemplateVolumeSecretItemArray{\n\t\t\t\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateVolumeSecretItemArgs{\n\t\t\t\t\t\t\t\t\t\tVersion: pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\t\t\tPath: pulumi.String(\"my-secret\"),\n\t\t\t\t\t\t\t\t\t\tMode: pulumi.Int(256),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tContainers: cloudrunv2.JobTemplateTemplateContainerArray{\n\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/job\"),\n\t\t\t\t\t\t\tVolumeMounts: cloudrunv2.JobTemplateTemplateContainerVolumeMountArray{\n\t\t\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"a-volume\"),\n\t\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/secrets\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecret_version_data,\n\t\t\tsecret_access,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.gcp.cloudrunv2.Job;\nimport com.pulumi.gcp.cloudrunv2.JobArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateTemplateArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var secret = new Secret(\"secret\", SecretArgs.builder()\n .secretId(\"secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var secret_version_data = new SecretVersion(\"secret-version-data\", SecretVersionArgs.builder()\n .secret(secret.name())\n .secretData(\"secret-data\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:%s-compute@developer.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build(), CustomResourceOptions.builder()\n .dependsOn(secret)\n .build());\n\n var default_ = new Job(\"default\", JobArgs.builder()\n .name(\"cloudrun-job\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .template(JobTemplateArgs.builder()\n .template(JobTemplateTemplateArgs.builder()\n .volumes(JobTemplateTemplateVolumeArgs.builder()\n .name(\"a-volume\")\n .secret(JobTemplateTemplateVolumeSecretArgs.builder()\n .secret(secret.secretId())\n .defaultMode(292)\n .items(JobTemplateTemplateVolumeSecretItemArgs.builder()\n .version(\"1\")\n .path(\"my-secret\")\n .mode(256)\n .build())\n .build())\n .build())\n .containers(JobTemplateTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/job\")\n .volumeMounts(JobTemplateTemplateContainerVolumeMountArgs.builder()\n .name(\"a-volume\")\n .mountPath(\"/secrets\")\n .build())\n .build())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n secret_version_data,\n secret_access)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Job\n properties:\n name: cloudrun-job\n location: us-central1\n deletionProtection: false\n template:\n template:\n volumes:\n - name: a-volume\n secret:\n secret: ${secret.secretId}\n defaultMode: 292\n items:\n - version: '1'\n path: my-secret\n mode: 256\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/job\n volumeMounts:\n - name: a-volume\n mountPath: /secrets\n options:\n dependson:\n - ${[\"secret-version-data\"]}\n - ${[\"secret-access\"]}\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret\n replication:\n auto: {}\n secret-version-data:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${secret.name}\n secretData: secret-data\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${secret.id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:${project.number}-compute@developer.gserviceaccount.com\n options:\n dependson:\n - ${secret}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Job Emptydir\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Job(\"default\", {\n name: \"cloudrun-job\",\n location: \"us-central1\",\n deletionProtection: false,\n launchStage: \"BETA\",\n template: {\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/job\",\n volumeMounts: [{\n name: \"empty-dir-volume\",\n mountPath: \"/mnt\",\n }],\n }],\n volumes: [{\n name: \"empty-dir-volume\",\n emptyDir: {\n medium: \"MEMORY\",\n sizeLimit: \"128Mi\",\n },\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Job(\"default\",\n name=\"cloudrun-job\",\n location=\"us-central1\",\n deletion_protection=False,\n launch_stage=\"BETA\",\n template={\n \"template\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/job\",\n \"volume_mounts\": [{\n \"name\": \"empty-dir-volume\",\n \"mount_path\": \"/mnt\",\n }],\n }],\n \"volumes\": [{\n \"name\": \"empty-dir-volume\",\n \"empty_dir\": {\n \"medium\": \"MEMORY\",\n \"size_limit\": \"128Mi\",\n },\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRunV2.Job(\"default\", new()\n {\n Name = \"cloudrun-job\",\n Location = \"us-central1\",\n DeletionProtection = false,\n LaunchStage = \"BETA\",\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateArgs\n {\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/job\",\n VolumeMounts = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerVolumeMountArgs\n {\n Name = \"empty-dir-volume\",\n MountPath = \"/mnt\",\n },\n },\n },\n },\n Volumes = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateVolumeArgs\n {\n Name = \"empty-dir-volume\",\n EmptyDir = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateVolumeEmptyDirArgs\n {\n Medium = \"MEMORY\",\n SizeLimit = \"128Mi\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudrunv2.NewJob(ctx, \"default\", \u0026cloudrunv2.JobArgs{\n\t\t\tName: pulumi.String(\"cloudrun-job\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tLaunchStage: pulumi.String(\"BETA\"),\n\t\t\tTemplate: \u0026cloudrunv2.JobTemplateArgs{\n\t\t\t\tTemplate: \u0026cloudrunv2.JobTemplateTemplateArgs{\n\t\t\t\t\tContainers: cloudrunv2.JobTemplateTemplateContainerArray{\n\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/job\"),\n\t\t\t\t\t\t\tVolumeMounts: cloudrunv2.JobTemplateTemplateContainerVolumeMountArray{\n\t\t\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"empty-dir-volume\"),\n\t\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/mnt\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tVolumes: cloudrunv2.JobTemplateTemplateVolumeArray{\n\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateVolumeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"empty-dir-volume\"),\n\t\t\t\t\t\t\tEmptyDir: \u0026cloudrunv2.JobTemplateTemplateVolumeEmptyDirArgs{\n\t\t\t\t\t\t\t\tMedium: pulumi.String(\"MEMORY\"),\n\t\t\t\t\t\t\t\tSizeLimit: pulumi.String(\"128Mi\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudrunv2.Job;\nimport com.pulumi.gcp.cloudrunv2.JobArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateTemplateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Job(\"default\", JobArgs.builder()\n .name(\"cloudrun-job\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .launchStage(\"BETA\")\n .template(JobTemplateArgs.builder()\n .template(JobTemplateTemplateArgs.builder()\n .containers(JobTemplateTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/job\")\n .volumeMounts(JobTemplateTemplateContainerVolumeMountArgs.builder()\n .name(\"empty-dir-volume\")\n .mountPath(\"/mnt\")\n .build())\n .build())\n .volumes(JobTemplateTemplateVolumeArgs.builder()\n .name(\"empty-dir-volume\")\n .emptyDir(JobTemplateTemplateVolumeEmptyDirArgs.builder()\n .medium(\"MEMORY\")\n .sizeLimit(\"128Mi\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Job\n properties:\n name: cloudrun-job\n location: us-central1\n deletionProtection: false\n launchStage: BETA\n template:\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/job\n volumeMounts:\n - name: empty-dir-volume\n mountPath: /mnt\n volumes:\n - name: empty-dir-volume\n emptyDir:\n medium: MEMORY\n sizeLimit: 128Mi\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Job Run Job\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Job(\"default\", {\n name: \"cloudrun-job\",\n location: \"us-central1\",\n deletionProtection: false,\n startExecutionToken: \"start-once-created\",\n template: {\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/job\",\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Job(\"default\",\n name=\"cloudrun-job\",\n location=\"us-central1\",\n deletion_protection=False,\n start_execution_token=\"start-once-created\",\n template={\n \"template\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/job\",\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRunV2.Job(\"default\", new()\n {\n Name = \"cloudrun-job\",\n Location = \"us-central1\",\n DeletionProtection = false,\n StartExecutionToken = \"start-once-created\",\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateArgs\n {\n Template = new Gcp.CloudRunV2.Inputs.JobTemplateTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.JobTemplateTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/job\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudrunv2.NewJob(ctx, \"default\", \u0026cloudrunv2.JobArgs{\n\t\t\tName: pulumi.String(\"cloudrun-job\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tStartExecutionToken: pulumi.String(\"start-once-created\"),\n\t\t\tTemplate: \u0026cloudrunv2.JobTemplateArgs{\n\t\t\t\tTemplate: \u0026cloudrunv2.JobTemplateTemplateArgs{\n\t\t\t\t\tContainers: cloudrunv2.JobTemplateTemplateContainerArray{\n\t\t\t\t\t\t\u0026cloudrunv2.JobTemplateTemplateContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/job\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudrunv2.Job;\nimport com.pulumi.gcp.cloudrunv2.JobArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.JobTemplateTemplateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Job(\"default\", JobArgs.builder()\n .name(\"cloudrun-job\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .startExecutionToken(\"start-once-created\")\n .template(JobTemplateArgs.builder()\n .template(JobTemplateTemplateArgs.builder()\n .containers(JobTemplateTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/job\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Job\n properties:\n name: cloudrun-job\n location: us-central1\n deletionProtection: false\n startExecutionToken: start-once-created\n template:\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/job\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nJob can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/jobs/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Job can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudrunv2/job:Job default projects/{{project}}/locations/{{location}}/jobs/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudrunv2/job:Job default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudrunv2/job:Job default {{location}}/{{name}}\n```\n\n", "properties": { "annotations": { "type": "object", @@ -144239,7 +144239,7 @@ } }, "gcp:cloudrunv2/service:Service": { - "description": "Service acts as a top-level container that manages a set of configurations and revision templates which implement a network service. Service exists to provide a singular abstraction which can be access controlled, reasoned about, and which encapsulates software lifecycle decisions such as rollout policy and team resource ownership.\n\n\nTo get more information about Service, see:\n\n* [API documentation](https://cloud.google.com/run/docs/reference/rest/v2/projects.locations.services)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/run/docs/)\n\n## Example Usage\n\n### Cloudrunv2 Service Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n deletionProtection: false,\n ingress: \"INGRESS_TRAFFIC_ALL\",\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n deletion_protection=False,\n ingress=\"INGRESS_TRAFFIC_ALL\",\n template={\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n DeletionProtection = false,\n Ingress = \"INGRESS_TRAFFIC_ALL\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tIngress: pulumi.String(\"INGRESS_TRAFFIC_ALL\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .ingress(\"INGRESS_TRAFFIC_ALL\")\n .template(ServiceTemplateArgs.builder()\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n deletionProtection: false\n ingress: INGRESS_TRAFFIC_ALL\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Limits\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n deletionProtection: false,\n ingress: \"INGRESS_TRAFFIC_ALL\",\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n resources: {\n limits: {\n cpu: \"2\",\n memory: \"1024Mi\",\n },\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n deletion_protection=False,\n ingress=\"INGRESS_TRAFFIC_ALL\",\n template={\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"resources\": {\n \"limits\": {\n \"cpu\": \"2\",\n \"memory\": \"1024Mi\",\n },\n },\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n DeletionProtection = false,\n Ingress = \"INGRESS_TRAFFIC_ALL\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n Resources = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerResourcesArgs\n {\n Limits = \n {\n { \"cpu\", \"2\" },\n { \"memory\", \"1024Mi\" },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tIngress: pulumi.String(\"INGRESS_TRAFFIC_ALL\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\tResources: \u0026cloudrunv2.ServiceTemplateContainerResourcesArgs{\n\t\t\t\t\t\t\tLimits: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\"cpu\": pulumi.String(\"2\"),\n\t\t\t\t\t\t\t\t\"memory\": pulumi.String(\"1024Mi\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .ingress(\"INGRESS_TRAFFIC_ALL\")\n .template(ServiceTemplateArgs.builder()\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .resources(ServiceTemplateContainerResourcesArgs.builder()\n .limits(Map.ofEntries(\n Map.entry(\"cpu\", \"2\"),\n Map.entry(\"memory\", \"1024Mi\")\n ))\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n deletionProtection: false\n ingress: INGRESS_TRAFFIC_ALL\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n resources:\n limits:\n cpu: '2'\n memory: 1024Mi\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Sql\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"secret-1\",\n replication: {\n auto: {},\n },\n});\nconst secret_version_data = new gcp.secretmanager.SecretVersion(\"secret-version-data\", {\n secret: secret.name,\n secretData: \"secret-data\",\n});\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"cloudrun-sql\",\n region: \"us-central1\",\n databaseVersion: \"MYSQL_5_7\",\n settings: {\n tier: \"db-f1-micro\",\n },\n deletionProtection: true,\n});\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n deletionProtection: false,\n ingress: \"INGRESS_TRAFFIC_ALL\",\n template: {\n scaling: {\n maxInstanceCount: 2,\n },\n volumes: [{\n name: \"cloudsql\",\n cloudSqlInstance: {\n instances: [instance.connectionName],\n },\n }],\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n envs: [\n {\n name: \"FOO\",\n value: \"bar\",\n },\n {\n name: \"SECRET_ENV_VAR\",\n valueSource: {\n secretKeyRef: {\n secret: secret.secretId,\n version: \"1\",\n },\n },\n },\n ],\n volumeMounts: [{\n name: \"cloudsql\",\n mountPath: \"/cloudsql\",\n }],\n }],\n },\n traffics: [{\n type: \"TRAFFIC_TARGET_ALLOCATION_TYPE_LATEST\",\n percent: 100,\n }],\n}, {\n dependsOn: [secret_version_data],\n});\nconst project = gcp.organizations.getProject({});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:${project.number}-compute@developer.gserviceaccount.com`),\n}, {\n dependsOn: [secret],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"secret-1\",\n replication={\n \"auto\": {},\n })\nsecret_version_data = gcp.secretmanager.SecretVersion(\"secret-version-data\",\n secret=secret.name,\n secret_data=\"secret-data\")\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"cloudrun-sql\",\n region=\"us-central1\",\n database_version=\"MYSQL_5_7\",\n settings={\n \"tier\": \"db-f1-micro\",\n },\n deletion_protection=True)\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n deletion_protection=False,\n ingress=\"INGRESS_TRAFFIC_ALL\",\n template={\n \"scaling\": {\n \"max_instance_count\": 2,\n },\n \"volumes\": [{\n \"name\": \"cloudsql\",\n \"cloud_sql_instance\": {\n \"instances\": [instance.connection_name],\n },\n }],\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"envs\": [\n {\n \"name\": \"FOO\",\n \"value\": \"bar\",\n },\n {\n \"name\": \"SECRET_ENV_VAR\",\n \"value_source\": {\n \"secret_key_ref\": {\n \"secret\": secret.secret_id,\n \"version\": \"1\",\n },\n },\n },\n ],\n \"volume_mounts\": [{\n \"name\": \"cloudsql\",\n \"mount_path\": \"/cloudsql\",\n }],\n }],\n },\n traffics=[{\n \"type\": \"TRAFFIC_TARGET_ALLOCATION_TYPE_LATEST\",\n \"percent\": 100,\n }],\n opts = pulumi.ResourceOptions(depends_on=[secret_version_data]))\nproject = gcp.organizations.get_project()\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:{project.number}-compute@developer.gserviceaccount.com\",\n opts = pulumi.ResourceOptions(depends_on=[secret]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"secret-1\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var secret_version_data = new Gcp.SecretManager.SecretVersion(\"secret-version-data\", new()\n {\n Secret = secret.Name,\n SecretData = \"secret-data\",\n });\n\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"cloudrun-sql\",\n Region = \"us-central1\",\n DatabaseVersion = \"MYSQL_5_7\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n },\n DeletionProtection = true,\n });\n\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n DeletionProtection = false,\n Ingress = \"INGRESS_TRAFFIC_ALL\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Scaling = new Gcp.CloudRunV2.Inputs.ServiceTemplateScalingArgs\n {\n MaxInstanceCount = 2,\n },\n Volumes = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeArgs\n {\n Name = \"cloudsql\",\n CloudSqlInstance = new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeCloudSqlInstanceArgs\n {\n Instances = new[]\n {\n instance.ConnectionName,\n },\n },\n },\n },\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n Envs = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerEnvArgs\n {\n Name = \"FOO\",\n Value = \"bar\",\n },\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerEnvArgs\n {\n Name = \"SECRET_ENV_VAR\",\n ValueSource = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerEnvValueSourceArgs\n {\n SecretKeyRef = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerEnvValueSourceSecretKeyRefArgs\n {\n Secret = secret.SecretId,\n Version = \"1\",\n },\n },\n },\n },\n VolumeMounts = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerVolumeMountArgs\n {\n Name = \"cloudsql\",\n MountPath = \"/cloudsql\",\n },\n },\n },\n },\n },\n Traffics = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTrafficArgs\n {\n Type = \"TRAFFIC_TARGET_ALLOCATION_TYPE_LATEST\",\n Percent = 100,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secret_version_data,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:{project.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secret,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\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-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\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-1\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"secret-version-data\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.Name,\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-sql\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_5_7\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tIngress: pulumi.String(\"INGRESS_TRAFFIC_ALL\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tScaling: \u0026cloudrunv2.ServiceTemplateScalingArgs{\n\t\t\t\t\tMaxInstanceCount: pulumi.Int(2),\n\t\t\t\t},\n\t\t\t\tVolumes: cloudrunv2.ServiceTemplateVolumeArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVolumeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"cloudsql\"),\n\t\t\t\t\t\tCloudSqlInstance: \u0026cloudrunv2.ServiceTemplateVolumeCloudSqlInstanceArgs{\n\t\t\t\t\t\t\tInstances: pulumi.StringArray{\n\t\t\t\t\t\t\t\tinstance.ConnectionName,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\tEnvs: cloudrunv2.ServiceTemplateContainerEnvArray{\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerEnvArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"FOO\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"bar\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerEnvArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"SECRET_ENV_VAR\"),\n\t\t\t\t\t\t\t\tValueSource: \u0026cloudrunv2.ServiceTemplateContainerEnvValueSourceArgs{\n\t\t\t\t\t\t\t\t\tSecretKeyRef: \u0026cloudrunv2.ServiceTemplateContainerEnvValueSourceSecretKeyRefArgs{\n\t\t\t\t\t\t\t\t\t\tSecret: secret.SecretId,\n\t\t\t\t\t\t\t\t\t\tVersion: pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tVolumeMounts: cloudrunv2.ServiceTemplateContainerVolumeMountArray{\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"cloudsql\"),\n\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/cloudsql\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTraffics: cloudrunv2.ServiceTrafficArray{\n\t\t\t\t\u0026cloudrunv2.ServiceTrafficArgs{\n\t\t\t\t\tType: pulumi.String(\"TRAFFIC_TARGET_ALLOCATION_TYPE_LATEST\"),\n\t\t\t\t\tPercent: pulumi.Int(100),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecret_version_data,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:%v-compute@developer.gserviceaccount.com\", project.Number),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecret,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateScalingArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTrafficArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var secret = new Secret(\"secret\", SecretArgs.builder()\n .secretId(\"secret-1\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var secret_version_data = new SecretVersion(\"secret-version-data\", SecretVersionArgs.builder()\n .secret(secret.name())\n .secretData(\"secret-data\")\n .build());\n\n var instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"cloudrun-sql\")\n .region(\"us-central1\")\n .databaseVersion(\"MYSQL_5_7\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .ingress(\"INGRESS_TRAFFIC_ALL\")\n .template(ServiceTemplateArgs.builder()\n .scaling(ServiceTemplateScalingArgs.builder()\n .maxInstanceCount(2)\n .build())\n .volumes(ServiceTemplateVolumeArgs.builder()\n .name(\"cloudsql\")\n .cloudSqlInstance(ServiceTemplateVolumeCloudSqlInstanceArgs.builder()\n .instances(instance.connectionName())\n .build())\n .build())\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .envs( \n ServiceTemplateContainerEnvArgs.builder()\n .name(\"FOO\")\n .value(\"bar\")\n .build(),\n ServiceTemplateContainerEnvArgs.builder()\n .name(\"SECRET_ENV_VAR\")\n .valueSource(ServiceTemplateContainerEnvValueSourceArgs.builder()\n .secretKeyRef(ServiceTemplateContainerEnvValueSourceSecretKeyRefArgs.builder()\n .secret(secret.secretId())\n .version(\"1\")\n .build())\n .build())\n .build())\n .volumeMounts(ServiceTemplateContainerVolumeMountArgs.builder()\n .name(\"cloudsql\")\n .mountPath(\"/cloudsql\")\n .build())\n .build())\n .build())\n .traffics(ServiceTrafficArgs.builder()\n .type(\"TRAFFIC_TARGET_ALLOCATION_TYPE_LATEST\")\n .percent(100)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(secret_version_data)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:%s-compute@developer.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build(), CustomResourceOptions.builder()\n .dependsOn(secret)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n deletionProtection: false\n ingress: INGRESS_TRAFFIC_ALL\n template:\n scaling:\n maxInstanceCount: 2\n volumes:\n - name: cloudsql\n cloudSqlInstance:\n instances:\n - ${instance.connectionName}\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n envs:\n - name: FOO\n value: bar\n - name: SECRET_ENV_VAR\n valueSource:\n secretKeyRef:\n secret: ${secret.secretId}\n version: '1'\n volumeMounts:\n - name: cloudsql\n mountPath: /cloudsql\n traffics:\n - type: TRAFFIC_TARGET_ALLOCATION_TYPE_LATEST\n percent: 100\n options:\n dependson:\n - ${[\"secret-version-data\"]}\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret-1\n replication:\n auto: {}\n secret-version-data:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${secret.name}\n secretData: secret-data\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${secret.id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:${project.number}-compute@developer.gserviceaccount.com\n options:\n dependson:\n - ${secret}\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: cloudrun-sql\n region: us-central1\n databaseVersion: MYSQL_5_7\n settings:\n tier: db-f1-micro\n deletionProtection: 'true'\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Vpcaccess\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst customTestNetwork = new gcp.compute.Network(\"custom_test\", {\n name: \"run-network\",\n autoCreateSubnetworks: false,\n});\nconst customTest = new gcp.compute.Subnetwork(\"custom_test\", {\n name: \"run-subnetwork\",\n ipCidrRange: \"10.2.0.0/28\",\n region: \"us-central1\",\n network: customTestNetwork.id,\n});\nconst connector = new gcp.vpcaccess.Connector(\"connector\", {\n name: \"run-vpc\",\n subnet: {\n name: customTest.name,\n },\n machineType: \"e2-standard-4\",\n minInstances: 2,\n maxInstances: 3,\n region: \"us-central1\",\n});\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n deletionProtection: false,\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n vpcAccess: {\n connector: connector.id,\n egress: \"ALL_TRAFFIC\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_test_network = gcp.compute.Network(\"custom_test\",\n name=\"run-network\",\n auto_create_subnetworks=False)\ncustom_test = gcp.compute.Subnetwork(\"custom_test\",\n name=\"run-subnetwork\",\n ip_cidr_range=\"10.2.0.0/28\",\n region=\"us-central1\",\n network=custom_test_network.id)\nconnector = gcp.vpcaccess.Connector(\"connector\",\n name=\"run-vpc\",\n subnet={\n \"name\": custom_test.name,\n },\n machine_type=\"e2-standard-4\",\n min_instances=2,\n max_instances=3,\n region=\"us-central1\")\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n deletion_protection=False,\n template={\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n \"vpc_access\": {\n \"connector\": connector.id,\n \"egress\": \"ALL_TRAFFIC\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var customTestNetwork = new Gcp.Compute.Network(\"custom_test\", new()\n {\n Name = \"run-network\",\n AutoCreateSubnetworks = false,\n });\n\n var customTest = new Gcp.Compute.Subnetwork(\"custom_test\", new()\n {\n Name = \"run-subnetwork\",\n IpCidrRange = \"10.2.0.0/28\",\n Region = \"us-central1\",\n Network = customTestNetwork.Id,\n });\n\n var connector = new Gcp.VpcAccess.Connector(\"connector\", new()\n {\n Name = \"run-vpc\",\n Subnet = new Gcp.VpcAccess.Inputs.ConnectorSubnetArgs\n {\n Name = customTest.Name,\n },\n MachineType = \"e2-standard-4\",\n MinInstances = 2,\n MaxInstances = 3,\n Region = \"us-central1\",\n });\n\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n DeletionProtection = false,\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n VpcAccess = new Gcp.CloudRunV2.Inputs.ServiceTemplateVpcAccessArgs\n {\n Connector = connector.Id,\n Egress = \"ALL_TRAFFIC\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vpcaccess\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcustomTestNetwork, err := compute.NewNetwork(ctx, \"custom_test\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"run-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcustomTest, err := compute.NewSubnetwork(ctx, \"custom_test\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"run-subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.2.0.0/28\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: customTestNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tconnector, err := vpcaccess.NewConnector(ctx, \"connector\", \u0026vpcaccess.ConnectorArgs{\n\t\t\tName: pulumi.String(\"run-vpc\"),\n\t\t\tSubnet: \u0026vpcaccess.ConnectorSubnetArgs{\n\t\t\t\tName: customTest.Name,\n\t\t\t},\n\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\tMinInstances: pulumi.Int(2),\n\t\t\tMaxInstances: pulumi.Int(3),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tVpcAccess: \u0026cloudrunv2.ServiceTemplateVpcAccessArgs{\n\t\t\t\t\tConnector: connector.ID(),\n\t\t\t\t\tEgress: pulumi.String(\"ALL_TRAFFIC\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.vpcaccess.Connector;\nimport com.pulumi.gcp.vpcaccess.ConnectorArgs;\nimport com.pulumi.gcp.vpcaccess.inputs.ConnectorSubnetArgs;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateVpcAccessArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var customTestNetwork = new Network(\"customTestNetwork\", NetworkArgs.builder()\n .name(\"run-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var customTest = new Subnetwork(\"customTest\", SubnetworkArgs.builder()\n .name(\"run-subnetwork\")\n .ipCidrRange(\"10.2.0.0/28\")\n .region(\"us-central1\")\n .network(customTestNetwork.id())\n .build());\n\n var connector = new Connector(\"connector\", ConnectorArgs.builder()\n .name(\"run-vpc\")\n .subnet(ConnectorSubnetArgs.builder()\n .name(customTest.name())\n .build())\n .machineType(\"e2-standard-4\")\n .minInstances(2)\n .maxInstances(3)\n .region(\"us-central1\")\n .build());\n\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .template(ServiceTemplateArgs.builder()\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .vpcAccess(ServiceTemplateVpcAccessArgs.builder()\n .connector(connector.id())\n .egress(\"ALL_TRAFFIC\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n deletionProtection: false\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n vpcAccess:\n connector: ${connector.id}\n egress: ALL_TRAFFIC\n connector:\n type: gcp:vpcaccess:Connector\n properties:\n name: run-vpc\n subnet:\n name: ${customTest.name}\n machineType: e2-standard-4\n minInstances: 2\n maxInstances: 3\n region: us-central1\n customTest:\n type: gcp:compute:Subnetwork\n name: custom_test\n properties:\n name: run-subnetwork\n ipCidrRange: 10.2.0.0/28\n region: us-central1\n network: ${customTestNetwork.id}\n customTestNetwork:\n type: gcp:compute:Network\n name: custom_test\n properties:\n name: run-network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Directvpc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n deletionProtection: false,\n launchStage: \"GA\",\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n vpcAccess: {\n networkInterfaces: [{\n network: \"default\",\n subnetwork: \"default\",\n tags: [\n \"tag1\",\n \"tag2\",\n \"tag3\",\n ],\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n deletion_protection=False,\n launch_stage=\"GA\",\n template={\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n \"vpc_access\": {\n \"network_interfaces\": [{\n \"network\": \"default\",\n \"subnetwork\": \"default\",\n \"tags\": [\n \"tag1\",\n \"tag2\",\n \"tag3\",\n ],\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n DeletionProtection = false,\n LaunchStage = \"GA\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n VpcAccess = new Gcp.CloudRunV2.Inputs.ServiceTemplateVpcAccessArgs\n {\n NetworkInterfaces = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVpcAccessNetworkInterfaceArgs\n {\n Network = \"default\",\n Subnetwork = \"default\",\n Tags = new[]\n {\n \"tag1\",\n \"tag2\",\n \"tag3\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tLaunchStage: pulumi.String(\"GA\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tVpcAccess: \u0026cloudrunv2.ServiceTemplateVpcAccessArgs{\n\t\t\t\t\tNetworkInterfaces: cloudrunv2.ServiceTemplateVpcAccessNetworkInterfaceArray{\n\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVpcAccessNetworkInterfaceArgs{\n\t\t\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t\t\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"tag1\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"tag2\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"tag3\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateVpcAccessArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .launchStage(\"GA\")\n .template(ServiceTemplateArgs.builder()\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .vpcAccess(ServiceTemplateVpcAccessArgs.builder()\n .networkInterfaces(ServiceTemplateVpcAccessNetworkInterfaceArgs.builder()\n .network(\"default\")\n .subnetwork(\"default\")\n .tags( \n \"tag1\",\n \"tag2\",\n \"tag3\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n deletionProtection: false\n launchStage: GA\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n vpcAccess:\n networkInterfaces:\n - network: default\n subnetwork: default\n tags:\n - tag1\n - tag2\n - tag3\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Probes\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n deletionProtection: false,\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n startupProbe: {\n initialDelaySeconds: 0,\n timeoutSeconds: 1,\n periodSeconds: 3,\n failureThreshold: 1,\n tcpSocket: {\n port: 8080,\n },\n },\n livenessProbe: {\n httpGet: {\n path: \"/\",\n },\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n deletion_protection=False,\n template={\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"startup_probe\": {\n \"initial_delay_seconds\": 0,\n \"timeout_seconds\": 1,\n \"period_seconds\": 3,\n \"failure_threshold\": 1,\n \"tcp_socket\": {\n \"port\": 8080,\n },\n },\n \"liveness_probe\": {\n \"http_get\": {\n \"path\": \"/\",\n },\n },\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n DeletionProtection = false,\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n StartupProbe = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerStartupProbeArgs\n {\n InitialDelaySeconds = 0,\n TimeoutSeconds = 1,\n PeriodSeconds = 3,\n FailureThreshold = 1,\n TcpSocket = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerStartupProbeTcpSocketArgs\n {\n Port = 8080,\n },\n },\n LivenessProbe = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerLivenessProbeArgs\n {\n HttpGet = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerLivenessProbeHttpGetArgs\n {\n Path = \"/\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\tStartupProbe: \u0026cloudrunv2.ServiceTemplateContainerStartupProbeArgs{\n\t\t\t\t\t\t\tInitialDelaySeconds: pulumi.Int(0),\n\t\t\t\t\t\t\tTimeoutSeconds: pulumi.Int(1),\n\t\t\t\t\t\t\tPeriodSeconds: pulumi.Int(3),\n\t\t\t\t\t\t\tFailureThreshold: pulumi.Int(1),\n\t\t\t\t\t\t\tTcpSocket: \u0026cloudrunv2.ServiceTemplateContainerStartupProbeTcpSocketArgs{\n\t\t\t\t\t\t\t\tPort: pulumi.Int(8080),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tLivenessProbe: \u0026cloudrunv2.ServiceTemplateContainerLivenessProbeArgs{\n\t\t\t\t\t\t\tHttpGet: \u0026cloudrunv2.ServiceTemplateContainerLivenessProbeHttpGetArgs{\n\t\t\t\t\t\t\t\tPath: pulumi.String(\"/\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .template(ServiceTemplateArgs.builder()\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .startupProbe(ServiceTemplateContainerStartupProbeArgs.builder()\n .initialDelaySeconds(0)\n .timeoutSeconds(1)\n .periodSeconds(3)\n .failureThreshold(1)\n .tcpSocket(ServiceTemplateContainerStartupProbeTcpSocketArgs.builder()\n .port(8080)\n .build())\n .build())\n .livenessProbe(ServiceTemplateContainerLivenessProbeArgs.builder()\n .httpGet(ServiceTemplateContainerLivenessProbeHttpGetArgs.builder()\n .path(\"/\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n deletionProtection: false\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n startupProbe:\n initialDelaySeconds: 0\n timeoutSeconds: 1\n periodSeconds: 3\n failureThreshold: 1\n tcpSocket:\n port: 8080\n livenessProbe:\n httpGet:\n path: /\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Secret\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"secret-1\",\n replication: {\n auto: {},\n },\n});\nconst secret_version_data = new gcp.secretmanager.SecretVersion(\"secret-version-data\", {\n secret: secret.name,\n secretData: \"secret-data\",\n});\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n deletionProtection: false,\n ingress: \"INGRESS_TRAFFIC_ALL\",\n template: {\n volumes: [{\n name: \"a-volume\",\n secret: {\n secret: secret.secretId,\n defaultMode: 292,\n items: [{\n version: \"1\",\n path: \"my-secret\",\n }],\n },\n }],\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n volumeMounts: [{\n name: \"a-volume\",\n mountPath: \"/secrets\",\n }],\n }],\n },\n}, {\n dependsOn: [secret_version_data],\n});\nconst project = gcp.organizations.getProject({});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:${project.number}-compute@developer.gserviceaccount.com`),\n}, {\n dependsOn: [secret],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"secret-1\",\n replication={\n \"auto\": {},\n })\nsecret_version_data = gcp.secretmanager.SecretVersion(\"secret-version-data\",\n secret=secret.name,\n secret_data=\"secret-data\")\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n deletion_protection=False,\n ingress=\"INGRESS_TRAFFIC_ALL\",\n template={\n \"volumes\": [{\n \"name\": \"a-volume\",\n \"secret\": {\n \"secret\": secret.secret_id,\n \"default_mode\": 292,\n \"items\": [{\n \"version\": \"1\",\n \"path\": \"my-secret\",\n }],\n },\n }],\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"volume_mounts\": [{\n \"name\": \"a-volume\",\n \"mount_path\": \"/secrets\",\n }],\n }],\n },\n opts = pulumi.ResourceOptions(depends_on=[secret_version_data]))\nproject = gcp.organizations.get_project()\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:{project.number}-compute@developer.gserviceaccount.com\",\n opts = pulumi.ResourceOptions(depends_on=[secret]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"secret-1\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var secret_version_data = new Gcp.SecretManager.SecretVersion(\"secret-version-data\", new()\n {\n Secret = secret.Name,\n SecretData = \"secret-data\",\n });\n\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n DeletionProtection = false,\n Ingress = \"INGRESS_TRAFFIC_ALL\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Volumes = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeArgs\n {\n Name = \"a-volume\",\n Secret = new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeSecretArgs\n {\n Secret = secret.SecretId,\n DefaultMode = 292,\n Items = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeSecretItemArgs\n {\n Version = \"1\",\n Path = \"my-secret\",\n },\n },\n },\n },\n },\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n VolumeMounts = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerVolumeMountArgs\n {\n Name = \"a-volume\",\n MountPath = \"/secrets\",\n },\n },\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secret_version_data,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:{project.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secret,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-1\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"secret-version-data\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.Name,\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tIngress: pulumi.String(\"INGRESS_TRAFFIC_ALL\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tVolumes: cloudrunv2.ServiceTemplateVolumeArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVolumeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"a-volume\"),\n\t\t\t\t\t\tSecret: \u0026cloudrunv2.ServiceTemplateVolumeSecretArgs{\n\t\t\t\t\t\t\tSecret: secret.SecretId,\n\t\t\t\t\t\t\tDefaultMode: pulumi.Int(292),\n\t\t\t\t\t\t\tItems: cloudrunv2.ServiceTemplateVolumeSecretItemArray{\n\t\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVolumeSecretItemArgs{\n\t\t\t\t\t\t\t\t\tVersion: pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\t\tPath: pulumi.String(\"my-secret\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\tVolumeMounts: cloudrunv2.ServiceTemplateContainerVolumeMountArray{\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"a-volume\"),\n\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/secrets\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecret_version_data,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:%v-compute@developer.gserviceaccount.com\", project.Number),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecret,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var secret = new Secret(\"secret\", SecretArgs.builder()\n .secretId(\"secret-1\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var secret_version_data = new SecretVersion(\"secret-version-data\", SecretVersionArgs.builder()\n .secret(secret.name())\n .secretData(\"secret-data\")\n .build());\n\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .ingress(\"INGRESS_TRAFFIC_ALL\")\n .template(ServiceTemplateArgs.builder()\n .volumes(ServiceTemplateVolumeArgs.builder()\n .name(\"a-volume\")\n .secret(ServiceTemplateVolumeSecretArgs.builder()\n .secret(secret.secretId())\n .defaultMode(292)\n .items(ServiceTemplateVolumeSecretItemArgs.builder()\n .version(\"1\")\n .path(\"my-secret\")\n .build())\n .build())\n .build())\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .volumeMounts(ServiceTemplateContainerVolumeMountArgs.builder()\n .name(\"a-volume\")\n .mountPath(\"/secrets\")\n .build())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(secret_version_data)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:%s-compute@developer.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build(), CustomResourceOptions.builder()\n .dependsOn(secret)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n deletionProtection: false\n ingress: INGRESS_TRAFFIC_ALL\n template:\n volumes:\n - name: a-volume\n secret:\n secret: ${secret.secretId}\n defaultMode: 292\n items:\n - version: '1'\n path: my-secret\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n volumeMounts:\n - name: a-volume\n mountPath: /secrets\n options:\n dependson:\n - ${[\"secret-version-data\"]}\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret-1\n replication:\n auto: {}\n secret-version-data:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${secret.name}\n secretData: secret-data\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${secret.id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:${project.number}-compute@developer.gserviceaccount.com\n options:\n dependson:\n - ${secret}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Multicontainer\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n deletionProtection: false,\n launchStage: \"BETA\",\n ingress: \"INGRESS_TRAFFIC_ALL\",\n template: {\n containers: [\n {\n name: \"hello-1\",\n ports: {\n containerPort: 8080,\n },\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n dependsOns: [\"hello-2\"],\n volumeMounts: [{\n name: \"empty-dir-volume\",\n mountPath: \"/mnt\",\n }],\n },\n {\n name: \"hello-2\",\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n envs: [{\n name: \"PORT\",\n value: \"8081\",\n }],\n startupProbe: {\n httpGet: {\n port: 8081,\n },\n },\n },\n ],\n volumes: [{\n name: \"empty-dir-volume\",\n emptyDir: {\n medium: \"MEMORY\",\n sizeLimit: \"256Mi\",\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n deletion_protection=False,\n launch_stage=\"BETA\",\n ingress=\"INGRESS_TRAFFIC_ALL\",\n template={\n \"containers\": [\n {\n \"name\": \"hello-1\",\n \"ports\": {\n \"container_port\": 8080,\n },\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"depends_ons\": [\"hello-2\"],\n \"volume_mounts\": [{\n \"name\": \"empty-dir-volume\",\n \"mount_path\": \"/mnt\",\n }],\n },\n {\n \"name\": \"hello-2\",\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"envs\": [{\n \"name\": \"PORT\",\n \"value\": \"8081\",\n }],\n \"startup_probe\": {\n \"http_get\": {\n \"port\": 8081,\n },\n },\n },\n ],\n \"volumes\": [{\n \"name\": \"empty-dir-volume\",\n \"empty_dir\": {\n \"medium\": \"MEMORY\",\n \"size_limit\": \"256Mi\",\n },\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n DeletionProtection = false,\n LaunchStage = \"BETA\",\n Ingress = \"INGRESS_TRAFFIC_ALL\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Name = \"hello-1\",\n Ports = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerPortsArgs\n {\n ContainerPort = 8080,\n },\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n DependsOns = new[]\n {\n \"hello-2\",\n },\n VolumeMounts = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerVolumeMountArgs\n {\n Name = \"empty-dir-volume\",\n MountPath = \"/mnt\",\n },\n },\n },\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Name = \"hello-2\",\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n Envs = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerEnvArgs\n {\n Name = \"PORT\",\n Value = \"8081\",\n },\n },\n StartupProbe = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerStartupProbeArgs\n {\n HttpGet = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerStartupProbeHttpGetArgs\n {\n Port = 8081,\n },\n },\n },\n },\n Volumes = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeArgs\n {\n Name = \"empty-dir-volume\",\n EmptyDir = new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeEmptyDirArgs\n {\n Medium = \"MEMORY\",\n SizeLimit = \"256Mi\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tLaunchStage: pulumi.String(\"BETA\"),\n\t\t\tIngress: pulumi.String(\"INGRESS_TRAFFIC_ALL\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tName: pulumi.String(\"hello-1\"),\n\t\t\t\t\t\tPorts: \u0026cloudrunv2.ServiceTemplateContainerPortsArgs{\n\t\t\t\t\t\t\tContainerPort: pulumi.Int(8080),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\tDependsOns: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"hello-2\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tVolumeMounts: cloudrunv2.ServiceTemplateContainerVolumeMountArray{\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"empty-dir-volume\"),\n\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/mnt\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tName: pulumi.String(\"hello-2\"),\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\tEnvs: cloudrunv2.ServiceTemplateContainerEnvArray{\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerEnvArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"PORT\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"8081\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tStartupProbe: \u0026cloudrunv2.ServiceTemplateContainerStartupProbeArgs{\n\t\t\t\t\t\t\tHttpGet: \u0026cloudrunv2.ServiceTemplateContainerStartupProbeHttpGetArgs{\n\t\t\t\t\t\t\t\tPort: pulumi.Int(8081),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tVolumes: cloudrunv2.ServiceTemplateVolumeArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVolumeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"empty-dir-volume\"),\n\t\t\t\t\t\tEmptyDir: \u0026cloudrunv2.ServiceTemplateVolumeEmptyDirArgs{\n\t\t\t\t\t\t\tMedium: pulumi.String(\"MEMORY\"),\n\t\t\t\t\t\t\tSizeLimit: pulumi.String(\"256Mi\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .launchStage(\"BETA\")\n .ingress(\"INGRESS_TRAFFIC_ALL\")\n .template(ServiceTemplateArgs.builder()\n .containers( \n ServiceTemplateContainerArgs.builder()\n .name(\"hello-1\")\n .ports(ServiceTemplateContainerPortsArgs.builder()\n .containerPort(8080)\n .build())\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .dependsOns(\"hello-2\")\n .volumeMounts(ServiceTemplateContainerVolumeMountArgs.builder()\n .name(\"empty-dir-volume\")\n .mountPath(\"/mnt\")\n .build())\n .build(),\n ServiceTemplateContainerArgs.builder()\n .name(\"hello-2\")\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .envs(ServiceTemplateContainerEnvArgs.builder()\n .name(\"PORT\")\n .value(\"8081\")\n .build())\n .startupProbe(ServiceTemplateContainerStartupProbeArgs.builder()\n .httpGet(ServiceTemplateContainerStartupProbeHttpGetArgs.builder()\n .port(8081)\n .build())\n .build())\n .build())\n .volumes(ServiceTemplateVolumeArgs.builder()\n .name(\"empty-dir-volume\")\n .emptyDir(ServiceTemplateVolumeEmptyDirArgs.builder()\n .medium(\"MEMORY\")\n .sizeLimit(\"256Mi\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n deletionProtection: false\n launchStage: BETA\n ingress: INGRESS_TRAFFIC_ALL\n template:\n containers:\n - name: hello-1\n ports:\n containerPort: 8080\n image: us-docker.pkg.dev/cloudrun/container/hello\n dependsOns:\n - hello-2\n volumeMounts:\n - name: empty-dir-volume\n mountPath: /mnt\n - name: hello-2\n image: us-docker.pkg.dev/cloudrun/container/hello\n envs:\n - name: PORT\n value: '8081'\n startupProbe:\n httpGet:\n port: 8081\n volumes:\n - name: empty-dir-volume\n emptyDir:\n medium: MEMORY\n sizeLimit: 256Mi\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Mount Gcs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultBucket = new gcp.storage.Bucket(\"default\", {\n name: \"cloudrun-service\",\n location: \"US\",\n});\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n deletionProtection: false,\n template: {\n executionEnvironment: \"EXECUTION_ENVIRONMENT_GEN2\",\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n volumeMounts: [{\n name: \"bucket\",\n mountPath: \"/var/www\",\n }],\n }],\n volumes: [{\n name: \"bucket\",\n gcs: {\n bucket: defaultBucket.name,\n readOnly: false,\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_bucket = gcp.storage.Bucket(\"default\",\n name=\"cloudrun-service\",\n location=\"US\")\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n deletion_protection=False,\n template={\n \"execution_environment\": \"EXECUTION_ENVIRONMENT_GEN2\",\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"volume_mounts\": [{\n \"name\": \"bucket\",\n \"mount_path\": \"/var/www\",\n }],\n }],\n \"volumes\": [{\n \"name\": \"bucket\",\n \"gcs\": {\n \"bucket\": default_bucket.name,\n \"read_only\": False,\n },\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultBucket = new Gcp.Storage.Bucket(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"US\",\n });\n\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n DeletionProtection = false,\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n ExecutionEnvironment = \"EXECUTION_ENVIRONMENT_GEN2\",\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n VolumeMounts = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerVolumeMountArgs\n {\n Name = \"bucket\",\n MountPath = \"/var/www\",\n },\n },\n },\n },\n Volumes = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeArgs\n {\n Name = \"bucket\",\n Gcs = new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeGcsArgs\n {\n Bucket = defaultBucket.Name,\n ReadOnly = false,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdefaultBucket, err := storage.NewBucket(ctx, \"default\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tExecutionEnvironment: pulumi.String(\"EXECUTION_ENVIRONMENT_GEN2\"),\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\tVolumeMounts: cloudrunv2.ServiceTemplateContainerVolumeMountArray{\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"bucket\"),\n\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/var/www\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tVolumes: cloudrunv2.ServiceTemplateVolumeArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVolumeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"bucket\"),\n\t\t\t\t\t\tGcs: \u0026cloudrunv2.ServiceTemplateVolumeGcsArgs{\n\t\t\t\t\t\t\tBucket: defaultBucket.Name,\n\t\t\t\t\t\t\tReadOnly: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultBucket = new Bucket(\"defaultBucket\", BucketArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"US\")\n .build());\n\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .template(ServiceTemplateArgs.builder()\n .executionEnvironment(\"EXECUTION_ENVIRONMENT_GEN2\")\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .volumeMounts(ServiceTemplateContainerVolumeMountArgs.builder()\n .name(\"bucket\")\n .mountPath(\"/var/www\")\n .build())\n .build())\n .volumes(ServiceTemplateVolumeArgs.builder()\n .name(\"bucket\")\n .gcs(ServiceTemplateVolumeGcsArgs.builder()\n .bucket(defaultBucket.name())\n .readOnly(false)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n deletionProtection: false\n template:\n executionEnvironment: EXECUTION_ENVIRONMENT_GEN2\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n volumeMounts:\n - name: bucket\n mountPath: /var/www\n volumes:\n - name: bucket\n gcs:\n bucket: ${defaultBucket.name}\n readOnly: false\n defaultBucket:\n type: gcp:storage:Bucket\n name: default\n properties:\n name: cloudrun-service\n location: US\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Mount Nfs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultInstance = new gcp.filestore.Instance(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1-b\",\n tier: \"BASIC_HDD\",\n fileShares: {\n capacityGb: 1024,\n name: \"share1\",\n },\n networks: [{\n network: \"default\",\n modes: [\"MODE_IPV4\"],\n }],\n});\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n deletionProtection: false,\n ingress: \"INGRESS_TRAFFIC_ALL\",\n template: {\n executionEnvironment: \"EXECUTION_ENVIRONMENT_GEN2\",\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello:latest\",\n volumeMounts: [{\n name: \"nfs\",\n mountPath: \"/mnt/nfs/filestore\",\n }],\n }],\n vpcAccess: {\n networkInterfaces: [{\n network: \"default\",\n subnetwork: \"default\",\n }],\n },\n volumes: [{\n name: \"nfs\",\n nfs: {\n server: defaultInstance.networks.apply(networks =\u003e networks[0].ipAddresses?.[0]),\n path: \"/share1\",\n readOnly: false,\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_instance = gcp.filestore.Instance(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1-b\",\n tier=\"BASIC_HDD\",\n file_shares={\n \"capacity_gb\": 1024,\n \"name\": \"share1\",\n },\n networks=[{\n \"network\": \"default\",\n \"modes\": [\"MODE_IPV4\"],\n }])\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n deletion_protection=False,\n ingress=\"INGRESS_TRAFFIC_ALL\",\n template={\n \"execution_environment\": \"EXECUTION_ENVIRONMENT_GEN2\",\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello:latest\",\n \"volume_mounts\": [{\n \"name\": \"nfs\",\n \"mount_path\": \"/mnt/nfs/filestore\",\n }],\n }],\n \"vpc_access\": {\n \"network_interfaces\": [{\n \"network\": \"default\",\n \"subnetwork\": \"default\",\n }],\n },\n \"volumes\": [{\n \"name\": \"nfs\",\n \"nfs\": {\n \"server\": default_instance.networks[0].ip_addresses[0],\n \"path\": \"/share1\",\n \"read_only\": False,\n },\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultInstance = new Gcp.Filestore.Instance(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1-b\",\n Tier = \"BASIC_HDD\",\n FileShares = new Gcp.Filestore.Inputs.InstanceFileSharesArgs\n {\n CapacityGb = 1024,\n Name = \"share1\",\n },\n Networks = new[]\n {\n new Gcp.Filestore.Inputs.InstanceNetworkArgs\n {\n Network = \"default\",\n Modes = new[]\n {\n \"MODE_IPV4\",\n },\n },\n },\n });\n\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n DeletionProtection = false,\n Ingress = \"INGRESS_TRAFFIC_ALL\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n ExecutionEnvironment = \"EXECUTION_ENVIRONMENT_GEN2\",\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello:latest\",\n VolumeMounts = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerVolumeMountArgs\n {\n Name = \"nfs\",\n MountPath = \"/mnt/nfs/filestore\",\n },\n },\n },\n },\n VpcAccess = new Gcp.CloudRunV2.Inputs.ServiceTemplateVpcAccessArgs\n {\n NetworkInterfaces = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVpcAccessNetworkInterfaceArgs\n {\n Network = \"default\",\n Subnetwork = \"default\",\n },\n },\n },\n Volumes = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeArgs\n {\n Name = \"nfs\",\n Nfs = new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeNfsArgs\n {\n Server = defaultInstance.Networks.Apply(networks =\u003e networks[0].IpAddresses[0]),\n Path = \"/share1\",\n ReadOnly = false,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/filestore\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdefaultInstance, err := filestore.NewInstance(ctx, \"default\", \u0026filestore.InstanceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1-b\"),\n\t\t\tTier: pulumi.String(\"BASIC_HDD\"),\n\t\t\tFileShares: \u0026filestore.InstanceFileSharesArgs{\n\t\t\t\tCapacityGb: pulumi.Int(1024),\n\t\t\t\tName: pulumi.String(\"share1\"),\n\t\t\t},\n\t\t\tNetworks: filestore.InstanceNetworkArray{\n\t\t\t\t\u0026filestore.InstanceNetworkArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t\tModes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"MODE_IPV4\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tIngress: pulumi.String(\"INGRESS_TRAFFIC_ALL\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tExecutionEnvironment: pulumi.String(\"EXECUTION_ENVIRONMENT_GEN2\"),\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello:latest\"),\n\t\t\t\t\t\tVolumeMounts: cloudrunv2.ServiceTemplateContainerVolumeMountArray{\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"nfs\"),\n\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/mnt/nfs/filestore\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tVpcAccess: \u0026cloudrunv2.ServiceTemplateVpcAccessArgs{\n\t\t\t\t\tNetworkInterfaces: cloudrunv2.ServiceTemplateVpcAccessNetworkInterfaceArray{\n\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVpcAccessNetworkInterfaceArgs{\n\t\t\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tVolumes: cloudrunv2.ServiceTemplateVolumeArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVolumeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"nfs\"),\n\t\t\t\t\t\tNfs: \u0026cloudrunv2.ServiceTemplateVolumeNfsArgs{\n\t\t\t\t\t\t\tServer: defaultInstance.Networks.ApplyT(func(networks []filestore.InstanceNetwork) (*string, error) {\n\t\t\t\t\t\t\t\treturn \u0026networks[0].IpAddresses[0], nil\n\t\t\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t\t\t\tPath: pulumi.String(\"/share1\"),\n\t\t\t\t\t\t\tReadOnly: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.filestore.Instance;\nimport com.pulumi.gcp.filestore.InstanceArgs;\nimport com.pulumi.gcp.filestore.inputs.InstanceFileSharesArgs;\nimport com.pulumi.gcp.filestore.inputs.InstanceNetworkArgs;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateVpcAccessArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultInstance = new Instance(\"defaultInstance\", InstanceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1-b\")\n .tier(\"BASIC_HDD\")\n .fileShares(InstanceFileSharesArgs.builder()\n .capacityGb(1024)\n .name(\"share1\")\n .build())\n .networks(InstanceNetworkArgs.builder()\n .network(\"default\")\n .modes(\"MODE_IPV4\")\n .build())\n .build());\n\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .ingress(\"INGRESS_TRAFFIC_ALL\")\n .template(ServiceTemplateArgs.builder()\n .executionEnvironment(\"EXECUTION_ENVIRONMENT_GEN2\")\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello:latest\")\n .volumeMounts(ServiceTemplateContainerVolumeMountArgs.builder()\n .name(\"nfs\")\n .mountPath(\"/mnt/nfs/filestore\")\n .build())\n .build())\n .vpcAccess(ServiceTemplateVpcAccessArgs.builder()\n .networkInterfaces(ServiceTemplateVpcAccessNetworkInterfaceArgs.builder()\n .network(\"default\")\n .subnetwork(\"default\")\n .build())\n .build())\n .volumes(ServiceTemplateVolumeArgs.builder()\n .name(\"nfs\")\n .nfs(ServiceTemplateVolumeNfsArgs.builder()\n .server(defaultInstance.networks().applyValue(networks -\u003e networks[0].ipAddresses()[0]))\n .path(\"/share1\")\n .readOnly(false)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n deletionProtection: false\n ingress: INGRESS_TRAFFIC_ALL\n template:\n executionEnvironment: EXECUTION_ENVIRONMENT_GEN2\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello:latest\n volumeMounts:\n - name: nfs\n mountPath: /mnt/nfs/filestore\n vpcAccess:\n networkInterfaces:\n - network: default\n subnetwork: default\n volumes:\n - name: nfs\n nfs:\n server: ${defaultInstance.networks[0].ipAddresses[0]}\n path: /share1\n readOnly: false\n defaultInstance:\n type: gcp:filestore:Instance\n name: default\n properties:\n name: cloudrun-service\n location: us-central1-b\n tier: BASIC_HDD\n fileShares:\n capacityGb: 1024\n name: share1\n networks:\n - network: default\n modes:\n - MODE_IPV4\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Mesh\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\nconst mesh = new gcp.networkservices.Mesh(\"mesh\", {name: \"network-services-mesh\"});\nconst waitForMesh = new time.index.Sleep(\"wait_for_mesh\", {createDuration: \"1m\"}, {\n dependsOn: [mesh],\n});\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n deletionProtection: false,\n location: \"us-central1\",\n launchStage: \"BETA\",\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n serviceMesh: {\n mesh: mesh.id,\n },\n },\n}, {\n dependsOn: [waitForMesh],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\nmesh = gcp.networkservices.Mesh(\"mesh\", name=\"network-services-mesh\")\nwait_for_mesh = time.index.Sleep(\"wait_for_mesh\", create_duration=1m,\nopts = pulumi.ResourceOptions(depends_on=[mesh]))\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n deletion_protection=False,\n location=\"us-central1\",\n launch_stage=\"BETA\",\n template={\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n \"service_mesh\": {\n \"mesh\": mesh.id,\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[wait_for_mesh]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Time = Pulumi.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var mesh = new Gcp.NetworkServices.Mesh(\"mesh\", new()\n {\n Name = \"network-services-mesh\",\n });\n\n var waitForMesh = new Time.Index.Sleep(\"wait_for_mesh\", new()\n {\n CreateDuration = \"1m\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n mesh,\n },\n });\n\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n DeletionProtection = false,\n Location = \"us-central1\",\n LaunchStage = \"BETA\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n ServiceMesh = new Gcp.CloudRunV2.Inputs.ServiceTemplateServiceMeshArgs\n {\n Mesh = mesh.Id,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n waitForMesh,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmesh, err := networkservices.NewMesh(ctx, \"mesh\", \u0026networkservices.MeshArgs{\n\t\t\tName: pulumi.String(\"network-services-mesh\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\twaitForMesh, err := time.NewSleep(ctx, \"wait_for_mesh\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"1m\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tmesh,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLaunchStage: pulumi.String(\"BETA\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tServiceMesh: \u0026cloudrunv2.ServiceTemplateServiceMeshArgs{\n\t\t\t\t\tMesh: mesh.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twaitForMesh,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networkservices.Mesh;\nimport com.pulumi.gcp.networkservices.MeshArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateServiceMeshArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var mesh = new Mesh(\"mesh\", MeshArgs.builder()\n .name(\"network-services-mesh\")\n .build());\n\n var waitForMesh = new Sleep(\"waitForMesh\", SleepArgs.builder()\n .createDuration(\"1m\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(mesh)\n .build());\n\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .deletionProtection(false)\n .location(\"us-central1\")\n .launchStage(\"BETA\")\n .template(ServiceTemplateArgs.builder()\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .serviceMesh(ServiceTemplateServiceMeshArgs.builder()\n .mesh(mesh.id())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(waitForMesh)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n deletionProtection: false\n location: us-central1\n launchStage: BETA\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n serviceMesh:\n mesh: ${mesh.id}\n options:\n dependson:\n - ${waitForMesh}\n waitForMesh:\n type: time:sleep\n name: wait_for_mesh\n properties:\n createDuration: 1m\n options:\n dependson:\n - ${mesh}\n mesh:\n type: gcp:networkservices:Mesh\n properties:\n name: network-services-mesh\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nService can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/services/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Service can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudrunv2/service:Service default projects/{{project}}/locations/{{location}}/services/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudrunv2/service:Service default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudrunv2/service:Service default {{location}}/{{name}}\n```\n\n", + "description": "Service acts as a top-level container that manages a set of configurations and revision templates which implement a network service. Service exists to provide a singular abstraction which can be access controlled, reasoned about, and which encapsulates software lifecycle decisions such as rollout policy and team resource ownership.\n\n\nTo get more information about Service, see:\n\n* [API documentation](https://cloud.google.com/run/docs/reference/rest/v2/projects.locations.services)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/run/docs/)\n\n## Example Usage\n\n### Cloudrunv2 Service Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n deletionProtection: false,\n ingress: \"INGRESS_TRAFFIC_ALL\",\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n deletion_protection=False,\n ingress=\"INGRESS_TRAFFIC_ALL\",\n template={\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n DeletionProtection = false,\n Ingress = \"INGRESS_TRAFFIC_ALL\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tIngress: pulumi.String(\"INGRESS_TRAFFIC_ALL\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .ingress(\"INGRESS_TRAFFIC_ALL\")\n .template(ServiceTemplateArgs.builder()\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n deletionProtection: false\n ingress: INGRESS_TRAFFIC_ALL\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Limits\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n deletionProtection: false,\n ingress: \"INGRESS_TRAFFIC_ALL\",\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n resources: {\n limits: {\n cpu: \"2\",\n memory: \"1024Mi\",\n },\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n deletion_protection=False,\n ingress=\"INGRESS_TRAFFIC_ALL\",\n template={\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"resources\": {\n \"limits\": {\n \"cpu\": \"2\",\n \"memory\": \"1024Mi\",\n },\n },\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n DeletionProtection = false,\n Ingress = \"INGRESS_TRAFFIC_ALL\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n Resources = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerResourcesArgs\n {\n Limits = \n {\n { \"cpu\", \"2\" },\n { \"memory\", \"1024Mi\" },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tIngress: pulumi.String(\"INGRESS_TRAFFIC_ALL\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\tResources: \u0026cloudrunv2.ServiceTemplateContainerResourcesArgs{\n\t\t\t\t\t\t\tLimits: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\"cpu\": pulumi.String(\"2\"),\n\t\t\t\t\t\t\t\t\"memory\": pulumi.String(\"1024Mi\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .ingress(\"INGRESS_TRAFFIC_ALL\")\n .template(ServiceTemplateArgs.builder()\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .resources(ServiceTemplateContainerResourcesArgs.builder()\n .limits(Map.ofEntries(\n Map.entry(\"cpu\", \"2\"),\n Map.entry(\"memory\", \"1024Mi\")\n ))\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n deletionProtection: false\n ingress: INGRESS_TRAFFIC_ALL\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n resources:\n limits:\n cpu: '2'\n memory: 1024Mi\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Sql\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"secret-1\",\n replication: {\n auto: {},\n },\n});\nconst secret_version_data = new gcp.secretmanager.SecretVersion(\"secret-version-data\", {\n secret: secret.name,\n secretData: \"secret-data\",\n});\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"cloudrun-sql\",\n region: \"us-central1\",\n databaseVersion: \"MYSQL_5_7\",\n settings: {\n tier: \"db-f1-micro\",\n },\n deletionProtection: true,\n});\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n deletionProtection: false,\n ingress: \"INGRESS_TRAFFIC_ALL\",\n template: {\n scaling: {\n maxInstanceCount: 2,\n },\n volumes: [{\n name: \"cloudsql\",\n cloudSqlInstance: {\n instances: [instance.connectionName],\n },\n }],\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n envs: [\n {\n name: \"FOO\",\n value: \"bar\",\n },\n {\n name: \"SECRET_ENV_VAR\",\n valueSource: {\n secretKeyRef: {\n secret: secret.secretId,\n version: \"1\",\n },\n },\n },\n ],\n volumeMounts: [{\n name: \"cloudsql\",\n mountPath: \"/cloudsql\",\n }],\n }],\n },\n traffics: [{\n type: \"TRAFFIC_TARGET_ALLOCATION_TYPE_LATEST\",\n percent: 100,\n }],\n}, {\n dependsOn: [secret_version_data],\n});\nconst project = gcp.organizations.getProject({});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:${project.number}-compute@developer.gserviceaccount.com`),\n}, {\n dependsOn: [secret],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"secret-1\",\n replication={\n \"auto\": {},\n })\nsecret_version_data = gcp.secretmanager.SecretVersion(\"secret-version-data\",\n secret=secret.name,\n secret_data=\"secret-data\")\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"cloudrun-sql\",\n region=\"us-central1\",\n database_version=\"MYSQL_5_7\",\n settings={\n \"tier\": \"db-f1-micro\",\n },\n deletion_protection=True)\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n deletion_protection=False,\n ingress=\"INGRESS_TRAFFIC_ALL\",\n template={\n \"scaling\": {\n \"max_instance_count\": 2,\n },\n \"volumes\": [{\n \"name\": \"cloudsql\",\n \"cloud_sql_instance\": {\n \"instances\": [instance.connection_name],\n },\n }],\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"envs\": [\n {\n \"name\": \"FOO\",\n \"value\": \"bar\",\n },\n {\n \"name\": \"SECRET_ENV_VAR\",\n \"value_source\": {\n \"secret_key_ref\": {\n \"secret\": secret.secret_id,\n \"version\": \"1\",\n },\n },\n },\n ],\n \"volume_mounts\": [{\n \"name\": \"cloudsql\",\n \"mount_path\": \"/cloudsql\",\n }],\n }],\n },\n traffics=[{\n \"type\": \"TRAFFIC_TARGET_ALLOCATION_TYPE_LATEST\",\n \"percent\": 100,\n }],\n opts = pulumi.ResourceOptions(depends_on=[secret_version_data]))\nproject = gcp.organizations.get_project()\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:{project.number}-compute@developer.gserviceaccount.com\",\n opts = pulumi.ResourceOptions(depends_on=[secret]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"secret-1\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var secret_version_data = new Gcp.SecretManager.SecretVersion(\"secret-version-data\", new()\n {\n Secret = secret.Name,\n SecretData = \"secret-data\",\n });\n\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"cloudrun-sql\",\n Region = \"us-central1\",\n DatabaseVersion = \"MYSQL_5_7\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n },\n DeletionProtection = true,\n });\n\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n DeletionProtection = false,\n Ingress = \"INGRESS_TRAFFIC_ALL\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Scaling = new Gcp.CloudRunV2.Inputs.ServiceTemplateScalingArgs\n {\n MaxInstanceCount = 2,\n },\n Volumes = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeArgs\n {\n Name = \"cloudsql\",\n CloudSqlInstance = new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeCloudSqlInstanceArgs\n {\n Instances = new[]\n {\n instance.ConnectionName,\n },\n },\n },\n },\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n Envs = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerEnvArgs\n {\n Name = \"FOO\",\n Value = \"bar\",\n },\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerEnvArgs\n {\n Name = \"SECRET_ENV_VAR\",\n ValueSource = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerEnvValueSourceArgs\n {\n SecretKeyRef = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerEnvValueSourceSecretKeyRefArgs\n {\n Secret = secret.SecretId,\n Version = \"1\",\n },\n },\n },\n },\n VolumeMounts = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerVolumeMountArgs\n {\n Name = \"cloudsql\",\n MountPath = \"/cloudsql\",\n },\n },\n },\n },\n },\n Traffics = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTrafficArgs\n {\n Type = \"TRAFFIC_TARGET_ALLOCATION_TYPE_LATEST\",\n Percent = 100,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secret_version_data,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:{project.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secret,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\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-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\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-1\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: \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, \"secret-version-data\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.Name,\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-sql\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_5_7\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tIngress: pulumi.String(\"INGRESS_TRAFFIC_ALL\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tScaling: \u0026cloudrunv2.ServiceTemplateScalingArgs{\n\t\t\t\t\tMaxInstanceCount: pulumi.Int(2),\n\t\t\t\t},\n\t\t\t\tVolumes: cloudrunv2.ServiceTemplateVolumeArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVolumeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"cloudsql\"),\n\t\t\t\t\t\tCloudSqlInstance: \u0026cloudrunv2.ServiceTemplateVolumeCloudSqlInstanceArgs{\n\t\t\t\t\t\t\tInstances: pulumi.StringArray{\n\t\t\t\t\t\t\t\tinstance.ConnectionName,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\tEnvs: cloudrunv2.ServiceTemplateContainerEnvArray{\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerEnvArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"FOO\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"bar\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerEnvArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"SECRET_ENV_VAR\"),\n\t\t\t\t\t\t\t\tValueSource: \u0026cloudrunv2.ServiceTemplateContainerEnvValueSourceArgs{\n\t\t\t\t\t\t\t\t\tSecretKeyRef: \u0026cloudrunv2.ServiceTemplateContainerEnvValueSourceSecretKeyRefArgs{\n\t\t\t\t\t\t\t\t\t\tSecret: secret.SecretId,\n\t\t\t\t\t\t\t\t\t\tVersion: pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tVolumeMounts: cloudrunv2.ServiceTemplateContainerVolumeMountArray{\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"cloudsql\"),\n\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/cloudsql\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTraffics: cloudrunv2.ServiceTrafficArray{\n\t\t\t\t\u0026cloudrunv2.ServiceTrafficArgs{\n\t\t\t\t\tType: pulumi.String(\"TRAFFIC_TARGET_ALLOCATION_TYPE_LATEST\"),\n\t\t\t\t\tPercent: pulumi.Int(100),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecret_version_data,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:%v-compute@developer.gserviceaccount.com\", project.Number),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecret,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateScalingArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTrafficArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var secret = new Secret(\"secret\", SecretArgs.builder()\n .secretId(\"secret-1\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var secret_version_data = new SecretVersion(\"secret-version-data\", SecretVersionArgs.builder()\n .secret(secret.name())\n .secretData(\"secret-data\")\n .build());\n\n var instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"cloudrun-sql\")\n .region(\"us-central1\")\n .databaseVersion(\"MYSQL_5_7\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .ingress(\"INGRESS_TRAFFIC_ALL\")\n .template(ServiceTemplateArgs.builder()\n .scaling(ServiceTemplateScalingArgs.builder()\n .maxInstanceCount(2)\n .build())\n .volumes(ServiceTemplateVolumeArgs.builder()\n .name(\"cloudsql\")\n .cloudSqlInstance(ServiceTemplateVolumeCloudSqlInstanceArgs.builder()\n .instances(instance.connectionName())\n .build())\n .build())\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .envs( \n ServiceTemplateContainerEnvArgs.builder()\n .name(\"FOO\")\n .value(\"bar\")\n .build(),\n ServiceTemplateContainerEnvArgs.builder()\n .name(\"SECRET_ENV_VAR\")\n .valueSource(ServiceTemplateContainerEnvValueSourceArgs.builder()\n .secretKeyRef(ServiceTemplateContainerEnvValueSourceSecretKeyRefArgs.builder()\n .secret(secret.secretId())\n .version(\"1\")\n .build())\n .build())\n .build())\n .volumeMounts(ServiceTemplateContainerVolumeMountArgs.builder()\n .name(\"cloudsql\")\n .mountPath(\"/cloudsql\")\n .build())\n .build())\n .build())\n .traffics(ServiceTrafficArgs.builder()\n .type(\"TRAFFIC_TARGET_ALLOCATION_TYPE_LATEST\")\n .percent(100)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(secret_version_data)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:%s-compute@developer.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build(), CustomResourceOptions.builder()\n .dependsOn(secret)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n deletionProtection: false\n ingress: INGRESS_TRAFFIC_ALL\n template:\n scaling:\n maxInstanceCount: 2\n volumes:\n - name: cloudsql\n cloudSqlInstance:\n instances:\n - ${instance.connectionName}\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n envs:\n - name: FOO\n value: bar\n - name: SECRET_ENV_VAR\n valueSource:\n secretKeyRef:\n secret: ${secret.secretId}\n version: '1'\n volumeMounts:\n - name: cloudsql\n mountPath: /cloudsql\n traffics:\n - type: TRAFFIC_TARGET_ALLOCATION_TYPE_LATEST\n percent: 100\n options:\n dependson:\n - ${[\"secret-version-data\"]}\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret-1\n replication:\n auto: {}\n secret-version-data:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${secret.name}\n secretData: secret-data\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${secret.id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:${project.number}-compute@developer.gserviceaccount.com\n options:\n dependson:\n - ${secret}\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: cloudrun-sql\n region: us-central1\n databaseVersion: MYSQL_5_7\n settings:\n tier: db-f1-micro\n deletionProtection: 'true'\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Vpcaccess\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst customTestNetwork = new gcp.compute.Network(\"custom_test\", {\n name: \"run-network\",\n autoCreateSubnetworks: false,\n});\nconst customTest = new gcp.compute.Subnetwork(\"custom_test\", {\n name: \"run-subnetwork\",\n ipCidrRange: \"10.2.0.0/28\",\n region: \"us-central1\",\n network: customTestNetwork.id,\n});\nconst connector = new gcp.vpcaccess.Connector(\"connector\", {\n name: \"run-vpc\",\n subnet: {\n name: customTest.name,\n },\n machineType: \"e2-standard-4\",\n minInstances: 2,\n maxInstances: 3,\n region: \"us-central1\",\n});\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n deletionProtection: false,\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n vpcAccess: {\n connector: connector.id,\n egress: \"ALL_TRAFFIC\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_test_network = gcp.compute.Network(\"custom_test\",\n name=\"run-network\",\n auto_create_subnetworks=False)\ncustom_test = gcp.compute.Subnetwork(\"custom_test\",\n name=\"run-subnetwork\",\n ip_cidr_range=\"10.2.0.0/28\",\n region=\"us-central1\",\n network=custom_test_network.id)\nconnector = gcp.vpcaccess.Connector(\"connector\",\n name=\"run-vpc\",\n subnet={\n \"name\": custom_test.name,\n },\n machine_type=\"e2-standard-4\",\n min_instances=2,\n max_instances=3,\n region=\"us-central1\")\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n deletion_protection=False,\n template={\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n \"vpc_access\": {\n \"connector\": connector.id,\n \"egress\": \"ALL_TRAFFIC\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var customTestNetwork = new Gcp.Compute.Network(\"custom_test\", new()\n {\n Name = \"run-network\",\n AutoCreateSubnetworks = false,\n });\n\n var customTest = new Gcp.Compute.Subnetwork(\"custom_test\", new()\n {\n Name = \"run-subnetwork\",\n IpCidrRange = \"10.2.0.0/28\",\n Region = \"us-central1\",\n Network = customTestNetwork.Id,\n });\n\n var connector = new Gcp.VpcAccess.Connector(\"connector\", new()\n {\n Name = \"run-vpc\",\n Subnet = new Gcp.VpcAccess.Inputs.ConnectorSubnetArgs\n {\n Name = customTest.Name,\n },\n MachineType = \"e2-standard-4\",\n MinInstances = 2,\n MaxInstances = 3,\n Region = \"us-central1\",\n });\n\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n DeletionProtection = false,\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n VpcAccess = new Gcp.CloudRunV2.Inputs.ServiceTemplateVpcAccessArgs\n {\n Connector = connector.Id,\n Egress = \"ALL_TRAFFIC\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vpcaccess\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcustomTestNetwork, err := compute.NewNetwork(ctx, \"custom_test\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"run-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcustomTest, err := compute.NewSubnetwork(ctx, \"custom_test\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"run-subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.2.0.0/28\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: customTestNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tconnector, err := vpcaccess.NewConnector(ctx, \"connector\", \u0026vpcaccess.ConnectorArgs{\n\t\t\tName: pulumi.String(\"run-vpc\"),\n\t\t\tSubnet: \u0026vpcaccess.ConnectorSubnetArgs{\n\t\t\t\tName: customTest.Name,\n\t\t\t},\n\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\tMinInstances: pulumi.Int(2),\n\t\t\tMaxInstances: pulumi.Int(3),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tVpcAccess: \u0026cloudrunv2.ServiceTemplateVpcAccessArgs{\n\t\t\t\t\tConnector: connector.ID(),\n\t\t\t\t\tEgress: pulumi.String(\"ALL_TRAFFIC\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.vpcaccess.Connector;\nimport com.pulumi.gcp.vpcaccess.ConnectorArgs;\nimport com.pulumi.gcp.vpcaccess.inputs.ConnectorSubnetArgs;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateVpcAccessArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var customTestNetwork = new Network(\"customTestNetwork\", NetworkArgs.builder()\n .name(\"run-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var customTest = new Subnetwork(\"customTest\", SubnetworkArgs.builder()\n .name(\"run-subnetwork\")\n .ipCidrRange(\"10.2.0.0/28\")\n .region(\"us-central1\")\n .network(customTestNetwork.id())\n .build());\n\n var connector = new Connector(\"connector\", ConnectorArgs.builder()\n .name(\"run-vpc\")\n .subnet(ConnectorSubnetArgs.builder()\n .name(customTest.name())\n .build())\n .machineType(\"e2-standard-4\")\n .minInstances(2)\n .maxInstances(3)\n .region(\"us-central1\")\n .build());\n\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .template(ServiceTemplateArgs.builder()\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .vpcAccess(ServiceTemplateVpcAccessArgs.builder()\n .connector(connector.id())\n .egress(\"ALL_TRAFFIC\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n deletionProtection: false\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n vpcAccess:\n connector: ${connector.id}\n egress: ALL_TRAFFIC\n connector:\n type: gcp:vpcaccess:Connector\n properties:\n name: run-vpc\n subnet:\n name: ${customTest.name}\n machineType: e2-standard-4\n minInstances: 2\n maxInstances: 3\n region: us-central1\n customTest:\n type: gcp:compute:Subnetwork\n name: custom_test\n properties:\n name: run-subnetwork\n ipCidrRange: 10.2.0.0/28\n region: us-central1\n network: ${customTestNetwork.id}\n customTestNetwork:\n type: gcp:compute:Network\n name: custom_test\n properties:\n name: run-network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Directvpc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n deletionProtection: false,\n launchStage: \"GA\",\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n vpcAccess: {\n networkInterfaces: [{\n network: \"default\",\n subnetwork: \"default\",\n tags: [\n \"tag1\",\n \"tag2\",\n \"tag3\",\n ],\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n deletion_protection=False,\n launch_stage=\"GA\",\n template={\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n \"vpc_access\": {\n \"network_interfaces\": [{\n \"network\": \"default\",\n \"subnetwork\": \"default\",\n \"tags\": [\n \"tag1\",\n \"tag2\",\n \"tag3\",\n ],\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n DeletionProtection = false,\n LaunchStage = \"GA\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n VpcAccess = new Gcp.CloudRunV2.Inputs.ServiceTemplateVpcAccessArgs\n {\n NetworkInterfaces = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVpcAccessNetworkInterfaceArgs\n {\n Network = \"default\",\n Subnetwork = \"default\",\n Tags = new[]\n {\n \"tag1\",\n \"tag2\",\n \"tag3\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tLaunchStage: pulumi.String(\"GA\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tVpcAccess: \u0026cloudrunv2.ServiceTemplateVpcAccessArgs{\n\t\t\t\t\tNetworkInterfaces: cloudrunv2.ServiceTemplateVpcAccessNetworkInterfaceArray{\n\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVpcAccessNetworkInterfaceArgs{\n\t\t\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t\t\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"tag1\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"tag2\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"tag3\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateVpcAccessArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .launchStage(\"GA\")\n .template(ServiceTemplateArgs.builder()\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .vpcAccess(ServiceTemplateVpcAccessArgs.builder()\n .networkInterfaces(ServiceTemplateVpcAccessNetworkInterfaceArgs.builder()\n .network(\"default\")\n .subnetwork(\"default\")\n .tags( \n \"tag1\",\n \"tag2\",\n \"tag3\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n deletionProtection: false\n launchStage: GA\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n vpcAccess:\n networkInterfaces:\n - network: default\n subnetwork: default\n tags:\n - tag1\n - tag2\n - tag3\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Probes\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n deletionProtection: false,\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n startupProbe: {\n initialDelaySeconds: 0,\n timeoutSeconds: 1,\n periodSeconds: 3,\n failureThreshold: 1,\n tcpSocket: {\n port: 8080,\n },\n },\n livenessProbe: {\n httpGet: {\n path: \"/\",\n },\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n deletion_protection=False,\n template={\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"startup_probe\": {\n \"initial_delay_seconds\": 0,\n \"timeout_seconds\": 1,\n \"period_seconds\": 3,\n \"failure_threshold\": 1,\n \"tcp_socket\": {\n \"port\": 8080,\n },\n },\n \"liveness_probe\": {\n \"http_get\": {\n \"path\": \"/\",\n },\n },\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n DeletionProtection = false,\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n StartupProbe = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerStartupProbeArgs\n {\n InitialDelaySeconds = 0,\n TimeoutSeconds = 1,\n PeriodSeconds = 3,\n FailureThreshold = 1,\n TcpSocket = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerStartupProbeTcpSocketArgs\n {\n Port = 8080,\n },\n },\n LivenessProbe = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerLivenessProbeArgs\n {\n HttpGet = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerLivenessProbeHttpGetArgs\n {\n Path = \"/\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\tStartupProbe: \u0026cloudrunv2.ServiceTemplateContainerStartupProbeArgs{\n\t\t\t\t\t\t\tInitialDelaySeconds: pulumi.Int(0),\n\t\t\t\t\t\t\tTimeoutSeconds: pulumi.Int(1),\n\t\t\t\t\t\t\tPeriodSeconds: pulumi.Int(3),\n\t\t\t\t\t\t\tFailureThreshold: pulumi.Int(1),\n\t\t\t\t\t\t\tTcpSocket: \u0026cloudrunv2.ServiceTemplateContainerStartupProbeTcpSocketArgs{\n\t\t\t\t\t\t\t\tPort: pulumi.Int(8080),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tLivenessProbe: \u0026cloudrunv2.ServiceTemplateContainerLivenessProbeArgs{\n\t\t\t\t\t\t\tHttpGet: \u0026cloudrunv2.ServiceTemplateContainerLivenessProbeHttpGetArgs{\n\t\t\t\t\t\t\t\tPath: pulumi.String(\"/\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .template(ServiceTemplateArgs.builder()\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .startupProbe(ServiceTemplateContainerStartupProbeArgs.builder()\n .initialDelaySeconds(0)\n .timeoutSeconds(1)\n .periodSeconds(3)\n .failureThreshold(1)\n .tcpSocket(ServiceTemplateContainerStartupProbeTcpSocketArgs.builder()\n .port(8080)\n .build())\n .build())\n .livenessProbe(ServiceTemplateContainerLivenessProbeArgs.builder()\n .httpGet(ServiceTemplateContainerLivenessProbeHttpGetArgs.builder()\n .path(\"/\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n deletionProtection: false\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n startupProbe:\n initialDelaySeconds: 0\n timeoutSeconds: 1\n periodSeconds: 3\n failureThreshold: 1\n tcpSocket:\n port: 8080\n livenessProbe:\n httpGet:\n path: /\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Secret\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"secret-1\",\n replication: {\n auto: {},\n },\n});\nconst secret_version_data = new gcp.secretmanager.SecretVersion(\"secret-version-data\", {\n secret: secret.name,\n secretData: \"secret-data\",\n});\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n deletionProtection: false,\n ingress: \"INGRESS_TRAFFIC_ALL\",\n template: {\n volumes: [{\n name: \"a-volume\",\n secret: {\n secret: secret.secretId,\n defaultMode: 292,\n items: [{\n version: \"1\",\n path: \"my-secret\",\n }],\n },\n }],\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n volumeMounts: [{\n name: \"a-volume\",\n mountPath: \"/secrets\",\n }],\n }],\n },\n}, {\n dependsOn: [secret_version_data],\n});\nconst project = gcp.organizations.getProject({});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:${project.number}-compute@developer.gserviceaccount.com`),\n}, {\n dependsOn: [secret],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"secret-1\",\n replication={\n \"auto\": {},\n })\nsecret_version_data = gcp.secretmanager.SecretVersion(\"secret-version-data\",\n secret=secret.name,\n secret_data=\"secret-data\")\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n deletion_protection=False,\n ingress=\"INGRESS_TRAFFIC_ALL\",\n template={\n \"volumes\": [{\n \"name\": \"a-volume\",\n \"secret\": {\n \"secret\": secret.secret_id,\n \"default_mode\": 292,\n \"items\": [{\n \"version\": \"1\",\n \"path\": \"my-secret\",\n }],\n },\n }],\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"volume_mounts\": [{\n \"name\": \"a-volume\",\n \"mount_path\": \"/secrets\",\n }],\n }],\n },\n opts = pulumi.ResourceOptions(depends_on=[secret_version_data]))\nproject = gcp.organizations.get_project()\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:{project.number}-compute@developer.gserviceaccount.com\",\n opts = pulumi.ResourceOptions(depends_on=[secret]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"secret-1\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var secret_version_data = new Gcp.SecretManager.SecretVersion(\"secret-version-data\", new()\n {\n Secret = secret.Name,\n SecretData = \"secret-data\",\n });\n\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n DeletionProtection = false,\n Ingress = \"INGRESS_TRAFFIC_ALL\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Volumes = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeArgs\n {\n Name = \"a-volume\",\n Secret = new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeSecretArgs\n {\n Secret = secret.SecretId,\n DefaultMode = 292,\n Items = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeSecretItemArgs\n {\n Version = \"1\",\n Path = \"my-secret\",\n },\n },\n },\n },\n },\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n VolumeMounts = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerVolumeMountArgs\n {\n Name = \"a-volume\",\n MountPath = \"/secrets\",\n },\n },\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secret_version_data,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:{project.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secret,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-1\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: \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, \"secret-version-data\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.Name,\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tIngress: pulumi.String(\"INGRESS_TRAFFIC_ALL\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tVolumes: cloudrunv2.ServiceTemplateVolumeArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVolumeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"a-volume\"),\n\t\t\t\t\t\tSecret: \u0026cloudrunv2.ServiceTemplateVolumeSecretArgs{\n\t\t\t\t\t\t\tSecret: secret.SecretId,\n\t\t\t\t\t\t\tDefaultMode: pulumi.Int(292),\n\t\t\t\t\t\t\tItems: cloudrunv2.ServiceTemplateVolumeSecretItemArray{\n\t\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVolumeSecretItemArgs{\n\t\t\t\t\t\t\t\t\tVersion: pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\t\tPath: pulumi.String(\"my-secret\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\tVolumeMounts: cloudrunv2.ServiceTemplateContainerVolumeMountArray{\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"a-volume\"),\n\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/secrets\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecret_version_data,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:%v-compute@developer.gserviceaccount.com\", project.Number),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecret,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var secret = new Secret(\"secret\", SecretArgs.builder()\n .secretId(\"secret-1\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var secret_version_data = new SecretVersion(\"secret-version-data\", SecretVersionArgs.builder()\n .secret(secret.name())\n .secretData(\"secret-data\")\n .build());\n\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .ingress(\"INGRESS_TRAFFIC_ALL\")\n .template(ServiceTemplateArgs.builder()\n .volumes(ServiceTemplateVolumeArgs.builder()\n .name(\"a-volume\")\n .secret(ServiceTemplateVolumeSecretArgs.builder()\n .secret(secret.secretId())\n .defaultMode(292)\n .items(ServiceTemplateVolumeSecretItemArgs.builder()\n .version(\"1\")\n .path(\"my-secret\")\n .build())\n .build())\n .build())\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .volumeMounts(ServiceTemplateContainerVolumeMountArgs.builder()\n .name(\"a-volume\")\n .mountPath(\"/secrets\")\n .build())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(secret_version_data)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:%s-compute@developer.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build(), CustomResourceOptions.builder()\n .dependsOn(secret)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n deletionProtection: false\n ingress: INGRESS_TRAFFIC_ALL\n template:\n volumes:\n - name: a-volume\n secret:\n secret: ${secret.secretId}\n defaultMode: 292\n items:\n - version: '1'\n path: my-secret\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n volumeMounts:\n - name: a-volume\n mountPath: /secrets\n options:\n dependson:\n - ${[\"secret-version-data\"]}\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret-1\n replication:\n auto: {}\n secret-version-data:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${secret.name}\n secretData: secret-data\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${secret.id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:${project.number}-compute@developer.gserviceaccount.com\n options:\n dependson:\n - ${secret}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Multicontainer\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n deletionProtection: false,\n launchStage: \"BETA\",\n ingress: \"INGRESS_TRAFFIC_ALL\",\n template: {\n containers: [\n {\n name: \"hello-1\",\n ports: {\n containerPort: 8080,\n },\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n dependsOns: [\"hello-2\"],\n volumeMounts: [{\n name: \"empty-dir-volume\",\n mountPath: \"/mnt\",\n }],\n },\n {\n name: \"hello-2\",\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n envs: [{\n name: \"PORT\",\n value: \"8081\",\n }],\n startupProbe: {\n httpGet: {\n port: 8081,\n },\n },\n },\n ],\n volumes: [{\n name: \"empty-dir-volume\",\n emptyDir: {\n medium: \"MEMORY\",\n sizeLimit: \"256Mi\",\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n deletion_protection=False,\n launch_stage=\"BETA\",\n ingress=\"INGRESS_TRAFFIC_ALL\",\n template={\n \"containers\": [\n {\n \"name\": \"hello-1\",\n \"ports\": {\n \"container_port\": 8080,\n },\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"depends_ons\": [\"hello-2\"],\n \"volume_mounts\": [{\n \"name\": \"empty-dir-volume\",\n \"mount_path\": \"/mnt\",\n }],\n },\n {\n \"name\": \"hello-2\",\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"envs\": [{\n \"name\": \"PORT\",\n \"value\": \"8081\",\n }],\n \"startup_probe\": {\n \"http_get\": {\n \"port\": 8081,\n },\n },\n },\n ],\n \"volumes\": [{\n \"name\": \"empty-dir-volume\",\n \"empty_dir\": {\n \"medium\": \"MEMORY\",\n \"size_limit\": \"256Mi\",\n },\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n DeletionProtection = false,\n LaunchStage = \"BETA\",\n Ingress = \"INGRESS_TRAFFIC_ALL\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Name = \"hello-1\",\n Ports = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerPortsArgs\n {\n ContainerPort = 8080,\n },\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n DependsOns = new[]\n {\n \"hello-2\",\n },\n VolumeMounts = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerVolumeMountArgs\n {\n Name = \"empty-dir-volume\",\n MountPath = \"/mnt\",\n },\n },\n },\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Name = \"hello-2\",\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n Envs = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerEnvArgs\n {\n Name = \"PORT\",\n Value = \"8081\",\n },\n },\n StartupProbe = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerStartupProbeArgs\n {\n HttpGet = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerStartupProbeHttpGetArgs\n {\n Port = 8081,\n },\n },\n },\n },\n Volumes = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeArgs\n {\n Name = \"empty-dir-volume\",\n EmptyDir = new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeEmptyDirArgs\n {\n Medium = \"MEMORY\",\n SizeLimit = \"256Mi\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tLaunchStage: pulumi.String(\"BETA\"),\n\t\t\tIngress: pulumi.String(\"INGRESS_TRAFFIC_ALL\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tName: pulumi.String(\"hello-1\"),\n\t\t\t\t\t\tPorts: \u0026cloudrunv2.ServiceTemplateContainerPortsArgs{\n\t\t\t\t\t\t\tContainerPort: pulumi.Int(8080),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\tDependsOns: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"hello-2\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tVolumeMounts: cloudrunv2.ServiceTemplateContainerVolumeMountArray{\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"empty-dir-volume\"),\n\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/mnt\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tName: pulumi.String(\"hello-2\"),\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\tEnvs: cloudrunv2.ServiceTemplateContainerEnvArray{\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerEnvArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"PORT\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"8081\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tStartupProbe: \u0026cloudrunv2.ServiceTemplateContainerStartupProbeArgs{\n\t\t\t\t\t\t\tHttpGet: \u0026cloudrunv2.ServiceTemplateContainerStartupProbeHttpGetArgs{\n\t\t\t\t\t\t\t\tPort: pulumi.Int(8081),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tVolumes: cloudrunv2.ServiceTemplateVolumeArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVolumeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"empty-dir-volume\"),\n\t\t\t\t\t\tEmptyDir: \u0026cloudrunv2.ServiceTemplateVolumeEmptyDirArgs{\n\t\t\t\t\t\t\tMedium: pulumi.String(\"MEMORY\"),\n\t\t\t\t\t\t\tSizeLimit: pulumi.String(\"256Mi\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .launchStage(\"BETA\")\n .ingress(\"INGRESS_TRAFFIC_ALL\")\n .template(ServiceTemplateArgs.builder()\n .containers( \n ServiceTemplateContainerArgs.builder()\n .name(\"hello-1\")\n .ports(ServiceTemplateContainerPortsArgs.builder()\n .containerPort(8080)\n .build())\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .dependsOns(\"hello-2\")\n .volumeMounts(ServiceTemplateContainerVolumeMountArgs.builder()\n .name(\"empty-dir-volume\")\n .mountPath(\"/mnt\")\n .build())\n .build(),\n ServiceTemplateContainerArgs.builder()\n .name(\"hello-2\")\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .envs(ServiceTemplateContainerEnvArgs.builder()\n .name(\"PORT\")\n .value(\"8081\")\n .build())\n .startupProbe(ServiceTemplateContainerStartupProbeArgs.builder()\n .httpGet(ServiceTemplateContainerStartupProbeHttpGetArgs.builder()\n .port(8081)\n .build())\n .build())\n .build())\n .volumes(ServiceTemplateVolumeArgs.builder()\n .name(\"empty-dir-volume\")\n .emptyDir(ServiceTemplateVolumeEmptyDirArgs.builder()\n .medium(\"MEMORY\")\n .sizeLimit(\"256Mi\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n deletionProtection: false\n launchStage: BETA\n ingress: INGRESS_TRAFFIC_ALL\n template:\n containers:\n - name: hello-1\n ports:\n containerPort: 8080\n image: us-docker.pkg.dev/cloudrun/container/hello\n dependsOns:\n - hello-2\n volumeMounts:\n - name: empty-dir-volume\n mountPath: /mnt\n - name: hello-2\n image: us-docker.pkg.dev/cloudrun/container/hello\n envs:\n - name: PORT\n value: '8081'\n startupProbe:\n httpGet:\n port: 8081\n volumes:\n - name: empty-dir-volume\n emptyDir:\n medium: MEMORY\n sizeLimit: 256Mi\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Mount Gcs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultBucket = new gcp.storage.Bucket(\"default\", {\n name: \"cloudrun-service\",\n location: \"US\",\n});\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n deletionProtection: false,\n template: {\n executionEnvironment: \"EXECUTION_ENVIRONMENT_GEN2\",\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n volumeMounts: [{\n name: \"bucket\",\n mountPath: \"/var/www\",\n }],\n }],\n volumes: [{\n name: \"bucket\",\n gcs: {\n bucket: defaultBucket.name,\n readOnly: false,\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_bucket = gcp.storage.Bucket(\"default\",\n name=\"cloudrun-service\",\n location=\"US\")\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n deletion_protection=False,\n template={\n \"execution_environment\": \"EXECUTION_ENVIRONMENT_GEN2\",\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"volume_mounts\": [{\n \"name\": \"bucket\",\n \"mount_path\": \"/var/www\",\n }],\n }],\n \"volumes\": [{\n \"name\": \"bucket\",\n \"gcs\": {\n \"bucket\": default_bucket.name,\n \"read_only\": False,\n },\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultBucket = new Gcp.Storage.Bucket(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"US\",\n });\n\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n DeletionProtection = false,\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n ExecutionEnvironment = \"EXECUTION_ENVIRONMENT_GEN2\",\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n VolumeMounts = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerVolumeMountArgs\n {\n Name = \"bucket\",\n MountPath = \"/var/www\",\n },\n },\n },\n },\n Volumes = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeArgs\n {\n Name = \"bucket\",\n Gcs = new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeGcsArgs\n {\n Bucket = defaultBucket.Name,\n ReadOnly = false,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdefaultBucket, err := storage.NewBucket(ctx, \"default\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tExecutionEnvironment: pulumi.String(\"EXECUTION_ENVIRONMENT_GEN2\"),\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\tVolumeMounts: cloudrunv2.ServiceTemplateContainerVolumeMountArray{\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"bucket\"),\n\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/var/www\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tVolumes: cloudrunv2.ServiceTemplateVolumeArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVolumeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"bucket\"),\n\t\t\t\t\t\tGcs: \u0026cloudrunv2.ServiceTemplateVolumeGcsArgs{\n\t\t\t\t\t\t\tBucket: defaultBucket.Name,\n\t\t\t\t\t\t\tReadOnly: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultBucket = new Bucket(\"defaultBucket\", BucketArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"US\")\n .build());\n\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .template(ServiceTemplateArgs.builder()\n .executionEnvironment(\"EXECUTION_ENVIRONMENT_GEN2\")\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .volumeMounts(ServiceTemplateContainerVolumeMountArgs.builder()\n .name(\"bucket\")\n .mountPath(\"/var/www\")\n .build())\n .build())\n .volumes(ServiceTemplateVolumeArgs.builder()\n .name(\"bucket\")\n .gcs(ServiceTemplateVolumeGcsArgs.builder()\n .bucket(defaultBucket.name())\n .readOnly(false)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n deletionProtection: false\n template:\n executionEnvironment: EXECUTION_ENVIRONMENT_GEN2\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n volumeMounts:\n - name: bucket\n mountPath: /var/www\n volumes:\n - name: bucket\n gcs:\n bucket: ${defaultBucket.name}\n readOnly: false\n defaultBucket:\n type: gcp:storage:Bucket\n name: default\n properties:\n name: cloudrun-service\n location: US\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Mount Nfs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultInstance = new gcp.filestore.Instance(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1-b\",\n tier: \"BASIC_HDD\",\n fileShares: {\n capacityGb: 1024,\n name: \"share1\",\n },\n networks: [{\n network: \"default\",\n modes: [\"MODE_IPV4\"],\n }],\n});\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n location: \"us-central1\",\n deletionProtection: false,\n ingress: \"INGRESS_TRAFFIC_ALL\",\n template: {\n executionEnvironment: \"EXECUTION_ENVIRONMENT_GEN2\",\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello:latest\",\n volumeMounts: [{\n name: \"nfs\",\n mountPath: \"/mnt/nfs/filestore\",\n }],\n }],\n vpcAccess: {\n networkInterfaces: [{\n network: \"default\",\n subnetwork: \"default\",\n }],\n },\n volumes: [{\n name: \"nfs\",\n nfs: {\n server: defaultInstance.networks.apply(networks =\u003e networks[0].ipAddresses?.[0]),\n path: \"/share1\",\n readOnly: false,\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_instance = gcp.filestore.Instance(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1-b\",\n tier=\"BASIC_HDD\",\n file_shares={\n \"capacity_gb\": 1024,\n \"name\": \"share1\",\n },\n networks=[{\n \"network\": \"default\",\n \"modes\": [\"MODE_IPV4\"],\n }])\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n location=\"us-central1\",\n deletion_protection=False,\n ingress=\"INGRESS_TRAFFIC_ALL\",\n template={\n \"execution_environment\": \"EXECUTION_ENVIRONMENT_GEN2\",\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello:latest\",\n \"volume_mounts\": [{\n \"name\": \"nfs\",\n \"mount_path\": \"/mnt/nfs/filestore\",\n }],\n }],\n \"vpc_access\": {\n \"network_interfaces\": [{\n \"network\": \"default\",\n \"subnetwork\": \"default\",\n }],\n },\n \"volumes\": [{\n \"name\": \"nfs\",\n \"nfs\": {\n \"server\": default_instance.networks[0].ip_addresses[0],\n \"path\": \"/share1\",\n \"read_only\": False,\n },\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultInstance = new Gcp.Filestore.Instance(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1-b\",\n Tier = \"BASIC_HDD\",\n FileShares = new Gcp.Filestore.Inputs.InstanceFileSharesArgs\n {\n CapacityGb = 1024,\n Name = \"share1\",\n },\n Networks = new[]\n {\n new Gcp.Filestore.Inputs.InstanceNetworkArgs\n {\n Network = \"default\",\n Modes = new[]\n {\n \"MODE_IPV4\",\n },\n },\n },\n });\n\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n Location = \"us-central1\",\n DeletionProtection = false,\n Ingress = \"INGRESS_TRAFFIC_ALL\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n ExecutionEnvironment = \"EXECUTION_ENVIRONMENT_GEN2\",\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello:latest\",\n VolumeMounts = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerVolumeMountArgs\n {\n Name = \"nfs\",\n MountPath = \"/mnt/nfs/filestore\",\n },\n },\n },\n },\n VpcAccess = new Gcp.CloudRunV2.Inputs.ServiceTemplateVpcAccessArgs\n {\n NetworkInterfaces = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVpcAccessNetworkInterfaceArgs\n {\n Network = \"default\",\n Subnetwork = \"default\",\n },\n },\n },\n Volumes = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeArgs\n {\n Name = \"nfs\",\n Nfs = new Gcp.CloudRunV2.Inputs.ServiceTemplateVolumeNfsArgs\n {\n Server = defaultInstance.Networks.Apply(networks =\u003e networks[0].IpAddresses[0]),\n Path = \"/share1\",\n ReadOnly = false,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/filestore\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdefaultInstance, err := filestore.NewInstance(ctx, \"default\", \u0026filestore.InstanceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1-b\"),\n\t\t\tTier: pulumi.String(\"BASIC_HDD\"),\n\t\t\tFileShares: \u0026filestore.InstanceFileSharesArgs{\n\t\t\t\tCapacityGb: pulumi.Int(1024),\n\t\t\t\tName: pulumi.String(\"share1\"),\n\t\t\t},\n\t\t\tNetworks: filestore.InstanceNetworkArray{\n\t\t\t\t\u0026filestore.InstanceNetworkArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t\tModes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"MODE_IPV4\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tIngress: pulumi.String(\"INGRESS_TRAFFIC_ALL\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tExecutionEnvironment: pulumi.String(\"EXECUTION_ENVIRONMENT_GEN2\"),\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello:latest\"),\n\t\t\t\t\t\tVolumeMounts: cloudrunv2.ServiceTemplateContainerVolumeMountArray{\n\t\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerVolumeMountArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"nfs\"),\n\t\t\t\t\t\t\t\tMountPath: pulumi.String(\"/mnt/nfs/filestore\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tVpcAccess: \u0026cloudrunv2.ServiceTemplateVpcAccessArgs{\n\t\t\t\t\tNetworkInterfaces: cloudrunv2.ServiceTemplateVpcAccessNetworkInterfaceArray{\n\t\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVpcAccessNetworkInterfaceArgs{\n\t\t\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tVolumes: cloudrunv2.ServiceTemplateVolumeArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateVolumeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"nfs\"),\n\t\t\t\t\t\tNfs: \u0026cloudrunv2.ServiceTemplateVolumeNfsArgs{\n\t\t\t\t\t\t\tServer: defaultInstance.Networks.ApplyT(func(networks []filestore.InstanceNetwork) (*string, error) {\n\t\t\t\t\t\t\t\treturn \u0026networks[0].IpAddresses[0], nil\n\t\t\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t\t\t\tPath: pulumi.String(\"/share1\"),\n\t\t\t\t\t\t\tReadOnly: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.filestore.Instance;\nimport com.pulumi.gcp.filestore.InstanceArgs;\nimport com.pulumi.gcp.filestore.inputs.InstanceFileSharesArgs;\nimport com.pulumi.gcp.filestore.inputs.InstanceNetworkArgs;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateVpcAccessArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultInstance = new Instance(\"defaultInstance\", InstanceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1-b\")\n .tier(\"BASIC_HDD\")\n .fileShares(InstanceFileSharesArgs.builder()\n .capacityGb(1024)\n .name(\"share1\")\n .build())\n .networks(InstanceNetworkArgs.builder()\n .network(\"default\")\n .modes(\"MODE_IPV4\")\n .build())\n .build());\n\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .location(\"us-central1\")\n .deletionProtection(false)\n .ingress(\"INGRESS_TRAFFIC_ALL\")\n .template(ServiceTemplateArgs.builder()\n .executionEnvironment(\"EXECUTION_ENVIRONMENT_GEN2\")\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello:latest\")\n .volumeMounts(ServiceTemplateContainerVolumeMountArgs.builder()\n .name(\"nfs\")\n .mountPath(\"/mnt/nfs/filestore\")\n .build())\n .build())\n .vpcAccess(ServiceTemplateVpcAccessArgs.builder()\n .networkInterfaces(ServiceTemplateVpcAccessNetworkInterfaceArgs.builder()\n .network(\"default\")\n .subnetwork(\"default\")\n .build())\n .build())\n .volumes(ServiceTemplateVolumeArgs.builder()\n .name(\"nfs\")\n .nfs(ServiceTemplateVolumeNfsArgs.builder()\n .server(defaultInstance.networks().applyValue(networks -\u003e networks[0].ipAddresses()[0]))\n .path(\"/share1\")\n .readOnly(false)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n location: us-central1\n deletionProtection: false\n ingress: INGRESS_TRAFFIC_ALL\n template:\n executionEnvironment: EXECUTION_ENVIRONMENT_GEN2\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello:latest\n volumeMounts:\n - name: nfs\n mountPath: /mnt/nfs/filestore\n vpcAccess:\n networkInterfaces:\n - network: default\n subnetwork: default\n volumes:\n - name: nfs\n nfs:\n server: ${defaultInstance.networks[0].ipAddresses[0]}\n path: /share1\n readOnly: false\n defaultInstance:\n type: gcp:filestore:Instance\n name: default\n properties:\n name: cloudrun-service\n location: us-central1-b\n tier: BASIC_HDD\n fileShares:\n capacityGb: 1024\n name: share1\n networks:\n - network: default\n modes:\n - MODE_IPV4\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloudrunv2 Service Mesh\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\nconst mesh = new gcp.networkservices.Mesh(\"mesh\", {name: \"network-services-mesh\"});\nconst waitForMesh = new time.index.Sleep(\"wait_for_mesh\", {createDuration: \"1m\"}, {\n dependsOn: [mesh],\n});\nconst _default = new gcp.cloudrunv2.Service(\"default\", {\n name: \"cloudrun-service\",\n deletionProtection: false,\n location: \"us-central1\",\n launchStage: \"BETA\",\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n serviceMesh: {\n mesh: mesh.id,\n },\n },\n}, {\n dependsOn: [waitForMesh],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\nmesh = gcp.networkservices.Mesh(\"mesh\", name=\"network-services-mesh\")\nwait_for_mesh = time.index.Sleep(\"wait_for_mesh\", create_duration=1m,\nopts = pulumi.ResourceOptions(depends_on=[mesh]))\ndefault = gcp.cloudrunv2.Service(\"default\",\n name=\"cloudrun-service\",\n deletion_protection=False,\n location=\"us-central1\",\n launch_stage=\"BETA\",\n template={\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n \"service_mesh\": {\n \"mesh\": mesh.id,\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[wait_for_mesh]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Time = Pulumi.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var mesh = new Gcp.NetworkServices.Mesh(\"mesh\", new()\n {\n Name = \"network-services-mesh\",\n });\n\n var waitForMesh = new Time.Index.Sleep(\"wait_for_mesh\", new()\n {\n CreateDuration = \"1m\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n mesh,\n },\n });\n\n var @default = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Name = \"cloudrun-service\",\n DeletionProtection = false,\n Location = \"us-central1\",\n LaunchStage = \"BETA\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n ServiceMesh = new Gcp.CloudRunV2.Inputs.ServiceTemplateServiceMeshArgs\n {\n Mesh = mesh.Id,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n waitForMesh,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmesh, err := networkservices.NewMesh(ctx, \"mesh\", \u0026networkservices.MeshArgs{\n\t\t\tName: pulumi.String(\"network-services-mesh\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\twaitForMesh, err := time.NewSleep(ctx, \"wait_for_mesh\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"1m\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tmesh,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-service\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLaunchStage: pulumi.String(\"BETA\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tServiceMesh: \u0026cloudrunv2.ServiceTemplateServiceMeshArgs{\n\t\t\t\t\tMesh: mesh.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twaitForMesh,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networkservices.Mesh;\nimport com.pulumi.gcp.networkservices.MeshArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateServiceMeshArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var mesh = new Mesh(\"mesh\", MeshArgs.builder()\n .name(\"network-services-mesh\")\n .build());\n\n var waitForMesh = new Sleep(\"waitForMesh\", SleepArgs.builder()\n .createDuration(\"1m\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(mesh)\n .build());\n\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-service\")\n .deletionProtection(false)\n .location(\"us-central1\")\n .launchStage(\"BETA\")\n .template(ServiceTemplateArgs.builder()\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .serviceMesh(ServiceTemplateServiceMeshArgs.builder()\n .mesh(mesh.id())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(waitForMesh)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrunv2:Service\n properties:\n name: cloudrun-service\n deletionProtection: false\n location: us-central1\n launchStage: BETA\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n serviceMesh:\n mesh: ${mesh.id}\n options:\n dependson:\n - ${waitForMesh}\n waitForMesh:\n type: time:sleep\n name: wait_for_mesh\n properties:\n createDuration: 1m\n options:\n dependson:\n - ${mesh}\n mesh:\n type: gcp:networkservices:Mesh\n properties:\n name: network-services-mesh\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nService can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/services/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Service can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudrunv2/service:Service default projects/{{project}}/locations/{{location}}/services/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudrunv2/service:Service default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudrunv2/service:Service default {{location}}/{{name}}\n```\n\n", "properties": { "annotations": { "type": "object", @@ -145043,7 +145043,7 @@ } }, "gcp:cloudscheduler/job:Job": { - "description": "A scheduled job that can publish a PubSub message or an HTTP request\nevery X interval of time, using a crontab format string.\n\n\nTo get more information about Job, see:\n\n* [API documentation](https://cloud.google.com/scheduler/docs/reference/rest/)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/scheduler/)\n\n## Example Usage\n\n### Scheduler Job Pubsub\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"job-topic\"});\nconst job = new gcp.cloudscheduler.Job(\"job\", {\n name: \"test-job\",\n description: \"test job\",\n schedule: \"*/2 * * * *\",\n pubsubTarget: {\n topicName: topic.id,\n data: std.base64encode({\n input: \"test\",\n }).then(invoke =\u003e invoke.result),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ntopic = gcp.pubsub.Topic(\"topic\", name=\"job-topic\")\njob = gcp.cloudscheduler.Job(\"job\",\n name=\"test-job\",\n description=\"test job\",\n schedule=\"*/2 * * * *\",\n pubsub_target={\n \"topic_name\": topic.id,\n \"data\": std.base64encode(input=\"test\").result,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n Name = \"job-topic\",\n });\n\n var job = new Gcp.CloudScheduler.Job(\"job\", new()\n {\n Name = \"test-job\",\n Description = \"test job\",\n Schedule = \"*/2 * * * *\",\n PubsubTarget = new Gcp.CloudScheduler.Inputs.JobPubsubTargetArgs\n {\n TopicName = topic.Id,\n Data = Std.Base64encode.Invoke(new()\n {\n Input = \"test\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudscheduler\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttopic, err := pubsub.NewTopic(ctx, \"topic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"job-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeBase64encode, err := std.Base64encode(ctx, \u0026std.Base64encodeArgs{\n\t\t\tInput: \"test\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudscheduler.NewJob(ctx, \"job\", \u0026cloudscheduler.JobArgs{\n\t\t\tName: pulumi.String(\"test-job\"),\n\t\t\tDescription: pulumi.String(\"test job\"),\n\t\t\tSchedule: pulumi.String(\"*/2 * * * *\"),\n\t\t\tPubsubTarget: \u0026cloudscheduler.JobPubsubTargetArgs{\n\t\t\t\tTopicName: topic.ID(),\n\t\t\t\tData: pulumi.String(invokeBase64encode.Result),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.cloudscheduler.Job;\nimport com.pulumi.gcp.cloudscheduler.JobArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobPubsubTargetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var topic = new Topic(\"topic\", TopicArgs.builder()\n .name(\"job-topic\")\n .build());\n\n var job = new Job(\"job\", JobArgs.builder()\n .name(\"test-job\")\n .description(\"test job\")\n .schedule(\"*/2 * * * *\")\n .pubsubTarget(JobPubsubTargetArgs.builder()\n .topicName(topic.id())\n .data(StdFunctions.base64encode(Base64encodeArgs.builder()\n .input(\"test\")\n .build()).result())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: job-topic\n job:\n type: gcp:cloudscheduler:Job\n properties:\n name: test-job\n description: test job\n schedule: '*/2 * * * *'\n pubsubTarget:\n topicName: ${topic.id}\n data:\n fn::invoke:\n Function: std:base64encode\n Arguments:\n input: test\n Return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Scheduler Job Http\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst job = new gcp.cloudscheduler.Job(\"job\", {\n name: \"test-job\",\n description: \"test http job\",\n schedule: \"*/8 * * * *\",\n timeZone: \"America/New_York\",\n attemptDeadline: \"320s\",\n retryConfig: {\n retryCount: 1,\n },\n httpTarget: {\n httpMethod: \"POST\",\n uri: \"https://example.com/\",\n body: std.base64encode({\n input: \"{\\\"foo\\\":\\\"bar\\\"}\",\n }).then(invoke =\u003e invoke.result),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\njob = gcp.cloudscheduler.Job(\"job\",\n name=\"test-job\",\n description=\"test http job\",\n schedule=\"*/8 * * * *\",\n time_zone=\"America/New_York\",\n attempt_deadline=\"320s\",\n retry_config={\n \"retry_count\": 1,\n },\n http_target={\n \"http_method\": \"POST\",\n \"uri\": \"https://example.com/\",\n \"body\": std.base64encode(input=\"{\\\"foo\\\":\\\"bar\\\"}\").result,\n \"headers\": {\n \"content__type\": \"application/json\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var job = new Gcp.CloudScheduler.Job(\"job\", new()\n {\n Name = \"test-job\",\n Description = \"test http job\",\n Schedule = \"*/8 * * * *\",\n TimeZone = \"America/New_York\",\n AttemptDeadline = \"320s\",\n RetryConfig = new Gcp.CloudScheduler.Inputs.JobRetryConfigArgs\n {\n RetryCount = 1,\n },\n HttpTarget = new Gcp.CloudScheduler.Inputs.JobHttpTargetArgs\n {\n HttpMethod = \"POST\",\n Uri = \"https://example.com/\",\n Body = Std.Base64encode.Invoke(new()\n {\n Input = \"{\\\"foo\\\":\\\"bar\\\"}\",\n }).Apply(invoke =\u003e invoke.Result),\n Headers = \n {\n { \"Content-Type\", \"application/json\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudscheduler\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeBase64encode, err := std.Base64encode(ctx, \u0026std.Base64encodeArgs{\n\t\t\tInput: \"{\\\"foo\\\":\\\"bar\\\"}\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudscheduler.NewJob(ctx, \"job\", \u0026cloudscheduler.JobArgs{\n\t\t\tName: pulumi.String(\"test-job\"),\n\t\t\tDescription: pulumi.String(\"test http job\"),\n\t\t\tSchedule: pulumi.String(\"*/8 * * * *\"),\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tAttemptDeadline: pulumi.String(\"320s\"),\n\t\t\tRetryConfig: \u0026cloudscheduler.JobRetryConfigArgs{\n\t\t\t\tRetryCount: pulumi.Int(1),\n\t\t\t},\n\t\t\tHttpTarget: \u0026cloudscheduler.JobHttpTargetArgs{\n\t\t\t\tHttpMethod: pulumi.String(\"POST\"),\n\t\t\t\tUri: pulumi.String(\"https://example.com/\"),\n\t\t\t\tBody: pulumi.String(invokeBase64encode.Result),\n\t\t\t\tHeaders: pulumi.StringMap{\n\t\t\t\t\t\"Content-Type\": pulumi.String(\"application/json\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudscheduler.Job;\nimport com.pulumi.gcp.cloudscheduler.JobArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobRetryConfigArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var job = new Job(\"job\", JobArgs.builder()\n .name(\"test-job\")\n .description(\"test http job\")\n .schedule(\"*/8 * * * *\")\n .timeZone(\"America/New_York\")\n .attemptDeadline(\"320s\")\n .retryConfig(JobRetryConfigArgs.builder()\n .retryCount(1)\n .build())\n .httpTarget(JobHttpTargetArgs.builder()\n .httpMethod(\"POST\")\n .uri(\"https://example.com/\")\n .body(StdFunctions.base64encode(Base64encodeArgs.builder()\n .input(\"{\\\"foo\\\":\\\"bar\\\"}\")\n .build()).result())\n .headers(Map.of(\"Content-Type\", \"application/json\"))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n job:\n type: gcp:cloudscheduler:Job\n properties:\n name: test-job\n description: test http job\n schedule: '*/8 * * * *'\n timeZone: America/New_York\n attemptDeadline: 320s\n retryConfig:\n retryCount: 1\n httpTarget:\n httpMethod: POST\n uri: https://example.com/\n body:\n fn::invoke:\n Function: std:base64encode\n Arguments:\n input: '{\"foo\":\"bar\"}'\n Return: result\n headers:\n Content-Type: application/json\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Scheduler Job Paused\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst job = new gcp.cloudscheduler.Job(\"job\", {\n paused: true,\n name: \"test-job\",\n description: \"test http job with updated fields\",\n schedule: \"*/8 * * * *\",\n timeZone: \"America/New_York\",\n attemptDeadline: \"320s\",\n retryConfig: {\n retryCount: 1,\n },\n httpTarget: {\n httpMethod: \"POST\",\n uri: \"https://example.com/ping\",\n body: std.base64encode({\n input: \"{\\\"foo\\\":\\\"bar\\\"}\",\n }).then(invoke =\u003e invoke.result),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\njob = gcp.cloudscheduler.Job(\"job\",\n paused=True,\n name=\"test-job\",\n description=\"test http job with updated fields\",\n schedule=\"*/8 * * * *\",\n time_zone=\"America/New_York\",\n attempt_deadline=\"320s\",\n retry_config={\n \"retry_count\": 1,\n },\n http_target={\n \"http_method\": \"POST\",\n \"uri\": \"https://example.com/ping\",\n \"body\": std.base64encode(input=\"{\\\"foo\\\":\\\"bar\\\"}\").result,\n \"headers\": {\n \"content__type\": \"application/json\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var job = new Gcp.CloudScheduler.Job(\"job\", new()\n {\n Paused = true,\n Name = \"test-job\",\n Description = \"test http job with updated fields\",\n Schedule = \"*/8 * * * *\",\n TimeZone = \"America/New_York\",\n AttemptDeadline = \"320s\",\n RetryConfig = new Gcp.CloudScheduler.Inputs.JobRetryConfigArgs\n {\n RetryCount = 1,\n },\n HttpTarget = new Gcp.CloudScheduler.Inputs.JobHttpTargetArgs\n {\n HttpMethod = \"POST\",\n Uri = \"https://example.com/ping\",\n Body = Std.Base64encode.Invoke(new()\n {\n Input = \"{\\\"foo\\\":\\\"bar\\\"}\",\n }).Apply(invoke =\u003e invoke.Result),\n Headers = \n {\n { \"Content-Type\", \"application/json\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudscheduler\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeBase64encode, err := std.Base64encode(ctx, \u0026std.Base64encodeArgs{\n\t\t\tInput: \"{\\\"foo\\\":\\\"bar\\\"}\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudscheduler.NewJob(ctx, \"job\", \u0026cloudscheduler.JobArgs{\n\t\t\tPaused: pulumi.Bool(true),\n\t\t\tName: pulumi.String(\"test-job\"),\n\t\t\tDescription: pulumi.String(\"test http job with updated fields\"),\n\t\t\tSchedule: pulumi.String(\"*/8 * * * *\"),\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tAttemptDeadline: pulumi.String(\"320s\"),\n\t\t\tRetryConfig: \u0026cloudscheduler.JobRetryConfigArgs{\n\t\t\t\tRetryCount: pulumi.Int(1),\n\t\t\t},\n\t\t\tHttpTarget: \u0026cloudscheduler.JobHttpTargetArgs{\n\t\t\t\tHttpMethod: pulumi.String(\"POST\"),\n\t\t\t\tUri: pulumi.String(\"https://example.com/ping\"),\n\t\t\t\tBody: pulumi.String(invokeBase64encode.Result),\n\t\t\t\tHeaders: pulumi.StringMap{\n\t\t\t\t\t\"Content-Type\": pulumi.String(\"application/json\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudscheduler.Job;\nimport com.pulumi.gcp.cloudscheduler.JobArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobRetryConfigArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var job = new Job(\"job\", JobArgs.builder()\n .paused(true)\n .name(\"test-job\")\n .description(\"test http job with updated fields\")\n .schedule(\"*/8 * * * *\")\n .timeZone(\"America/New_York\")\n .attemptDeadline(\"320s\")\n .retryConfig(JobRetryConfigArgs.builder()\n .retryCount(1)\n .build())\n .httpTarget(JobHttpTargetArgs.builder()\n .httpMethod(\"POST\")\n .uri(\"https://example.com/ping\")\n .body(StdFunctions.base64encode(Base64encodeArgs.builder()\n .input(\"{\\\"foo\\\":\\\"bar\\\"}\")\n .build()).result())\n .headers(Map.of(\"Content-Type\", \"application/json\"))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n job:\n type: gcp:cloudscheduler:Job\n properties:\n paused: true\n name: test-job\n description: test http job with updated fields\n schedule: '*/8 * * * *'\n timeZone: America/New_York\n attemptDeadline: 320s\n retryConfig:\n retryCount: 1\n httpTarget:\n httpMethod: POST\n uri: https://example.com/ping\n body:\n fn::invoke:\n Function: std:base64encode\n Arguments:\n input: '{\"foo\":\"bar\"}'\n Return: result\n headers:\n Content-Type: application/json\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Scheduler Job App Engine\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst job = new gcp.cloudscheduler.Job(\"job\", {\n name: \"test-job\",\n schedule: \"*/4 * * * *\",\n description: \"test app engine job\",\n timeZone: \"Europe/London\",\n attemptDeadline: \"320s\",\n retryConfig: {\n minBackoffDuration: \"1s\",\n maxRetryDuration: \"10s\",\n maxDoublings: 2,\n retryCount: 3,\n },\n appEngineHttpTarget: {\n httpMethod: \"POST\",\n appEngineRouting: {\n service: \"web\",\n version: \"prod\",\n instance: \"my-instance-001\",\n },\n relativeUri: \"/ping\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\njob = gcp.cloudscheduler.Job(\"job\",\n name=\"test-job\",\n schedule=\"*/4 * * * *\",\n description=\"test app engine job\",\n time_zone=\"Europe/London\",\n attempt_deadline=\"320s\",\n retry_config={\n \"min_backoff_duration\": \"1s\",\n \"max_retry_duration\": \"10s\",\n \"max_doublings\": 2,\n \"retry_count\": 3,\n },\n app_engine_http_target={\n \"http_method\": \"POST\",\n \"app_engine_routing\": {\n \"service\": \"web\",\n \"version\": \"prod\",\n \"instance\": \"my-instance-001\",\n },\n \"relative_uri\": \"/ping\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var job = new Gcp.CloudScheduler.Job(\"job\", new()\n {\n Name = \"test-job\",\n Schedule = \"*/4 * * * *\",\n Description = \"test app engine job\",\n TimeZone = \"Europe/London\",\n AttemptDeadline = \"320s\",\n RetryConfig = new Gcp.CloudScheduler.Inputs.JobRetryConfigArgs\n {\n MinBackoffDuration = \"1s\",\n MaxRetryDuration = \"10s\",\n MaxDoublings = 2,\n RetryCount = 3,\n },\n AppEngineHttpTarget = new Gcp.CloudScheduler.Inputs.JobAppEngineHttpTargetArgs\n {\n HttpMethod = \"POST\",\n AppEngineRouting = new Gcp.CloudScheduler.Inputs.JobAppEngineHttpTargetAppEngineRoutingArgs\n {\n Service = \"web\",\n Version = \"prod\",\n Instance = \"my-instance-001\",\n },\n RelativeUri = \"/ping\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudscheduler\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudscheduler.NewJob(ctx, \"job\", \u0026cloudscheduler.JobArgs{\n\t\t\tName: pulumi.String(\"test-job\"),\n\t\t\tSchedule: pulumi.String(\"*/4 * * * *\"),\n\t\t\tDescription: pulumi.String(\"test app engine job\"),\n\t\t\tTimeZone: pulumi.String(\"Europe/London\"),\n\t\t\tAttemptDeadline: pulumi.String(\"320s\"),\n\t\t\tRetryConfig: \u0026cloudscheduler.JobRetryConfigArgs{\n\t\t\t\tMinBackoffDuration: pulumi.String(\"1s\"),\n\t\t\t\tMaxRetryDuration: pulumi.String(\"10s\"),\n\t\t\t\tMaxDoublings: pulumi.Int(2),\n\t\t\t\tRetryCount: pulumi.Int(3),\n\t\t\t},\n\t\t\tAppEngineHttpTarget: \u0026cloudscheduler.JobAppEngineHttpTargetArgs{\n\t\t\t\tHttpMethod: pulumi.String(\"POST\"),\n\t\t\t\tAppEngineRouting: \u0026cloudscheduler.JobAppEngineHttpTargetAppEngineRoutingArgs{\n\t\t\t\t\tService: pulumi.String(\"web\"),\n\t\t\t\t\tVersion: pulumi.String(\"prod\"),\n\t\t\t\t\tInstance: pulumi.String(\"my-instance-001\"),\n\t\t\t\t},\n\t\t\t\tRelativeUri: pulumi.String(\"/ping\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudscheduler.Job;\nimport com.pulumi.gcp.cloudscheduler.JobArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobRetryConfigArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobAppEngineHttpTargetArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobAppEngineHttpTargetAppEngineRoutingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var job = new Job(\"job\", JobArgs.builder()\n .name(\"test-job\")\n .schedule(\"*/4 * * * *\")\n .description(\"test app engine job\")\n .timeZone(\"Europe/London\")\n .attemptDeadline(\"320s\")\n .retryConfig(JobRetryConfigArgs.builder()\n .minBackoffDuration(\"1s\")\n .maxRetryDuration(\"10s\")\n .maxDoublings(2)\n .retryCount(3)\n .build())\n .appEngineHttpTarget(JobAppEngineHttpTargetArgs.builder()\n .httpMethod(\"POST\")\n .appEngineRouting(JobAppEngineHttpTargetAppEngineRoutingArgs.builder()\n .service(\"web\")\n .version(\"prod\")\n .instance(\"my-instance-001\")\n .build())\n .relativeUri(\"/ping\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n job:\n type: gcp:cloudscheduler:Job\n properties:\n name: test-job\n schedule: '*/4 * * * *'\n description: test app engine job\n timeZone: Europe/London\n attemptDeadline: 320s\n retryConfig:\n minBackoffDuration: 1s\n maxRetryDuration: 10s\n maxDoublings: 2\n retryCount: 3\n appEngineHttpTarget:\n httpMethod: POST\n appEngineRouting:\n service: web\n version: prod\n instance: my-instance-001\n relativeUri: /ping\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Scheduler Job Oauth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.compute.getDefaultServiceAccount({});\nconst job = new gcp.cloudscheduler.Job(\"job\", {\n name: \"test-job\",\n description: \"test http job\",\n schedule: \"*/8 * * * *\",\n timeZone: \"America/New_York\",\n attemptDeadline: \"320s\",\n httpTarget: {\n httpMethod: \"GET\",\n uri: \"https://cloudscheduler.googleapis.com/v1/projects/my-project-name/locations/us-west1/jobs\",\n oauthToken: {\n serviceAccountEmail: _default.then(_default =\u003e _default.email),\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_default_service_account()\njob = gcp.cloudscheduler.Job(\"job\",\n name=\"test-job\",\n description=\"test http job\",\n schedule=\"*/8 * * * *\",\n time_zone=\"America/New_York\",\n attempt_deadline=\"320s\",\n http_target={\n \"http_method\": \"GET\",\n \"uri\": \"https://cloudscheduler.googleapis.com/v1/projects/my-project-name/locations/us-west1/jobs\",\n \"oauth_token\": {\n \"service_account_email\": default.email,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Compute.GetDefaultServiceAccount.Invoke();\n\n var job = new Gcp.CloudScheduler.Job(\"job\", new()\n {\n Name = \"test-job\",\n Description = \"test http job\",\n Schedule = \"*/8 * * * *\",\n TimeZone = \"America/New_York\",\n AttemptDeadline = \"320s\",\n HttpTarget = new Gcp.CloudScheduler.Inputs.JobHttpTargetArgs\n {\n HttpMethod = \"GET\",\n Uri = \"https://cloudscheduler.googleapis.com/v1/projects/my-project-name/locations/us-west1/jobs\",\n OauthToken = new Gcp.CloudScheduler.Inputs.JobHttpTargetOauthTokenArgs\n {\n ServiceAccountEmail = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Email)),\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudscheduler\"\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_default, err := compute.GetDefaultServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudscheduler.NewJob(ctx, \"job\", \u0026cloudscheduler.JobArgs{\n\t\t\tName: pulumi.String(\"test-job\"),\n\t\t\tDescription: pulumi.String(\"test http job\"),\n\t\t\tSchedule: pulumi.String(\"*/8 * * * *\"),\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tAttemptDeadline: pulumi.String(\"320s\"),\n\t\t\tHttpTarget: \u0026cloudscheduler.JobHttpTargetArgs{\n\t\t\t\tHttpMethod: pulumi.String(\"GET\"),\n\t\t\t\tUri: pulumi.String(\"https://cloudscheduler.googleapis.com/v1/projects/my-project-name/locations/us-west1/jobs\"),\n\t\t\t\tOauthToken: \u0026cloudscheduler.JobHttpTargetOauthTokenArgs{\n\t\t\t\t\tServiceAccountEmail: pulumi.String(_default.Email),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetDefaultServiceAccountArgs;\nimport com.pulumi.gcp.cloudscheduler.Job;\nimport com.pulumi.gcp.cloudscheduler.JobArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetOauthTokenArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = ComputeFunctions.getDefaultServiceAccount();\n\n var job = new Job(\"job\", JobArgs.builder()\n .name(\"test-job\")\n .description(\"test http job\")\n .schedule(\"*/8 * * * *\")\n .timeZone(\"America/New_York\")\n .attemptDeadline(\"320s\")\n .httpTarget(JobHttpTargetArgs.builder()\n .httpMethod(\"GET\")\n .uri(\"https://cloudscheduler.googleapis.com/v1/projects/my-project-name/locations/us-west1/jobs\")\n .oauthToken(JobHttpTargetOauthTokenArgs.builder()\n .serviceAccountEmail(default_.email())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n job:\n type: gcp:cloudscheduler:Job\n properties:\n name: test-job\n description: test http job\n schedule: '*/8 * * * *'\n timeZone: America/New_York\n attemptDeadline: 320s\n httpTarget:\n httpMethod: GET\n uri: https://cloudscheduler.googleapis.com/v1/projects/my-project-name/locations/us-west1/jobs\n oauthToken:\n serviceAccountEmail: ${default.email}\nvariables:\n default:\n fn::invoke:\n Function: gcp:compute:getDefaultServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Scheduler Job Oidc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.compute.getDefaultServiceAccount({});\nconst job = new gcp.cloudscheduler.Job(\"job\", {\n name: \"test-job\",\n description: \"test http job\",\n schedule: \"*/8 * * * *\",\n timeZone: \"America/New_York\",\n attemptDeadline: \"320s\",\n httpTarget: {\n httpMethod: \"GET\",\n uri: \"https://example.com/ping\",\n oidcToken: {\n serviceAccountEmail: _default.then(_default =\u003e _default.email),\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_default_service_account()\njob = gcp.cloudscheduler.Job(\"job\",\n name=\"test-job\",\n description=\"test http job\",\n schedule=\"*/8 * * * *\",\n time_zone=\"America/New_York\",\n attempt_deadline=\"320s\",\n http_target={\n \"http_method\": \"GET\",\n \"uri\": \"https://example.com/ping\",\n \"oidc_token\": {\n \"service_account_email\": default.email,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Compute.GetDefaultServiceAccount.Invoke();\n\n var job = new Gcp.CloudScheduler.Job(\"job\", new()\n {\n Name = \"test-job\",\n Description = \"test http job\",\n Schedule = \"*/8 * * * *\",\n TimeZone = \"America/New_York\",\n AttemptDeadline = \"320s\",\n HttpTarget = new Gcp.CloudScheduler.Inputs.JobHttpTargetArgs\n {\n HttpMethod = \"GET\",\n Uri = \"https://example.com/ping\",\n OidcToken = new Gcp.CloudScheduler.Inputs.JobHttpTargetOidcTokenArgs\n {\n ServiceAccountEmail = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Email)),\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudscheduler\"\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_default, err := compute.GetDefaultServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudscheduler.NewJob(ctx, \"job\", \u0026cloudscheduler.JobArgs{\n\t\t\tName: pulumi.String(\"test-job\"),\n\t\t\tDescription: pulumi.String(\"test http job\"),\n\t\t\tSchedule: pulumi.String(\"*/8 * * * *\"),\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tAttemptDeadline: pulumi.String(\"320s\"),\n\t\t\tHttpTarget: \u0026cloudscheduler.JobHttpTargetArgs{\n\t\t\t\tHttpMethod: pulumi.String(\"GET\"),\n\t\t\t\tUri: pulumi.String(\"https://example.com/ping\"),\n\t\t\t\tOidcToken: \u0026cloudscheduler.JobHttpTargetOidcTokenArgs{\n\t\t\t\t\tServiceAccountEmail: pulumi.String(_default.Email),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetDefaultServiceAccountArgs;\nimport com.pulumi.gcp.cloudscheduler.Job;\nimport com.pulumi.gcp.cloudscheduler.JobArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetOidcTokenArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = ComputeFunctions.getDefaultServiceAccount();\n\n var job = new Job(\"job\", JobArgs.builder()\n .name(\"test-job\")\n .description(\"test http job\")\n .schedule(\"*/8 * * * *\")\n .timeZone(\"America/New_York\")\n .attemptDeadline(\"320s\")\n .httpTarget(JobHttpTargetArgs.builder()\n .httpMethod(\"GET\")\n .uri(\"https://example.com/ping\")\n .oidcToken(JobHttpTargetOidcTokenArgs.builder()\n .serviceAccountEmail(default_.email())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n job:\n type: gcp:cloudscheduler:Job\n properties:\n name: test-job\n description: test http job\n schedule: '*/8 * * * *'\n timeZone: America/New_York\n attemptDeadline: 320s\n httpTarget:\n httpMethod: GET\n uri: https://example.com/ping\n oidcToken:\n serviceAccountEmail: ${default.email}\nvariables:\n default:\n fn::invoke:\n Function: gcp:compute:getDefaultServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nJob can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/jobs/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Job can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudscheduler/job:Job default projects/{{project}}/locations/{{region}}/jobs/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudscheduler/job:Job default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudscheduler/job:Job default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudscheduler/job:Job default {{name}}\n```\n\n", + "description": "A scheduled job that can publish a PubSub message or an HTTP request\nevery X interval of time, using a crontab format string.\n\n\nTo get more information about Job, see:\n\n* [API documentation](https://cloud.google.com/scheduler/docs/reference/rest/)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/scheduler/)\n\n## Example Usage\n\n### Scheduler Job Pubsub\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"job-topic\"});\nconst job = new gcp.cloudscheduler.Job(\"job\", {\n name: \"test-job\",\n description: \"test job\",\n schedule: \"*/2 * * * *\",\n pubsubTarget: {\n topicName: topic.id,\n data: std.base64encode({\n input: \"test\",\n }).then(invoke =\u003e invoke.result),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ntopic = gcp.pubsub.Topic(\"topic\", name=\"job-topic\")\njob = gcp.cloudscheduler.Job(\"job\",\n name=\"test-job\",\n description=\"test job\",\n schedule=\"*/2 * * * *\",\n pubsub_target={\n \"topic_name\": topic.id,\n \"data\": std.base64encode(input=\"test\").result,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n Name = \"job-topic\",\n });\n\n var job = new Gcp.CloudScheduler.Job(\"job\", new()\n {\n Name = \"test-job\",\n Description = \"test job\",\n Schedule = \"*/2 * * * *\",\n PubsubTarget = new Gcp.CloudScheduler.Inputs.JobPubsubTargetArgs\n {\n TopicName = topic.Id,\n Data = Std.Base64encode.Invoke(new()\n {\n Input = \"test\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudscheduler\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttopic, err := pubsub.NewTopic(ctx, \"topic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"job-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeBase64encode, err := std.Base64encode(ctx, \u0026std.Base64encodeArgs{\n\t\t\tInput: \"test\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudscheduler.NewJob(ctx, \"job\", \u0026cloudscheduler.JobArgs{\n\t\t\tName: pulumi.String(\"test-job\"),\n\t\t\tDescription: pulumi.String(\"test job\"),\n\t\t\tSchedule: pulumi.String(\"*/2 * * * *\"),\n\t\t\tPubsubTarget: \u0026cloudscheduler.JobPubsubTargetArgs{\n\t\t\t\tTopicName: topic.ID(),\n\t\t\t\tData: pulumi.String(invokeBase64encode.Result),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.cloudscheduler.Job;\nimport com.pulumi.gcp.cloudscheduler.JobArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobPubsubTargetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var topic = new Topic(\"topic\", TopicArgs.builder()\n .name(\"job-topic\")\n .build());\n\n var job = new Job(\"job\", JobArgs.builder()\n .name(\"test-job\")\n .description(\"test job\")\n .schedule(\"*/2 * * * *\")\n .pubsubTarget(JobPubsubTargetArgs.builder()\n .topicName(topic.id())\n .data(StdFunctions.base64encode(Base64encodeArgs.builder()\n .input(\"test\")\n .build()).result())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: job-topic\n job:\n type: gcp:cloudscheduler:Job\n properties:\n name: test-job\n description: test job\n schedule: '*/2 * * * *'\n pubsubTarget:\n topicName: ${topic.id}\n data:\n fn::invoke:\n Function: std:base64encode\n Arguments:\n input: test\n Return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Scheduler Job Http\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst job = new gcp.cloudscheduler.Job(\"job\", {\n name: \"test-job\",\n description: \"test http job\",\n schedule: \"*/8 * * * *\",\n timeZone: \"America/New_York\",\n attemptDeadline: \"320s\",\n retryConfig: {\n retryCount: 1,\n },\n httpTarget: {\n httpMethod: \"POST\",\n uri: \"https://example.com/\",\n body: std.base64encode({\n input: \"{\\\"foo\\\":\\\"bar\\\"}\",\n }).then(invoke =\u003e invoke.result),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\njob = gcp.cloudscheduler.Job(\"job\",\n name=\"test-job\",\n description=\"test http job\",\n schedule=\"*/8 * * * *\",\n time_zone=\"America/New_York\",\n attempt_deadline=\"320s\",\n retry_config={\n \"retry_count\": 1,\n },\n http_target={\n \"http_method\": \"POST\",\n \"uri\": \"https://example.com/\",\n \"body\": std.base64encode(input=\"{\\\"foo\\\":\\\"bar\\\"}\").result,\n \"headers\": {\n \"Content-Type\": \"application/json\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var job = new Gcp.CloudScheduler.Job(\"job\", new()\n {\n Name = \"test-job\",\n Description = \"test http job\",\n Schedule = \"*/8 * * * *\",\n TimeZone = \"America/New_York\",\n AttemptDeadline = \"320s\",\n RetryConfig = new Gcp.CloudScheduler.Inputs.JobRetryConfigArgs\n {\n RetryCount = 1,\n },\n HttpTarget = new Gcp.CloudScheduler.Inputs.JobHttpTargetArgs\n {\n HttpMethod = \"POST\",\n Uri = \"https://example.com/\",\n Body = Std.Base64encode.Invoke(new()\n {\n Input = \"{\\\"foo\\\":\\\"bar\\\"}\",\n }).Apply(invoke =\u003e invoke.Result),\n Headers = \n {\n { \"Content-Type\", \"application/json\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudscheduler\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeBase64encode, err := std.Base64encode(ctx, \u0026std.Base64encodeArgs{\n\t\t\tInput: \"{\\\"foo\\\":\\\"bar\\\"}\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudscheduler.NewJob(ctx, \"job\", \u0026cloudscheduler.JobArgs{\n\t\t\tName: pulumi.String(\"test-job\"),\n\t\t\tDescription: pulumi.String(\"test http job\"),\n\t\t\tSchedule: pulumi.String(\"*/8 * * * *\"),\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tAttemptDeadline: pulumi.String(\"320s\"),\n\t\t\tRetryConfig: \u0026cloudscheduler.JobRetryConfigArgs{\n\t\t\t\tRetryCount: pulumi.Int(1),\n\t\t\t},\n\t\t\tHttpTarget: \u0026cloudscheduler.JobHttpTargetArgs{\n\t\t\t\tHttpMethod: pulumi.String(\"POST\"),\n\t\t\t\tUri: pulumi.String(\"https://example.com/\"),\n\t\t\t\tBody: pulumi.String(invokeBase64encode.Result),\n\t\t\t\tHeaders: pulumi.StringMap{\n\t\t\t\t\t\"Content-Type\": pulumi.String(\"application/json\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudscheduler.Job;\nimport com.pulumi.gcp.cloudscheduler.JobArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobRetryConfigArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var job = new Job(\"job\", JobArgs.builder()\n .name(\"test-job\")\n .description(\"test http job\")\n .schedule(\"*/8 * * * *\")\n .timeZone(\"America/New_York\")\n .attemptDeadline(\"320s\")\n .retryConfig(JobRetryConfigArgs.builder()\n .retryCount(1)\n .build())\n .httpTarget(JobHttpTargetArgs.builder()\n .httpMethod(\"POST\")\n .uri(\"https://example.com/\")\n .body(StdFunctions.base64encode(Base64encodeArgs.builder()\n .input(\"{\\\"foo\\\":\\\"bar\\\"}\")\n .build()).result())\n .headers(Map.of(\"Content-Type\", \"application/json\"))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n job:\n type: gcp:cloudscheduler:Job\n properties:\n name: test-job\n description: test http job\n schedule: '*/8 * * * *'\n timeZone: America/New_York\n attemptDeadline: 320s\n retryConfig:\n retryCount: 1\n httpTarget:\n httpMethod: POST\n uri: https://example.com/\n body:\n fn::invoke:\n Function: std:base64encode\n Arguments:\n input: '{\"foo\":\"bar\"}'\n Return: result\n headers:\n Content-Type: application/json\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Scheduler Job Paused\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst job = new gcp.cloudscheduler.Job(\"job\", {\n paused: true,\n name: \"test-job\",\n description: \"test http job with updated fields\",\n schedule: \"*/8 * * * *\",\n timeZone: \"America/New_York\",\n attemptDeadline: \"320s\",\n retryConfig: {\n retryCount: 1,\n },\n httpTarget: {\n httpMethod: \"POST\",\n uri: \"https://example.com/ping\",\n body: std.base64encode({\n input: \"{\\\"foo\\\":\\\"bar\\\"}\",\n }).then(invoke =\u003e invoke.result),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\njob = gcp.cloudscheduler.Job(\"job\",\n paused=True,\n name=\"test-job\",\n description=\"test http job with updated fields\",\n schedule=\"*/8 * * * *\",\n time_zone=\"America/New_York\",\n attempt_deadline=\"320s\",\n retry_config={\n \"retry_count\": 1,\n },\n http_target={\n \"http_method\": \"POST\",\n \"uri\": \"https://example.com/ping\",\n \"body\": std.base64encode(input=\"{\\\"foo\\\":\\\"bar\\\"}\").result,\n \"headers\": {\n \"Content-Type\": \"application/json\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var job = new Gcp.CloudScheduler.Job(\"job\", new()\n {\n Paused = true,\n Name = \"test-job\",\n Description = \"test http job with updated fields\",\n Schedule = \"*/8 * * * *\",\n TimeZone = \"America/New_York\",\n AttemptDeadline = \"320s\",\n RetryConfig = new Gcp.CloudScheduler.Inputs.JobRetryConfigArgs\n {\n RetryCount = 1,\n },\n HttpTarget = new Gcp.CloudScheduler.Inputs.JobHttpTargetArgs\n {\n HttpMethod = \"POST\",\n Uri = \"https://example.com/ping\",\n Body = Std.Base64encode.Invoke(new()\n {\n Input = \"{\\\"foo\\\":\\\"bar\\\"}\",\n }).Apply(invoke =\u003e invoke.Result),\n Headers = \n {\n { \"Content-Type\", \"application/json\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudscheduler\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeBase64encode, err := std.Base64encode(ctx, \u0026std.Base64encodeArgs{\n\t\t\tInput: \"{\\\"foo\\\":\\\"bar\\\"}\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudscheduler.NewJob(ctx, \"job\", \u0026cloudscheduler.JobArgs{\n\t\t\tPaused: pulumi.Bool(true),\n\t\t\tName: pulumi.String(\"test-job\"),\n\t\t\tDescription: pulumi.String(\"test http job with updated fields\"),\n\t\t\tSchedule: pulumi.String(\"*/8 * * * *\"),\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tAttemptDeadline: pulumi.String(\"320s\"),\n\t\t\tRetryConfig: \u0026cloudscheduler.JobRetryConfigArgs{\n\t\t\t\tRetryCount: pulumi.Int(1),\n\t\t\t},\n\t\t\tHttpTarget: \u0026cloudscheduler.JobHttpTargetArgs{\n\t\t\t\tHttpMethod: pulumi.String(\"POST\"),\n\t\t\t\tUri: pulumi.String(\"https://example.com/ping\"),\n\t\t\t\tBody: pulumi.String(invokeBase64encode.Result),\n\t\t\t\tHeaders: pulumi.StringMap{\n\t\t\t\t\t\"Content-Type\": pulumi.String(\"application/json\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudscheduler.Job;\nimport com.pulumi.gcp.cloudscheduler.JobArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobRetryConfigArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var job = new Job(\"job\", JobArgs.builder()\n .paused(true)\n .name(\"test-job\")\n .description(\"test http job with updated fields\")\n .schedule(\"*/8 * * * *\")\n .timeZone(\"America/New_York\")\n .attemptDeadline(\"320s\")\n .retryConfig(JobRetryConfigArgs.builder()\n .retryCount(1)\n .build())\n .httpTarget(JobHttpTargetArgs.builder()\n .httpMethod(\"POST\")\n .uri(\"https://example.com/ping\")\n .body(StdFunctions.base64encode(Base64encodeArgs.builder()\n .input(\"{\\\"foo\\\":\\\"bar\\\"}\")\n .build()).result())\n .headers(Map.of(\"Content-Type\", \"application/json\"))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n job:\n type: gcp:cloudscheduler:Job\n properties:\n paused: true\n name: test-job\n description: test http job with updated fields\n schedule: '*/8 * * * *'\n timeZone: America/New_York\n attemptDeadline: 320s\n retryConfig:\n retryCount: 1\n httpTarget:\n httpMethod: POST\n uri: https://example.com/ping\n body:\n fn::invoke:\n Function: std:base64encode\n Arguments:\n input: '{\"foo\":\"bar\"}'\n Return: result\n headers:\n Content-Type: application/json\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Scheduler Job App Engine\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst job = new gcp.cloudscheduler.Job(\"job\", {\n name: \"test-job\",\n schedule: \"*/4 * * * *\",\n description: \"test app engine job\",\n timeZone: \"Europe/London\",\n attemptDeadline: \"320s\",\n retryConfig: {\n minBackoffDuration: \"1s\",\n maxRetryDuration: \"10s\",\n maxDoublings: 2,\n retryCount: 3,\n },\n appEngineHttpTarget: {\n httpMethod: \"POST\",\n appEngineRouting: {\n service: \"web\",\n version: \"prod\",\n instance: \"my-instance-001\",\n },\n relativeUri: \"/ping\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\njob = gcp.cloudscheduler.Job(\"job\",\n name=\"test-job\",\n schedule=\"*/4 * * * *\",\n description=\"test app engine job\",\n time_zone=\"Europe/London\",\n attempt_deadline=\"320s\",\n retry_config={\n \"min_backoff_duration\": \"1s\",\n \"max_retry_duration\": \"10s\",\n \"max_doublings\": 2,\n \"retry_count\": 3,\n },\n app_engine_http_target={\n \"http_method\": \"POST\",\n \"app_engine_routing\": {\n \"service\": \"web\",\n \"version\": \"prod\",\n \"instance\": \"my-instance-001\",\n },\n \"relative_uri\": \"/ping\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var job = new Gcp.CloudScheduler.Job(\"job\", new()\n {\n Name = \"test-job\",\n Schedule = \"*/4 * * * *\",\n Description = \"test app engine job\",\n TimeZone = \"Europe/London\",\n AttemptDeadline = \"320s\",\n RetryConfig = new Gcp.CloudScheduler.Inputs.JobRetryConfigArgs\n {\n MinBackoffDuration = \"1s\",\n MaxRetryDuration = \"10s\",\n MaxDoublings = 2,\n RetryCount = 3,\n },\n AppEngineHttpTarget = new Gcp.CloudScheduler.Inputs.JobAppEngineHttpTargetArgs\n {\n HttpMethod = \"POST\",\n AppEngineRouting = new Gcp.CloudScheduler.Inputs.JobAppEngineHttpTargetAppEngineRoutingArgs\n {\n Service = \"web\",\n Version = \"prod\",\n Instance = \"my-instance-001\",\n },\n RelativeUri = \"/ping\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudscheduler\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudscheduler.NewJob(ctx, \"job\", \u0026cloudscheduler.JobArgs{\n\t\t\tName: pulumi.String(\"test-job\"),\n\t\t\tSchedule: pulumi.String(\"*/4 * * * *\"),\n\t\t\tDescription: pulumi.String(\"test app engine job\"),\n\t\t\tTimeZone: pulumi.String(\"Europe/London\"),\n\t\t\tAttemptDeadline: pulumi.String(\"320s\"),\n\t\t\tRetryConfig: \u0026cloudscheduler.JobRetryConfigArgs{\n\t\t\t\tMinBackoffDuration: pulumi.String(\"1s\"),\n\t\t\t\tMaxRetryDuration: pulumi.String(\"10s\"),\n\t\t\t\tMaxDoublings: pulumi.Int(2),\n\t\t\t\tRetryCount: pulumi.Int(3),\n\t\t\t},\n\t\t\tAppEngineHttpTarget: \u0026cloudscheduler.JobAppEngineHttpTargetArgs{\n\t\t\t\tHttpMethod: pulumi.String(\"POST\"),\n\t\t\t\tAppEngineRouting: \u0026cloudscheduler.JobAppEngineHttpTargetAppEngineRoutingArgs{\n\t\t\t\t\tService: pulumi.String(\"web\"),\n\t\t\t\t\tVersion: pulumi.String(\"prod\"),\n\t\t\t\t\tInstance: pulumi.String(\"my-instance-001\"),\n\t\t\t\t},\n\t\t\t\tRelativeUri: pulumi.String(\"/ping\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudscheduler.Job;\nimport com.pulumi.gcp.cloudscheduler.JobArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobRetryConfigArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobAppEngineHttpTargetArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobAppEngineHttpTargetAppEngineRoutingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var job = new Job(\"job\", JobArgs.builder()\n .name(\"test-job\")\n .schedule(\"*/4 * * * *\")\n .description(\"test app engine job\")\n .timeZone(\"Europe/London\")\n .attemptDeadline(\"320s\")\n .retryConfig(JobRetryConfigArgs.builder()\n .minBackoffDuration(\"1s\")\n .maxRetryDuration(\"10s\")\n .maxDoublings(2)\n .retryCount(3)\n .build())\n .appEngineHttpTarget(JobAppEngineHttpTargetArgs.builder()\n .httpMethod(\"POST\")\n .appEngineRouting(JobAppEngineHttpTargetAppEngineRoutingArgs.builder()\n .service(\"web\")\n .version(\"prod\")\n .instance(\"my-instance-001\")\n .build())\n .relativeUri(\"/ping\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n job:\n type: gcp:cloudscheduler:Job\n properties:\n name: test-job\n schedule: '*/4 * * * *'\n description: test app engine job\n timeZone: Europe/London\n attemptDeadline: 320s\n retryConfig:\n minBackoffDuration: 1s\n maxRetryDuration: 10s\n maxDoublings: 2\n retryCount: 3\n appEngineHttpTarget:\n httpMethod: POST\n appEngineRouting:\n service: web\n version: prod\n instance: my-instance-001\n relativeUri: /ping\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Scheduler Job Oauth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.compute.getDefaultServiceAccount({});\nconst job = new gcp.cloudscheduler.Job(\"job\", {\n name: \"test-job\",\n description: \"test http job\",\n schedule: \"*/8 * * * *\",\n timeZone: \"America/New_York\",\n attemptDeadline: \"320s\",\n httpTarget: {\n httpMethod: \"GET\",\n uri: \"https://cloudscheduler.googleapis.com/v1/projects/my-project-name/locations/us-west1/jobs\",\n oauthToken: {\n serviceAccountEmail: _default.then(_default =\u003e _default.email),\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_default_service_account()\njob = gcp.cloudscheduler.Job(\"job\",\n name=\"test-job\",\n description=\"test http job\",\n schedule=\"*/8 * * * *\",\n time_zone=\"America/New_York\",\n attempt_deadline=\"320s\",\n http_target={\n \"http_method\": \"GET\",\n \"uri\": \"https://cloudscheduler.googleapis.com/v1/projects/my-project-name/locations/us-west1/jobs\",\n \"oauth_token\": {\n \"service_account_email\": default.email,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Compute.GetDefaultServiceAccount.Invoke();\n\n var job = new Gcp.CloudScheduler.Job(\"job\", new()\n {\n Name = \"test-job\",\n Description = \"test http job\",\n Schedule = \"*/8 * * * *\",\n TimeZone = \"America/New_York\",\n AttemptDeadline = \"320s\",\n HttpTarget = new Gcp.CloudScheduler.Inputs.JobHttpTargetArgs\n {\n HttpMethod = \"GET\",\n Uri = \"https://cloudscheduler.googleapis.com/v1/projects/my-project-name/locations/us-west1/jobs\",\n OauthToken = new Gcp.CloudScheduler.Inputs.JobHttpTargetOauthTokenArgs\n {\n ServiceAccountEmail = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Email)),\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudscheduler\"\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_default, err := compute.GetDefaultServiceAccount(ctx, \u0026compute.GetDefaultServiceAccountArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudscheduler.NewJob(ctx, \"job\", \u0026cloudscheduler.JobArgs{\n\t\t\tName: pulumi.String(\"test-job\"),\n\t\t\tDescription: pulumi.String(\"test http job\"),\n\t\t\tSchedule: pulumi.String(\"*/8 * * * *\"),\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tAttemptDeadline: pulumi.String(\"320s\"),\n\t\t\tHttpTarget: \u0026cloudscheduler.JobHttpTargetArgs{\n\t\t\t\tHttpMethod: pulumi.String(\"GET\"),\n\t\t\t\tUri: pulumi.String(\"https://cloudscheduler.googleapis.com/v1/projects/my-project-name/locations/us-west1/jobs\"),\n\t\t\t\tOauthToken: \u0026cloudscheduler.JobHttpTargetOauthTokenArgs{\n\t\t\t\t\tServiceAccountEmail: pulumi.String(_default.Email),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetDefaultServiceAccountArgs;\nimport com.pulumi.gcp.cloudscheduler.Job;\nimport com.pulumi.gcp.cloudscheduler.JobArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetOauthTokenArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = ComputeFunctions.getDefaultServiceAccount();\n\n var job = new Job(\"job\", JobArgs.builder()\n .name(\"test-job\")\n .description(\"test http job\")\n .schedule(\"*/8 * * * *\")\n .timeZone(\"America/New_York\")\n .attemptDeadline(\"320s\")\n .httpTarget(JobHttpTargetArgs.builder()\n .httpMethod(\"GET\")\n .uri(\"https://cloudscheduler.googleapis.com/v1/projects/my-project-name/locations/us-west1/jobs\")\n .oauthToken(JobHttpTargetOauthTokenArgs.builder()\n .serviceAccountEmail(default_.email())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n job:\n type: gcp:cloudscheduler:Job\n properties:\n name: test-job\n description: test http job\n schedule: '*/8 * * * *'\n timeZone: America/New_York\n attemptDeadline: 320s\n httpTarget:\n httpMethod: GET\n uri: https://cloudscheduler.googleapis.com/v1/projects/my-project-name/locations/us-west1/jobs\n oauthToken:\n serviceAccountEmail: ${default.email}\nvariables:\n default:\n fn::invoke:\n Function: gcp:compute:getDefaultServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Scheduler Job Oidc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.compute.getDefaultServiceAccount({});\nconst job = new gcp.cloudscheduler.Job(\"job\", {\n name: \"test-job\",\n description: \"test http job\",\n schedule: \"*/8 * * * *\",\n timeZone: \"America/New_York\",\n attemptDeadline: \"320s\",\n httpTarget: {\n httpMethod: \"GET\",\n uri: \"https://example.com/ping\",\n oidcToken: {\n serviceAccountEmail: _default.then(_default =\u003e _default.email),\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_default_service_account()\njob = gcp.cloudscheduler.Job(\"job\",\n name=\"test-job\",\n description=\"test http job\",\n schedule=\"*/8 * * * *\",\n time_zone=\"America/New_York\",\n attempt_deadline=\"320s\",\n http_target={\n \"http_method\": \"GET\",\n \"uri\": \"https://example.com/ping\",\n \"oidc_token\": {\n \"service_account_email\": default.email,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Compute.GetDefaultServiceAccount.Invoke();\n\n var job = new Gcp.CloudScheduler.Job(\"job\", new()\n {\n Name = \"test-job\",\n Description = \"test http job\",\n Schedule = \"*/8 * * * *\",\n TimeZone = \"America/New_York\",\n AttemptDeadline = \"320s\",\n HttpTarget = new Gcp.CloudScheduler.Inputs.JobHttpTargetArgs\n {\n HttpMethod = \"GET\",\n Uri = \"https://example.com/ping\",\n OidcToken = new Gcp.CloudScheduler.Inputs.JobHttpTargetOidcTokenArgs\n {\n ServiceAccountEmail = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Email)),\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudscheduler\"\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_default, err := compute.GetDefaultServiceAccount(ctx, \u0026compute.GetDefaultServiceAccountArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudscheduler.NewJob(ctx, \"job\", \u0026cloudscheduler.JobArgs{\n\t\t\tName: pulumi.String(\"test-job\"),\n\t\t\tDescription: pulumi.String(\"test http job\"),\n\t\t\tSchedule: pulumi.String(\"*/8 * * * *\"),\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tAttemptDeadline: pulumi.String(\"320s\"),\n\t\t\tHttpTarget: \u0026cloudscheduler.JobHttpTargetArgs{\n\t\t\t\tHttpMethod: pulumi.String(\"GET\"),\n\t\t\t\tUri: pulumi.String(\"https://example.com/ping\"),\n\t\t\t\tOidcToken: \u0026cloudscheduler.JobHttpTargetOidcTokenArgs{\n\t\t\t\t\tServiceAccountEmail: pulumi.String(_default.Email),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetDefaultServiceAccountArgs;\nimport com.pulumi.gcp.cloudscheduler.Job;\nimport com.pulumi.gcp.cloudscheduler.JobArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetArgs;\nimport com.pulumi.gcp.cloudscheduler.inputs.JobHttpTargetOidcTokenArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = ComputeFunctions.getDefaultServiceAccount();\n\n var job = new Job(\"job\", JobArgs.builder()\n .name(\"test-job\")\n .description(\"test http job\")\n .schedule(\"*/8 * * * *\")\n .timeZone(\"America/New_York\")\n .attemptDeadline(\"320s\")\n .httpTarget(JobHttpTargetArgs.builder()\n .httpMethod(\"GET\")\n .uri(\"https://example.com/ping\")\n .oidcToken(JobHttpTargetOidcTokenArgs.builder()\n .serviceAccountEmail(default_.email())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n job:\n type: gcp:cloudscheduler:Job\n properties:\n name: test-job\n description: test http job\n schedule: '*/8 * * * *'\n timeZone: America/New_York\n attemptDeadline: 320s\n httpTarget:\n httpMethod: GET\n uri: https://example.com/ping\n oidcToken:\n serviceAccountEmail: ${default.email}\nvariables:\n default:\n fn::invoke:\n Function: gcp:compute:getDefaultServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nJob can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/jobs/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Job can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudscheduler/job:Job default projects/{{project}}/locations/{{region}}/jobs/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudscheduler/job:Job default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudscheduler/job:Job default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudscheduler/job:Job default {{name}}\n```\n\n", "properties": { "appEngineHttpTarget": { "$ref": "#/types/gcp:cloudscheduler/JobAppEngineHttpTarget:JobAppEngineHttpTarget", @@ -149848,7 +149848,7 @@ } }, "gcp:compute/firewallPolicyWithRules:FirewallPolicyWithRules": { - "description": "## Example Usage\n\n### Compute Firewall Policy With Rules Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst addressGroup1 = new gcp.networksecurity.AddressGroup(\"address_group_1\", {\n name: \"tf-address-group\",\n parent: \"organizations/123456789\",\n description: \"Global address group\",\n location: \"global\",\n items: [\"208.80.154.224/32\"],\n type: \"IPV4\",\n capacity: 100,\n});\nconst securityProfile1 = new gcp.networksecurity.SecurityProfile(\"security_profile_1\", {\n name: \"tf-security-profile\",\n type: \"THREAT_PREVENTION\",\n parent: \"organizations/123456789\",\n location: \"global\",\n});\nconst securityProfileGroup1 = new gcp.networksecurity.SecurityProfileGroup(\"security_profile_group_1\", {\n name: \"tf-security-profile-group\",\n parent: \"organizations/123456789\",\n description: \"my description\",\n threatPreventionProfile: securityProfile1.id,\n});\nconst firewall_policy_with_rules = new gcp.compute.FirewallPolicyWithRules(\"firewall-policy-with-rules\", {\n shortName: \"tf-fw-org-policy-with-rules\",\n description: \"Terraform test\",\n parent: \"organizations/123456789\",\n rules: [\n {\n description: \"tcp rule\",\n priority: 1000,\n enableLogging: true,\n action: \"allow\",\n direction: \"EGRESS\",\n match: {\n layer4Configs: [{\n ipProtocol: \"tcp\",\n ports: [\n \"8080\",\n \"7070\",\n ],\n }],\n destIpRanges: [\"11.100.0.1/32\"],\n destFqdns: [\n \"www.yyy.com\",\n \"www.zzz.com\",\n ],\n destRegionCodes: [\n \"HK\",\n \"IN\",\n ],\n destThreatIntelligences: [\n \"iplist-search-engines-crawlers\",\n \"iplist-tor-exit-nodes\",\n ],\n destAddressGroups: [addressGroup1.id],\n },\n targetResources: [project.then(project =\u003e `https://www.googleapis.com/compute/beta/projects/${project.name}/global/networks/default`)],\n },\n {\n description: \"udp rule\",\n priority: 2000,\n enableLogging: false,\n action: \"deny\",\n direction: \"INGRESS\",\n match: {\n layer4Configs: [{\n ipProtocol: \"udp\",\n }],\n srcIpRanges: [\"0.0.0.0/0\"],\n srcFqdns: [\n \"www.abc.com\",\n \"www.def.com\",\n ],\n srcRegionCodes: [\n \"US\",\n \"CA\",\n ],\n srcThreatIntelligences: [\n \"iplist-known-malicious-ips\",\n \"iplist-public-clouds\",\n ],\n srcAddressGroups: [addressGroup1.id],\n },\n disabled: true,\n },\n {\n description: \"security profile group rule\",\n ruleName: \"tcp rule\",\n priority: 3000,\n enableLogging: false,\n action: \"apply_security_profile_group\",\n direction: \"INGRESS\",\n match: {\n layer4Configs: [{\n ipProtocol: \"tcp\",\n }],\n srcIpRanges: [\"0.0.0.0/0\"],\n },\n targetServiceAccounts: [\"test@google.com\"],\n securityProfileGroup: pulumi.interpolate`//networksecurity.googleapis.com/${securityProfileGroup1.id}`,\n tlsInspect: true,\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\naddress_group1 = gcp.networksecurity.AddressGroup(\"address_group_1\",\n name=\"tf-address-group\",\n parent=\"organizations/123456789\",\n description=\"Global address group\",\n location=\"global\",\n items=[\"208.80.154.224/32\"],\n type=\"IPV4\",\n capacity=100)\nsecurity_profile1 = gcp.networksecurity.SecurityProfile(\"security_profile_1\",\n name=\"tf-security-profile\",\n type=\"THREAT_PREVENTION\",\n parent=\"organizations/123456789\",\n location=\"global\")\nsecurity_profile_group1 = gcp.networksecurity.SecurityProfileGroup(\"security_profile_group_1\",\n name=\"tf-security-profile-group\",\n parent=\"organizations/123456789\",\n description=\"my description\",\n threat_prevention_profile=security_profile1.id)\nfirewall_policy_with_rules = gcp.compute.FirewallPolicyWithRules(\"firewall-policy-with-rules\",\n short_name=\"tf-fw-org-policy-with-rules\",\n description=\"Terraform test\",\n parent=\"organizations/123456789\",\n rules=[\n {\n \"description\": \"tcp rule\",\n \"priority\": 1000,\n \"enable_logging\": True,\n \"action\": \"allow\",\n \"direction\": \"EGRESS\",\n \"match\": {\n \"layer4_configs\": [{\n \"ip_protocol\": \"tcp\",\n \"ports\": [\n \"8080\",\n \"7070\",\n ],\n }],\n \"dest_ip_ranges\": [\"11.100.0.1/32\"],\n \"dest_fqdns\": [\n \"www.yyy.com\",\n \"www.zzz.com\",\n ],\n \"dest_region_codes\": [\n \"HK\",\n \"IN\",\n ],\n \"dest_threat_intelligences\": [\n \"iplist-search-engines-crawlers\",\n \"iplist-tor-exit-nodes\",\n ],\n \"dest_address_groups\": [address_group1.id],\n },\n \"target_resources\": [f\"https://www.googleapis.com/compute/beta/projects/{project.name}/global/networks/default\"],\n },\n {\n \"description\": \"udp rule\",\n \"priority\": 2000,\n \"enable_logging\": False,\n \"action\": \"deny\",\n \"direction\": \"INGRESS\",\n \"match\": {\n \"layer4_configs\": [{\n \"ip_protocol\": \"udp\",\n }],\n \"src_ip_ranges\": [\"0.0.0.0/0\"],\n \"src_fqdns\": [\n \"www.abc.com\",\n \"www.def.com\",\n ],\n \"src_region_codes\": [\n \"US\",\n \"CA\",\n ],\n \"src_threat_intelligences\": [\n \"iplist-known-malicious-ips\",\n \"iplist-public-clouds\",\n ],\n \"src_address_groups\": [address_group1.id],\n },\n \"disabled\": True,\n },\n {\n \"description\": \"security profile group rule\",\n \"rule_name\": \"tcp rule\",\n \"priority\": 3000,\n \"enable_logging\": False,\n \"action\": \"apply_security_profile_group\",\n \"direction\": \"INGRESS\",\n \"match\": {\n \"layer4_configs\": [{\n \"ip_protocol\": \"tcp\",\n }],\n \"src_ip_ranges\": [\"0.0.0.0/0\"],\n },\n \"target_service_accounts\": [\"test@google.com\"],\n \"security_profile_group\": security_profile_group1.id.apply(lambda id: f\"//networksecurity.googleapis.com/{id}\"),\n \"tls_inspect\": 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 project = Gcp.Organizations.GetProject.Invoke();\n\n var addressGroup1 = new Gcp.NetworkSecurity.AddressGroup(\"address_group_1\", new()\n {\n Name = \"tf-address-group\",\n Parent = \"organizations/123456789\",\n Description = \"Global address group\",\n Location = \"global\",\n Items = new[]\n {\n \"208.80.154.224/32\",\n },\n Type = \"IPV4\",\n Capacity = 100,\n });\n\n var securityProfile1 = new Gcp.NetworkSecurity.SecurityProfile(\"security_profile_1\", new()\n {\n Name = \"tf-security-profile\",\n Type = \"THREAT_PREVENTION\",\n Parent = \"organizations/123456789\",\n Location = \"global\",\n });\n\n var securityProfileGroup1 = new Gcp.NetworkSecurity.SecurityProfileGroup(\"security_profile_group_1\", new()\n {\n Name = \"tf-security-profile-group\",\n Parent = \"organizations/123456789\",\n Description = \"my description\",\n ThreatPreventionProfile = securityProfile1.Id,\n });\n\n var firewall_policy_with_rules = new Gcp.Compute.FirewallPolicyWithRules(\"firewall-policy-with-rules\", new()\n {\n ShortName = \"tf-fw-org-policy-with-rules\",\n Description = \"Terraform test\",\n Parent = \"organizations/123456789\",\n Rules = new[]\n {\n new Gcp.Compute.Inputs.FirewallPolicyWithRulesRuleArgs\n {\n Description = \"tcp rule\",\n Priority = 1000,\n EnableLogging = true,\n Action = \"allow\",\n Direction = \"EGRESS\",\n Match = new Gcp.Compute.Inputs.FirewallPolicyWithRulesRuleMatchArgs\n {\n Layer4Configs = new[]\n {\n new Gcp.Compute.Inputs.FirewallPolicyWithRulesRuleMatchLayer4ConfigArgs\n {\n IpProtocol = \"tcp\",\n Ports = new[]\n {\n \"8080\",\n \"7070\",\n },\n },\n },\n DestIpRanges = new[]\n {\n \"11.100.0.1/32\",\n },\n DestFqdns = new[]\n {\n \"www.yyy.com\",\n \"www.zzz.com\",\n },\n DestRegionCodes = new[]\n {\n \"HK\",\n \"IN\",\n },\n DestThreatIntelligences = new[]\n {\n \"iplist-search-engines-crawlers\",\n \"iplist-tor-exit-nodes\",\n },\n DestAddressGroups = new[]\n {\n addressGroup1.Id,\n },\n },\n TargetResources = new[]\n {\n $\"https://www.googleapis.com/compute/beta/projects/{project.Apply(getProjectResult =\u003e getProjectResult.Name)}/global/networks/default\",\n },\n },\n new Gcp.Compute.Inputs.FirewallPolicyWithRulesRuleArgs\n {\n Description = \"udp rule\",\n Priority = 2000,\n EnableLogging = false,\n Action = \"deny\",\n Direction = \"INGRESS\",\n Match = new Gcp.Compute.Inputs.FirewallPolicyWithRulesRuleMatchArgs\n {\n Layer4Configs = new[]\n {\n new Gcp.Compute.Inputs.FirewallPolicyWithRulesRuleMatchLayer4ConfigArgs\n {\n IpProtocol = \"udp\",\n },\n },\n SrcIpRanges = new[]\n {\n \"0.0.0.0/0\",\n },\n SrcFqdns = new[]\n {\n \"www.abc.com\",\n \"www.def.com\",\n },\n SrcRegionCodes = new[]\n {\n \"US\",\n \"CA\",\n },\n SrcThreatIntelligences = new[]\n {\n \"iplist-known-malicious-ips\",\n \"iplist-public-clouds\",\n },\n SrcAddressGroups = new[]\n {\n addressGroup1.Id,\n },\n },\n Disabled = true,\n },\n new Gcp.Compute.Inputs.FirewallPolicyWithRulesRuleArgs\n {\n Description = \"security profile group rule\",\n RuleName = \"tcp rule\",\n Priority = 3000,\n EnableLogging = false,\n Action = \"apply_security_profile_group\",\n Direction = \"INGRESS\",\n Match = new Gcp.Compute.Inputs.FirewallPolicyWithRulesRuleMatchArgs\n {\n Layer4Configs = new[]\n {\n new Gcp.Compute.Inputs.FirewallPolicyWithRulesRuleMatchLayer4ConfigArgs\n {\n IpProtocol = \"tcp\",\n },\n },\n SrcIpRanges = new[]\n {\n \"0.0.0.0/0\",\n },\n },\n TargetServiceAccounts = new[]\n {\n \"test@google.com\",\n },\n SecurityProfileGroup = securityProfileGroup1.Id.Apply(id =\u003e $\"//networksecurity.googleapis.com/{id}\"),\n TlsInspect = true,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taddressGroup1, err := networksecurity.NewAddressGroup(ctx, \"address_group_1\", \u0026networksecurity.AddressGroupArgs{\n\t\t\tName: pulumi.String(\"tf-address-group\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDescription: pulumi.String(\"Global address group\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tItems: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"208.80.154.224/32\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"IPV4\"),\n\t\t\tCapacity: pulumi.Int(100),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecurityProfile1, err := networksecurity.NewSecurityProfile(ctx, \"security_profile_1\", \u0026networksecurity.SecurityProfileArgs{\n\t\t\tName: pulumi.String(\"tf-security-profile\"),\n\t\t\tType: pulumi.String(\"THREAT_PREVENTION\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecurityProfileGroup1, err := networksecurity.NewSecurityProfileGroup(ctx, \"security_profile_group_1\", \u0026networksecurity.SecurityProfileGroupArgs{\n\t\t\tName: pulumi.String(\"tf-security-profile-group\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tThreatPreventionProfile: securityProfile1.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewFirewallPolicyWithRules(ctx, \"firewall-policy-with-rules\", \u0026compute.FirewallPolicyWithRulesArgs{\n\t\t\tShortName: pulumi.String(\"tf-fw-org-policy-with-rules\"),\n\t\t\tDescription: pulumi.String(\"Terraform test\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tRules: compute.FirewallPolicyWithRulesRuleArray{\n\t\t\t\t\u0026compute.FirewallPolicyWithRulesRuleArgs{\n\t\t\t\t\tDescription: pulumi.String(\"tcp rule\"),\n\t\t\t\t\tPriority: pulumi.Int(1000),\n\t\t\t\t\tEnableLogging: pulumi.Bool(true),\n\t\t\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\t\t\tDirection: pulumi.String(\"EGRESS\"),\n\t\t\t\t\tMatch: \u0026compute.FirewallPolicyWithRulesRuleMatchArgs{\n\t\t\t\t\t\tLayer4Configs: compute.FirewallPolicyWithRulesRuleMatchLayer4ConfigArray{\n\t\t\t\t\t\t\t\u0026compute.FirewallPolicyWithRulesRuleMatchLayer4ConfigArgs{\n\t\t\t\t\t\t\t\tIpProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t\t\t\t\tPorts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"8080\"),\n\t\t\t\t\t\t\t\t\tpulumi.String(\"7070\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDestIpRanges: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"11.100.0.1/32\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDestFqdns: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"www.yyy.com\"),\n\t\t\t\t\t\t\tpulumi.String(\"www.zzz.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDestRegionCodes: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"HK\"),\n\t\t\t\t\t\t\tpulumi.String(\"IN\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDestThreatIntelligences: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"iplist-search-engines-crawlers\"),\n\t\t\t\t\t\t\tpulumi.String(\"iplist-tor-exit-nodes\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDestAddressGroups: pulumi.StringArray{\n\t\t\t\t\t\t\taddressGroup1.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tTargetResources: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.Sprintf(\"https://www.googleapis.com/compute/beta/projects/%v/global/networks/default\", project.Name),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026compute.FirewallPolicyWithRulesRuleArgs{\n\t\t\t\t\tDescription: pulumi.String(\"udp rule\"),\n\t\t\t\t\tPriority: pulumi.Int(2000),\n\t\t\t\t\tEnableLogging: pulumi.Bool(false),\n\t\t\t\t\tAction: pulumi.String(\"deny\"),\n\t\t\t\t\tDirection: pulumi.String(\"INGRESS\"),\n\t\t\t\t\tMatch: \u0026compute.FirewallPolicyWithRulesRuleMatchArgs{\n\t\t\t\t\t\tLayer4Configs: compute.FirewallPolicyWithRulesRuleMatchLayer4ConfigArray{\n\t\t\t\t\t\t\t\u0026compute.FirewallPolicyWithRulesRuleMatchLayer4ConfigArgs{\n\t\t\t\t\t\t\t\tIpProtocol: pulumi.String(\"udp\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"0.0.0.0/0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSrcFqdns: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"www.abc.com\"),\n\t\t\t\t\t\t\tpulumi.String(\"www.def.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSrcRegionCodes: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"US\"),\n\t\t\t\t\t\t\tpulumi.String(\"CA\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSrcThreatIntelligences: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"iplist-known-malicious-ips\"),\n\t\t\t\t\t\t\tpulumi.String(\"iplist-public-clouds\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSrcAddressGroups: pulumi.StringArray{\n\t\t\t\t\t\t\taddressGroup1.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tDisabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\t\u0026compute.FirewallPolicyWithRulesRuleArgs{\n\t\t\t\t\tDescription: pulumi.String(\"security profile group rule\"),\n\t\t\t\t\tRuleName: pulumi.String(\"tcp rule\"),\n\t\t\t\t\tPriority: pulumi.Int(3000),\n\t\t\t\t\tEnableLogging: pulumi.Bool(false),\n\t\t\t\t\tAction: pulumi.String(\"apply_security_profile_group\"),\n\t\t\t\t\tDirection: pulumi.String(\"INGRESS\"),\n\t\t\t\t\tMatch: \u0026compute.FirewallPolicyWithRulesRuleMatchArgs{\n\t\t\t\t\t\tLayer4Configs: compute.FirewallPolicyWithRulesRuleMatchLayer4ConfigArray{\n\t\t\t\t\t\t\t\u0026compute.FirewallPolicyWithRulesRuleMatchLayer4ConfigArgs{\n\t\t\t\t\t\t\t\tIpProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"0.0.0.0/0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tTargetServiceAccounts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"test@google.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tSecurityProfileGroup: securityProfileGroup1.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"//networksecurity.googleapis.com/%v\", id), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\tTlsInspect: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.networksecurity.AddressGroup;\nimport com.pulumi.gcp.networksecurity.AddressGroupArgs;\nimport com.pulumi.gcp.networksecurity.SecurityProfile;\nimport com.pulumi.gcp.networksecurity.SecurityProfileArgs;\nimport com.pulumi.gcp.networksecurity.SecurityProfileGroup;\nimport com.pulumi.gcp.networksecurity.SecurityProfileGroupArgs;\nimport com.pulumi.gcp.compute.FirewallPolicyWithRules;\nimport com.pulumi.gcp.compute.FirewallPolicyWithRulesArgs;\nimport com.pulumi.gcp.compute.inputs.FirewallPolicyWithRulesRuleArgs;\nimport com.pulumi.gcp.compute.inputs.FirewallPolicyWithRulesRuleMatchArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var addressGroup1 = new AddressGroup(\"addressGroup1\", AddressGroupArgs.builder()\n .name(\"tf-address-group\")\n .parent(\"organizations/123456789\")\n .description(\"Global address group\")\n .location(\"global\")\n .items(\"208.80.154.224/32\")\n .type(\"IPV4\")\n .capacity(100)\n .build());\n\n var securityProfile1 = new SecurityProfile(\"securityProfile1\", SecurityProfileArgs.builder()\n .name(\"tf-security-profile\")\n .type(\"THREAT_PREVENTION\")\n .parent(\"organizations/123456789\")\n .location(\"global\")\n .build());\n\n var securityProfileGroup1 = new SecurityProfileGroup(\"securityProfileGroup1\", SecurityProfileGroupArgs.builder()\n .name(\"tf-security-profile-group\")\n .parent(\"organizations/123456789\")\n .description(\"my description\")\n .threatPreventionProfile(securityProfile1.id())\n .build());\n\n var firewall_policy_with_rules = new FirewallPolicyWithRules(\"firewall-policy-with-rules\", FirewallPolicyWithRulesArgs.builder()\n .shortName(\"tf-fw-org-policy-with-rules\")\n .description(\"Terraform test\")\n .parent(\"organizations/123456789\")\n .rules( \n FirewallPolicyWithRulesRuleArgs.builder()\n .description(\"tcp rule\")\n .priority(1000)\n .enableLogging(true)\n .action(\"allow\")\n .direction(\"EGRESS\")\n .match(FirewallPolicyWithRulesRuleMatchArgs.builder()\n .layer4Configs(FirewallPolicyWithRulesRuleMatchLayer4ConfigArgs.builder()\n .ipProtocol(\"tcp\")\n .ports( \n 8080,\n 7070)\n .build())\n .destIpRanges(\"11.100.0.1/32\")\n .destFqdns( \n \"www.yyy.com\",\n \"www.zzz.com\")\n .destRegionCodes( \n \"HK\",\n \"IN\")\n .destThreatIntelligences( \n \"iplist-search-engines-crawlers\",\n \"iplist-tor-exit-nodes\")\n .destAddressGroups(addressGroup1.id())\n .build())\n .targetResources(String.format(\"https://www.googleapis.com/compute/beta/projects/%s/global/networks/default\", project.applyValue(getProjectResult -\u003e getProjectResult.name())))\n .build(),\n FirewallPolicyWithRulesRuleArgs.builder()\n .description(\"udp rule\")\n .priority(2000)\n .enableLogging(false)\n .action(\"deny\")\n .direction(\"INGRESS\")\n .match(FirewallPolicyWithRulesRuleMatchArgs.builder()\n .layer4Configs(FirewallPolicyWithRulesRuleMatchLayer4ConfigArgs.builder()\n .ipProtocol(\"udp\")\n .build())\n .srcIpRanges(\"0.0.0.0/0\")\n .srcFqdns( \n \"www.abc.com\",\n \"www.def.com\")\n .srcRegionCodes( \n \"US\",\n \"CA\")\n .srcThreatIntelligences( \n \"iplist-known-malicious-ips\",\n \"iplist-public-clouds\")\n .srcAddressGroups(addressGroup1.id())\n .build())\n .disabled(true)\n .build(),\n FirewallPolicyWithRulesRuleArgs.builder()\n .description(\"security profile group rule\")\n .ruleName(\"tcp rule\")\n .priority(3000)\n .enableLogging(false)\n .action(\"apply_security_profile_group\")\n .direction(\"INGRESS\")\n .match(FirewallPolicyWithRulesRuleMatchArgs.builder()\n .layer4Configs(FirewallPolicyWithRulesRuleMatchLayer4ConfigArgs.builder()\n .ipProtocol(\"tcp\")\n .build())\n .srcIpRanges(\"0.0.0.0/0\")\n .build())\n .targetServiceAccounts(\"test@google.com\")\n .securityProfileGroup(securityProfileGroup1.id().applyValue(id -\u003e String.format(\"//networksecurity.googleapis.com/%s\", id)))\n .tlsInspect(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n firewall-policy-with-rules:\n type: gcp:compute:FirewallPolicyWithRules\n properties:\n shortName: tf-fw-org-policy-with-rules\n description: Terraform test\n parent: organizations/123456789\n rules:\n - description: tcp rule\n priority: 1000\n enableLogging: true\n action: allow\n direction: EGRESS\n match:\n layer4Configs:\n - ipProtocol: tcp\n ports:\n - 8080\n - 7070\n destIpRanges:\n - 11.100.0.1/32\n destFqdns:\n - www.yyy.com\n - www.zzz.com\n destRegionCodes:\n - HK\n - IN\n destThreatIntelligences:\n - iplist-search-engines-crawlers\n - iplist-tor-exit-nodes\n destAddressGroups:\n - ${addressGroup1.id}\n targetResources:\n - https://www.googleapis.com/compute/beta/projects/${project.name}/global/networks/default\n - description: udp rule\n priority: 2000\n enableLogging: false\n action: deny\n direction: INGRESS\n match:\n layer4Configs:\n - ipProtocol: udp\n srcIpRanges:\n - 0.0.0.0/0\n srcFqdns:\n - www.abc.com\n - www.def.com\n srcRegionCodes:\n - US\n - CA\n srcThreatIntelligences:\n - iplist-known-malicious-ips\n - iplist-public-clouds\n srcAddressGroups:\n - ${addressGroup1.id}\n disabled: true\n - description: security profile group rule\n ruleName: tcp rule\n priority: 3000\n enableLogging: false\n action: apply_security_profile_group\n direction: INGRESS\n match:\n layer4Configs:\n - ipProtocol: tcp\n srcIpRanges:\n - 0.0.0.0/0\n targetServiceAccounts:\n - test@google.com\n securityProfileGroup: //networksecurity.googleapis.com/${securityProfileGroup1.id}\n tlsInspect: true\n addressGroup1:\n type: gcp:networksecurity:AddressGroup\n name: address_group_1\n properties:\n name: tf-address-group\n parent: organizations/123456789\n description: Global address group\n location: global\n items:\n - 208.80.154.224/32\n type: IPV4\n capacity: 100\n securityProfileGroup1:\n type: gcp:networksecurity:SecurityProfileGroup\n name: security_profile_group_1\n properties:\n name: tf-security-profile-group\n parent: organizations/123456789\n description: my description\n threatPreventionProfile: ${securityProfile1.id}\n securityProfile1:\n type: gcp:networksecurity:SecurityProfile\n name: security_profile_1\n properties:\n name: tf-security-profile\n type: THREAT_PREVENTION\n parent: organizations/123456789\n location: global\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFirewallPolicyWithRules can be imported using any of these accepted formats:\n\n* `locations/global/firewallPolicies/{{policy_id}}`\n\n* `{{policy_id}}`\n\nWhen using the `pulumi import` command, FirewallPolicyWithRules can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/firewallPolicyWithRules:FirewallPolicyWithRules default locations/global/firewallPolicies/{{policy_id}}\n```\n\n```sh\n$ pulumi import gcp:compute/firewallPolicyWithRules:FirewallPolicyWithRules default {{policy_id}}\n```\n\n", + "description": "## Example Usage\n\n### Compute Firewall Policy With Rules Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst addressGroup1 = new gcp.networksecurity.AddressGroup(\"address_group_1\", {\n name: \"tf-address-group\",\n parent: \"organizations/123456789\",\n description: \"Global address group\",\n location: \"global\",\n items: [\"208.80.154.224/32\"],\n type: \"IPV4\",\n capacity: 100,\n});\nconst securityProfile1 = new gcp.networksecurity.SecurityProfile(\"security_profile_1\", {\n name: \"tf-security-profile\",\n type: \"THREAT_PREVENTION\",\n parent: \"organizations/123456789\",\n location: \"global\",\n});\nconst securityProfileGroup1 = new gcp.networksecurity.SecurityProfileGroup(\"security_profile_group_1\", {\n name: \"tf-security-profile-group\",\n parent: \"organizations/123456789\",\n description: \"my description\",\n threatPreventionProfile: securityProfile1.id,\n});\nconst firewall_policy_with_rules = new gcp.compute.FirewallPolicyWithRules(\"firewall-policy-with-rules\", {\n shortName: \"tf-fw-org-policy-with-rules\",\n description: \"Terraform test\",\n parent: \"organizations/123456789\",\n rules: [\n {\n description: \"tcp rule\",\n priority: 1000,\n enableLogging: true,\n action: \"allow\",\n direction: \"EGRESS\",\n match: {\n layer4Configs: [{\n ipProtocol: \"tcp\",\n ports: [\n \"8080\",\n \"7070\",\n ],\n }],\n destIpRanges: [\"11.100.0.1/32\"],\n destFqdns: [\n \"www.yyy.com\",\n \"www.zzz.com\",\n ],\n destRegionCodes: [\n \"HK\",\n \"IN\",\n ],\n destThreatIntelligences: [\n \"iplist-search-engines-crawlers\",\n \"iplist-tor-exit-nodes\",\n ],\n destAddressGroups: [addressGroup1.id],\n },\n targetResources: [project.then(project =\u003e `https://www.googleapis.com/compute/beta/projects/${project.name}/global/networks/default`)],\n },\n {\n description: \"udp rule\",\n priority: 2000,\n enableLogging: false,\n action: \"deny\",\n direction: \"INGRESS\",\n match: {\n layer4Configs: [{\n ipProtocol: \"udp\",\n }],\n srcIpRanges: [\"0.0.0.0/0\"],\n srcFqdns: [\n \"www.abc.com\",\n \"www.def.com\",\n ],\n srcRegionCodes: [\n \"US\",\n \"CA\",\n ],\n srcThreatIntelligences: [\n \"iplist-known-malicious-ips\",\n \"iplist-public-clouds\",\n ],\n srcAddressGroups: [addressGroup1.id],\n },\n disabled: true,\n },\n {\n description: \"security profile group rule\",\n ruleName: \"tcp rule\",\n priority: 3000,\n enableLogging: false,\n action: \"apply_security_profile_group\",\n direction: \"INGRESS\",\n match: {\n layer4Configs: [{\n ipProtocol: \"tcp\",\n }],\n srcIpRanges: [\"0.0.0.0/0\"],\n },\n targetServiceAccounts: [\"test@google.com\"],\n securityProfileGroup: pulumi.interpolate`//networksecurity.googleapis.com/${securityProfileGroup1.id}`,\n tlsInspect: true,\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\naddress_group1 = gcp.networksecurity.AddressGroup(\"address_group_1\",\n name=\"tf-address-group\",\n parent=\"organizations/123456789\",\n description=\"Global address group\",\n location=\"global\",\n items=[\"208.80.154.224/32\"],\n type=\"IPV4\",\n capacity=100)\nsecurity_profile1 = gcp.networksecurity.SecurityProfile(\"security_profile_1\",\n name=\"tf-security-profile\",\n type=\"THREAT_PREVENTION\",\n parent=\"organizations/123456789\",\n location=\"global\")\nsecurity_profile_group1 = gcp.networksecurity.SecurityProfileGroup(\"security_profile_group_1\",\n name=\"tf-security-profile-group\",\n parent=\"organizations/123456789\",\n description=\"my description\",\n threat_prevention_profile=security_profile1.id)\nfirewall_policy_with_rules = gcp.compute.FirewallPolicyWithRules(\"firewall-policy-with-rules\",\n short_name=\"tf-fw-org-policy-with-rules\",\n description=\"Terraform test\",\n parent=\"organizations/123456789\",\n rules=[\n {\n \"description\": \"tcp rule\",\n \"priority\": 1000,\n \"enable_logging\": True,\n \"action\": \"allow\",\n \"direction\": \"EGRESS\",\n \"match\": {\n \"layer4_configs\": [{\n \"ip_protocol\": \"tcp\",\n \"ports\": [\n \"8080\",\n \"7070\",\n ],\n }],\n \"dest_ip_ranges\": [\"11.100.0.1/32\"],\n \"dest_fqdns\": [\n \"www.yyy.com\",\n \"www.zzz.com\",\n ],\n \"dest_region_codes\": [\n \"HK\",\n \"IN\",\n ],\n \"dest_threat_intelligences\": [\n \"iplist-search-engines-crawlers\",\n \"iplist-tor-exit-nodes\",\n ],\n \"dest_address_groups\": [address_group1.id],\n },\n \"target_resources\": [f\"https://www.googleapis.com/compute/beta/projects/{project.name}/global/networks/default\"],\n },\n {\n \"description\": \"udp rule\",\n \"priority\": 2000,\n \"enable_logging\": False,\n \"action\": \"deny\",\n \"direction\": \"INGRESS\",\n \"match\": {\n \"layer4_configs\": [{\n \"ip_protocol\": \"udp\",\n }],\n \"src_ip_ranges\": [\"0.0.0.0/0\"],\n \"src_fqdns\": [\n \"www.abc.com\",\n \"www.def.com\",\n ],\n \"src_region_codes\": [\n \"US\",\n \"CA\",\n ],\n \"src_threat_intelligences\": [\n \"iplist-known-malicious-ips\",\n \"iplist-public-clouds\",\n ],\n \"src_address_groups\": [address_group1.id],\n },\n \"disabled\": True,\n },\n {\n \"description\": \"security profile group rule\",\n \"rule_name\": \"tcp rule\",\n \"priority\": 3000,\n \"enable_logging\": False,\n \"action\": \"apply_security_profile_group\",\n \"direction\": \"INGRESS\",\n \"match\": {\n \"layer4_configs\": [{\n \"ip_protocol\": \"tcp\",\n }],\n \"src_ip_ranges\": [\"0.0.0.0/0\"],\n },\n \"target_service_accounts\": [\"test@google.com\"],\n \"security_profile_group\": security_profile_group1.id.apply(lambda id: f\"//networksecurity.googleapis.com/{id}\"),\n \"tls_inspect\": 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 project = Gcp.Organizations.GetProject.Invoke();\n\n var addressGroup1 = new Gcp.NetworkSecurity.AddressGroup(\"address_group_1\", new()\n {\n Name = \"tf-address-group\",\n Parent = \"organizations/123456789\",\n Description = \"Global address group\",\n Location = \"global\",\n Items = new[]\n {\n \"208.80.154.224/32\",\n },\n Type = \"IPV4\",\n Capacity = 100,\n });\n\n var securityProfile1 = new Gcp.NetworkSecurity.SecurityProfile(\"security_profile_1\", new()\n {\n Name = \"tf-security-profile\",\n Type = \"THREAT_PREVENTION\",\n Parent = \"organizations/123456789\",\n Location = \"global\",\n });\n\n var securityProfileGroup1 = new Gcp.NetworkSecurity.SecurityProfileGroup(\"security_profile_group_1\", new()\n {\n Name = \"tf-security-profile-group\",\n Parent = \"organizations/123456789\",\n Description = \"my description\",\n ThreatPreventionProfile = securityProfile1.Id,\n });\n\n var firewall_policy_with_rules = new Gcp.Compute.FirewallPolicyWithRules(\"firewall-policy-with-rules\", new()\n {\n ShortName = \"tf-fw-org-policy-with-rules\",\n Description = \"Terraform test\",\n Parent = \"organizations/123456789\",\n Rules = new[]\n {\n new Gcp.Compute.Inputs.FirewallPolicyWithRulesRuleArgs\n {\n Description = \"tcp rule\",\n Priority = 1000,\n EnableLogging = true,\n Action = \"allow\",\n Direction = \"EGRESS\",\n Match = new Gcp.Compute.Inputs.FirewallPolicyWithRulesRuleMatchArgs\n {\n Layer4Configs = new[]\n {\n new Gcp.Compute.Inputs.FirewallPolicyWithRulesRuleMatchLayer4ConfigArgs\n {\n IpProtocol = \"tcp\",\n Ports = new[]\n {\n \"8080\",\n \"7070\",\n },\n },\n },\n DestIpRanges = new[]\n {\n \"11.100.0.1/32\",\n },\n DestFqdns = new[]\n {\n \"www.yyy.com\",\n \"www.zzz.com\",\n },\n DestRegionCodes = new[]\n {\n \"HK\",\n \"IN\",\n },\n DestThreatIntelligences = new[]\n {\n \"iplist-search-engines-crawlers\",\n \"iplist-tor-exit-nodes\",\n },\n DestAddressGroups = new[]\n {\n addressGroup1.Id,\n },\n },\n TargetResources = new[]\n {\n $\"https://www.googleapis.com/compute/beta/projects/{project.Apply(getProjectResult =\u003e getProjectResult.Name)}/global/networks/default\",\n },\n },\n new Gcp.Compute.Inputs.FirewallPolicyWithRulesRuleArgs\n {\n Description = \"udp rule\",\n Priority = 2000,\n EnableLogging = false,\n Action = \"deny\",\n Direction = \"INGRESS\",\n Match = new Gcp.Compute.Inputs.FirewallPolicyWithRulesRuleMatchArgs\n {\n Layer4Configs = new[]\n {\n new Gcp.Compute.Inputs.FirewallPolicyWithRulesRuleMatchLayer4ConfigArgs\n {\n IpProtocol = \"udp\",\n },\n },\n SrcIpRanges = new[]\n {\n \"0.0.0.0/0\",\n },\n SrcFqdns = new[]\n {\n \"www.abc.com\",\n \"www.def.com\",\n },\n SrcRegionCodes = new[]\n {\n \"US\",\n \"CA\",\n },\n SrcThreatIntelligences = new[]\n {\n \"iplist-known-malicious-ips\",\n \"iplist-public-clouds\",\n },\n SrcAddressGroups = new[]\n {\n addressGroup1.Id,\n },\n },\n Disabled = true,\n },\n new Gcp.Compute.Inputs.FirewallPolicyWithRulesRuleArgs\n {\n Description = \"security profile group rule\",\n RuleName = \"tcp rule\",\n Priority = 3000,\n EnableLogging = false,\n Action = \"apply_security_profile_group\",\n Direction = \"INGRESS\",\n Match = new Gcp.Compute.Inputs.FirewallPolicyWithRulesRuleMatchArgs\n {\n Layer4Configs = new[]\n {\n new Gcp.Compute.Inputs.FirewallPolicyWithRulesRuleMatchLayer4ConfigArgs\n {\n IpProtocol = \"tcp\",\n },\n },\n SrcIpRanges = new[]\n {\n \"0.0.0.0/0\",\n },\n },\n TargetServiceAccounts = new[]\n {\n \"test@google.com\",\n },\n SecurityProfileGroup = securityProfileGroup1.Id.Apply(id =\u003e $\"//networksecurity.googleapis.com/{id}\"),\n TlsInspect = true,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taddressGroup1, err := networksecurity.NewAddressGroup(ctx, \"address_group_1\", \u0026networksecurity.AddressGroupArgs{\n\t\t\tName: pulumi.String(\"tf-address-group\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDescription: pulumi.String(\"Global address group\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tItems: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"208.80.154.224/32\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"IPV4\"),\n\t\t\tCapacity: pulumi.Int(100),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecurityProfile1, err := networksecurity.NewSecurityProfile(ctx, \"security_profile_1\", \u0026networksecurity.SecurityProfileArgs{\n\t\t\tName: pulumi.String(\"tf-security-profile\"),\n\t\t\tType: pulumi.String(\"THREAT_PREVENTION\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecurityProfileGroup1, err := networksecurity.NewSecurityProfileGroup(ctx, \"security_profile_group_1\", \u0026networksecurity.SecurityProfileGroupArgs{\n\t\t\tName: pulumi.String(\"tf-security-profile-group\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tThreatPreventionProfile: securityProfile1.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewFirewallPolicyWithRules(ctx, \"firewall-policy-with-rules\", \u0026compute.FirewallPolicyWithRulesArgs{\n\t\t\tShortName: pulumi.String(\"tf-fw-org-policy-with-rules\"),\n\t\t\tDescription: pulumi.String(\"Terraform test\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tRules: compute.FirewallPolicyWithRulesRuleArray{\n\t\t\t\t\u0026compute.FirewallPolicyWithRulesRuleArgs{\n\t\t\t\t\tDescription: pulumi.String(\"tcp rule\"),\n\t\t\t\t\tPriority: pulumi.Int(1000),\n\t\t\t\t\tEnableLogging: pulumi.Bool(true),\n\t\t\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\t\t\tDirection: pulumi.String(\"EGRESS\"),\n\t\t\t\t\tMatch: \u0026compute.FirewallPolicyWithRulesRuleMatchArgs{\n\t\t\t\t\t\tLayer4Configs: compute.FirewallPolicyWithRulesRuleMatchLayer4ConfigArray{\n\t\t\t\t\t\t\t\u0026compute.FirewallPolicyWithRulesRuleMatchLayer4ConfigArgs{\n\t\t\t\t\t\t\t\tIpProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t\t\t\t\tPorts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"8080\"),\n\t\t\t\t\t\t\t\t\tpulumi.String(\"7070\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDestIpRanges: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"11.100.0.1/32\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDestFqdns: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"www.yyy.com\"),\n\t\t\t\t\t\t\tpulumi.String(\"www.zzz.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDestRegionCodes: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"HK\"),\n\t\t\t\t\t\t\tpulumi.String(\"IN\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDestThreatIntelligences: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"iplist-search-engines-crawlers\"),\n\t\t\t\t\t\t\tpulumi.String(\"iplist-tor-exit-nodes\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDestAddressGroups: pulumi.StringArray{\n\t\t\t\t\t\t\taddressGroup1.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tTargetResources: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.Sprintf(\"https://www.googleapis.com/compute/beta/projects/%v/global/networks/default\", project.Name),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026compute.FirewallPolicyWithRulesRuleArgs{\n\t\t\t\t\tDescription: pulumi.String(\"udp rule\"),\n\t\t\t\t\tPriority: pulumi.Int(2000),\n\t\t\t\t\tEnableLogging: pulumi.Bool(false),\n\t\t\t\t\tAction: pulumi.String(\"deny\"),\n\t\t\t\t\tDirection: pulumi.String(\"INGRESS\"),\n\t\t\t\t\tMatch: \u0026compute.FirewallPolicyWithRulesRuleMatchArgs{\n\t\t\t\t\t\tLayer4Configs: compute.FirewallPolicyWithRulesRuleMatchLayer4ConfigArray{\n\t\t\t\t\t\t\t\u0026compute.FirewallPolicyWithRulesRuleMatchLayer4ConfigArgs{\n\t\t\t\t\t\t\t\tIpProtocol: pulumi.String(\"udp\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"0.0.0.0/0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSrcFqdns: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"www.abc.com\"),\n\t\t\t\t\t\t\tpulumi.String(\"www.def.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSrcRegionCodes: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"US\"),\n\t\t\t\t\t\t\tpulumi.String(\"CA\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSrcThreatIntelligences: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"iplist-known-malicious-ips\"),\n\t\t\t\t\t\t\tpulumi.String(\"iplist-public-clouds\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSrcAddressGroups: pulumi.StringArray{\n\t\t\t\t\t\t\taddressGroup1.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tDisabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\t\u0026compute.FirewallPolicyWithRulesRuleArgs{\n\t\t\t\t\tDescription: pulumi.String(\"security profile group rule\"),\n\t\t\t\t\tRuleName: pulumi.String(\"tcp rule\"),\n\t\t\t\t\tPriority: pulumi.Int(3000),\n\t\t\t\t\tEnableLogging: pulumi.Bool(false),\n\t\t\t\t\tAction: pulumi.String(\"apply_security_profile_group\"),\n\t\t\t\t\tDirection: pulumi.String(\"INGRESS\"),\n\t\t\t\t\tMatch: \u0026compute.FirewallPolicyWithRulesRuleMatchArgs{\n\t\t\t\t\t\tLayer4Configs: compute.FirewallPolicyWithRulesRuleMatchLayer4ConfigArray{\n\t\t\t\t\t\t\t\u0026compute.FirewallPolicyWithRulesRuleMatchLayer4ConfigArgs{\n\t\t\t\t\t\t\t\tIpProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"0.0.0.0/0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tTargetServiceAccounts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"test@google.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tSecurityProfileGroup: securityProfileGroup1.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"//networksecurity.googleapis.com/%v\", id), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\tTlsInspect: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.networksecurity.AddressGroup;\nimport com.pulumi.gcp.networksecurity.AddressGroupArgs;\nimport com.pulumi.gcp.networksecurity.SecurityProfile;\nimport com.pulumi.gcp.networksecurity.SecurityProfileArgs;\nimport com.pulumi.gcp.networksecurity.SecurityProfileGroup;\nimport com.pulumi.gcp.networksecurity.SecurityProfileGroupArgs;\nimport com.pulumi.gcp.compute.FirewallPolicyWithRules;\nimport com.pulumi.gcp.compute.FirewallPolicyWithRulesArgs;\nimport com.pulumi.gcp.compute.inputs.FirewallPolicyWithRulesRuleArgs;\nimport com.pulumi.gcp.compute.inputs.FirewallPolicyWithRulesRuleMatchArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var addressGroup1 = new AddressGroup(\"addressGroup1\", AddressGroupArgs.builder()\n .name(\"tf-address-group\")\n .parent(\"organizations/123456789\")\n .description(\"Global address group\")\n .location(\"global\")\n .items(\"208.80.154.224/32\")\n .type(\"IPV4\")\n .capacity(100)\n .build());\n\n var securityProfile1 = new SecurityProfile(\"securityProfile1\", SecurityProfileArgs.builder()\n .name(\"tf-security-profile\")\n .type(\"THREAT_PREVENTION\")\n .parent(\"organizations/123456789\")\n .location(\"global\")\n .build());\n\n var securityProfileGroup1 = new SecurityProfileGroup(\"securityProfileGroup1\", SecurityProfileGroupArgs.builder()\n .name(\"tf-security-profile-group\")\n .parent(\"organizations/123456789\")\n .description(\"my description\")\n .threatPreventionProfile(securityProfile1.id())\n .build());\n\n var firewall_policy_with_rules = new FirewallPolicyWithRules(\"firewall-policy-with-rules\", FirewallPolicyWithRulesArgs.builder()\n .shortName(\"tf-fw-org-policy-with-rules\")\n .description(\"Terraform test\")\n .parent(\"organizations/123456789\")\n .rules( \n FirewallPolicyWithRulesRuleArgs.builder()\n .description(\"tcp rule\")\n .priority(1000)\n .enableLogging(true)\n .action(\"allow\")\n .direction(\"EGRESS\")\n .match(FirewallPolicyWithRulesRuleMatchArgs.builder()\n .layer4Configs(FirewallPolicyWithRulesRuleMatchLayer4ConfigArgs.builder()\n .ipProtocol(\"tcp\")\n .ports( \n 8080,\n 7070)\n .build())\n .destIpRanges(\"11.100.0.1/32\")\n .destFqdns( \n \"www.yyy.com\",\n \"www.zzz.com\")\n .destRegionCodes( \n \"HK\",\n \"IN\")\n .destThreatIntelligences( \n \"iplist-search-engines-crawlers\",\n \"iplist-tor-exit-nodes\")\n .destAddressGroups(addressGroup1.id())\n .build())\n .targetResources(String.format(\"https://www.googleapis.com/compute/beta/projects/%s/global/networks/default\", project.applyValue(getProjectResult -\u003e getProjectResult.name())))\n .build(),\n FirewallPolicyWithRulesRuleArgs.builder()\n .description(\"udp rule\")\n .priority(2000)\n .enableLogging(false)\n .action(\"deny\")\n .direction(\"INGRESS\")\n .match(FirewallPolicyWithRulesRuleMatchArgs.builder()\n .layer4Configs(FirewallPolicyWithRulesRuleMatchLayer4ConfigArgs.builder()\n .ipProtocol(\"udp\")\n .build())\n .srcIpRanges(\"0.0.0.0/0\")\n .srcFqdns( \n \"www.abc.com\",\n \"www.def.com\")\n .srcRegionCodes( \n \"US\",\n \"CA\")\n .srcThreatIntelligences( \n \"iplist-known-malicious-ips\",\n \"iplist-public-clouds\")\n .srcAddressGroups(addressGroup1.id())\n .build())\n .disabled(true)\n .build(),\n FirewallPolicyWithRulesRuleArgs.builder()\n .description(\"security profile group rule\")\n .ruleName(\"tcp rule\")\n .priority(3000)\n .enableLogging(false)\n .action(\"apply_security_profile_group\")\n .direction(\"INGRESS\")\n .match(FirewallPolicyWithRulesRuleMatchArgs.builder()\n .layer4Configs(FirewallPolicyWithRulesRuleMatchLayer4ConfigArgs.builder()\n .ipProtocol(\"tcp\")\n .build())\n .srcIpRanges(\"0.0.0.0/0\")\n .build())\n .targetServiceAccounts(\"test@google.com\")\n .securityProfileGroup(securityProfileGroup1.id().applyValue(id -\u003e String.format(\"//networksecurity.googleapis.com/%s\", id)))\n .tlsInspect(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n firewall-policy-with-rules:\n type: gcp:compute:FirewallPolicyWithRules\n properties:\n shortName: tf-fw-org-policy-with-rules\n description: Terraform test\n parent: organizations/123456789\n rules:\n - description: tcp rule\n priority: 1000\n enableLogging: true\n action: allow\n direction: EGRESS\n match:\n layer4Configs:\n - ipProtocol: tcp\n ports:\n - 8080\n - 7070\n destIpRanges:\n - 11.100.0.1/32\n destFqdns:\n - www.yyy.com\n - www.zzz.com\n destRegionCodes:\n - HK\n - IN\n destThreatIntelligences:\n - iplist-search-engines-crawlers\n - iplist-tor-exit-nodes\n destAddressGroups:\n - ${addressGroup1.id}\n targetResources:\n - https://www.googleapis.com/compute/beta/projects/${project.name}/global/networks/default\n - description: udp rule\n priority: 2000\n enableLogging: false\n action: deny\n direction: INGRESS\n match:\n layer4Configs:\n - ipProtocol: udp\n srcIpRanges:\n - 0.0.0.0/0\n srcFqdns:\n - www.abc.com\n - www.def.com\n srcRegionCodes:\n - US\n - CA\n srcThreatIntelligences:\n - iplist-known-malicious-ips\n - iplist-public-clouds\n srcAddressGroups:\n - ${addressGroup1.id}\n disabled: true\n - description: security profile group rule\n ruleName: tcp rule\n priority: 3000\n enableLogging: false\n action: apply_security_profile_group\n direction: INGRESS\n match:\n layer4Configs:\n - ipProtocol: tcp\n srcIpRanges:\n - 0.0.0.0/0\n targetServiceAccounts:\n - test@google.com\n securityProfileGroup: //networksecurity.googleapis.com/${securityProfileGroup1.id}\n tlsInspect: true\n addressGroup1:\n type: gcp:networksecurity:AddressGroup\n name: address_group_1\n properties:\n name: tf-address-group\n parent: organizations/123456789\n description: Global address group\n location: global\n items:\n - 208.80.154.224/32\n type: IPV4\n capacity: 100\n securityProfileGroup1:\n type: gcp:networksecurity:SecurityProfileGroup\n name: security_profile_group_1\n properties:\n name: tf-security-profile-group\n parent: organizations/123456789\n description: my description\n threatPreventionProfile: ${securityProfile1.id}\n securityProfile1:\n type: gcp:networksecurity:SecurityProfile\n name: security_profile_1\n properties:\n name: tf-security-profile\n type: THREAT_PREVENTION\n parent: organizations/123456789\n location: global\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFirewallPolicyWithRules can be imported using any of these accepted formats:\n\n* `locations/global/firewallPolicies/{{policy_id}}`\n\n* `{{policy_id}}`\n\nWhen using the `pulumi import` command, FirewallPolicyWithRules can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/firewallPolicyWithRules:FirewallPolicyWithRules default locations/global/firewallPolicies/{{policy_id}}\n```\n\n```sh\n$ pulumi import gcp:compute/firewallPolicyWithRules:FirewallPolicyWithRules default {{policy_id}}\n```\n\n", "properties": { "creationTimestamp": { "type": "string", @@ -152596,7 +152596,7 @@ } }, "gcp:compute/instance:Instance": { - "description": "Manages a VM instance resource within GCE. For more information see\n[the official documentation](https://cloud.google.com/compute/docs/instances)\nand\n[API](https://cloud.google.com/compute/docs/reference/latest/instances).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.serviceaccount.Account(\"default\", {\n accountId: \"my-custom-sa\",\n displayName: \"Custom SA for VM Instance\",\n});\nconst defaultInstance = new gcp.compute.Instance(\"default\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n network: \"default\",\n }],\n name: \"my-instance\",\n machineType: \"n2-standard-2\",\n zone: \"us-central1-a\",\n tags: [\n \"foo\",\n \"bar\",\n ],\n bootDisk: {\n initializeParams: {\n image: \"debian-cloud/debian-11\",\n labels: {\n my_label: \"value\",\n },\n },\n },\n scratchDisks: [{\n \"interface\": \"NVME\",\n }],\n metadata: {\n foo: \"bar\",\n },\n metadataStartupScript: \"echo hi \u003e /test.txt\",\n serviceAccount: {\n email: _default.email,\n scopes: [\"cloud-platform\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.serviceaccount.Account(\"default\",\n account_id=\"my-custom-sa\",\n display_name=\"Custom SA for VM Instance\")\ndefault_instance = gcp.compute.Instance(\"default\",\n network_interfaces=[{\n \"access_configs\": [{}],\n \"network\": \"default\",\n }],\n name=\"my-instance\",\n machine_type=\"n2-standard-2\",\n zone=\"us-central1-a\",\n tags=[\n \"foo\",\n \"bar\",\n ],\n boot_disk={\n \"initialize_params\": {\n \"image\": \"debian-cloud/debian-11\",\n \"labels\": {\n \"my_label\": \"value\",\n },\n },\n },\n scratch_disks=[{\n \"interface\": \"NVME\",\n }],\n metadata={\n \"foo\": \"bar\",\n },\n metadata_startup_script=\"echo hi \u003e /test.txt\",\n service_account={\n \"email\": default.email,\n \"scopes\": [\"cloud-platform\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.ServiceAccount.Account(\"default\", new()\n {\n AccountId = \"my-custom-sa\",\n DisplayName = \"Custom SA for VM Instance\",\n });\n\n var defaultInstance = new Gcp.Compute.Instance(\"default\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Network = \"default\",\n },\n },\n Name = \"my-instance\",\n MachineType = \"n2-standard-2\",\n Zone = \"us-central1-a\",\n Tags = new[]\n {\n \"foo\",\n \"bar\",\n },\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = \"debian-cloud/debian-11\",\n Labels = \n {\n { \"my_label\", \"value\" },\n },\n },\n },\n ScratchDisks = new[]\n {\n new Gcp.Compute.Inputs.InstanceScratchDiskArgs\n {\n Interface = \"NVME\",\n },\n },\n Metadata = \n {\n { \"foo\", \"bar\" },\n },\n MetadataStartupScript = \"echo hi \u003e /test.txt\",\n ServiceAccount = new Gcp.Compute.Inputs.InstanceServiceAccountArgs\n {\n Email = @default.Email,\n Scopes = new[]\n {\n \"cloud-platform\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := serviceaccount.NewAccount(ctx, \"default\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-custom-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Custom SA for VM Instance\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"default\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tAccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{\n\t\t\t\t\t\tnil,\n\t\t\t\t\t},\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tMachineType: pulumi.String(\"n2-standard-2\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(\"debian-cloud/debian-11\"),\n\t\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\t\"my_label\": pulumi.String(\"value\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tScratchDisks: compute.InstanceScratchDiskArray{\n\t\t\t\t\u0026compute.InstanceScratchDiskArgs{\n\t\t\t\t\tInterface: pulumi.String(\"NVME\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tMetadataStartupScript: pulumi.String(\"echo hi \u003e /test.txt\"),\n\t\t\tServiceAccount: \u0026compute.InstanceServiceAccountArgs{\n\t\t\t\tEmail: _default.Email,\n\t\t\t\tScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"cloud-platform\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceScratchDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceServiceAccountArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Account(\"default\", AccountArgs.builder()\n .accountId(\"my-custom-sa\")\n .displayName(\"Custom SA for VM Instance\")\n .build());\n\n var defaultInstance = new Instance(\"defaultInstance\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .network(\"default\")\n .build())\n .name(\"my-instance\")\n .machineType(\"n2-standard-2\")\n .zone(\"us-central1-a\")\n .tags( \n \"foo\",\n \"bar\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(\"debian-cloud/debian-11\")\n .labels(Map.of(\"my_label\", \"value\"))\n .build())\n .build())\n .scratchDisks(InstanceScratchDiskArgs.builder()\n .interface_(\"NVME\")\n .build())\n .metadata(Map.of(\"foo\", \"bar\"))\n .metadataStartupScript(\"echo hi \u003e /test.txt\")\n .serviceAccount(InstanceServiceAccountArgs.builder()\n .email(default_.email())\n .scopes(\"cloud-platform\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-custom-sa\n displayName: Custom SA for VM Instance\n defaultInstance:\n type: gcp:compute:Instance\n name: default\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n network: default\n name: my-instance\n machineType: n2-standard-2\n zone: us-central1-a\n tags:\n - foo\n - bar\n bootDisk:\n initializeParams:\n image: debian-cloud/debian-11\n labels:\n my_label: value\n scratchDisks:\n - interface: NVME\n metadata:\n foo: bar\n metadataStartupScript: echo hi \u003e /test.txt\n serviceAccount:\n email: ${default.email}\n scopes:\n - cloud-platform\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### Confidential Computing\n\nExample with [Confidential Mode](https://cloud.google.com/confidential-computing/confidential-vm/docs/confidential-vm-overview) activated.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.serviceaccount.Account(\"default\", {\n accountId: \"my-custom-sa\",\n displayName: \"Custom SA for VM Instance\",\n});\nconst confidentialInstance = new gcp.compute.Instance(\"confidential_instance\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n network: \"default\",\n }],\n name: \"my-confidential-instance\",\n zone: \"us-central1-a\",\n machineType: \"n2d-standard-2\",\n minCpuPlatform: \"AMD Milan\",\n confidentialInstanceConfig: {\n enableConfidentialCompute: true,\n confidentialInstanceType: \"SEV\",\n },\n bootDisk: {\n initializeParams: {\n image: \"ubuntu-os-cloud/ubuntu-2004-lts\",\n labels: {\n my_label: \"value\",\n },\n },\n },\n scratchDisks: [{\n \"interface\": \"NVME\",\n }],\n serviceAccount: {\n email: _default.email,\n scopes: [\"cloud-platform\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.serviceaccount.Account(\"default\",\n account_id=\"my-custom-sa\",\n display_name=\"Custom SA for VM Instance\")\nconfidential_instance = gcp.compute.Instance(\"confidential_instance\",\n network_interfaces=[{\n \"access_configs\": [{}],\n \"network\": \"default\",\n }],\n name=\"my-confidential-instance\",\n zone=\"us-central1-a\",\n machine_type=\"n2d-standard-2\",\n min_cpu_platform=\"AMD Milan\",\n confidential_instance_config={\n \"enable_confidential_compute\": True,\n \"confidential_instance_type\": \"SEV\",\n },\n boot_disk={\n \"initialize_params\": {\n \"image\": \"ubuntu-os-cloud/ubuntu-2004-lts\",\n \"labels\": {\n \"my_label\": \"value\",\n },\n },\n },\n scratch_disks=[{\n \"interface\": \"NVME\",\n }],\n service_account={\n \"email\": default.email,\n \"scopes\": [\"cloud-platform\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.ServiceAccount.Account(\"default\", new()\n {\n AccountId = \"my-custom-sa\",\n DisplayName = \"Custom SA for VM Instance\",\n });\n\n var confidentialInstance = new Gcp.Compute.Instance(\"confidential_instance\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Network = \"default\",\n },\n },\n Name = \"my-confidential-instance\",\n Zone = \"us-central1-a\",\n MachineType = \"n2d-standard-2\",\n MinCpuPlatform = \"AMD Milan\",\n ConfidentialInstanceConfig = new Gcp.Compute.Inputs.InstanceConfidentialInstanceConfigArgs\n {\n EnableConfidentialCompute = true,\n ConfidentialInstanceType = \"SEV\",\n },\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = \"ubuntu-os-cloud/ubuntu-2004-lts\",\n Labels = \n {\n { \"my_label\", \"value\" },\n },\n },\n },\n ScratchDisks = new[]\n {\n new Gcp.Compute.Inputs.InstanceScratchDiskArgs\n {\n Interface = \"NVME\",\n },\n },\n ServiceAccount = new Gcp.Compute.Inputs.InstanceServiceAccountArgs\n {\n Email = @default.Email,\n Scopes = new[]\n {\n \"cloud-platform\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := serviceaccount.NewAccount(ctx, \"default\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-custom-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Custom SA for VM Instance\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"confidential_instance\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tAccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{\n\t\t\t\t\t\tnil,\n\t\t\t\t\t},\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"my-confidential-instance\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tMachineType: pulumi.String(\"n2d-standard-2\"),\n\t\t\tMinCpuPlatform: pulumi.String(\"AMD Milan\"),\n\t\t\tConfidentialInstanceConfig: \u0026compute.InstanceConfidentialInstanceConfigArgs{\n\t\t\t\tEnableConfidentialCompute: pulumi.Bool(true),\n\t\t\t\tConfidentialInstanceType: pulumi.String(\"SEV\"),\n\t\t\t},\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(\"ubuntu-os-cloud/ubuntu-2004-lts\"),\n\t\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\t\"my_label\": pulumi.String(\"value\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tScratchDisks: compute.InstanceScratchDiskArray{\n\t\t\t\t\u0026compute.InstanceScratchDiskArgs{\n\t\t\t\t\tInterface: pulumi.String(\"NVME\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceAccount: \u0026compute.InstanceServiceAccountArgs{\n\t\t\t\tEmail: _default.Email,\n\t\t\t\tScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"cloud-platform\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceConfidentialInstanceConfigArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceScratchDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceServiceAccountArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Account(\"default\", AccountArgs.builder()\n .accountId(\"my-custom-sa\")\n .displayName(\"Custom SA for VM Instance\")\n .build());\n\n var confidentialInstance = new Instance(\"confidentialInstance\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .network(\"default\")\n .build())\n .name(\"my-confidential-instance\")\n .zone(\"us-central1-a\")\n .machineType(\"n2d-standard-2\")\n .minCpuPlatform(\"AMD Milan\")\n .confidentialInstanceConfig(InstanceConfidentialInstanceConfigArgs.builder()\n .enableConfidentialCompute(true)\n .confidentialInstanceType(\"SEV\")\n .build())\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(\"ubuntu-os-cloud/ubuntu-2004-lts\")\n .labels(Map.of(\"my_label\", \"value\"))\n .build())\n .build())\n .scratchDisks(InstanceScratchDiskArgs.builder()\n .interface_(\"NVME\")\n .build())\n .serviceAccount(InstanceServiceAccountArgs.builder()\n .email(default_.email())\n .scopes(\"cloud-platform\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-custom-sa\n displayName: Custom SA for VM Instance\n confidentialInstance:\n type: gcp:compute:Instance\n name: confidential_instance\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n network: default\n name: my-confidential-instance\n zone: us-central1-a\n machineType: n2d-standard-2\n minCpuPlatform: AMD Milan\n confidentialInstanceConfig:\n enableConfidentialCompute: true\n confidentialInstanceType: SEV\n bootDisk:\n initializeParams:\n image: ubuntu-os-cloud/ubuntu-2004-lts\n labels:\n my_label: value\n scratchDisks:\n - interface: NVME\n serviceAccount:\n email: ${default.email}\n scopes:\n - cloud-platform\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstances can be imported using any of these accepted formats:\n\n* `projects/{{project}}/zones/{{zone}}/instances/{{name}}`\n\n* `{{project}}/{{zone}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, instances can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/instance:Instance default projects/{{project}}/zones/{{zone}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/instance:Instance default {{project}}/{{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/instance:Instance default {{name}}\n```\n\n", + "description": "Manages a VM instance resource within GCE. For more information see\n[the official documentation](https://cloud.google.com/compute/docs/instances)\nand\n[API](https://cloud.google.com/compute/docs/reference/latest/instances).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.serviceaccount.Account(\"default\", {\n accountId: \"my-custom-sa\",\n displayName: \"Custom SA for VM Instance\",\n});\nconst defaultInstance = new gcp.compute.Instance(\"default\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n network: \"default\",\n }],\n name: \"my-instance\",\n machineType: \"n2-standard-2\",\n zone: \"us-central1-a\",\n tags: [\n \"foo\",\n \"bar\",\n ],\n bootDisk: {\n initializeParams: {\n image: \"debian-cloud/debian-11\",\n labels: {\n my_label: \"value\",\n },\n },\n },\n scratchDisks: [{\n \"interface\": \"NVME\",\n }],\n metadata: {\n foo: \"bar\",\n },\n metadataStartupScript: \"echo hi \u003e /test.txt\",\n serviceAccount: {\n email: _default.email,\n scopes: [\"cloud-platform\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.serviceaccount.Account(\"default\",\n account_id=\"my-custom-sa\",\n display_name=\"Custom SA for VM Instance\")\ndefault_instance = gcp.compute.Instance(\"default\",\n network_interfaces=[{\n \"access_configs\": [{}],\n \"network\": \"default\",\n }],\n name=\"my-instance\",\n machine_type=\"n2-standard-2\",\n zone=\"us-central1-a\",\n tags=[\n \"foo\",\n \"bar\",\n ],\n boot_disk={\n \"initialize_params\": {\n \"image\": \"debian-cloud/debian-11\",\n \"labels\": {\n \"my_label\": \"value\",\n },\n },\n },\n scratch_disks=[{\n \"interface\": \"NVME\",\n }],\n metadata={\n \"foo\": \"bar\",\n },\n metadata_startup_script=\"echo hi \u003e /test.txt\",\n service_account={\n \"email\": default.email,\n \"scopes\": [\"cloud-platform\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.ServiceAccount.Account(\"default\", new()\n {\n AccountId = \"my-custom-sa\",\n DisplayName = \"Custom SA for VM Instance\",\n });\n\n var defaultInstance = new Gcp.Compute.Instance(\"default\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Network = \"default\",\n },\n },\n Name = \"my-instance\",\n MachineType = \"n2-standard-2\",\n Zone = \"us-central1-a\",\n Tags = new[]\n {\n \"foo\",\n \"bar\",\n },\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = \"debian-cloud/debian-11\",\n Labels = \n {\n { \"my_label\", \"value\" },\n },\n },\n },\n ScratchDisks = new[]\n {\n new Gcp.Compute.Inputs.InstanceScratchDiskArgs\n {\n Interface = \"NVME\",\n },\n },\n Metadata = \n {\n { \"foo\", \"bar\" },\n },\n MetadataStartupScript = \"echo hi \u003e /test.txt\",\n ServiceAccount = new Gcp.Compute.Inputs.InstanceServiceAccountArgs\n {\n Email = @default.Email,\n Scopes = new[]\n {\n \"cloud-platform\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := serviceaccount.NewAccount(ctx, \"default\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-custom-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Custom SA for VM Instance\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"default\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tAccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{\n\t\t\t\t\t\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(\"my-instance\"),\n\t\t\tMachineType: pulumi.String(\"n2-standard-2\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(\"debian-cloud/debian-11\"),\n\t\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\t\"my_label\": pulumi.String(\"value\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tScratchDisks: compute.InstanceScratchDiskArray{\n\t\t\t\t\u0026compute.InstanceScratchDiskArgs{\n\t\t\t\t\tInterface: pulumi.String(\"NVME\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tMetadataStartupScript: pulumi.String(\"echo hi \u003e /test.txt\"),\n\t\t\tServiceAccount: \u0026compute.InstanceServiceAccountArgs{\n\t\t\t\tEmail: _default.Email,\n\t\t\t\tScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"cloud-platform\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceScratchDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceServiceAccountArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Account(\"default\", AccountArgs.builder()\n .accountId(\"my-custom-sa\")\n .displayName(\"Custom SA for VM Instance\")\n .build());\n\n var defaultInstance = new Instance(\"defaultInstance\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .network(\"default\")\n .build())\n .name(\"my-instance\")\n .machineType(\"n2-standard-2\")\n .zone(\"us-central1-a\")\n .tags( \n \"foo\",\n \"bar\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(\"debian-cloud/debian-11\")\n .labels(Map.of(\"my_label\", \"value\"))\n .build())\n .build())\n .scratchDisks(InstanceScratchDiskArgs.builder()\n .interface_(\"NVME\")\n .build())\n .metadata(Map.of(\"foo\", \"bar\"))\n .metadataStartupScript(\"echo hi \u003e /test.txt\")\n .serviceAccount(InstanceServiceAccountArgs.builder()\n .email(default_.email())\n .scopes(\"cloud-platform\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-custom-sa\n displayName: Custom SA for VM Instance\n defaultInstance:\n type: gcp:compute:Instance\n name: default\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n network: default\n name: my-instance\n machineType: n2-standard-2\n zone: us-central1-a\n tags:\n - foo\n - bar\n bootDisk:\n initializeParams:\n image: debian-cloud/debian-11\n labels:\n my_label: value\n scratchDisks:\n - interface: NVME\n metadata:\n foo: bar\n metadataStartupScript: echo hi \u003e /test.txt\n serviceAccount:\n email: ${default.email}\n scopes:\n - cloud-platform\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### Confidential Computing\n\nExample with [Confidential Mode](https://cloud.google.com/confidential-computing/confidential-vm/docs/confidential-vm-overview) activated.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.serviceaccount.Account(\"default\", {\n accountId: \"my-custom-sa\",\n displayName: \"Custom SA for VM Instance\",\n});\nconst confidentialInstance = new gcp.compute.Instance(\"confidential_instance\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n network: \"default\",\n }],\n name: \"my-confidential-instance\",\n zone: \"us-central1-a\",\n machineType: \"n2d-standard-2\",\n minCpuPlatform: \"AMD Milan\",\n confidentialInstanceConfig: {\n enableConfidentialCompute: true,\n confidentialInstanceType: \"SEV\",\n },\n bootDisk: {\n initializeParams: {\n image: \"ubuntu-os-cloud/ubuntu-2004-lts\",\n labels: {\n my_label: \"value\",\n },\n },\n },\n scratchDisks: [{\n \"interface\": \"NVME\",\n }],\n serviceAccount: {\n email: _default.email,\n scopes: [\"cloud-platform\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.serviceaccount.Account(\"default\",\n account_id=\"my-custom-sa\",\n display_name=\"Custom SA for VM Instance\")\nconfidential_instance = gcp.compute.Instance(\"confidential_instance\",\n network_interfaces=[{\n \"access_configs\": [{}],\n \"network\": \"default\",\n }],\n name=\"my-confidential-instance\",\n zone=\"us-central1-a\",\n machine_type=\"n2d-standard-2\",\n min_cpu_platform=\"AMD Milan\",\n confidential_instance_config={\n \"enable_confidential_compute\": True,\n \"confidential_instance_type\": \"SEV\",\n },\n boot_disk={\n \"initialize_params\": {\n \"image\": \"ubuntu-os-cloud/ubuntu-2004-lts\",\n \"labels\": {\n \"my_label\": \"value\",\n },\n },\n },\n scratch_disks=[{\n \"interface\": \"NVME\",\n }],\n service_account={\n \"email\": default.email,\n \"scopes\": [\"cloud-platform\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.ServiceAccount.Account(\"default\", new()\n {\n AccountId = \"my-custom-sa\",\n DisplayName = \"Custom SA for VM Instance\",\n });\n\n var confidentialInstance = new Gcp.Compute.Instance(\"confidential_instance\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Network = \"default\",\n },\n },\n Name = \"my-confidential-instance\",\n Zone = \"us-central1-a\",\n MachineType = \"n2d-standard-2\",\n MinCpuPlatform = \"AMD Milan\",\n ConfidentialInstanceConfig = new Gcp.Compute.Inputs.InstanceConfidentialInstanceConfigArgs\n {\n EnableConfidentialCompute = true,\n ConfidentialInstanceType = \"SEV\",\n },\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = \"ubuntu-os-cloud/ubuntu-2004-lts\",\n Labels = \n {\n { \"my_label\", \"value\" },\n },\n },\n },\n ScratchDisks = new[]\n {\n new Gcp.Compute.Inputs.InstanceScratchDiskArgs\n {\n Interface = \"NVME\",\n },\n },\n ServiceAccount = new Gcp.Compute.Inputs.InstanceServiceAccountArgs\n {\n Email = @default.Email,\n Scopes = new[]\n {\n \"cloud-platform\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := serviceaccount.NewAccount(ctx, \"default\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-custom-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Custom SA for VM Instance\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"confidential_instance\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tAccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{\n\t\t\t\t\t\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(\"my-confidential-instance\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tMachineType: pulumi.String(\"n2d-standard-2\"),\n\t\t\tMinCpuPlatform: pulumi.String(\"AMD Milan\"),\n\t\t\tConfidentialInstanceConfig: \u0026compute.InstanceConfidentialInstanceConfigArgs{\n\t\t\t\tEnableConfidentialCompute: pulumi.Bool(true),\n\t\t\t\tConfidentialInstanceType: pulumi.String(\"SEV\"),\n\t\t\t},\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(\"ubuntu-os-cloud/ubuntu-2004-lts\"),\n\t\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\t\"my_label\": pulumi.String(\"value\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tScratchDisks: compute.InstanceScratchDiskArray{\n\t\t\t\t\u0026compute.InstanceScratchDiskArgs{\n\t\t\t\t\tInterface: pulumi.String(\"NVME\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceAccount: \u0026compute.InstanceServiceAccountArgs{\n\t\t\t\tEmail: _default.Email,\n\t\t\t\tScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"cloud-platform\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceConfidentialInstanceConfigArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceScratchDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceServiceAccountArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Account(\"default\", AccountArgs.builder()\n .accountId(\"my-custom-sa\")\n .displayName(\"Custom SA for VM Instance\")\n .build());\n\n var confidentialInstance = new Instance(\"confidentialInstance\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .network(\"default\")\n .build())\n .name(\"my-confidential-instance\")\n .zone(\"us-central1-a\")\n .machineType(\"n2d-standard-2\")\n .minCpuPlatform(\"AMD Milan\")\n .confidentialInstanceConfig(InstanceConfidentialInstanceConfigArgs.builder()\n .enableConfidentialCompute(true)\n .confidentialInstanceType(\"SEV\")\n .build())\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(\"ubuntu-os-cloud/ubuntu-2004-lts\")\n .labels(Map.of(\"my_label\", \"value\"))\n .build())\n .build())\n .scratchDisks(InstanceScratchDiskArgs.builder()\n .interface_(\"NVME\")\n .build())\n .serviceAccount(InstanceServiceAccountArgs.builder()\n .email(default_.email())\n .scopes(\"cloud-platform\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-custom-sa\n displayName: Custom SA for VM Instance\n confidentialInstance:\n type: gcp:compute:Instance\n name: confidential_instance\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n network: default\n name: my-confidential-instance\n zone: us-central1-a\n machineType: n2d-standard-2\n minCpuPlatform: AMD Milan\n confidentialInstanceConfig:\n enableConfidentialCompute: true\n confidentialInstanceType: SEV\n bootDisk:\n initializeParams:\n image: ubuntu-os-cloud/ubuntu-2004-lts\n labels:\n my_label: value\n scratchDisks:\n - interface: NVME\n serviceAccount:\n email: ${default.email}\n scopes:\n - cloud-platform\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstances can be imported using any of these accepted formats:\n\n* `projects/{{project}}/zones/{{zone}}/instances/{{name}}`\n\n* `{{project}}/{{zone}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, instances can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/instance:Instance default projects/{{project}}/zones/{{zone}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/instance:Instance default {{project}}/{{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/instance:Instance default {{name}}\n```\n\n", "properties": { "advancedMachineFeatures": { "$ref": "#/types/gcp:compute/InstanceAdvancedMachineFeatures:InstanceAdvancedMachineFeatures", @@ -155579,7 +155579,7 @@ } }, "gcp:compute/instanceTemplate:InstanceTemplate": { - "description": "\u003e **Note**: Global instance templates can be used in any region. To lower the impact of outages outside your region and gain data residency within your region, use google_compute_region_instance_template.\n\nManages a VM instance template resource within GCE. For more information see\n[the official documentation](https://cloud.google.com/compute/docs/instance-templates)\nand\n[API](https://cloud.google.com/compute/docs/reference/latest/instanceTemplates).\n\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.serviceaccount.Account(\"default\", {\n accountId: \"service-account-id\",\n displayName: \"Service Account\",\n});\nconst myImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst foobar = new gcp.compute.Disk(\"foobar\", {\n name: \"existing-disk\",\n image: myImage.then(myImage =\u003e myImage.selfLink),\n size: 10,\n type: \"pd-ssd\",\n zone: \"us-central1-a\",\n});\nconst dailyBackup = new gcp.compute.ResourcePolicy(\"daily_backup\", {\n name: \"every-day-4am\",\n region: \"us-central1\",\n snapshotSchedulePolicy: {\n schedule: {\n dailySchedule: {\n daysInCycle: 1,\n startTime: \"04:00\",\n },\n },\n },\n});\nconst defaultInstanceTemplate = new gcp.compute.InstanceTemplate(\"default\", {\n name: \"appserver-template\",\n description: \"This template is used to create app server instances.\",\n tags: [\n \"foo\",\n \"bar\",\n ],\n labels: {\n environment: \"dev\",\n },\n instanceDescription: \"description assigned to instances\",\n machineType: \"e2-medium\",\n canIpForward: false,\n scheduling: {\n automaticRestart: true,\n onHostMaintenance: \"MIGRATE\",\n },\n disks: [\n {\n sourceImage: \"debian-cloud/debian-11\",\n autoDelete: true,\n boot: true,\n resourcePolicies: dailyBackup.id,\n },\n {\n source: foobar.name,\n autoDelete: false,\n boot: false,\n },\n ],\n networkInterfaces: [{\n network: \"default\",\n }],\n metadata: {\n foo: \"bar\",\n },\n serviceAccount: {\n email: _default.email,\n scopes: [\"cloud-platform\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.serviceaccount.Account(\"default\",\n account_id=\"service-account-id\",\n display_name=\"Service Account\")\nmy_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\nfoobar = gcp.compute.Disk(\"foobar\",\n name=\"existing-disk\",\n image=my_image.self_link,\n size=10,\n type=\"pd-ssd\",\n zone=\"us-central1-a\")\ndaily_backup = gcp.compute.ResourcePolicy(\"daily_backup\",\n name=\"every-day-4am\",\n region=\"us-central1\",\n snapshot_schedule_policy={\n \"schedule\": {\n \"daily_schedule\": {\n \"days_in_cycle\": 1,\n \"start_time\": \"04:00\",\n },\n },\n })\ndefault_instance_template = gcp.compute.InstanceTemplate(\"default\",\n name=\"appserver-template\",\n description=\"This template is used to create app server instances.\",\n tags=[\n \"foo\",\n \"bar\",\n ],\n labels={\n \"environment\": \"dev\",\n },\n instance_description=\"description assigned to instances\",\n machine_type=\"e2-medium\",\n can_ip_forward=False,\n scheduling={\n \"automatic_restart\": True,\n \"on_host_maintenance\": \"MIGRATE\",\n },\n disks=[\n {\n \"source_image\": \"debian-cloud/debian-11\",\n \"auto_delete\": True,\n \"boot\": True,\n \"resource_policies\": daily_backup.id,\n },\n {\n \"source\": foobar.name,\n \"auto_delete\": False,\n \"boot\": False,\n },\n ],\n network_interfaces=[{\n \"network\": \"default\",\n }],\n metadata={\n \"foo\": \"bar\",\n },\n service_account={\n \"email\": default.email,\n \"scopes\": [\"cloud-platform\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.ServiceAccount.Account(\"default\", new()\n {\n AccountId = \"service-account-id\",\n DisplayName = \"Service Account\",\n });\n\n var myImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var foobar = new Gcp.Compute.Disk(\"foobar\", new()\n {\n Name = \"existing-disk\",\n Image = myImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n Size = 10,\n Type = \"pd-ssd\",\n Zone = \"us-central1-a\",\n });\n\n var dailyBackup = new Gcp.Compute.ResourcePolicy(\"daily_backup\", new()\n {\n Name = \"every-day-4am\",\n Region = \"us-central1\",\n SnapshotSchedulePolicy = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyArgs\n {\n Schedule = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyScheduleArgs\n {\n DailySchedule = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyScheduleDailyScheduleArgs\n {\n DaysInCycle = 1,\n StartTime = \"04:00\",\n },\n },\n },\n });\n\n var defaultInstanceTemplate = new Gcp.Compute.InstanceTemplate(\"default\", new()\n {\n Name = \"appserver-template\",\n Description = \"This template is used to create app server instances.\",\n Tags = new[]\n {\n \"foo\",\n \"bar\",\n },\n Labels = \n {\n { \"environment\", \"dev\" },\n },\n InstanceDescription = \"description assigned to instances\",\n MachineType = \"e2-medium\",\n CanIpForward = false,\n Scheduling = new Gcp.Compute.Inputs.InstanceTemplateSchedulingArgs\n {\n AutomaticRestart = true,\n OnHostMaintenance = \"MIGRATE\",\n },\n Disks = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n SourceImage = \"debian-cloud/debian-11\",\n AutoDelete = true,\n Boot = true,\n ResourcePolicies = dailyBackup.Id,\n },\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n Source = foobar.Name,\n AutoDelete = false,\n Boot = false,\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n },\n Metadata = \n {\n { \"foo\", \"bar\" },\n },\n ServiceAccount = new Gcp.Compute.Inputs.InstanceTemplateServiceAccountArgs\n {\n Email = @default.Email,\n Scopes = new[]\n {\n \"cloud-platform\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := serviceaccount.NewAccount(ctx, \"default\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"service-account-id\"),\n\t\t\tDisplayName: pulumi.String(\"Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfoobar, err := compute.NewDisk(ctx, \"foobar\", \u0026compute.DiskArgs{\n\t\t\tName: pulumi.String(\"existing-disk\"),\n\t\t\tImage: pulumi.String(myImage.SelfLink),\n\t\t\tSize: pulumi.Int(10),\n\t\t\tType: pulumi.String(\"pd-ssd\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdailyBackup, err := compute.NewResourcePolicy(ctx, \"daily_backup\", \u0026compute.ResourcePolicyArgs{\n\t\t\tName: pulumi.String(\"every-day-4am\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSnapshotSchedulePolicy: \u0026compute.ResourcePolicySnapshotSchedulePolicyArgs{\n\t\t\t\tSchedule: \u0026compute.ResourcePolicySnapshotSchedulePolicyScheduleArgs{\n\t\t\t\t\tDailySchedule: \u0026compute.ResourcePolicySnapshotSchedulePolicyScheduleDailyScheduleArgs{\n\t\t\t\t\t\tDaysInCycle: pulumi.Int(1),\n\t\t\t\t\t\tStartTime: pulumi.String(\"04:00\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstanceTemplate(ctx, \"default\", \u0026compute.InstanceTemplateArgs{\n\t\t\tName: pulumi.String(\"appserver-template\"),\n\t\t\tDescription: pulumi.String(\"This template is used to create app server instances.\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"environment\": pulumi.String(\"dev\"),\n\t\t\t},\n\t\t\tInstanceDescription: pulumi.String(\"description assigned to instances\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tCanIpForward: pulumi.Bool(false),\n\t\t\tScheduling: \u0026compute.InstanceTemplateSchedulingArgs{\n\t\t\t\tAutomaticRestart: pulumi.Bool(true),\n\t\t\t\tOnHostMaintenance: pulumi.String(\"MIGRATE\"),\n\t\t\t},\n\t\t\tDisks: compute.InstanceTemplateDiskArray{\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSourceImage: pulumi.String(\"debian-cloud/debian-11\"),\n\t\t\t\t\tAutoDelete: pulumi.Bool(true),\n\t\t\t\t\tBoot: pulumi.Bool(true),\n\t\t\t\t\tResourcePolicies: dailyBackup.ID(),\n\t\t\t\t},\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSource: foobar.Name,\n\t\t\t\t\tAutoDelete: pulumi.Bool(false),\n\t\t\t\t\tBoot: pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: compute.InstanceTemplateNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceTemplateNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tServiceAccount: \u0026compute.InstanceTemplateServiceAccountArgs{\n\t\t\t\tEmail: _default.Email,\n\t\t\t\tScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"cloud-platform\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.Disk;\nimport com.pulumi.gcp.compute.DiskArgs;\nimport com.pulumi.gcp.compute.ResourcePolicy;\nimport com.pulumi.gcp.compute.ResourcePolicyArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyScheduleArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyScheduleDailyScheduleArgs;\nimport com.pulumi.gcp.compute.InstanceTemplate;\nimport com.pulumi.gcp.compute.InstanceTemplateArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateSchedulingArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateServiceAccountArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Account(\"default\", AccountArgs.builder()\n .accountId(\"service-account-id\")\n .displayName(\"Service Account\")\n .build());\n\n final var myImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var foobar = new Disk(\"foobar\", DiskArgs.builder()\n .name(\"existing-disk\")\n .image(myImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .size(10)\n .type(\"pd-ssd\")\n .zone(\"us-central1-a\")\n .build());\n\n var dailyBackup = new ResourcePolicy(\"dailyBackup\", ResourcePolicyArgs.builder()\n .name(\"every-day-4am\")\n .region(\"us-central1\")\n .snapshotSchedulePolicy(ResourcePolicySnapshotSchedulePolicyArgs.builder()\n .schedule(ResourcePolicySnapshotSchedulePolicyScheduleArgs.builder()\n .dailySchedule(ResourcePolicySnapshotSchedulePolicyScheduleDailyScheduleArgs.builder()\n .daysInCycle(1)\n .startTime(\"04:00\")\n .build())\n .build())\n .build())\n .build());\n\n var defaultInstanceTemplate = new InstanceTemplate(\"defaultInstanceTemplate\", InstanceTemplateArgs.builder()\n .name(\"appserver-template\")\n .description(\"This template is used to create app server instances.\")\n .tags( \n \"foo\",\n \"bar\")\n .labels(Map.of(\"environment\", \"dev\"))\n .instanceDescription(\"description assigned to instances\")\n .machineType(\"e2-medium\")\n .canIpForward(false)\n .scheduling(InstanceTemplateSchedulingArgs.builder()\n .automaticRestart(true)\n .onHostMaintenance(\"MIGRATE\")\n .build())\n .disks( \n InstanceTemplateDiskArgs.builder()\n .sourceImage(\"debian-cloud/debian-11\")\n .autoDelete(true)\n .boot(true)\n .resourcePolicies(dailyBackup.id())\n .build(),\n InstanceTemplateDiskArgs.builder()\n .source(foobar.name())\n .autoDelete(false)\n .boot(false)\n .build())\n .networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build())\n .metadata(Map.of(\"foo\", \"bar\"))\n .serviceAccount(InstanceTemplateServiceAccountArgs.builder()\n .email(default_.email())\n .scopes(\"cloud-platform\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:serviceaccount:Account\n properties:\n accountId: service-account-id\n displayName: Service Account\n defaultInstanceTemplate:\n type: gcp:compute:InstanceTemplate\n name: default\n properties:\n name: appserver-template\n description: This template is used to create app server instances.\n tags:\n - foo\n - bar\n labels:\n environment: dev\n instanceDescription: description assigned to instances\n machineType: e2-medium\n canIpForward: false\n scheduling:\n automaticRestart: true\n onHostMaintenance: MIGRATE\n disks:\n - sourceImage: debian-cloud/debian-11\n autoDelete: true\n boot: true\n resourcePolicies: ${dailyBackup.id}\n - source: ${foobar.name}\n autoDelete: false\n boot: false\n networkInterfaces:\n - network: default\n metadata:\n foo: bar\n serviceAccount:\n email: ${default.email}\n scopes:\n - cloud-platform\n foobar:\n type: gcp:compute:Disk\n properties:\n name: existing-disk\n image: ${myImage.selfLink}\n size: 10\n type: pd-ssd\n zone: us-central1-a\n dailyBackup:\n type: gcp:compute:ResourcePolicy\n name: daily_backup\n properties:\n name: every-day-4am\n region: us-central1\n snapshotSchedulePolicy:\n schedule:\n dailySchedule:\n daysInCycle: 1\n startTime: 04:00\nvariables:\n myImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Automatic Envoy Deployment\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.compute.getDefaultServiceAccount({});\nconst myImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst foobar = new gcp.compute.InstanceTemplate(\"foobar\", {\n name: \"appserver-template\",\n machineType: \"e2-medium\",\n canIpForward: false,\n tags: [\n \"foo\",\n \"bar\",\n ],\n disks: [{\n sourceImage: myImage.then(myImage =\u003e myImage.selfLink),\n autoDelete: true,\n boot: true,\n }],\n networkInterfaces: [{\n network: \"default\",\n }],\n scheduling: {\n preemptible: false,\n automaticRestart: true,\n },\n metadata: {\n \"gce-software-declaration\": `{\n \"softwareRecipes\": [{\n \"name\": \"install-gce-service-proxy-agent\",\n \"desired_state\": \"INSTALLED\",\n \"installSteps\": [{\n \"scriptRun\": {\n \"script\": \"#! /bin/bash\\\\nZONE=(curl --silent http://metadata.google.internal/computeMetadata/v1/instance/zone -H Metadata-Flavor:Google | cut -d/ -f4 )\\\\nexport SERVICE_PROXY_AGENT_DIRECTORY=(mktemp -d)\\\\nsudo gsutil cp gs://gce-service-proxy-\"ZONE\"/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"SERVICE_PROXY_AGENT_DIRECTORY\" || sudo gsutil cp gs://gce-service-proxy/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"SERVICE_PROXY_AGENT_DIRECTORY\"\\\\nsudo tar -xzf \"SERVICE_PROXY_AGENT_DIRECTORY\"/service-proxy-agent-0.2.tgz -C \"SERVICE_PROXY_AGENT_DIRECTORY\"\\\\n\"SERVICE_PROXY_AGENT_DIRECTORY\"/service-proxy-agent/service-proxy-agent-bootstrap.sh\"\n }\n }]\n }]\n}\n`,\n \"gce-service-proxy\": `{\n \"api-version\": \"0.2\",\n \"proxy-spec\": {\n \"proxy-port\": 15001,\n \"network\": \"my-network\",\n \"tracing\": \"ON\",\n \"access-log\": \"/var/log/envoy/access.log\"\n }\n \"service\": {\n \"serving-ports\": [80, 81]\n },\n \"labels\": {\n \"app_name\": \"bookserver_app\",\n \"app_version\": \"STABLE\"\n }\n}\n`,\n \"enable-guest-attributes\": \"true\",\n \"enable-osconfig\": \"true\",\n },\n serviceAccount: {\n email: _default.then(_default =\u003e _default.email),\n scopes: [\"cloud-platform\"],\n },\n labels: {\n \"gce-service-proxy\": \"on\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_default_service_account()\nmy_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\nfoobar = gcp.compute.InstanceTemplate(\"foobar\",\n name=\"appserver-template\",\n machine_type=\"e2-medium\",\n can_ip_forward=False,\n tags=[\n \"foo\",\n \"bar\",\n ],\n disks=[{\n \"source_image\": my_image.self_link,\n \"auto_delete\": True,\n \"boot\": True,\n }],\n network_interfaces=[{\n \"network\": \"default\",\n }],\n scheduling={\n \"preemptible\": False,\n \"automatic_restart\": True,\n },\n metadata={\n \"gce-software-declaration\": \"\"\"{\n \"softwareRecipes\": [{\n \"name\": \"install-gce-service-proxy-agent\",\n \"desired_state\": \"INSTALLED\",\n \"installSteps\": [{\n \"scriptRun\": {\n \"script\": \"#! /bin/bash\\nZONE=$(curl --silent http://metadata.google.internal/computeMetadata/v1/instance/zone -H Metadata-Flavor:Google | cut -d/ -f4 )\\nexport SERVICE_PROXY_AGENT_DIRECTORY=$(mktemp -d)\\nsudo gsutil cp gs://gce-service-proxy-\"$ZONE\"/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"$SERVICE_PROXY_AGENT_DIRECTORY\" || sudo gsutil cp gs://gce-service-proxy/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"$SERVICE_PROXY_AGENT_DIRECTORY\"\\nsudo tar -xzf \"$SERVICE_PROXY_AGENT_DIRECTORY\"/service-proxy-agent-0.2.tgz -C \"$SERVICE_PROXY_AGENT_DIRECTORY\"\\n\"$SERVICE_PROXY_AGENT_DIRECTORY\"/service-proxy-agent/service-proxy-agent-bootstrap.sh\"\n }\n }]\n }]\n}\n\"\"\",\n \"gce-service-proxy\": \"\"\"{\n \"api-version\": \"0.2\",\n \"proxy-spec\": {\n \"proxy-port\": 15001,\n \"network\": \"my-network\",\n \"tracing\": \"ON\",\n \"access-log\": \"/var/log/envoy/access.log\"\n }\n \"service\": {\n \"serving-ports\": [80, 81]\n },\n \"labels\": {\n \"app_name\": \"bookserver_app\",\n \"app_version\": \"STABLE\"\n }\n}\n\"\"\",\n \"enable-guest-attributes\": \"true\",\n \"enable-osconfig\": \"true\",\n },\n service_account={\n \"email\": default.email,\n \"scopes\": [\"cloud-platform\"],\n },\n labels={\n \"gce-service-proxy\": \"on\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Compute.GetDefaultServiceAccount.Invoke();\n\n var myImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var foobar = new Gcp.Compute.InstanceTemplate(\"foobar\", new()\n {\n Name = \"appserver-template\",\n MachineType = \"e2-medium\",\n CanIpForward = false,\n Tags = new[]\n {\n \"foo\",\n \"bar\",\n },\n Disks = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n SourceImage = myImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n AutoDelete = true,\n Boot = true,\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n },\n Scheduling = new Gcp.Compute.Inputs.InstanceTemplateSchedulingArgs\n {\n Preemptible = false,\n AutomaticRestart = true,\n },\n Metadata = \n {\n { \"gce-software-declaration\", @\"{\n \"\"softwareRecipes\"\": [{\n \"\"name\"\": \"\"install-gce-service-proxy-agent\"\",\n \"\"desired_state\"\": \"\"INSTALLED\"\",\n \"\"installSteps\"\": [{\n \"\"scriptRun\"\": {\n \"\"script\"\": \"\"#! /bin/bash\\nZONE=$(curl --silent http://metadata.google.internal/computeMetadata/v1/instance/zone -H Metadata-Flavor:Google | cut -d/ -f4 )\\nexport SERVICE_PROXY_AGENT_DIRECTORY=$(mktemp -d)\\nsudo gsutil cp gs://gce-service-proxy-\"\"$ZONE\"\"/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"\"$SERVICE_PROXY_AGENT_DIRECTORY\"\" || sudo gsutil cp gs://gce-service-proxy/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"\"$SERVICE_PROXY_AGENT_DIRECTORY\"\"\\nsudo tar -xzf \"\"$SERVICE_PROXY_AGENT_DIRECTORY\"\"/service-proxy-agent-0.2.tgz -C \"\"$SERVICE_PROXY_AGENT_DIRECTORY\"\"\\n\"\"$SERVICE_PROXY_AGENT_DIRECTORY\"\"/service-proxy-agent/service-proxy-agent-bootstrap.sh\"\"\n }\n }]\n }]\n}\n\" },\n { \"gce-service-proxy\", @\"{\n \"\"api-version\"\": \"\"0.2\"\",\n \"\"proxy-spec\"\": {\n \"\"proxy-port\"\": 15001,\n \"\"network\"\": \"\"my-network\"\",\n \"\"tracing\"\": \"\"ON\"\",\n \"\"access-log\"\": \"\"/var/log/envoy/access.log\"\"\n }\n \"\"service\"\": {\n \"\"serving-ports\"\": [80, 81]\n },\n \"\"labels\"\": {\n \"\"app_name\"\": \"\"bookserver_app\"\",\n \"\"app_version\"\": \"\"STABLE\"\"\n }\n}\n\" },\n { \"enable-guest-attributes\", \"true\" },\n { \"enable-osconfig\", \"true\" },\n },\n ServiceAccount = new Gcp.Compute.Inputs.InstanceTemplateServiceAccountArgs\n {\n Email = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Email)),\n Scopes = new[]\n {\n \"cloud-platform\",\n },\n },\n Labels = \n {\n { \"gce-service-proxy\", \"on\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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_default, err := compute.GetDefaultServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstanceTemplate(ctx, \"foobar\", \u0026compute.InstanceTemplateArgs{\n\t\t\tName: pulumi.String(\"appserver-template\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tCanIpForward: pulumi.Bool(false),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDisks: compute.InstanceTemplateDiskArray{\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSourceImage: pulumi.String(myImage.SelfLink),\n\t\t\t\t\tAutoDelete: pulumi.Bool(true),\n\t\t\t\t\tBoot: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: compute.InstanceTemplateNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceTemplateNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tScheduling: \u0026compute.InstanceTemplateSchedulingArgs{\n\t\t\t\tPreemptible: pulumi.Bool(false),\n\t\t\t\tAutomaticRestart: pulumi.Bool(true),\n\t\t\t},\n\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\"gce-software-declaration\": pulumi.String(`{\n \"softwareRecipes\": [{\n \"name\": \"install-gce-service-proxy-agent\",\n \"desired_state\": \"INSTALLED\",\n \"installSteps\": [{\n \"scriptRun\": {\n \"script\": \"#! /bin/bash\\nZONE=$(curl --silent http://metadata.google.internal/computeMetadata/v1/instance/zone -H Metadata-Flavor:Google | cut -d/ -f4 )\\nexport SERVICE_PROXY_AGENT_DIRECTORY=$(mktemp -d)\\nsudo gsutil cp gs://gce-service-proxy-\"$ZONE\"/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"$SERVICE_PROXY_AGENT_DIRECTORY\" || sudo gsutil cp gs://gce-service-proxy/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"$SERVICE_PROXY_AGENT_DIRECTORY\"\\nsudo tar -xzf \"$SERVICE_PROXY_AGENT_DIRECTORY\"/service-proxy-agent-0.2.tgz -C \"$SERVICE_PROXY_AGENT_DIRECTORY\"\\n\"$SERVICE_PROXY_AGENT_DIRECTORY\"/service-proxy-agent/service-proxy-agent-bootstrap.sh\"\n }\n }]\n }]\n}\n`),\n\t\t\t\t\"gce-service-proxy\": pulumi.String(`{\n \"api-version\": \"0.2\",\n \"proxy-spec\": {\n \"proxy-port\": 15001,\n \"network\": \"my-network\",\n \"tracing\": \"ON\",\n \"access-log\": \"/var/log/envoy/access.log\"\n }\n \"service\": {\n \"serving-ports\": [80, 81]\n },\n \"labels\": {\n \"app_name\": \"bookserver_app\",\n \"app_version\": \"STABLE\"\n }\n}\n`),\n\t\t\t\t\"enable-guest-attributes\": pulumi.String(\"true\"),\n\t\t\t\t\"enable-osconfig\": pulumi.String(\"true\"),\n\t\t\t},\n\t\t\tServiceAccount: \u0026compute.InstanceTemplateServiceAccountArgs{\n\t\t\t\tEmail: pulumi.String(_default.Email),\n\t\t\t\tScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"cloud-platform\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"gce-service-proxy\": pulumi.String(\"on\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetDefaultServiceAccountArgs;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.InstanceTemplate;\nimport com.pulumi.gcp.compute.InstanceTemplateArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateSchedulingArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateServiceAccountArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = ComputeFunctions.getDefaultServiceAccount();\n\n final var myImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var foobar = new InstanceTemplate(\"foobar\", InstanceTemplateArgs.builder()\n .name(\"appserver-template\")\n .machineType(\"e2-medium\")\n .canIpForward(false)\n .tags( \n \"foo\",\n \"bar\")\n .disks(InstanceTemplateDiskArgs.builder()\n .sourceImage(myImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .autoDelete(true)\n .boot(true)\n .build())\n .networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build())\n .scheduling(InstanceTemplateSchedulingArgs.builder()\n .preemptible(false)\n .automaticRestart(true)\n .build())\n .metadata(Map.ofEntries(\n Map.entry(\"gce-software-declaration\", \"\"\"\n{\n \"softwareRecipes\": [{\n \"name\": \"install-gce-service-proxy-agent\",\n \"desired_state\": \"INSTALLED\",\n \"installSteps\": [{\n \"scriptRun\": {\n \"script\": \"#! /bin/bash\\nZONE=$(curl --silent http://metadata.google.internal/computeMetadata/v1/instance/zone -H Metadata-Flavor:Google | cut -d/ -f4 )\\nexport SERVICE_PROXY_AGENT_DIRECTORY=$(mktemp -d)\\nsudo gsutil cp gs://gce-service-proxy-\"$ZONE\"/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"$SERVICE_PROXY_AGENT_DIRECTORY\" || sudo gsutil cp gs://gce-service-proxy/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"$SERVICE_PROXY_AGENT_DIRECTORY\"\\nsudo tar -xzf \"$SERVICE_PROXY_AGENT_DIRECTORY\"/service-proxy-agent-0.2.tgz -C \"$SERVICE_PROXY_AGENT_DIRECTORY\"\\n\"$SERVICE_PROXY_AGENT_DIRECTORY\"/service-proxy-agent/service-proxy-agent-bootstrap.sh\"\n }\n }]\n }]\n}\n \"\"\"),\n Map.entry(\"gce-service-proxy\", \"\"\"\n{\n \"api-version\": \"0.2\",\n \"proxy-spec\": {\n \"proxy-port\": 15001,\n \"network\": \"my-network\",\n \"tracing\": \"ON\",\n \"access-log\": \"/var/log/envoy/access.log\"\n }\n \"service\": {\n \"serving-ports\": [80, 81]\n },\n \"labels\": {\n \"app_name\": \"bookserver_app\",\n \"app_version\": \"STABLE\"\n }\n}\n \"\"\"),\n Map.entry(\"enable-guest-attributes\", \"true\"),\n Map.entry(\"enable-osconfig\", \"true\")\n ))\n .serviceAccount(InstanceTemplateServiceAccountArgs.builder()\n .email(default_.email())\n .scopes(\"cloud-platform\")\n .build())\n .labels(Map.of(\"gce-service-proxy\", \"on\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foobar:\n type: gcp:compute:InstanceTemplate\n properties:\n name: appserver-template\n machineType: e2-medium\n canIpForward: false\n tags:\n - foo\n - bar\n disks:\n - sourceImage: ${myImage.selfLink}\n autoDelete: true\n boot: true\n networkInterfaces:\n - network: default\n scheduling:\n preemptible: false\n automaticRestart: true\n metadata:\n gce-software-declaration: |\n {\n \"softwareRecipes\": [{\n \"name\": \"install-gce-service-proxy-agent\",\n \"desired_state\": \"INSTALLED\",\n \"installSteps\": [{\n \"scriptRun\": {\n \"script\": \"#! /bin/bash\\nZONE=$(curl --silent http://metadata.google.internal/computeMetadata/v1/instance/zone -H Metadata-Flavor:Google | cut -d/ -f4 )\\nexport SERVICE_PROXY_AGENT_DIRECTORY=$(mktemp -d)\\nsudo gsutil cp gs://gce-service-proxy-\"$ZONE\"/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"$SERVICE_PROXY_AGENT_DIRECTORY\" || sudo gsutil cp gs://gce-service-proxy/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"$SERVICE_PROXY_AGENT_DIRECTORY\"\\nsudo tar -xzf \"$SERVICE_PROXY_AGENT_DIRECTORY\"/service-proxy-agent-0.2.tgz -C \"$SERVICE_PROXY_AGENT_DIRECTORY\"\\n\"$SERVICE_PROXY_AGENT_DIRECTORY\"/service-proxy-agent/service-proxy-agent-bootstrap.sh\"\n }\n }]\n }]\n }\n gce-service-proxy: |\n {\n \"api-version\": \"0.2\",\n \"proxy-spec\": {\n \"proxy-port\": 15001,\n \"network\": \"my-network\",\n \"tracing\": \"ON\",\n \"access-log\": \"/var/log/envoy/access.log\"\n }\n \"service\": {\n \"serving-ports\": [80, 81]\n },\n \"labels\": {\n \"app_name\": \"bookserver_app\",\n \"app_version\": \"STABLE\"\n }\n }\n enable-guest-attributes: 'true'\n enable-osconfig: 'true'\n serviceAccount:\n email: ${default.email}\n scopes:\n - cloud-platform\n labels:\n gce-service-proxy: on\nvariables:\n default:\n fn::invoke:\n Function: gcp:compute:getDefaultServiceAccount\n Arguments: {}\n myImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### Confidential Computing\n\nExample with [Confidential Mode](https://cloud.google.com/confidential-computing/confidential-vm/docs/confidential-vm-overview) activated.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.serviceaccount.Account(\"default\", {\n accountId: \"my-custom-sa\",\n displayName: \"Custom SA for VM Instance\",\n});\nconst confidentialInstanceTemplate = new gcp.compute.InstanceTemplate(\"confidential_instance_template\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n network: \"default\",\n }],\n name: \"my-confidential-instance-template\",\n region: \"us-central1\",\n machineType: \"n2d-standard-2\",\n minCpuPlatform: \"AMD Milan\",\n confidentialInstanceConfig: {\n enableConfidentialCompute: true,\n confidentialInstanceType: \"SEV\",\n },\n disks: [{\n sourceImage: \"ubuntu-os-cloud/ubuntu-2004-lts\",\n }],\n serviceAccount: {\n email: _default.email,\n scopes: [\"cloud-platform\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.serviceaccount.Account(\"default\",\n account_id=\"my-custom-sa\",\n display_name=\"Custom SA for VM Instance\")\nconfidential_instance_template = gcp.compute.InstanceTemplate(\"confidential_instance_template\",\n network_interfaces=[{\n \"access_configs\": [{}],\n \"network\": \"default\",\n }],\n name=\"my-confidential-instance-template\",\n region=\"us-central1\",\n machine_type=\"n2d-standard-2\",\n min_cpu_platform=\"AMD Milan\",\n confidential_instance_config={\n \"enable_confidential_compute\": True,\n \"confidential_instance_type\": \"SEV\",\n },\n disks=[{\n \"source_image\": \"ubuntu-os-cloud/ubuntu-2004-lts\",\n }],\n service_account={\n \"email\": default.email,\n \"scopes\": [\"cloud-platform\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.ServiceAccount.Account(\"default\", new()\n {\n AccountId = \"my-custom-sa\",\n DisplayName = \"Custom SA for VM Instance\",\n });\n\n var confidentialInstanceTemplate = new Gcp.Compute.InstanceTemplate(\"confidential_instance_template\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Network = \"default\",\n },\n },\n Name = \"my-confidential-instance-template\",\n Region = \"us-central1\",\n MachineType = \"n2d-standard-2\",\n MinCpuPlatform = \"AMD Milan\",\n ConfidentialInstanceConfig = new Gcp.Compute.Inputs.InstanceTemplateConfidentialInstanceConfigArgs\n {\n EnableConfidentialCompute = true,\n ConfidentialInstanceType = \"SEV\",\n },\n Disks = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n SourceImage = \"ubuntu-os-cloud/ubuntu-2004-lts\",\n },\n },\n ServiceAccount = new Gcp.Compute.Inputs.InstanceTemplateServiceAccountArgs\n {\n Email = @default.Email,\n Scopes = new[]\n {\n \"cloud-platform\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := serviceaccount.NewAccount(ctx, \"default\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-custom-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Custom SA for VM Instance\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstanceTemplate(ctx, \"confidential_instance_template\", \u0026compute.InstanceTemplateArgs{\n\t\t\tNetworkInterfaces: compute.InstanceTemplateNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceTemplateNetworkInterfaceArgs{\n\t\t\t\t\tAccessConfigs: compute.InstanceTemplateNetworkInterfaceAccessConfigArray{\n\t\t\t\t\t\tnil,\n\t\t\t\t\t},\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"my-confidential-instance-template\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tMachineType: pulumi.String(\"n2d-standard-2\"),\n\t\t\tMinCpuPlatform: pulumi.String(\"AMD Milan\"),\n\t\t\tConfidentialInstanceConfig: \u0026compute.InstanceTemplateConfidentialInstanceConfigArgs{\n\t\t\t\tEnableConfidentialCompute: pulumi.Bool(true),\n\t\t\t\tConfidentialInstanceType: pulumi.String(\"SEV\"),\n\t\t\t},\n\t\t\tDisks: compute.InstanceTemplateDiskArray{\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSourceImage: pulumi.String(\"ubuntu-os-cloud/ubuntu-2004-lts\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceAccount: \u0026compute.InstanceTemplateServiceAccountArgs{\n\t\t\t\tEmail: _default.Email,\n\t\t\t\tScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"cloud-platform\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.compute.InstanceTemplate;\nimport com.pulumi.gcp.compute.InstanceTemplateArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateConfidentialInstanceConfigArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateServiceAccountArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Account(\"default\", AccountArgs.builder()\n .accountId(\"my-custom-sa\")\n .displayName(\"Custom SA for VM Instance\")\n .build());\n\n var confidentialInstanceTemplate = new InstanceTemplate(\"confidentialInstanceTemplate\", InstanceTemplateArgs.builder()\n .networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()\n .accessConfigs()\n .network(\"default\")\n .build())\n .name(\"my-confidential-instance-template\")\n .region(\"us-central1\")\n .machineType(\"n2d-standard-2\")\n .minCpuPlatform(\"AMD Milan\")\n .confidentialInstanceConfig(InstanceTemplateConfidentialInstanceConfigArgs.builder()\n .enableConfidentialCompute(true)\n .confidentialInstanceType(\"SEV\")\n .build())\n .disks(InstanceTemplateDiskArgs.builder()\n .sourceImage(\"ubuntu-os-cloud/ubuntu-2004-lts\")\n .build())\n .serviceAccount(InstanceTemplateServiceAccountArgs.builder()\n .email(default_.email())\n .scopes(\"cloud-platform\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-custom-sa\n displayName: Custom SA for VM Instance\n confidentialInstanceTemplate:\n type: gcp:compute:InstanceTemplate\n name: confidential_instance_template\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n network: default\n name: my-confidential-instance-template\n region: us-central1\n machineType: n2d-standard-2\n minCpuPlatform: AMD Milan\n confidentialInstanceConfig:\n enableConfidentialCompute: true\n confidentialInstanceType: SEV\n disks:\n - sourceImage: ubuntu-os-cloud/ubuntu-2004-lts\n serviceAccount:\n email: ${default.email}\n scopes:\n - cloud-platform\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Deploying the Latest Image\n\nA common way to use instance templates and managed instance groups is to deploy the\nlatest image in a family, usually the latest build of your application. There are two\nways to do this in the provider, and they have their pros and cons. The difference ends\nup being in how \"latest\" is interpreted. You can either deploy the latest image available\nwhen the provider runs, or you can have each instance check what the latest image is when\nit's being created, either as part of a scaling event or being rebuilt by the instance\ngroup manager.\n\nIf you're not sure, we recommend deploying the latest image available when the provider runs,\nbecause this means all the instances in your group will be based on the same image, always,\nand means that no upgrades or changes to your instances happen outside of a `pulumi up`.\nYou can achieve this by using the `gcp.compute.Image`\ndata source, which will retrieve the latest image on every `pulumi apply`, and will update\nthe template to use that specific image:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst instanceTemplate = new gcp.compute.InstanceTemplate(\"instance_template\", {\n namePrefix: \"instance-template-\",\n machineType: \"e2-medium\",\n region: \"us-central1\",\n disks: [{\n sourceImage: myImage.then(myImage =\u003e myImage.selfLink),\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\ninstance_template = gcp.compute.InstanceTemplate(\"instance_template\",\n name_prefix=\"instance-template-\",\n machine_type=\"e2-medium\",\n region=\"us-central1\",\n disks=[{\n \"source_image\": my_image.self_link,\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var myImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var instanceTemplate = new Gcp.Compute.InstanceTemplate(\"instance_template\", new()\n {\n NamePrefix = \"instance-template-\",\n MachineType = \"e2-medium\",\n Region = \"us-central1\",\n Disks = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n SourceImage = myImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tmyImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstanceTemplate(ctx, \"instance_template\", \u0026compute.InstanceTemplateArgs{\n\t\t\tNamePrefix: pulumi.String(\"instance-template-\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDisks: compute.InstanceTemplateDiskArray{\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSourceImage: pulumi.String(myImage.SelfLink),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.InstanceTemplate;\nimport com.pulumi.gcp.compute.InstanceTemplateArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var myImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var instanceTemplate = new InstanceTemplate(\"instanceTemplate\", InstanceTemplateArgs.builder()\n .namePrefix(\"instance-template-\")\n .machineType(\"e2-medium\")\n .region(\"us-central1\")\n .disks(InstanceTemplateDiskArgs.builder()\n .sourceImage(myImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instanceTemplate:\n type: gcp:compute:InstanceTemplate\n name: instance_template\n properties:\n namePrefix: instance-template-\n machineType: e2-medium\n region: us-central1\n disks:\n - sourceImage: ${myImage.selfLink}\nvariables:\n myImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nTo have instances update to the latest on every scaling event or instance re-creation,\nuse the family as the image for the disk, and it will use GCP's default behavior, setting\nthe image for the template to the family:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instanceTemplate = new gcp.compute.InstanceTemplate(\"instance_template\", {\n namePrefix: \"instance-template-\",\n machineType: \"e2-medium\",\n region: \"us-central1\",\n disks: [{\n sourceImage: \"debian-cloud/debian-11\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance_template = gcp.compute.InstanceTemplate(\"instance_template\",\n name_prefix=\"instance-template-\",\n machine_type=\"e2-medium\",\n region=\"us-central1\",\n disks=[{\n \"source_image\": \"debian-cloud/debian-11\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var instanceTemplate = new Gcp.Compute.InstanceTemplate(\"instance_template\", new()\n {\n NamePrefix = \"instance-template-\",\n MachineType = \"e2-medium\",\n Region = \"us-central1\",\n Disks = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n SourceImage = \"debian-cloud/debian-11\",\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.NewInstanceTemplate(ctx, \"instance_template\", \u0026compute.InstanceTemplateArgs{\n\t\t\tNamePrefix: pulumi.String(\"instance-template-\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDisks: compute.InstanceTemplateDiskArray{\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSourceImage: pulumi.String(\"debian-cloud/debian-11\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.InstanceTemplate;\nimport com.pulumi.gcp.compute.InstanceTemplateArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var instanceTemplate = new InstanceTemplate(\"instanceTemplate\", InstanceTemplateArgs.builder()\n .namePrefix(\"instance-template-\")\n .machineType(\"e2-medium\")\n .region(\"us-central1\")\n .disks(InstanceTemplateDiskArgs.builder()\n .sourceImage(\"debian-cloud/debian-11\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instanceTemplate:\n type: gcp:compute:InstanceTemplate\n name: instance_template\n properties:\n namePrefix: instance-template-\n machineType: e2-medium\n region: us-central1\n disks:\n - sourceImage: debian-cloud/debian-11\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance templates can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/instanceTemplates/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, instance templates can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/instanceTemplate:InstanceTemplate default projects/{{project}}/global/instanceTemplates/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/instanceTemplate:InstanceTemplate default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/instanceTemplate:InstanceTemplate default {{name}}\n```\n\n", + "description": "\u003e **Note**: Global instance templates can be used in any region. To lower the impact of outages outside your region and gain data residency within your region, use google_compute_region_instance_template.\n\nManages a VM instance template resource within GCE. For more information see\n[the official documentation](https://cloud.google.com/compute/docs/instance-templates)\nand\n[API](https://cloud.google.com/compute/docs/reference/latest/instanceTemplates).\n\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.serviceaccount.Account(\"default\", {\n accountId: \"service-account-id\",\n displayName: \"Service Account\",\n});\nconst myImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst foobar = new gcp.compute.Disk(\"foobar\", {\n name: \"existing-disk\",\n image: myImage.then(myImage =\u003e myImage.selfLink),\n size: 10,\n type: \"pd-ssd\",\n zone: \"us-central1-a\",\n});\nconst dailyBackup = new gcp.compute.ResourcePolicy(\"daily_backup\", {\n name: \"every-day-4am\",\n region: \"us-central1\",\n snapshotSchedulePolicy: {\n schedule: {\n dailySchedule: {\n daysInCycle: 1,\n startTime: \"04:00\",\n },\n },\n },\n});\nconst defaultInstanceTemplate = new gcp.compute.InstanceTemplate(\"default\", {\n name: \"appserver-template\",\n description: \"This template is used to create app server instances.\",\n tags: [\n \"foo\",\n \"bar\",\n ],\n labels: {\n environment: \"dev\",\n },\n instanceDescription: \"description assigned to instances\",\n machineType: \"e2-medium\",\n canIpForward: false,\n scheduling: {\n automaticRestart: true,\n onHostMaintenance: \"MIGRATE\",\n },\n disks: [\n {\n sourceImage: \"debian-cloud/debian-11\",\n autoDelete: true,\n boot: true,\n resourcePolicies: dailyBackup.id,\n },\n {\n source: foobar.name,\n autoDelete: false,\n boot: false,\n },\n ],\n networkInterfaces: [{\n network: \"default\",\n }],\n metadata: {\n foo: \"bar\",\n },\n serviceAccount: {\n email: _default.email,\n scopes: [\"cloud-platform\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.serviceaccount.Account(\"default\",\n account_id=\"service-account-id\",\n display_name=\"Service Account\")\nmy_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\nfoobar = gcp.compute.Disk(\"foobar\",\n name=\"existing-disk\",\n image=my_image.self_link,\n size=10,\n type=\"pd-ssd\",\n zone=\"us-central1-a\")\ndaily_backup = gcp.compute.ResourcePolicy(\"daily_backup\",\n name=\"every-day-4am\",\n region=\"us-central1\",\n snapshot_schedule_policy={\n \"schedule\": {\n \"daily_schedule\": {\n \"days_in_cycle\": 1,\n \"start_time\": \"04:00\",\n },\n },\n })\ndefault_instance_template = gcp.compute.InstanceTemplate(\"default\",\n name=\"appserver-template\",\n description=\"This template is used to create app server instances.\",\n tags=[\n \"foo\",\n \"bar\",\n ],\n labels={\n \"environment\": \"dev\",\n },\n instance_description=\"description assigned to instances\",\n machine_type=\"e2-medium\",\n can_ip_forward=False,\n scheduling={\n \"automatic_restart\": True,\n \"on_host_maintenance\": \"MIGRATE\",\n },\n disks=[\n {\n \"source_image\": \"debian-cloud/debian-11\",\n \"auto_delete\": True,\n \"boot\": True,\n \"resource_policies\": daily_backup.id,\n },\n {\n \"source\": foobar.name,\n \"auto_delete\": False,\n \"boot\": False,\n },\n ],\n network_interfaces=[{\n \"network\": \"default\",\n }],\n metadata={\n \"foo\": \"bar\",\n },\n service_account={\n \"email\": default.email,\n \"scopes\": [\"cloud-platform\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.ServiceAccount.Account(\"default\", new()\n {\n AccountId = \"service-account-id\",\n DisplayName = \"Service Account\",\n });\n\n var myImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var foobar = new Gcp.Compute.Disk(\"foobar\", new()\n {\n Name = \"existing-disk\",\n Image = myImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n Size = 10,\n Type = \"pd-ssd\",\n Zone = \"us-central1-a\",\n });\n\n var dailyBackup = new Gcp.Compute.ResourcePolicy(\"daily_backup\", new()\n {\n Name = \"every-day-4am\",\n Region = \"us-central1\",\n SnapshotSchedulePolicy = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyArgs\n {\n Schedule = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyScheduleArgs\n {\n DailySchedule = new Gcp.Compute.Inputs.ResourcePolicySnapshotSchedulePolicyScheduleDailyScheduleArgs\n {\n DaysInCycle = 1,\n StartTime = \"04:00\",\n },\n },\n },\n });\n\n var defaultInstanceTemplate = new Gcp.Compute.InstanceTemplate(\"default\", new()\n {\n Name = \"appserver-template\",\n Description = \"This template is used to create app server instances.\",\n Tags = new[]\n {\n \"foo\",\n \"bar\",\n },\n Labels = \n {\n { \"environment\", \"dev\" },\n },\n InstanceDescription = \"description assigned to instances\",\n MachineType = \"e2-medium\",\n CanIpForward = false,\n Scheduling = new Gcp.Compute.Inputs.InstanceTemplateSchedulingArgs\n {\n AutomaticRestart = true,\n OnHostMaintenance = \"MIGRATE\",\n },\n Disks = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n SourceImage = \"debian-cloud/debian-11\",\n AutoDelete = true,\n Boot = true,\n ResourcePolicies = dailyBackup.Id,\n },\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n Source = foobar.Name,\n AutoDelete = false,\n Boot = false,\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n },\n Metadata = \n {\n { \"foo\", \"bar\" },\n },\n ServiceAccount = new Gcp.Compute.Inputs.InstanceTemplateServiceAccountArgs\n {\n Email = @default.Email,\n Scopes = new[]\n {\n \"cloud-platform\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := serviceaccount.NewAccount(ctx, \"default\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"service-account-id\"),\n\t\t\tDisplayName: pulumi.String(\"Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfoobar, err := compute.NewDisk(ctx, \"foobar\", \u0026compute.DiskArgs{\n\t\t\tName: pulumi.String(\"existing-disk\"),\n\t\t\tImage: pulumi.String(myImage.SelfLink),\n\t\t\tSize: pulumi.Int(10),\n\t\t\tType: pulumi.String(\"pd-ssd\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdailyBackup, err := compute.NewResourcePolicy(ctx, \"daily_backup\", \u0026compute.ResourcePolicyArgs{\n\t\t\tName: pulumi.String(\"every-day-4am\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSnapshotSchedulePolicy: \u0026compute.ResourcePolicySnapshotSchedulePolicyArgs{\n\t\t\t\tSchedule: \u0026compute.ResourcePolicySnapshotSchedulePolicyScheduleArgs{\n\t\t\t\t\tDailySchedule: \u0026compute.ResourcePolicySnapshotSchedulePolicyScheduleDailyScheduleArgs{\n\t\t\t\t\t\tDaysInCycle: pulumi.Int(1),\n\t\t\t\t\t\tStartTime: pulumi.String(\"04:00\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstanceTemplate(ctx, \"default\", \u0026compute.InstanceTemplateArgs{\n\t\t\tName: pulumi.String(\"appserver-template\"),\n\t\t\tDescription: pulumi.String(\"This template is used to create app server instances.\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"environment\": pulumi.String(\"dev\"),\n\t\t\t},\n\t\t\tInstanceDescription: pulumi.String(\"description assigned to instances\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tCanIpForward: pulumi.Bool(false),\n\t\t\tScheduling: \u0026compute.InstanceTemplateSchedulingArgs{\n\t\t\t\tAutomaticRestart: pulumi.Bool(true),\n\t\t\t\tOnHostMaintenance: pulumi.String(\"MIGRATE\"),\n\t\t\t},\n\t\t\tDisks: compute.InstanceTemplateDiskArray{\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSourceImage: pulumi.String(\"debian-cloud/debian-11\"),\n\t\t\t\t\tAutoDelete: pulumi.Bool(true),\n\t\t\t\t\tBoot: pulumi.Bool(true),\n\t\t\t\t\tResourcePolicies: dailyBackup.ID(),\n\t\t\t\t},\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSource: foobar.Name,\n\t\t\t\t\tAutoDelete: pulumi.Bool(false),\n\t\t\t\t\tBoot: pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: compute.InstanceTemplateNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceTemplateNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tServiceAccount: \u0026compute.InstanceTemplateServiceAccountArgs{\n\t\t\t\tEmail: _default.Email,\n\t\t\t\tScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"cloud-platform\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.Disk;\nimport com.pulumi.gcp.compute.DiskArgs;\nimport com.pulumi.gcp.compute.ResourcePolicy;\nimport com.pulumi.gcp.compute.ResourcePolicyArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyScheduleArgs;\nimport com.pulumi.gcp.compute.inputs.ResourcePolicySnapshotSchedulePolicyScheduleDailyScheduleArgs;\nimport com.pulumi.gcp.compute.InstanceTemplate;\nimport com.pulumi.gcp.compute.InstanceTemplateArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateSchedulingArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateServiceAccountArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Account(\"default\", AccountArgs.builder()\n .accountId(\"service-account-id\")\n .displayName(\"Service Account\")\n .build());\n\n final var myImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var foobar = new Disk(\"foobar\", DiskArgs.builder()\n .name(\"existing-disk\")\n .image(myImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .size(10)\n .type(\"pd-ssd\")\n .zone(\"us-central1-a\")\n .build());\n\n var dailyBackup = new ResourcePolicy(\"dailyBackup\", ResourcePolicyArgs.builder()\n .name(\"every-day-4am\")\n .region(\"us-central1\")\n .snapshotSchedulePolicy(ResourcePolicySnapshotSchedulePolicyArgs.builder()\n .schedule(ResourcePolicySnapshotSchedulePolicyScheduleArgs.builder()\n .dailySchedule(ResourcePolicySnapshotSchedulePolicyScheduleDailyScheduleArgs.builder()\n .daysInCycle(1)\n .startTime(\"04:00\")\n .build())\n .build())\n .build())\n .build());\n\n var defaultInstanceTemplate = new InstanceTemplate(\"defaultInstanceTemplate\", InstanceTemplateArgs.builder()\n .name(\"appserver-template\")\n .description(\"This template is used to create app server instances.\")\n .tags( \n \"foo\",\n \"bar\")\n .labels(Map.of(\"environment\", \"dev\"))\n .instanceDescription(\"description assigned to instances\")\n .machineType(\"e2-medium\")\n .canIpForward(false)\n .scheduling(InstanceTemplateSchedulingArgs.builder()\n .automaticRestart(true)\n .onHostMaintenance(\"MIGRATE\")\n .build())\n .disks( \n InstanceTemplateDiskArgs.builder()\n .sourceImage(\"debian-cloud/debian-11\")\n .autoDelete(true)\n .boot(true)\n .resourcePolicies(dailyBackup.id())\n .build(),\n InstanceTemplateDiskArgs.builder()\n .source(foobar.name())\n .autoDelete(false)\n .boot(false)\n .build())\n .networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build())\n .metadata(Map.of(\"foo\", \"bar\"))\n .serviceAccount(InstanceTemplateServiceAccountArgs.builder()\n .email(default_.email())\n .scopes(\"cloud-platform\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:serviceaccount:Account\n properties:\n accountId: service-account-id\n displayName: Service Account\n defaultInstanceTemplate:\n type: gcp:compute:InstanceTemplate\n name: default\n properties:\n name: appserver-template\n description: This template is used to create app server instances.\n tags:\n - foo\n - bar\n labels:\n environment: dev\n instanceDescription: description assigned to instances\n machineType: e2-medium\n canIpForward: false\n scheduling:\n automaticRestart: true\n onHostMaintenance: MIGRATE\n disks:\n - sourceImage: debian-cloud/debian-11\n autoDelete: true\n boot: true\n resourcePolicies: ${dailyBackup.id}\n - source: ${foobar.name}\n autoDelete: false\n boot: false\n networkInterfaces:\n - network: default\n metadata:\n foo: bar\n serviceAccount:\n email: ${default.email}\n scopes:\n - cloud-platform\n foobar:\n type: gcp:compute:Disk\n properties:\n name: existing-disk\n image: ${myImage.selfLink}\n size: 10\n type: pd-ssd\n zone: us-central1-a\n dailyBackup:\n type: gcp:compute:ResourcePolicy\n name: daily_backup\n properties:\n name: every-day-4am\n region: us-central1\n snapshotSchedulePolicy:\n schedule:\n dailySchedule:\n daysInCycle: 1\n startTime: 04:00\nvariables:\n myImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Automatic Envoy Deployment\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.compute.getDefaultServiceAccount({});\nconst myImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst foobar = new gcp.compute.InstanceTemplate(\"foobar\", {\n name: \"appserver-template\",\n machineType: \"e2-medium\",\n canIpForward: false,\n tags: [\n \"foo\",\n \"bar\",\n ],\n disks: [{\n sourceImage: myImage.then(myImage =\u003e myImage.selfLink),\n autoDelete: true,\n boot: true,\n }],\n networkInterfaces: [{\n network: \"default\",\n }],\n scheduling: {\n preemptible: false,\n automaticRestart: true,\n },\n metadata: {\n \"gce-software-declaration\": `{\n \"softwareRecipes\": [{\n \"name\": \"install-gce-service-proxy-agent\",\n \"desired_state\": \"INSTALLED\",\n \"installSteps\": [{\n \"scriptRun\": {\n \"script\": \"#! /bin/bash\\\\nZONE=(curl --silent http://metadata.google.internal/computeMetadata/v1/instance/zone -H Metadata-Flavor:Google | cut -d/ -f4 )\\\\nexport SERVICE_PROXY_AGENT_DIRECTORY=(mktemp -d)\\\\nsudo gsutil cp gs://gce-service-proxy-\"ZONE\"/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"SERVICE_PROXY_AGENT_DIRECTORY\" || sudo gsutil cp gs://gce-service-proxy/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"SERVICE_PROXY_AGENT_DIRECTORY\"\\\\nsudo tar -xzf \"SERVICE_PROXY_AGENT_DIRECTORY\"/service-proxy-agent-0.2.tgz -C \"SERVICE_PROXY_AGENT_DIRECTORY\"\\\\n\"SERVICE_PROXY_AGENT_DIRECTORY\"/service-proxy-agent/service-proxy-agent-bootstrap.sh\"\n }\n }]\n }]\n}\n`,\n \"gce-service-proxy\": `{\n \"api-version\": \"0.2\",\n \"proxy-spec\": {\n \"proxy-port\": 15001,\n \"network\": \"my-network\",\n \"tracing\": \"ON\",\n \"access-log\": \"/var/log/envoy/access.log\"\n }\n \"service\": {\n \"serving-ports\": [80, 81]\n },\n \"labels\": {\n \"app_name\": \"bookserver_app\",\n \"app_version\": \"STABLE\"\n }\n}\n`,\n \"enable-guest-attributes\": \"true\",\n \"enable-osconfig\": \"true\",\n },\n serviceAccount: {\n email: _default.then(_default =\u003e _default.email),\n scopes: [\"cloud-platform\"],\n },\n labels: {\n \"gce-service-proxy\": \"on\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_default_service_account()\nmy_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\nfoobar = gcp.compute.InstanceTemplate(\"foobar\",\n name=\"appserver-template\",\n machine_type=\"e2-medium\",\n can_ip_forward=False,\n tags=[\n \"foo\",\n \"bar\",\n ],\n disks=[{\n \"source_image\": my_image.self_link,\n \"auto_delete\": True,\n \"boot\": True,\n }],\n network_interfaces=[{\n \"network\": \"default\",\n }],\n scheduling={\n \"preemptible\": False,\n \"automatic_restart\": True,\n },\n metadata={\n \"gce-software-declaration\": \"\"\"{\n \"softwareRecipes\": [{\n \"name\": \"install-gce-service-proxy-agent\",\n \"desired_state\": \"INSTALLED\",\n \"installSteps\": [{\n \"scriptRun\": {\n \"script\": \"#! /bin/bash\\nZONE=$(curl --silent http://metadata.google.internal/computeMetadata/v1/instance/zone -H Metadata-Flavor:Google | cut -d/ -f4 )\\nexport SERVICE_PROXY_AGENT_DIRECTORY=$(mktemp -d)\\nsudo gsutil cp gs://gce-service-proxy-\"$ZONE\"/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"$SERVICE_PROXY_AGENT_DIRECTORY\" || sudo gsutil cp gs://gce-service-proxy/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"$SERVICE_PROXY_AGENT_DIRECTORY\"\\nsudo tar -xzf \"$SERVICE_PROXY_AGENT_DIRECTORY\"/service-proxy-agent-0.2.tgz -C \"$SERVICE_PROXY_AGENT_DIRECTORY\"\\n\"$SERVICE_PROXY_AGENT_DIRECTORY\"/service-proxy-agent/service-proxy-agent-bootstrap.sh\"\n }\n }]\n }]\n}\n\"\"\",\n \"gce-service-proxy\": \"\"\"{\n \"api-version\": \"0.2\",\n \"proxy-spec\": {\n \"proxy-port\": 15001,\n \"network\": \"my-network\",\n \"tracing\": \"ON\",\n \"access-log\": \"/var/log/envoy/access.log\"\n }\n \"service\": {\n \"serving-ports\": [80, 81]\n },\n \"labels\": {\n \"app_name\": \"bookserver_app\",\n \"app_version\": \"STABLE\"\n }\n}\n\"\"\",\n \"enable-guest-attributes\": \"true\",\n \"enable-osconfig\": \"true\",\n },\n service_account={\n \"email\": default.email,\n \"scopes\": [\"cloud-platform\"],\n },\n labels={\n \"gce-service-proxy\": \"on\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Compute.GetDefaultServiceAccount.Invoke();\n\n var myImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var foobar = new Gcp.Compute.InstanceTemplate(\"foobar\", new()\n {\n Name = \"appserver-template\",\n MachineType = \"e2-medium\",\n CanIpForward = false,\n Tags = new[]\n {\n \"foo\",\n \"bar\",\n },\n Disks = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n SourceImage = myImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n AutoDelete = true,\n Boot = true,\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n },\n Scheduling = new Gcp.Compute.Inputs.InstanceTemplateSchedulingArgs\n {\n Preemptible = false,\n AutomaticRestart = true,\n },\n Metadata = \n {\n { \"gce-software-declaration\", @\"{\n \"\"softwareRecipes\"\": [{\n \"\"name\"\": \"\"install-gce-service-proxy-agent\"\",\n \"\"desired_state\"\": \"\"INSTALLED\"\",\n \"\"installSteps\"\": [{\n \"\"scriptRun\"\": {\n \"\"script\"\": \"\"#! /bin/bash\\nZONE=$(curl --silent http://metadata.google.internal/computeMetadata/v1/instance/zone -H Metadata-Flavor:Google | cut -d/ -f4 )\\nexport SERVICE_PROXY_AGENT_DIRECTORY=$(mktemp -d)\\nsudo gsutil cp gs://gce-service-proxy-\"\"$ZONE\"\"/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"\"$SERVICE_PROXY_AGENT_DIRECTORY\"\" || sudo gsutil cp gs://gce-service-proxy/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"\"$SERVICE_PROXY_AGENT_DIRECTORY\"\"\\nsudo tar -xzf \"\"$SERVICE_PROXY_AGENT_DIRECTORY\"\"/service-proxy-agent-0.2.tgz -C \"\"$SERVICE_PROXY_AGENT_DIRECTORY\"\"\\n\"\"$SERVICE_PROXY_AGENT_DIRECTORY\"\"/service-proxy-agent/service-proxy-agent-bootstrap.sh\"\"\n }\n }]\n }]\n}\n\" },\n { \"gce-service-proxy\", @\"{\n \"\"api-version\"\": \"\"0.2\"\",\n \"\"proxy-spec\"\": {\n \"\"proxy-port\"\": 15001,\n \"\"network\"\": \"\"my-network\"\",\n \"\"tracing\"\": \"\"ON\"\",\n \"\"access-log\"\": \"\"/var/log/envoy/access.log\"\"\n }\n \"\"service\"\": {\n \"\"serving-ports\"\": [80, 81]\n },\n \"\"labels\"\": {\n \"\"app_name\"\": \"\"bookserver_app\"\",\n \"\"app_version\"\": \"\"STABLE\"\"\n }\n}\n\" },\n { \"enable-guest-attributes\", \"true\" },\n { \"enable-osconfig\", \"true\" },\n },\n ServiceAccount = new Gcp.Compute.Inputs.InstanceTemplateServiceAccountArgs\n {\n Email = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Email)),\n Scopes = new[]\n {\n \"cloud-platform\",\n },\n },\n Labels = \n {\n { \"gce-service-proxy\", \"on\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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_default, err := compute.GetDefaultServiceAccount(ctx, \u0026compute.GetDefaultServiceAccountArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstanceTemplate(ctx, \"foobar\", \u0026compute.InstanceTemplateArgs{\n\t\t\tName: pulumi.String(\"appserver-template\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tCanIpForward: pulumi.Bool(false),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDisks: compute.InstanceTemplateDiskArray{\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSourceImage: pulumi.String(myImage.SelfLink),\n\t\t\t\t\tAutoDelete: pulumi.Bool(true),\n\t\t\t\t\tBoot: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: compute.InstanceTemplateNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceTemplateNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tScheduling: \u0026compute.InstanceTemplateSchedulingArgs{\n\t\t\t\tPreemptible: pulumi.Bool(false),\n\t\t\t\tAutomaticRestart: pulumi.Bool(true),\n\t\t\t},\n\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\"gce-software-declaration\": pulumi.String(`{\n \"softwareRecipes\": [{\n \"name\": \"install-gce-service-proxy-agent\",\n \"desired_state\": \"INSTALLED\",\n \"installSteps\": [{\n \"scriptRun\": {\n \"script\": \"#! /bin/bash\\nZONE=$(curl --silent http://metadata.google.internal/computeMetadata/v1/instance/zone -H Metadata-Flavor:Google | cut -d/ -f4 )\\nexport SERVICE_PROXY_AGENT_DIRECTORY=$(mktemp -d)\\nsudo gsutil cp gs://gce-service-proxy-\"$ZONE\"/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"$SERVICE_PROXY_AGENT_DIRECTORY\" || sudo gsutil cp gs://gce-service-proxy/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"$SERVICE_PROXY_AGENT_DIRECTORY\"\\nsudo tar -xzf \"$SERVICE_PROXY_AGENT_DIRECTORY\"/service-proxy-agent-0.2.tgz -C \"$SERVICE_PROXY_AGENT_DIRECTORY\"\\n\"$SERVICE_PROXY_AGENT_DIRECTORY\"/service-proxy-agent/service-proxy-agent-bootstrap.sh\"\n }\n }]\n }]\n}\n`),\n\t\t\t\t\"gce-service-proxy\": pulumi.String(`{\n \"api-version\": \"0.2\",\n \"proxy-spec\": {\n \"proxy-port\": 15001,\n \"network\": \"my-network\",\n \"tracing\": \"ON\",\n \"access-log\": \"/var/log/envoy/access.log\"\n }\n \"service\": {\n \"serving-ports\": [80, 81]\n },\n \"labels\": {\n \"app_name\": \"bookserver_app\",\n \"app_version\": \"STABLE\"\n }\n}\n`),\n\t\t\t\t\"enable-guest-attributes\": pulumi.String(\"true\"),\n\t\t\t\t\"enable-osconfig\": pulumi.String(\"true\"),\n\t\t\t},\n\t\t\tServiceAccount: \u0026compute.InstanceTemplateServiceAccountArgs{\n\t\t\t\tEmail: pulumi.String(_default.Email),\n\t\t\t\tScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"cloud-platform\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"gce-service-proxy\": pulumi.String(\"on\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetDefaultServiceAccountArgs;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.InstanceTemplate;\nimport com.pulumi.gcp.compute.InstanceTemplateArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateSchedulingArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateServiceAccountArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = ComputeFunctions.getDefaultServiceAccount();\n\n final var myImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var foobar = new InstanceTemplate(\"foobar\", InstanceTemplateArgs.builder()\n .name(\"appserver-template\")\n .machineType(\"e2-medium\")\n .canIpForward(false)\n .tags( \n \"foo\",\n \"bar\")\n .disks(InstanceTemplateDiskArgs.builder()\n .sourceImage(myImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .autoDelete(true)\n .boot(true)\n .build())\n .networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build())\n .scheduling(InstanceTemplateSchedulingArgs.builder()\n .preemptible(false)\n .automaticRestart(true)\n .build())\n .metadata(Map.ofEntries(\n Map.entry(\"gce-software-declaration\", \"\"\"\n{\n \"softwareRecipes\": [{\n \"name\": \"install-gce-service-proxy-agent\",\n \"desired_state\": \"INSTALLED\",\n \"installSteps\": [{\n \"scriptRun\": {\n \"script\": \"#! /bin/bash\\nZONE=$(curl --silent http://metadata.google.internal/computeMetadata/v1/instance/zone -H Metadata-Flavor:Google | cut -d/ -f4 )\\nexport SERVICE_PROXY_AGENT_DIRECTORY=$(mktemp -d)\\nsudo gsutil cp gs://gce-service-proxy-\"$ZONE\"/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"$SERVICE_PROXY_AGENT_DIRECTORY\" || sudo gsutil cp gs://gce-service-proxy/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"$SERVICE_PROXY_AGENT_DIRECTORY\"\\nsudo tar -xzf \"$SERVICE_PROXY_AGENT_DIRECTORY\"/service-proxy-agent-0.2.tgz -C \"$SERVICE_PROXY_AGENT_DIRECTORY\"\\n\"$SERVICE_PROXY_AGENT_DIRECTORY\"/service-proxy-agent/service-proxy-agent-bootstrap.sh\"\n }\n }]\n }]\n}\n \"\"\"),\n Map.entry(\"gce-service-proxy\", \"\"\"\n{\n \"api-version\": \"0.2\",\n \"proxy-spec\": {\n \"proxy-port\": 15001,\n \"network\": \"my-network\",\n \"tracing\": \"ON\",\n \"access-log\": \"/var/log/envoy/access.log\"\n }\n \"service\": {\n \"serving-ports\": [80, 81]\n },\n \"labels\": {\n \"app_name\": \"bookserver_app\",\n \"app_version\": \"STABLE\"\n }\n}\n \"\"\"),\n Map.entry(\"enable-guest-attributes\", \"true\"),\n Map.entry(\"enable-osconfig\", \"true\")\n ))\n .serviceAccount(InstanceTemplateServiceAccountArgs.builder()\n .email(default_.email())\n .scopes(\"cloud-platform\")\n .build())\n .labels(Map.of(\"gce-service-proxy\", \"on\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foobar:\n type: gcp:compute:InstanceTemplate\n properties:\n name: appserver-template\n machineType: e2-medium\n canIpForward: false\n tags:\n - foo\n - bar\n disks:\n - sourceImage: ${myImage.selfLink}\n autoDelete: true\n boot: true\n networkInterfaces:\n - network: default\n scheduling:\n preemptible: false\n automaticRestart: true\n metadata:\n gce-software-declaration: |\n {\n \"softwareRecipes\": [{\n \"name\": \"install-gce-service-proxy-agent\",\n \"desired_state\": \"INSTALLED\",\n \"installSteps\": [{\n \"scriptRun\": {\n \"script\": \"#! /bin/bash\\nZONE=$(curl --silent http://metadata.google.internal/computeMetadata/v1/instance/zone -H Metadata-Flavor:Google | cut -d/ -f4 )\\nexport SERVICE_PROXY_AGENT_DIRECTORY=$(mktemp -d)\\nsudo gsutil cp gs://gce-service-proxy-\"$ZONE\"/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"$SERVICE_PROXY_AGENT_DIRECTORY\" || sudo gsutil cp gs://gce-service-proxy/service-proxy-agent/releases/service-proxy-agent-0.2.tgz \"$SERVICE_PROXY_AGENT_DIRECTORY\"\\nsudo tar -xzf \"$SERVICE_PROXY_AGENT_DIRECTORY\"/service-proxy-agent-0.2.tgz -C \"$SERVICE_PROXY_AGENT_DIRECTORY\"\\n\"$SERVICE_PROXY_AGENT_DIRECTORY\"/service-proxy-agent/service-proxy-agent-bootstrap.sh\"\n }\n }]\n }]\n }\n gce-service-proxy: |\n {\n \"api-version\": \"0.2\",\n \"proxy-spec\": {\n \"proxy-port\": 15001,\n \"network\": \"my-network\",\n \"tracing\": \"ON\",\n \"access-log\": \"/var/log/envoy/access.log\"\n }\n \"service\": {\n \"serving-ports\": [80, 81]\n },\n \"labels\": {\n \"app_name\": \"bookserver_app\",\n \"app_version\": \"STABLE\"\n }\n }\n enable-guest-attributes: 'true'\n enable-osconfig: 'true'\n serviceAccount:\n email: ${default.email}\n scopes:\n - cloud-platform\n labels:\n gce-service-proxy: on\nvariables:\n default:\n fn::invoke:\n Function: gcp:compute:getDefaultServiceAccount\n Arguments: {}\n myImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### Confidential Computing\n\nExample with [Confidential Mode](https://cloud.google.com/confidential-computing/confidential-vm/docs/confidential-vm-overview) activated.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.serviceaccount.Account(\"default\", {\n accountId: \"my-custom-sa\",\n displayName: \"Custom SA for VM Instance\",\n});\nconst confidentialInstanceTemplate = new gcp.compute.InstanceTemplate(\"confidential_instance_template\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n network: \"default\",\n }],\n name: \"my-confidential-instance-template\",\n region: \"us-central1\",\n machineType: \"n2d-standard-2\",\n minCpuPlatform: \"AMD Milan\",\n confidentialInstanceConfig: {\n enableConfidentialCompute: true,\n confidentialInstanceType: \"SEV\",\n },\n disks: [{\n sourceImage: \"ubuntu-os-cloud/ubuntu-2004-lts\",\n }],\n serviceAccount: {\n email: _default.email,\n scopes: [\"cloud-platform\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.serviceaccount.Account(\"default\",\n account_id=\"my-custom-sa\",\n display_name=\"Custom SA for VM Instance\")\nconfidential_instance_template = gcp.compute.InstanceTemplate(\"confidential_instance_template\",\n network_interfaces=[{\n \"access_configs\": [{}],\n \"network\": \"default\",\n }],\n name=\"my-confidential-instance-template\",\n region=\"us-central1\",\n machine_type=\"n2d-standard-2\",\n min_cpu_platform=\"AMD Milan\",\n confidential_instance_config={\n \"enable_confidential_compute\": True,\n \"confidential_instance_type\": \"SEV\",\n },\n disks=[{\n \"source_image\": \"ubuntu-os-cloud/ubuntu-2004-lts\",\n }],\n service_account={\n \"email\": default.email,\n \"scopes\": [\"cloud-platform\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.ServiceAccount.Account(\"default\", new()\n {\n AccountId = \"my-custom-sa\",\n DisplayName = \"Custom SA for VM Instance\",\n });\n\n var confidentialInstanceTemplate = new Gcp.Compute.InstanceTemplate(\"confidential_instance_template\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Network = \"default\",\n },\n },\n Name = \"my-confidential-instance-template\",\n Region = \"us-central1\",\n MachineType = \"n2d-standard-2\",\n MinCpuPlatform = \"AMD Milan\",\n ConfidentialInstanceConfig = new Gcp.Compute.Inputs.InstanceTemplateConfidentialInstanceConfigArgs\n {\n EnableConfidentialCompute = true,\n ConfidentialInstanceType = \"SEV\",\n },\n Disks = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n SourceImage = \"ubuntu-os-cloud/ubuntu-2004-lts\",\n },\n },\n ServiceAccount = new Gcp.Compute.Inputs.InstanceTemplateServiceAccountArgs\n {\n Email = @default.Email,\n Scopes = new[]\n {\n \"cloud-platform\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := serviceaccount.NewAccount(ctx, \"default\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-custom-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Custom SA for VM Instance\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstanceTemplate(ctx, \"confidential_instance_template\", \u0026compute.InstanceTemplateArgs{\n\t\t\tNetworkInterfaces: compute.InstanceTemplateNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceTemplateNetworkInterfaceArgs{\n\t\t\t\t\tAccessConfigs: compute.InstanceTemplateNetworkInterfaceAccessConfigArray{\n\t\t\t\t\t\t\u0026compute.InstanceTemplateNetworkInterfaceAccessConfigArgs{},\n\t\t\t\t\t},\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"my-confidential-instance-template\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tMachineType: pulumi.String(\"n2d-standard-2\"),\n\t\t\tMinCpuPlatform: pulumi.String(\"AMD Milan\"),\n\t\t\tConfidentialInstanceConfig: \u0026compute.InstanceTemplateConfidentialInstanceConfigArgs{\n\t\t\t\tEnableConfidentialCompute: pulumi.Bool(true),\n\t\t\t\tConfidentialInstanceType: pulumi.String(\"SEV\"),\n\t\t\t},\n\t\t\tDisks: compute.InstanceTemplateDiskArray{\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSourceImage: pulumi.String(\"ubuntu-os-cloud/ubuntu-2004-lts\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceAccount: \u0026compute.InstanceTemplateServiceAccountArgs{\n\t\t\t\tEmail: _default.Email,\n\t\t\t\tScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"cloud-platform\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.compute.InstanceTemplate;\nimport com.pulumi.gcp.compute.InstanceTemplateArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateConfidentialInstanceConfigArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateServiceAccountArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Account(\"default\", AccountArgs.builder()\n .accountId(\"my-custom-sa\")\n .displayName(\"Custom SA for VM Instance\")\n .build());\n\n var confidentialInstanceTemplate = new InstanceTemplate(\"confidentialInstanceTemplate\", InstanceTemplateArgs.builder()\n .networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()\n .accessConfigs()\n .network(\"default\")\n .build())\n .name(\"my-confidential-instance-template\")\n .region(\"us-central1\")\n .machineType(\"n2d-standard-2\")\n .minCpuPlatform(\"AMD Milan\")\n .confidentialInstanceConfig(InstanceTemplateConfidentialInstanceConfigArgs.builder()\n .enableConfidentialCompute(true)\n .confidentialInstanceType(\"SEV\")\n .build())\n .disks(InstanceTemplateDiskArgs.builder()\n .sourceImage(\"ubuntu-os-cloud/ubuntu-2004-lts\")\n .build())\n .serviceAccount(InstanceTemplateServiceAccountArgs.builder()\n .email(default_.email())\n .scopes(\"cloud-platform\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-custom-sa\n displayName: Custom SA for VM Instance\n confidentialInstanceTemplate:\n type: gcp:compute:InstanceTemplate\n name: confidential_instance_template\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n network: default\n name: my-confidential-instance-template\n region: us-central1\n machineType: n2d-standard-2\n minCpuPlatform: AMD Milan\n confidentialInstanceConfig:\n enableConfidentialCompute: true\n confidentialInstanceType: SEV\n disks:\n - sourceImage: ubuntu-os-cloud/ubuntu-2004-lts\n serviceAccount:\n email: ${default.email}\n scopes:\n - cloud-platform\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Deploying the Latest Image\n\nA common way to use instance templates and managed instance groups is to deploy the\nlatest image in a family, usually the latest build of your application. There are two\nways to do this in the provider, and they have their pros and cons. The difference ends\nup being in how \"latest\" is interpreted. You can either deploy the latest image available\nwhen the provider runs, or you can have each instance check what the latest image is when\nit's being created, either as part of a scaling event or being rebuilt by the instance\ngroup manager.\n\nIf you're not sure, we recommend deploying the latest image available when the provider runs,\nbecause this means all the instances in your group will be based on the same image, always,\nand means that no upgrades or changes to your instances happen outside of a `pulumi up`.\nYou can achieve this by using the `gcp.compute.Image`\ndata source, which will retrieve the latest image on every `pulumi apply`, and will update\nthe template to use that specific image:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst instanceTemplate = new gcp.compute.InstanceTemplate(\"instance_template\", {\n namePrefix: \"instance-template-\",\n machineType: \"e2-medium\",\n region: \"us-central1\",\n disks: [{\n sourceImage: myImage.then(myImage =\u003e myImage.selfLink),\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\ninstance_template = gcp.compute.InstanceTemplate(\"instance_template\",\n name_prefix=\"instance-template-\",\n machine_type=\"e2-medium\",\n region=\"us-central1\",\n disks=[{\n \"source_image\": my_image.self_link,\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var myImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var instanceTemplate = new Gcp.Compute.InstanceTemplate(\"instance_template\", new()\n {\n NamePrefix = \"instance-template-\",\n MachineType = \"e2-medium\",\n Region = \"us-central1\",\n Disks = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n SourceImage = myImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tmyImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstanceTemplate(ctx, \"instance_template\", \u0026compute.InstanceTemplateArgs{\n\t\t\tNamePrefix: pulumi.String(\"instance-template-\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDisks: compute.InstanceTemplateDiskArray{\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSourceImage: pulumi.String(myImage.SelfLink),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.InstanceTemplate;\nimport com.pulumi.gcp.compute.InstanceTemplateArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var myImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var instanceTemplate = new InstanceTemplate(\"instanceTemplate\", InstanceTemplateArgs.builder()\n .namePrefix(\"instance-template-\")\n .machineType(\"e2-medium\")\n .region(\"us-central1\")\n .disks(InstanceTemplateDiskArgs.builder()\n .sourceImage(myImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instanceTemplate:\n type: gcp:compute:InstanceTemplate\n name: instance_template\n properties:\n namePrefix: instance-template-\n machineType: e2-medium\n region: us-central1\n disks:\n - sourceImage: ${myImage.selfLink}\nvariables:\n myImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nTo have instances update to the latest on every scaling event or instance re-creation,\nuse the family as the image for the disk, and it will use GCP's default behavior, setting\nthe image for the template to the family:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instanceTemplate = new gcp.compute.InstanceTemplate(\"instance_template\", {\n namePrefix: \"instance-template-\",\n machineType: \"e2-medium\",\n region: \"us-central1\",\n disks: [{\n sourceImage: \"debian-cloud/debian-11\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance_template = gcp.compute.InstanceTemplate(\"instance_template\",\n name_prefix=\"instance-template-\",\n machine_type=\"e2-medium\",\n region=\"us-central1\",\n disks=[{\n \"source_image\": \"debian-cloud/debian-11\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var instanceTemplate = new Gcp.Compute.InstanceTemplate(\"instance_template\", new()\n {\n NamePrefix = \"instance-template-\",\n MachineType = \"e2-medium\",\n Region = \"us-central1\",\n Disks = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n SourceImage = \"debian-cloud/debian-11\",\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.NewInstanceTemplate(ctx, \"instance_template\", \u0026compute.InstanceTemplateArgs{\n\t\t\tNamePrefix: pulumi.String(\"instance-template-\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDisks: compute.InstanceTemplateDiskArray{\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSourceImage: pulumi.String(\"debian-cloud/debian-11\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.InstanceTemplate;\nimport com.pulumi.gcp.compute.InstanceTemplateArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var instanceTemplate = new InstanceTemplate(\"instanceTemplate\", InstanceTemplateArgs.builder()\n .namePrefix(\"instance-template-\")\n .machineType(\"e2-medium\")\n .region(\"us-central1\")\n .disks(InstanceTemplateDiskArgs.builder()\n .sourceImage(\"debian-cloud/debian-11\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instanceTemplate:\n type: gcp:compute:InstanceTemplate\n name: instance_template\n properties:\n namePrefix: instance-template-\n machineType: e2-medium\n region: us-central1\n disks:\n - sourceImage: debian-cloud/debian-11\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance templates can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/instanceTemplates/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, instance templates can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/instanceTemplate:InstanceTemplate default projects/{{project}}/global/instanceTemplates/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/instanceTemplate:InstanceTemplate default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/instanceTemplate:InstanceTemplate default {{name}}\n```\n\n", "properties": { "advancedMachineFeatures": { "$ref": "#/types/gcp:compute/InstanceTemplateAdvancedMachineFeatures:InstanceTemplateAdvancedMachineFeatures", @@ -156128,7 +156128,7 @@ } }, "gcp:compute/interconnect:Interconnect": { - "description": "Represents an Interconnect resource. The Interconnect resource is a dedicated connection between\nGoogle's network and your on-premises network.\n\n\nTo get more information about Interconnect, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/interconnects)\n* How-to Guides\n * [Create a Dedicated Interconnect](https://cloud.google.com/network-connectivity/docs/interconnect/concepts/dedicated-overview)\n\n## Example Usage\n\n### Compute Interconnect Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example_interconnect = new gcp.compute.Interconnect(\"example-interconnect\", {\n name: \"example-interconnect\",\n customerName: \"example_customer\",\n interconnectType: \"DEDICATED\",\n linkType: \"LINK_TYPE_ETHERNET_10G_LR\",\n location: project.then(project =\u003e `https://www.googleapis.com/compute/v1/projects/${project.name}/global/interconnectLocations/iad-zone1-1`),\n requestedLinkCount: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample_interconnect = gcp.compute.Interconnect(\"example-interconnect\",\n name=\"example-interconnect\",\n customer_name=\"example_customer\",\n interconnect_type=\"DEDICATED\",\n link_type=\"LINK_TYPE_ETHERNET_10G_LR\",\n location=f\"https://www.googleapis.com/compute/v1/projects/{project.name}/global/interconnectLocations/iad-zone1-1\",\n requested_link_count=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 project = Gcp.Organizations.GetProject.Invoke();\n\n var example_interconnect = new Gcp.Compute.Interconnect(\"example-interconnect\", new()\n {\n Name = \"example-interconnect\",\n CustomerName = \"example_customer\",\n InterconnectType = \"DEDICATED\",\n LinkType = \"LINK_TYPE_ETHERNET_10G_LR\",\n Location = $\"https://www.googleapis.com/compute/v1/projects/{project.Apply(getProjectResult =\u003e getProjectResult.Name)}/global/interconnectLocations/iad-zone1-1\",\n RequestedLinkCount = 1,\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/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInterconnect(ctx, \"example-interconnect\", \u0026compute.InterconnectArgs{\n\t\t\tName: pulumi.String(\"example-interconnect\"),\n\t\t\tCustomerName: pulumi.String(\"example_customer\"),\n\t\t\tInterconnectType: pulumi.String(\"DEDICATED\"),\n\t\t\tLinkType: pulumi.String(\"LINK_TYPE_ETHERNET_10G_LR\"),\n\t\t\tLocation: pulumi.Sprintf(\"https://www.googleapis.com/compute/v1/projects/%v/global/interconnectLocations/iad-zone1-1\", project.Name),\n\t\t\tRequestedLinkCount: 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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.compute.Interconnect;\nimport com.pulumi.gcp.compute.InterconnectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var example_interconnect = new Interconnect(\"example-interconnect\", InterconnectArgs.builder()\n .name(\"example-interconnect\")\n .customerName(\"example_customer\")\n .interconnectType(\"DEDICATED\")\n .linkType(\"LINK_TYPE_ETHERNET_10G_LR\")\n .location(String.format(\"https://www.googleapis.com/compute/v1/projects/%s/global/interconnectLocations/iad-zone1-1\", project.applyValue(getProjectResult -\u003e getProjectResult.name())))\n .requestedLinkCount(1)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-interconnect:\n type: gcp:compute:Interconnect\n properties:\n name: example-interconnect\n customerName: example_customer\n interconnectType: DEDICATED\n linkType: LINK_TYPE_ETHERNET_10G_LR\n location: https://www.googleapis.com/compute/v1/projects/${project.name}/global/interconnectLocations/iad-zone1-1\n requestedLinkCount: 1\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInterconnect can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/interconnects/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Interconnect can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/interconnect:Interconnect default projects/{{project}}/global/interconnects/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/interconnect:Interconnect default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/interconnect:Interconnect default {{name}}\n```\n\n", + "description": "Represents an Interconnect resource. The Interconnect resource is a dedicated connection between\nGoogle's network and your on-premises network.\n\n\nTo get more information about Interconnect, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/interconnects)\n* How-to Guides\n * [Create a Dedicated Interconnect](https://cloud.google.com/network-connectivity/docs/interconnect/concepts/dedicated-overview)\n\n## Example Usage\n\n### Compute Interconnect Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example_interconnect = new gcp.compute.Interconnect(\"example-interconnect\", {\n name: \"example-interconnect\",\n customerName: \"example_customer\",\n interconnectType: \"DEDICATED\",\n linkType: \"LINK_TYPE_ETHERNET_10G_LR\",\n location: project.then(project =\u003e `https://www.googleapis.com/compute/v1/projects/${project.name}/global/interconnectLocations/iad-zone1-1`),\n requestedLinkCount: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample_interconnect = gcp.compute.Interconnect(\"example-interconnect\",\n name=\"example-interconnect\",\n customer_name=\"example_customer\",\n interconnect_type=\"DEDICATED\",\n link_type=\"LINK_TYPE_ETHERNET_10G_LR\",\n location=f\"https://www.googleapis.com/compute/v1/projects/{project.name}/global/interconnectLocations/iad-zone1-1\",\n requested_link_count=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 project = Gcp.Organizations.GetProject.Invoke();\n\n var example_interconnect = new Gcp.Compute.Interconnect(\"example-interconnect\", new()\n {\n Name = \"example-interconnect\",\n CustomerName = \"example_customer\",\n InterconnectType = \"DEDICATED\",\n LinkType = \"LINK_TYPE_ETHERNET_10G_LR\",\n Location = $\"https://www.googleapis.com/compute/v1/projects/{project.Apply(getProjectResult =\u003e getProjectResult.Name)}/global/interconnectLocations/iad-zone1-1\",\n RequestedLinkCount = 1,\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/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInterconnect(ctx, \"example-interconnect\", \u0026compute.InterconnectArgs{\n\t\t\tName: pulumi.String(\"example-interconnect\"),\n\t\t\tCustomerName: pulumi.String(\"example_customer\"),\n\t\t\tInterconnectType: pulumi.String(\"DEDICATED\"),\n\t\t\tLinkType: pulumi.String(\"LINK_TYPE_ETHERNET_10G_LR\"),\n\t\t\tLocation: pulumi.Sprintf(\"https://www.googleapis.com/compute/v1/projects/%v/global/interconnectLocations/iad-zone1-1\", project.Name),\n\t\t\tRequestedLinkCount: 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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.compute.Interconnect;\nimport com.pulumi.gcp.compute.InterconnectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var example_interconnect = new Interconnect(\"example-interconnect\", InterconnectArgs.builder()\n .name(\"example-interconnect\")\n .customerName(\"example_customer\")\n .interconnectType(\"DEDICATED\")\n .linkType(\"LINK_TYPE_ETHERNET_10G_LR\")\n .location(String.format(\"https://www.googleapis.com/compute/v1/projects/%s/global/interconnectLocations/iad-zone1-1\", project.applyValue(getProjectResult -\u003e getProjectResult.name())))\n .requestedLinkCount(1)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-interconnect:\n type: gcp:compute:Interconnect\n properties:\n name: example-interconnect\n customerName: example_customer\n interconnectType: DEDICATED\n linkType: LINK_TYPE_ETHERNET_10G_LR\n location: https://www.googleapis.com/compute/v1/projects/${project.name}/global/interconnectLocations/iad-zone1-1\n requestedLinkCount: 1\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInterconnect can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/interconnects/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Interconnect can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/interconnect:Interconnect default projects/{{project}}/global/interconnects/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/interconnect:Interconnect default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/interconnect:Interconnect default {{name}}\n```\n\n", "properties": { "adminEnabled": { "type": "boolean", @@ -158161,7 +158161,7 @@ } }, "gcp:compute/networkEndpoint:NetworkEndpoint": { - "description": "A Network endpoint represents a IP address and port combination that is\npart of a specific network endpoint group (NEG). NEGs are zonal\ncollections of these endpoints for GCP resources within a\nsingle subnet. **NOTE**: Network endpoints cannot be created outside of a\nnetwork endpoint group.\n\n\u003e **NOTE** In case the Endpoint's Instance is recreated, it's needed to\nperform `apply` twice. To avoid situations like this, please use this resource\nwith the lifecycle `replace_triggered_by` method, with the passed Instance's ID.\n\n\nTo get more information about NetworkEndpoint, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/beta/networkEndpointGroups)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/load-balancing/docs/negs/)\n\n## Example Usage\n\n### Network Endpoint\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"neg-network\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"neg-subnetwork\",\n ipCidrRange: \"10.0.0.1/16\",\n region: \"us-central1\",\n network: _default.id,\n});\nconst endpoint_instance = new gcp.compute.Instance(\"endpoint-instance\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n subnetwork: defaultSubnetwork.id,\n }],\n name: \"endpoint-instance\",\n machineType: \"e2-medium\",\n bootDisk: {\n initializeParams: {\n image: myImage.then(myImage =\u003e myImage.selfLink),\n },\n },\n});\nconst default_endpoint = new gcp.compute.NetworkEndpoint(\"default-endpoint\", {\n networkEndpointGroup: neg.name,\n instance: endpoint_instance.name,\n port: neg.defaultPort,\n ipAddress: endpoint_instance.networkInterfaces.apply(networkInterfaces =\u003e networkInterfaces[0].networkIp),\n});\nconst group = new gcp.compute.NetworkEndpointGroup(\"group\", {\n name: \"my-lb-neg\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n defaultPort: 90,\n zone: \"us-central1-a\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\ndefault = gcp.compute.Network(\"default\",\n name=\"neg-network\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"neg-subnetwork\",\n ip_cidr_range=\"10.0.0.1/16\",\n region=\"us-central1\",\n network=default.id)\nendpoint_instance = gcp.compute.Instance(\"endpoint-instance\",\n network_interfaces=[{\n \"access_configs\": [{}],\n \"subnetwork\": default_subnetwork.id,\n }],\n name=\"endpoint-instance\",\n machine_type=\"e2-medium\",\n boot_disk={\n \"initialize_params\": {\n \"image\": my_image.self_link,\n },\n })\ndefault_endpoint = gcp.compute.NetworkEndpoint(\"default-endpoint\",\n network_endpoint_group=neg[\"name\"],\n instance=endpoint_instance.name,\n port=neg[\"defaultPort\"],\n ip_address=endpoint_instance.network_interfaces[0].network_ip)\ngroup = gcp.compute.NetworkEndpointGroup(\"group\",\n name=\"my-lb-neg\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n default_port=90,\n zone=\"us-central1-a\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var myImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"neg-network\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"neg-subnetwork\",\n IpCidrRange = \"10.0.0.1/16\",\n Region = \"us-central1\",\n Network = @default.Id,\n });\n\n var endpoint_instance = new Gcp.Compute.Instance(\"endpoint-instance\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Subnetwork = defaultSubnetwork.Id,\n },\n },\n Name = \"endpoint-instance\",\n MachineType = \"e2-medium\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = myImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n },\n },\n });\n\n var default_endpoint = new Gcp.Compute.NetworkEndpoint(\"default-endpoint\", new()\n {\n NetworkEndpointGroup = neg.Name,\n Instance = endpoint_instance.Name,\n Port = neg.DefaultPort,\n IpAddress = endpoint_instance.NetworkInterfaces.Apply(networkInterfaces =\u003e networkInterfaces[0].NetworkIp),\n });\n\n var @group = new Gcp.Compute.NetworkEndpointGroup(\"group\", new()\n {\n Name = \"my-lb-neg\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n DefaultPort = 90,\n Zone = \"us-central1-a\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tmyImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"neg-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"neg-subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.1/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"endpoint-instance\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tAccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{\n\t\t\t\t\t\tnil,\n\t\t\t\t\t},\n\t\t\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"endpoint-instance\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(myImage.SelfLink),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetworkEndpoint(ctx, \"default-endpoint\", \u0026compute.NetworkEndpointArgs{\n\t\t\tNetworkEndpointGroup: pulumi.Any(neg.Name),\n\t\t\tInstance: endpoint_instance.Name,\n\t\t\tPort: pulumi.Any(neg.DefaultPort),\n\t\t\tIpAddress: pulumi.String(endpoint_instance.NetworkInterfaces.ApplyT(func(networkInterfaces []compute.InstanceNetworkInterface) (*string, error) {\n\t\t\t\treturn \u0026networkInterfaces[0].NetworkIp, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetworkEndpointGroup(ctx, \"group\", \u0026compute.NetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"my-lb-neg\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tDefaultPort: pulumi.Int(90),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport com.pulumi.gcp.compute.NetworkEndpoint;\nimport com.pulumi.gcp.compute.NetworkEndpointArgs;\nimport com.pulumi.gcp.compute.NetworkEndpointGroup;\nimport com.pulumi.gcp.compute.NetworkEndpointGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var myImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"neg-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"neg-subnetwork\")\n .ipCidrRange(\"10.0.0.1/16\")\n .region(\"us-central1\")\n .network(default_.id())\n .build());\n\n var endpoint_instance = new Instance(\"endpoint-instance\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .subnetwork(defaultSubnetwork.id())\n .build())\n .name(\"endpoint-instance\")\n .machineType(\"e2-medium\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(myImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .build())\n .build())\n .build());\n\n var default_endpoint = new NetworkEndpoint(\"default-endpoint\", NetworkEndpointArgs.builder()\n .networkEndpointGroup(neg.name())\n .instance(endpoint_instance.name())\n .port(neg.defaultPort())\n .ipAddress(endpoint_instance.networkInterfaces().applyValue(networkInterfaces -\u003e networkInterfaces[0].networkIp()))\n .build());\n\n var group = new NetworkEndpointGroup(\"group\", NetworkEndpointGroupArgs.builder()\n .name(\"my-lb-neg\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .defaultPort(\"90\")\n .zone(\"us-central1-a\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default-endpoint:\n type: gcp:compute:NetworkEndpoint\n properties:\n networkEndpointGroup: ${neg.name}\n instance: ${[\"endpoint-instance\"].name}\n port: ${neg.defaultPort}\n ipAddress: ${[\"endpoint-instance\"].networkInterfaces[0].networkIp}\n endpoint-instance:\n type: gcp:compute:Instance\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n subnetwork: ${defaultSubnetwork.id}\n name: endpoint-instance\n machineType: e2-medium\n bootDisk:\n initializeParams:\n image: ${myImage.selfLink}\n group:\n type: gcp:compute:NetworkEndpointGroup\n properties:\n name: my-lb-neg\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n defaultPort: '90'\n zone: us-central1-a\n default:\n type: gcp:compute:Network\n properties:\n name: neg-network\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: neg-subnetwork\n ipCidrRange: 10.0.0.1/16\n region: us-central1\n network: ${default.id}\nvariables:\n myImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNetworkEndpoint can be imported using any of these accepted formats:\n\n* `projects/{{project}}/zones/{{zone}}/networkEndpointGroups/{{network_endpoint_group}}/{{instance}}/{{ip_address}}/{{port}}`\n\n* `{{project}}/{{zone}}/{{network_endpoint_group}}/{{instance}}/{{ip_address}}/{{port}}`\n\n* `{{zone}}/{{network_endpoint_group}}/{{instance}}/{{ip_address}}/{{port}}`\n\n* `{{network_endpoint_group}}/{{instance}}/{{ip_address}}/{{port}}`\n\nWhen using the `pulumi import` command, NetworkEndpoint can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/networkEndpoint:NetworkEndpoint default projects/{{project}}/zones/{{zone}}/networkEndpointGroups/{{network_endpoint_group}}/{{instance}}/{{ip_address}}/{{port}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkEndpoint:NetworkEndpoint default {{project}}/{{zone}}/{{network_endpoint_group}}/{{instance}}/{{ip_address}}/{{port}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkEndpoint:NetworkEndpoint default {{zone}}/{{network_endpoint_group}}/{{instance}}/{{ip_address}}/{{port}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkEndpoint:NetworkEndpoint default {{network_endpoint_group}}/{{instance}}/{{ip_address}}/{{port}}\n```\n\n", + "description": "A Network endpoint represents a IP address and port combination that is\npart of a specific network endpoint group (NEG). NEGs are zonal\ncollections of these endpoints for GCP resources within a\nsingle subnet. **NOTE**: Network endpoints cannot be created outside of a\nnetwork endpoint group.\n\n\u003e **NOTE** In case the Endpoint's Instance is recreated, it's needed to\nperform `apply` twice. To avoid situations like this, please use this resource\nwith the lifecycle `replace_triggered_by` method, with the passed Instance's ID.\n\n\nTo get more information about NetworkEndpoint, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/beta/networkEndpointGroups)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/load-balancing/docs/negs/)\n\n## Example Usage\n\n### Network Endpoint\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"neg-network\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"neg-subnetwork\",\n ipCidrRange: \"10.0.0.1/16\",\n region: \"us-central1\",\n network: _default.id,\n});\nconst endpoint_instance = new gcp.compute.Instance(\"endpoint-instance\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n subnetwork: defaultSubnetwork.id,\n }],\n name: \"endpoint-instance\",\n machineType: \"e2-medium\",\n bootDisk: {\n initializeParams: {\n image: myImage.then(myImage =\u003e myImage.selfLink),\n },\n },\n});\nconst default_endpoint = new gcp.compute.NetworkEndpoint(\"default-endpoint\", {\n networkEndpointGroup: neg.name,\n instance: endpoint_instance.name,\n port: neg.defaultPort,\n ipAddress: endpoint_instance.networkInterfaces.apply(networkInterfaces =\u003e networkInterfaces[0].networkIp),\n});\nconst group = new gcp.compute.NetworkEndpointGroup(\"group\", {\n name: \"my-lb-neg\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n defaultPort: 90,\n zone: \"us-central1-a\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\ndefault = gcp.compute.Network(\"default\",\n name=\"neg-network\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"neg-subnetwork\",\n ip_cidr_range=\"10.0.0.1/16\",\n region=\"us-central1\",\n network=default.id)\nendpoint_instance = gcp.compute.Instance(\"endpoint-instance\",\n network_interfaces=[{\n \"access_configs\": [{}],\n \"subnetwork\": default_subnetwork.id,\n }],\n name=\"endpoint-instance\",\n machine_type=\"e2-medium\",\n boot_disk={\n \"initialize_params\": {\n \"image\": my_image.self_link,\n },\n })\ndefault_endpoint = gcp.compute.NetworkEndpoint(\"default-endpoint\",\n network_endpoint_group=neg[\"name\"],\n instance=endpoint_instance.name,\n port=neg[\"defaultPort\"],\n ip_address=endpoint_instance.network_interfaces[0].network_ip)\ngroup = gcp.compute.NetworkEndpointGroup(\"group\",\n name=\"my-lb-neg\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n default_port=90,\n zone=\"us-central1-a\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var myImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"neg-network\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"neg-subnetwork\",\n IpCidrRange = \"10.0.0.1/16\",\n Region = \"us-central1\",\n Network = @default.Id,\n });\n\n var endpoint_instance = new Gcp.Compute.Instance(\"endpoint-instance\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Subnetwork = defaultSubnetwork.Id,\n },\n },\n Name = \"endpoint-instance\",\n MachineType = \"e2-medium\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = myImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n },\n },\n });\n\n var default_endpoint = new Gcp.Compute.NetworkEndpoint(\"default-endpoint\", new()\n {\n NetworkEndpointGroup = neg.Name,\n Instance = endpoint_instance.Name,\n Port = neg.DefaultPort,\n IpAddress = endpoint_instance.NetworkInterfaces.Apply(networkInterfaces =\u003e networkInterfaces[0].NetworkIp),\n });\n\n var @group = new Gcp.Compute.NetworkEndpointGroup(\"group\", new()\n {\n Name = \"my-lb-neg\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n DefaultPort = 90,\n Zone = \"us-central1-a\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tmyImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"neg-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"neg-subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.1/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"endpoint-instance\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tAccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{\n\t\t\t\t\t\t\u0026compute.InstanceNetworkInterfaceAccessConfigArgs{},\n\t\t\t\t\t},\n\t\t\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"endpoint-instance\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(myImage.SelfLink),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetworkEndpoint(ctx, \"default-endpoint\", \u0026compute.NetworkEndpointArgs{\n\t\t\tNetworkEndpointGroup: pulumi.Any(neg.Name),\n\t\t\tInstance: endpoint_instance.Name,\n\t\t\tPort: pulumi.Any(neg.DefaultPort),\n\t\t\tIpAddress: pulumi.String(endpoint_instance.NetworkInterfaces.ApplyT(func(networkInterfaces []compute.InstanceNetworkInterface) (*string, error) {\n\t\t\t\treturn \u0026networkInterfaces[0].NetworkIp, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetworkEndpointGroup(ctx, \"group\", \u0026compute.NetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"my-lb-neg\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tDefaultPort: pulumi.Int(90),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport com.pulumi.gcp.compute.NetworkEndpoint;\nimport com.pulumi.gcp.compute.NetworkEndpointArgs;\nimport com.pulumi.gcp.compute.NetworkEndpointGroup;\nimport com.pulumi.gcp.compute.NetworkEndpointGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var myImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"neg-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"neg-subnetwork\")\n .ipCidrRange(\"10.0.0.1/16\")\n .region(\"us-central1\")\n .network(default_.id())\n .build());\n\n var endpoint_instance = new Instance(\"endpoint-instance\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .subnetwork(defaultSubnetwork.id())\n .build())\n .name(\"endpoint-instance\")\n .machineType(\"e2-medium\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(myImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .build())\n .build())\n .build());\n\n var default_endpoint = new NetworkEndpoint(\"default-endpoint\", NetworkEndpointArgs.builder()\n .networkEndpointGroup(neg.name())\n .instance(endpoint_instance.name())\n .port(neg.defaultPort())\n .ipAddress(endpoint_instance.networkInterfaces().applyValue(networkInterfaces -\u003e networkInterfaces[0].networkIp()))\n .build());\n\n var group = new NetworkEndpointGroup(\"group\", NetworkEndpointGroupArgs.builder()\n .name(\"my-lb-neg\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .defaultPort(\"90\")\n .zone(\"us-central1-a\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default-endpoint:\n type: gcp:compute:NetworkEndpoint\n properties:\n networkEndpointGroup: ${neg.name}\n instance: ${[\"endpoint-instance\"].name}\n port: ${neg.defaultPort}\n ipAddress: ${[\"endpoint-instance\"].networkInterfaces[0].networkIp}\n endpoint-instance:\n type: gcp:compute:Instance\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n subnetwork: ${defaultSubnetwork.id}\n name: endpoint-instance\n machineType: e2-medium\n bootDisk:\n initializeParams:\n image: ${myImage.selfLink}\n group:\n type: gcp:compute:NetworkEndpointGroup\n properties:\n name: my-lb-neg\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n defaultPort: '90'\n zone: us-central1-a\n default:\n type: gcp:compute:Network\n properties:\n name: neg-network\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: neg-subnetwork\n ipCidrRange: 10.0.0.1/16\n region: us-central1\n network: ${default.id}\nvariables:\n myImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNetworkEndpoint can be imported using any of these accepted formats:\n\n* `projects/{{project}}/zones/{{zone}}/networkEndpointGroups/{{network_endpoint_group}}/{{instance}}/{{ip_address}}/{{port}}`\n\n* `{{project}}/{{zone}}/{{network_endpoint_group}}/{{instance}}/{{ip_address}}/{{port}}`\n\n* `{{zone}}/{{network_endpoint_group}}/{{instance}}/{{ip_address}}/{{port}}`\n\n* `{{network_endpoint_group}}/{{instance}}/{{ip_address}}/{{port}}`\n\nWhen using the `pulumi import` command, NetworkEndpoint can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/networkEndpoint:NetworkEndpoint default projects/{{project}}/zones/{{zone}}/networkEndpointGroups/{{network_endpoint_group}}/{{instance}}/{{ip_address}}/{{port}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkEndpoint:NetworkEndpoint default {{project}}/{{zone}}/{{network_endpoint_group}}/{{instance}}/{{ip_address}}/{{port}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkEndpoint:NetworkEndpoint default {{zone}}/{{network_endpoint_group}}/{{instance}}/{{ip_address}}/{{port}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkEndpoint:NetworkEndpoint default {{network_endpoint_group}}/{{instance}}/{{ip_address}}/{{port}}\n```\n\n", "properties": { "instance": { "type": "string", @@ -158420,7 +158420,7 @@ } }, "gcp:compute/networkEndpointList:NetworkEndpointList": { - "description": "A set of network endpoints belonging to a network endpoint group (NEG). A\nsingle network endpoint represents a IP address and port combination that is\npart of a specific network endpoint group (NEG). NEGs are zonal collections\nof these endpoints for GCP resources within a single subnet. **NOTE**:\nNetwork endpoints cannot be created outside of a network endpoint group.\n\nThis resource is authoritative for a single NEG. Any endpoints not specified\nby this resource will be deleted when the resource configuration is applied.\n\n\u003e **NOTE** In case the Endpoint's Instance is recreated, it's needed to\nperform `apply` twice. To avoid situations like this, please use this resource\nwith the lifecycle `replace_triggered_by` method, with the passed Instance's ID.\n\n\nTo get more information about NetworkEndpoints, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/beta/networkEndpointGroups)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/load-balancing/docs/negs/)\n\n## Example Usage\n\n### Network Endpoints\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"neg-network\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"neg-subnetwork\",\n ipCidrRange: \"10.0.0.1/16\",\n region: \"us-central1\",\n network: _default.id,\n});\nconst endpoint_instance1 = new gcp.compute.Instance(\"endpoint-instance1\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n subnetwork: defaultSubnetwork.id,\n }],\n name: \"endpoint-instance1\",\n machineType: \"e2-medium\",\n bootDisk: {\n initializeParams: {\n image: myImage.then(myImage =\u003e myImage.selfLink),\n },\n },\n});\nconst endpoint_instance2 = new gcp.compute.Instance(\"endpoint-instance2\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n subnetwork: defaultSubnetwork.id,\n }],\n name: \"endpoint-instance2\",\n machineType: \"e2-medium\",\n bootDisk: {\n initializeParams: {\n image: myImage.then(myImage =\u003e myImage.selfLink),\n },\n },\n});\nconst default_endpoints = new gcp.compute.NetworkEndpointList(\"default-endpoints\", {\n networkEndpointGroup: neg.name,\n networkEndpoints: [\n {\n instance: endpoint_instance1.name,\n port: neg.defaultPort,\n ipAddress: endpoint_instance1.networkInterfaces.apply(networkInterfaces =\u003e networkInterfaces[0].networkIp),\n },\n {\n instance: endpoint_instance2.name,\n port: neg.defaultPort,\n ipAddress: endpoint_instance2.networkInterfaces.apply(networkInterfaces =\u003e networkInterfaces[0].networkIp),\n },\n ],\n});\nconst group = new gcp.compute.NetworkEndpointGroup(\"group\", {\n name: \"my-lb-neg\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n defaultPort: 90,\n zone: \"us-central1-a\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\ndefault = gcp.compute.Network(\"default\",\n name=\"neg-network\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"neg-subnetwork\",\n ip_cidr_range=\"10.0.0.1/16\",\n region=\"us-central1\",\n network=default.id)\nendpoint_instance1 = gcp.compute.Instance(\"endpoint-instance1\",\n network_interfaces=[{\n \"access_configs\": [{}],\n \"subnetwork\": default_subnetwork.id,\n }],\n name=\"endpoint-instance1\",\n machine_type=\"e2-medium\",\n boot_disk={\n \"initialize_params\": {\n \"image\": my_image.self_link,\n },\n })\nendpoint_instance2 = gcp.compute.Instance(\"endpoint-instance2\",\n network_interfaces=[{\n \"access_configs\": [{}],\n \"subnetwork\": default_subnetwork.id,\n }],\n name=\"endpoint-instance2\",\n machine_type=\"e2-medium\",\n boot_disk={\n \"initialize_params\": {\n \"image\": my_image.self_link,\n },\n })\ndefault_endpoints = gcp.compute.NetworkEndpointList(\"default-endpoints\",\n network_endpoint_group=neg[\"name\"],\n network_endpoints=[\n {\n \"instance\": endpoint_instance1.name,\n \"port\": neg[\"defaultPort\"],\n \"ip_address\": endpoint_instance1.network_interfaces[0].network_ip,\n },\n {\n \"instance\": endpoint_instance2.name,\n \"port\": neg[\"defaultPort\"],\n \"ip_address\": endpoint_instance2.network_interfaces[0].network_ip,\n },\n ])\ngroup = gcp.compute.NetworkEndpointGroup(\"group\",\n name=\"my-lb-neg\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n default_port=90,\n zone=\"us-central1-a\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var myImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"neg-network\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"neg-subnetwork\",\n IpCidrRange = \"10.0.0.1/16\",\n Region = \"us-central1\",\n Network = @default.Id,\n });\n\n var endpoint_instance1 = new Gcp.Compute.Instance(\"endpoint-instance1\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Subnetwork = defaultSubnetwork.Id,\n },\n },\n Name = \"endpoint-instance1\",\n MachineType = \"e2-medium\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = myImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n },\n },\n });\n\n var endpoint_instance2 = new Gcp.Compute.Instance(\"endpoint-instance2\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Subnetwork = defaultSubnetwork.Id,\n },\n },\n Name = \"endpoint-instance2\",\n MachineType = \"e2-medium\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = myImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n },\n },\n });\n\n var default_endpoints = new Gcp.Compute.NetworkEndpointList(\"default-endpoints\", new()\n {\n NetworkEndpointGroup = neg.Name,\n NetworkEndpoints = new[]\n {\n new Gcp.Compute.Inputs.NetworkEndpointListNetworkEndpointArgs\n {\n Instance = endpoint_instance1.Name,\n Port = neg.DefaultPort,\n IpAddress = endpoint_instance1.NetworkInterfaces.Apply(networkInterfaces =\u003e networkInterfaces[0].NetworkIp),\n },\n new Gcp.Compute.Inputs.NetworkEndpointListNetworkEndpointArgs\n {\n Instance = endpoint_instance2.Name,\n Port = neg.DefaultPort,\n IpAddress = endpoint_instance2.NetworkInterfaces.Apply(networkInterfaces =\u003e networkInterfaces[0].NetworkIp),\n },\n },\n });\n\n var @group = new Gcp.Compute.NetworkEndpointGroup(\"group\", new()\n {\n Name = \"my-lb-neg\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n DefaultPort = 90,\n Zone = \"us-central1-a\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tmyImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"neg-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"neg-subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.1/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"endpoint-instance1\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tAccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{\n\t\t\t\t\t\tnil,\n\t\t\t\t\t},\n\t\t\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"endpoint-instance1\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(myImage.SelfLink),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"endpoint-instance2\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tAccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{\n\t\t\t\t\t\tnil,\n\t\t\t\t\t},\n\t\t\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"endpoint-instance2\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(myImage.SelfLink),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetworkEndpointList(ctx, \"default-endpoints\", \u0026compute.NetworkEndpointListArgs{\n\t\t\tNetworkEndpointGroup: pulumi.Any(neg.Name),\n\t\t\tNetworkEndpoints: compute.NetworkEndpointListNetworkEndpointArray{\n\t\t\t\t\u0026compute.NetworkEndpointListNetworkEndpointArgs{\n\t\t\t\t\tInstance: endpoint_instance1.Name,\n\t\t\t\t\tPort: pulumi.Any(neg.DefaultPort),\n\t\t\t\t\tIpAddress: endpoint_instance1.NetworkInterfaces.ApplyT(func(networkInterfaces []compute.InstanceNetworkInterface) (*string, error) {\n\t\t\t\t\t\treturn \u0026networkInterfaces[0].NetworkIp, nil\n\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t},\n\t\t\t\t\u0026compute.NetworkEndpointListNetworkEndpointArgs{\n\t\t\t\t\tInstance: endpoint_instance2.Name,\n\t\t\t\t\tPort: pulumi.Any(neg.DefaultPort),\n\t\t\t\t\tIpAddress: endpoint_instance2.NetworkInterfaces.ApplyT(func(networkInterfaces []compute.InstanceNetworkInterface) (*string, error) {\n\t\t\t\t\t\treturn \u0026networkInterfaces[0].NetworkIp, nil\n\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetworkEndpointGroup(ctx, \"group\", \u0026compute.NetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"my-lb-neg\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tDefaultPort: pulumi.Int(90),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport com.pulumi.gcp.compute.NetworkEndpointList;\nimport com.pulumi.gcp.compute.NetworkEndpointListArgs;\nimport com.pulumi.gcp.compute.inputs.NetworkEndpointListNetworkEndpointArgs;\nimport com.pulumi.gcp.compute.NetworkEndpointGroup;\nimport com.pulumi.gcp.compute.NetworkEndpointGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var myImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"neg-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"neg-subnetwork\")\n .ipCidrRange(\"10.0.0.1/16\")\n .region(\"us-central1\")\n .network(default_.id())\n .build());\n\n var endpoint_instance1 = new Instance(\"endpoint-instance1\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .subnetwork(defaultSubnetwork.id())\n .build())\n .name(\"endpoint-instance1\")\n .machineType(\"e2-medium\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(myImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .build())\n .build())\n .build());\n\n var endpoint_instance2 = new Instance(\"endpoint-instance2\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .subnetwork(defaultSubnetwork.id())\n .build())\n .name(\"endpoint-instance2\")\n .machineType(\"e2-medium\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(myImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .build())\n .build())\n .build());\n\n var default_endpoints = new NetworkEndpointList(\"default-endpoints\", NetworkEndpointListArgs.builder()\n .networkEndpointGroup(neg.name())\n .networkEndpoints( \n NetworkEndpointListNetworkEndpointArgs.builder()\n .instance(endpoint_instance1.name())\n .port(neg.defaultPort())\n .ipAddress(endpoint_instance1.networkInterfaces().applyValue(networkInterfaces -\u003e networkInterfaces[0].networkIp()))\n .build(),\n NetworkEndpointListNetworkEndpointArgs.builder()\n .instance(endpoint_instance2.name())\n .port(neg.defaultPort())\n .ipAddress(endpoint_instance2.networkInterfaces().applyValue(networkInterfaces -\u003e networkInterfaces[0].networkIp()))\n .build())\n .build());\n\n var group = new NetworkEndpointGroup(\"group\", NetworkEndpointGroupArgs.builder()\n .name(\"my-lb-neg\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .defaultPort(\"90\")\n .zone(\"us-central1-a\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default-endpoints:\n type: gcp:compute:NetworkEndpointList\n properties:\n networkEndpointGroup: ${neg.name}\n networkEndpoints:\n - instance: ${[\"endpoint-instance1\"].name}\n port: ${neg.defaultPort}\n ipAddress: ${[\"endpoint-instance1\"].networkInterfaces[0].networkIp}\n - instance: ${[\"endpoint-instance2\"].name}\n port: ${neg.defaultPort}\n ipAddress: ${[\"endpoint-instance2\"].networkInterfaces[0].networkIp}\n endpoint-instance1:\n type: gcp:compute:Instance\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n subnetwork: ${defaultSubnetwork.id}\n name: endpoint-instance1\n machineType: e2-medium\n bootDisk:\n initializeParams:\n image: ${myImage.selfLink}\n endpoint-instance2:\n type: gcp:compute:Instance\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n subnetwork: ${defaultSubnetwork.id}\n name: endpoint-instance2\n machineType: e2-medium\n bootDisk:\n initializeParams:\n image: ${myImage.selfLink}\n group:\n type: gcp:compute:NetworkEndpointGroup\n properties:\n name: my-lb-neg\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n defaultPort: '90'\n zone: us-central1-a\n default:\n type: gcp:compute:Network\n properties:\n name: neg-network\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: neg-subnetwork\n ipCidrRange: 10.0.0.1/16\n region: us-central1\n network: ${default.id}\nvariables:\n myImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNetworkEndpoints can be imported using any of these accepted formats:\n\n* `projects/{{project}}/zones/{{zone}}/networkEndpointGroups/{{network_endpoint_group}}`\n\n* `{{project}}/{{zone}}/{{network_endpoint_group}}`\n\n* `{{zone}}/{{network_endpoint_group}}`\n\n* `{{network_endpoint_group}}`\n\nWhen using the `pulumi import` command, NetworkEndpoints can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/networkEndpointList:NetworkEndpointList default projects/{{project}}/zones/{{zone}}/networkEndpointGroups/{{network_endpoint_group}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkEndpointList:NetworkEndpointList default {{project}}/{{zone}}/{{network_endpoint_group}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkEndpointList:NetworkEndpointList default {{zone}}/{{network_endpoint_group}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkEndpointList:NetworkEndpointList default {{network_endpoint_group}}\n```\n\n", + "description": "A set of network endpoints belonging to a network endpoint group (NEG). A\nsingle network endpoint represents a IP address and port combination that is\npart of a specific network endpoint group (NEG). NEGs are zonal collections\nof these endpoints for GCP resources within a single subnet. **NOTE**:\nNetwork endpoints cannot be created outside of a network endpoint group.\n\nThis resource is authoritative for a single NEG. Any endpoints not specified\nby this resource will be deleted when the resource configuration is applied.\n\n\u003e **NOTE** In case the Endpoint's Instance is recreated, it's needed to\nperform `apply` twice. To avoid situations like this, please use this resource\nwith the lifecycle `replace_triggered_by` method, with the passed Instance's ID.\n\n\nTo get more information about NetworkEndpoints, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/beta/networkEndpointGroups)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/load-balancing/docs/negs/)\n\n## Example Usage\n\n### Network Endpoints\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"neg-network\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"neg-subnetwork\",\n ipCidrRange: \"10.0.0.1/16\",\n region: \"us-central1\",\n network: _default.id,\n});\nconst endpoint_instance1 = new gcp.compute.Instance(\"endpoint-instance1\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n subnetwork: defaultSubnetwork.id,\n }],\n name: \"endpoint-instance1\",\n machineType: \"e2-medium\",\n bootDisk: {\n initializeParams: {\n image: myImage.then(myImage =\u003e myImage.selfLink),\n },\n },\n});\nconst endpoint_instance2 = new gcp.compute.Instance(\"endpoint-instance2\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n subnetwork: defaultSubnetwork.id,\n }],\n name: \"endpoint-instance2\",\n machineType: \"e2-medium\",\n bootDisk: {\n initializeParams: {\n image: myImage.then(myImage =\u003e myImage.selfLink),\n },\n },\n});\nconst default_endpoints = new gcp.compute.NetworkEndpointList(\"default-endpoints\", {\n networkEndpointGroup: neg.name,\n networkEndpoints: [\n {\n instance: endpoint_instance1.name,\n port: neg.defaultPort,\n ipAddress: endpoint_instance1.networkInterfaces.apply(networkInterfaces =\u003e networkInterfaces[0].networkIp),\n },\n {\n instance: endpoint_instance2.name,\n port: neg.defaultPort,\n ipAddress: endpoint_instance2.networkInterfaces.apply(networkInterfaces =\u003e networkInterfaces[0].networkIp),\n },\n ],\n});\nconst group = new gcp.compute.NetworkEndpointGroup(\"group\", {\n name: \"my-lb-neg\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n defaultPort: 90,\n zone: \"us-central1-a\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\ndefault = gcp.compute.Network(\"default\",\n name=\"neg-network\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"neg-subnetwork\",\n ip_cidr_range=\"10.0.0.1/16\",\n region=\"us-central1\",\n network=default.id)\nendpoint_instance1 = gcp.compute.Instance(\"endpoint-instance1\",\n network_interfaces=[{\n \"access_configs\": [{}],\n \"subnetwork\": default_subnetwork.id,\n }],\n name=\"endpoint-instance1\",\n machine_type=\"e2-medium\",\n boot_disk={\n \"initialize_params\": {\n \"image\": my_image.self_link,\n },\n })\nendpoint_instance2 = gcp.compute.Instance(\"endpoint-instance2\",\n network_interfaces=[{\n \"access_configs\": [{}],\n \"subnetwork\": default_subnetwork.id,\n }],\n name=\"endpoint-instance2\",\n machine_type=\"e2-medium\",\n boot_disk={\n \"initialize_params\": {\n \"image\": my_image.self_link,\n },\n })\ndefault_endpoints = gcp.compute.NetworkEndpointList(\"default-endpoints\",\n network_endpoint_group=neg[\"name\"],\n network_endpoints=[\n {\n \"instance\": endpoint_instance1.name,\n \"port\": neg[\"defaultPort\"],\n \"ip_address\": endpoint_instance1.network_interfaces[0].network_ip,\n },\n {\n \"instance\": endpoint_instance2.name,\n \"port\": neg[\"defaultPort\"],\n \"ip_address\": endpoint_instance2.network_interfaces[0].network_ip,\n },\n ])\ngroup = gcp.compute.NetworkEndpointGroup(\"group\",\n name=\"my-lb-neg\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n default_port=90,\n zone=\"us-central1-a\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var myImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"neg-network\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"neg-subnetwork\",\n IpCidrRange = \"10.0.0.1/16\",\n Region = \"us-central1\",\n Network = @default.Id,\n });\n\n var endpoint_instance1 = new Gcp.Compute.Instance(\"endpoint-instance1\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Subnetwork = defaultSubnetwork.Id,\n },\n },\n Name = \"endpoint-instance1\",\n MachineType = \"e2-medium\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = myImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n },\n },\n });\n\n var endpoint_instance2 = new Gcp.Compute.Instance(\"endpoint-instance2\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Subnetwork = defaultSubnetwork.Id,\n },\n },\n Name = \"endpoint-instance2\",\n MachineType = \"e2-medium\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = myImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n },\n },\n });\n\n var default_endpoints = new Gcp.Compute.NetworkEndpointList(\"default-endpoints\", new()\n {\n NetworkEndpointGroup = neg.Name,\n NetworkEndpoints = new[]\n {\n new Gcp.Compute.Inputs.NetworkEndpointListNetworkEndpointArgs\n {\n Instance = endpoint_instance1.Name,\n Port = neg.DefaultPort,\n IpAddress = endpoint_instance1.NetworkInterfaces.Apply(networkInterfaces =\u003e networkInterfaces[0].NetworkIp),\n },\n new Gcp.Compute.Inputs.NetworkEndpointListNetworkEndpointArgs\n {\n Instance = endpoint_instance2.Name,\n Port = neg.DefaultPort,\n IpAddress = endpoint_instance2.NetworkInterfaces.Apply(networkInterfaces =\u003e networkInterfaces[0].NetworkIp),\n },\n },\n });\n\n var @group = new Gcp.Compute.NetworkEndpointGroup(\"group\", new()\n {\n Name = \"my-lb-neg\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n DefaultPort = 90,\n Zone = \"us-central1-a\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tmyImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"neg-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"neg-subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.1/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"endpoint-instance1\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tAccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{\n\t\t\t\t\t\t\u0026compute.InstanceNetworkInterfaceAccessConfigArgs{},\n\t\t\t\t\t},\n\t\t\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"endpoint-instance1\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(myImage.SelfLink),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"endpoint-instance2\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tAccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{\n\t\t\t\t\t\t\u0026compute.InstanceNetworkInterfaceAccessConfigArgs{},\n\t\t\t\t\t},\n\t\t\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"endpoint-instance2\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(myImage.SelfLink),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetworkEndpointList(ctx, \"default-endpoints\", \u0026compute.NetworkEndpointListArgs{\n\t\t\tNetworkEndpointGroup: pulumi.Any(neg.Name),\n\t\t\tNetworkEndpoints: compute.NetworkEndpointListNetworkEndpointArray{\n\t\t\t\t\u0026compute.NetworkEndpointListNetworkEndpointArgs{\n\t\t\t\t\tInstance: endpoint_instance1.Name,\n\t\t\t\t\tPort: pulumi.Any(neg.DefaultPort),\n\t\t\t\t\tIpAddress: endpoint_instance1.NetworkInterfaces.ApplyT(func(networkInterfaces []compute.InstanceNetworkInterface) (*string, error) {\n\t\t\t\t\t\treturn \u0026networkInterfaces[0].NetworkIp, nil\n\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t},\n\t\t\t\t\u0026compute.NetworkEndpointListNetworkEndpointArgs{\n\t\t\t\t\tInstance: endpoint_instance2.Name,\n\t\t\t\t\tPort: pulumi.Any(neg.DefaultPort),\n\t\t\t\t\tIpAddress: endpoint_instance2.NetworkInterfaces.ApplyT(func(networkInterfaces []compute.InstanceNetworkInterface) (*string, error) {\n\t\t\t\t\t\treturn \u0026networkInterfaces[0].NetworkIp, nil\n\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetworkEndpointGroup(ctx, \"group\", \u0026compute.NetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"my-lb-neg\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tDefaultPort: pulumi.Int(90),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport com.pulumi.gcp.compute.NetworkEndpointList;\nimport com.pulumi.gcp.compute.NetworkEndpointListArgs;\nimport com.pulumi.gcp.compute.inputs.NetworkEndpointListNetworkEndpointArgs;\nimport com.pulumi.gcp.compute.NetworkEndpointGroup;\nimport com.pulumi.gcp.compute.NetworkEndpointGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var myImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"neg-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"neg-subnetwork\")\n .ipCidrRange(\"10.0.0.1/16\")\n .region(\"us-central1\")\n .network(default_.id())\n .build());\n\n var endpoint_instance1 = new Instance(\"endpoint-instance1\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .subnetwork(defaultSubnetwork.id())\n .build())\n .name(\"endpoint-instance1\")\n .machineType(\"e2-medium\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(myImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .build())\n .build())\n .build());\n\n var endpoint_instance2 = new Instance(\"endpoint-instance2\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .subnetwork(defaultSubnetwork.id())\n .build())\n .name(\"endpoint-instance2\")\n .machineType(\"e2-medium\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(myImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .build())\n .build())\n .build());\n\n var default_endpoints = new NetworkEndpointList(\"default-endpoints\", NetworkEndpointListArgs.builder()\n .networkEndpointGroup(neg.name())\n .networkEndpoints( \n NetworkEndpointListNetworkEndpointArgs.builder()\n .instance(endpoint_instance1.name())\n .port(neg.defaultPort())\n .ipAddress(endpoint_instance1.networkInterfaces().applyValue(networkInterfaces -\u003e networkInterfaces[0].networkIp()))\n .build(),\n NetworkEndpointListNetworkEndpointArgs.builder()\n .instance(endpoint_instance2.name())\n .port(neg.defaultPort())\n .ipAddress(endpoint_instance2.networkInterfaces().applyValue(networkInterfaces -\u003e networkInterfaces[0].networkIp()))\n .build())\n .build());\n\n var group = new NetworkEndpointGroup(\"group\", NetworkEndpointGroupArgs.builder()\n .name(\"my-lb-neg\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .defaultPort(\"90\")\n .zone(\"us-central1-a\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default-endpoints:\n type: gcp:compute:NetworkEndpointList\n properties:\n networkEndpointGroup: ${neg.name}\n networkEndpoints:\n - instance: ${[\"endpoint-instance1\"].name}\n port: ${neg.defaultPort}\n ipAddress: ${[\"endpoint-instance1\"].networkInterfaces[0].networkIp}\n - instance: ${[\"endpoint-instance2\"].name}\n port: ${neg.defaultPort}\n ipAddress: ${[\"endpoint-instance2\"].networkInterfaces[0].networkIp}\n endpoint-instance1:\n type: gcp:compute:Instance\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n subnetwork: ${defaultSubnetwork.id}\n name: endpoint-instance1\n machineType: e2-medium\n bootDisk:\n initializeParams:\n image: ${myImage.selfLink}\n endpoint-instance2:\n type: gcp:compute:Instance\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n subnetwork: ${defaultSubnetwork.id}\n name: endpoint-instance2\n machineType: e2-medium\n bootDisk:\n initializeParams:\n image: ${myImage.selfLink}\n group:\n type: gcp:compute:NetworkEndpointGroup\n properties:\n name: my-lb-neg\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n defaultPort: '90'\n zone: us-central1-a\n default:\n type: gcp:compute:Network\n properties:\n name: neg-network\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: neg-subnetwork\n ipCidrRange: 10.0.0.1/16\n region: us-central1\n network: ${default.id}\nvariables:\n myImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNetworkEndpoints can be imported using any of these accepted formats:\n\n* `projects/{{project}}/zones/{{zone}}/networkEndpointGroups/{{network_endpoint_group}}`\n\n* `{{project}}/{{zone}}/{{network_endpoint_group}}`\n\n* `{{zone}}/{{network_endpoint_group}}`\n\n* `{{network_endpoint_group}}`\n\nWhen using the `pulumi import` command, NetworkEndpoints can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/networkEndpointList:NetworkEndpointList default projects/{{project}}/zones/{{zone}}/networkEndpointGroups/{{network_endpoint_group}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkEndpointList:NetworkEndpointList default {{project}}/{{zone}}/{{network_endpoint_group}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkEndpointList:NetworkEndpointList default {{zone}}/{{network_endpoint_group}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkEndpointList:NetworkEndpointList default {{network_endpoint_group}}\n```\n\n", "properties": { "networkEndpointGroup": { "type": "string", @@ -158937,7 +158937,7 @@ } }, "gcp:compute/networkFirewallPolicyWithRules:NetworkFirewallPolicyWithRules": { - "description": "## Example Usage\n\n### Compute Network Firewall Policy With Rules Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst addressGroup1 = new gcp.networksecurity.AddressGroup(\"address_group_1\", {\n name: \"tf-address-group\",\n parent: project.then(project =\u003e `projects/${project.name}`),\n description: \"Global address group\",\n location: \"global\",\n items: [\"208.80.154.224/32\"],\n type: \"IPV4\",\n capacity: 100,\n});\nconst secureTagKey1 = new gcp.tags.TagKey(\"secure_tag_key_1\", {\n description: \"Tag key\",\n parent: project.then(project =\u003e `projects/${project.name}`),\n purpose: \"GCE_FIREWALL\",\n shortName: \"tf-tag-key\",\n purposeData: {\n network: project.then(project =\u003e `${project.name}/default`),\n },\n});\nconst secureTagValue1 = new gcp.tags.TagValue(\"secure_tag_value_1\", {\n description: \"Tag value\",\n parent: pulumi.interpolate`tagKeys/${secureTagKey1.name}`,\n shortName: \"tf-tag-value\",\n});\nconst securityProfile1 = new gcp.networksecurity.SecurityProfile(\"security_profile_1\", {\n name: \"tf-security-profile\",\n type: \"THREAT_PREVENTION\",\n parent: \"organizations/123456789\",\n location: \"global\",\n});\nconst securityProfileGroup1 = new gcp.networksecurity.SecurityProfileGroup(\"security_profile_group_1\", {\n name: \"tf-security-profile-group\",\n parent: \"organizations/123456789\",\n description: \"my description\",\n threatPreventionProfile: securityProfile1.id,\n});\nconst network_firewall_policy_with_rules = new gcp.compute.NetworkFirewallPolicyWithRules(\"network-firewall-policy-with-rules\", {\n name: \"tf-fw-policy-with-rules\",\n description: \"Terraform test\",\n rules: [\n {\n description: \"tcp rule\",\n priority: 1000,\n enableLogging: true,\n action: \"allow\",\n direction: \"EGRESS\",\n match: {\n layer4Configs: [{\n ipProtocol: \"tcp\",\n ports: [\n \"8080\",\n \"7070\",\n ],\n }],\n destIpRanges: [\"11.100.0.1/32\"],\n destFqdns: [\n \"www.yyy.com\",\n \"www.zzz.com\",\n ],\n destRegionCodes: [\n \"HK\",\n \"IN\",\n ],\n destThreatIntelligences: [\n \"iplist-search-engines-crawlers\",\n \"iplist-tor-exit-nodes\",\n ],\n destAddressGroups: [addressGroup1.id],\n },\n targetSecureTags: [{\n name: pulumi.interpolate`tagValues/${secureTagValue1.name}`,\n }],\n },\n {\n description: \"udp rule\",\n priority: 2000,\n enableLogging: false,\n action: \"deny\",\n direction: \"INGRESS\",\n match: {\n layer4Configs: [{\n ipProtocol: \"udp\",\n }],\n srcIpRanges: [\"0.0.0.0/0\"],\n srcFqdns: [\n \"www.abc.com\",\n \"www.def.com\",\n ],\n srcRegionCodes: [\n \"US\",\n \"CA\",\n ],\n srcThreatIntelligences: [\n \"iplist-known-malicious-ips\",\n \"iplist-public-clouds\",\n ],\n srcAddressGroups: [addressGroup1.id],\n srcSecureTags: [{\n name: pulumi.interpolate`tagValues/${secureTagValue1.name}`,\n }],\n },\n disabled: true,\n },\n {\n description: \"security profile group rule\",\n ruleName: \"tcp rule\",\n priority: 3000,\n enableLogging: false,\n action: \"apply_security_profile_group\",\n direction: \"INGRESS\",\n match: {\n layer4Configs: [{\n ipProtocol: \"tcp\",\n }],\n srcIpRanges: [\"0.0.0.0/0\"],\n },\n targetServiceAccounts: [\"test@google.com\"],\n securityProfileGroup: pulumi.interpolate`//networksecurity.googleapis.com/${securityProfileGroup1.id}`,\n tlsInspect: true,\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\naddress_group1 = gcp.networksecurity.AddressGroup(\"address_group_1\",\n name=\"tf-address-group\",\n parent=f\"projects/{project.name}\",\n description=\"Global address group\",\n location=\"global\",\n items=[\"208.80.154.224/32\"],\n type=\"IPV4\",\n capacity=100)\nsecure_tag_key1 = gcp.tags.TagKey(\"secure_tag_key_1\",\n description=\"Tag key\",\n parent=f\"projects/{project.name}\",\n purpose=\"GCE_FIREWALL\",\n short_name=\"tf-tag-key\",\n purpose_data={\n \"network\": f\"{project.name}/default\",\n })\nsecure_tag_value1 = gcp.tags.TagValue(\"secure_tag_value_1\",\n description=\"Tag value\",\n parent=secure_tag_key1.name.apply(lambda name: f\"tagKeys/{name}\"),\n short_name=\"tf-tag-value\")\nsecurity_profile1 = gcp.networksecurity.SecurityProfile(\"security_profile_1\",\n name=\"tf-security-profile\",\n type=\"THREAT_PREVENTION\",\n parent=\"organizations/123456789\",\n location=\"global\")\nsecurity_profile_group1 = gcp.networksecurity.SecurityProfileGroup(\"security_profile_group_1\",\n name=\"tf-security-profile-group\",\n parent=\"organizations/123456789\",\n description=\"my description\",\n threat_prevention_profile=security_profile1.id)\nnetwork_firewall_policy_with_rules = gcp.compute.NetworkFirewallPolicyWithRules(\"network-firewall-policy-with-rules\",\n name=\"tf-fw-policy-with-rules\",\n description=\"Terraform test\",\n rules=[\n {\n \"description\": \"tcp rule\",\n \"priority\": 1000,\n \"enable_logging\": True,\n \"action\": \"allow\",\n \"direction\": \"EGRESS\",\n \"match\": {\n \"layer4_configs\": [{\n \"ip_protocol\": \"tcp\",\n \"ports\": [\n \"8080\",\n \"7070\",\n ],\n }],\n \"dest_ip_ranges\": [\"11.100.0.1/32\"],\n \"dest_fqdns\": [\n \"www.yyy.com\",\n \"www.zzz.com\",\n ],\n \"dest_region_codes\": [\n \"HK\",\n \"IN\",\n ],\n \"dest_threat_intelligences\": [\n \"iplist-search-engines-crawlers\",\n \"iplist-tor-exit-nodes\",\n ],\n \"dest_address_groups\": [address_group1.id],\n },\n \"target_secure_tags\": [{\n \"name\": secure_tag_value1.name.apply(lambda name: f\"tagValues/{name}\"),\n }],\n },\n {\n \"description\": \"udp rule\",\n \"priority\": 2000,\n \"enable_logging\": False,\n \"action\": \"deny\",\n \"direction\": \"INGRESS\",\n \"match\": {\n \"layer4_configs\": [{\n \"ip_protocol\": \"udp\",\n }],\n \"src_ip_ranges\": [\"0.0.0.0/0\"],\n \"src_fqdns\": [\n \"www.abc.com\",\n \"www.def.com\",\n ],\n \"src_region_codes\": [\n \"US\",\n \"CA\",\n ],\n \"src_threat_intelligences\": [\n \"iplist-known-malicious-ips\",\n \"iplist-public-clouds\",\n ],\n \"src_address_groups\": [address_group1.id],\n \"src_secure_tags\": [{\n \"name\": secure_tag_value1.name.apply(lambda name: f\"tagValues/{name}\"),\n }],\n },\n \"disabled\": True,\n },\n {\n \"description\": \"security profile group rule\",\n \"rule_name\": \"tcp rule\",\n \"priority\": 3000,\n \"enable_logging\": False,\n \"action\": \"apply_security_profile_group\",\n \"direction\": \"INGRESS\",\n \"match\": {\n \"layer4_configs\": [{\n \"ip_protocol\": \"tcp\",\n }],\n \"src_ip_ranges\": [\"0.0.0.0/0\"],\n },\n \"target_service_accounts\": [\"test@google.com\"],\n \"security_profile_group\": security_profile_group1.id.apply(lambda id: f\"//networksecurity.googleapis.com/{id}\"),\n \"tls_inspect\": 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 project = Gcp.Organizations.GetProject.Invoke();\n\n var addressGroup1 = new Gcp.NetworkSecurity.AddressGroup(\"address_group_1\", new()\n {\n Name = \"tf-address-group\",\n Parent = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Name)}\",\n Description = \"Global address group\",\n Location = \"global\",\n Items = new[]\n {\n \"208.80.154.224/32\",\n },\n Type = \"IPV4\",\n Capacity = 100,\n });\n\n var secureTagKey1 = new Gcp.Tags.TagKey(\"secure_tag_key_1\", new()\n {\n Description = \"Tag key\",\n Parent = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Name)}\",\n Purpose = \"GCE_FIREWALL\",\n ShortName = \"tf-tag-key\",\n PurposeData = \n {\n { \"network\", $\"{project.Apply(getProjectResult =\u003e getProjectResult.Name)}/default\" },\n },\n });\n\n var secureTagValue1 = new Gcp.Tags.TagValue(\"secure_tag_value_1\", new()\n {\n Description = \"Tag value\",\n Parent = secureTagKey1.Name.Apply(name =\u003e $\"tagKeys/{name}\"),\n ShortName = \"tf-tag-value\",\n });\n\n var securityProfile1 = new Gcp.NetworkSecurity.SecurityProfile(\"security_profile_1\", new()\n {\n Name = \"tf-security-profile\",\n Type = \"THREAT_PREVENTION\",\n Parent = \"organizations/123456789\",\n Location = \"global\",\n });\n\n var securityProfileGroup1 = new Gcp.NetworkSecurity.SecurityProfileGroup(\"security_profile_group_1\", new()\n {\n Name = \"tf-security-profile-group\",\n Parent = \"organizations/123456789\",\n Description = \"my description\",\n ThreatPreventionProfile = securityProfile1.Id,\n });\n\n var network_firewall_policy_with_rules = new Gcp.Compute.NetworkFirewallPolicyWithRules(\"network-firewall-policy-with-rules\", new()\n {\n Name = \"tf-fw-policy-with-rules\",\n Description = \"Terraform test\",\n Rules = new[]\n {\n new Gcp.Compute.Inputs.NetworkFirewallPolicyWithRulesRuleArgs\n {\n Description = \"tcp rule\",\n Priority = 1000,\n EnableLogging = true,\n Action = \"allow\",\n Direction = \"EGRESS\",\n Match = new Gcp.Compute.Inputs.NetworkFirewallPolicyWithRulesRuleMatchArgs\n {\n Layer4Configs = new[]\n {\n new Gcp.Compute.Inputs.NetworkFirewallPolicyWithRulesRuleMatchLayer4ConfigArgs\n {\n IpProtocol = \"tcp\",\n Ports = new[]\n {\n \"8080\",\n \"7070\",\n },\n },\n },\n DestIpRanges = new[]\n {\n \"11.100.0.1/32\",\n },\n DestFqdns = new[]\n {\n \"www.yyy.com\",\n \"www.zzz.com\",\n },\n DestRegionCodes = new[]\n {\n \"HK\",\n \"IN\",\n },\n DestThreatIntelligences = new[]\n {\n \"iplist-search-engines-crawlers\",\n \"iplist-tor-exit-nodes\",\n },\n DestAddressGroups = new[]\n {\n addressGroup1.Id,\n },\n },\n TargetSecureTags = new[]\n {\n new Gcp.Compute.Inputs.NetworkFirewallPolicyWithRulesRuleTargetSecureTagArgs\n {\n Name = secureTagValue1.Name.Apply(name =\u003e $\"tagValues/{name}\"),\n },\n },\n },\n new Gcp.Compute.Inputs.NetworkFirewallPolicyWithRulesRuleArgs\n {\n Description = \"udp rule\",\n Priority = 2000,\n EnableLogging = false,\n Action = \"deny\",\n Direction = \"INGRESS\",\n Match = new Gcp.Compute.Inputs.NetworkFirewallPolicyWithRulesRuleMatchArgs\n {\n Layer4Configs = new[]\n {\n new Gcp.Compute.Inputs.NetworkFirewallPolicyWithRulesRuleMatchLayer4ConfigArgs\n {\n IpProtocol = \"udp\",\n },\n },\n SrcIpRanges = new[]\n {\n \"0.0.0.0/0\",\n },\n SrcFqdns = new[]\n {\n \"www.abc.com\",\n \"www.def.com\",\n },\n SrcRegionCodes = new[]\n {\n \"US\",\n \"CA\",\n },\n SrcThreatIntelligences = new[]\n {\n \"iplist-known-malicious-ips\",\n \"iplist-public-clouds\",\n },\n SrcAddressGroups = new[]\n {\n addressGroup1.Id,\n },\n SrcSecureTags = new[]\n {\n new Gcp.Compute.Inputs.NetworkFirewallPolicyWithRulesRuleMatchSrcSecureTagArgs\n {\n Name = secureTagValue1.Name.Apply(name =\u003e $\"tagValues/{name}\"),\n },\n },\n },\n Disabled = true,\n },\n new Gcp.Compute.Inputs.NetworkFirewallPolicyWithRulesRuleArgs\n {\n Description = \"security profile group rule\",\n RuleName = \"tcp rule\",\n Priority = 3000,\n EnableLogging = false,\n Action = \"apply_security_profile_group\",\n Direction = \"INGRESS\",\n Match = new Gcp.Compute.Inputs.NetworkFirewallPolicyWithRulesRuleMatchArgs\n {\n Layer4Configs = new[]\n {\n new Gcp.Compute.Inputs.NetworkFirewallPolicyWithRulesRuleMatchLayer4ConfigArgs\n {\n IpProtocol = \"tcp\",\n },\n },\n SrcIpRanges = new[]\n {\n \"0.0.0.0/0\",\n },\n },\n TargetServiceAccounts = new[]\n {\n \"test@google.com\",\n },\n SecurityProfileGroup = securityProfileGroup1.Id.Apply(id =\u003e $\"//networksecurity.googleapis.com/{id}\"),\n TlsInspect = true,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/tags\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taddressGroup1, err := networksecurity.NewAddressGroup(ctx, \"address_group_1\", \u0026networksecurity.AddressGroupArgs{\n\t\t\tName: pulumi.String(\"tf-address-group\"),\n\t\t\tParent: pulumi.Sprintf(\"projects/%v\", project.Name),\n\t\t\tDescription: pulumi.String(\"Global address group\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tItems: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"208.80.154.224/32\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"IPV4\"),\n\t\t\tCapacity: pulumi.Int(100),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecureTagKey1, err := tags.NewTagKey(ctx, \"secure_tag_key_1\", \u0026tags.TagKeyArgs{\n\t\t\tDescription: pulumi.String(\"Tag key\"),\n\t\t\tParent: pulumi.Sprintf(\"projects/%v\", project.Name),\n\t\t\tPurpose: pulumi.String(\"GCE_FIREWALL\"),\n\t\t\tShortName: pulumi.String(\"tf-tag-key\"),\n\t\t\tPurposeData: pulumi.StringMap{\n\t\t\t\t\"network\": pulumi.Sprintf(\"%v/default\", project.Name),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecureTagValue1, err := tags.NewTagValue(ctx, \"secure_tag_value_1\", \u0026tags.TagValueArgs{\n\t\t\tDescription: pulumi.String(\"Tag value\"),\n\t\t\tParent: secureTagKey1.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"tagKeys/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tShortName: pulumi.String(\"tf-tag-value\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecurityProfile1, err := networksecurity.NewSecurityProfile(ctx, \"security_profile_1\", \u0026networksecurity.SecurityProfileArgs{\n\t\t\tName: pulumi.String(\"tf-security-profile\"),\n\t\t\tType: pulumi.String(\"THREAT_PREVENTION\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecurityProfileGroup1, err := networksecurity.NewSecurityProfileGroup(ctx, \"security_profile_group_1\", \u0026networksecurity.SecurityProfileGroupArgs{\n\t\t\tName: pulumi.String(\"tf-security-profile-group\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tThreatPreventionProfile: securityProfile1.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetworkFirewallPolicyWithRules(ctx, \"network-firewall-policy-with-rules\", \u0026compute.NetworkFirewallPolicyWithRulesArgs{\n\t\t\tName: pulumi.String(\"tf-fw-policy-with-rules\"),\n\t\t\tDescription: pulumi.String(\"Terraform test\"),\n\t\t\tRules: compute.NetworkFirewallPolicyWithRulesRuleArray{\n\t\t\t\t\u0026compute.NetworkFirewallPolicyWithRulesRuleArgs{\n\t\t\t\t\tDescription: pulumi.String(\"tcp rule\"),\n\t\t\t\t\tPriority: pulumi.Int(1000),\n\t\t\t\t\tEnableLogging: pulumi.Bool(true),\n\t\t\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\t\t\tDirection: pulumi.String(\"EGRESS\"),\n\t\t\t\t\tMatch: \u0026compute.NetworkFirewallPolicyWithRulesRuleMatchArgs{\n\t\t\t\t\t\tLayer4Configs: compute.NetworkFirewallPolicyWithRulesRuleMatchLayer4ConfigArray{\n\t\t\t\t\t\t\t\u0026compute.NetworkFirewallPolicyWithRulesRuleMatchLayer4ConfigArgs{\n\t\t\t\t\t\t\t\tIpProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t\t\t\t\tPorts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"8080\"),\n\t\t\t\t\t\t\t\t\tpulumi.String(\"7070\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDestIpRanges: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"11.100.0.1/32\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDestFqdns: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"www.yyy.com\"),\n\t\t\t\t\t\t\tpulumi.String(\"www.zzz.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDestRegionCodes: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"HK\"),\n\t\t\t\t\t\t\tpulumi.String(\"IN\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDestThreatIntelligences: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"iplist-search-engines-crawlers\"),\n\t\t\t\t\t\t\tpulumi.String(\"iplist-tor-exit-nodes\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDestAddressGroups: pulumi.StringArray{\n\t\t\t\t\t\t\taddressGroup1.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tTargetSecureTags: compute.NetworkFirewallPolicyWithRulesRuleTargetSecureTagArray{\n\t\t\t\t\t\t\u0026compute.NetworkFirewallPolicyWithRulesRuleTargetSecureTagArgs{\n\t\t\t\t\t\t\tName: secureTagValue1.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\t\t\treturn fmt.Sprintf(\"tagValues/%v\", name), nil\n\t\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026compute.NetworkFirewallPolicyWithRulesRuleArgs{\n\t\t\t\t\tDescription: pulumi.String(\"udp rule\"),\n\t\t\t\t\tPriority: pulumi.Int(2000),\n\t\t\t\t\tEnableLogging: pulumi.Bool(false),\n\t\t\t\t\tAction: pulumi.String(\"deny\"),\n\t\t\t\t\tDirection: pulumi.String(\"INGRESS\"),\n\t\t\t\t\tMatch: \u0026compute.NetworkFirewallPolicyWithRulesRuleMatchArgs{\n\t\t\t\t\t\tLayer4Configs: compute.NetworkFirewallPolicyWithRulesRuleMatchLayer4ConfigArray{\n\t\t\t\t\t\t\t\u0026compute.NetworkFirewallPolicyWithRulesRuleMatchLayer4ConfigArgs{\n\t\t\t\t\t\t\t\tIpProtocol: pulumi.String(\"udp\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"0.0.0.0/0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSrcFqdns: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"www.abc.com\"),\n\t\t\t\t\t\t\tpulumi.String(\"www.def.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSrcRegionCodes: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"US\"),\n\t\t\t\t\t\t\tpulumi.String(\"CA\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSrcThreatIntelligences: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"iplist-known-malicious-ips\"),\n\t\t\t\t\t\t\tpulumi.String(\"iplist-public-clouds\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSrcAddressGroups: pulumi.StringArray{\n\t\t\t\t\t\t\taddressGroup1.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSrcSecureTags: compute.NetworkFirewallPolicyWithRulesRuleMatchSrcSecureTagArray{\n\t\t\t\t\t\t\t\u0026compute.NetworkFirewallPolicyWithRulesRuleMatchSrcSecureTagArgs{\n\t\t\t\t\t\t\t\tName: secureTagValue1.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\t\t\t\treturn fmt.Sprintf(\"tagValues/%v\", name), nil\n\t\t\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tDisabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\t\u0026compute.NetworkFirewallPolicyWithRulesRuleArgs{\n\t\t\t\t\tDescription: pulumi.String(\"security profile group rule\"),\n\t\t\t\t\tRuleName: pulumi.String(\"tcp rule\"),\n\t\t\t\t\tPriority: pulumi.Int(3000),\n\t\t\t\t\tEnableLogging: pulumi.Bool(false),\n\t\t\t\t\tAction: pulumi.String(\"apply_security_profile_group\"),\n\t\t\t\t\tDirection: pulumi.String(\"INGRESS\"),\n\t\t\t\t\tMatch: \u0026compute.NetworkFirewallPolicyWithRulesRuleMatchArgs{\n\t\t\t\t\t\tLayer4Configs: compute.NetworkFirewallPolicyWithRulesRuleMatchLayer4ConfigArray{\n\t\t\t\t\t\t\t\u0026compute.NetworkFirewallPolicyWithRulesRuleMatchLayer4ConfigArgs{\n\t\t\t\t\t\t\t\tIpProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"0.0.0.0/0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tTargetServiceAccounts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"test@google.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tSecurityProfileGroup: securityProfileGroup1.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"//networksecurity.googleapis.com/%v\", id), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\tTlsInspect: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.networksecurity.AddressGroup;\nimport com.pulumi.gcp.networksecurity.AddressGroupArgs;\nimport com.pulumi.gcp.tags.TagKey;\nimport com.pulumi.gcp.tags.TagKeyArgs;\nimport com.pulumi.gcp.tags.TagValue;\nimport com.pulumi.gcp.tags.TagValueArgs;\nimport com.pulumi.gcp.networksecurity.SecurityProfile;\nimport com.pulumi.gcp.networksecurity.SecurityProfileArgs;\nimport com.pulumi.gcp.networksecurity.SecurityProfileGroup;\nimport com.pulumi.gcp.networksecurity.SecurityProfileGroupArgs;\nimport com.pulumi.gcp.compute.NetworkFirewallPolicyWithRules;\nimport com.pulumi.gcp.compute.NetworkFirewallPolicyWithRulesArgs;\nimport com.pulumi.gcp.compute.inputs.NetworkFirewallPolicyWithRulesRuleArgs;\nimport com.pulumi.gcp.compute.inputs.NetworkFirewallPolicyWithRulesRuleMatchArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var addressGroup1 = new AddressGroup(\"addressGroup1\", AddressGroupArgs.builder()\n .name(\"tf-address-group\")\n .parent(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.name())))\n .description(\"Global address group\")\n .location(\"global\")\n .items(\"208.80.154.224/32\")\n .type(\"IPV4\")\n .capacity(100)\n .build());\n\n var secureTagKey1 = new TagKey(\"secureTagKey1\", TagKeyArgs.builder()\n .description(\"Tag key\")\n .parent(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.name())))\n .purpose(\"GCE_FIREWALL\")\n .shortName(\"tf-tag-key\")\n .purposeData(Map.of(\"network\", String.format(\"%s/default\", project.applyValue(getProjectResult -\u003e getProjectResult.name()))))\n .build());\n\n var secureTagValue1 = new TagValue(\"secureTagValue1\", TagValueArgs.builder()\n .description(\"Tag value\")\n .parent(secureTagKey1.name().applyValue(name -\u003e String.format(\"tagKeys/%s\", name)))\n .shortName(\"tf-tag-value\")\n .build());\n\n var securityProfile1 = new SecurityProfile(\"securityProfile1\", SecurityProfileArgs.builder()\n .name(\"tf-security-profile\")\n .type(\"THREAT_PREVENTION\")\n .parent(\"organizations/123456789\")\n .location(\"global\")\n .build());\n\n var securityProfileGroup1 = new SecurityProfileGroup(\"securityProfileGroup1\", SecurityProfileGroupArgs.builder()\n .name(\"tf-security-profile-group\")\n .parent(\"organizations/123456789\")\n .description(\"my description\")\n .threatPreventionProfile(securityProfile1.id())\n .build());\n\n var network_firewall_policy_with_rules = new NetworkFirewallPolicyWithRules(\"network-firewall-policy-with-rules\", NetworkFirewallPolicyWithRulesArgs.builder()\n .name(\"tf-fw-policy-with-rules\")\n .description(\"Terraform test\")\n .rules( \n NetworkFirewallPolicyWithRulesRuleArgs.builder()\n .description(\"tcp rule\")\n .priority(1000)\n .enableLogging(true)\n .action(\"allow\")\n .direction(\"EGRESS\")\n .match(NetworkFirewallPolicyWithRulesRuleMatchArgs.builder()\n .layer4Configs(NetworkFirewallPolicyWithRulesRuleMatchLayer4ConfigArgs.builder()\n .ipProtocol(\"tcp\")\n .ports( \n 8080,\n 7070)\n .build())\n .destIpRanges(\"11.100.0.1/32\")\n .destFqdns( \n \"www.yyy.com\",\n \"www.zzz.com\")\n .destRegionCodes( \n \"HK\",\n \"IN\")\n .destThreatIntelligences( \n \"iplist-search-engines-crawlers\",\n \"iplist-tor-exit-nodes\")\n .destAddressGroups(addressGroup1.id())\n .build())\n .targetSecureTags(NetworkFirewallPolicyWithRulesRuleTargetSecureTagArgs.builder()\n .name(secureTagValue1.name().applyValue(name -\u003e String.format(\"tagValues/%s\", name)))\n .build())\n .build(),\n NetworkFirewallPolicyWithRulesRuleArgs.builder()\n .description(\"udp rule\")\n .priority(2000)\n .enableLogging(false)\n .action(\"deny\")\n .direction(\"INGRESS\")\n .match(NetworkFirewallPolicyWithRulesRuleMatchArgs.builder()\n .layer4Configs(NetworkFirewallPolicyWithRulesRuleMatchLayer4ConfigArgs.builder()\n .ipProtocol(\"udp\")\n .build())\n .srcIpRanges(\"0.0.0.0/0\")\n .srcFqdns( \n \"www.abc.com\",\n \"www.def.com\")\n .srcRegionCodes( \n \"US\",\n \"CA\")\n .srcThreatIntelligences( \n \"iplist-known-malicious-ips\",\n \"iplist-public-clouds\")\n .srcAddressGroups(addressGroup1.id())\n .srcSecureTags(NetworkFirewallPolicyWithRulesRuleMatchSrcSecureTagArgs.builder()\n .name(secureTagValue1.name().applyValue(name -\u003e String.format(\"tagValues/%s\", name)))\n .build())\n .build())\n .disabled(true)\n .build(),\n NetworkFirewallPolicyWithRulesRuleArgs.builder()\n .description(\"security profile group rule\")\n .ruleName(\"tcp rule\")\n .priority(3000)\n .enableLogging(false)\n .action(\"apply_security_profile_group\")\n .direction(\"INGRESS\")\n .match(NetworkFirewallPolicyWithRulesRuleMatchArgs.builder()\n .layer4Configs(NetworkFirewallPolicyWithRulesRuleMatchLayer4ConfigArgs.builder()\n .ipProtocol(\"tcp\")\n .build())\n .srcIpRanges(\"0.0.0.0/0\")\n .build())\n .targetServiceAccounts(\"test@google.com\")\n .securityProfileGroup(securityProfileGroup1.id().applyValue(id -\u003e String.format(\"//networksecurity.googleapis.com/%s\", id)))\n .tlsInspect(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network-firewall-policy-with-rules:\n type: gcp:compute:NetworkFirewallPolicyWithRules\n properties:\n name: tf-fw-policy-with-rules\n description: Terraform test\n rules:\n - description: tcp rule\n priority: 1000\n enableLogging: true\n action: allow\n direction: EGRESS\n match:\n layer4Configs:\n - ipProtocol: tcp\n ports:\n - 8080\n - 7070\n destIpRanges:\n - 11.100.0.1/32\n destFqdns:\n - www.yyy.com\n - www.zzz.com\n destRegionCodes:\n - HK\n - IN\n destThreatIntelligences:\n - iplist-search-engines-crawlers\n - iplist-tor-exit-nodes\n destAddressGroups:\n - ${addressGroup1.id}\n targetSecureTags:\n - name: tagValues/${secureTagValue1.name}\n - description: udp rule\n priority: 2000\n enableLogging: false\n action: deny\n direction: INGRESS\n match:\n layer4Configs:\n - ipProtocol: udp\n srcIpRanges:\n - 0.0.0.0/0\n srcFqdns:\n - www.abc.com\n - www.def.com\n srcRegionCodes:\n - US\n - CA\n srcThreatIntelligences:\n - iplist-known-malicious-ips\n - iplist-public-clouds\n srcAddressGroups:\n - ${addressGroup1.id}\n srcSecureTags:\n - name: tagValues/${secureTagValue1.name}\n disabled: true\n - description: security profile group rule\n ruleName: tcp rule\n priority: 3000\n enableLogging: false\n action: apply_security_profile_group\n direction: INGRESS\n match:\n layer4Configs:\n - ipProtocol: tcp\n srcIpRanges:\n - 0.0.0.0/0\n targetServiceAccounts:\n - test@google.com\n securityProfileGroup: //networksecurity.googleapis.com/${securityProfileGroup1.id}\n tlsInspect: true\n addressGroup1:\n type: gcp:networksecurity:AddressGroup\n name: address_group_1\n properties:\n name: tf-address-group\n parent: projects/${project.name}\n description: Global address group\n location: global\n items:\n - 208.80.154.224/32\n type: IPV4\n capacity: 100\n secureTagKey1:\n type: gcp:tags:TagKey\n name: secure_tag_key_1\n properties:\n description: Tag key\n parent: projects/${project.name}\n purpose: GCE_FIREWALL\n shortName: tf-tag-key\n purposeData:\n network: ${project.name}/default\n secureTagValue1:\n type: gcp:tags:TagValue\n name: secure_tag_value_1\n properties:\n description: Tag value\n parent: tagKeys/${secureTagKey1.name}\n shortName: tf-tag-value\n securityProfileGroup1:\n type: gcp:networksecurity:SecurityProfileGroup\n name: security_profile_group_1\n properties:\n name: tf-security-profile-group\n parent: organizations/123456789\n description: my description\n threatPreventionProfile: ${securityProfile1.id}\n securityProfile1:\n type: gcp:networksecurity:SecurityProfile\n name: security_profile_1\n properties:\n name: tf-security-profile\n type: THREAT_PREVENTION\n parent: organizations/123456789\n location: global\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNetworkFirewallPolicyWithRules can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/firewallPolicies/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, NetworkFirewallPolicyWithRules can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/networkFirewallPolicyWithRules:NetworkFirewallPolicyWithRules default projects/{{project}}/global/firewallPolicies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkFirewallPolicyWithRules:NetworkFirewallPolicyWithRules default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkFirewallPolicyWithRules:NetworkFirewallPolicyWithRules default {{name}}\n```\n\n", + "description": "## Example Usage\n\n### Compute Network Firewall Policy With Rules Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst addressGroup1 = new gcp.networksecurity.AddressGroup(\"address_group_1\", {\n name: \"tf-address-group\",\n parent: project.then(project =\u003e `projects/${project.name}`),\n description: \"Global address group\",\n location: \"global\",\n items: [\"208.80.154.224/32\"],\n type: \"IPV4\",\n capacity: 100,\n});\nconst secureTagKey1 = new gcp.tags.TagKey(\"secure_tag_key_1\", {\n description: \"Tag key\",\n parent: project.then(project =\u003e `projects/${project.name}`),\n purpose: \"GCE_FIREWALL\",\n shortName: \"tf-tag-key\",\n purposeData: {\n network: project.then(project =\u003e `${project.name}/default`),\n },\n});\nconst secureTagValue1 = new gcp.tags.TagValue(\"secure_tag_value_1\", {\n description: \"Tag value\",\n parent: pulumi.interpolate`tagKeys/${secureTagKey1.name}`,\n shortName: \"tf-tag-value\",\n});\nconst securityProfile1 = new gcp.networksecurity.SecurityProfile(\"security_profile_1\", {\n name: \"tf-security-profile\",\n type: \"THREAT_PREVENTION\",\n parent: \"organizations/123456789\",\n location: \"global\",\n});\nconst securityProfileGroup1 = new gcp.networksecurity.SecurityProfileGroup(\"security_profile_group_1\", {\n name: \"tf-security-profile-group\",\n parent: \"organizations/123456789\",\n description: \"my description\",\n threatPreventionProfile: securityProfile1.id,\n});\nconst network_firewall_policy_with_rules = new gcp.compute.NetworkFirewallPolicyWithRules(\"network-firewall-policy-with-rules\", {\n name: \"tf-fw-policy-with-rules\",\n description: \"Terraform test\",\n rules: [\n {\n description: \"tcp rule\",\n priority: 1000,\n enableLogging: true,\n action: \"allow\",\n direction: \"EGRESS\",\n match: {\n layer4Configs: [{\n ipProtocol: \"tcp\",\n ports: [\n \"8080\",\n \"7070\",\n ],\n }],\n destIpRanges: [\"11.100.0.1/32\"],\n destFqdns: [\n \"www.yyy.com\",\n \"www.zzz.com\",\n ],\n destRegionCodes: [\n \"HK\",\n \"IN\",\n ],\n destThreatIntelligences: [\n \"iplist-search-engines-crawlers\",\n \"iplist-tor-exit-nodes\",\n ],\n destAddressGroups: [addressGroup1.id],\n },\n targetSecureTags: [{\n name: pulumi.interpolate`tagValues/${secureTagValue1.name}`,\n }],\n },\n {\n description: \"udp rule\",\n priority: 2000,\n enableLogging: false,\n action: \"deny\",\n direction: \"INGRESS\",\n match: {\n layer4Configs: [{\n ipProtocol: \"udp\",\n }],\n srcIpRanges: [\"0.0.0.0/0\"],\n srcFqdns: [\n \"www.abc.com\",\n \"www.def.com\",\n ],\n srcRegionCodes: [\n \"US\",\n \"CA\",\n ],\n srcThreatIntelligences: [\n \"iplist-known-malicious-ips\",\n \"iplist-public-clouds\",\n ],\n srcAddressGroups: [addressGroup1.id],\n srcSecureTags: [{\n name: pulumi.interpolate`tagValues/${secureTagValue1.name}`,\n }],\n },\n disabled: true,\n },\n {\n description: \"security profile group rule\",\n ruleName: \"tcp rule\",\n priority: 3000,\n enableLogging: false,\n action: \"apply_security_profile_group\",\n direction: \"INGRESS\",\n match: {\n layer4Configs: [{\n ipProtocol: \"tcp\",\n }],\n srcIpRanges: [\"0.0.0.0/0\"],\n },\n targetServiceAccounts: [\"test@google.com\"],\n securityProfileGroup: pulumi.interpolate`//networksecurity.googleapis.com/${securityProfileGroup1.id}`,\n tlsInspect: true,\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\naddress_group1 = gcp.networksecurity.AddressGroup(\"address_group_1\",\n name=\"tf-address-group\",\n parent=f\"projects/{project.name}\",\n description=\"Global address group\",\n location=\"global\",\n items=[\"208.80.154.224/32\"],\n type=\"IPV4\",\n capacity=100)\nsecure_tag_key1 = gcp.tags.TagKey(\"secure_tag_key_1\",\n description=\"Tag key\",\n parent=f\"projects/{project.name}\",\n purpose=\"GCE_FIREWALL\",\n short_name=\"tf-tag-key\",\n purpose_data={\n \"network\": f\"{project.name}/default\",\n })\nsecure_tag_value1 = gcp.tags.TagValue(\"secure_tag_value_1\",\n description=\"Tag value\",\n parent=secure_tag_key1.name.apply(lambda name: f\"tagKeys/{name}\"),\n short_name=\"tf-tag-value\")\nsecurity_profile1 = gcp.networksecurity.SecurityProfile(\"security_profile_1\",\n name=\"tf-security-profile\",\n type=\"THREAT_PREVENTION\",\n parent=\"organizations/123456789\",\n location=\"global\")\nsecurity_profile_group1 = gcp.networksecurity.SecurityProfileGroup(\"security_profile_group_1\",\n name=\"tf-security-profile-group\",\n parent=\"organizations/123456789\",\n description=\"my description\",\n threat_prevention_profile=security_profile1.id)\nnetwork_firewall_policy_with_rules = gcp.compute.NetworkFirewallPolicyWithRules(\"network-firewall-policy-with-rules\",\n name=\"tf-fw-policy-with-rules\",\n description=\"Terraform test\",\n rules=[\n {\n \"description\": \"tcp rule\",\n \"priority\": 1000,\n \"enable_logging\": True,\n \"action\": \"allow\",\n \"direction\": \"EGRESS\",\n \"match\": {\n \"layer4_configs\": [{\n \"ip_protocol\": \"tcp\",\n \"ports\": [\n \"8080\",\n \"7070\",\n ],\n }],\n \"dest_ip_ranges\": [\"11.100.0.1/32\"],\n \"dest_fqdns\": [\n \"www.yyy.com\",\n \"www.zzz.com\",\n ],\n \"dest_region_codes\": [\n \"HK\",\n \"IN\",\n ],\n \"dest_threat_intelligences\": [\n \"iplist-search-engines-crawlers\",\n \"iplist-tor-exit-nodes\",\n ],\n \"dest_address_groups\": [address_group1.id],\n },\n \"target_secure_tags\": [{\n \"name\": secure_tag_value1.name.apply(lambda name: f\"tagValues/{name}\"),\n }],\n },\n {\n \"description\": \"udp rule\",\n \"priority\": 2000,\n \"enable_logging\": False,\n \"action\": \"deny\",\n \"direction\": \"INGRESS\",\n \"match\": {\n \"layer4_configs\": [{\n \"ip_protocol\": \"udp\",\n }],\n \"src_ip_ranges\": [\"0.0.0.0/0\"],\n \"src_fqdns\": [\n \"www.abc.com\",\n \"www.def.com\",\n ],\n \"src_region_codes\": [\n \"US\",\n \"CA\",\n ],\n \"src_threat_intelligences\": [\n \"iplist-known-malicious-ips\",\n \"iplist-public-clouds\",\n ],\n \"src_address_groups\": [address_group1.id],\n \"src_secure_tags\": [{\n \"name\": secure_tag_value1.name.apply(lambda name: f\"tagValues/{name}\"),\n }],\n },\n \"disabled\": True,\n },\n {\n \"description\": \"security profile group rule\",\n \"rule_name\": \"tcp rule\",\n \"priority\": 3000,\n \"enable_logging\": False,\n \"action\": \"apply_security_profile_group\",\n \"direction\": \"INGRESS\",\n \"match\": {\n \"layer4_configs\": [{\n \"ip_protocol\": \"tcp\",\n }],\n \"src_ip_ranges\": [\"0.0.0.0/0\"],\n },\n \"target_service_accounts\": [\"test@google.com\"],\n \"security_profile_group\": security_profile_group1.id.apply(lambda id: f\"//networksecurity.googleapis.com/{id}\"),\n \"tls_inspect\": 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 project = Gcp.Organizations.GetProject.Invoke();\n\n var addressGroup1 = new Gcp.NetworkSecurity.AddressGroup(\"address_group_1\", new()\n {\n Name = \"tf-address-group\",\n Parent = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Name)}\",\n Description = \"Global address group\",\n Location = \"global\",\n Items = new[]\n {\n \"208.80.154.224/32\",\n },\n Type = \"IPV4\",\n Capacity = 100,\n });\n\n var secureTagKey1 = new Gcp.Tags.TagKey(\"secure_tag_key_1\", new()\n {\n Description = \"Tag key\",\n Parent = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Name)}\",\n Purpose = \"GCE_FIREWALL\",\n ShortName = \"tf-tag-key\",\n PurposeData = \n {\n { \"network\", $\"{project.Apply(getProjectResult =\u003e getProjectResult.Name)}/default\" },\n },\n });\n\n var secureTagValue1 = new Gcp.Tags.TagValue(\"secure_tag_value_1\", new()\n {\n Description = \"Tag value\",\n Parent = secureTagKey1.Name.Apply(name =\u003e $\"tagKeys/{name}\"),\n ShortName = \"tf-tag-value\",\n });\n\n var securityProfile1 = new Gcp.NetworkSecurity.SecurityProfile(\"security_profile_1\", new()\n {\n Name = \"tf-security-profile\",\n Type = \"THREAT_PREVENTION\",\n Parent = \"organizations/123456789\",\n Location = \"global\",\n });\n\n var securityProfileGroup1 = new Gcp.NetworkSecurity.SecurityProfileGroup(\"security_profile_group_1\", new()\n {\n Name = \"tf-security-profile-group\",\n Parent = \"organizations/123456789\",\n Description = \"my description\",\n ThreatPreventionProfile = securityProfile1.Id,\n });\n\n var network_firewall_policy_with_rules = new Gcp.Compute.NetworkFirewallPolicyWithRules(\"network-firewall-policy-with-rules\", new()\n {\n Name = \"tf-fw-policy-with-rules\",\n Description = \"Terraform test\",\n Rules = new[]\n {\n new Gcp.Compute.Inputs.NetworkFirewallPolicyWithRulesRuleArgs\n {\n Description = \"tcp rule\",\n Priority = 1000,\n EnableLogging = true,\n Action = \"allow\",\n Direction = \"EGRESS\",\n Match = new Gcp.Compute.Inputs.NetworkFirewallPolicyWithRulesRuleMatchArgs\n {\n Layer4Configs = new[]\n {\n new Gcp.Compute.Inputs.NetworkFirewallPolicyWithRulesRuleMatchLayer4ConfigArgs\n {\n IpProtocol = \"tcp\",\n Ports = new[]\n {\n \"8080\",\n \"7070\",\n },\n },\n },\n DestIpRanges = new[]\n {\n \"11.100.0.1/32\",\n },\n DestFqdns = new[]\n {\n \"www.yyy.com\",\n \"www.zzz.com\",\n },\n DestRegionCodes = new[]\n {\n \"HK\",\n \"IN\",\n },\n DestThreatIntelligences = new[]\n {\n \"iplist-search-engines-crawlers\",\n \"iplist-tor-exit-nodes\",\n },\n DestAddressGroups = new[]\n {\n addressGroup1.Id,\n },\n },\n TargetSecureTags = new[]\n {\n new Gcp.Compute.Inputs.NetworkFirewallPolicyWithRulesRuleTargetSecureTagArgs\n {\n Name = secureTagValue1.Name.Apply(name =\u003e $\"tagValues/{name}\"),\n },\n },\n },\n new Gcp.Compute.Inputs.NetworkFirewallPolicyWithRulesRuleArgs\n {\n Description = \"udp rule\",\n Priority = 2000,\n EnableLogging = false,\n Action = \"deny\",\n Direction = \"INGRESS\",\n Match = new Gcp.Compute.Inputs.NetworkFirewallPolicyWithRulesRuleMatchArgs\n {\n Layer4Configs = new[]\n {\n new Gcp.Compute.Inputs.NetworkFirewallPolicyWithRulesRuleMatchLayer4ConfigArgs\n {\n IpProtocol = \"udp\",\n },\n },\n SrcIpRanges = new[]\n {\n \"0.0.0.0/0\",\n },\n SrcFqdns = new[]\n {\n \"www.abc.com\",\n \"www.def.com\",\n },\n SrcRegionCodes = new[]\n {\n \"US\",\n \"CA\",\n },\n SrcThreatIntelligences = new[]\n {\n \"iplist-known-malicious-ips\",\n \"iplist-public-clouds\",\n },\n SrcAddressGroups = new[]\n {\n addressGroup1.Id,\n },\n SrcSecureTags = new[]\n {\n new Gcp.Compute.Inputs.NetworkFirewallPolicyWithRulesRuleMatchSrcSecureTagArgs\n {\n Name = secureTagValue1.Name.Apply(name =\u003e $\"tagValues/{name}\"),\n },\n },\n },\n Disabled = true,\n },\n new Gcp.Compute.Inputs.NetworkFirewallPolicyWithRulesRuleArgs\n {\n Description = \"security profile group rule\",\n RuleName = \"tcp rule\",\n Priority = 3000,\n EnableLogging = false,\n Action = \"apply_security_profile_group\",\n Direction = \"INGRESS\",\n Match = new Gcp.Compute.Inputs.NetworkFirewallPolicyWithRulesRuleMatchArgs\n {\n Layer4Configs = new[]\n {\n new Gcp.Compute.Inputs.NetworkFirewallPolicyWithRulesRuleMatchLayer4ConfigArgs\n {\n IpProtocol = \"tcp\",\n },\n },\n SrcIpRanges = new[]\n {\n \"0.0.0.0/0\",\n },\n },\n TargetServiceAccounts = new[]\n {\n \"test@google.com\",\n },\n SecurityProfileGroup = securityProfileGroup1.Id.Apply(id =\u003e $\"//networksecurity.googleapis.com/{id}\"),\n TlsInspect = true,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/tags\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taddressGroup1, err := networksecurity.NewAddressGroup(ctx, \"address_group_1\", \u0026networksecurity.AddressGroupArgs{\n\t\t\tName: pulumi.String(\"tf-address-group\"),\n\t\t\tParent: pulumi.Sprintf(\"projects/%v\", project.Name),\n\t\t\tDescription: pulumi.String(\"Global address group\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tItems: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"208.80.154.224/32\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"IPV4\"),\n\t\t\tCapacity: pulumi.Int(100),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecureTagKey1, err := tags.NewTagKey(ctx, \"secure_tag_key_1\", \u0026tags.TagKeyArgs{\n\t\t\tDescription: pulumi.String(\"Tag key\"),\n\t\t\tParent: pulumi.Sprintf(\"projects/%v\", project.Name),\n\t\t\tPurpose: pulumi.String(\"GCE_FIREWALL\"),\n\t\t\tShortName: pulumi.String(\"tf-tag-key\"),\n\t\t\tPurposeData: pulumi.StringMap{\n\t\t\t\t\"network\": pulumi.Sprintf(\"%v/default\", project.Name),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecureTagValue1, err := tags.NewTagValue(ctx, \"secure_tag_value_1\", \u0026tags.TagValueArgs{\n\t\t\tDescription: pulumi.String(\"Tag value\"),\n\t\t\tParent: secureTagKey1.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"tagKeys/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tShortName: pulumi.String(\"tf-tag-value\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecurityProfile1, err := networksecurity.NewSecurityProfile(ctx, \"security_profile_1\", \u0026networksecurity.SecurityProfileArgs{\n\t\t\tName: pulumi.String(\"tf-security-profile\"),\n\t\t\tType: pulumi.String(\"THREAT_PREVENTION\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecurityProfileGroup1, err := networksecurity.NewSecurityProfileGroup(ctx, \"security_profile_group_1\", \u0026networksecurity.SecurityProfileGroupArgs{\n\t\t\tName: pulumi.String(\"tf-security-profile-group\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tThreatPreventionProfile: securityProfile1.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetworkFirewallPolicyWithRules(ctx, \"network-firewall-policy-with-rules\", \u0026compute.NetworkFirewallPolicyWithRulesArgs{\n\t\t\tName: pulumi.String(\"tf-fw-policy-with-rules\"),\n\t\t\tDescription: pulumi.String(\"Terraform test\"),\n\t\t\tRules: compute.NetworkFirewallPolicyWithRulesRuleArray{\n\t\t\t\t\u0026compute.NetworkFirewallPolicyWithRulesRuleArgs{\n\t\t\t\t\tDescription: pulumi.String(\"tcp rule\"),\n\t\t\t\t\tPriority: pulumi.Int(1000),\n\t\t\t\t\tEnableLogging: pulumi.Bool(true),\n\t\t\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\t\t\tDirection: pulumi.String(\"EGRESS\"),\n\t\t\t\t\tMatch: \u0026compute.NetworkFirewallPolicyWithRulesRuleMatchArgs{\n\t\t\t\t\t\tLayer4Configs: compute.NetworkFirewallPolicyWithRulesRuleMatchLayer4ConfigArray{\n\t\t\t\t\t\t\t\u0026compute.NetworkFirewallPolicyWithRulesRuleMatchLayer4ConfigArgs{\n\t\t\t\t\t\t\t\tIpProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t\t\t\t\tPorts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"8080\"),\n\t\t\t\t\t\t\t\t\tpulumi.String(\"7070\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDestIpRanges: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"11.100.0.1/32\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDestFqdns: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"www.yyy.com\"),\n\t\t\t\t\t\t\tpulumi.String(\"www.zzz.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDestRegionCodes: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"HK\"),\n\t\t\t\t\t\t\tpulumi.String(\"IN\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDestThreatIntelligences: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"iplist-search-engines-crawlers\"),\n\t\t\t\t\t\t\tpulumi.String(\"iplist-tor-exit-nodes\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDestAddressGroups: pulumi.StringArray{\n\t\t\t\t\t\t\taddressGroup1.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tTargetSecureTags: compute.NetworkFirewallPolicyWithRulesRuleTargetSecureTagArray{\n\t\t\t\t\t\t\u0026compute.NetworkFirewallPolicyWithRulesRuleTargetSecureTagArgs{\n\t\t\t\t\t\t\tName: secureTagValue1.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\t\t\treturn fmt.Sprintf(\"tagValues/%v\", name), nil\n\t\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026compute.NetworkFirewallPolicyWithRulesRuleArgs{\n\t\t\t\t\tDescription: pulumi.String(\"udp rule\"),\n\t\t\t\t\tPriority: pulumi.Int(2000),\n\t\t\t\t\tEnableLogging: pulumi.Bool(false),\n\t\t\t\t\tAction: pulumi.String(\"deny\"),\n\t\t\t\t\tDirection: pulumi.String(\"INGRESS\"),\n\t\t\t\t\tMatch: \u0026compute.NetworkFirewallPolicyWithRulesRuleMatchArgs{\n\t\t\t\t\t\tLayer4Configs: compute.NetworkFirewallPolicyWithRulesRuleMatchLayer4ConfigArray{\n\t\t\t\t\t\t\t\u0026compute.NetworkFirewallPolicyWithRulesRuleMatchLayer4ConfigArgs{\n\t\t\t\t\t\t\t\tIpProtocol: pulumi.String(\"udp\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"0.0.0.0/0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSrcFqdns: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"www.abc.com\"),\n\t\t\t\t\t\t\tpulumi.String(\"www.def.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSrcRegionCodes: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"US\"),\n\t\t\t\t\t\t\tpulumi.String(\"CA\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSrcThreatIntelligences: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"iplist-known-malicious-ips\"),\n\t\t\t\t\t\t\tpulumi.String(\"iplist-public-clouds\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSrcAddressGroups: pulumi.StringArray{\n\t\t\t\t\t\t\taddressGroup1.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSrcSecureTags: compute.NetworkFirewallPolicyWithRulesRuleMatchSrcSecureTagArray{\n\t\t\t\t\t\t\t\u0026compute.NetworkFirewallPolicyWithRulesRuleMatchSrcSecureTagArgs{\n\t\t\t\t\t\t\t\tName: secureTagValue1.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\t\t\t\treturn fmt.Sprintf(\"tagValues/%v\", name), nil\n\t\t\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tDisabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\t\u0026compute.NetworkFirewallPolicyWithRulesRuleArgs{\n\t\t\t\t\tDescription: pulumi.String(\"security profile group rule\"),\n\t\t\t\t\tRuleName: pulumi.String(\"tcp rule\"),\n\t\t\t\t\tPriority: pulumi.Int(3000),\n\t\t\t\t\tEnableLogging: pulumi.Bool(false),\n\t\t\t\t\tAction: pulumi.String(\"apply_security_profile_group\"),\n\t\t\t\t\tDirection: pulumi.String(\"INGRESS\"),\n\t\t\t\t\tMatch: \u0026compute.NetworkFirewallPolicyWithRulesRuleMatchArgs{\n\t\t\t\t\t\tLayer4Configs: compute.NetworkFirewallPolicyWithRulesRuleMatchLayer4ConfigArray{\n\t\t\t\t\t\t\t\u0026compute.NetworkFirewallPolicyWithRulesRuleMatchLayer4ConfigArgs{\n\t\t\t\t\t\t\t\tIpProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"0.0.0.0/0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tTargetServiceAccounts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"test@google.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tSecurityProfileGroup: securityProfileGroup1.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"//networksecurity.googleapis.com/%v\", id), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\tTlsInspect: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.networksecurity.AddressGroup;\nimport com.pulumi.gcp.networksecurity.AddressGroupArgs;\nimport com.pulumi.gcp.tags.TagKey;\nimport com.pulumi.gcp.tags.TagKeyArgs;\nimport com.pulumi.gcp.tags.TagValue;\nimport com.pulumi.gcp.tags.TagValueArgs;\nimport com.pulumi.gcp.networksecurity.SecurityProfile;\nimport com.pulumi.gcp.networksecurity.SecurityProfileArgs;\nimport com.pulumi.gcp.networksecurity.SecurityProfileGroup;\nimport com.pulumi.gcp.networksecurity.SecurityProfileGroupArgs;\nimport com.pulumi.gcp.compute.NetworkFirewallPolicyWithRules;\nimport com.pulumi.gcp.compute.NetworkFirewallPolicyWithRulesArgs;\nimport com.pulumi.gcp.compute.inputs.NetworkFirewallPolicyWithRulesRuleArgs;\nimport com.pulumi.gcp.compute.inputs.NetworkFirewallPolicyWithRulesRuleMatchArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var addressGroup1 = new AddressGroup(\"addressGroup1\", AddressGroupArgs.builder()\n .name(\"tf-address-group\")\n .parent(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.name())))\n .description(\"Global address group\")\n .location(\"global\")\n .items(\"208.80.154.224/32\")\n .type(\"IPV4\")\n .capacity(100)\n .build());\n\n var secureTagKey1 = new TagKey(\"secureTagKey1\", TagKeyArgs.builder()\n .description(\"Tag key\")\n .parent(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.name())))\n .purpose(\"GCE_FIREWALL\")\n .shortName(\"tf-tag-key\")\n .purposeData(Map.of(\"network\", String.format(\"%s/default\", project.applyValue(getProjectResult -\u003e getProjectResult.name()))))\n .build());\n\n var secureTagValue1 = new TagValue(\"secureTagValue1\", TagValueArgs.builder()\n .description(\"Tag value\")\n .parent(secureTagKey1.name().applyValue(name -\u003e String.format(\"tagKeys/%s\", name)))\n .shortName(\"tf-tag-value\")\n .build());\n\n var securityProfile1 = new SecurityProfile(\"securityProfile1\", SecurityProfileArgs.builder()\n .name(\"tf-security-profile\")\n .type(\"THREAT_PREVENTION\")\n .parent(\"organizations/123456789\")\n .location(\"global\")\n .build());\n\n var securityProfileGroup1 = new SecurityProfileGroup(\"securityProfileGroup1\", SecurityProfileGroupArgs.builder()\n .name(\"tf-security-profile-group\")\n .parent(\"organizations/123456789\")\n .description(\"my description\")\n .threatPreventionProfile(securityProfile1.id())\n .build());\n\n var network_firewall_policy_with_rules = new NetworkFirewallPolicyWithRules(\"network-firewall-policy-with-rules\", NetworkFirewallPolicyWithRulesArgs.builder()\n .name(\"tf-fw-policy-with-rules\")\n .description(\"Terraform test\")\n .rules( \n NetworkFirewallPolicyWithRulesRuleArgs.builder()\n .description(\"tcp rule\")\n .priority(1000)\n .enableLogging(true)\n .action(\"allow\")\n .direction(\"EGRESS\")\n .match(NetworkFirewallPolicyWithRulesRuleMatchArgs.builder()\n .layer4Configs(NetworkFirewallPolicyWithRulesRuleMatchLayer4ConfigArgs.builder()\n .ipProtocol(\"tcp\")\n .ports( \n 8080,\n 7070)\n .build())\n .destIpRanges(\"11.100.0.1/32\")\n .destFqdns( \n \"www.yyy.com\",\n \"www.zzz.com\")\n .destRegionCodes( \n \"HK\",\n \"IN\")\n .destThreatIntelligences( \n \"iplist-search-engines-crawlers\",\n \"iplist-tor-exit-nodes\")\n .destAddressGroups(addressGroup1.id())\n .build())\n .targetSecureTags(NetworkFirewallPolicyWithRulesRuleTargetSecureTagArgs.builder()\n .name(secureTagValue1.name().applyValue(name -\u003e String.format(\"tagValues/%s\", name)))\n .build())\n .build(),\n NetworkFirewallPolicyWithRulesRuleArgs.builder()\n .description(\"udp rule\")\n .priority(2000)\n .enableLogging(false)\n .action(\"deny\")\n .direction(\"INGRESS\")\n .match(NetworkFirewallPolicyWithRulesRuleMatchArgs.builder()\n .layer4Configs(NetworkFirewallPolicyWithRulesRuleMatchLayer4ConfigArgs.builder()\n .ipProtocol(\"udp\")\n .build())\n .srcIpRanges(\"0.0.0.0/0\")\n .srcFqdns( \n \"www.abc.com\",\n \"www.def.com\")\n .srcRegionCodes( \n \"US\",\n \"CA\")\n .srcThreatIntelligences( \n \"iplist-known-malicious-ips\",\n \"iplist-public-clouds\")\n .srcAddressGroups(addressGroup1.id())\n .srcSecureTags(NetworkFirewallPolicyWithRulesRuleMatchSrcSecureTagArgs.builder()\n .name(secureTagValue1.name().applyValue(name -\u003e String.format(\"tagValues/%s\", name)))\n .build())\n .build())\n .disabled(true)\n .build(),\n NetworkFirewallPolicyWithRulesRuleArgs.builder()\n .description(\"security profile group rule\")\n .ruleName(\"tcp rule\")\n .priority(3000)\n .enableLogging(false)\n .action(\"apply_security_profile_group\")\n .direction(\"INGRESS\")\n .match(NetworkFirewallPolicyWithRulesRuleMatchArgs.builder()\n .layer4Configs(NetworkFirewallPolicyWithRulesRuleMatchLayer4ConfigArgs.builder()\n .ipProtocol(\"tcp\")\n .build())\n .srcIpRanges(\"0.0.0.0/0\")\n .build())\n .targetServiceAccounts(\"test@google.com\")\n .securityProfileGroup(securityProfileGroup1.id().applyValue(id -\u003e String.format(\"//networksecurity.googleapis.com/%s\", id)))\n .tlsInspect(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network-firewall-policy-with-rules:\n type: gcp:compute:NetworkFirewallPolicyWithRules\n properties:\n name: tf-fw-policy-with-rules\n description: Terraform test\n rules:\n - description: tcp rule\n priority: 1000\n enableLogging: true\n action: allow\n direction: EGRESS\n match:\n layer4Configs:\n - ipProtocol: tcp\n ports:\n - 8080\n - 7070\n destIpRanges:\n - 11.100.0.1/32\n destFqdns:\n - www.yyy.com\n - www.zzz.com\n destRegionCodes:\n - HK\n - IN\n destThreatIntelligences:\n - iplist-search-engines-crawlers\n - iplist-tor-exit-nodes\n destAddressGroups:\n - ${addressGroup1.id}\n targetSecureTags:\n - name: tagValues/${secureTagValue1.name}\n - description: udp rule\n priority: 2000\n enableLogging: false\n action: deny\n direction: INGRESS\n match:\n layer4Configs:\n - ipProtocol: udp\n srcIpRanges:\n - 0.0.0.0/0\n srcFqdns:\n - www.abc.com\n - www.def.com\n srcRegionCodes:\n - US\n - CA\n srcThreatIntelligences:\n - iplist-known-malicious-ips\n - iplist-public-clouds\n srcAddressGroups:\n - ${addressGroup1.id}\n srcSecureTags:\n - name: tagValues/${secureTagValue1.name}\n disabled: true\n - description: security profile group rule\n ruleName: tcp rule\n priority: 3000\n enableLogging: false\n action: apply_security_profile_group\n direction: INGRESS\n match:\n layer4Configs:\n - ipProtocol: tcp\n srcIpRanges:\n - 0.0.0.0/0\n targetServiceAccounts:\n - test@google.com\n securityProfileGroup: //networksecurity.googleapis.com/${securityProfileGroup1.id}\n tlsInspect: true\n addressGroup1:\n type: gcp:networksecurity:AddressGroup\n name: address_group_1\n properties:\n name: tf-address-group\n parent: projects/${project.name}\n description: Global address group\n location: global\n items:\n - 208.80.154.224/32\n type: IPV4\n capacity: 100\n secureTagKey1:\n type: gcp:tags:TagKey\n name: secure_tag_key_1\n properties:\n description: Tag key\n parent: projects/${project.name}\n purpose: GCE_FIREWALL\n shortName: tf-tag-key\n purposeData:\n network: ${project.name}/default\n secureTagValue1:\n type: gcp:tags:TagValue\n name: secure_tag_value_1\n properties:\n description: Tag value\n parent: tagKeys/${secureTagKey1.name}\n shortName: tf-tag-value\n securityProfileGroup1:\n type: gcp:networksecurity:SecurityProfileGroup\n name: security_profile_group_1\n properties:\n name: tf-security-profile-group\n parent: organizations/123456789\n description: my description\n threatPreventionProfile: ${securityProfile1.id}\n securityProfile1:\n type: gcp:networksecurity:SecurityProfile\n name: security_profile_1\n properties:\n name: tf-security-profile\n type: THREAT_PREVENTION\n parent: organizations/123456789\n location: global\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNetworkFirewallPolicyWithRules can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/firewallPolicies/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, NetworkFirewallPolicyWithRules can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/networkFirewallPolicyWithRules:NetworkFirewallPolicyWithRules default projects/{{project}}/global/firewallPolicies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkFirewallPolicyWithRules:NetworkFirewallPolicyWithRules default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkFirewallPolicyWithRules:NetworkFirewallPolicyWithRules default {{name}}\n```\n\n", "properties": { "creationTimestamp": { "type": "string", @@ -159231,7 +159231,7 @@ } }, "gcp:compute/networkPeeringRoutesConfig:NetworkPeeringRoutesConfig": { - "description": "Manage a network peering's route settings without managing the peering as\na whole. This resource is primarily intended for use with GCP-generated\npeerings that shouldn't otherwise be managed by other tools. Deleting this\nresource is a no-op and the peering will not be modified.\n\n\nTo get more information about NetworkPeeringRoutesConfig, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/networks/updatePeering)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/vpc/docs/vpc-peering)\n\n## Example Usage\n\n### Network Peering Routes Config Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst networkPrimary = new gcp.compute.Network(\"network_primary\", {\n name: \"primary-network\",\n autoCreateSubnetworks: false,\n});\nconst networkSecondary = new gcp.compute.Network(\"network_secondary\", {\n name: \"secondary-network\",\n autoCreateSubnetworks: false,\n});\nconst peeringPrimary = new gcp.compute.NetworkPeering(\"peering_primary\", {\n name: \"primary-peering\",\n network: networkPrimary.id,\n peerNetwork: networkSecondary.id,\n importCustomRoutes: true,\n exportCustomRoutes: true,\n});\nconst peeringPrimaryRoutes = new gcp.compute.NetworkPeeringRoutesConfig(\"peering_primary_routes\", {\n peering: peeringPrimary.name,\n network: networkPrimary.name,\n importCustomRoutes: true,\n exportCustomRoutes: true,\n});\nconst peeringSecondary = new gcp.compute.NetworkPeering(\"peering_secondary\", {\n name: \"secondary-peering\",\n network: networkSecondary.id,\n peerNetwork: networkPrimary.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork_primary = gcp.compute.Network(\"network_primary\",\n name=\"primary-network\",\n auto_create_subnetworks=False)\nnetwork_secondary = gcp.compute.Network(\"network_secondary\",\n name=\"secondary-network\",\n auto_create_subnetworks=False)\npeering_primary = gcp.compute.NetworkPeering(\"peering_primary\",\n name=\"primary-peering\",\n network=network_primary.id,\n peer_network=network_secondary.id,\n import_custom_routes=True,\n export_custom_routes=True)\npeering_primary_routes = gcp.compute.NetworkPeeringRoutesConfig(\"peering_primary_routes\",\n peering=peering_primary.name,\n network=network_primary.name,\n import_custom_routes=True,\n export_custom_routes=True)\npeering_secondary = gcp.compute.NetworkPeering(\"peering_secondary\",\n name=\"secondary-peering\",\n network=network_secondary.id,\n peer_network=network_primary.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var networkPrimary = new Gcp.Compute.Network(\"network_primary\", new()\n {\n Name = \"primary-network\",\n AutoCreateSubnetworks = false,\n });\n\n var networkSecondary = new Gcp.Compute.Network(\"network_secondary\", new()\n {\n Name = \"secondary-network\",\n AutoCreateSubnetworks = false,\n });\n\n var peeringPrimary = new Gcp.Compute.NetworkPeering(\"peering_primary\", new()\n {\n Name = \"primary-peering\",\n Network = networkPrimary.Id,\n PeerNetwork = networkSecondary.Id,\n ImportCustomRoutes = true,\n ExportCustomRoutes = true,\n });\n\n var peeringPrimaryRoutes = new Gcp.Compute.NetworkPeeringRoutesConfig(\"peering_primary_routes\", new()\n {\n Peering = peeringPrimary.Name,\n Network = networkPrimary.Name,\n ImportCustomRoutes = true,\n ExportCustomRoutes = true,\n });\n\n var peeringSecondary = new Gcp.Compute.NetworkPeering(\"peering_secondary\", new()\n {\n Name = \"secondary-peering\",\n Network = networkSecondary.Id,\n PeerNetwork = networkPrimary.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tnetworkPrimary, err := compute.NewNetwork(ctx, \"network_primary\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"primary-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetworkSecondary, err := compute.NewNetwork(ctx, \"network_secondary\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"secondary-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpeeringPrimary, err := compute.NewNetworkPeering(ctx, \"peering_primary\", \u0026compute.NetworkPeeringArgs{\n\t\t\tName: pulumi.String(\"primary-peering\"),\n\t\t\tNetwork: networkPrimary.ID(),\n\t\t\tPeerNetwork: networkSecondary.ID(),\n\t\t\tImportCustomRoutes: pulumi.Bool(true),\n\t\t\tExportCustomRoutes: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetworkPeeringRoutesConfig(ctx, \"peering_primary_routes\", \u0026compute.NetworkPeeringRoutesConfigArgs{\n\t\t\tPeering: peeringPrimary.Name,\n\t\t\tNetwork: networkPrimary.Name,\n\t\t\tImportCustomRoutes: pulumi.Bool(true),\n\t\t\tExportCustomRoutes: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetworkPeering(ctx, \"peering_secondary\", \u0026compute.NetworkPeeringArgs{\n\t\t\tName: pulumi.String(\"secondary-peering\"),\n\t\t\tNetwork: networkSecondary.ID(),\n\t\t\tPeerNetwork: networkPrimary.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.NetworkPeering;\nimport com.pulumi.gcp.compute.NetworkPeeringArgs;\nimport com.pulumi.gcp.compute.NetworkPeeringRoutesConfig;\nimport com.pulumi.gcp.compute.NetworkPeeringRoutesConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var networkPrimary = new Network(\"networkPrimary\", NetworkArgs.builder()\n .name(\"primary-network\")\n .autoCreateSubnetworks(\"false\")\n .build());\n\n var networkSecondary = new Network(\"networkSecondary\", NetworkArgs.builder()\n .name(\"secondary-network\")\n .autoCreateSubnetworks(\"false\")\n .build());\n\n var peeringPrimary = new NetworkPeering(\"peeringPrimary\", NetworkPeeringArgs.builder()\n .name(\"primary-peering\")\n .network(networkPrimary.id())\n .peerNetwork(networkSecondary.id())\n .importCustomRoutes(true)\n .exportCustomRoutes(true)\n .build());\n\n var peeringPrimaryRoutes = new NetworkPeeringRoutesConfig(\"peeringPrimaryRoutes\", NetworkPeeringRoutesConfigArgs.builder()\n .peering(peeringPrimary.name())\n .network(networkPrimary.name())\n .importCustomRoutes(true)\n .exportCustomRoutes(true)\n .build());\n\n var peeringSecondary = new NetworkPeering(\"peeringSecondary\", NetworkPeeringArgs.builder()\n .name(\"secondary-peering\")\n .network(networkSecondary.id())\n .peerNetwork(networkPrimary.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n peeringPrimaryRoutes:\n type: gcp:compute:NetworkPeeringRoutesConfig\n name: peering_primary_routes\n properties:\n peering: ${peeringPrimary.name}\n network: ${networkPrimary.name}\n importCustomRoutes: true\n exportCustomRoutes: true\n peeringPrimary:\n type: gcp:compute:NetworkPeering\n name: peering_primary\n properties:\n name: primary-peering\n network: ${networkPrimary.id}\n peerNetwork: ${networkSecondary.id}\n importCustomRoutes: true\n exportCustomRoutes: true\n peeringSecondary:\n type: gcp:compute:NetworkPeering\n name: peering_secondary\n properties:\n name: secondary-peering\n network: ${networkSecondary.id}\n peerNetwork: ${networkPrimary.id}\n networkPrimary:\n type: gcp:compute:Network\n name: network_primary\n properties:\n name: primary-network\n autoCreateSubnetworks: 'false'\n networkSecondary:\n type: gcp:compute:Network\n name: network_secondary\n properties:\n name: secondary-network\n autoCreateSubnetworks: 'false'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Peering Routes Config Gke\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst containerNetwork = new gcp.compute.Network(\"container_network\", {\n name: \"container-network\",\n autoCreateSubnetworks: false,\n});\nconst containerSubnetwork = new gcp.compute.Subnetwork(\"container_subnetwork\", {\n name: \"container-subnetwork\",\n region: \"us-central1\",\n network: containerNetwork.name,\n ipCidrRange: \"10.0.36.0/24\",\n privateIpGoogleAccess: true,\n secondaryIpRanges: [\n {\n rangeName: \"pod\",\n ipCidrRange: \"10.0.0.0/19\",\n },\n {\n rangeName: \"svc\",\n ipCidrRange: \"10.0.32.0/22\",\n },\n ],\n});\nconst privateCluster = new gcp.container.Cluster(\"private_cluster\", {\n name: \"private-cluster\",\n location: \"us-central1-a\",\n initialNodeCount: 1,\n network: containerNetwork.name,\n subnetwork: containerSubnetwork.name,\n privateClusterConfig: {\n enablePrivateEndpoint: true,\n enablePrivateNodes: true,\n masterIpv4CidrBlock: \"10.42.0.0/28\",\n },\n masterAuthorizedNetworksConfig: {},\n ipAllocationPolicy: {\n clusterSecondaryRangeName: containerSubnetwork.secondaryIpRanges.apply(secondaryIpRanges =\u003e secondaryIpRanges[0].rangeName),\n servicesSecondaryRangeName: containerSubnetwork.secondaryIpRanges.apply(secondaryIpRanges =\u003e secondaryIpRanges[1].rangeName),\n },\n deletionProtection: true,\n});\nconst peeringGkeRoutes = new gcp.compute.NetworkPeeringRoutesConfig(\"peering_gke_routes\", {\n peering: privateCluster.privateClusterConfig.apply(privateClusterConfig =\u003e privateClusterConfig.peeringName),\n network: containerNetwork.name,\n importCustomRoutes: true,\n exportCustomRoutes: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncontainer_network = gcp.compute.Network(\"container_network\",\n name=\"container-network\",\n auto_create_subnetworks=False)\ncontainer_subnetwork = gcp.compute.Subnetwork(\"container_subnetwork\",\n name=\"container-subnetwork\",\n region=\"us-central1\",\n network=container_network.name,\n ip_cidr_range=\"10.0.36.0/24\",\n private_ip_google_access=True,\n secondary_ip_ranges=[\n {\n \"range_name\": \"pod\",\n \"ip_cidr_range\": \"10.0.0.0/19\",\n },\n {\n \"range_name\": \"svc\",\n \"ip_cidr_range\": \"10.0.32.0/22\",\n },\n ])\nprivate_cluster = gcp.container.Cluster(\"private_cluster\",\n name=\"private-cluster\",\n location=\"us-central1-a\",\n initial_node_count=1,\n network=container_network.name,\n subnetwork=container_subnetwork.name,\n private_cluster_config={\n \"enable_private_endpoint\": True,\n \"enable_private_nodes\": True,\n \"master_ipv4_cidr_block\": \"10.42.0.0/28\",\n },\n master_authorized_networks_config={},\n ip_allocation_policy={\n \"cluster_secondary_range_name\": container_subnetwork.secondary_ip_ranges[0].range_name,\n \"services_secondary_range_name\": container_subnetwork.secondary_ip_ranges[1].range_name,\n },\n deletion_protection=True)\npeering_gke_routes = gcp.compute.NetworkPeeringRoutesConfig(\"peering_gke_routes\",\n peering=private_cluster.private_cluster_config.peering_name,\n network=container_network.name,\n import_custom_routes=True,\n export_custom_routes=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var containerNetwork = new Gcp.Compute.Network(\"container_network\", new()\n {\n Name = \"container-network\",\n AutoCreateSubnetworks = false,\n });\n\n var containerSubnetwork = new Gcp.Compute.Subnetwork(\"container_subnetwork\", new()\n {\n Name = \"container-subnetwork\",\n Region = \"us-central1\",\n Network = containerNetwork.Name,\n IpCidrRange = \"10.0.36.0/24\",\n PrivateIpGoogleAccess = true,\n SecondaryIpRanges = new[]\n {\n new Gcp.Compute.Inputs.SubnetworkSecondaryIpRangeArgs\n {\n RangeName = \"pod\",\n IpCidrRange = \"10.0.0.0/19\",\n },\n new Gcp.Compute.Inputs.SubnetworkSecondaryIpRangeArgs\n {\n RangeName = \"svc\",\n IpCidrRange = \"10.0.32.0/22\",\n },\n },\n });\n\n var privateCluster = new Gcp.Container.Cluster(\"private_cluster\", new()\n {\n Name = \"private-cluster\",\n Location = \"us-central1-a\",\n InitialNodeCount = 1,\n Network = containerNetwork.Name,\n Subnetwork = containerSubnetwork.Name,\n PrivateClusterConfig = new Gcp.Container.Inputs.ClusterPrivateClusterConfigArgs\n {\n EnablePrivateEndpoint = true,\n EnablePrivateNodes = true,\n MasterIpv4CidrBlock = \"10.42.0.0/28\",\n },\n MasterAuthorizedNetworksConfig = null,\n IpAllocationPolicy = new Gcp.Container.Inputs.ClusterIpAllocationPolicyArgs\n {\n ClusterSecondaryRangeName = containerSubnetwork.SecondaryIpRanges.Apply(secondaryIpRanges =\u003e secondaryIpRanges[0].RangeName),\n ServicesSecondaryRangeName = containerSubnetwork.SecondaryIpRanges.Apply(secondaryIpRanges =\u003e secondaryIpRanges[1].RangeName),\n },\n DeletionProtection = true,\n });\n\n var peeringGkeRoutes = new Gcp.Compute.NetworkPeeringRoutesConfig(\"peering_gke_routes\", new()\n {\n Peering = privateCluster.PrivateClusterConfig.Apply(privateClusterConfig =\u003e privateClusterConfig.PeeringName),\n Network = containerNetwork.Name,\n ImportCustomRoutes = true,\n ExportCustomRoutes = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcontainerNetwork, err := compute.NewNetwork(ctx, \"container_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"container-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcontainerSubnetwork, err := compute.NewSubnetwork(ctx, \"container_subnetwork\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"container-subnetwork\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: containerNetwork.Name,\n\t\t\tIpCidrRange: pulumi.String(\"10.0.36.0/24\"),\n\t\t\tPrivateIpGoogleAccess: pulumi.Bool(true),\n\t\t\tSecondaryIpRanges: compute.SubnetworkSecondaryIpRangeArray{\n\t\t\t\t\u0026compute.SubnetworkSecondaryIpRangeArgs{\n\t\t\t\t\tRangeName: pulumi.String(\"pod\"),\n\t\t\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/19\"),\n\t\t\t\t},\n\t\t\t\t\u0026compute.SubnetworkSecondaryIpRangeArgs{\n\t\t\t\t\tRangeName: pulumi.String(\"svc\"),\n\t\t\t\t\tIpCidrRange: pulumi.String(\"10.0.32.0/22\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateCluster, err := container.NewCluster(ctx, \"private_cluster\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"private-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tNetwork: containerNetwork.Name,\n\t\t\tSubnetwork: containerSubnetwork.Name,\n\t\t\tPrivateClusterConfig: \u0026container.ClusterPrivateClusterConfigArgs{\n\t\t\t\tEnablePrivateEndpoint: pulumi.Bool(true),\n\t\t\t\tEnablePrivateNodes: pulumi.Bool(true),\n\t\t\t\tMasterIpv4CidrBlock: pulumi.String(\"10.42.0.0/28\"),\n\t\t\t},\n\t\t\tMasterAuthorizedNetworksConfig: nil,\n\t\t\tIpAllocationPolicy: \u0026container.ClusterIpAllocationPolicyArgs{\n\t\t\t\tClusterSecondaryRangeName: containerSubnetwork.SecondaryIpRanges.ApplyT(func(secondaryIpRanges []compute.SubnetworkSecondaryIpRange) (*string, error) {\n\t\t\t\t\treturn \u0026secondaryIpRanges[0].RangeName, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tServicesSecondaryRangeName: containerSubnetwork.SecondaryIpRanges.ApplyT(func(secondaryIpRanges []compute.SubnetworkSecondaryIpRange) (*string, error) {\n\t\t\t\t\treturn \u0026secondaryIpRanges[1].RangeName, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetworkPeeringRoutesConfig(ctx, \"peering_gke_routes\", \u0026compute.NetworkPeeringRoutesConfigArgs{\n\t\t\tPeering: pulumi.String(privateCluster.PrivateClusterConfig.ApplyT(func(privateClusterConfig container.ClusterPrivateClusterConfig) (*string, error) {\n\t\t\t\treturn \u0026privateClusterConfig.PeeringName, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tNetwork: containerNetwork.Name,\n\t\t\tImportCustomRoutes: pulumi.Bool(true),\n\t\t\tExportCustomRoutes: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.inputs.SubnetworkSecondaryIpRangeArgs;\nimport com.pulumi.gcp.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterPrivateClusterConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterMasterAuthorizedNetworksConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterIpAllocationPolicyArgs;\nimport com.pulumi.gcp.compute.NetworkPeeringRoutesConfig;\nimport com.pulumi.gcp.compute.NetworkPeeringRoutesConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var containerNetwork = new Network(\"containerNetwork\", NetworkArgs.builder()\n .name(\"container-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var containerSubnetwork = new Subnetwork(\"containerSubnetwork\", SubnetworkArgs.builder()\n .name(\"container-subnetwork\")\n .region(\"us-central1\")\n .network(containerNetwork.name())\n .ipCidrRange(\"10.0.36.0/24\")\n .privateIpGoogleAccess(true)\n .secondaryIpRanges( \n SubnetworkSecondaryIpRangeArgs.builder()\n .rangeName(\"pod\")\n .ipCidrRange(\"10.0.0.0/19\")\n .build(),\n SubnetworkSecondaryIpRangeArgs.builder()\n .rangeName(\"svc\")\n .ipCidrRange(\"10.0.32.0/22\")\n .build())\n .build());\n\n var privateCluster = new Cluster(\"privateCluster\", ClusterArgs.builder()\n .name(\"private-cluster\")\n .location(\"us-central1-a\")\n .initialNodeCount(1)\n .network(containerNetwork.name())\n .subnetwork(containerSubnetwork.name())\n .privateClusterConfig(ClusterPrivateClusterConfigArgs.builder()\n .enablePrivateEndpoint(true)\n .enablePrivateNodes(true)\n .masterIpv4CidrBlock(\"10.42.0.0/28\")\n .build())\n .masterAuthorizedNetworksConfig()\n .ipAllocationPolicy(ClusterIpAllocationPolicyArgs.builder()\n .clusterSecondaryRangeName(containerSubnetwork.secondaryIpRanges().applyValue(secondaryIpRanges -\u003e secondaryIpRanges[0].rangeName()))\n .servicesSecondaryRangeName(containerSubnetwork.secondaryIpRanges().applyValue(secondaryIpRanges -\u003e secondaryIpRanges[1].rangeName()))\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var peeringGkeRoutes = new NetworkPeeringRoutesConfig(\"peeringGkeRoutes\", NetworkPeeringRoutesConfigArgs.builder()\n .peering(privateCluster.privateClusterConfig().applyValue(privateClusterConfig -\u003e privateClusterConfig.peeringName()))\n .network(containerNetwork.name())\n .importCustomRoutes(true)\n .exportCustomRoutes(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n peeringGkeRoutes:\n type: gcp:compute:NetworkPeeringRoutesConfig\n name: peering_gke_routes\n properties:\n peering: ${privateCluster.privateClusterConfig.peeringName}\n network: ${containerNetwork.name}\n importCustomRoutes: true\n exportCustomRoutes: true\n containerNetwork:\n type: gcp:compute:Network\n name: container_network\n properties:\n name: container-network\n autoCreateSubnetworks: false\n containerSubnetwork:\n type: gcp:compute:Subnetwork\n name: container_subnetwork\n properties:\n name: container-subnetwork\n region: us-central1\n network: ${containerNetwork.name}\n ipCidrRange: 10.0.36.0/24\n privateIpGoogleAccess: true\n secondaryIpRanges:\n - rangeName: pod\n ipCidrRange: 10.0.0.0/19\n - rangeName: svc\n ipCidrRange: 10.0.32.0/22\n privateCluster:\n type: gcp:container:Cluster\n name: private_cluster\n properties:\n name: private-cluster\n location: us-central1-a\n initialNodeCount: 1\n network: ${containerNetwork.name}\n subnetwork: ${containerSubnetwork.name}\n privateClusterConfig:\n enablePrivateEndpoint: true\n enablePrivateNodes: true\n masterIpv4CidrBlock: 10.42.0.0/28\n masterAuthorizedNetworksConfig: {}\n ipAllocationPolicy:\n clusterSecondaryRangeName: ${containerSubnetwork.secondaryIpRanges[0].rangeName}\n servicesSecondaryRangeName: ${containerSubnetwork.secondaryIpRanges[1].rangeName}\n deletionProtection: 'true'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNetworkPeeringRoutesConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/networks/{{network}}/networkPeerings/{{peering}}`\n\n* `{{project}}/{{network}}/{{peering}}`\n\n* `{{network}}/{{peering}}`\n\nWhen using the `pulumi import` command, NetworkPeeringRoutesConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/networkPeeringRoutesConfig:NetworkPeeringRoutesConfig default projects/{{project}}/global/networks/{{network}}/networkPeerings/{{peering}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkPeeringRoutesConfig:NetworkPeeringRoutesConfig default {{project}}/{{network}}/{{peering}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkPeeringRoutesConfig:NetworkPeeringRoutesConfig default {{network}}/{{peering}}\n```\n\n", + "description": "Manage a network peering's route settings without managing the peering as\na whole. This resource is primarily intended for use with GCP-generated\npeerings that shouldn't otherwise be managed by other tools. Deleting this\nresource is a no-op and the peering will not be modified.\n\n\nTo get more information about NetworkPeeringRoutesConfig, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/networks/updatePeering)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/vpc/docs/vpc-peering)\n\n## Example Usage\n\n### Network Peering Routes Config Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst networkPrimary = new gcp.compute.Network(\"network_primary\", {\n name: \"primary-network\",\n autoCreateSubnetworks: false,\n});\nconst networkSecondary = new gcp.compute.Network(\"network_secondary\", {\n name: \"secondary-network\",\n autoCreateSubnetworks: false,\n});\nconst peeringPrimary = new gcp.compute.NetworkPeering(\"peering_primary\", {\n name: \"primary-peering\",\n network: networkPrimary.id,\n peerNetwork: networkSecondary.id,\n importCustomRoutes: true,\n exportCustomRoutes: true,\n});\nconst peeringPrimaryRoutes = new gcp.compute.NetworkPeeringRoutesConfig(\"peering_primary_routes\", {\n peering: peeringPrimary.name,\n network: networkPrimary.name,\n importCustomRoutes: true,\n exportCustomRoutes: true,\n});\nconst peeringSecondary = new gcp.compute.NetworkPeering(\"peering_secondary\", {\n name: \"secondary-peering\",\n network: networkSecondary.id,\n peerNetwork: networkPrimary.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork_primary = gcp.compute.Network(\"network_primary\",\n name=\"primary-network\",\n auto_create_subnetworks=False)\nnetwork_secondary = gcp.compute.Network(\"network_secondary\",\n name=\"secondary-network\",\n auto_create_subnetworks=False)\npeering_primary = gcp.compute.NetworkPeering(\"peering_primary\",\n name=\"primary-peering\",\n network=network_primary.id,\n peer_network=network_secondary.id,\n import_custom_routes=True,\n export_custom_routes=True)\npeering_primary_routes = gcp.compute.NetworkPeeringRoutesConfig(\"peering_primary_routes\",\n peering=peering_primary.name,\n network=network_primary.name,\n import_custom_routes=True,\n export_custom_routes=True)\npeering_secondary = gcp.compute.NetworkPeering(\"peering_secondary\",\n name=\"secondary-peering\",\n network=network_secondary.id,\n peer_network=network_primary.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var networkPrimary = new Gcp.Compute.Network(\"network_primary\", new()\n {\n Name = \"primary-network\",\n AutoCreateSubnetworks = false,\n });\n\n var networkSecondary = new Gcp.Compute.Network(\"network_secondary\", new()\n {\n Name = \"secondary-network\",\n AutoCreateSubnetworks = false,\n });\n\n var peeringPrimary = new Gcp.Compute.NetworkPeering(\"peering_primary\", new()\n {\n Name = \"primary-peering\",\n Network = networkPrimary.Id,\n PeerNetwork = networkSecondary.Id,\n ImportCustomRoutes = true,\n ExportCustomRoutes = true,\n });\n\n var peeringPrimaryRoutes = new Gcp.Compute.NetworkPeeringRoutesConfig(\"peering_primary_routes\", new()\n {\n Peering = peeringPrimary.Name,\n Network = networkPrimary.Name,\n ImportCustomRoutes = true,\n ExportCustomRoutes = true,\n });\n\n var peeringSecondary = new Gcp.Compute.NetworkPeering(\"peering_secondary\", new()\n {\n Name = \"secondary-peering\",\n Network = networkSecondary.Id,\n PeerNetwork = networkPrimary.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tnetworkPrimary, err := compute.NewNetwork(ctx, \"network_primary\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"primary-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetworkSecondary, err := compute.NewNetwork(ctx, \"network_secondary\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"secondary-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpeeringPrimary, err := compute.NewNetworkPeering(ctx, \"peering_primary\", \u0026compute.NetworkPeeringArgs{\n\t\t\tName: pulumi.String(\"primary-peering\"),\n\t\t\tNetwork: networkPrimary.ID(),\n\t\t\tPeerNetwork: networkSecondary.ID(),\n\t\t\tImportCustomRoutes: pulumi.Bool(true),\n\t\t\tExportCustomRoutes: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetworkPeeringRoutesConfig(ctx, \"peering_primary_routes\", \u0026compute.NetworkPeeringRoutesConfigArgs{\n\t\t\tPeering: peeringPrimary.Name,\n\t\t\tNetwork: networkPrimary.Name,\n\t\t\tImportCustomRoutes: pulumi.Bool(true),\n\t\t\tExportCustomRoutes: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetworkPeering(ctx, \"peering_secondary\", \u0026compute.NetworkPeeringArgs{\n\t\t\tName: pulumi.String(\"secondary-peering\"),\n\t\t\tNetwork: networkSecondary.ID(),\n\t\t\tPeerNetwork: networkPrimary.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.NetworkPeering;\nimport com.pulumi.gcp.compute.NetworkPeeringArgs;\nimport com.pulumi.gcp.compute.NetworkPeeringRoutesConfig;\nimport com.pulumi.gcp.compute.NetworkPeeringRoutesConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var networkPrimary = new Network(\"networkPrimary\", NetworkArgs.builder()\n .name(\"primary-network\")\n .autoCreateSubnetworks(\"false\")\n .build());\n\n var networkSecondary = new Network(\"networkSecondary\", NetworkArgs.builder()\n .name(\"secondary-network\")\n .autoCreateSubnetworks(\"false\")\n .build());\n\n var peeringPrimary = new NetworkPeering(\"peeringPrimary\", NetworkPeeringArgs.builder()\n .name(\"primary-peering\")\n .network(networkPrimary.id())\n .peerNetwork(networkSecondary.id())\n .importCustomRoutes(true)\n .exportCustomRoutes(true)\n .build());\n\n var peeringPrimaryRoutes = new NetworkPeeringRoutesConfig(\"peeringPrimaryRoutes\", NetworkPeeringRoutesConfigArgs.builder()\n .peering(peeringPrimary.name())\n .network(networkPrimary.name())\n .importCustomRoutes(true)\n .exportCustomRoutes(true)\n .build());\n\n var peeringSecondary = new NetworkPeering(\"peeringSecondary\", NetworkPeeringArgs.builder()\n .name(\"secondary-peering\")\n .network(networkSecondary.id())\n .peerNetwork(networkPrimary.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n peeringPrimaryRoutes:\n type: gcp:compute:NetworkPeeringRoutesConfig\n name: peering_primary_routes\n properties:\n peering: ${peeringPrimary.name}\n network: ${networkPrimary.name}\n importCustomRoutes: true\n exportCustomRoutes: true\n peeringPrimary:\n type: gcp:compute:NetworkPeering\n name: peering_primary\n properties:\n name: primary-peering\n network: ${networkPrimary.id}\n peerNetwork: ${networkSecondary.id}\n importCustomRoutes: true\n exportCustomRoutes: true\n peeringSecondary:\n type: gcp:compute:NetworkPeering\n name: peering_secondary\n properties:\n name: secondary-peering\n network: ${networkSecondary.id}\n peerNetwork: ${networkPrimary.id}\n networkPrimary:\n type: gcp:compute:Network\n name: network_primary\n properties:\n name: primary-network\n autoCreateSubnetworks: 'false'\n networkSecondary:\n type: gcp:compute:Network\n name: network_secondary\n properties:\n name: secondary-network\n autoCreateSubnetworks: 'false'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Peering Routes Config Gke\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst containerNetwork = new gcp.compute.Network(\"container_network\", {\n name: \"container-network\",\n autoCreateSubnetworks: false,\n});\nconst containerSubnetwork = new gcp.compute.Subnetwork(\"container_subnetwork\", {\n name: \"container-subnetwork\",\n region: \"us-central1\",\n network: containerNetwork.name,\n ipCidrRange: \"10.0.36.0/24\",\n privateIpGoogleAccess: true,\n secondaryIpRanges: [\n {\n rangeName: \"pod\",\n ipCidrRange: \"10.0.0.0/19\",\n },\n {\n rangeName: \"svc\",\n ipCidrRange: \"10.0.32.0/22\",\n },\n ],\n});\nconst privateCluster = new gcp.container.Cluster(\"private_cluster\", {\n name: \"private-cluster\",\n location: \"us-central1-a\",\n initialNodeCount: 1,\n network: containerNetwork.name,\n subnetwork: containerSubnetwork.name,\n privateClusterConfig: {\n enablePrivateEndpoint: true,\n enablePrivateNodes: true,\n masterIpv4CidrBlock: \"10.42.0.0/28\",\n },\n masterAuthorizedNetworksConfig: {},\n ipAllocationPolicy: {\n clusterSecondaryRangeName: containerSubnetwork.secondaryIpRanges.apply(secondaryIpRanges =\u003e secondaryIpRanges[0].rangeName),\n servicesSecondaryRangeName: containerSubnetwork.secondaryIpRanges.apply(secondaryIpRanges =\u003e secondaryIpRanges[1].rangeName),\n },\n deletionProtection: true,\n});\nconst peeringGkeRoutes = new gcp.compute.NetworkPeeringRoutesConfig(\"peering_gke_routes\", {\n peering: privateCluster.privateClusterConfig.apply(privateClusterConfig =\u003e privateClusterConfig.peeringName),\n network: containerNetwork.name,\n importCustomRoutes: true,\n exportCustomRoutes: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncontainer_network = gcp.compute.Network(\"container_network\",\n name=\"container-network\",\n auto_create_subnetworks=False)\ncontainer_subnetwork = gcp.compute.Subnetwork(\"container_subnetwork\",\n name=\"container-subnetwork\",\n region=\"us-central1\",\n network=container_network.name,\n ip_cidr_range=\"10.0.36.0/24\",\n private_ip_google_access=True,\n secondary_ip_ranges=[\n {\n \"range_name\": \"pod\",\n \"ip_cidr_range\": \"10.0.0.0/19\",\n },\n {\n \"range_name\": \"svc\",\n \"ip_cidr_range\": \"10.0.32.0/22\",\n },\n ])\nprivate_cluster = gcp.container.Cluster(\"private_cluster\",\n name=\"private-cluster\",\n location=\"us-central1-a\",\n initial_node_count=1,\n network=container_network.name,\n subnetwork=container_subnetwork.name,\n private_cluster_config={\n \"enable_private_endpoint\": True,\n \"enable_private_nodes\": True,\n \"master_ipv4_cidr_block\": \"10.42.0.0/28\",\n },\n master_authorized_networks_config={},\n ip_allocation_policy={\n \"cluster_secondary_range_name\": container_subnetwork.secondary_ip_ranges[0].range_name,\n \"services_secondary_range_name\": container_subnetwork.secondary_ip_ranges[1].range_name,\n },\n deletion_protection=True)\npeering_gke_routes = gcp.compute.NetworkPeeringRoutesConfig(\"peering_gke_routes\",\n peering=private_cluster.private_cluster_config.peering_name,\n network=container_network.name,\n import_custom_routes=True,\n export_custom_routes=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var containerNetwork = new Gcp.Compute.Network(\"container_network\", new()\n {\n Name = \"container-network\",\n AutoCreateSubnetworks = false,\n });\n\n var containerSubnetwork = new Gcp.Compute.Subnetwork(\"container_subnetwork\", new()\n {\n Name = \"container-subnetwork\",\n Region = \"us-central1\",\n Network = containerNetwork.Name,\n IpCidrRange = \"10.0.36.0/24\",\n PrivateIpGoogleAccess = true,\n SecondaryIpRanges = new[]\n {\n new Gcp.Compute.Inputs.SubnetworkSecondaryIpRangeArgs\n {\n RangeName = \"pod\",\n IpCidrRange = \"10.0.0.0/19\",\n },\n new Gcp.Compute.Inputs.SubnetworkSecondaryIpRangeArgs\n {\n RangeName = \"svc\",\n IpCidrRange = \"10.0.32.0/22\",\n },\n },\n });\n\n var privateCluster = new Gcp.Container.Cluster(\"private_cluster\", new()\n {\n Name = \"private-cluster\",\n Location = \"us-central1-a\",\n InitialNodeCount = 1,\n Network = containerNetwork.Name,\n Subnetwork = containerSubnetwork.Name,\n PrivateClusterConfig = new Gcp.Container.Inputs.ClusterPrivateClusterConfigArgs\n {\n EnablePrivateEndpoint = true,\n EnablePrivateNodes = true,\n MasterIpv4CidrBlock = \"10.42.0.0/28\",\n },\n MasterAuthorizedNetworksConfig = null,\n IpAllocationPolicy = new Gcp.Container.Inputs.ClusterIpAllocationPolicyArgs\n {\n ClusterSecondaryRangeName = containerSubnetwork.SecondaryIpRanges.Apply(secondaryIpRanges =\u003e secondaryIpRanges[0].RangeName),\n ServicesSecondaryRangeName = containerSubnetwork.SecondaryIpRanges.Apply(secondaryIpRanges =\u003e secondaryIpRanges[1].RangeName),\n },\n DeletionProtection = true,\n });\n\n var peeringGkeRoutes = new Gcp.Compute.NetworkPeeringRoutesConfig(\"peering_gke_routes\", new()\n {\n Peering = privateCluster.PrivateClusterConfig.Apply(privateClusterConfig =\u003e privateClusterConfig.PeeringName),\n Network = containerNetwork.Name,\n ImportCustomRoutes = true,\n ExportCustomRoutes = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcontainerNetwork, err := compute.NewNetwork(ctx, \"container_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"container-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcontainerSubnetwork, err := compute.NewSubnetwork(ctx, \"container_subnetwork\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"container-subnetwork\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: containerNetwork.Name,\n\t\t\tIpCidrRange: pulumi.String(\"10.0.36.0/24\"),\n\t\t\tPrivateIpGoogleAccess: pulumi.Bool(true),\n\t\t\tSecondaryIpRanges: compute.SubnetworkSecondaryIpRangeArray{\n\t\t\t\t\u0026compute.SubnetworkSecondaryIpRangeArgs{\n\t\t\t\t\tRangeName: pulumi.String(\"pod\"),\n\t\t\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/19\"),\n\t\t\t\t},\n\t\t\t\t\u0026compute.SubnetworkSecondaryIpRangeArgs{\n\t\t\t\t\tRangeName: pulumi.String(\"svc\"),\n\t\t\t\t\tIpCidrRange: pulumi.String(\"10.0.32.0/22\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateCluster, err := container.NewCluster(ctx, \"private_cluster\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"private-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tNetwork: containerNetwork.Name,\n\t\t\tSubnetwork: containerSubnetwork.Name,\n\t\t\tPrivateClusterConfig: \u0026container.ClusterPrivateClusterConfigArgs{\n\t\t\t\tEnablePrivateEndpoint: pulumi.Bool(true),\n\t\t\t\tEnablePrivateNodes: pulumi.Bool(true),\n\t\t\t\tMasterIpv4CidrBlock: pulumi.String(\"10.42.0.0/28\"),\n\t\t\t},\n\t\t\tMasterAuthorizedNetworksConfig: \u0026container.ClusterMasterAuthorizedNetworksConfigArgs{},\n\t\t\tIpAllocationPolicy: \u0026container.ClusterIpAllocationPolicyArgs{\n\t\t\t\tClusterSecondaryRangeName: containerSubnetwork.SecondaryIpRanges.ApplyT(func(secondaryIpRanges []compute.SubnetworkSecondaryIpRange) (*string, error) {\n\t\t\t\t\treturn \u0026secondaryIpRanges[0].RangeName, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tServicesSecondaryRangeName: containerSubnetwork.SecondaryIpRanges.ApplyT(func(secondaryIpRanges []compute.SubnetworkSecondaryIpRange) (*string, error) {\n\t\t\t\t\treturn \u0026secondaryIpRanges[1].RangeName, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetworkPeeringRoutesConfig(ctx, \"peering_gke_routes\", \u0026compute.NetworkPeeringRoutesConfigArgs{\n\t\t\tPeering: pulumi.String(privateCluster.PrivateClusterConfig.ApplyT(func(privateClusterConfig container.ClusterPrivateClusterConfig) (*string, error) {\n\t\t\t\treturn \u0026privateClusterConfig.PeeringName, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tNetwork: containerNetwork.Name,\n\t\t\tImportCustomRoutes: pulumi.Bool(true),\n\t\t\tExportCustomRoutes: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.inputs.SubnetworkSecondaryIpRangeArgs;\nimport com.pulumi.gcp.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterPrivateClusterConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterMasterAuthorizedNetworksConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterIpAllocationPolicyArgs;\nimport com.pulumi.gcp.compute.NetworkPeeringRoutesConfig;\nimport com.pulumi.gcp.compute.NetworkPeeringRoutesConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var containerNetwork = new Network(\"containerNetwork\", NetworkArgs.builder()\n .name(\"container-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var containerSubnetwork = new Subnetwork(\"containerSubnetwork\", SubnetworkArgs.builder()\n .name(\"container-subnetwork\")\n .region(\"us-central1\")\n .network(containerNetwork.name())\n .ipCidrRange(\"10.0.36.0/24\")\n .privateIpGoogleAccess(true)\n .secondaryIpRanges( \n SubnetworkSecondaryIpRangeArgs.builder()\n .rangeName(\"pod\")\n .ipCidrRange(\"10.0.0.0/19\")\n .build(),\n SubnetworkSecondaryIpRangeArgs.builder()\n .rangeName(\"svc\")\n .ipCidrRange(\"10.0.32.0/22\")\n .build())\n .build());\n\n var privateCluster = new Cluster(\"privateCluster\", ClusterArgs.builder()\n .name(\"private-cluster\")\n .location(\"us-central1-a\")\n .initialNodeCount(1)\n .network(containerNetwork.name())\n .subnetwork(containerSubnetwork.name())\n .privateClusterConfig(ClusterPrivateClusterConfigArgs.builder()\n .enablePrivateEndpoint(true)\n .enablePrivateNodes(true)\n .masterIpv4CidrBlock(\"10.42.0.0/28\")\n .build())\n .masterAuthorizedNetworksConfig()\n .ipAllocationPolicy(ClusterIpAllocationPolicyArgs.builder()\n .clusterSecondaryRangeName(containerSubnetwork.secondaryIpRanges().applyValue(secondaryIpRanges -\u003e secondaryIpRanges[0].rangeName()))\n .servicesSecondaryRangeName(containerSubnetwork.secondaryIpRanges().applyValue(secondaryIpRanges -\u003e secondaryIpRanges[1].rangeName()))\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var peeringGkeRoutes = new NetworkPeeringRoutesConfig(\"peeringGkeRoutes\", NetworkPeeringRoutesConfigArgs.builder()\n .peering(privateCluster.privateClusterConfig().applyValue(privateClusterConfig -\u003e privateClusterConfig.peeringName()))\n .network(containerNetwork.name())\n .importCustomRoutes(true)\n .exportCustomRoutes(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n peeringGkeRoutes:\n type: gcp:compute:NetworkPeeringRoutesConfig\n name: peering_gke_routes\n properties:\n peering: ${privateCluster.privateClusterConfig.peeringName}\n network: ${containerNetwork.name}\n importCustomRoutes: true\n exportCustomRoutes: true\n containerNetwork:\n type: gcp:compute:Network\n name: container_network\n properties:\n name: container-network\n autoCreateSubnetworks: false\n containerSubnetwork:\n type: gcp:compute:Subnetwork\n name: container_subnetwork\n properties:\n name: container-subnetwork\n region: us-central1\n network: ${containerNetwork.name}\n ipCidrRange: 10.0.36.0/24\n privateIpGoogleAccess: true\n secondaryIpRanges:\n - rangeName: pod\n ipCidrRange: 10.0.0.0/19\n - rangeName: svc\n ipCidrRange: 10.0.32.0/22\n privateCluster:\n type: gcp:container:Cluster\n name: private_cluster\n properties:\n name: private-cluster\n location: us-central1-a\n initialNodeCount: 1\n network: ${containerNetwork.name}\n subnetwork: ${containerSubnetwork.name}\n privateClusterConfig:\n enablePrivateEndpoint: true\n enablePrivateNodes: true\n masterIpv4CidrBlock: 10.42.0.0/28\n masterAuthorizedNetworksConfig: {}\n ipAllocationPolicy:\n clusterSecondaryRangeName: ${containerSubnetwork.secondaryIpRanges[0].rangeName}\n servicesSecondaryRangeName: ${containerSubnetwork.secondaryIpRanges[1].rangeName}\n deletionProtection: 'true'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNetworkPeeringRoutesConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/networks/{{network}}/networkPeerings/{{peering}}`\n\n* `{{project}}/{{network}}/{{peering}}`\n\n* `{{network}}/{{peering}}`\n\nWhen using the `pulumi import` command, NetworkPeeringRoutesConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/networkPeeringRoutesConfig:NetworkPeeringRoutesConfig default projects/{{project}}/global/networks/{{network}}/networkPeerings/{{peering}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkPeeringRoutesConfig:NetworkPeeringRoutesConfig default {{project}}/{{network}}/{{peering}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkPeeringRoutesConfig:NetworkPeeringRoutesConfig default {{network}}/{{peering}}\n```\n\n", "properties": { "exportCustomRoutes": { "type": "boolean", @@ -160033,7 +160033,7 @@ } }, "gcp:compute/packetMirroring:PacketMirroring": { - "description": "Packet Mirroring mirrors traffic to and from particular VM instances.\nYou can use the collected traffic to help you detect security threats\nand monitor application performance.\n\n\nTo get more information about PacketMirroring, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/packetMirrorings)\n* How-to Guides\n * [Using Packet Mirroring](https://cloud.google.com/vpc/docs/using-packet-mirroring#creating)\n\n## Example Usage\n\n### Compute Packet Mirroring Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {name: \"my-network\"});\nconst mirror = new gcp.compute.Instance(\"mirror\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n network: _default.id,\n }],\n name: \"my-instance\",\n machineType: \"e2-medium\",\n bootDisk: {\n initializeParams: {\n image: \"debian-cloud/debian-11\",\n },\n },\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"my-subnetwork\",\n network: _default.id,\n ipCidrRange: \"10.2.0.0/16\",\n});\nconst defaultHealthCheck = new gcp.compute.HealthCheck(\"default\", {\n name: \"my-healthcheck\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n});\nconst defaultRegionBackendService = new gcp.compute.RegionBackendService(\"default\", {\n name: \"my-service\",\n healthChecks: defaultHealthCheck.id,\n});\nconst defaultForwardingRule = new gcp.compute.ForwardingRule(\"default\", {\n name: \"my-ilb\",\n isMirroringCollector: true,\n ipProtocol: \"TCP\",\n loadBalancingScheme: \"INTERNAL\",\n backendService: defaultRegionBackendService.id,\n allPorts: true,\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n networkTier: \"PREMIUM\",\n}, {\n dependsOn: [defaultSubnetwork],\n});\nconst foobar = new gcp.compute.PacketMirroring(\"foobar\", {\n name: \"my-mirroring\",\n description: \"bar\",\n network: {\n url: _default.id,\n },\n collectorIlb: {\n url: defaultForwardingRule.id,\n },\n mirroredResources: {\n tags: [\"foo\"],\n instances: [{\n url: mirror.id,\n }],\n },\n filter: {\n ipProtocols: [\"tcp\"],\n cidrRanges: [\"0.0.0.0/0\"],\n direction: \"BOTH\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\", name=\"my-network\")\nmirror = gcp.compute.Instance(\"mirror\",\n network_interfaces=[{\n \"access_configs\": [{}],\n \"network\": default.id,\n }],\n name=\"my-instance\",\n machine_type=\"e2-medium\",\n boot_disk={\n \"initialize_params\": {\n \"image\": \"debian-cloud/debian-11\",\n },\n })\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"my-subnetwork\",\n network=default.id,\n ip_cidr_range=\"10.2.0.0/16\")\ndefault_health_check = gcp.compute.HealthCheck(\"default\",\n name=\"my-healthcheck\",\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 80,\n })\ndefault_region_backend_service = gcp.compute.RegionBackendService(\"default\",\n name=\"my-service\",\n health_checks=default_health_check.id)\ndefault_forwarding_rule = gcp.compute.ForwardingRule(\"default\",\n name=\"my-ilb\",\n is_mirroring_collector=True,\n ip_protocol=\"TCP\",\n load_balancing_scheme=\"INTERNAL\",\n backend_service=default_region_backend_service.id,\n all_ports=True,\n network=default.id,\n subnetwork=default_subnetwork.id,\n network_tier=\"PREMIUM\",\n opts = pulumi.ResourceOptions(depends_on=[default_subnetwork]))\nfoobar = gcp.compute.PacketMirroring(\"foobar\",\n name=\"my-mirroring\",\n description=\"bar\",\n network={\n \"url\": default.id,\n },\n collector_ilb={\n \"url\": default_forwarding_rule.id,\n },\n mirrored_resources={\n \"tags\": [\"foo\"],\n \"instances\": [{\n \"url\": mirror.id,\n }],\n },\n filter={\n \"ip_protocols\": [\"tcp\"],\n \"cidr_ranges\": [\"0.0.0.0/0\"],\n \"direction\": \"BOTH\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"my-network\",\n });\n\n var mirror = new Gcp.Compute.Instance(\"mirror\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Network = @default.Id,\n },\n },\n Name = \"my-instance\",\n MachineType = \"e2-medium\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = \"debian-cloud/debian-11\",\n },\n },\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"my-subnetwork\",\n Network = @default.Id,\n IpCidrRange = \"10.2.0.0/16\",\n });\n\n var defaultHealthCheck = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"my-healthcheck\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var defaultRegionBackendService = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n Name = \"my-service\",\n HealthChecks = defaultHealthCheck.Id,\n });\n\n var defaultForwardingRule = new Gcp.Compute.ForwardingRule(\"default\", new()\n {\n Name = \"my-ilb\",\n IsMirroringCollector = true,\n IpProtocol = \"TCP\",\n LoadBalancingScheme = \"INTERNAL\",\n BackendService = defaultRegionBackendService.Id,\n AllPorts = true,\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n NetworkTier = \"PREMIUM\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n defaultSubnetwork,\n },\n });\n\n var foobar = new Gcp.Compute.PacketMirroring(\"foobar\", new()\n {\n Name = \"my-mirroring\",\n Description = \"bar\",\n Network = new Gcp.Compute.Inputs.PacketMirroringNetworkArgs\n {\n Url = @default.Id,\n },\n CollectorIlb = new Gcp.Compute.Inputs.PacketMirroringCollectorIlbArgs\n {\n Url = defaultForwardingRule.Id,\n },\n MirroredResources = new Gcp.Compute.Inputs.PacketMirroringMirroredResourcesArgs\n {\n Tags = new[]\n {\n \"foo\",\n },\n Instances = new[]\n {\n new Gcp.Compute.Inputs.PacketMirroringMirroredResourcesInstanceArgs\n {\n Url = mirror.Id,\n },\n },\n },\n Filter = new Gcp.Compute.Inputs.PacketMirroringFilterArgs\n {\n IpProtocols = new[]\n {\n \"tcp\",\n },\n CidrRanges = new[]\n {\n \"0.0.0.0/0\",\n },\n Direction = \"BOTH\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmirror, err := compute.NewInstance(ctx, \"mirror\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tAccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{\n\t\t\t\t\t\tnil,\n\t\t\t\t\t},\n\t\t\t\t\tNetwork: _default.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(\"debian-cloud/debian-11\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"my-subnetwork\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.2.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHealthCheck, err := compute.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"my-healthcheck\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionBackendService, err := compute.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"my-service\"),\n\t\t\tHealthChecks: defaultHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultForwardingRule, err := compute.NewForwardingRule(ctx, \"default\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"my-ilb\"),\n\t\t\tIsMirroringCollector: pulumi.Bool(true),\n\t\t\tIpProtocol: pulumi.String(\"TCP\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL\"),\n\t\t\tBackendService: defaultRegionBackendService.ID(),\n\t\t\tAllPorts: pulumi.Bool(true),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tNetworkTier: pulumi.String(\"PREMIUM\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdefaultSubnetwork,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewPacketMirroring(ctx, \"foobar\", \u0026compute.PacketMirroringArgs{\n\t\t\tName: pulumi.String(\"my-mirroring\"),\n\t\t\tDescription: pulumi.String(\"bar\"),\n\t\t\tNetwork: \u0026compute.PacketMirroringNetworkArgs{\n\t\t\t\tUrl: _default.ID(),\n\t\t\t},\n\t\t\tCollectorIlb: \u0026compute.PacketMirroringCollectorIlbArgs{\n\t\t\t\tUrl: defaultForwardingRule.ID(),\n\t\t\t},\n\t\t\tMirroredResources: \u0026compute.PacketMirroringMirroredResourcesArgs{\n\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\t},\n\t\t\t\tInstances: compute.PacketMirroringMirroredResourcesInstanceArray{\n\t\t\t\t\t\u0026compute.PacketMirroringMirroredResourcesInstanceArgs{\n\t\t\t\t\t\tUrl: mirror.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tFilter: \u0026compute.PacketMirroringFilterArgs{\n\t\t\t\tIpProtocols: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"tcp\"),\n\t\t\t\t},\n\t\t\t\tCidrRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"0.0.0.0/0\"),\n\t\t\t\t},\n\t\t\t\tDirection: pulumi.String(\"BOTH\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckTcpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.gcp.compute.PacketMirroring;\nimport com.pulumi.gcp.compute.PacketMirroringArgs;\nimport com.pulumi.gcp.compute.inputs.PacketMirroringNetworkArgs;\nimport com.pulumi.gcp.compute.inputs.PacketMirroringCollectorIlbArgs;\nimport com.pulumi.gcp.compute.inputs.PacketMirroringMirroredResourcesArgs;\nimport com.pulumi.gcp.compute.inputs.PacketMirroringFilterArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"my-network\")\n .build());\n\n var mirror = new Instance(\"mirror\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .network(default_.id())\n .build())\n .name(\"my-instance\")\n .machineType(\"e2-medium\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(\"debian-cloud/debian-11\")\n .build())\n .build())\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"my-subnetwork\")\n .network(default_.id())\n .ipCidrRange(\"10.2.0.0/16\")\n .build());\n\n var defaultHealthCheck = new HealthCheck(\"defaultHealthCheck\", HealthCheckArgs.builder()\n .name(\"my-healthcheck\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build());\n\n var defaultRegionBackendService = new RegionBackendService(\"defaultRegionBackendService\", RegionBackendServiceArgs.builder()\n .name(\"my-service\")\n .healthChecks(defaultHealthCheck.id())\n .build());\n\n var defaultForwardingRule = new ForwardingRule(\"defaultForwardingRule\", ForwardingRuleArgs.builder()\n .name(\"my-ilb\")\n .isMirroringCollector(true)\n .ipProtocol(\"TCP\")\n .loadBalancingScheme(\"INTERNAL\")\n .backendService(defaultRegionBackendService.id())\n .allPorts(true)\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .networkTier(\"PREMIUM\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(defaultSubnetwork)\n .build());\n\n var foobar = new PacketMirroring(\"foobar\", PacketMirroringArgs.builder()\n .name(\"my-mirroring\")\n .description(\"bar\")\n .network(PacketMirroringNetworkArgs.builder()\n .url(default_.id())\n .build())\n .collectorIlb(PacketMirroringCollectorIlbArgs.builder()\n .url(defaultForwardingRule.id())\n .build())\n .mirroredResources(PacketMirroringMirroredResourcesArgs.builder()\n .tags(\"foo\")\n .instances(PacketMirroringMirroredResourcesInstanceArgs.builder()\n .url(mirror.id())\n .build())\n .build())\n .filter(PacketMirroringFilterArgs.builder()\n .ipProtocols(\"tcp\")\n .cidrRanges(\"0.0.0.0/0\")\n .direction(\"BOTH\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n mirror:\n type: gcp:compute:Instance\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n network: ${default.id}\n name: my-instance\n machineType: e2-medium\n bootDisk:\n initializeParams:\n image: debian-cloud/debian-11\n default:\n type: gcp:compute:Network\n properties:\n name: my-network\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: my-subnetwork\n network: ${default.id}\n ipCidrRange: 10.2.0.0/16\n defaultRegionBackendService:\n type: gcp:compute:RegionBackendService\n name: default\n properties:\n name: my-service\n healthChecks: ${defaultHealthCheck.id}\n defaultHealthCheck:\n type: gcp:compute:HealthCheck\n name: default\n properties:\n name: my-healthcheck\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n defaultForwardingRule:\n type: gcp:compute:ForwardingRule\n name: default\n properties:\n name: my-ilb\n isMirroringCollector: true\n ipProtocol: TCP\n loadBalancingScheme: INTERNAL\n backendService: ${defaultRegionBackendService.id}\n allPorts: true\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n networkTier: PREMIUM\n options:\n dependson:\n - ${defaultSubnetwork}\n foobar:\n type: gcp:compute:PacketMirroring\n properties:\n name: my-mirroring\n description: bar\n network:\n url: ${default.id}\n collectorIlb:\n url: ${defaultForwardingRule.id}\n mirroredResources:\n tags:\n - foo\n instances:\n - url: ${mirror.id}\n filter:\n ipProtocols:\n - tcp\n cidrRanges:\n - 0.0.0.0/0\n direction: BOTH\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPacketMirroring can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/packetMirrorings/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, PacketMirroring can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/packetMirroring:PacketMirroring default projects/{{project}}/regions/{{region}}/packetMirrorings/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/packetMirroring:PacketMirroring default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/packetMirroring:PacketMirroring default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/packetMirroring:PacketMirroring default {{name}}\n```\n\n", + "description": "Packet Mirroring mirrors traffic to and from particular VM instances.\nYou can use the collected traffic to help you detect security threats\nand monitor application performance.\n\n\nTo get more information about PacketMirroring, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/packetMirrorings)\n* How-to Guides\n * [Using Packet Mirroring](https://cloud.google.com/vpc/docs/using-packet-mirroring#creating)\n\n## Example Usage\n\n### Compute Packet Mirroring Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {name: \"my-network\"});\nconst mirror = new gcp.compute.Instance(\"mirror\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n network: _default.id,\n }],\n name: \"my-instance\",\n machineType: \"e2-medium\",\n bootDisk: {\n initializeParams: {\n image: \"debian-cloud/debian-11\",\n },\n },\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"my-subnetwork\",\n network: _default.id,\n ipCidrRange: \"10.2.0.0/16\",\n});\nconst defaultHealthCheck = new gcp.compute.HealthCheck(\"default\", {\n name: \"my-healthcheck\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n});\nconst defaultRegionBackendService = new gcp.compute.RegionBackendService(\"default\", {\n name: \"my-service\",\n healthChecks: defaultHealthCheck.id,\n});\nconst defaultForwardingRule = new gcp.compute.ForwardingRule(\"default\", {\n name: \"my-ilb\",\n isMirroringCollector: true,\n ipProtocol: \"TCP\",\n loadBalancingScheme: \"INTERNAL\",\n backendService: defaultRegionBackendService.id,\n allPorts: true,\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n networkTier: \"PREMIUM\",\n}, {\n dependsOn: [defaultSubnetwork],\n});\nconst foobar = new gcp.compute.PacketMirroring(\"foobar\", {\n name: \"my-mirroring\",\n description: \"bar\",\n network: {\n url: _default.id,\n },\n collectorIlb: {\n url: defaultForwardingRule.id,\n },\n mirroredResources: {\n tags: [\"foo\"],\n instances: [{\n url: mirror.id,\n }],\n },\n filter: {\n ipProtocols: [\"tcp\"],\n cidrRanges: [\"0.0.0.0/0\"],\n direction: \"BOTH\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\", name=\"my-network\")\nmirror = gcp.compute.Instance(\"mirror\",\n network_interfaces=[{\n \"access_configs\": [{}],\n \"network\": default.id,\n }],\n name=\"my-instance\",\n machine_type=\"e2-medium\",\n boot_disk={\n \"initialize_params\": {\n \"image\": \"debian-cloud/debian-11\",\n },\n })\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"my-subnetwork\",\n network=default.id,\n ip_cidr_range=\"10.2.0.0/16\")\ndefault_health_check = gcp.compute.HealthCheck(\"default\",\n name=\"my-healthcheck\",\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 80,\n })\ndefault_region_backend_service = gcp.compute.RegionBackendService(\"default\",\n name=\"my-service\",\n health_checks=default_health_check.id)\ndefault_forwarding_rule = gcp.compute.ForwardingRule(\"default\",\n name=\"my-ilb\",\n is_mirroring_collector=True,\n ip_protocol=\"TCP\",\n load_balancing_scheme=\"INTERNAL\",\n backend_service=default_region_backend_service.id,\n all_ports=True,\n network=default.id,\n subnetwork=default_subnetwork.id,\n network_tier=\"PREMIUM\",\n opts = pulumi.ResourceOptions(depends_on=[default_subnetwork]))\nfoobar = gcp.compute.PacketMirroring(\"foobar\",\n name=\"my-mirroring\",\n description=\"bar\",\n network={\n \"url\": default.id,\n },\n collector_ilb={\n \"url\": default_forwarding_rule.id,\n },\n mirrored_resources={\n \"tags\": [\"foo\"],\n \"instances\": [{\n \"url\": mirror.id,\n }],\n },\n filter={\n \"ip_protocols\": [\"tcp\"],\n \"cidr_ranges\": [\"0.0.0.0/0\"],\n \"direction\": \"BOTH\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"my-network\",\n });\n\n var mirror = new Gcp.Compute.Instance(\"mirror\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Network = @default.Id,\n },\n },\n Name = \"my-instance\",\n MachineType = \"e2-medium\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = \"debian-cloud/debian-11\",\n },\n },\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"my-subnetwork\",\n Network = @default.Id,\n IpCidrRange = \"10.2.0.0/16\",\n });\n\n var defaultHealthCheck = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"my-healthcheck\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var defaultRegionBackendService = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n Name = \"my-service\",\n HealthChecks = defaultHealthCheck.Id,\n });\n\n var defaultForwardingRule = new Gcp.Compute.ForwardingRule(\"default\", new()\n {\n Name = \"my-ilb\",\n IsMirroringCollector = true,\n IpProtocol = \"TCP\",\n LoadBalancingScheme = \"INTERNAL\",\n BackendService = defaultRegionBackendService.Id,\n AllPorts = true,\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n NetworkTier = \"PREMIUM\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n defaultSubnetwork,\n },\n });\n\n var foobar = new Gcp.Compute.PacketMirroring(\"foobar\", new()\n {\n Name = \"my-mirroring\",\n Description = \"bar\",\n Network = new Gcp.Compute.Inputs.PacketMirroringNetworkArgs\n {\n Url = @default.Id,\n },\n CollectorIlb = new Gcp.Compute.Inputs.PacketMirroringCollectorIlbArgs\n {\n Url = defaultForwardingRule.Id,\n },\n MirroredResources = new Gcp.Compute.Inputs.PacketMirroringMirroredResourcesArgs\n {\n Tags = new[]\n {\n \"foo\",\n },\n Instances = new[]\n {\n new Gcp.Compute.Inputs.PacketMirroringMirroredResourcesInstanceArgs\n {\n Url = mirror.Id,\n },\n },\n },\n Filter = new Gcp.Compute.Inputs.PacketMirroringFilterArgs\n {\n IpProtocols = new[]\n {\n \"tcp\",\n },\n CidrRanges = new[]\n {\n \"0.0.0.0/0\",\n },\n Direction = \"BOTH\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmirror, err := compute.NewInstance(ctx, \"mirror\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tAccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{\n\t\t\t\t\t\t\u0026compute.InstanceNetworkInterfaceAccessConfigArgs{},\n\t\t\t\t\t},\n\t\t\t\t\tNetwork: _default.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(\"debian-cloud/debian-11\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"my-subnetwork\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.2.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHealthCheck, err := compute.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"my-healthcheck\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionBackendService, err := compute.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"my-service\"),\n\t\t\tHealthChecks: defaultHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultForwardingRule, err := compute.NewForwardingRule(ctx, \"default\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"my-ilb\"),\n\t\t\tIsMirroringCollector: pulumi.Bool(true),\n\t\t\tIpProtocol: pulumi.String(\"TCP\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL\"),\n\t\t\tBackendService: defaultRegionBackendService.ID(),\n\t\t\tAllPorts: pulumi.Bool(true),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tNetworkTier: pulumi.String(\"PREMIUM\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdefaultSubnetwork,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewPacketMirroring(ctx, \"foobar\", \u0026compute.PacketMirroringArgs{\n\t\t\tName: pulumi.String(\"my-mirroring\"),\n\t\t\tDescription: pulumi.String(\"bar\"),\n\t\t\tNetwork: \u0026compute.PacketMirroringNetworkArgs{\n\t\t\t\tUrl: _default.ID(),\n\t\t\t},\n\t\t\tCollectorIlb: \u0026compute.PacketMirroringCollectorIlbArgs{\n\t\t\t\tUrl: defaultForwardingRule.ID(),\n\t\t\t},\n\t\t\tMirroredResources: \u0026compute.PacketMirroringMirroredResourcesArgs{\n\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\t},\n\t\t\t\tInstances: compute.PacketMirroringMirroredResourcesInstanceArray{\n\t\t\t\t\t\u0026compute.PacketMirroringMirroredResourcesInstanceArgs{\n\t\t\t\t\t\tUrl: mirror.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tFilter: \u0026compute.PacketMirroringFilterArgs{\n\t\t\t\tIpProtocols: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"tcp\"),\n\t\t\t\t},\n\t\t\t\tCidrRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"0.0.0.0/0\"),\n\t\t\t\t},\n\t\t\t\tDirection: pulumi.String(\"BOTH\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckTcpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.gcp.compute.PacketMirroring;\nimport com.pulumi.gcp.compute.PacketMirroringArgs;\nimport com.pulumi.gcp.compute.inputs.PacketMirroringNetworkArgs;\nimport com.pulumi.gcp.compute.inputs.PacketMirroringCollectorIlbArgs;\nimport com.pulumi.gcp.compute.inputs.PacketMirroringMirroredResourcesArgs;\nimport com.pulumi.gcp.compute.inputs.PacketMirroringFilterArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"my-network\")\n .build());\n\n var mirror = new Instance(\"mirror\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .network(default_.id())\n .build())\n .name(\"my-instance\")\n .machineType(\"e2-medium\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(\"debian-cloud/debian-11\")\n .build())\n .build())\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"my-subnetwork\")\n .network(default_.id())\n .ipCidrRange(\"10.2.0.0/16\")\n .build());\n\n var defaultHealthCheck = new HealthCheck(\"defaultHealthCheck\", HealthCheckArgs.builder()\n .name(\"my-healthcheck\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build());\n\n var defaultRegionBackendService = new RegionBackendService(\"defaultRegionBackendService\", RegionBackendServiceArgs.builder()\n .name(\"my-service\")\n .healthChecks(defaultHealthCheck.id())\n .build());\n\n var defaultForwardingRule = new ForwardingRule(\"defaultForwardingRule\", ForwardingRuleArgs.builder()\n .name(\"my-ilb\")\n .isMirroringCollector(true)\n .ipProtocol(\"TCP\")\n .loadBalancingScheme(\"INTERNAL\")\n .backendService(defaultRegionBackendService.id())\n .allPorts(true)\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .networkTier(\"PREMIUM\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(defaultSubnetwork)\n .build());\n\n var foobar = new PacketMirroring(\"foobar\", PacketMirroringArgs.builder()\n .name(\"my-mirroring\")\n .description(\"bar\")\n .network(PacketMirroringNetworkArgs.builder()\n .url(default_.id())\n .build())\n .collectorIlb(PacketMirroringCollectorIlbArgs.builder()\n .url(defaultForwardingRule.id())\n .build())\n .mirroredResources(PacketMirroringMirroredResourcesArgs.builder()\n .tags(\"foo\")\n .instances(PacketMirroringMirroredResourcesInstanceArgs.builder()\n .url(mirror.id())\n .build())\n .build())\n .filter(PacketMirroringFilterArgs.builder()\n .ipProtocols(\"tcp\")\n .cidrRanges(\"0.0.0.0/0\")\n .direction(\"BOTH\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n mirror:\n type: gcp:compute:Instance\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n network: ${default.id}\n name: my-instance\n machineType: e2-medium\n bootDisk:\n initializeParams:\n image: debian-cloud/debian-11\n default:\n type: gcp:compute:Network\n properties:\n name: my-network\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: my-subnetwork\n network: ${default.id}\n ipCidrRange: 10.2.0.0/16\n defaultRegionBackendService:\n type: gcp:compute:RegionBackendService\n name: default\n properties:\n name: my-service\n healthChecks: ${defaultHealthCheck.id}\n defaultHealthCheck:\n type: gcp:compute:HealthCheck\n name: default\n properties:\n name: my-healthcheck\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n defaultForwardingRule:\n type: gcp:compute:ForwardingRule\n name: default\n properties:\n name: my-ilb\n isMirroringCollector: true\n ipProtocol: TCP\n loadBalancingScheme: INTERNAL\n backendService: ${defaultRegionBackendService.id}\n allPorts: true\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n networkTier: PREMIUM\n options:\n dependson:\n - ${defaultSubnetwork}\n foobar:\n type: gcp:compute:PacketMirroring\n properties:\n name: my-mirroring\n description: bar\n network:\n url: ${default.id}\n collectorIlb:\n url: ${defaultForwardingRule.id}\n mirroredResources:\n tags:\n - foo\n instances:\n - url: ${mirror.id}\n filter:\n ipProtocols:\n - tcp\n cidrRanges:\n - 0.0.0.0/0\n direction: BOTH\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPacketMirroring can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/packetMirrorings/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, PacketMirroring can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/packetMirroring:PacketMirroring default projects/{{project}}/regions/{{region}}/packetMirrorings/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/packetMirroring:PacketMirroring default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/packetMirroring:PacketMirroring default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/packetMirroring:PacketMirroring default {{name}}\n```\n\n", "properties": { "collectorIlb": { "$ref": "#/types/gcp:compute/PacketMirroringCollectorIlb:PacketMirroringCollectorIlb", @@ -163866,7 +163866,7 @@ } }, "gcp:compute/regionNetworkEndpoint:RegionNetworkEndpoint": { - "description": "A Region network endpoint represents a IP address/FQDN and port combination that is\npart of a specific network endpoint group (NEG).\n\n\u003e **NOTE**: Network endpoints cannot be created outside of a network endpoint group.\n\n\nTo get more information about RegionNetworkEndpoint, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/beta/regionNetworkEndpointGroups)\n* How-to Guides\n * [Internet NEGs Official Documentation](https://cloud.google.com/load-balancing/docs/negs/internet-neg-concepts)\n * [Official Documentation](https://cloud.google.com/load-balancing/docs/negs/)\n\n## Example Usage\n\n### Region Network Endpoint Internet Ip Port\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"network\",\n autoCreateSubnetworks: false,\n});\nconst group = new gcp.compute.RegionNetworkEndpointGroup(\"group\", {\n name: \"ip-port-neg\",\n network: _default.id,\n region: \"us-central1\",\n networkEndpointType: \"INTERNET_IP_PORT\",\n});\nconst region_internet_ip_port_endpoint = new gcp.compute.RegionNetworkEndpoint(\"region-internet-ip-port-endpoint\", {\n regionNetworkEndpointGroup: group.name,\n region: \"us-central1\",\n ipAddress: \"8.8.8.8\",\n port: 443,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"network\",\n auto_create_subnetworks=False)\ngroup = gcp.compute.RegionNetworkEndpointGroup(\"group\",\n name=\"ip-port-neg\",\n network=default.id,\n region=\"us-central1\",\n network_endpoint_type=\"INTERNET_IP_PORT\")\nregion_internet_ip_port_endpoint = gcp.compute.RegionNetworkEndpoint(\"region-internet-ip-port-endpoint\",\n region_network_endpoint_group=group.name,\n region=\"us-central1\",\n ip_address=\"8.8.8.8\",\n port=443)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"network\",\n AutoCreateSubnetworks = false,\n });\n\n var @group = new Gcp.Compute.RegionNetworkEndpointGroup(\"group\", new()\n {\n Name = \"ip-port-neg\",\n Network = @default.Id,\n Region = \"us-central1\",\n NetworkEndpointType = \"INTERNET_IP_PORT\",\n });\n\n var region_internet_ip_port_endpoint = new Gcp.Compute.RegionNetworkEndpoint(\"region-internet-ip-port-endpoint\", new()\n {\n RegionNetworkEndpointGroup = @group.Name,\n Region = \"us-central1\",\n IpAddress = \"8.8.8.8\",\n Port = 443,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tgroup, err := compute.NewRegionNetworkEndpointGroup(ctx, \"group\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"ip-port-neg\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetworkEndpointType: pulumi.String(\"INTERNET_IP_PORT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionNetworkEndpoint(ctx, \"region-internet-ip-port-endpoint\", \u0026compute.RegionNetworkEndpointArgs{\n\t\t\tRegionNetworkEndpointGroup: group.Name,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpAddress: pulumi.String(\"8.8.8.8\"),\n\t\t\tPort: pulumi.Int(443),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroup;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroupArgs;\nimport com.pulumi.gcp.compute.RegionNetworkEndpoint;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var group = new RegionNetworkEndpointGroup(\"group\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"ip-port-neg\")\n .network(default_.id())\n .region(\"us-central1\")\n .networkEndpointType(\"INTERNET_IP_PORT\")\n .build());\n\n var region_internet_ip_port_endpoint = new RegionNetworkEndpoint(\"region-internet-ip-port-endpoint\", RegionNetworkEndpointArgs.builder()\n .regionNetworkEndpointGroup(group.name())\n .region(\"us-central1\")\n .ipAddress(\"8.8.8.8\")\n .port(443)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n region-internet-ip-port-endpoint:\n type: gcp:compute:RegionNetworkEndpoint\n properties:\n regionNetworkEndpointGroup: ${group.name}\n region: us-central1\n ipAddress: 8.8.8.8\n port: 443\n group:\n type: gcp:compute:RegionNetworkEndpointGroup\n properties:\n name: ip-port-neg\n network: ${default.id}\n region: us-central1\n networkEndpointType: INTERNET_IP_PORT\n default:\n type: gcp:compute:Network\n properties:\n name: network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Network Endpoint Internet Fqdn Port\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"network\",\n autoCreateSubnetworks: false,\n});\nconst group = new gcp.compute.RegionNetworkEndpointGroup(\"group\", {\n name: \"fqdn-port-neg\",\n network: _default.id,\n region: \"us-central1\",\n networkEndpointType: \"INTERNET_FQDN_PORT\",\n});\nconst region_internet_fqdn_port_endpoint = new gcp.compute.RegionNetworkEndpoint(\"region-internet-fqdn-port-endpoint\", {\n regionNetworkEndpointGroup: group.name,\n region: \"us-central1\",\n fqdn: \"backend.example.com\",\n port: 443,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"network\",\n auto_create_subnetworks=False)\ngroup = gcp.compute.RegionNetworkEndpointGroup(\"group\",\n name=\"fqdn-port-neg\",\n network=default.id,\n region=\"us-central1\",\n network_endpoint_type=\"INTERNET_FQDN_PORT\")\nregion_internet_fqdn_port_endpoint = gcp.compute.RegionNetworkEndpoint(\"region-internet-fqdn-port-endpoint\",\n region_network_endpoint_group=group.name,\n region=\"us-central1\",\n fqdn=\"backend.example.com\",\n port=443)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"network\",\n AutoCreateSubnetworks = false,\n });\n\n var @group = new Gcp.Compute.RegionNetworkEndpointGroup(\"group\", new()\n {\n Name = \"fqdn-port-neg\",\n Network = @default.Id,\n Region = \"us-central1\",\n NetworkEndpointType = \"INTERNET_FQDN_PORT\",\n });\n\n var region_internet_fqdn_port_endpoint = new Gcp.Compute.RegionNetworkEndpoint(\"region-internet-fqdn-port-endpoint\", new()\n {\n RegionNetworkEndpointGroup = @group.Name,\n Region = \"us-central1\",\n Fqdn = \"backend.example.com\",\n Port = 443,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tgroup, err := compute.NewRegionNetworkEndpointGroup(ctx, \"group\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"fqdn-port-neg\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetworkEndpointType: pulumi.String(\"INTERNET_FQDN_PORT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionNetworkEndpoint(ctx, \"region-internet-fqdn-port-endpoint\", \u0026compute.RegionNetworkEndpointArgs{\n\t\t\tRegionNetworkEndpointGroup: group.Name,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tFqdn: pulumi.String(\"backend.example.com\"),\n\t\t\tPort: pulumi.Int(443),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroup;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroupArgs;\nimport com.pulumi.gcp.compute.RegionNetworkEndpoint;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var group = new RegionNetworkEndpointGroup(\"group\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"fqdn-port-neg\")\n .network(default_.id())\n .region(\"us-central1\")\n .networkEndpointType(\"INTERNET_FQDN_PORT\")\n .build());\n\n var region_internet_fqdn_port_endpoint = new RegionNetworkEndpoint(\"region-internet-fqdn-port-endpoint\", RegionNetworkEndpointArgs.builder()\n .regionNetworkEndpointGroup(group.name())\n .region(\"us-central1\")\n .fqdn(\"backend.example.com\")\n .port(443)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n region-internet-fqdn-port-endpoint:\n type: gcp:compute:RegionNetworkEndpoint\n properties:\n regionNetworkEndpointGroup: ${group.name}\n region: us-central1\n fqdn: backend.example.com\n port: 443\n group:\n type: gcp:compute:RegionNetworkEndpointGroup\n properties:\n name: fqdn-port-neg\n network: ${default.id}\n region: us-central1\n networkEndpointType: INTERNET_FQDN_PORT\n default:\n type: gcp:compute:Network\n properties:\n name: network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Network Endpoint Portmap\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"network\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"subnetwork\",\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n network: _default.id,\n});\nconst defaultRegionNetworkEndpointGroup = new gcp.compute.RegionNetworkEndpointGroup(\"default\", {\n name: \"portmap-neg\",\n region: \"us-central1\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n networkEndpointType: \"GCE_VM_IP_PORTMAP\",\n});\nconst myImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst defaultInstance = new gcp.compute.Instance(\"default\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n subnetwork: defaultSubnetwork.id,\n }],\n name: \"instance\",\n machineType: \"e2-medium\",\n zone: \"us-central1-a\",\n bootDisk: {\n initializeParams: {\n image: myImage.then(myImage =\u003e myImage.selfLink),\n },\n },\n});\nconst regionNetworkEndpointPortmap = new gcp.compute.RegionNetworkEndpoint(\"region_network_endpoint_portmap\", {\n regionNetworkEndpointGroup: defaultRegionNetworkEndpointGroup.name,\n region: \"us-central1\",\n instance: defaultInstance.selfLink,\n port: 80,\n ipAddress: defaultInstance.networkInterfaces.apply(networkInterfaces =\u003e networkInterfaces[0].networkIp),\n clientDestinationPort: 8080,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"network\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"subnetwork\",\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\",\n network=default.id)\ndefault_region_network_endpoint_group = gcp.compute.RegionNetworkEndpointGroup(\"default\",\n name=\"portmap-neg\",\n region=\"us-central1\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n network_endpoint_type=\"GCE_VM_IP_PORTMAP\")\nmy_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\ndefault_instance = gcp.compute.Instance(\"default\",\n network_interfaces=[{\n \"access_configs\": [{}],\n \"subnetwork\": default_subnetwork.id,\n }],\n name=\"instance\",\n machine_type=\"e2-medium\",\n zone=\"us-central1-a\",\n boot_disk={\n \"initialize_params\": {\n \"image\": my_image.self_link,\n },\n })\nregion_network_endpoint_portmap = gcp.compute.RegionNetworkEndpoint(\"region_network_endpoint_portmap\",\n region_network_endpoint_group=default_region_network_endpoint_group.name,\n region=\"us-central1\",\n instance=default_instance.self_link,\n port=80,\n ip_address=default_instance.network_interfaces[0].network_ip,\n client_destination_port=8080)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"network\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"subnetwork\",\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n Network = @default.Id,\n });\n\n var defaultRegionNetworkEndpointGroup = new Gcp.Compute.RegionNetworkEndpointGroup(\"default\", new()\n {\n Name = \"portmap-neg\",\n Region = \"us-central1\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n NetworkEndpointType = \"GCE_VM_IP_PORTMAP\",\n });\n\n var myImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var defaultInstance = new Gcp.Compute.Instance(\"default\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Subnetwork = defaultSubnetwork.Id,\n },\n },\n Name = \"instance\",\n MachineType = \"e2-medium\",\n Zone = \"us-central1-a\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = myImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n },\n },\n });\n\n var regionNetworkEndpointPortmap = new Gcp.Compute.RegionNetworkEndpoint(\"region_network_endpoint_portmap\", new()\n {\n RegionNetworkEndpointGroup = defaultRegionNetworkEndpointGroup.Name,\n Region = \"us-central1\",\n Instance = defaultInstance.SelfLink,\n Port = 80,\n IpAddress = defaultInstance.NetworkInterfaces.Apply(networkInterfaces =\u003e networkInterfaces[0].NetworkIp),\n ClientDestinationPort = 8080,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionNetworkEndpointGroup, err := compute.NewRegionNetworkEndpointGroup(ctx, \"default\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"portmap-neg\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tNetworkEndpointType: pulumi.String(\"GCE_VM_IP_PORTMAP\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultInstance, err := compute.NewInstance(ctx, \"default\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tAccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{\n\t\t\t\t\t\tnil,\n\t\t\t\t\t},\n\t\t\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"instance\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(myImage.SelfLink),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionNetworkEndpoint(ctx, \"region_network_endpoint_portmap\", \u0026compute.RegionNetworkEndpointArgs{\n\t\t\tRegionNetworkEndpointGroup: defaultRegionNetworkEndpointGroup.Name,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tInstance: defaultInstance.SelfLink,\n\t\t\tPort: pulumi.Int(80),\n\t\t\tIpAddress: pulumi.String(defaultInstance.NetworkInterfaces.ApplyT(func(networkInterfaces []compute.InstanceNetworkInterface) (*string, error) {\n\t\t\t\treturn \u0026networkInterfaces[0].NetworkIp, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tClientDestinationPort: pulumi.Int(8080),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroup;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroupArgs;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport com.pulumi.gcp.compute.RegionNetworkEndpoint;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"subnetwork\")\n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .network(default_.id())\n .build());\n\n var defaultRegionNetworkEndpointGroup = new RegionNetworkEndpointGroup(\"defaultRegionNetworkEndpointGroup\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"portmap-neg\")\n .region(\"us-central1\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .networkEndpointType(\"GCE_VM_IP_PORTMAP\")\n .build());\n\n final var myImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var defaultInstance = new Instance(\"defaultInstance\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .subnetwork(defaultSubnetwork.id())\n .build())\n .name(\"instance\")\n .machineType(\"e2-medium\")\n .zone(\"us-central1-a\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(myImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .build())\n .build())\n .build());\n\n var regionNetworkEndpointPortmap = new RegionNetworkEndpoint(\"regionNetworkEndpointPortmap\", RegionNetworkEndpointArgs.builder()\n .regionNetworkEndpointGroup(defaultRegionNetworkEndpointGroup.name())\n .region(\"us-central1\")\n .instance(defaultInstance.selfLink())\n .port(80)\n .ipAddress(defaultInstance.networkInterfaces().applyValue(networkInterfaces -\u003e networkInterfaces[0].networkIp()))\n .clientDestinationPort(8080)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: network\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: subnetwork\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n network: ${default.id}\n defaultRegionNetworkEndpointGroup:\n type: gcp:compute:RegionNetworkEndpointGroup\n name: default\n properties:\n name: portmap-neg\n region: us-central1\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n networkEndpointType: GCE_VM_IP_PORTMAP\n regionNetworkEndpointPortmap:\n type: gcp:compute:RegionNetworkEndpoint\n name: region_network_endpoint_portmap\n properties:\n regionNetworkEndpointGroup: ${defaultRegionNetworkEndpointGroup.name}\n region: us-central1\n instance: ${defaultInstance.selfLink}\n port: 80\n ipAddress: ${defaultInstance.networkInterfaces[0].networkIp}\n clientDestinationPort: 8080\n defaultInstance:\n type: gcp:compute:Instance\n name: default\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n subnetwork: ${defaultSubnetwork.id}\n name: instance\n machineType: e2-medium\n zone: us-central1-a\n bootDisk:\n initializeParams:\n image: ${myImage.selfLink}\nvariables:\n myImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRegionNetworkEndpoint can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/networkEndpointGroups/{{region_network_endpoint_group}}/{{ip_address}}/{{fqdn}}/{{port}}`\n\n* `{{project}}/{{region}}/{{region_network_endpoint_group}}/{{ip_address}}/{{fqdn}}/{{port}}`\n\n* `{{region}}/{{region_network_endpoint_group}}/{{ip_address}}/{{fqdn}}/{{port}}`\n\n* `{{region_network_endpoint_group}}/{{ip_address}}/{{fqdn}}/{{port}}`\n\nWhen using the `pulumi import` command, RegionNetworkEndpoint can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/regionNetworkEndpoint:RegionNetworkEndpoint default projects/{{project}}/regions/{{region}}/networkEndpointGroups/{{region_network_endpoint_group}}/{{ip_address}}/{{fqdn}}/{{port}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionNetworkEndpoint:RegionNetworkEndpoint default {{project}}/{{region}}/{{region_network_endpoint_group}}/{{ip_address}}/{{fqdn}}/{{port}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionNetworkEndpoint:RegionNetworkEndpoint default {{region}}/{{region_network_endpoint_group}}/{{ip_address}}/{{fqdn}}/{{port}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionNetworkEndpoint:RegionNetworkEndpoint default {{region_network_endpoint_group}}/{{ip_address}}/{{fqdn}}/{{port}}\n```\n\n", + "description": "A Region network endpoint represents a IP address/FQDN and port combination that is\npart of a specific network endpoint group (NEG).\n\n\u003e **NOTE**: Network endpoints cannot be created outside of a network endpoint group.\n\n\nTo get more information about RegionNetworkEndpoint, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/beta/regionNetworkEndpointGroups)\n* How-to Guides\n * [Internet NEGs Official Documentation](https://cloud.google.com/load-balancing/docs/negs/internet-neg-concepts)\n * [Official Documentation](https://cloud.google.com/load-balancing/docs/negs/)\n\n## Example Usage\n\n### Region Network Endpoint Internet Ip Port\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"network\",\n autoCreateSubnetworks: false,\n});\nconst group = new gcp.compute.RegionNetworkEndpointGroup(\"group\", {\n name: \"ip-port-neg\",\n network: _default.id,\n region: \"us-central1\",\n networkEndpointType: \"INTERNET_IP_PORT\",\n});\nconst region_internet_ip_port_endpoint = new gcp.compute.RegionNetworkEndpoint(\"region-internet-ip-port-endpoint\", {\n regionNetworkEndpointGroup: group.name,\n region: \"us-central1\",\n ipAddress: \"8.8.8.8\",\n port: 443,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"network\",\n auto_create_subnetworks=False)\ngroup = gcp.compute.RegionNetworkEndpointGroup(\"group\",\n name=\"ip-port-neg\",\n network=default.id,\n region=\"us-central1\",\n network_endpoint_type=\"INTERNET_IP_PORT\")\nregion_internet_ip_port_endpoint = gcp.compute.RegionNetworkEndpoint(\"region-internet-ip-port-endpoint\",\n region_network_endpoint_group=group.name,\n region=\"us-central1\",\n ip_address=\"8.8.8.8\",\n port=443)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"network\",\n AutoCreateSubnetworks = false,\n });\n\n var @group = new Gcp.Compute.RegionNetworkEndpointGroup(\"group\", new()\n {\n Name = \"ip-port-neg\",\n Network = @default.Id,\n Region = \"us-central1\",\n NetworkEndpointType = \"INTERNET_IP_PORT\",\n });\n\n var region_internet_ip_port_endpoint = new Gcp.Compute.RegionNetworkEndpoint(\"region-internet-ip-port-endpoint\", new()\n {\n RegionNetworkEndpointGroup = @group.Name,\n Region = \"us-central1\",\n IpAddress = \"8.8.8.8\",\n Port = 443,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tgroup, err := compute.NewRegionNetworkEndpointGroup(ctx, \"group\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"ip-port-neg\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetworkEndpointType: pulumi.String(\"INTERNET_IP_PORT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionNetworkEndpoint(ctx, \"region-internet-ip-port-endpoint\", \u0026compute.RegionNetworkEndpointArgs{\n\t\t\tRegionNetworkEndpointGroup: group.Name,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpAddress: pulumi.String(\"8.8.8.8\"),\n\t\t\tPort: pulumi.Int(443),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroup;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroupArgs;\nimport com.pulumi.gcp.compute.RegionNetworkEndpoint;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var group = new RegionNetworkEndpointGroup(\"group\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"ip-port-neg\")\n .network(default_.id())\n .region(\"us-central1\")\n .networkEndpointType(\"INTERNET_IP_PORT\")\n .build());\n\n var region_internet_ip_port_endpoint = new RegionNetworkEndpoint(\"region-internet-ip-port-endpoint\", RegionNetworkEndpointArgs.builder()\n .regionNetworkEndpointGroup(group.name())\n .region(\"us-central1\")\n .ipAddress(\"8.8.8.8\")\n .port(443)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n region-internet-ip-port-endpoint:\n type: gcp:compute:RegionNetworkEndpoint\n properties:\n regionNetworkEndpointGroup: ${group.name}\n region: us-central1\n ipAddress: 8.8.8.8\n port: 443\n group:\n type: gcp:compute:RegionNetworkEndpointGroup\n properties:\n name: ip-port-neg\n network: ${default.id}\n region: us-central1\n networkEndpointType: INTERNET_IP_PORT\n default:\n type: gcp:compute:Network\n properties:\n name: network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Network Endpoint Internet Fqdn Port\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"network\",\n autoCreateSubnetworks: false,\n});\nconst group = new gcp.compute.RegionNetworkEndpointGroup(\"group\", {\n name: \"fqdn-port-neg\",\n network: _default.id,\n region: \"us-central1\",\n networkEndpointType: \"INTERNET_FQDN_PORT\",\n});\nconst region_internet_fqdn_port_endpoint = new gcp.compute.RegionNetworkEndpoint(\"region-internet-fqdn-port-endpoint\", {\n regionNetworkEndpointGroup: group.name,\n region: \"us-central1\",\n fqdn: \"backend.example.com\",\n port: 443,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"network\",\n auto_create_subnetworks=False)\ngroup = gcp.compute.RegionNetworkEndpointGroup(\"group\",\n name=\"fqdn-port-neg\",\n network=default.id,\n region=\"us-central1\",\n network_endpoint_type=\"INTERNET_FQDN_PORT\")\nregion_internet_fqdn_port_endpoint = gcp.compute.RegionNetworkEndpoint(\"region-internet-fqdn-port-endpoint\",\n region_network_endpoint_group=group.name,\n region=\"us-central1\",\n fqdn=\"backend.example.com\",\n port=443)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"network\",\n AutoCreateSubnetworks = false,\n });\n\n var @group = new Gcp.Compute.RegionNetworkEndpointGroup(\"group\", new()\n {\n Name = \"fqdn-port-neg\",\n Network = @default.Id,\n Region = \"us-central1\",\n NetworkEndpointType = \"INTERNET_FQDN_PORT\",\n });\n\n var region_internet_fqdn_port_endpoint = new Gcp.Compute.RegionNetworkEndpoint(\"region-internet-fqdn-port-endpoint\", new()\n {\n RegionNetworkEndpointGroup = @group.Name,\n Region = \"us-central1\",\n Fqdn = \"backend.example.com\",\n Port = 443,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tgroup, err := compute.NewRegionNetworkEndpointGroup(ctx, \"group\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"fqdn-port-neg\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetworkEndpointType: pulumi.String(\"INTERNET_FQDN_PORT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionNetworkEndpoint(ctx, \"region-internet-fqdn-port-endpoint\", \u0026compute.RegionNetworkEndpointArgs{\n\t\t\tRegionNetworkEndpointGroup: group.Name,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tFqdn: pulumi.String(\"backend.example.com\"),\n\t\t\tPort: pulumi.Int(443),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroup;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroupArgs;\nimport com.pulumi.gcp.compute.RegionNetworkEndpoint;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var group = new RegionNetworkEndpointGroup(\"group\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"fqdn-port-neg\")\n .network(default_.id())\n .region(\"us-central1\")\n .networkEndpointType(\"INTERNET_FQDN_PORT\")\n .build());\n\n var region_internet_fqdn_port_endpoint = new RegionNetworkEndpoint(\"region-internet-fqdn-port-endpoint\", RegionNetworkEndpointArgs.builder()\n .regionNetworkEndpointGroup(group.name())\n .region(\"us-central1\")\n .fqdn(\"backend.example.com\")\n .port(443)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n region-internet-fqdn-port-endpoint:\n type: gcp:compute:RegionNetworkEndpoint\n properties:\n regionNetworkEndpointGroup: ${group.name}\n region: us-central1\n fqdn: backend.example.com\n port: 443\n group:\n type: gcp:compute:RegionNetworkEndpointGroup\n properties:\n name: fqdn-port-neg\n network: ${default.id}\n region: us-central1\n networkEndpointType: INTERNET_FQDN_PORT\n default:\n type: gcp:compute:Network\n properties:\n name: network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Network Endpoint Portmap\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"network\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"subnetwork\",\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n network: _default.id,\n});\nconst defaultRegionNetworkEndpointGroup = new gcp.compute.RegionNetworkEndpointGroup(\"default\", {\n name: \"portmap-neg\",\n region: \"us-central1\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n networkEndpointType: \"GCE_VM_IP_PORTMAP\",\n});\nconst myImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst defaultInstance = new gcp.compute.Instance(\"default\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n subnetwork: defaultSubnetwork.id,\n }],\n name: \"instance\",\n machineType: \"e2-medium\",\n zone: \"us-central1-a\",\n bootDisk: {\n initializeParams: {\n image: myImage.then(myImage =\u003e myImage.selfLink),\n },\n },\n});\nconst regionNetworkEndpointPortmap = new gcp.compute.RegionNetworkEndpoint(\"region_network_endpoint_portmap\", {\n regionNetworkEndpointGroup: defaultRegionNetworkEndpointGroup.name,\n region: \"us-central1\",\n instance: defaultInstance.selfLink,\n port: 80,\n ipAddress: defaultInstance.networkInterfaces.apply(networkInterfaces =\u003e networkInterfaces[0].networkIp),\n clientDestinationPort: 8080,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"network\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"subnetwork\",\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\",\n network=default.id)\ndefault_region_network_endpoint_group = gcp.compute.RegionNetworkEndpointGroup(\"default\",\n name=\"portmap-neg\",\n region=\"us-central1\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n network_endpoint_type=\"GCE_VM_IP_PORTMAP\")\nmy_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\ndefault_instance = gcp.compute.Instance(\"default\",\n network_interfaces=[{\n \"access_configs\": [{}],\n \"subnetwork\": default_subnetwork.id,\n }],\n name=\"instance\",\n machine_type=\"e2-medium\",\n zone=\"us-central1-a\",\n boot_disk={\n \"initialize_params\": {\n \"image\": my_image.self_link,\n },\n })\nregion_network_endpoint_portmap = gcp.compute.RegionNetworkEndpoint(\"region_network_endpoint_portmap\",\n region_network_endpoint_group=default_region_network_endpoint_group.name,\n region=\"us-central1\",\n instance=default_instance.self_link,\n port=80,\n ip_address=default_instance.network_interfaces[0].network_ip,\n client_destination_port=8080)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"network\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"subnetwork\",\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n Network = @default.Id,\n });\n\n var defaultRegionNetworkEndpointGroup = new Gcp.Compute.RegionNetworkEndpointGroup(\"default\", new()\n {\n Name = \"portmap-neg\",\n Region = \"us-central1\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n NetworkEndpointType = \"GCE_VM_IP_PORTMAP\",\n });\n\n var myImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var defaultInstance = new Gcp.Compute.Instance(\"default\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Subnetwork = defaultSubnetwork.Id,\n },\n },\n Name = \"instance\",\n MachineType = \"e2-medium\",\n Zone = \"us-central1-a\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = myImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n },\n },\n });\n\n var regionNetworkEndpointPortmap = new Gcp.Compute.RegionNetworkEndpoint(\"region_network_endpoint_portmap\", new()\n {\n RegionNetworkEndpointGroup = defaultRegionNetworkEndpointGroup.Name,\n Region = \"us-central1\",\n Instance = defaultInstance.SelfLink,\n Port = 80,\n IpAddress = defaultInstance.NetworkInterfaces.Apply(networkInterfaces =\u003e networkInterfaces[0].NetworkIp),\n ClientDestinationPort = 8080,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionNetworkEndpointGroup, err := compute.NewRegionNetworkEndpointGroup(ctx, \"default\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"portmap-neg\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tNetworkEndpointType: pulumi.String(\"GCE_VM_IP_PORTMAP\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultInstance, err := compute.NewInstance(ctx, \"default\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tAccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{\n\t\t\t\t\t\t\u0026compute.InstanceNetworkInterfaceAccessConfigArgs{},\n\t\t\t\t\t},\n\t\t\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"instance\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(myImage.SelfLink),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionNetworkEndpoint(ctx, \"region_network_endpoint_portmap\", \u0026compute.RegionNetworkEndpointArgs{\n\t\t\tRegionNetworkEndpointGroup: defaultRegionNetworkEndpointGroup.Name,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tInstance: defaultInstance.SelfLink,\n\t\t\tPort: pulumi.Int(80),\n\t\t\tIpAddress: pulumi.String(defaultInstance.NetworkInterfaces.ApplyT(func(networkInterfaces []compute.InstanceNetworkInterface) (*string, error) {\n\t\t\t\treturn \u0026networkInterfaces[0].NetworkIp, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tClientDestinationPort: pulumi.Int(8080),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroup;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroupArgs;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport com.pulumi.gcp.compute.RegionNetworkEndpoint;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"subnetwork\")\n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .network(default_.id())\n .build());\n\n var defaultRegionNetworkEndpointGroup = new RegionNetworkEndpointGroup(\"defaultRegionNetworkEndpointGroup\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"portmap-neg\")\n .region(\"us-central1\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .networkEndpointType(\"GCE_VM_IP_PORTMAP\")\n .build());\n\n final var myImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var defaultInstance = new Instance(\"defaultInstance\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .subnetwork(defaultSubnetwork.id())\n .build())\n .name(\"instance\")\n .machineType(\"e2-medium\")\n .zone(\"us-central1-a\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(myImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .build())\n .build())\n .build());\n\n var regionNetworkEndpointPortmap = new RegionNetworkEndpoint(\"regionNetworkEndpointPortmap\", RegionNetworkEndpointArgs.builder()\n .regionNetworkEndpointGroup(defaultRegionNetworkEndpointGroup.name())\n .region(\"us-central1\")\n .instance(defaultInstance.selfLink())\n .port(80)\n .ipAddress(defaultInstance.networkInterfaces().applyValue(networkInterfaces -\u003e networkInterfaces[0].networkIp()))\n .clientDestinationPort(8080)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: network\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: subnetwork\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n network: ${default.id}\n defaultRegionNetworkEndpointGroup:\n type: gcp:compute:RegionNetworkEndpointGroup\n name: default\n properties:\n name: portmap-neg\n region: us-central1\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n networkEndpointType: GCE_VM_IP_PORTMAP\n regionNetworkEndpointPortmap:\n type: gcp:compute:RegionNetworkEndpoint\n name: region_network_endpoint_portmap\n properties:\n regionNetworkEndpointGroup: ${defaultRegionNetworkEndpointGroup.name}\n region: us-central1\n instance: ${defaultInstance.selfLink}\n port: 80\n ipAddress: ${defaultInstance.networkInterfaces[0].networkIp}\n clientDestinationPort: 8080\n defaultInstance:\n type: gcp:compute:Instance\n name: default\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n subnetwork: ${defaultSubnetwork.id}\n name: instance\n machineType: e2-medium\n zone: us-central1-a\n bootDisk:\n initializeParams:\n image: ${myImage.selfLink}\nvariables:\n myImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRegionNetworkEndpoint can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/networkEndpointGroups/{{region_network_endpoint_group}}/{{ip_address}}/{{fqdn}}/{{port}}`\n\n* `{{project}}/{{region}}/{{region_network_endpoint_group}}/{{ip_address}}/{{fqdn}}/{{port}}`\n\n* `{{region}}/{{region_network_endpoint_group}}/{{ip_address}}/{{fqdn}}/{{port}}`\n\n* `{{region_network_endpoint_group}}/{{ip_address}}/{{fqdn}}/{{port}}`\n\nWhen using the `pulumi import` command, RegionNetworkEndpoint can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/regionNetworkEndpoint:RegionNetworkEndpoint default projects/{{project}}/regions/{{region}}/networkEndpointGroups/{{region_network_endpoint_group}}/{{ip_address}}/{{fqdn}}/{{port}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionNetworkEndpoint:RegionNetworkEndpoint default {{project}}/{{region}}/{{region_network_endpoint_group}}/{{ip_address}}/{{fqdn}}/{{port}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionNetworkEndpoint:RegionNetworkEndpoint default {{region}}/{{region_network_endpoint_group}}/{{ip_address}}/{{fqdn}}/{{port}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionNetworkEndpoint:RegionNetworkEndpoint default {{region_network_endpoint_group}}/{{ip_address}}/{{fqdn}}/{{port}}\n```\n\n", "properties": { "clientDestinationPort": { "type": "integer", @@ -164001,7 +164001,7 @@ } }, "gcp:compute/regionNetworkEndpointGroup:RegionNetworkEndpointGroup": { - "description": "A regional NEG that can support Serverless Products, proxying traffic to\nexternal backends and providing traffic to the PSC port mapping endpoints.\n\nTo get more information about RegionNetworkEndpointGroup, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/beta/regionNetworkEndpointGroups)\n* How-to Guides\n * [Internet NEGs Official Documentation](https://cloud.google.com/load-balancing/docs/negs/internet-neg-concepts)\n * [Serverless NEGs Official Documentation](https://cloud.google.com/load-balancing/docs/negs/serverless-neg-concepts)\n\n## Example Usage\n\n### Region Network Endpoint Group Functions\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"cloudfunctions-function-example-bucket\",\n location: \"US\",\n});\nconst archive = new gcp.storage.BucketObject(\"archive\", {\n name: \"index.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"path/to/index.zip\"),\n});\nconst functionNegFunction = new gcp.cloudfunctions.Function(\"function_neg\", {\n name: \"function-neg\",\n description: \"My function\",\n runtime: \"nodejs10\",\n availableMemoryMb: 128,\n sourceArchiveBucket: bucket.name,\n sourceArchiveObject: archive.name,\n triggerHttp: true,\n timeout: 60,\n entryPoint: \"helloGET\",\n});\n// Cloud Functions Example\nconst functionNeg = new gcp.compute.RegionNetworkEndpointGroup(\"function_neg\", {\n name: \"function-neg\",\n networkEndpointType: \"SERVERLESS\",\n region: \"us-central1\",\n cloudFunction: {\n \"function\": functionNegFunction.name,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"cloudfunctions-function-example-bucket\",\n location=\"US\")\narchive = gcp.storage.BucketObject(\"archive\",\n name=\"index.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"path/to/index.zip\"))\nfunction_neg_function = gcp.cloudfunctions.Function(\"function_neg\",\n name=\"function-neg\",\n description=\"My function\",\n runtime=\"nodejs10\",\n available_memory_mb=128,\n source_archive_bucket=bucket.name,\n source_archive_object=archive.name,\n trigger_http=True,\n timeout=60,\n entry_point=\"helloGET\")\n# Cloud Functions Example\nfunction_neg = gcp.compute.RegionNetworkEndpointGroup(\"function_neg\",\n name=\"function-neg\",\n network_endpoint_type=\"SERVERLESS\",\n region=\"us-central1\",\n cloud_function={\n \"function\": function_neg_function.name,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = \"cloudfunctions-function-example-bucket\",\n Location = \"US\",\n });\n\n var archive = new Gcp.Storage.BucketObject(\"archive\", new()\n {\n Name = \"index.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"path/to/index.zip\"),\n });\n\n var functionNegFunction = new Gcp.CloudFunctions.Function(\"function_neg\", new()\n {\n Name = \"function-neg\",\n Description = \"My function\",\n Runtime = \"nodejs10\",\n AvailableMemoryMb = 128,\n SourceArchiveBucket = bucket.Name,\n SourceArchiveObject = archive.Name,\n TriggerHttp = true,\n Timeout = 60,\n EntryPoint = \"helloGET\",\n });\n\n // Cloud Functions Example\n var functionNeg = new Gcp.Compute.RegionNetworkEndpointGroup(\"function_neg\", new()\n {\n Name = \"function-neg\",\n NetworkEndpointType = \"SERVERLESS\",\n Region = \"us-central1\",\n CloudFunction = new Gcp.Compute.Inputs.RegionNetworkEndpointGroupCloudFunctionArgs\n {\n Function = functionNegFunction.Name,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctions\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"cloudfunctions-function-example-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tarchive, err := storage.NewBucketObject(ctx, \"archive\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"index.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"path/to/index.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfunctionNegFunction, err := cloudfunctions.NewFunction(ctx, \"function_neg\", \u0026cloudfunctions.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-neg\"),\n\t\t\tDescription: pulumi.String(\"My function\"),\n\t\t\tRuntime: pulumi.String(\"nodejs10\"),\n\t\t\tAvailableMemoryMb: pulumi.Int(128),\n\t\t\tSourceArchiveBucket: bucket.Name,\n\t\t\tSourceArchiveObject: archive.Name,\n\t\t\tTriggerHttp: pulumi.Bool(true),\n\t\t\tTimeout: pulumi.Int(60),\n\t\t\tEntryPoint: pulumi.String(\"helloGET\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Cloud Functions Example\n\t\t_, err = compute.NewRegionNetworkEndpointGroup(ctx, \"function_neg\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"function-neg\"),\n\t\t\tNetworkEndpointType: pulumi.String(\"SERVERLESS\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tCloudFunction: \u0026compute.RegionNetworkEndpointGroupCloudFunctionArgs{\n\t\t\t\tFunction: functionNegFunction.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.cloudfunctions.Function;\nimport com.pulumi.gcp.cloudfunctions.FunctionArgs;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroup;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroupArgs;\nimport com.pulumi.gcp.compute.inputs.RegionNetworkEndpointGroupCloudFunctionArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(\"cloudfunctions-function-example-bucket\")\n .location(\"US\")\n .build());\n\n var archive = new BucketObject(\"archive\", BucketObjectArgs.builder()\n .name(\"index.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"path/to/index.zip\"))\n .build());\n\n var functionNegFunction = new Function(\"functionNegFunction\", FunctionArgs.builder()\n .name(\"function-neg\")\n .description(\"My function\")\n .runtime(\"nodejs10\")\n .availableMemoryMb(128)\n .sourceArchiveBucket(bucket.name())\n .sourceArchiveObject(archive.name())\n .triggerHttp(true)\n .timeout(60)\n .entryPoint(\"helloGET\")\n .build());\n\n // Cloud Functions Example\n var functionNeg = new RegionNetworkEndpointGroup(\"functionNeg\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"function-neg\")\n .networkEndpointType(\"SERVERLESS\")\n .region(\"us-central1\")\n .cloudFunction(RegionNetworkEndpointGroupCloudFunctionArgs.builder()\n .function(functionNegFunction.name())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Cloud Functions Example\n functionNeg:\n type: gcp:compute:RegionNetworkEndpointGroup\n name: function_neg\n properties:\n name: function-neg\n networkEndpointType: SERVERLESS\n region: us-central1\n cloudFunction:\n function: ${functionNegFunction.name}\n functionNegFunction:\n type: gcp:cloudfunctions:Function\n name: function_neg\n properties:\n name: function-neg\n description: My function\n runtime: nodejs10\n availableMemoryMb: 128\n sourceArchiveBucket: ${bucket.name}\n sourceArchiveObject: ${archive.name}\n triggerHttp: true\n timeout: 60\n entryPoint: helloGET\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: cloudfunctions-function-example-bucket\n location: US\n archive:\n type: gcp:storage:BucketObject\n properties:\n name: index.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: path/to/index.zip\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Network Endpoint Group Cloudrun\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cloudrunNegService = new gcp.cloudrun.Service(\"cloudrun_neg\", {\n name: \"cloudrun-neg\",\n location: \"us-central1\",\n template: {\n spec: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n },\n traffics: [{\n percent: 100,\n latestRevision: true,\n }],\n});\n// Cloud Run Example\nconst cloudrunNeg = new gcp.compute.RegionNetworkEndpointGroup(\"cloudrun_neg\", {\n name: \"cloudrun-neg\",\n networkEndpointType: \"SERVERLESS\",\n region: \"us-central1\",\n cloudRun: {\n service: cloudrunNegService.name,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncloudrun_neg_service = gcp.cloudrun.Service(\"cloudrun_neg\",\n name=\"cloudrun-neg\",\n location=\"us-central1\",\n template={\n \"spec\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n },\n traffics=[{\n \"percent\": 100,\n \"latest_revision\": True,\n }])\n# Cloud Run Example\ncloudrun_neg = gcp.compute.RegionNetworkEndpointGroup(\"cloudrun_neg\",\n name=\"cloudrun-neg\",\n network_endpoint_type=\"SERVERLESS\",\n region=\"us-central1\",\n cloud_run={\n \"service\": cloudrun_neg_service.name,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cloudrunNegService = new Gcp.CloudRun.Service(\"cloudrun_neg\", new()\n {\n Name = \"cloudrun-neg\",\n Location = \"us-central1\",\n Template = new Gcp.CloudRun.Inputs.ServiceTemplateArgs\n {\n Spec = new Gcp.CloudRun.Inputs.ServiceTemplateSpecArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n },\n },\n Traffics = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTrafficArgs\n {\n Percent = 100,\n LatestRevision = true,\n },\n },\n });\n\n // Cloud Run Example\n var cloudrunNeg = new Gcp.Compute.RegionNetworkEndpointGroup(\"cloudrun_neg\", new()\n {\n Name = \"cloudrun-neg\",\n NetworkEndpointType = \"SERVERLESS\",\n Region = \"us-central1\",\n CloudRun = new Gcp.Compute.Inputs.RegionNetworkEndpointGroupCloudRunArgs\n {\n Service = cloudrunNegService.Name,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrun\"\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\tcloudrunNegService, err := cloudrun.NewService(ctx, \"cloudrun_neg\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-neg\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTemplate: \u0026cloudrun.ServiceTemplateArgs{\n\t\t\t\tSpec: \u0026cloudrun.ServiceTemplateSpecArgs{\n\t\t\t\t\tContainers: cloudrun.ServiceTemplateSpecContainerArray{\n\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTraffics: cloudrun.ServiceTrafficArray{\n\t\t\t\t\u0026cloudrun.ServiceTrafficArgs{\n\t\t\t\t\tPercent: pulumi.Int(100),\n\t\t\t\t\tLatestRevision: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Cloud Run Example\n\t\t_, err = compute.NewRegionNetworkEndpointGroup(ctx, \"cloudrun_neg\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"cloudrun-neg\"),\n\t\t\tNetworkEndpointType: pulumi.String(\"SERVERLESS\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tCloudRun: \u0026compute.RegionNetworkEndpointGroupCloudRunArgs{\n\t\t\t\tService: cloudrunNegService.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudrun.Service;\nimport com.pulumi.gcp.cloudrun.ServiceArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateSpecArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTrafficArgs;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroup;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroupArgs;\nimport com.pulumi.gcp.compute.inputs.RegionNetworkEndpointGroupCloudRunArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cloudrunNegService = new Service(\"cloudrunNegService\", ServiceArgs.builder()\n .name(\"cloudrun-neg\")\n .location(\"us-central1\")\n .template(ServiceTemplateArgs.builder()\n .spec(ServiceTemplateSpecArgs.builder()\n .containers(ServiceTemplateSpecContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .build())\n .build())\n .traffics(ServiceTrafficArgs.builder()\n .percent(100)\n .latestRevision(true)\n .build())\n .build());\n\n // Cloud Run Example\n var cloudrunNeg = new RegionNetworkEndpointGroup(\"cloudrunNeg\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"cloudrun-neg\")\n .networkEndpointType(\"SERVERLESS\")\n .region(\"us-central1\")\n .cloudRun(RegionNetworkEndpointGroupCloudRunArgs.builder()\n .service(cloudrunNegService.name())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Cloud Run Example\n cloudrunNeg:\n type: gcp:compute:RegionNetworkEndpointGroup\n name: cloudrun_neg\n properties:\n name: cloudrun-neg\n networkEndpointType: SERVERLESS\n region: us-central1\n cloudRun:\n service: ${cloudrunNegService.name}\n cloudrunNegService:\n type: gcp:cloudrun:Service\n name: cloudrun_neg\n properties:\n name: cloudrun-neg\n location: us-central1\n template:\n spec:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n traffics:\n - percent: 100\n latestRevision: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Network Endpoint Group Appengine\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst appengineNegBucket = new gcp.storage.Bucket(\"appengine_neg\", {\n name: \"appengine-neg\",\n location: \"US\",\n});\nconst appengineNegBucketObject = new gcp.storage.BucketObject(\"appengine_neg\", {\n name: \"hello-world.zip\",\n bucket: appengineNegBucket.name,\n source: new pulumi.asset.FileAsset(\"./test-fixtures/hello-world.zip\"),\n});\nconst appengineNegFlexibleAppVersion = new gcp.appengine.FlexibleAppVersion(\"appengine_neg\", {\n versionId: \"v1\",\n service: \"appengine-network-endpoint-group\",\n runtime: \"nodejs\",\n flexibleRuntimeSettings: {\n operatingSystem: \"ubuntu22\",\n runtimeVersion: \"20\",\n },\n entrypoint: {\n shell: \"node ./app.js\",\n },\n deployment: {\n zip: {\n sourceUrl: pulumi.interpolate`https://storage.googleapis.com/${appengineNegBucket.name}/${appengineNegBucketObject.name}`,\n },\n },\n livenessCheck: {\n path: \"/\",\n },\n readinessCheck: {\n path: \"/\",\n },\n envVariables: {\n port: \"8080\",\n },\n handlers: [{\n urlRegex: \".*\\\\/my-path\\\\/*\",\n securityLevel: \"SECURE_ALWAYS\",\n login: \"LOGIN_REQUIRED\",\n authFailAction: \"AUTH_FAIL_ACTION_REDIRECT\",\n staticFiles: {\n path: \"my-other-path\",\n uploadPathRegex: \".*\\\\/my-path\\\\/*\",\n },\n }],\n automaticScaling: {\n coolDownPeriod: \"120s\",\n cpuUtilization: {\n targetUtilization: 0.5,\n },\n },\n deleteServiceOnDestroy: true,\n});\n// App Engine Example\nconst appengineNeg = new gcp.compute.RegionNetworkEndpointGroup(\"appengine_neg\", {\n name: \"appengine-neg\",\n networkEndpointType: \"SERVERLESS\",\n region: \"us-central1\",\n appEngine: {\n service: appengineNegFlexibleAppVersion.service,\n version: appengineNegFlexibleAppVersion.versionId,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nappengine_neg_bucket = gcp.storage.Bucket(\"appengine_neg\",\n name=\"appengine-neg\",\n location=\"US\")\nappengine_neg_bucket_object = gcp.storage.BucketObject(\"appengine_neg\",\n name=\"hello-world.zip\",\n bucket=appengine_neg_bucket.name,\n source=pulumi.FileAsset(\"./test-fixtures/hello-world.zip\"))\nappengine_neg_flexible_app_version = gcp.appengine.FlexibleAppVersion(\"appengine_neg\",\n version_id=\"v1\",\n service=\"appengine-network-endpoint-group\",\n runtime=\"nodejs\",\n flexible_runtime_settings={\n \"operating_system\": \"ubuntu22\",\n \"runtime_version\": \"20\",\n },\n entrypoint={\n \"shell\": \"node ./app.js\",\n },\n deployment={\n \"zip\": {\n \"source_url\": pulumi.Output.all(\n appengineNegBucketName=appengine_neg_bucket.name,\n appengineNegBucketObjectName=appengine_neg_bucket_object.name\n).apply(lambda resolved_outputs: f\"https://storage.googleapis.com/{resolved_outputs['appengineNegBucketName']}/{resolved_outputs['appengineNegBucketObjectName']}\")\n,\n },\n },\n liveness_check={\n \"path\": \"/\",\n },\n readiness_check={\n \"path\": \"/\",\n },\n env_variables={\n \"port\": \"8080\",\n },\n handlers=[{\n \"url_regex\": \".*\\\\/my-path\\\\/*\",\n \"security_level\": \"SECURE_ALWAYS\",\n \"login\": \"LOGIN_REQUIRED\",\n \"auth_fail_action\": \"AUTH_FAIL_ACTION_REDIRECT\",\n \"static_files\": {\n \"path\": \"my-other-path\",\n \"upload_path_regex\": \".*\\\\/my-path\\\\/*\",\n },\n }],\n automatic_scaling={\n \"cool_down_period\": \"120s\",\n \"cpu_utilization\": {\n \"target_utilization\": 0.5,\n },\n },\n delete_service_on_destroy=True)\n# App Engine Example\nappengine_neg = gcp.compute.RegionNetworkEndpointGroup(\"appengine_neg\",\n name=\"appengine-neg\",\n network_endpoint_type=\"SERVERLESS\",\n region=\"us-central1\",\n app_engine={\n \"service\": appengine_neg_flexible_app_version.service,\n \"version\": appengine_neg_flexible_app_version.version_id,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var appengineNegBucket = new Gcp.Storage.Bucket(\"appengine_neg\", new()\n {\n Name = \"appengine-neg\",\n Location = \"US\",\n });\n\n var appengineNegBucketObject = new Gcp.Storage.BucketObject(\"appengine_neg\", new()\n {\n Name = \"hello-world.zip\",\n Bucket = appengineNegBucket.Name,\n Source = new FileAsset(\"./test-fixtures/hello-world.zip\"),\n });\n\n var appengineNegFlexibleAppVersion = new Gcp.AppEngine.FlexibleAppVersion(\"appengine_neg\", new()\n {\n VersionId = \"v1\",\n Service = \"appengine-network-endpoint-group\",\n Runtime = \"nodejs\",\n FlexibleRuntimeSettings = new Gcp.AppEngine.Inputs.FlexibleAppVersionFlexibleRuntimeSettingsArgs\n {\n OperatingSystem = \"ubuntu22\",\n RuntimeVersion = \"20\",\n },\n Entrypoint = new Gcp.AppEngine.Inputs.FlexibleAppVersionEntrypointArgs\n {\n Shell = \"node ./app.js\",\n },\n Deployment = new Gcp.AppEngine.Inputs.FlexibleAppVersionDeploymentArgs\n {\n Zip = new Gcp.AppEngine.Inputs.FlexibleAppVersionDeploymentZipArgs\n {\n SourceUrl = Output.Tuple(appengineNegBucket.Name, appengineNegBucketObject.Name).Apply(values =\u003e\n {\n var appengineNegBucketName = values.Item1;\n var appengineNegBucketObjectName = values.Item2;\n return $\"https://storage.googleapis.com/{appengineNegBucketName}/{appengineNegBucketObjectName}\";\n }),\n },\n },\n LivenessCheck = new Gcp.AppEngine.Inputs.FlexibleAppVersionLivenessCheckArgs\n {\n Path = \"/\",\n },\n ReadinessCheck = new Gcp.AppEngine.Inputs.FlexibleAppVersionReadinessCheckArgs\n {\n Path = \"/\",\n },\n EnvVariables = \n {\n { \"port\", \"8080\" },\n },\n Handlers = new[]\n {\n new Gcp.AppEngine.Inputs.FlexibleAppVersionHandlerArgs\n {\n UrlRegex = \".*\\\\/my-path\\\\/*\",\n SecurityLevel = \"SECURE_ALWAYS\",\n Login = \"LOGIN_REQUIRED\",\n AuthFailAction = \"AUTH_FAIL_ACTION_REDIRECT\",\n StaticFiles = new Gcp.AppEngine.Inputs.FlexibleAppVersionHandlerStaticFilesArgs\n {\n Path = \"my-other-path\",\n UploadPathRegex = \".*\\\\/my-path\\\\/*\",\n },\n },\n },\n AutomaticScaling = new Gcp.AppEngine.Inputs.FlexibleAppVersionAutomaticScalingArgs\n {\n CoolDownPeriod = \"120s\",\n CpuUtilization = new Gcp.AppEngine.Inputs.FlexibleAppVersionAutomaticScalingCpuUtilizationArgs\n {\n TargetUtilization = 0.5,\n },\n },\n DeleteServiceOnDestroy = true,\n });\n\n // App Engine Example\n var appengineNeg = new Gcp.Compute.RegionNetworkEndpointGroup(\"appengine_neg\", new()\n {\n Name = \"appengine-neg\",\n NetworkEndpointType = \"SERVERLESS\",\n Region = \"us-central1\",\n AppEngine = new Gcp.Compute.Inputs.RegionNetworkEndpointGroupAppEngineArgs\n {\n Service = appengineNegFlexibleAppVersion.Service,\n Version = appengineNegFlexibleAppVersion.VersionId,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/appengine\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tappengineNegBucket, err := storage.NewBucket(ctx, \"appengine_neg\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"appengine-neg\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tappengineNegBucketObject, err := storage.NewBucketObject(ctx, \"appengine_neg\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"hello-world.zip\"),\n\t\t\tBucket: appengineNegBucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"./test-fixtures/hello-world.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tappengineNegFlexibleAppVersion, err := appengine.NewFlexibleAppVersion(ctx, \"appengine_neg\", \u0026appengine.FlexibleAppVersionArgs{\n\t\t\tVersionId: pulumi.String(\"v1\"),\n\t\t\tService: pulumi.String(\"appengine-network-endpoint-group\"),\n\t\t\tRuntime: pulumi.String(\"nodejs\"),\n\t\t\tFlexibleRuntimeSettings: \u0026appengine.FlexibleAppVersionFlexibleRuntimeSettingsArgs{\n\t\t\t\tOperatingSystem: pulumi.String(\"ubuntu22\"),\n\t\t\t\tRuntimeVersion: pulumi.String(\"20\"),\n\t\t\t},\n\t\t\tEntrypoint: \u0026appengine.FlexibleAppVersionEntrypointArgs{\n\t\t\t\tShell: pulumi.String(\"node ./app.js\"),\n\t\t\t},\n\t\t\tDeployment: \u0026appengine.FlexibleAppVersionDeploymentArgs{\n\t\t\t\tZip: \u0026appengine.FlexibleAppVersionDeploymentZipArgs{\n\t\t\t\t\tSourceUrl: pulumi.All(appengineNegBucket.Name, appengineNegBucketObject.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\tappengineNegBucketName := _args[0].(string)\n\t\t\t\t\t\tappengineNegBucketObjectName := _args[1].(string)\n\t\t\t\t\t\treturn fmt.Sprintf(\"https://storage.googleapis.com/%v/%v\", appengineNegBucketName, appengineNegBucketObjectName), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLivenessCheck: \u0026appengine.FlexibleAppVersionLivenessCheckArgs{\n\t\t\t\tPath: pulumi.String(\"/\"),\n\t\t\t},\n\t\t\tReadinessCheck: \u0026appengine.FlexibleAppVersionReadinessCheckArgs{\n\t\t\t\tPath: pulumi.String(\"/\"),\n\t\t\t},\n\t\t\tEnvVariables: pulumi.StringMap{\n\t\t\t\t\"port\": pulumi.String(\"8080\"),\n\t\t\t},\n\t\t\tHandlers: appengine.FlexibleAppVersionHandlerArray{\n\t\t\t\t\u0026appengine.FlexibleAppVersionHandlerArgs{\n\t\t\t\t\tUrlRegex: pulumi.String(\".*\\\\/my-path\\\\/*\"),\n\t\t\t\t\tSecurityLevel: pulumi.String(\"SECURE_ALWAYS\"),\n\t\t\t\t\tLogin: pulumi.String(\"LOGIN_REQUIRED\"),\n\t\t\t\t\tAuthFailAction: pulumi.String(\"AUTH_FAIL_ACTION_REDIRECT\"),\n\t\t\t\t\tStaticFiles: \u0026appengine.FlexibleAppVersionHandlerStaticFilesArgs{\n\t\t\t\t\t\tPath: pulumi.String(\"my-other-path\"),\n\t\t\t\t\t\tUploadPathRegex: pulumi.String(\".*\\\\/my-path\\\\/*\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAutomaticScaling: \u0026appengine.FlexibleAppVersionAutomaticScalingArgs{\n\t\t\t\tCoolDownPeriod: pulumi.String(\"120s\"),\n\t\t\t\tCpuUtilization: \u0026appengine.FlexibleAppVersionAutomaticScalingCpuUtilizationArgs{\n\t\t\t\t\tTargetUtilization: pulumi.Float64(0.5),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeleteServiceOnDestroy: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// App Engine Example\n\t\t_, err = compute.NewRegionNetworkEndpointGroup(ctx, \"appengine_neg\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"appengine-neg\"),\n\t\t\tNetworkEndpointType: pulumi.String(\"SERVERLESS\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tAppEngine: \u0026compute.RegionNetworkEndpointGroupAppEngineArgs{\n\t\t\t\tService: appengineNegFlexibleAppVersion.Service,\n\t\t\t\tVersion: appengineNegFlexibleAppVersion.VersionId,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.appengine.FlexibleAppVersion;\nimport com.pulumi.gcp.appengine.FlexibleAppVersionArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionFlexibleRuntimeSettingsArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionEntrypointArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionDeploymentArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionDeploymentZipArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionLivenessCheckArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionReadinessCheckArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionHandlerArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionHandlerStaticFilesArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionAutomaticScalingArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionAutomaticScalingCpuUtilizationArgs;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroup;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroupArgs;\nimport com.pulumi.gcp.compute.inputs.RegionNetworkEndpointGroupAppEngineArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var appengineNegBucket = new Bucket(\"appengineNegBucket\", BucketArgs.builder()\n .name(\"appengine-neg\")\n .location(\"US\")\n .build());\n\n var appengineNegBucketObject = new BucketObject(\"appengineNegBucketObject\", BucketObjectArgs.builder()\n .name(\"hello-world.zip\")\n .bucket(appengineNegBucket.name())\n .source(new FileAsset(\"./test-fixtures/hello-world.zip\"))\n .build());\n\n var appengineNegFlexibleAppVersion = new FlexibleAppVersion(\"appengineNegFlexibleAppVersion\", FlexibleAppVersionArgs.builder()\n .versionId(\"v1\")\n .service(\"appengine-network-endpoint-group\")\n .runtime(\"nodejs\")\n .flexibleRuntimeSettings(FlexibleAppVersionFlexibleRuntimeSettingsArgs.builder()\n .operatingSystem(\"ubuntu22\")\n .runtimeVersion(\"20\")\n .build())\n .entrypoint(FlexibleAppVersionEntrypointArgs.builder()\n .shell(\"node ./app.js\")\n .build())\n .deployment(FlexibleAppVersionDeploymentArgs.builder()\n .zip(FlexibleAppVersionDeploymentZipArgs.builder()\n .sourceUrl(Output.tuple(appengineNegBucket.name(), appengineNegBucketObject.name()).applyValue(values -\u003e {\n var appengineNegBucketName = values.t1;\n var appengineNegBucketObjectName = values.t2;\n return String.format(\"https://storage.googleapis.com/%s/%s\", appengineNegBucketName,appengineNegBucketObjectName);\n }))\n .build())\n .build())\n .livenessCheck(FlexibleAppVersionLivenessCheckArgs.builder()\n .path(\"/\")\n .build())\n .readinessCheck(FlexibleAppVersionReadinessCheckArgs.builder()\n .path(\"/\")\n .build())\n .envVariables(Map.of(\"port\", \"8080\"))\n .handlers(FlexibleAppVersionHandlerArgs.builder()\n .urlRegex(\".*\\\\/my-path\\\\/*\")\n .securityLevel(\"SECURE_ALWAYS\")\n .login(\"LOGIN_REQUIRED\")\n .authFailAction(\"AUTH_FAIL_ACTION_REDIRECT\")\n .staticFiles(FlexibleAppVersionHandlerStaticFilesArgs.builder()\n .path(\"my-other-path\")\n .uploadPathRegex(\".*\\\\/my-path\\\\/*\")\n .build())\n .build())\n .automaticScaling(FlexibleAppVersionAutomaticScalingArgs.builder()\n .coolDownPeriod(\"120s\")\n .cpuUtilization(FlexibleAppVersionAutomaticScalingCpuUtilizationArgs.builder()\n .targetUtilization(0.5)\n .build())\n .build())\n .deleteServiceOnDestroy(true)\n .build());\n\n // App Engine Example\n var appengineNeg = new RegionNetworkEndpointGroup(\"appengineNeg\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"appengine-neg\")\n .networkEndpointType(\"SERVERLESS\")\n .region(\"us-central1\")\n .appEngine(RegionNetworkEndpointGroupAppEngineArgs.builder()\n .service(appengineNegFlexibleAppVersion.service())\n .version(appengineNegFlexibleAppVersion.versionId())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # App Engine Example\n appengineNeg:\n type: gcp:compute:RegionNetworkEndpointGroup\n name: appengine_neg\n properties:\n name: appengine-neg\n networkEndpointType: SERVERLESS\n region: us-central1\n appEngine:\n service: ${appengineNegFlexibleAppVersion.service}\n version: ${appengineNegFlexibleAppVersion.versionId}\n appengineNegFlexibleAppVersion:\n type: gcp:appengine:FlexibleAppVersion\n name: appengine_neg\n properties:\n versionId: v1\n service: appengine-network-endpoint-group\n runtime: nodejs\n flexibleRuntimeSettings:\n operatingSystem: ubuntu22\n runtimeVersion: '20'\n entrypoint:\n shell: node ./app.js\n deployment:\n zip:\n sourceUrl: https://storage.googleapis.com/${appengineNegBucket.name}/${appengineNegBucketObject.name}\n livenessCheck:\n path: /\n readinessCheck:\n path: /\n envVariables:\n port: '8080'\n handlers:\n - urlRegex: .*\\/my-path\\/*\n securityLevel: SECURE_ALWAYS\n login: LOGIN_REQUIRED\n authFailAction: AUTH_FAIL_ACTION_REDIRECT\n staticFiles:\n path: my-other-path\n uploadPathRegex: .*\\/my-path\\/*\n automaticScaling:\n coolDownPeriod: 120s\n cpuUtilization:\n targetUtilization: 0.5\n deleteServiceOnDestroy: true\n appengineNegBucket:\n type: gcp:storage:Bucket\n name: appengine_neg\n properties:\n name: appengine-neg\n location: US\n appengineNegBucketObject:\n type: gcp:storage:BucketObject\n name: appengine_neg\n properties:\n name: hello-world.zip\n bucket: ${appengineNegBucket.name}\n source:\n fn::FileAsset: ./test-fixtures/hello-world.zip\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Network Endpoint Group Appengine Empty\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// App Engine Example\nconst appengineNeg = new gcp.compute.RegionNetworkEndpointGroup(\"appengine_neg\", {\n name: \"appengine-neg\",\n networkEndpointType: \"SERVERLESS\",\n region: \"us-central1\",\n appEngine: {},\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# App Engine Example\nappengine_neg = gcp.compute.RegionNetworkEndpointGroup(\"appengine_neg\",\n name=\"appengine-neg\",\n network_endpoint_type=\"SERVERLESS\",\n region=\"us-central1\",\n app_engine={})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // App Engine Example\n var appengineNeg = new Gcp.Compute.RegionNetworkEndpointGroup(\"appengine_neg\", new()\n {\n Name = \"appengine-neg\",\n NetworkEndpointType = \"SERVERLESS\",\n Region = \"us-central1\",\n AppEngine = null,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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// App Engine Example\n\t\t_, err := compute.NewRegionNetworkEndpointGroup(ctx, \"appengine_neg\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"appengine-neg\"),\n\t\t\tNetworkEndpointType: pulumi.String(\"SERVERLESS\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tAppEngine: nil,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroup;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroupArgs;\nimport com.pulumi.gcp.compute.inputs.RegionNetworkEndpointGroupAppEngineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // App Engine Example\n var appengineNeg = new RegionNetworkEndpointGroup(\"appengineNeg\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"appengine-neg\")\n .networkEndpointType(\"SERVERLESS\")\n .region(\"us-central1\")\n .appEngine()\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # App Engine Example\n appengineNeg:\n type: gcp:compute:RegionNetworkEndpointGroup\n name: appengine_neg\n properties:\n name: appengine-neg\n networkEndpointType: SERVERLESS\n region: us-central1\n appEngine: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Network Endpoint Group Psc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pscNeg = new gcp.compute.RegionNetworkEndpointGroup(\"psc_neg\", {\n name: \"psc-neg\",\n region: \"asia-northeast3\",\n networkEndpointType: \"PRIVATE_SERVICE_CONNECT\",\n pscTargetService: \"asia-northeast3-cloudkms.googleapis.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npsc_neg = gcp.compute.RegionNetworkEndpointGroup(\"psc_neg\",\n name=\"psc-neg\",\n region=\"asia-northeast3\",\n network_endpoint_type=\"PRIVATE_SERVICE_CONNECT\",\n psc_target_service=\"asia-northeast3-cloudkms.googleapis.com\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var pscNeg = new Gcp.Compute.RegionNetworkEndpointGroup(\"psc_neg\", new()\n {\n Name = \"psc-neg\",\n Region = \"asia-northeast3\",\n NetworkEndpointType = \"PRIVATE_SERVICE_CONNECT\",\n PscTargetService = \"asia-northeast3-cloudkms.googleapis.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewRegionNetworkEndpointGroup(ctx, \"psc_neg\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"psc-neg\"),\n\t\t\tRegion: pulumi.String(\"asia-northeast3\"),\n\t\t\tNetworkEndpointType: pulumi.String(\"PRIVATE_SERVICE_CONNECT\"),\n\t\t\tPscTargetService: pulumi.String(\"asia-northeast3-cloudkms.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroup;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var pscNeg = new RegionNetworkEndpointGroup(\"pscNeg\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"psc-neg\")\n .region(\"asia-northeast3\")\n .networkEndpointType(\"PRIVATE_SERVICE_CONNECT\")\n .pscTargetService(\"asia-northeast3-cloudkms.googleapis.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pscNeg:\n type: gcp:compute:RegionNetworkEndpointGroup\n name: psc_neg\n properties:\n name: psc-neg\n region: asia-northeast3\n networkEndpointType: PRIVATE_SERVICE_CONNECT\n pscTargetService: asia-northeast3-cloudkms.googleapis.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Network Endpoint Group Psc Service Attachment\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {name: \"psc-network\"});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"psc-subnetwork\",\n ipCidrRange: \"10.0.0.0/16\",\n region: \"europe-west4\",\n network: _default.id,\n});\nconst pscSubnetwork = new gcp.compute.Subnetwork(\"psc_subnetwork\", {\n name: \"psc-subnetwork-nat\",\n ipCidrRange: \"10.1.0.0/16\",\n region: \"europe-west4\",\n purpose: \"PRIVATE_SERVICE_CONNECT\",\n network: _default.id,\n});\nconst defaultHealthCheck = new gcp.compute.HealthCheck(\"default\", {\n name: \"psc-healthcheck\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n});\nconst defaultRegionBackendService = new gcp.compute.RegionBackendService(\"default\", {\n name: \"psc-backend\",\n region: \"europe-west4\",\n healthChecks: defaultHealthCheck.id,\n});\nconst defaultForwardingRule = new gcp.compute.ForwardingRule(\"default\", {\n name: \"psc-forwarding-rule\",\n region: \"europe-west4\",\n loadBalancingScheme: \"INTERNAL\",\n backendService: defaultRegionBackendService.id,\n allPorts: true,\n network: _default.name,\n subnetwork: defaultSubnetwork.name,\n});\nconst defaultServiceAttachment = new gcp.compute.ServiceAttachment(\"default\", {\n name: \"psc-service-attachment\",\n region: \"europe-west4\",\n description: \"A service attachment configured with Terraform\",\n enableProxyProtocol: false,\n connectionPreference: \"ACCEPT_AUTOMATIC\",\n natSubnets: [pscSubnetwork.selfLink],\n targetService: defaultForwardingRule.selfLink,\n});\nconst pscNegServiceAttachment = new gcp.compute.RegionNetworkEndpointGroup(\"psc_neg_service_attachment\", {\n name: \"psc-neg\",\n region: \"europe-west4\",\n networkEndpointType: \"PRIVATE_SERVICE_CONNECT\",\n pscTargetService: defaultServiceAttachment.selfLink,\n network: _default.selfLink,\n subnetwork: defaultSubnetwork.selfLink,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\", name=\"psc-network\")\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"psc-subnetwork\",\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"europe-west4\",\n network=default.id)\npsc_subnetwork = gcp.compute.Subnetwork(\"psc_subnetwork\",\n name=\"psc-subnetwork-nat\",\n ip_cidr_range=\"10.1.0.0/16\",\n region=\"europe-west4\",\n purpose=\"PRIVATE_SERVICE_CONNECT\",\n network=default.id)\ndefault_health_check = gcp.compute.HealthCheck(\"default\",\n name=\"psc-healthcheck\",\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 80,\n })\ndefault_region_backend_service = gcp.compute.RegionBackendService(\"default\",\n name=\"psc-backend\",\n region=\"europe-west4\",\n health_checks=default_health_check.id)\ndefault_forwarding_rule = gcp.compute.ForwardingRule(\"default\",\n name=\"psc-forwarding-rule\",\n region=\"europe-west4\",\n load_balancing_scheme=\"INTERNAL\",\n backend_service=default_region_backend_service.id,\n all_ports=True,\n network=default.name,\n subnetwork=default_subnetwork.name)\ndefault_service_attachment = gcp.compute.ServiceAttachment(\"default\",\n name=\"psc-service-attachment\",\n region=\"europe-west4\",\n description=\"A service attachment configured with Terraform\",\n enable_proxy_protocol=False,\n connection_preference=\"ACCEPT_AUTOMATIC\",\n nat_subnets=[psc_subnetwork.self_link],\n target_service=default_forwarding_rule.self_link)\npsc_neg_service_attachment = gcp.compute.RegionNetworkEndpointGroup(\"psc_neg_service_attachment\",\n name=\"psc-neg\",\n region=\"europe-west4\",\n network_endpoint_type=\"PRIVATE_SERVICE_CONNECT\",\n psc_target_service=default_service_attachment.self_link,\n network=default.self_link,\n subnetwork=default_subnetwork.self_link)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"psc-network\",\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"psc-subnetwork\",\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"europe-west4\",\n Network = @default.Id,\n });\n\n var pscSubnetwork = new Gcp.Compute.Subnetwork(\"psc_subnetwork\", new()\n {\n Name = \"psc-subnetwork-nat\",\n IpCidrRange = \"10.1.0.0/16\",\n Region = \"europe-west4\",\n Purpose = \"PRIVATE_SERVICE_CONNECT\",\n Network = @default.Id,\n });\n\n var defaultHealthCheck = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"psc-healthcheck\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var defaultRegionBackendService = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n Name = \"psc-backend\",\n Region = \"europe-west4\",\n HealthChecks = defaultHealthCheck.Id,\n });\n\n var defaultForwardingRule = new Gcp.Compute.ForwardingRule(\"default\", new()\n {\n Name = \"psc-forwarding-rule\",\n Region = \"europe-west4\",\n LoadBalancingScheme = \"INTERNAL\",\n BackendService = defaultRegionBackendService.Id,\n AllPorts = true,\n Network = @default.Name,\n Subnetwork = defaultSubnetwork.Name,\n });\n\n var defaultServiceAttachment = new Gcp.Compute.ServiceAttachment(\"default\", new()\n {\n Name = \"psc-service-attachment\",\n Region = \"europe-west4\",\n Description = \"A service attachment configured with Terraform\",\n EnableProxyProtocol = false,\n ConnectionPreference = \"ACCEPT_AUTOMATIC\",\n NatSubnets = new[]\n {\n pscSubnetwork.SelfLink,\n },\n TargetService = defaultForwardingRule.SelfLink,\n });\n\n var pscNegServiceAttachment = new Gcp.Compute.RegionNetworkEndpointGroup(\"psc_neg_service_attachment\", new()\n {\n Name = \"psc-neg\",\n Region = \"europe-west4\",\n NetworkEndpointType = \"PRIVATE_SERVICE_CONNECT\",\n PscTargetService = defaultServiceAttachment.SelfLink,\n Network = @default.SelfLink,\n Subnetwork = defaultSubnetwork.SelfLink,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"psc-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"psc-subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"europe-west4\"),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscSubnetwork, err := compute.NewSubnetwork(ctx, \"psc_subnetwork\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"psc-subnetwork-nat\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.1.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"europe-west4\"),\n\t\t\tPurpose: pulumi.String(\"PRIVATE_SERVICE_CONNECT\"),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHealthCheck, err := compute.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"psc-healthcheck\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionBackendService, err := compute.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"psc-backend\"),\n\t\t\tRegion: pulumi.String(\"europe-west4\"),\n\t\t\tHealthChecks: defaultHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultForwardingRule, err := compute.NewForwardingRule(ctx, \"default\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"psc-forwarding-rule\"),\n\t\t\tRegion: pulumi.String(\"europe-west4\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL\"),\n\t\t\tBackendService: defaultRegionBackendService.ID(),\n\t\t\tAllPorts: pulumi.Bool(true),\n\t\t\tNetwork: _default.Name,\n\t\t\tSubnetwork: defaultSubnetwork.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultServiceAttachment, err := compute.NewServiceAttachment(ctx, \"default\", \u0026compute.ServiceAttachmentArgs{\n\t\t\tName: pulumi.String(\"psc-service-attachment\"),\n\t\t\tRegion: pulumi.String(\"europe-west4\"),\n\t\t\tDescription: pulumi.String(\"A service attachment configured with Terraform\"),\n\t\t\tEnableProxyProtocol: pulumi.Bool(false),\n\t\t\tConnectionPreference: pulumi.String(\"ACCEPT_AUTOMATIC\"),\n\t\t\tNatSubnets: pulumi.StringArray{\n\t\t\t\tpscSubnetwork.SelfLink,\n\t\t\t},\n\t\t\tTargetService: defaultForwardingRule.SelfLink,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionNetworkEndpointGroup(ctx, \"psc_neg_service_attachment\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"psc-neg\"),\n\t\t\tRegion: pulumi.String(\"europe-west4\"),\n\t\t\tNetworkEndpointType: pulumi.String(\"PRIVATE_SERVICE_CONNECT\"),\n\t\t\tPscTargetService: defaultServiceAttachment.SelfLink,\n\t\t\tNetwork: _default.SelfLink,\n\t\t\tSubnetwork: defaultSubnetwork.SelfLink,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckTcpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.gcp.compute.ServiceAttachment;\nimport com.pulumi.gcp.compute.ServiceAttachmentArgs;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroup;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"psc-network\")\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"psc-subnetwork\")\n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"europe-west4\")\n .network(default_.id())\n .build());\n\n var pscSubnetwork = new Subnetwork(\"pscSubnetwork\", SubnetworkArgs.builder()\n .name(\"psc-subnetwork-nat\")\n .ipCidrRange(\"10.1.0.0/16\")\n .region(\"europe-west4\")\n .purpose(\"PRIVATE_SERVICE_CONNECT\")\n .network(default_.id())\n .build());\n\n var defaultHealthCheck = new HealthCheck(\"defaultHealthCheck\", HealthCheckArgs.builder()\n .name(\"psc-healthcheck\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build());\n\n var defaultRegionBackendService = new RegionBackendService(\"defaultRegionBackendService\", RegionBackendServiceArgs.builder()\n .name(\"psc-backend\")\n .region(\"europe-west4\")\n .healthChecks(defaultHealthCheck.id())\n .build());\n\n var defaultForwardingRule = new ForwardingRule(\"defaultForwardingRule\", ForwardingRuleArgs.builder()\n .name(\"psc-forwarding-rule\")\n .region(\"europe-west4\")\n .loadBalancingScheme(\"INTERNAL\")\n .backendService(defaultRegionBackendService.id())\n .allPorts(true)\n .network(default_.name())\n .subnetwork(defaultSubnetwork.name())\n .build());\n\n var defaultServiceAttachment = new ServiceAttachment(\"defaultServiceAttachment\", ServiceAttachmentArgs.builder()\n .name(\"psc-service-attachment\")\n .region(\"europe-west4\")\n .description(\"A service attachment configured with Terraform\")\n .enableProxyProtocol(false)\n .connectionPreference(\"ACCEPT_AUTOMATIC\")\n .natSubnets(pscSubnetwork.selfLink())\n .targetService(defaultForwardingRule.selfLink())\n .build());\n\n var pscNegServiceAttachment = new RegionNetworkEndpointGroup(\"pscNegServiceAttachment\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"psc-neg\")\n .region(\"europe-west4\")\n .networkEndpointType(\"PRIVATE_SERVICE_CONNECT\")\n .pscTargetService(defaultServiceAttachment.selfLink())\n .network(default_.selfLink())\n .subnetwork(defaultSubnetwork.selfLink())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: psc-network\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: psc-subnetwork\n ipCidrRange: 10.0.0.0/16\n region: europe-west4\n network: ${default.id}\n pscSubnetwork:\n type: gcp:compute:Subnetwork\n name: psc_subnetwork\n properties:\n name: psc-subnetwork-nat\n ipCidrRange: 10.1.0.0/16\n region: europe-west4\n purpose: PRIVATE_SERVICE_CONNECT\n network: ${default.id}\n defaultHealthCheck:\n type: gcp:compute:HealthCheck\n name: default\n properties:\n name: psc-healthcheck\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n defaultRegionBackendService:\n type: gcp:compute:RegionBackendService\n name: default\n properties:\n name: psc-backend\n region: europe-west4\n healthChecks: ${defaultHealthCheck.id}\n defaultForwardingRule:\n type: gcp:compute:ForwardingRule\n name: default\n properties:\n name: psc-forwarding-rule\n region: europe-west4\n loadBalancingScheme: INTERNAL\n backendService: ${defaultRegionBackendService.id}\n allPorts: true\n network: ${default.name}\n subnetwork: ${defaultSubnetwork.name}\n defaultServiceAttachment:\n type: gcp:compute:ServiceAttachment\n name: default\n properties:\n name: psc-service-attachment\n region: europe-west4\n description: A service attachment configured with Terraform\n enableProxyProtocol: false\n connectionPreference: ACCEPT_AUTOMATIC\n natSubnets:\n - ${pscSubnetwork.selfLink}\n targetService: ${defaultForwardingRule.selfLink}\n pscNegServiceAttachment:\n type: gcp:compute:RegionNetworkEndpointGroup\n name: psc_neg_service_attachment\n properties:\n name: psc-neg\n region: europe-west4\n networkEndpointType: PRIVATE_SERVICE_CONNECT\n pscTargetService: ${defaultServiceAttachment.selfLink}\n network: ${default.selfLink}\n subnetwork: ${defaultSubnetwork.selfLink}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Network Endpoint Group Internet Ip Port\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {name: \"network\"});\nconst regionNetworkEndpointGroupInternetIpPort = new gcp.compute.RegionNetworkEndpointGroup(\"region_network_endpoint_group_internet_ip_port\", {\n name: \"ip-port-neg\",\n region: \"us-central1\",\n network: _default.id,\n networkEndpointType: \"INTERNET_IP_PORT\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\", name=\"network\")\nregion_network_endpoint_group_internet_ip_port = gcp.compute.RegionNetworkEndpointGroup(\"region_network_endpoint_group_internet_ip_port\",\n name=\"ip-port-neg\",\n region=\"us-central1\",\n network=default.id,\n network_endpoint_type=\"INTERNET_IP_PORT\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"network\",\n });\n\n var regionNetworkEndpointGroupInternetIpPort = new Gcp.Compute.RegionNetworkEndpointGroup(\"region_network_endpoint_group_internet_ip_port\", new()\n {\n Name = \"ip-port-neg\",\n Region = \"us-central1\",\n Network = @default.Id,\n NetworkEndpointType = \"INTERNET_IP_PORT\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionNetworkEndpointGroup(ctx, \"region_network_endpoint_group_internet_ip_port\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"ip-port-neg\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tNetworkEndpointType: pulumi.String(\"INTERNET_IP_PORT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroup;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"network\")\n .build());\n\n var regionNetworkEndpointGroupInternetIpPort = new RegionNetworkEndpointGroup(\"regionNetworkEndpointGroupInternetIpPort\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"ip-port-neg\")\n .region(\"us-central1\")\n .network(default_.id())\n .networkEndpointType(\"INTERNET_IP_PORT\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regionNetworkEndpointGroupInternetIpPort:\n type: gcp:compute:RegionNetworkEndpointGroup\n name: region_network_endpoint_group_internet_ip_port\n properties:\n name: ip-port-neg\n region: us-central1\n network: ${default.id}\n networkEndpointType: INTERNET_IP_PORT\n default:\n type: gcp:compute:Network\n properties:\n name: network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Network Endpoint Group Internet Fqdn Port\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {name: \"network\"});\nconst regionNetworkEndpointGroupInternetFqdnPort = new gcp.compute.RegionNetworkEndpointGroup(\"region_network_endpoint_group_internet_fqdn_port\", {\n name: \"ip-port-neg\",\n region: \"us-central1\",\n network: _default.id,\n networkEndpointType: \"INTERNET_FQDN_PORT\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\", name=\"network\")\nregion_network_endpoint_group_internet_fqdn_port = gcp.compute.RegionNetworkEndpointGroup(\"region_network_endpoint_group_internet_fqdn_port\",\n name=\"ip-port-neg\",\n region=\"us-central1\",\n network=default.id,\n network_endpoint_type=\"INTERNET_FQDN_PORT\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"network\",\n });\n\n var regionNetworkEndpointGroupInternetFqdnPort = new Gcp.Compute.RegionNetworkEndpointGroup(\"region_network_endpoint_group_internet_fqdn_port\", new()\n {\n Name = \"ip-port-neg\",\n Region = \"us-central1\",\n Network = @default.Id,\n NetworkEndpointType = \"INTERNET_FQDN_PORT\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionNetworkEndpointGroup(ctx, \"region_network_endpoint_group_internet_fqdn_port\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"ip-port-neg\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tNetworkEndpointType: pulumi.String(\"INTERNET_FQDN_PORT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroup;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"network\")\n .build());\n\n var regionNetworkEndpointGroupInternetFqdnPort = new RegionNetworkEndpointGroup(\"regionNetworkEndpointGroupInternetFqdnPort\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"ip-port-neg\")\n .region(\"us-central1\")\n .network(default_.id())\n .networkEndpointType(\"INTERNET_FQDN_PORT\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regionNetworkEndpointGroupInternetFqdnPort:\n type: gcp:compute:RegionNetworkEndpointGroup\n name: region_network_endpoint_group_internet_fqdn_port\n properties:\n name: ip-port-neg\n region: us-central1\n network: ${default.id}\n networkEndpointType: INTERNET_FQDN_PORT\n default:\n type: gcp:compute:Network\n properties:\n name: network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Network Endpoint Group Portmap\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {name: \"network\"});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"subnetwork\",\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n network: _default.id,\n});\nconst regionNetworkEndpointGroupPortmap = new gcp.compute.RegionNetworkEndpointGroup(\"region_network_endpoint_group_portmap\", {\n name: \"portmap-neg\",\n region: \"us-central1\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n networkEndpointType: \"GCE_VM_IP_PORTMAP\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\", name=\"network\")\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"subnetwork\",\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\",\n network=default.id)\nregion_network_endpoint_group_portmap = gcp.compute.RegionNetworkEndpointGroup(\"region_network_endpoint_group_portmap\",\n name=\"portmap-neg\",\n region=\"us-central1\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n network_endpoint_type=\"GCE_VM_IP_PORTMAP\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"network\",\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"subnetwork\",\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n Network = @default.Id,\n });\n\n var regionNetworkEndpointGroupPortmap = new Gcp.Compute.RegionNetworkEndpointGroup(\"region_network_endpoint_group_portmap\", new()\n {\n Name = \"portmap-neg\",\n Region = \"us-central1\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n NetworkEndpointType = \"GCE_VM_IP_PORTMAP\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionNetworkEndpointGroup(ctx, \"region_network_endpoint_group_portmap\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"portmap-neg\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tNetworkEndpointType: pulumi.String(\"GCE_VM_IP_PORTMAP\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroup;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"network\")\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"subnetwork\")\n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .network(default_.id())\n .build());\n\n var regionNetworkEndpointGroupPortmap = new RegionNetworkEndpointGroup(\"regionNetworkEndpointGroupPortmap\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"portmap-neg\")\n .region(\"us-central1\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .networkEndpointType(\"GCE_VM_IP_PORTMAP\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regionNetworkEndpointGroupPortmap:\n type: gcp:compute:RegionNetworkEndpointGroup\n name: region_network_endpoint_group_portmap\n properties:\n name: portmap-neg\n region: us-central1\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n networkEndpointType: GCE_VM_IP_PORTMAP\n default:\n type: gcp:compute:Network\n properties:\n name: network\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: subnetwork\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n network: ${default.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRegionNetworkEndpointGroup can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/networkEndpointGroups/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, RegionNetworkEndpointGroup can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/regionNetworkEndpointGroup:RegionNetworkEndpointGroup default projects/{{project}}/regions/{{region}}/networkEndpointGroups/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionNetworkEndpointGroup:RegionNetworkEndpointGroup default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionNetworkEndpointGroup:RegionNetworkEndpointGroup default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionNetworkEndpointGroup:RegionNetworkEndpointGroup default {{name}}\n```\n\n", + "description": "A regional NEG that can support Serverless Products, proxying traffic to\nexternal backends and providing traffic to the PSC port mapping endpoints.\n\nTo get more information about RegionNetworkEndpointGroup, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/beta/regionNetworkEndpointGroups)\n* How-to Guides\n * [Internet NEGs Official Documentation](https://cloud.google.com/load-balancing/docs/negs/internet-neg-concepts)\n * [Serverless NEGs Official Documentation](https://cloud.google.com/load-balancing/docs/negs/serverless-neg-concepts)\n\n## Example Usage\n\n### Region Network Endpoint Group Functions\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"cloudfunctions-function-example-bucket\",\n location: \"US\",\n});\nconst archive = new gcp.storage.BucketObject(\"archive\", {\n name: \"index.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"path/to/index.zip\"),\n});\nconst functionNegFunction = new gcp.cloudfunctions.Function(\"function_neg\", {\n name: \"function-neg\",\n description: \"My function\",\n runtime: \"nodejs10\",\n availableMemoryMb: 128,\n sourceArchiveBucket: bucket.name,\n sourceArchiveObject: archive.name,\n triggerHttp: true,\n timeout: 60,\n entryPoint: \"helloGET\",\n});\n// Cloud Functions Example\nconst functionNeg = new gcp.compute.RegionNetworkEndpointGroup(\"function_neg\", {\n name: \"function-neg\",\n networkEndpointType: \"SERVERLESS\",\n region: \"us-central1\",\n cloudFunction: {\n \"function\": functionNegFunction.name,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"cloudfunctions-function-example-bucket\",\n location=\"US\")\narchive = gcp.storage.BucketObject(\"archive\",\n name=\"index.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"path/to/index.zip\"))\nfunction_neg_function = gcp.cloudfunctions.Function(\"function_neg\",\n name=\"function-neg\",\n description=\"My function\",\n runtime=\"nodejs10\",\n available_memory_mb=128,\n source_archive_bucket=bucket.name,\n source_archive_object=archive.name,\n trigger_http=True,\n timeout=60,\n entry_point=\"helloGET\")\n# Cloud Functions Example\nfunction_neg = gcp.compute.RegionNetworkEndpointGroup(\"function_neg\",\n name=\"function-neg\",\n network_endpoint_type=\"SERVERLESS\",\n region=\"us-central1\",\n cloud_function={\n \"function\": function_neg_function.name,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = \"cloudfunctions-function-example-bucket\",\n Location = \"US\",\n });\n\n var archive = new Gcp.Storage.BucketObject(\"archive\", new()\n {\n Name = \"index.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"path/to/index.zip\"),\n });\n\n var functionNegFunction = new Gcp.CloudFunctions.Function(\"function_neg\", new()\n {\n Name = \"function-neg\",\n Description = \"My function\",\n Runtime = \"nodejs10\",\n AvailableMemoryMb = 128,\n SourceArchiveBucket = bucket.Name,\n SourceArchiveObject = archive.Name,\n TriggerHttp = true,\n Timeout = 60,\n EntryPoint = \"helloGET\",\n });\n\n // Cloud Functions Example\n var functionNeg = new Gcp.Compute.RegionNetworkEndpointGroup(\"function_neg\", new()\n {\n Name = \"function-neg\",\n NetworkEndpointType = \"SERVERLESS\",\n Region = \"us-central1\",\n CloudFunction = new Gcp.Compute.Inputs.RegionNetworkEndpointGroupCloudFunctionArgs\n {\n Function = functionNegFunction.Name,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctions\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"cloudfunctions-function-example-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tarchive, err := storage.NewBucketObject(ctx, \"archive\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"index.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"path/to/index.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfunctionNegFunction, err := cloudfunctions.NewFunction(ctx, \"function_neg\", \u0026cloudfunctions.FunctionArgs{\n\t\t\tName: pulumi.String(\"function-neg\"),\n\t\t\tDescription: pulumi.String(\"My function\"),\n\t\t\tRuntime: pulumi.String(\"nodejs10\"),\n\t\t\tAvailableMemoryMb: pulumi.Int(128),\n\t\t\tSourceArchiveBucket: bucket.Name,\n\t\t\tSourceArchiveObject: archive.Name,\n\t\t\tTriggerHttp: pulumi.Bool(true),\n\t\t\tTimeout: pulumi.Int(60),\n\t\t\tEntryPoint: pulumi.String(\"helloGET\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Cloud Functions Example\n\t\t_, err = compute.NewRegionNetworkEndpointGroup(ctx, \"function_neg\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"function-neg\"),\n\t\t\tNetworkEndpointType: pulumi.String(\"SERVERLESS\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tCloudFunction: \u0026compute.RegionNetworkEndpointGroupCloudFunctionArgs{\n\t\t\t\tFunction: functionNegFunction.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.cloudfunctions.Function;\nimport com.pulumi.gcp.cloudfunctions.FunctionArgs;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroup;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroupArgs;\nimport com.pulumi.gcp.compute.inputs.RegionNetworkEndpointGroupCloudFunctionArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(\"cloudfunctions-function-example-bucket\")\n .location(\"US\")\n .build());\n\n var archive = new BucketObject(\"archive\", BucketObjectArgs.builder()\n .name(\"index.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"path/to/index.zip\"))\n .build());\n\n var functionNegFunction = new Function(\"functionNegFunction\", FunctionArgs.builder()\n .name(\"function-neg\")\n .description(\"My function\")\n .runtime(\"nodejs10\")\n .availableMemoryMb(128)\n .sourceArchiveBucket(bucket.name())\n .sourceArchiveObject(archive.name())\n .triggerHttp(true)\n .timeout(60)\n .entryPoint(\"helloGET\")\n .build());\n\n // Cloud Functions Example\n var functionNeg = new RegionNetworkEndpointGroup(\"functionNeg\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"function-neg\")\n .networkEndpointType(\"SERVERLESS\")\n .region(\"us-central1\")\n .cloudFunction(RegionNetworkEndpointGroupCloudFunctionArgs.builder()\n .function(functionNegFunction.name())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Cloud Functions Example\n functionNeg:\n type: gcp:compute:RegionNetworkEndpointGroup\n name: function_neg\n properties:\n name: function-neg\n networkEndpointType: SERVERLESS\n region: us-central1\n cloudFunction:\n function: ${functionNegFunction.name}\n functionNegFunction:\n type: gcp:cloudfunctions:Function\n name: function_neg\n properties:\n name: function-neg\n description: My function\n runtime: nodejs10\n availableMemoryMb: 128\n sourceArchiveBucket: ${bucket.name}\n sourceArchiveObject: ${archive.name}\n triggerHttp: true\n timeout: 60\n entryPoint: helloGET\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: cloudfunctions-function-example-bucket\n location: US\n archive:\n type: gcp:storage:BucketObject\n properties:\n name: index.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: path/to/index.zip\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Network Endpoint Group Cloudrun\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cloudrunNegService = new gcp.cloudrun.Service(\"cloudrun_neg\", {\n name: \"cloudrun-neg\",\n location: \"us-central1\",\n template: {\n spec: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n },\n traffics: [{\n percent: 100,\n latestRevision: true,\n }],\n});\n// Cloud Run Example\nconst cloudrunNeg = new gcp.compute.RegionNetworkEndpointGroup(\"cloudrun_neg\", {\n name: \"cloudrun-neg\",\n networkEndpointType: \"SERVERLESS\",\n region: \"us-central1\",\n cloudRun: {\n service: cloudrunNegService.name,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncloudrun_neg_service = gcp.cloudrun.Service(\"cloudrun_neg\",\n name=\"cloudrun-neg\",\n location=\"us-central1\",\n template={\n \"spec\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n },\n traffics=[{\n \"percent\": 100,\n \"latest_revision\": True,\n }])\n# Cloud Run Example\ncloudrun_neg = gcp.compute.RegionNetworkEndpointGroup(\"cloudrun_neg\",\n name=\"cloudrun-neg\",\n network_endpoint_type=\"SERVERLESS\",\n region=\"us-central1\",\n cloud_run={\n \"service\": cloudrun_neg_service.name,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cloudrunNegService = new Gcp.CloudRun.Service(\"cloudrun_neg\", new()\n {\n Name = \"cloudrun-neg\",\n Location = \"us-central1\",\n Template = new Gcp.CloudRun.Inputs.ServiceTemplateArgs\n {\n Spec = new Gcp.CloudRun.Inputs.ServiceTemplateSpecArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n },\n },\n Traffics = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTrafficArgs\n {\n Percent = 100,\n LatestRevision = true,\n },\n },\n });\n\n // Cloud Run Example\n var cloudrunNeg = new Gcp.Compute.RegionNetworkEndpointGroup(\"cloudrun_neg\", new()\n {\n Name = \"cloudrun-neg\",\n NetworkEndpointType = \"SERVERLESS\",\n Region = \"us-central1\",\n CloudRun = new Gcp.Compute.Inputs.RegionNetworkEndpointGroupCloudRunArgs\n {\n Service = cloudrunNegService.Name,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrun\"\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\tcloudrunNegService, err := cloudrun.NewService(ctx, \"cloudrun_neg\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-neg\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTemplate: \u0026cloudrun.ServiceTemplateArgs{\n\t\t\t\tSpec: \u0026cloudrun.ServiceTemplateSpecArgs{\n\t\t\t\t\tContainers: cloudrun.ServiceTemplateSpecContainerArray{\n\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTraffics: cloudrun.ServiceTrafficArray{\n\t\t\t\t\u0026cloudrun.ServiceTrafficArgs{\n\t\t\t\t\tPercent: pulumi.Int(100),\n\t\t\t\t\tLatestRevision: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Cloud Run Example\n\t\t_, err = compute.NewRegionNetworkEndpointGroup(ctx, \"cloudrun_neg\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"cloudrun-neg\"),\n\t\t\tNetworkEndpointType: pulumi.String(\"SERVERLESS\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tCloudRun: \u0026compute.RegionNetworkEndpointGroupCloudRunArgs{\n\t\t\t\tService: cloudrunNegService.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudrun.Service;\nimport com.pulumi.gcp.cloudrun.ServiceArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateSpecArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTrafficArgs;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroup;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroupArgs;\nimport com.pulumi.gcp.compute.inputs.RegionNetworkEndpointGroupCloudRunArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cloudrunNegService = new Service(\"cloudrunNegService\", ServiceArgs.builder()\n .name(\"cloudrun-neg\")\n .location(\"us-central1\")\n .template(ServiceTemplateArgs.builder()\n .spec(ServiceTemplateSpecArgs.builder()\n .containers(ServiceTemplateSpecContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .build())\n .build())\n .traffics(ServiceTrafficArgs.builder()\n .percent(100)\n .latestRevision(true)\n .build())\n .build());\n\n // Cloud Run Example\n var cloudrunNeg = new RegionNetworkEndpointGroup(\"cloudrunNeg\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"cloudrun-neg\")\n .networkEndpointType(\"SERVERLESS\")\n .region(\"us-central1\")\n .cloudRun(RegionNetworkEndpointGroupCloudRunArgs.builder()\n .service(cloudrunNegService.name())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Cloud Run Example\n cloudrunNeg:\n type: gcp:compute:RegionNetworkEndpointGroup\n name: cloudrun_neg\n properties:\n name: cloudrun-neg\n networkEndpointType: SERVERLESS\n region: us-central1\n cloudRun:\n service: ${cloudrunNegService.name}\n cloudrunNegService:\n type: gcp:cloudrun:Service\n name: cloudrun_neg\n properties:\n name: cloudrun-neg\n location: us-central1\n template:\n spec:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n traffics:\n - percent: 100\n latestRevision: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Network Endpoint Group Appengine\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst appengineNegBucket = new gcp.storage.Bucket(\"appengine_neg\", {\n name: \"appengine-neg\",\n location: \"US\",\n});\nconst appengineNegBucketObject = new gcp.storage.BucketObject(\"appengine_neg\", {\n name: \"hello-world.zip\",\n bucket: appengineNegBucket.name,\n source: new pulumi.asset.FileAsset(\"./test-fixtures/hello-world.zip\"),\n});\nconst appengineNegFlexibleAppVersion = new gcp.appengine.FlexibleAppVersion(\"appengine_neg\", {\n versionId: \"v1\",\n service: \"appengine-network-endpoint-group\",\n runtime: \"nodejs\",\n flexibleRuntimeSettings: {\n operatingSystem: \"ubuntu22\",\n runtimeVersion: \"20\",\n },\n entrypoint: {\n shell: \"node ./app.js\",\n },\n deployment: {\n zip: {\n sourceUrl: pulumi.interpolate`https://storage.googleapis.com/${appengineNegBucket.name}/${appengineNegBucketObject.name}`,\n },\n },\n livenessCheck: {\n path: \"/\",\n },\n readinessCheck: {\n path: \"/\",\n },\n envVariables: {\n port: \"8080\",\n },\n handlers: [{\n urlRegex: \".*\\\\/my-path\\\\/*\",\n securityLevel: \"SECURE_ALWAYS\",\n login: \"LOGIN_REQUIRED\",\n authFailAction: \"AUTH_FAIL_ACTION_REDIRECT\",\n staticFiles: {\n path: \"my-other-path\",\n uploadPathRegex: \".*\\\\/my-path\\\\/*\",\n },\n }],\n automaticScaling: {\n coolDownPeriod: \"120s\",\n cpuUtilization: {\n targetUtilization: 0.5,\n },\n },\n deleteServiceOnDestroy: true,\n});\n// App Engine Example\nconst appengineNeg = new gcp.compute.RegionNetworkEndpointGroup(\"appengine_neg\", {\n name: \"appengine-neg\",\n networkEndpointType: \"SERVERLESS\",\n region: \"us-central1\",\n appEngine: {\n service: appengineNegFlexibleAppVersion.service,\n version: appengineNegFlexibleAppVersion.versionId,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nappengine_neg_bucket = gcp.storage.Bucket(\"appengine_neg\",\n name=\"appengine-neg\",\n location=\"US\")\nappengine_neg_bucket_object = gcp.storage.BucketObject(\"appengine_neg\",\n name=\"hello-world.zip\",\n bucket=appengine_neg_bucket.name,\n source=pulumi.FileAsset(\"./test-fixtures/hello-world.zip\"))\nappengine_neg_flexible_app_version = gcp.appengine.FlexibleAppVersion(\"appengine_neg\",\n version_id=\"v1\",\n service=\"appengine-network-endpoint-group\",\n runtime=\"nodejs\",\n flexible_runtime_settings={\n \"operating_system\": \"ubuntu22\",\n \"runtime_version\": \"20\",\n },\n entrypoint={\n \"shell\": \"node ./app.js\",\n },\n deployment={\n \"zip\": {\n \"source_url\": pulumi.Output.all(\n appengineNegBucketName=appengine_neg_bucket.name,\n appengineNegBucketObjectName=appengine_neg_bucket_object.name\n).apply(lambda resolved_outputs: f\"https://storage.googleapis.com/{resolved_outputs['appengineNegBucketName']}/{resolved_outputs['appengineNegBucketObjectName']}\")\n,\n },\n },\n liveness_check={\n \"path\": \"/\",\n },\n readiness_check={\n \"path\": \"/\",\n },\n env_variables={\n \"port\": \"8080\",\n },\n handlers=[{\n \"url_regex\": \".*\\\\/my-path\\\\/*\",\n \"security_level\": \"SECURE_ALWAYS\",\n \"login\": \"LOGIN_REQUIRED\",\n \"auth_fail_action\": \"AUTH_FAIL_ACTION_REDIRECT\",\n \"static_files\": {\n \"path\": \"my-other-path\",\n \"upload_path_regex\": \".*\\\\/my-path\\\\/*\",\n },\n }],\n automatic_scaling={\n \"cool_down_period\": \"120s\",\n \"cpu_utilization\": {\n \"target_utilization\": 0.5,\n },\n },\n delete_service_on_destroy=True)\n# App Engine Example\nappengine_neg = gcp.compute.RegionNetworkEndpointGroup(\"appengine_neg\",\n name=\"appengine-neg\",\n network_endpoint_type=\"SERVERLESS\",\n region=\"us-central1\",\n app_engine={\n \"service\": appengine_neg_flexible_app_version.service,\n \"version\": appengine_neg_flexible_app_version.version_id,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var appengineNegBucket = new Gcp.Storage.Bucket(\"appengine_neg\", new()\n {\n Name = \"appengine-neg\",\n Location = \"US\",\n });\n\n var appengineNegBucketObject = new Gcp.Storage.BucketObject(\"appengine_neg\", new()\n {\n Name = \"hello-world.zip\",\n Bucket = appengineNegBucket.Name,\n Source = new FileAsset(\"./test-fixtures/hello-world.zip\"),\n });\n\n var appengineNegFlexibleAppVersion = new Gcp.AppEngine.FlexibleAppVersion(\"appengine_neg\", new()\n {\n VersionId = \"v1\",\n Service = \"appengine-network-endpoint-group\",\n Runtime = \"nodejs\",\n FlexibleRuntimeSettings = new Gcp.AppEngine.Inputs.FlexibleAppVersionFlexibleRuntimeSettingsArgs\n {\n OperatingSystem = \"ubuntu22\",\n RuntimeVersion = \"20\",\n },\n Entrypoint = new Gcp.AppEngine.Inputs.FlexibleAppVersionEntrypointArgs\n {\n Shell = \"node ./app.js\",\n },\n Deployment = new Gcp.AppEngine.Inputs.FlexibleAppVersionDeploymentArgs\n {\n Zip = new Gcp.AppEngine.Inputs.FlexibleAppVersionDeploymentZipArgs\n {\n SourceUrl = Output.Tuple(appengineNegBucket.Name, appengineNegBucketObject.Name).Apply(values =\u003e\n {\n var appengineNegBucketName = values.Item1;\n var appengineNegBucketObjectName = values.Item2;\n return $\"https://storage.googleapis.com/{appengineNegBucketName}/{appengineNegBucketObjectName}\";\n }),\n },\n },\n LivenessCheck = new Gcp.AppEngine.Inputs.FlexibleAppVersionLivenessCheckArgs\n {\n Path = \"/\",\n },\n ReadinessCheck = new Gcp.AppEngine.Inputs.FlexibleAppVersionReadinessCheckArgs\n {\n Path = \"/\",\n },\n EnvVariables = \n {\n { \"port\", \"8080\" },\n },\n Handlers = new[]\n {\n new Gcp.AppEngine.Inputs.FlexibleAppVersionHandlerArgs\n {\n UrlRegex = \".*\\\\/my-path\\\\/*\",\n SecurityLevel = \"SECURE_ALWAYS\",\n Login = \"LOGIN_REQUIRED\",\n AuthFailAction = \"AUTH_FAIL_ACTION_REDIRECT\",\n StaticFiles = new Gcp.AppEngine.Inputs.FlexibleAppVersionHandlerStaticFilesArgs\n {\n Path = \"my-other-path\",\n UploadPathRegex = \".*\\\\/my-path\\\\/*\",\n },\n },\n },\n AutomaticScaling = new Gcp.AppEngine.Inputs.FlexibleAppVersionAutomaticScalingArgs\n {\n CoolDownPeriod = \"120s\",\n CpuUtilization = new Gcp.AppEngine.Inputs.FlexibleAppVersionAutomaticScalingCpuUtilizationArgs\n {\n TargetUtilization = 0.5,\n },\n },\n DeleteServiceOnDestroy = true,\n });\n\n // App Engine Example\n var appengineNeg = new Gcp.Compute.RegionNetworkEndpointGroup(\"appengine_neg\", new()\n {\n Name = \"appengine-neg\",\n NetworkEndpointType = \"SERVERLESS\",\n Region = \"us-central1\",\n AppEngine = new Gcp.Compute.Inputs.RegionNetworkEndpointGroupAppEngineArgs\n {\n Service = appengineNegFlexibleAppVersion.Service,\n Version = appengineNegFlexibleAppVersion.VersionId,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/appengine\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tappengineNegBucket, err := storage.NewBucket(ctx, \"appengine_neg\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"appengine-neg\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tappengineNegBucketObject, err := storage.NewBucketObject(ctx, \"appengine_neg\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"hello-world.zip\"),\n\t\t\tBucket: appengineNegBucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"./test-fixtures/hello-world.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tappengineNegFlexibleAppVersion, err := appengine.NewFlexibleAppVersion(ctx, \"appengine_neg\", \u0026appengine.FlexibleAppVersionArgs{\n\t\t\tVersionId: pulumi.String(\"v1\"),\n\t\t\tService: pulumi.String(\"appengine-network-endpoint-group\"),\n\t\t\tRuntime: pulumi.String(\"nodejs\"),\n\t\t\tFlexibleRuntimeSettings: \u0026appengine.FlexibleAppVersionFlexibleRuntimeSettingsArgs{\n\t\t\t\tOperatingSystem: pulumi.String(\"ubuntu22\"),\n\t\t\t\tRuntimeVersion: pulumi.String(\"20\"),\n\t\t\t},\n\t\t\tEntrypoint: \u0026appengine.FlexibleAppVersionEntrypointArgs{\n\t\t\t\tShell: pulumi.String(\"node ./app.js\"),\n\t\t\t},\n\t\t\tDeployment: \u0026appengine.FlexibleAppVersionDeploymentArgs{\n\t\t\t\tZip: \u0026appengine.FlexibleAppVersionDeploymentZipArgs{\n\t\t\t\t\tSourceUrl: pulumi.All(appengineNegBucket.Name, appengineNegBucketObject.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\tappengineNegBucketName := _args[0].(string)\n\t\t\t\t\t\tappengineNegBucketObjectName := _args[1].(string)\n\t\t\t\t\t\treturn fmt.Sprintf(\"https://storage.googleapis.com/%v/%v\", appengineNegBucketName, appengineNegBucketObjectName), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLivenessCheck: \u0026appengine.FlexibleAppVersionLivenessCheckArgs{\n\t\t\t\tPath: pulumi.String(\"/\"),\n\t\t\t},\n\t\t\tReadinessCheck: \u0026appengine.FlexibleAppVersionReadinessCheckArgs{\n\t\t\t\tPath: pulumi.String(\"/\"),\n\t\t\t},\n\t\t\tEnvVariables: pulumi.StringMap{\n\t\t\t\t\"port\": pulumi.String(\"8080\"),\n\t\t\t},\n\t\t\tHandlers: appengine.FlexibleAppVersionHandlerArray{\n\t\t\t\t\u0026appengine.FlexibleAppVersionHandlerArgs{\n\t\t\t\t\tUrlRegex: pulumi.String(\".*\\\\/my-path\\\\/*\"),\n\t\t\t\t\tSecurityLevel: pulumi.String(\"SECURE_ALWAYS\"),\n\t\t\t\t\tLogin: pulumi.String(\"LOGIN_REQUIRED\"),\n\t\t\t\t\tAuthFailAction: pulumi.String(\"AUTH_FAIL_ACTION_REDIRECT\"),\n\t\t\t\t\tStaticFiles: \u0026appengine.FlexibleAppVersionHandlerStaticFilesArgs{\n\t\t\t\t\t\tPath: pulumi.String(\"my-other-path\"),\n\t\t\t\t\t\tUploadPathRegex: pulumi.String(\".*\\\\/my-path\\\\/*\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAutomaticScaling: \u0026appengine.FlexibleAppVersionAutomaticScalingArgs{\n\t\t\t\tCoolDownPeriod: pulumi.String(\"120s\"),\n\t\t\t\tCpuUtilization: \u0026appengine.FlexibleAppVersionAutomaticScalingCpuUtilizationArgs{\n\t\t\t\t\tTargetUtilization: pulumi.Float64(0.5),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeleteServiceOnDestroy: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// App Engine Example\n\t\t_, err = compute.NewRegionNetworkEndpointGroup(ctx, \"appengine_neg\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"appengine-neg\"),\n\t\t\tNetworkEndpointType: pulumi.String(\"SERVERLESS\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tAppEngine: \u0026compute.RegionNetworkEndpointGroupAppEngineArgs{\n\t\t\t\tService: appengineNegFlexibleAppVersion.Service,\n\t\t\t\tVersion: appengineNegFlexibleAppVersion.VersionId,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.appengine.FlexibleAppVersion;\nimport com.pulumi.gcp.appengine.FlexibleAppVersionArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionFlexibleRuntimeSettingsArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionEntrypointArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionDeploymentArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionDeploymentZipArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionLivenessCheckArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionReadinessCheckArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionHandlerArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionHandlerStaticFilesArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionAutomaticScalingArgs;\nimport com.pulumi.gcp.appengine.inputs.FlexibleAppVersionAutomaticScalingCpuUtilizationArgs;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroup;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroupArgs;\nimport com.pulumi.gcp.compute.inputs.RegionNetworkEndpointGroupAppEngineArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var appengineNegBucket = new Bucket(\"appengineNegBucket\", BucketArgs.builder()\n .name(\"appengine-neg\")\n .location(\"US\")\n .build());\n\n var appengineNegBucketObject = new BucketObject(\"appengineNegBucketObject\", BucketObjectArgs.builder()\n .name(\"hello-world.zip\")\n .bucket(appengineNegBucket.name())\n .source(new FileAsset(\"./test-fixtures/hello-world.zip\"))\n .build());\n\n var appengineNegFlexibleAppVersion = new FlexibleAppVersion(\"appengineNegFlexibleAppVersion\", FlexibleAppVersionArgs.builder()\n .versionId(\"v1\")\n .service(\"appengine-network-endpoint-group\")\n .runtime(\"nodejs\")\n .flexibleRuntimeSettings(FlexibleAppVersionFlexibleRuntimeSettingsArgs.builder()\n .operatingSystem(\"ubuntu22\")\n .runtimeVersion(\"20\")\n .build())\n .entrypoint(FlexibleAppVersionEntrypointArgs.builder()\n .shell(\"node ./app.js\")\n .build())\n .deployment(FlexibleAppVersionDeploymentArgs.builder()\n .zip(FlexibleAppVersionDeploymentZipArgs.builder()\n .sourceUrl(Output.tuple(appengineNegBucket.name(), appengineNegBucketObject.name()).applyValue(values -\u003e {\n var appengineNegBucketName = values.t1;\n var appengineNegBucketObjectName = values.t2;\n return String.format(\"https://storage.googleapis.com/%s/%s\", appengineNegBucketName,appengineNegBucketObjectName);\n }))\n .build())\n .build())\n .livenessCheck(FlexibleAppVersionLivenessCheckArgs.builder()\n .path(\"/\")\n .build())\n .readinessCheck(FlexibleAppVersionReadinessCheckArgs.builder()\n .path(\"/\")\n .build())\n .envVariables(Map.of(\"port\", \"8080\"))\n .handlers(FlexibleAppVersionHandlerArgs.builder()\n .urlRegex(\".*\\\\/my-path\\\\/*\")\n .securityLevel(\"SECURE_ALWAYS\")\n .login(\"LOGIN_REQUIRED\")\n .authFailAction(\"AUTH_FAIL_ACTION_REDIRECT\")\n .staticFiles(FlexibleAppVersionHandlerStaticFilesArgs.builder()\n .path(\"my-other-path\")\n .uploadPathRegex(\".*\\\\/my-path\\\\/*\")\n .build())\n .build())\n .automaticScaling(FlexibleAppVersionAutomaticScalingArgs.builder()\n .coolDownPeriod(\"120s\")\n .cpuUtilization(FlexibleAppVersionAutomaticScalingCpuUtilizationArgs.builder()\n .targetUtilization(0.5)\n .build())\n .build())\n .deleteServiceOnDestroy(true)\n .build());\n\n // App Engine Example\n var appengineNeg = new RegionNetworkEndpointGroup(\"appengineNeg\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"appengine-neg\")\n .networkEndpointType(\"SERVERLESS\")\n .region(\"us-central1\")\n .appEngine(RegionNetworkEndpointGroupAppEngineArgs.builder()\n .service(appengineNegFlexibleAppVersion.service())\n .version(appengineNegFlexibleAppVersion.versionId())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # App Engine Example\n appengineNeg:\n type: gcp:compute:RegionNetworkEndpointGroup\n name: appengine_neg\n properties:\n name: appengine-neg\n networkEndpointType: SERVERLESS\n region: us-central1\n appEngine:\n service: ${appengineNegFlexibleAppVersion.service}\n version: ${appengineNegFlexibleAppVersion.versionId}\n appengineNegFlexibleAppVersion:\n type: gcp:appengine:FlexibleAppVersion\n name: appengine_neg\n properties:\n versionId: v1\n service: appengine-network-endpoint-group\n runtime: nodejs\n flexibleRuntimeSettings:\n operatingSystem: ubuntu22\n runtimeVersion: '20'\n entrypoint:\n shell: node ./app.js\n deployment:\n zip:\n sourceUrl: https://storage.googleapis.com/${appengineNegBucket.name}/${appengineNegBucketObject.name}\n livenessCheck:\n path: /\n readinessCheck:\n path: /\n envVariables:\n port: '8080'\n handlers:\n - urlRegex: .*\\/my-path\\/*\n securityLevel: SECURE_ALWAYS\n login: LOGIN_REQUIRED\n authFailAction: AUTH_FAIL_ACTION_REDIRECT\n staticFiles:\n path: my-other-path\n uploadPathRegex: .*\\/my-path\\/*\n automaticScaling:\n coolDownPeriod: 120s\n cpuUtilization:\n targetUtilization: 0.5\n deleteServiceOnDestroy: true\n appengineNegBucket:\n type: gcp:storage:Bucket\n name: appengine_neg\n properties:\n name: appengine-neg\n location: US\n appengineNegBucketObject:\n type: gcp:storage:BucketObject\n name: appengine_neg\n properties:\n name: hello-world.zip\n bucket: ${appengineNegBucket.name}\n source:\n fn::FileAsset: ./test-fixtures/hello-world.zip\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Network Endpoint Group Appengine Empty\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// App Engine Example\nconst appengineNeg = new gcp.compute.RegionNetworkEndpointGroup(\"appengine_neg\", {\n name: \"appengine-neg\",\n networkEndpointType: \"SERVERLESS\",\n region: \"us-central1\",\n appEngine: {},\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# App Engine Example\nappengine_neg = gcp.compute.RegionNetworkEndpointGroup(\"appengine_neg\",\n name=\"appengine-neg\",\n network_endpoint_type=\"SERVERLESS\",\n region=\"us-central1\",\n app_engine={})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // App Engine Example\n var appengineNeg = new Gcp.Compute.RegionNetworkEndpointGroup(\"appengine_neg\", new()\n {\n Name = \"appengine-neg\",\n NetworkEndpointType = \"SERVERLESS\",\n Region = \"us-central1\",\n AppEngine = null,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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// App Engine Example\n\t\t_, err := compute.NewRegionNetworkEndpointGroup(ctx, \"appengine_neg\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"appengine-neg\"),\n\t\t\tNetworkEndpointType: pulumi.String(\"SERVERLESS\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tAppEngine: \u0026compute.RegionNetworkEndpointGroupAppEngineArgs{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroup;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroupArgs;\nimport com.pulumi.gcp.compute.inputs.RegionNetworkEndpointGroupAppEngineArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // App Engine Example\n var appengineNeg = new RegionNetworkEndpointGroup(\"appengineNeg\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"appengine-neg\")\n .networkEndpointType(\"SERVERLESS\")\n .region(\"us-central1\")\n .appEngine()\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # App Engine Example\n appengineNeg:\n type: gcp:compute:RegionNetworkEndpointGroup\n name: appengine_neg\n properties:\n name: appengine-neg\n networkEndpointType: SERVERLESS\n region: us-central1\n appEngine: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Network Endpoint Group Psc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pscNeg = new gcp.compute.RegionNetworkEndpointGroup(\"psc_neg\", {\n name: \"psc-neg\",\n region: \"asia-northeast3\",\n networkEndpointType: \"PRIVATE_SERVICE_CONNECT\",\n pscTargetService: \"asia-northeast3-cloudkms.googleapis.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npsc_neg = gcp.compute.RegionNetworkEndpointGroup(\"psc_neg\",\n name=\"psc-neg\",\n region=\"asia-northeast3\",\n network_endpoint_type=\"PRIVATE_SERVICE_CONNECT\",\n psc_target_service=\"asia-northeast3-cloudkms.googleapis.com\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var pscNeg = new Gcp.Compute.RegionNetworkEndpointGroup(\"psc_neg\", new()\n {\n Name = \"psc-neg\",\n Region = \"asia-northeast3\",\n NetworkEndpointType = \"PRIVATE_SERVICE_CONNECT\",\n PscTargetService = \"asia-northeast3-cloudkms.googleapis.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewRegionNetworkEndpointGroup(ctx, \"psc_neg\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"psc-neg\"),\n\t\t\tRegion: pulumi.String(\"asia-northeast3\"),\n\t\t\tNetworkEndpointType: pulumi.String(\"PRIVATE_SERVICE_CONNECT\"),\n\t\t\tPscTargetService: pulumi.String(\"asia-northeast3-cloudkms.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroup;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var pscNeg = new RegionNetworkEndpointGroup(\"pscNeg\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"psc-neg\")\n .region(\"asia-northeast3\")\n .networkEndpointType(\"PRIVATE_SERVICE_CONNECT\")\n .pscTargetService(\"asia-northeast3-cloudkms.googleapis.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pscNeg:\n type: gcp:compute:RegionNetworkEndpointGroup\n name: psc_neg\n properties:\n name: psc-neg\n region: asia-northeast3\n networkEndpointType: PRIVATE_SERVICE_CONNECT\n pscTargetService: asia-northeast3-cloudkms.googleapis.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Network Endpoint Group Psc Service Attachment\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {name: \"psc-network\"});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"psc-subnetwork\",\n ipCidrRange: \"10.0.0.0/16\",\n region: \"europe-west4\",\n network: _default.id,\n});\nconst pscSubnetwork = new gcp.compute.Subnetwork(\"psc_subnetwork\", {\n name: \"psc-subnetwork-nat\",\n ipCidrRange: \"10.1.0.0/16\",\n region: \"europe-west4\",\n purpose: \"PRIVATE_SERVICE_CONNECT\",\n network: _default.id,\n});\nconst defaultHealthCheck = new gcp.compute.HealthCheck(\"default\", {\n name: \"psc-healthcheck\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n});\nconst defaultRegionBackendService = new gcp.compute.RegionBackendService(\"default\", {\n name: \"psc-backend\",\n region: \"europe-west4\",\n healthChecks: defaultHealthCheck.id,\n});\nconst defaultForwardingRule = new gcp.compute.ForwardingRule(\"default\", {\n name: \"psc-forwarding-rule\",\n region: \"europe-west4\",\n loadBalancingScheme: \"INTERNAL\",\n backendService: defaultRegionBackendService.id,\n allPorts: true,\n network: _default.name,\n subnetwork: defaultSubnetwork.name,\n});\nconst defaultServiceAttachment = new gcp.compute.ServiceAttachment(\"default\", {\n name: \"psc-service-attachment\",\n region: \"europe-west4\",\n description: \"A service attachment configured with Terraform\",\n enableProxyProtocol: false,\n connectionPreference: \"ACCEPT_AUTOMATIC\",\n natSubnets: [pscSubnetwork.selfLink],\n targetService: defaultForwardingRule.selfLink,\n});\nconst pscNegServiceAttachment = new gcp.compute.RegionNetworkEndpointGroup(\"psc_neg_service_attachment\", {\n name: \"psc-neg\",\n region: \"europe-west4\",\n networkEndpointType: \"PRIVATE_SERVICE_CONNECT\",\n pscTargetService: defaultServiceAttachment.selfLink,\n network: _default.selfLink,\n subnetwork: defaultSubnetwork.selfLink,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\", name=\"psc-network\")\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"psc-subnetwork\",\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"europe-west4\",\n network=default.id)\npsc_subnetwork = gcp.compute.Subnetwork(\"psc_subnetwork\",\n name=\"psc-subnetwork-nat\",\n ip_cidr_range=\"10.1.0.0/16\",\n region=\"europe-west4\",\n purpose=\"PRIVATE_SERVICE_CONNECT\",\n network=default.id)\ndefault_health_check = gcp.compute.HealthCheck(\"default\",\n name=\"psc-healthcheck\",\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 80,\n })\ndefault_region_backend_service = gcp.compute.RegionBackendService(\"default\",\n name=\"psc-backend\",\n region=\"europe-west4\",\n health_checks=default_health_check.id)\ndefault_forwarding_rule = gcp.compute.ForwardingRule(\"default\",\n name=\"psc-forwarding-rule\",\n region=\"europe-west4\",\n load_balancing_scheme=\"INTERNAL\",\n backend_service=default_region_backend_service.id,\n all_ports=True,\n network=default.name,\n subnetwork=default_subnetwork.name)\ndefault_service_attachment = gcp.compute.ServiceAttachment(\"default\",\n name=\"psc-service-attachment\",\n region=\"europe-west4\",\n description=\"A service attachment configured with Terraform\",\n enable_proxy_protocol=False,\n connection_preference=\"ACCEPT_AUTOMATIC\",\n nat_subnets=[psc_subnetwork.self_link],\n target_service=default_forwarding_rule.self_link)\npsc_neg_service_attachment = gcp.compute.RegionNetworkEndpointGroup(\"psc_neg_service_attachment\",\n name=\"psc-neg\",\n region=\"europe-west4\",\n network_endpoint_type=\"PRIVATE_SERVICE_CONNECT\",\n psc_target_service=default_service_attachment.self_link,\n network=default.self_link,\n subnetwork=default_subnetwork.self_link)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"psc-network\",\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"psc-subnetwork\",\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"europe-west4\",\n Network = @default.Id,\n });\n\n var pscSubnetwork = new Gcp.Compute.Subnetwork(\"psc_subnetwork\", new()\n {\n Name = \"psc-subnetwork-nat\",\n IpCidrRange = \"10.1.0.0/16\",\n Region = \"europe-west4\",\n Purpose = \"PRIVATE_SERVICE_CONNECT\",\n Network = @default.Id,\n });\n\n var defaultHealthCheck = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"psc-healthcheck\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var defaultRegionBackendService = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n Name = \"psc-backend\",\n Region = \"europe-west4\",\n HealthChecks = defaultHealthCheck.Id,\n });\n\n var defaultForwardingRule = new Gcp.Compute.ForwardingRule(\"default\", new()\n {\n Name = \"psc-forwarding-rule\",\n Region = \"europe-west4\",\n LoadBalancingScheme = \"INTERNAL\",\n BackendService = defaultRegionBackendService.Id,\n AllPorts = true,\n Network = @default.Name,\n Subnetwork = defaultSubnetwork.Name,\n });\n\n var defaultServiceAttachment = new Gcp.Compute.ServiceAttachment(\"default\", new()\n {\n Name = \"psc-service-attachment\",\n Region = \"europe-west4\",\n Description = \"A service attachment configured with Terraform\",\n EnableProxyProtocol = false,\n ConnectionPreference = \"ACCEPT_AUTOMATIC\",\n NatSubnets = new[]\n {\n pscSubnetwork.SelfLink,\n },\n TargetService = defaultForwardingRule.SelfLink,\n });\n\n var pscNegServiceAttachment = new Gcp.Compute.RegionNetworkEndpointGroup(\"psc_neg_service_attachment\", new()\n {\n Name = \"psc-neg\",\n Region = \"europe-west4\",\n NetworkEndpointType = \"PRIVATE_SERVICE_CONNECT\",\n PscTargetService = defaultServiceAttachment.SelfLink,\n Network = @default.SelfLink,\n Subnetwork = defaultSubnetwork.SelfLink,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"psc-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"psc-subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"europe-west4\"),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscSubnetwork, err := compute.NewSubnetwork(ctx, \"psc_subnetwork\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"psc-subnetwork-nat\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.1.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"europe-west4\"),\n\t\t\tPurpose: pulumi.String(\"PRIVATE_SERVICE_CONNECT\"),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHealthCheck, err := compute.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"psc-healthcheck\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionBackendService, err := compute.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"psc-backend\"),\n\t\t\tRegion: pulumi.String(\"europe-west4\"),\n\t\t\tHealthChecks: defaultHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultForwardingRule, err := compute.NewForwardingRule(ctx, \"default\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"psc-forwarding-rule\"),\n\t\t\tRegion: pulumi.String(\"europe-west4\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL\"),\n\t\t\tBackendService: defaultRegionBackendService.ID(),\n\t\t\tAllPorts: pulumi.Bool(true),\n\t\t\tNetwork: _default.Name,\n\t\t\tSubnetwork: defaultSubnetwork.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultServiceAttachment, err := compute.NewServiceAttachment(ctx, \"default\", \u0026compute.ServiceAttachmentArgs{\n\t\t\tName: pulumi.String(\"psc-service-attachment\"),\n\t\t\tRegion: pulumi.String(\"europe-west4\"),\n\t\t\tDescription: pulumi.String(\"A service attachment configured with Terraform\"),\n\t\t\tEnableProxyProtocol: pulumi.Bool(false),\n\t\t\tConnectionPreference: pulumi.String(\"ACCEPT_AUTOMATIC\"),\n\t\t\tNatSubnets: pulumi.StringArray{\n\t\t\t\tpscSubnetwork.SelfLink,\n\t\t\t},\n\t\t\tTargetService: defaultForwardingRule.SelfLink,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionNetworkEndpointGroup(ctx, \"psc_neg_service_attachment\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"psc-neg\"),\n\t\t\tRegion: pulumi.String(\"europe-west4\"),\n\t\t\tNetworkEndpointType: pulumi.String(\"PRIVATE_SERVICE_CONNECT\"),\n\t\t\tPscTargetService: defaultServiceAttachment.SelfLink,\n\t\t\tNetwork: _default.SelfLink,\n\t\t\tSubnetwork: defaultSubnetwork.SelfLink,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckTcpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.gcp.compute.ServiceAttachment;\nimport com.pulumi.gcp.compute.ServiceAttachmentArgs;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroup;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"psc-network\")\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"psc-subnetwork\")\n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"europe-west4\")\n .network(default_.id())\n .build());\n\n var pscSubnetwork = new Subnetwork(\"pscSubnetwork\", SubnetworkArgs.builder()\n .name(\"psc-subnetwork-nat\")\n .ipCidrRange(\"10.1.0.0/16\")\n .region(\"europe-west4\")\n .purpose(\"PRIVATE_SERVICE_CONNECT\")\n .network(default_.id())\n .build());\n\n var defaultHealthCheck = new HealthCheck(\"defaultHealthCheck\", HealthCheckArgs.builder()\n .name(\"psc-healthcheck\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build());\n\n var defaultRegionBackendService = new RegionBackendService(\"defaultRegionBackendService\", RegionBackendServiceArgs.builder()\n .name(\"psc-backend\")\n .region(\"europe-west4\")\n .healthChecks(defaultHealthCheck.id())\n .build());\n\n var defaultForwardingRule = new ForwardingRule(\"defaultForwardingRule\", ForwardingRuleArgs.builder()\n .name(\"psc-forwarding-rule\")\n .region(\"europe-west4\")\n .loadBalancingScheme(\"INTERNAL\")\n .backendService(defaultRegionBackendService.id())\n .allPorts(true)\n .network(default_.name())\n .subnetwork(defaultSubnetwork.name())\n .build());\n\n var defaultServiceAttachment = new ServiceAttachment(\"defaultServiceAttachment\", ServiceAttachmentArgs.builder()\n .name(\"psc-service-attachment\")\n .region(\"europe-west4\")\n .description(\"A service attachment configured with Terraform\")\n .enableProxyProtocol(false)\n .connectionPreference(\"ACCEPT_AUTOMATIC\")\n .natSubnets(pscSubnetwork.selfLink())\n .targetService(defaultForwardingRule.selfLink())\n .build());\n\n var pscNegServiceAttachment = new RegionNetworkEndpointGroup(\"pscNegServiceAttachment\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"psc-neg\")\n .region(\"europe-west4\")\n .networkEndpointType(\"PRIVATE_SERVICE_CONNECT\")\n .pscTargetService(defaultServiceAttachment.selfLink())\n .network(default_.selfLink())\n .subnetwork(defaultSubnetwork.selfLink())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: psc-network\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: psc-subnetwork\n ipCidrRange: 10.0.0.0/16\n region: europe-west4\n network: ${default.id}\n pscSubnetwork:\n type: gcp:compute:Subnetwork\n name: psc_subnetwork\n properties:\n name: psc-subnetwork-nat\n ipCidrRange: 10.1.0.0/16\n region: europe-west4\n purpose: PRIVATE_SERVICE_CONNECT\n network: ${default.id}\n defaultHealthCheck:\n type: gcp:compute:HealthCheck\n name: default\n properties:\n name: psc-healthcheck\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n defaultRegionBackendService:\n type: gcp:compute:RegionBackendService\n name: default\n properties:\n name: psc-backend\n region: europe-west4\n healthChecks: ${defaultHealthCheck.id}\n defaultForwardingRule:\n type: gcp:compute:ForwardingRule\n name: default\n properties:\n name: psc-forwarding-rule\n region: europe-west4\n loadBalancingScheme: INTERNAL\n backendService: ${defaultRegionBackendService.id}\n allPorts: true\n network: ${default.name}\n subnetwork: ${defaultSubnetwork.name}\n defaultServiceAttachment:\n type: gcp:compute:ServiceAttachment\n name: default\n properties:\n name: psc-service-attachment\n region: europe-west4\n description: A service attachment configured with Terraform\n enableProxyProtocol: false\n connectionPreference: ACCEPT_AUTOMATIC\n natSubnets:\n - ${pscSubnetwork.selfLink}\n targetService: ${defaultForwardingRule.selfLink}\n pscNegServiceAttachment:\n type: gcp:compute:RegionNetworkEndpointGroup\n name: psc_neg_service_attachment\n properties:\n name: psc-neg\n region: europe-west4\n networkEndpointType: PRIVATE_SERVICE_CONNECT\n pscTargetService: ${defaultServiceAttachment.selfLink}\n network: ${default.selfLink}\n subnetwork: ${defaultSubnetwork.selfLink}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Network Endpoint Group Internet Ip Port\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {name: \"network\"});\nconst regionNetworkEndpointGroupInternetIpPort = new gcp.compute.RegionNetworkEndpointGroup(\"region_network_endpoint_group_internet_ip_port\", {\n name: \"ip-port-neg\",\n region: \"us-central1\",\n network: _default.id,\n networkEndpointType: \"INTERNET_IP_PORT\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\", name=\"network\")\nregion_network_endpoint_group_internet_ip_port = gcp.compute.RegionNetworkEndpointGroup(\"region_network_endpoint_group_internet_ip_port\",\n name=\"ip-port-neg\",\n region=\"us-central1\",\n network=default.id,\n network_endpoint_type=\"INTERNET_IP_PORT\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"network\",\n });\n\n var regionNetworkEndpointGroupInternetIpPort = new Gcp.Compute.RegionNetworkEndpointGroup(\"region_network_endpoint_group_internet_ip_port\", new()\n {\n Name = \"ip-port-neg\",\n Region = \"us-central1\",\n Network = @default.Id,\n NetworkEndpointType = \"INTERNET_IP_PORT\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionNetworkEndpointGroup(ctx, \"region_network_endpoint_group_internet_ip_port\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"ip-port-neg\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tNetworkEndpointType: pulumi.String(\"INTERNET_IP_PORT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroup;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"network\")\n .build());\n\n var regionNetworkEndpointGroupInternetIpPort = new RegionNetworkEndpointGroup(\"regionNetworkEndpointGroupInternetIpPort\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"ip-port-neg\")\n .region(\"us-central1\")\n .network(default_.id())\n .networkEndpointType(\"INTERNET_IP_PORT\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regionNetworkEndpointGroupInternetIpPort:\n type: gcp:compute:RegionNetworkEndpointGroup\n name: region_network_endpoint_group_internet_ip_port\n properties:\n name: ip-port-neg\n region: us-central1\n network: ${default.id}\n networkEndpointType: INTERNET_IP_PORT\n default:\n type: gcp:compute:Network\n properties:\n name: network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Network Endpoint Group Internet Fqdn Port\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {name: \"network\"});\nconst regionNetworkEndpointGroupInternetFqdnPort = new gcp.compute.RegionNetworkEndpointGroup(\"region_network_endpoint_group_internet_fqdn_port\", {\n name: \"ip-port-neg\",\n region: \"us-central1\",\n network: _default.id,\n networkEndpointType: \"INTERNET_FQDN_PORT\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\", name=\"network\")\nregion_network_endpoint_group_internet_fqdn_port = gcp.compute.RegionNetworkEndpointGroup(\"region_network_endpoint_group_internet_fqdn_port\",\n name=\"ip-port-neg\",\n region=\"us-central1\",\n network=default.id,\n network_endpoint_type=\"INTERNET_FQDN_PORT\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"network\",\n });\n\n var regionNetworkEndpointGroupInternetFqdnPort = new Gcp.Compute.RegionNetworkEndpointGroup(\"region_network_endpoint_group_internet_fqdn_port\", new()\n {\n Name = \"ip-port-neg\",\n Region = \"us-central1\",\n Network = @default.Id,\n NetworkEndpointType = \"INTERNET_FQDN_PORT\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionNetworkEndpointGroup(ctx, \"region_network_endpoint_group_internet_fqdn_port\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"ip-port-neg\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tNetworkEndpointType: pulumi.String(\"INTERNET_FQDN_PORT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroup;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"network\")\n .build());\n\n var regionNetworkEndpointGroupInternetFqdnPort = new RegionNetworkEndpointGroup(\"regionNetworkEndpointGroupInternetFqdnPort\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"ip-port-neg\")\n .region(\"us-central1\")\n .network(default_.id())\n .networkEndpointType(\"INTERNET_FQDN_PORT\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regionNetworkEndpointGroupInternetFqdnPort:\n type: gcp:compute:RegionNetworkEndpointGroup\n name: region_network_endpoint_group_internet_fqdn_port\n properties:\n name: ip-port-neg\n region: us-central1\n network: ${default.id}\n networkEndpointType: INTERNET_FQDN_PORT\n default:\n type: gcp:compute:Network\n properties:\n name: network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Network Endpoint Group Portmap\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {name: \"network\"});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"subnetwork\",\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n network: _default.id,\n});\nconst regionNetworkEndpointGroupPortmap = new gcp.compute.RegionNetworkEndpointGroup(\"region_network_endpoint_group_portmap\", {\n name: \"portmap-neg\",\n region: \"us-central1\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n networkEndpointType: \"GCE_VM_IP_PORTMAP\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\", name=\"network\")\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"subnetwork\",\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\",\n network=default.id)\nregion_network_endpoint_group_portmap = gcp.compute.RegionNetworkEndpointGroup(\"region_network_endpoint_group_portmap\",\n name=\"portmap-neg\",\n region=\"us-central1\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n network_endpoint_type=\"GCE_VM_IP_PORTMAP\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"network\",\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"subnetwork\",\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n Network = @default.Id,\n });\n\n var regionNetworkEndpointGroupPortmap = new Gcp.Compute.RegionNetworkEndpointGroup(\"region_network_endpoint_group_portmap\", new()\n {\n Name = \"portmap-neg\",\n Region = \"us-central1\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n NetworkEndpointType = \"GCE_VM_IP_PORTMAP\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionNetworkEndpointGroup(ctx, \"region_network_endpoint_group_portmap\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"portmap-neg\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tNetworkEndpointType: pulumi.String(\"GCE_VM_IP_PORTMAP\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroup;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"network\")\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"subnetwork\")\n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .network(default_.id())\n .build());\n\n var regionNetworkEndpointGroupPortmap = new RegionNetworkEndpointGroup(\"regionNetworkEndpointGroupPortmap\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"portmap-neg\")\n .region(\"us-central1\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .networkEndpointType(\"GCE_VM_IP_PORTMAP\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regionNetworkEndpointGroupPortmap:\n type: gcp:compute:RegionNetworkEndpointGroup\n name: region_network_endpoint_group_portmap\n properties:\n name: portmap-neg\n region: us-central1\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n networkEndpointType: GCE_VM_IP_PORTMAP\n default:\n type: gcp:compute:Network\n properties:\n name: network\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: subnetwork\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n network: ${default.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRegionNetworkEndpointGroup can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/networkEndpointGroups/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, RegionNetworkEndpointGroup can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/regionNetworkEndpointGroup:RegionNetworkEndpointGroup default projects/{{project}}/regions/{{region}}/networkEndpointGroups/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionNetworkEndpointGroup:RegionNetworkEndpointGroup default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionNetworkEndpointGroup:RegionNetworkEndpointGroup default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionNetworkEndpointGroup:RegionNetworkEndpointGroup default {{name}}\n```\n\n", "properties": { "appEngine": { "$ref": "#/types/gcp:compute/RegionNetworkEndpointGroupAppEngine:RegionNetworkEndpointGroupAppEngine", @@ -165597,7 +165597,7 @@ } }, "gcp:compute/regionTargetHttpsProxy:RegionTargetHttpsProxy": { - "description": "Represents a RegionTargetHttpsProxy resource, which is used by one or more\nforwarding rules to route incoming HTTPS requests to a URL map.\n\n\nTo get more information about RegionTargetHttpsProxy, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/regionTargetHttpsProxies)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/load-balancing/http/target-proxies)\n\n## Example Usage\n\n### Region Target Https Proxy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst defaultRegionSslCertificate = new gcp.compute.RegionSslCertificate(\"default\", {\n region: \"us-central1\",\n name: \"my-certificate\",\n privateKey: std.file({\n input: \"path/to/private.key\",\n }).then(invoke =\u003e invoke.result),\n certificate: std.file({\n input: \"path/to/certificate.crt\",\n }).then(invoke =\u003e invoke.result),\n});\nconst defaultRegionHealthCheck = new gcp.compute.RegionHealthCheck(\"default\", {\n region: \"us-central1\",\n name: \"http-health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst defaultRegionBackendService = new gcp.compute.RegionBackendService(\"default\", {\n region: \"us-central1\",\n name: \"backend-service\",\n protocol: \"HTTP\",\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n timeoutSec: 10,\n healthChecks: defaultRegionHealthCheck.id,\n});\nconst defaultRegionUrlMap = new gcp.compute.RegionUrlMap(\"default\", {\n region: \"us-central1\",\n name: \"url-map\",\n description: \"a description\",\n defaultService: defaultRegionBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultRegionBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultRegionBackendService.id,\n }],\n }],\n});\nconst _default = new gcp.compute.RegionTargetHttpsProxy(\"default\", {\n region: \"us-central1\",\n name: \"test-proxy\",\n urlMap: defaultRegionUrlMap.id,\n sslCertificates: [defaultRegionSslCertificate.id],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault_region_ssl_certificate = gcp.compute.RegionSslCertificate(\"default\",\n region=\"us-central1\",\n name=\"my-certificate\",\n private_key=std.file(input=\"path/to/private.key\").result,\n certificate=std.file(input=\"path/to/certificate.crt\").result)\ndefault_region_health_check = gcp.compute.RegionHealthCheck(\"default\",\n region=\"us-central1\",\n name=\"http-health-check\",\n http_health_check={\n \"port\": 80,\n })\ndefault_region_backend_service = gcp.compute.RegionBackendService(\"default\",\n region=\"us-central1\",\n name=\"backend-service\",\n protocol=\"HTTP\",\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n timeout_sec=10,\n health_checks=default_region_health_check.id)\ndefault_region_url_map = gcp.compute.RegionUrlMap(\"default\",\n region=\"us-central1\",\n name=\"url-map\",\n description=\"a description\",\n default_service=default_region_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": default_region_backend_service.id,\n \"path_rules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_region_backend_service.id,\n }],\n }])\ndefault = gcp.compute.RegionTargetHttpsProxy(\"default\",\n region=\"us-central1\",\n name=\"test-proxy\",\n url_map=default_region_url_map.id,\n ssl_certificates=[default_region_ssl_certificate.id])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultRegionSslCertificate = new Gcp.Compute.RegionSslCertificate(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"my-certificate\",\n PrivateKey = Std.File.Invoke(new()\n {\n Input = \"path/to/private.key\",\n }).Apply(invoke =\u003e invoke.Result),\n Certificate = Std.File.Invoke(new()\n {\n Input = \"path/to/certificate.crt\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var defaultRegionHealthCheck = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"http-health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var defaultRegionBackendService = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"backend-service\",\n Protocol = \"HTTP\",\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n TimeoutSec = 10,\n HealthChecks = defaultRegionHealthCheck.Id,\n });\n\n var defaultRegionUrlMap = new Gcp.Compute.RegionUrlMap(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"url-map\",\n Description = \"a description\",\n DefaultService = defaultRegionBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultRegionBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultRegionBackendService.Id,\n },\n },\n },\n },\n });\n\n var @default = new Gcp.Compute.RegionTargetHttpsProxy(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"test-proxy\",\n UrlMap = defaultRegionUrlMap.Id,\n SslCertificates = new[]\n {\n defaultRegionSslCertificate.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/private.key\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/certificate.crt\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionSslCertificate, err := compute.NewRegionSslCertificate(ctx, \"default\", \u0026compute.RegionSslCertificateArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tPrivateKey: pulumi.String(invokeFile.Result),\n\t\t\tCertificate: pulumi.String(invokeFile1.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionHealthCheck, err := compute.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"http-health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionBackendService, err := compute.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultRegionHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionUrlMap, err := compute.NewRegionUrlMap(ctx, \"default\", \u0026compute.RegionUrlMapArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultRegionBackendService.ID(),\n\t\t\tHostRules: compute.RegionUrlMapHostRuleArray{\n\t\t\t\t\u0026compute.RegionUrlMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.RegionUrlMapPathMatcherArray{\n\t\t\t\t\u0026compute.RegionUrlMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultRegionBackendService.ID(),\n\t\t\t\t\tPathRules: compute.RegionUrlMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultRegionBackendService.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionTargetHttpsProxy(ctx, \"default\", \u0026compute.RegionTargetHttpsProxyArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"test-proxy\"),\n\t\t\tUrlMap: defaultRegionUrlMap.ID(),\n\t\t\tSslCertificates: pulumi.StringArray{\n\t\t\t\tdefaultRegionSslCertificate.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionSslCertificate;\nimport com.pulumi.gcp.compute.RegionSslCertificateArgs;\nimport com.pulumi.gcp.compute.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.RegionUrlMap;\nimport com.pulumi.gcp.compute.RegionUrlMapArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.RegionTargetHttpsProxy;\nimport com.pulumi.gcp.compute.RegionTargetHttpsProxyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultRegionSslCertificate = new RegionSslCertificate(\"defaultRegionSslCertificate\", RegionSslCertificateArgs.builder()\n .region(\"us-central1\")\n .name(\"my-certificate\")\n .privateKey(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/private.key\")\n .build()).result())\n .certificate(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/certificate.crt\")\n .build()).result())\n .build());\n\n var defaultRegionHealthCheck = new RegionHealthCheck(\"defaultRegionHealthCheck\", RegionHealthCheckArgs.builder()\n .region(\"us-central1\")\n .name(\"http-health-check\")\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var defaultRegionBackendService = new RegionBackendService(\"defaultRegionBackendService\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"backend-service\")\n .protocol(\"HTTP\")\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .timeoutSec(10)\n .healthChecks(defaultRegionHealthCheck.id())\n .build());\n\n var defaultRegionUrlMap = new RegionUrlMap(\"defaultRegionUrlMap\", RegionUrlMapArgs.builder()\n .region(\"us-central1\")\n .name(\"url-map\")\n .description(\"a description\")\n .defaultService(defaultRegionBackendService.id())\n .hostRules(RegionUrlMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(RegionUrlMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultRegionBackendService.id())\n .pathRules(RegionUrlMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultRegionBackendService.id())\n .build())\n .build())\n .build());\n\n var default_ = new RegionTargetHttpsProxy(\"default\", RegionTargetHttpsProxyArgs.builder()\n .region(\"us-central1\")\n .name(\"test-proxy\")\n .urlMap(defaultRegionUrlMap.id())\n .sslCertificates(defaultRegionSslCertificate.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionTargetHttpsProxy\n properties:\n region: us-central1\n name: test-proxy\n urlMap: ${defaultRegionUrlMap.id}\n sslCertificates:\n - ${defaultRegionSslCertificate.id}\n defaultRegionSslCertificate:\n type: gcp:compute:RegionSslCertificate\n name: default\n properties:\n region: us-central1\n name: my-certificate\n privateKey:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/private.key\n Return: result\n certificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/certificate.crt\n Return: result\n defaultRegionUrlMap:\n type: gcp:compute:RegionUrlMap\n name: default\n properties:\n region: us-central1\n name: url-map\n description: a description\n defaultService: ${defaultRegionBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultRegionBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultRegionBackendService.id}\n defaultRegionBackendService:\n type: gcp:compute:RegionBackendService\n name: default\n properties:\n region: us-central1\n name: backend-service\n protocol: HTTP\n loadBalancingScheme: INTERNAL_MANAGED\n timeoutSec: 10\n healthChecks: ${defaultRegionHealthCheck.id}\n defaultRegionHealthCheck:\n type: gcp:compute:RegionHealthCheck\n name: default\n properties:\n region: us-central1\n name: http-health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Target Https Proxy Http Keep Alive Timeout\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst defaultRegionSslCertificate = new gcp.compute.RegionSslCertificate(\"default\", {\n region: \"us-central1\",\n name: \"my-certificate\",\n privateKey: std.file({\n input: \"path/to/private.key\",\n }).then(invoke =\u003e invoke.result),\n certificate: std.file({\n input: \"path/to/certificate.crt\",\n }).then(invoke =\u003e invoke.result),\n});\nconst defaultRegionHealthCheck = new gcp.compute.RegionHealthCheck(\"default\", {\n region: \"us-central1\",\n name: \"http-health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst defaultRegionBackendService = new gcp.compute.RegionBackendService(\"default\", {\n region: \"us-central1\",\n name: \"backend-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n healthChecks: defaultRegionHealthCheck.id,\n});\nconst defaultRegionUrlMap = new gcp.compute.RegionUrlMap(\"default\", {\n region: \"us-central1\",\n name: \"url-map\",\n description: \"a description\",\n defaultService: defaultRegionBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultRegionBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultRegionBackendService.id,\n }],\n }],\n});\nconst _default = new gcp.compute.RegionTargetHttpsProxy(\"default\", {\n region: \"us-central1\",\n name: \"test-http-keep-alive-timeout-proxy\",\n httpKeepAliveTimeoutSec: 600,\n urlMap: defaultRegionUrlMap.id,\n sslCertificates: [defaultRegionSslCertificate.id],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault_region_ssl_certificate = gcp.compute.RegionSslCertificate(\"default\",\n region=\"us-central1\",\n name=\"my-certificate\",\n private_key=std.file(input=\"path/to/private.key\").result,\n certificate=std.file(input=\"path/to/certificate.crt\").result)\ndefault_region_health_check = gcp.compute.RegionHealthCheck(\"default\",\n region=\"us-central1\",\n name=\"http-health-check\",\n http_health_check={\n \"port\": 80,\n })\ndefault_region_backend_service = gcp.compute.RegionBackendService(\"default\",\n region=\"us-central1\",\n name=\"backend-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n health_checks=default_region_health_check.id)\ndefault_region_url_map = gcp.compute.RegionUrlMap(\"default\",\n region=\"us-central1\",\n name=\"url-map\",\n description=\"a description\",\n default_service=default_region_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": default_region_backend_service.id,\n \"path_rules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_region_backend_service.id,\n }],\n }])\ndefault = gcp.compute.RegionTargetHttpsProxy(\"default\",\n region=\"us-central1\",\n name=\"test-http-keep-alive-timeout-proxy\",\n http_keep_alive_timeout_sec=600,\n url_map=default_region_url_map.id,\n ssl_certificates=[default_region_ssl_certificate.id])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultRegionSslCertificate = new Gcp.Compute.RegionSslCertificate(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"my-certificate\",\n PrivateKey = Std.File.Invoke(new()\n {\n Input = \"path/to/private.key\",\n }).Apply(invoke =\u003e invoke.Result),\n Certificate = Std.File.Invoke(new()\n {\n Input = \"path/to/certificate.crt\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var defaultRegionHealthCheck = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"http-health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var defaultRegionBackendService = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"backend-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n HealthChecks = defaultRegionHealthCheck.Id,\n });\n\n var defaultRegionUrlMap = new Gcp.Compute.RegionUrlMap(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"url-map\",\n Description = \"a description\",\n DefaultService = defaultRegionBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultRegionBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultRegionBackendService.Id,\n },\n },\n },\n },\n });\n\n var @default = new Gcp.Compute.RegionTargetHttpsProxy(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"test-http-keep-alive-timeout-proxy\",\n HttpKeepAliveTimeoutSec = 600,\n UrlMap = defaultRegionUrlMap.Id,\n SslCertificates = new[]\n {\n defaultRegionSslCertificate.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/private.key\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/certificate.crt\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionSslCertificate, err := compute.NewRegionSslCertificate(ctx, \"default\", \u0026compute.RegionSslCertificateArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tPrivateKey: pulumi.String(invokeFile.Result),\n\t\t\tCertificate: pulumi.String(invokeFile1.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionHealthCheck, err := compute.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"http-health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionBackendService, err := compute.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tHealthChecks: defaultRegionHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionUrlMap, err := compute.NewRegionUrlMap(ctx, \"default\", \u0026compute.RegionUrlMapArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultRegionBackendService.ID(),\n\t\t\tHostRules: compute.RegionUrlMapHostRuleArray{\n\t\t\t\t\u0026compute.RegionUrlMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.RegionUrlMapPathMatcherArray{\n\t\t\t\t\u0026compute.RegionUrlMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultRegionBackendService.ID(),\n\t\t\t\t\tPathRules: compute.RegionUrlMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultRegionBackendService.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionTargetHttpsProxy(ctx, \"default\", \u0026compute.RegionTargetHttpsProxyArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"test-http-keep-alive-timeout-proxy\"),\n\t\t\tHttpKeepAliveTimeoutSec: pulumi.Int(600),\n\t\t\tUrlMap: defaultRegionUrlMap.ID(),\n\t\t\tSslCertificates: pulumi.StringArray{\n\t\t\t\tdefaultRegionSslCertificate.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionSslCertificate;\nimport com.pulumi.gcp.compute.RegionSslCertificateArgs;\nimport com.pulumi.gcp.compute.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.RegionUrlMap;\nimport com.pulumi.gcp.compute.RegionUrlMapArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.RegionTargetHttpsProxy;\nimport com.pulumi.gcp.compute.RegionTargetHttpsProxyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultRegionSslCertificate = new RegionSslCertificate(\"defaultRegionSslCertificate\", RegionSslCertificateArgs.builder()\n .region(\"us-central1\")\n .name(\"my-certificate\")\n .privateKey(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/private.key\")\n .build()).result())\n .certificate(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/certificate.crt\")\n .build()).result())\n .build());\n\n var defaultRegionHealthCheck = new RegionHealthCheck(\"defaultRegionHealthCheck\", RegionHealthCheckArgs.builder()\n .region(\"us-central1\")\n .name(\"http-health-check\")\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var defaultRegionBackendService = new RegionBackendService(\"defaultRegionBackendService\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"backend-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .healthChecks(defaultRegionHealthCheck.id())\n .build());\n\n var defaultRegionUrlMap = new RegionUrlMap(\"defaultRegionUrlMap\", RegionUrlMapArgs.builder()\n .region(\"us-central1\")\n .name(\"url-map\")\n .description(\"a description\")\n .defaultService(defaultRegionBackendService.id())\n .hostRules(RegionUrlMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(RegionUrlMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultRegionBackendService.id())\n .pathRules(RegionUrlMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultRegionBackendService.id())\n .build())\n .build())\n .build());\n\n var default_ = new RegionTargetHttpsProxy(\"default\", RegionTargetHttpsProxyArgs.builder()\n .region(\"us-central1\")\n .name(\"test-http-keep-alive-timeout-proxy\")\n .httpKeepAliveTimeoutSec(600)\n .urlMap(defaultRegionUrlMap.id())\n .sslCertificates(defaultRegionSslCertificate.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionTargetHttpsProxy\n properties:\n region: us-central1\n name: test-http-keep-alive-timeout-proxy\n httpKeepAliveTimeoutSec: 600\n urlMap: ${defaultRegionUrlMap.id}\n sslCertificates:\n - ${defaultRegionSslCertificate.id}\n defaultRegionSslCertificate:\n type: gcp:compute:RegionSslCertificate\n name: default\n properties:\n region: us-central1\n name: my-certificate\n privateKey:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/private.key\n Return: result\n certificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/certificate.crt\n Return: result\n defaultRegionUrlMap:\n type: gcp:compute:RegionUrlMap\n name: default\n properties:\n region: us-central1\n name: url-map\n description: a description\n defaultService: ${defaultRegionBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultRegionBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultRegionBackendService.id}\n defaultRegionBackendService:\n type: gcp:compute:RegionBackendService\n name: default\n properties:\n region: us-central1\n name: backend-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: INTERNAL_MANAGED\n healthChecks: ${defaultRegionHealthCheck.id}\n defaultRegionHealthCheck:\n type: gcp:compute:RegionHealthCheck\n name: default\n properties:\n region: us-central1\n name: http-health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Target Https Proxy Mtls\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst project = gcp.organizations.getProject({});\nconst defaultTrustConfig = new gcp.certificatemanager.TrustConfig(\"default\", {\n location: \"us-central1\",\n name: \"my-trust-config\",\n description: \"sample description for trust config\",\n trustStores: [{\n trustAnchors: [{\n pemCertificate: std.file({\n input: \"test-fixtures/ca_cert.pem\",\n }).then(invoke =\u003e invoke.result),\n }],\n intermediateCas: [{\n pemCertificate: std.file({\n input: \"test-fixtures/ca_cert.pem\",\n }).then(invoke =\u003e invoke.result),\n }],\n }],\n labels: {\n foo: \"bar\",\n },\n});\nconst defaultServerTlsPolicy = new gcp.networksecurity.ServerTlsPolicy(\"default\", {\n location: \"us-central1\",\n name: \"my-tls-policy\",\n description: \"my description\",\n allowOpen: false,\n mtlsPolicy: {\n clientValidationMode: \"REJECT_INVALID\",\n clientValidationTrustConfig: pulumi.all([project, defaultTrustConfig.name]).apply(([project, name]) =\u003e `projects/${project.number}/locations/us-central1/trustConfigs/${name}`),\n },\n});\nconst defaultRegionSslCertificate = new gcp.compute.RegionSslCertificate(\"default\", {\n region: \"us-central1\",\n name: \"my-certificate\",\n privateKey: std.file({\n input: \"path/to/private.key\",\n }).then(invoke =\u003e invoke.result),\n certificate: std.file({\n input: \"path/to/certificate.crt\",\n }).then(invoke =\u003e invoke.result),\n});\nconst defaultRegionHealthCheck = new gcp.compute.RegionHealthCheck(\"default\", {\n region: \"us-central1\",\n name: \"http-health-check\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n httpHealthCheck: {\n port: 80,\n },\n});\nconst defaultRegionBackendService = new gcp.compute.RegionBackendService(\"default\", {\n region: \"us-central1\",\n name: \"backend-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n healthChecks: defaultRegionHealthCheck.id,\n});\nconst defaultRegionUrlMap = new gcp.compute.RegionUrlMap(\"default\", {\n region: \"us-central1\",\n name: \"url-map\",\n description: \"a description\",\n defaultService: defaultRegionBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultRegionBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultRegionBackendService.id,\n }],\n }],\n});\nconst _default = new gcp.compute.RegionTargetHttpsProxy(\"default\", {\n region: \"us-central1\",\n name: \"test-mtls-proxy\",\n urlMap: defaultRegionUrlMap.id,\n sslCertificates: [defaultRegionSslCertificate.id],\n serverTlsPolicy: defaultServerTlsPolicy.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nproject = gcp.organizations.get_project()\ndefault_trust_config = gcp.certificatemanager.TrustConfig(\"default\",\n location=\"us-central1\",\n name=\"my-trust-config\",\n description=\"sample description for trust config\",\n trust_stores=[{\n \"trust_anchors\": [{\n \"pem_certificate\": std.file(input=\"test-fixtures/ca_cert.pem\").result,\n }],\n \"intermediate_cas\": [{\n \"pem_certificate\": std.file(input=\"test-fixtures/ca_cert.pem\").result,\n }],\n }],\n labels={\n \"foo\": \"bar\",\n })\ndefault_server_tls_policy = gcp.networksecurity.ServerTlsPolicy(\"default\",\n location=\"us-central1\",\n name=\"my-tls-policy\",\n description=\"my description\",\n allow_open=False,\n mtls_policy={\n \"client_validation_mode\": \"REJECT_INVALID\",\n \"client_validation_trust_config\": default_trust_config.name.apply(lambda name: f\"projects/{project.number}/locations/us-central1/trustConfigs/{name}\"),\n })\ndefault_region_ssl_certificate = gcp.compute.RegionSslCertificate(\"default\",\n region=\"us-central1\",\n name=\"my-certificate\",\n private_key=std.file(input=\"path/to/private.key\").result,\n certificate=std.file(input=\"path/to/certificate.crt\").result)\ndefault_region_health_check = gcp.compute.RegionHealthCheck(\"default\",\n region=\"us-central1\",\n name=\"http-health-check\",\n check_interval_sec=1,\n timeout_sec=1,\n http_health_check={\n \"port\": 80,\n })\ndefault_region_backend_service = gcp.compute.RegionBackendService(\"default\",\n region=\"us-central1\",\n name=\"backend-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n health_checks=default_region_health_check.id)\ndefault_region_url_map = gcp.compute.RegionUrlMap(\"default\",\n region=\"us-central1\",\n name=\"url-map\",\n description=\"a description\",\n default_service=default_region_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": default_region_backend_service.id,\n \"path_rules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_region_backend_service.id,\n }],\n }])\ndefault = gcp.compute.RegionTargetHttpsProxy(\"default\",\n region=\"us-central1\",\n name=\"test-mtls-proxy\",\n url_map=default_region_url_map.id,\n ssl_certificates=[default_region_ssl_certificate.id],\n server_tls_policy=default_server_tls_policy.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var defaultTrustConfig = new Gcp.CertificateManager.TrustConfig(\"default\", new()\n {\n Location = \"us-central1\",\n Name = \"my-trust-config\",\n Description = \"sample description for trust config\",\n TrustStores = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreArgs\n {\n TrustAnchors = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreTrustAnchorArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/ca_cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n IntermediateCas = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreIntermediateCaArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/ca_cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n },\n },\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n var defaultServerTlsPolicy = new Gcp.NetworkSecurity.ServerTlsPolicy(\"default\", new()\n {\n Location = \"us-central1\",\n Name = \"my-tls-policy\",\n Description = \"my description\",\n AllowOpen = false,\n MtlsPolicy = new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyMtlsPolicyArgs\n {\n ClientValidationMode = \"REJECT_INVALID\",\n ClientValidationTrustConfig = Output.Tuple(project, defaultTrustConfig.Name).Apply(values =\u003e\n {\n var project = values.Item1;\n var name = values.Item2;\n return $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/locations/us-central1/trustConfigs/{name}\";\n }),\n },\n });\n\n var defaultRegionSslCertificate = new Gcp.Compute.RegionSslCertificate(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"my-certificate\",\n PrivateKey = Std.File.Invoke(new()\n {\n Input = \"path/to/private.key\",\n }).Apply(invoke =\u003e invoke.Result),\n Certificate = Std.File.Invoke(new()\n {\n Input = \"path/to/certificate.crt\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var defaultRegionHealthCheck = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"http-health-check\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var defaultRegionBackendService = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"backend-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n HealthChecks = defaultRegionHealthCheck.Id,\n });\n\n var defaultRegionUrlMap = new Gcp.Compute.RegionUrlMap(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"url-map\",\n Description = \"a description\",\n DefaultService = defaultRegionBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultRegionBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultRegionBackendService.Id,\n },\n },\n },\n },\n });\n\n var @default = new Gcp.Compute.RegionTargetHttpsProxy(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"test-mtls-proxy\",\n UrlMap = defaultRegionUrlMap.Id,\n SslCertificates = new[]\n {\n defaultRegionSslCertificate.Id,\n },\n ServerTlsPolicy = defaultServerTlsPolicy.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/ca_cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/ca_cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultTrustConfig, err := certificatemanager.NewTrustConfig(ctx, \"default\", \u0026certificatemanager.TrustConfigArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-trust-config\"),\n\t\t\tDescription: pulumi.String(\"sample description for trust config\"),\n\t\t\tTrustStores: certificatemanager.TrustConfigTrustStoreArray{\n\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreArgs{\n\t\t\t\t\tTrustAnchors: certificatemanager.TrustConfigTrustStoreTrustAnchorArray{\n\t\t\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreTrustAnchorArgs{\n\t\t\t\t\t\t\tPemCertificate: pulumi.String(invokeFile.Result),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tIntermediateCas: certificatemanager.TrustConfigTrustStoreIntermediateCaArray{\n\t\t\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreIntermediateCaArgs{\n\t\t\t\t\t\t\tPemCertificate: pulumi.String(invokeFile1.Result),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultServerTlsPolicy, err := networksecurity.NewServerTlsPolicy(ctx, \"default\", \u0026networksecurity.ServerTlsPolicyArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-tls-policy\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tAllowOpen: pulumi.Bool(false),\n\t\t\tMtlsPolicy: \u0026networksecurity.ServerTlsPolicyMtlsPolicyArgs{\n\t\t\t\tClientValidationMode: pulumi.String(\"REJECT_INVALID\"),\n\t\t\t\tClientValidationTrustConfig: defaultTrustConfig.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"projects/%v/locations/us-central1/trustConfigs/%v\", project.Number, name), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile2, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/private.key\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile3, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/certificate.crt\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionSslCertificate, err := compute.NewRegionSslCertificate(ctx, \"default\", \u0026compute.RegionSslCertificateArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tPrivateKey: pulumi.String(invokeFile2.Result),\n\t\t\tCertificate: pulumi.String(invokeFile3.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionHealthCheck, err := compute.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"http-health-check\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionBackendService, err := compute.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tHealthChecks: defaultRegionHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionUrlMap, err := compute.NewRegionUrlMap(ctx, \"default\", \u0026compute.RegionUrlMapArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultRegionBackendService.ID(),\n\t\t\tHostRules: compute.RegionUrlMapHostRuleArray{\n\t\t\t\t\u0026compute.RegionUrlMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.RegionUrlMapPathMatcherArray{\n\t\t\t\t\u0026compute.RegionUrlMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultRegionBackendService.ID(),\n\t\t\t\t\tPathRules: compute.RegionUrlMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultRegionBackendService.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionTargetHttpsProxy(ctx, \"default\", \u0026compute.RegionTargetHttpsProxyArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"test-mtls-proxy\"),\n\t\t\tUrlMap: defaultRegionUrlMap.ID(),\n\t\t\tSslCertificates: pulumi.StringArray{\n\t\t\t\tdefaultRegionSslCertificate.ID(),\n\t\t\t},\n\t\t\tServerTlsPolicy: defaultServerTlsPolicy.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.certificatemanager.TrustConfig;\nimport com.pulumi.gcp.certificatemanager.TrustConfigArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.TrustConfigTrustStoreArgs;\nimport com.pulumi.gcp.networksecurity.ServerTlsPolicy;\nimport com.pulumi.gcp.networksecurity.ServerTlsPolicyArgs;\nimport com.pulumi.gcp.networksecurity.inputs.ServerTlsPolicyMtlsPolicyArgs;\nimport com.pulumi.gcp.compute.RegionSslCertificate;\nimport com.pulumi.gcp.compute.RegionSslCertificateArgs;\nimport com.pulumi.gcp.compute.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.RegionUrlMap;\nimport com.pulumi.gcp.compute.RegionUrlMapArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.RegionTargetHttpsProxy;\nimport com.pulumi.gcp.compute.RegionTargetHttpsProxyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var defaultTrustConfig = new TrustConfig(\"defaultTrustConfig\", TrustConfigArgs.builder()\n .location(\"us-central1\")\n .name(\"my-trust-config\")\n .description(\"sample description for trust config\")\n .trustStores(TrustConfigTrustStoreArgs.builder()\n .trustAnchors(TrustConfigTrustStoreTrustAnchorArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/ca_cert.pem\")\n .build()).result())\n .build())\n .intermediateCas(TrustConfigTrustStoreIntermediateCaArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/ca_cert.pem\")\n .build()).result())\n .build())\n .build())\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n var defaultServerTlsPolicy = new ServerTlsPolicy(\"defaultServerTlsPolicy\", ServerTlsPolicyArgs.builder()\n .location(\"us-central1\")\n .name(\"my-tls-policy\")\n .description(\"my description\")\n .allowOpen(\"false\")\n .mtlsPolicy(ServerTlsPolicyMtlsPolicyArgs.builder()\n .clientValidationMode(\"REJECT_INVALID\")\n .clientValidationTrustConfig(defaultTrustConfig.name().applyValue(name -\u003e String.format(\"projects/%s/locations/us-central1/trustConfigs/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number()),name)))\n .build())\n .build());\n\n var defaultRegionSslCertificate = new RegionSslCertificate(\"defaultRegionSslCertificate\", RegionSslCertificateArgs.builder()\n .region(\"us-central1\")\n .name(\"my-certificate\")\n .privateKey(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/private.key\")\n .build()).result())\n .certificate(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/certificate.crt\")\n .build()).result())\n .build());\n\n var defaultRegionHealthCheck = new RegionHealthCheck(\"defaultRegionHealthCheck\", RegionHealthCheckArgs.builder()\n .region(\"us-central1\")\n .name(\"http-health-check\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var defaultRegionBackendService = new RegionBackendService(\"defaultRegionBackendService\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"backend-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .healthChecks(defaultRegionHealthCheck.id())\n .build());\n\n var defaultRegionUrlMap = new RegionUrlMap(\"defaultRegionUrlMap\", RegionUrlMapArgs.builder()\n .region(\"us-central1\")\n .name(\"url-map\")\n .description(\"a description\")\n .defaultService(defaultRegionBackendService.id())\n .hostRules(RegionUrlMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(RegionUrlMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultRegionBackendService.id())\n .pathRules(RegionUrlMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultRegionBackendService.id())\n .build())\n .build())\n .build());\n\n var default_ = new RegionTargetHttpsProxy(\"default\", RegionTargetHttpsProxyArgs.builder()\n .region(\"us-central1\")\n .name(\"test-mtls-proxy\")\n .urlMap(defaultRegionUrlMap.id())\n .sslCertificates(defaultRegionSslCertificate.id())\n .serverTlsPolicy(defaultServerTlsPolicy.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionTargetHttpsProxy\n properties:\n region: us-central1\n name: test-mtls-proxy\n urlMap: ${defaultRegionUrlMap.id}\n sslCertificates:\n - ${defaultRegionSslCertificate.id}\n serverTlsPolicy: ${defaultServerTlsPolicy.id}\n defaultTrustConfig:\n type: gcp:certificatemanager:TrustConfig\n name: default\n properties:\n location: us-central1\n name: my-trust-config\n description: sample description for trust config\n trustStores:\n - trustAnchors:\n - pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/ca_cert.pem\n Return: result\n intermediateCas:\n - pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/ca_cert.pem\n Return: result\n labels:\n foo: bar\n defaultServerTlsPolicy:\n type: gcp:networksecurity:ServerTlsPolicy\n name: default\n properties:\n location: us-central1\n name: my-tls-policy\n description: my description\n allowOpen: 'false'\n mtlsPolicy:\n clientValidationMode: REJECT_INVALID\n clientValidationTrustConfig: projects/${project.number}/locations/us-central1/trustConfigs/${defaultTrustConfig.name}\n defaultRegionSslCertificate:\n type: gcp:compute:RegionSslCertificate\n name: default\n properties:\n region: us-central1\n name: my-certificate\n privateKey:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/private.key\n Return: result\n certificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/certificate.crt\n Return: result\n defaultRegionUrlMap:\n type: gcp:compute:RegionUrlMap\n name: default\n properties:\n region: us-central1\n name: url-map\n description: a description\n defaultService: ${defaultRegionBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultRegionBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultRegionBackendService.id}\n defaultRegionBackendService:\n type: gcp:compute:RegionBackendService\n name: default\n properties:\n region: us-central1\n name: backend-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: INTERNAL_MANAGED\n healthChecks: ${defaultRegionHealthCheck.id}\n defaultRegionHealthCheck:\n type: gcp:compute:RegionHealthCheck\n name: default\n properties:\n region: us-central1\n name: http-health-check\n checkIntervalSec: 1\n timeoutSec: 1\n httpHealthCheck:\n port: 80\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Target Https Proxy Certificate Manager Certificate\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst defaultCertificate = new gcp.certificatemanager.Certificate(\"default\", {\n name: \"my-certificate\",\n location: \"us-central1\",\n selfManaged: {\n pemCertificate: std.file({\n input: \"test-fixtures/cert.pem\",\n }).then(invoke =\u003e invoke.result),\n pemPrivateKey: std.file({\n input: \"test-fixtures/private-key.pem\",\n }).then(invoke =\u003e invoke.result),\n },\n});\nconst defaultRegionBackendService = new gcp.compute.RegionBackendService(\"default\", {\n name: \"backend-service\",\n region: \"us-central1\",\n protocol: \"HTTPS\",\n timeoutSec: 30,\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n});\nconst defaultRegionUrlMap = new gcp.compute.RegionUrlMap(\"default\", {\n name: \"url-map\",\n defaultService: defaultRegionBackendService.id,\n region: \"us-central1\",\n});\nconst _default = new gcp.compute.RegionTargetHttpsProxy(\"default\", {\n name: \"target-http-proxy\",\n urlMap: defaultRegionUrlMap.id,\n certificateManagerCertificates: [pulumi.interpolate`//certificatemanager.googleapis.com/${defaultCertificate.id}`],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault_certificate = gcp.certificatemanager.Certificate(\"default\",\n name=\"my-certificate\",\n location=\"us-central1\",\n self_managed={\n \"pem_certificate\": std.file(input=\"test-fixtures/cert.pem\").result,\n \"pem_private_key\": std.file(input=\"test-fixtures/private-key.pem\").result,\n })\ndefault_region_backend_service = gcp.compute.RegionBackendService(\"default\",\n name=\"backend-service\",\n region=\"us-central1\",\n protocol=\"HTTPS\",\n timeout_sec=30,\n load_balancing_scheme=\"INTERNAL_MANAGED\")\ndefault_region_url_map = gcp.compute.RegionUrlMap(\"default\",\n name=\"url-map\",\n default_service=default_region_backend_service.id,\n region=\"us-central1\")\ndefault = gcp.compute.RegionTargetHttpsProxy(\"default\",\n name=\"target-http-proxy\",\n url_map=default_region_url_map.id,\n certificate_manager_certificates=[default_certificate.id.apply(lambda id: f\"//certificatemanager.googleapis.com/{id}\")])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultCertificate = new Gcp.CertificateManager.Certificate(\"default\", new()\n {\n Name = \"my-certificate\",\n Location = \"us-central1\",\n SelfManaged = new Gcp.CertificateManager.Inputs.CertificateSelfManagedArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n PemPrivateKey = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/private-key.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n });\n\n var defaultRegionBackendService = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n Name = \"backend-service\",\n Region = \"us-central1\",\n Protocol = \"HTTPS\",\n TimeoutSec = 30,\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n });\n\n var defaultRegionUrlMap = new Gcp.Compute.RegionUrlMap(\"default\", new()\n {\n Name = \"url-map\",\n DefaultService = defaultRegionBackendService.Id,\n Region = \"us-central1\",\n });\n\n var @default = new Gcp.Compute.RegionTargetHttpsProxy(\"default\", new()\n {\n Name = \"target-http-proxy\",\n UrlMap = defaultRegionUrlMap.Id,\n CertificateManagerCertificates = new[]\n {\n defaultCertificate.Id.Apply(id =\u003e $\"//certificatemanager.googleapis.com/{id}\"),\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/private-key.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultCertificate, err := certificatemanager.NewCertificate(ctx, \"default\", \u0026certificatemanager.CertificateArgs{\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tSelfManaged: \u0026certificatemanager.CertificateSelfManagedArgs{\n\t\t\t\tPemCertificate: pulumi.String(invokeFile.Result),\n\t\t\t\tPemPrivateKey: pulumi.String(invokeFile1.Result),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionBackendService, err := compute.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tProtocol: pulumi.String(\"HTTPS\"),\n\t\t\tTimeoutSec: pulumi.Int(30),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionUrlMap, err := compute.NewRegionUrlMap(ctx, \"default\", \u0026compute.RegionUrlMapArgs{\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDefaultService: defaultRegionBackendService.ID(),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionTargetHttpsProxy(ctx, \"default\", \u0026compute.RegionTargetHttpsProxyArgs{\n\t\t\tName: pulumi.String(\"target-http-proxy\"),\n\t\t\tUrlMap: defaultRegionUrlMap.ID(),\n\t\t\tCertificateManagerCertificates: pulumi.StringArray{\n\t\t\t\tdefaultCertificate.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"//certificatemanager.googleapis.com/%v\", id), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificatemanager.Certificate;\nimport com.pulumi.gcp.certificatemanager.CertificateArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.CertificateSelfManagedArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.RegionUrlMap;\nimport com.pulumi.gcp.compute.RegionUrlMapArgs;\nimport com.pulumi.gcp.compute.RegionTargetHttpsProxy;\nimport com.pulumi.gcp.compute.RegionTargetHttpsProxyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultCertificate = new Certificate(\"defaultCertificate\", CertificateArgs.builder()\n .name(\"my-certificate\")\n .location(\"us-central1\")\n .selfManaged(CertificateSelfManagedArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/cert.pem\")\n .build()).result())\n .pemPrivateKey(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/private-key.pem\")\n .build()).result())\n .build())\n .build());\n\n var defaultRegionBackendService = new RegionBackendService(\"defaultRegionBackendService\", RegionBackendServiceArgs.builder()\n .name(\"backend-service\")\n .region(\"us-central1\")\n .protocol(\"HTTPS\")\n .timeoutSec(30)\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .build());\n\n var defaultRegionUrlMap = new RegionUrlMap(\"defaultRegionUrlMap\", RegionUrlMapArgs.builder()\n .name(\"url-map\")\n .defaultService(defaultRegionBackendService.id())\n .region(\"us-central1\")\n .build());\n\n var default_ = new RegionTargetHttpsProxy(\"default\", RegionTargetHttpsProxyArgs.builder()\n .name(\"target-http-proxy\")\n .urlMap(defaultRegionUrlMap.id())\n .certificateManagerCertificates(defaultCertificate.id().applyValue(id -\u003e String.format(\"//certificatemanager.googleapis.com/%s\", id)))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionTargetHttpsProxy\n properties:\n name: target-http-proxy\n urlMap: ${defaultRegionUrlMap.id}\n certificateManagerCertificates: # [google_certificate_manager_certificate.default.id] is also acceptable\n - //certificatemanager.googleapis.com/${defaultCertificate.id}\n defaultCertificate:\n type: gcp:certificatemanager:Certificate\n name: default\n properties:\n name: my-certificate\n location: us-central1\n selfManaged:\n pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/cert.pem\n Return: result\n pemPrivateKey:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/private-key.pem\n Return: result\n defaultRegionUrlMap:\n type: gcp:compute:RegionUrlMap\n name: default\n properties:\n name: url-map\n defaultService: ${defaultRegionBackendService.id}\n region: us-central1\n defaultRegionBackendService:\n type: gcp:compute:RegionBackendService\n name: default\n properties:\n name: backend-service\n region: us-central1\n protocol: HTTPS\n timeoutSec: 30\n loadBalancingScheme: INTERNAL_MANAGED\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRegionTargetHttpsProxy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/targetHttpsProxies/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, RegionTargetHttpsProxy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/regionTargetHttpsProxy:RegionTargetHttpsProxy default projects/{{project}}/regions/{{region}}/targetHttpsProxies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionTargetHttpsProxy:RegionTargetHttpsProxy default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionTargetHttpsProxy:RegionTargetHttpsProxy default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionTargetHttpsProxy:RegionTargetHttpsProxy default {{name}}\n```\n\n", + "description": "Represents a RegionTargetHttpsProxy resource, which is used by one or more\nforwarding rules to route incoming HTTPS requests to a URL map.\n\n\nTo get more information about RegionTargetHttpsProxy, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/regionTargetHttpsProxies)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/load-balancing/http/target-proxies)\n\n## Example Usage\n\n### Region Target Https Proxy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst defaultRegionSslCertificate = new gcp.compute.RegionSslCertificate(\"default\", {\n region: \"us-central1\",\n name: \"my-certificate\",\n privateKey: std.file({\n input: \"path/to/private.key\",\n }).then(invoke =\u003e invoke.result),\n certificate: std.file({\n input: \"path/to/certificate.crt\",\n }).then(invoke =\u003e invoke.result),\n});\nconst defaultRegionHealthCheck = new gcp.compute.RegionHealthCheck(\"default\", {\n region: \"us-central1\",\n name: \"http-health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst defaultRegionBackendService = new gcp.compute.RegionBackendService(\"default\", {\n region: \"us-central1\",\n name: \"backend-service\",\n protocol: \"HTTP\",\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n timeoutSec: 10,\n healthChecks: defaultRegionHealthCheck.id,\n});\nconst defaultRegionUrlMap = new gcp.compute.RegionUrlMap(\"default\", {\n region: \"us-central1\",\n name: \"url-map\",\n description: \"a description\",\n defaultService: defaultRegionBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultRegionBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultRegionBackendService.id,\n }],\n }],\n});\nconst _default = new gcp.compute.RegionTargetHttpsProxy(\"default\", {\n region: \"us-central1\",\n name: \"test-proxy\",\n urlMap: defaultRegionUrlMap.id,\n sslCertificates: [defaultRegionSslCertificate.id],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault_region_ssl_certificate = gcp.compute.RegionSslCertificate(\"default\",\n region=\"us-central1\",\n name=\"my-certificate\",\n private_key=std.file(input=\"path/to/private.key\").result,\n certificate=std.file(input=\"path/to/certificate.crt\").result)\ndefault_region_health_check = gcp.compute.RegionHealthCheck(\"default\",\n region=\"us-central1\",\n name=\"http-health-check\",\n http_health_check={\n \"port\": 80,\n })\ndefault_region_backend_service = gcp.compute.RegionBackendService(\"default\",\n region=\"us-central1\",\n name=\"backend-service\",\n protocol=\"HTTP\",\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n timeout_sec=10,\n health_checks=default_region_health_check.id)\ndefault_region_url_map = gcp.compute.RegionUrlMap(\"default\",\n region=\"us-central1\",\n name=\"url-map\",\n description=\"a description\",\n default_service=default_region_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": default_region_backend_service.id,\n \"path_rules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_region_backend_service.id,\n }],\n }])\ndefault = gcp.compute.RegionTargetHttpsProxy(\"default\",\n region=\"us-central1\",\n name=\"test-proxy\",\n url_map=default_region_url_map.id,\n ssl_certificates=[default_region_ssl_certificate.id])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultRegionSslCertificate = new Gcp.Compute.RegionSslCertificate(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"my-certificate\",\n PrivateKey = Std.File.Invoke(new()\n {\n Input = \"path/to/private.key\",\n }).Apply(invoke =\u003e invoke.Result),\n Certificate = Std.File.Invoke(new()\n {\n Input = \"path/to/certificate.crt\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var defaultRegionHealthCheck = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"http-health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var defaultRegionBackendService = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"backend-service\",\n Protocol = \"HTTP\",\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n TimeoutSec = 10,\n HealthChecks = defaultRegionHealthCheck.Id,\n });\n\n var defaultRegionUrlMap = new Gcp.Compute.RegionUrlMap(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"url-map\",\n Description = \"a description\",\n DefaultService = defaultRegionBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultRegionBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultRegionBackendService.Id,\n },\n },\n },\n },\n });\n\n var @default = new Gcp.Compute.RegionTargetHttpsProxy(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"test-proxy\",\n UrlMap = defaultRegionUrlMap.Id,\n SslCertificates = new[]\n {\n defaultRegionSslCertificate.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/private.key\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/certificate.crt\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionSslCertificate, err := compute.NewRegionSslCertificate(ctx, \"default\", \u0026compute.RegionSslCertificateArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tPrivateKey: pulumi.String(invokeFile.Result),\n\t\t\tCertificate: pulumi.String(invokeFile1.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionHealthCheck, err := compute.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"http-health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionBackendService, err := compute.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultRegionHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionUrlMap, err := compute.NewRegionUrlMap(ctx, \"default\", \u0026compute.RegionUrlMapArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultRegionBackendService.ID(),\n\t\t\tHostRules: compute.RegionUrlMapHostRuleArray{\n\t\t\t\t\u0026compute.RegionUrlMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.RegionUrlMapPathMatcherArray{\n\t\t\t\t\u0026compute.RegionUrlMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultRegionBackendService.ID(),\n\t\t\t\t\tPathRules: compute.RegionUrlMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultRegionBackendService.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionTargetHttpsProxy(ctx, \"default\", \u0026compute.RegionTargetHttpsProxyArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"test-proxy\"),\n\t\t\tUrlMap: defaultRegionUrlMap.ID(),\n\t\t\tSslCertificates: pulumi.StringArray{\n\t\t\t\tdefaultRegionSslCertificate.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionSslCertificate;\nimport com.pulumi.gcp.compute.RegionSslCertificateArgs;\nimport com.pulumi.gcp.compute.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.RegionUrlMap;\nimport com.pulumi.gcp.compute.RegionUrlMapArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.RegionTargetHttpsProxy;\nimport com.pulumi.gcp.compute.RegionTargetHttpsProxyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultRegionSslCertificate = new RegionSslCertificate(\"defaultRegionSslCertificate\", RegionSslCertificateArgs.builder()\n .region(\"us-central1\")\n .name(\"my-certificate\")\n .privateKey(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/private.key\")\n .build()).result())\n .certificate(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/certificate.crt\")\n .build()).result())\n .build());\n\n var defaultRegionHealthCheck = new RegionHealthCheck(\"defaultRegionHealthCheck\", RegionHealthCheckArgs.builder()\n .region(\"us-central1\")\n .name(\"http-health-check\")\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var defaultRegionBackendService = new RegionBackendService(\"defaultRegionBackendService\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"backend-service\")\n .protocol(\"HTTP\")\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .timeoutSec(10)\n .healthChecks(defaultRegionHealthCheck.id())\n .build());\n\n var defaultRegionUrlMap = new RegionUrlMap(\"defaultRegionUrlMap\", RegionUrlMapArgs.builder()\n .region(\"us-central1\")\n .name(\"url-map\")\n .description(\"a description\")\n .defaultService(defaultRegionBackendService.id())\n .hostRules(RegionUrlMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(RegionUrlMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultRegionBackendService.id())\n .pathRules(RegionUrlMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultRegionBackendService.id())\n .build())\n .build())\n .build());\n\n var default_ = new RegionTargetHttpsProxy(\"default\", RegionTargetHttpsProxyArgs.builder()\n .region(\"us-central1\")\n .name(\"test-proxy\")\n .urlMap(defaultRegionUrlMap.id())\n .sslCertificates(defaultRegionSslCertificate.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionTargetHttpsProxy\n properties:\n region: us-central1\n name: test-proxy\n urlMap: ${defaultRegionUrlMap.id}\n sslCertificates:\n - ${defaultRegionSslCertificate.id}\n defaultRegionSslCertificate:\n type: gcp:compute:RegionSslCertificate\n name: default\n properties:\n region: us-central1\n name: my-certificate\n privateKey:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/private.key\n Return: result\n certificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/certificate.crt\n Return: result\n defaultRegionUrlMap:\n type: gcp:compute:RegionUrlMap\n name: default\n properties:\n region: us-central1\n name: url-map\n description: a description\n defaultService: ${defaultRegionBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultRegionBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultRegionBackendService.id}\n defaultRegionBackendService:\n type: gcp:compute:RegionBackendService\n name: default\n properties:\n region: us-central1\n name: backend-service\n protocol: HTTP\n loadBalancingScheme: INTERNAL_MANAGED\n timeoutSec: 10\n healthChecks: ${defaultRegionHealthCheck.id}\n defaultRegionHealthCheck:\n type: gcp:compute:RegionHealthCheck\n name: default\n properties:\n region: us-central1\n name: http-health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Target Https Proxy Http Keep Alive Timeout\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst defaultRegionSslCertificate = new gcp.compute.RegionSslCertificate(\"default\", {\n region: \"us-central1\",\n name: \"my-certificate\",\n privateKey: std.file({\n input: \"path/to/private.key\",\n }).then(invoke =\u003e invoke.result),\n certificate: std.file({\n input: \"path/to/certificate.crt\",\n }).then(invoke =\u003e invoke.result),\n});\nconst defaultRegionHealthCheck = new gcp.compute.RegionHealthCheck(\"default\", {\n region: \"us-central1\",\n name: \"http-health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst defaultRegionBackendService = new gcp.compute.RegionBackendService(\"default\", {\n region: \"us-central1\",\n name: \"backend-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n healthChecks: defaultRegionHealthCheck.id,\n});\nconst defaultRegionUrlMap = new gcp.compute.RegionUrlMap(\"default\", {\n region: \"us-central1\",\n name: \"url-map\",\n description: \"a description\",\n defaultService: defaultRegionBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultRegionBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultRegionBackendService.id,\n }],\n }],\n});\nconst _default = new gcp.compute.RegionTargetHttpsProxy(\"default\", {\n region: \"us-central1\",\n name: \"test-http-keep-alive-timeout-proxy\",\n httpKeepAliveTimeoutSec: 600,\n urlMap: defaultRegionUrlMap.id,\n sslCertificates: [defaultRegionSslCertificate.id],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault_region_ssl_certificate = gcp.compute.RegionSslCertificate(\"default\",\n region=\"us-central1\",\n name=\"my-certificate\",\n private_key=std.file(input=\"path/to/private.key\").result,\n certificate=std.file(input=\"path/to/certificate.crt\").result)\ndefault_region_health_check = gcp.compute.RegionHealthCheck(\"default\",\n region=\"us-central1\",\n name=\"http-health-check\",\n http_health_check={\n \"port\": 80,\n })\ndefault_region_backend_service = gcp.compute.RegionBackendService(\"default\",\n region=\"us-central1\",\n name=\"backend-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n health_checks=default_region_health_check.id)\ndefault_region_url_map = gcp.compute.RegionUrlMap(\"default\",\n region=\"us-central1\",\n name=\"url-map\",\n description=\"a description\",\n default_service=default_region_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": default_region_backend_service.id,\n \"path_rules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_region_backend_service.id,\n }],\n }])\ndefault = gcp.compute.RegionTargetHttpsProxy(\"default\",\n region=\"us-central1\",\n name=\"test-http-keep-alive-timeout-proxy\",\n http_keep_alive_timeout_sec=600,\n url_map=default_region_url_map.id,\n ssl_certificates=[default_region_ssl_certificate.id])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultRegionSslCertificate = new Gcp.Compute.RegionSslCertificate(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"my-certificate\",\n PrivateKey = Std.File.Invoke(new()\n {\n Input = \"path/to/private.key\",\n }).Apply(invoke =\u003e invoke.Result),\n Certificate = Std.File.Invoke(new()\n {\n Input = \"path/to/certificate.crt\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var defaultRegionHealthCheck = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"http-health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var defaultRegionBackendService = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"backend-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n HealthChecks = defaultRegionHealthCheck.Id,\n });\n\n var defaultRegionUrlMap = new Gcp.Compute.RegionUrlMap(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"url-map\",\n Description = \"a description\",\n DefaultService = defaultRegionBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultRegionBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultRegionBackendService.Id,\n },\n },\n },\n },\n });\n\n var @default = new Gcp.Compute.RegionTargetHttpsProxy(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"test-http-keep-alive-timeout-proxy\",\n HttpKeepAliveTimeoutSec = 600,\n UrlMap = defaultRegionUrlMap.Id,\n SslCertificates = new[]\n {\n defaultRegionSslCertificate.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/private.key\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/certificate.crt\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionSslCertificate, err := compute.NewRegionSslCertificate(ctx, \"default\", \u0026compute.RegionSslCertificateArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tPrivateKey: pulumi.String(invokeFile.Result),\n\t\t\tCertificate: pulumi.String(invokeFile1.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionHealthCheck, err := compute.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"http-health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionBackendService, err := compute.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tHealthChecks: defaultRegionHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionUrlMap, err := compute.NewRegionUrlMap(ctx, \"default\", \u0026compute.RegionUrlMapArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultRegionBackendService.ID(),\n\t\t\tHostRules: compute.RegionUrlMapHostRuleArray{\n\t\t\t\t\u0026compute.RegionUrlMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.RegionUrlMapPathMatcherArray{\n\t\t\t\t\u0026compute.RegionUrlMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultRegionBackendService.ID(),\n\t\t\t\t\tPathRules: compute.RegionUrlMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultRegionBackendService.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionTargetHttpsProxy(ctx, \"default\", \u0026compute.RegionTargetHttpsProxyArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"test-http-keep-alive-timeout-proxy\"),\n\t\t\tHttpKeepAliveTimeoutSec: pulumi.Int(600),\n\t\t\tUrlMap: defaultRegionUrlMap.ID(),\n\t\t\tSslCertificates: pulumi.StringArray{\n\t\t\t\tdefaultRegionSslCertificate.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionSslCertificate;\nimport com.pulumi.gcp.compute.RegionSslCertificateArgs;\nimport com.pulumi.gcp.compute.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.RegionUrlMap;\nimport com.pulumi.gcp.compute.RegionUrlMapArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.RegionTargetHttpsProxy;\nimport com.pulumi.gcp.compute.RegionTargetHttpsProxyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultRegionSslCertificate = new RegionSslCertificate(\"defaultRegionSslCertificate\", RegionSslCertificateArgs.builder()\n .region(\"us-central1\")\n .name(\"my-certificate\")\n .privateKey(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/private.key\")\n .build()).result())\n .certificate(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/certificate.crt\")\n .build()).result())\n .build());\n\n var defaultRegionHealthCheck = new RegionHealthCheck(\"defaultRegionHealthCheck\", RegionHealthCheckArgs.builder()\n .region(\"us-central1\")\n .name(\"http-health-check\")\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var defaultRegionBackendService = new RegionBackendService(\"defaultRegionBackendService\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"backend-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .healthChecks(defaultRegionHealthCheck.id())\n .build());\n\n var defaultRegionUrlMap = new RegionUrlMap(\"defaultRegionUrlMap\", RegionUrlMapArgs.builder()\n .region(\"us-central1\")\n .name(\"url-map\")\n .description(\"a description\")\n .defaultService(defaultRegionBackendService.id())\n .hostRules(RegionUrlMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(RegionUrlMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultRegionBackendService.id())\n .pathRules(RegionUrlMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultRegionBackendService.id())\n .build())\n .build())\n .build());\n\n var default_ = new RegionTargetHttpsProxy(\"default\", RegionTargetHttpsProxyArgs.builder()\n .region(\"us-central1\")\n .name(\"test-http-keep-alive-timeout-proxy\")\n .httpKeepAliveTimeoutSec(600)\n .urlMap(defaultRegionUrlMap.id())\n .sslCertificates(defaultRegionSslCertificate.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionTargetHttpsProxy\n properties:\n region: us-central1\n name: test-http-keep-alive-timeout-proxy\n httpKeepAliveTimeoutSec: 600\n urlMap: ${defaultRegionUrlMap.id}\n sslCertificates:\n - ${defaultRegionSslCertificate.id}\n defaultRegionSslCertificate:\n type: gcp:compute:RegionSslCertificate\n name: default\n properties:\n region: us-central1\n name: my-certificate\n privateKey:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/private.key\n Return: result\n certificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/certificate.crt\n Return: result\n defaultRegionUrlMap:\n type: gcp:compute:RegionUrlMap\n name: default\n properties:\n region: us-central1\n name: url-map\n description: a description\n defaultService: ${defaultRegionBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultRegionBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultRegionBackendService.id}\n defaultRegionBackendService:\n type: gcp:compute:RegionBackendService\n name: default\n properties:\n region: us-central1\n name: backend-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: INTERNAL_MANAGED\n healthChecks: ${defaultRegionHealthCheck.id}\n defaultRegionHealthCheck:\n type: gcp:compute:RegionHealthCheck\n name: default\n properties:\n region: us-central1\n name: http-health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Target Https Proxy Mtls\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst project = gcp.organizations.getProject({});\nconst defaultTrustConfig = new gcp.certificatemanager.TrustConfig(\"default\", {\n location: \"us-central1\",\n name: \"my-trust-config\",\n description: \"sample description for trust config\",\n trustStores: [{\n trustAnchors: [{\n pemCertificate: std.file({\n input: \"test-fixtures/ca_cert.pem\",\n }).then(invoke =\u003e invoke.result),\n }],\n intermediateCas: [{\n pemCertificate: std.file({\n input: \"test-fixtures/ca_cert.pem\",\n }).then(invoke =\u003e invoke.result),\n }],\n }],\n labels: {\n foo: \"bar\",\n },\n});\nconst defaultServerTlsPolicy = new gcp.networksecurity.ServerTlsPolicy(\"default\", {\n location: \"us-central1\",\n name: \"my-tls-policy\",\n description: \"my description\",\n allowOpen: false,\n mtlsPolicy: {\n clientValidationMode: \"REJECT_INVALID\",\n clientValidationTrustConfig: pulumi.all([project, defaultTrustConfig.name]).apply(([project, name]) =\u003e `projects/${project.number}/locations/us-central1/trustConfigs/${name}`),\n },\n});\nconst defaultRegionSslCertificate = new gcp.compute.RegionSslCertificate(\"default\", {\n region: \"us-central1\",\n name: \"my-certificate\",\n privateKey: std.file({\n input: \"path/to/private.key\",\n }).then(invoke =\u003e invoke.result),\n certificate: std.file({\n input: \"path/to/certificate.crt\",\n }).then(invoke =\u003e invoke.result),\n});\nconst defaultRegionHealthCheck = new gcp.compute.RegionHealthCheck(\"default\", {\n region: \"us-central1\",\n name: \"http-health-check\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n httpHealthCheck: {\n port: 80,\n },\n});\nconst defaultRegionBackendService = new gcp.compute.RegionBackendService(\"default\", {\n region: \"us-central1\",\n name: \"backend-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n healthChecks: defaultRegionHealthCheck.id,\n});\nconst defaultRegionUrlMap = new gcp.compute.RegionUrlMap(\"default\", {\n region: \"us-central1\",\n name: \"url-map\",\n description: \"a description\",\n defaultService: defaultRegionBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultRegionBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultRegionBackendService.id,\n }],\n }],\n});\nconst _default = new gcp.compute.RegionTargetHttpsProxy(\"default\", {\n region: \"us-central1\",\n name: \"test-mtls-proxy\",\n urlMap: defaultRegionUrlMap.id,\n sslCertificates: [defaultRegionSslCertificate.id],\n serverTlsPolicy: defaultServerTlsPolicy.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nproject = gcp.organizations.get_project()\ndefault_trust_config = gcp.certificatemanager.TrustConfig(\"default\",\n location=\"us-central1\",\n name=\"my-trust-config\",\n description=\"sample description for trust config\",\n trust_stores=[{\n \"trust_anchors\": [{\n \"pem_certificate\": std.file(input=\"test-fixtures/ca_cert.pem\").result,\n }],\n \"intermediate_cas\": [{\n \"pem_certificate\": std.file(input=\"test-fixtures/ca_cert.pem\").result,\n }],\n }],\n labels={\n \"foo\": \"bar\",\n })\ndefault_server_tls_policy = gcp.networksecurity.ServerTlsPolicy(\"default\",\n location=\"us-central1\",\n name=\"my-tls-policy\",\n description=\"my description\",\n allow_open=False,\n mtls_policy={\n \"client_validation_mode\": \"REJECT_INVALID\",\n \"client_validation_trust_config\": default_trust_config.name.apply(lambda name: f\"projects/{project.number}/locations/us-central1/trustConfigs/{name}\"),\n })\ndefault_region_ssl_certificate = gcp.compute.RegionSslCertificate(\"default\",\n region=\"us-central1\",\n name=\"my-certificate\",\n private_key=std.file(input=\"path/to/private.key\").result,\n certificate=std.file(input=\"path/to/certificate.crt\").result)\ndefault_region_health_check = gcp.compute.RegionHealthCheck(\"default\",\n region=\"us-central1\",\n name=\"http-health-check\",\n check_interval_sec=1,\n timeout_sec=1,\n http_health_check={\n \"port\": 80,\n })\ndefault_region_backend_service = gcp.compute.RegionBackendService(\"default\",\n region=\"us-central1\",\n name=\"backend-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n health_checks=default_region_health_check.id)\ndefault_region_url_map = gcp.compute.RegionUrlMap(\"default\",\n region=\"us-central1\",\n name=\"url-map\",\n description=\"a description\",\n default_service=default_region_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": default_region_backend_service.id,\n \"path_rules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_region_backend_service.id,\n }],\n }])\ndefault = gcp.compute.RegionTargetHttpsProxy(\"default\",\n region=\"us-central1\",\n name=\"test-mtls-proxy\",\n url_map=default_region_url_map.id,\n ssl_certificates=[default_region_ssl_certificate.id],\n server_tls_policy=default_server_tls_policy.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var defaultTrustConfig = new Gcp.CertificateManager.TrustConfig(\"default\", new()\n {\n Location = \"us-central1\",\n Name = \"my-trust-config\",\n Description = \"sample description for trust config\",\n TrustStores = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreArgs\n {\n TrustAnchors = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreTrustAnchorArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/ca_cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n IntermediateCas = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreIntermediateCaArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/ca_cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n },\n },\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n var defaultServerTlsPolicy = new Gcp.NetworkSecurity.ServerTlsPolicy(\"default\", new()\n {\n Location = \"us-central1\",\n Name = \"my-tls-policy\",\n Description = \"my description\",\n AllowOpen = false,\n MtlsPolicy = new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyMtlsPolicyArgs\n {\n ClientValidationMode = \"REJECT_INVALID\",\n ClientValidationTrustConfig = Output.Tuple(project, defaultTrustConfig.Name).Apply(values =\u003e\n {\n var project = values.Item1;\n var name = values.Item2;\n return $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/locations/us-central1/trustConfigs/{name}\";\n }),\n },\n });\n\n var defaultRegionSslCertificate = new Gcp.Compute.RegionSslCertificate(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"my-certificate\",\n PrivateKey = Std.File.Invoke(new()\n {\n Input = \"path/to/private.key\",\n }).Apply(invoke =\u003e invoke.Result),\n Certificate = Std.File.Invoke(new()\n {\n Input = \"path/to/certificate.crt\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var defaultRegionHealthCheck = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"http-health-check\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var defaultRegionBackendService = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"backend-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n HealthChecks = defaultRegionHealthCheck.Id,\n });\n\n var defaultRegionUrlMap = new Gcp.Compute.RegionUrlMap(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"url-map\",\n Description = \"a description\",\n DefaultService = defaultRegionBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultRegionBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultRegionBackendService.Id,\n },\n },\n },\n },\n });\n\n var @default = new Gcp.Compute.RegionTargetHttpsProxy(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"test-mtls-proxy\",\n UrlMap = defaultRegionUrlMap.Id,\n SslCertificates = new[]\n {\n defaultRegionSslCertificate.Id,\n },\n ServerTlsPolicy = defaultServerTlsPolicy.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/ca_cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/ca_cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultTrustConfig, err := certificatemanager.NewTrustConfig(ctx, \"default\", \u0026certificatemanager.TrustConfigArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-trust-config\"),\n\t\t\tDescription: pulumi.String(\"sample description for trust config\"),\n\t\t\tTrustStores: certificatemanager.TrustConfigTrustStoreArray{\n\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreArgs{\n\t\t\t\t\tTrustAnchors: certificatemanager.TrustConfigTrustStoreTrustAnchorArray{\n\t\t\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreTrustAnchorArgs{\n\t\t\t\t\t\t\tPemCertificate: pulumi.String(invokeFile.Result),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tIntermediateCas: certificatemanager.TrustConfigTrustStoreIntermediateCaArray{\n\t\t\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreIntermediateCaArgs{\n\t\t\t\t\t\t\tPemCertificate: pulumi.String(invokeFile1.Result),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultServerTlsPolicy, err := networksecurity.NewServerTlsPolicy(ctx, \"default\", \u0026networksecurity.ServerTlsPolicyArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-tls-policy\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tAllowOpen: pulumi.Bool(false),\n\t\t\tMtlsPolicy: \u0026networksecurity.ServerTlsPolicyMtlsPolicyArgs{\n\t\t\t\tClientValidationMode: pulumi.String(\"REJECT_INVALID\"),\n\t\t\t\tClientValidationTrustConfig: defaultTrustConfig.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"projects/%v/locations/us-central1/trustConfigs/%v\", project.Number, name), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile2, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/private.key\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile3, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/certificate.crt\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionSslCertificate, err := compute.NewRegionSslCertificate(ctx, \"default\", \u0026compute.RegionSslCertificateArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tPrivateKey: pulumi.String(invokeFile2.Result),\n\t\t\tCertificate: pulumi.String(invokeFile3.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionHealthCheck, err := compute.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"http-health-check\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionBackendService, err := compute.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tHealthChecks: defaultRegionHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionUrlMap, err := compute.NewRegionUrlMap(ctx, \"default\", \u0026compute.RegionUrlMapArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultRegionBackendService.ID(),\n\t\t\tHostRules: compute.RegionUrlMapHostRuleArray{\n\t\t\t\t\u0026compute.RegionUrlMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.RegionUrlMapPathMatcherArray{\n\t\t\t\t\u0026compute.RegionUrlMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultRegionBackendService.ID(),\n\t\t\t\t\tPathRules: compute.RegionUrlMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultRegionBackendService.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionTargetHttpsProxy(ctx, \"default\", \u0026compute.RegionTargetHttpsProxyArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"test-mtls-proxy\"),\n\t\t\tUrlMap: defaultRegionUrlMap.ID(),\n\t\t\tSslCertificates: pulumi.StringArray{\n\t\t\t\tdefaultRegionSslCertificate.ID(),\n\t\t\t},\n\t\t\tServerTlsPolicy: defaultServerTlsPolicy.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.certificatemanager.TrustConfig;\nimport com.pulumi.gcp.certificatemanager.TrustConfigArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.TrustConfigTrustStoreArgs;\nimport com.pulumi.gcp.networksecurity.ServerTlsPolicy;\nimport com.pulumi.gcp.networksecurity.ServerTlsPolicyArgs;\nimport com.pulumi.gcp.networksecurity.inputs.ServerTlsPolicyMtlsPolicyArgs;\nimport com.pulumi.gcp.compute.RegionSslCertificate;\nimport com.pulumi.gcp.compute.RegionSslCertificateArgs;\nimport com.pulumi.gcp.compute.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.RegionUrlMap;\nimport com.pulumi.gcp.compute.RegionUrlMapArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.RegionTargetHttpsProxy;\nimport com.pulumi.gcp.compute.RegionTargetHttpsProxyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var defaultTrustConfig = new TrustConfig(\"defaultTrustConfig\", TrustConfigArgs.builder()\n .location(\"us-central1\")\n .name(\"my-trust-config\")\n .description(\"sample description for trust config\")\n .trustStores(TrustConfigTrustStoreArgs.builder()\n .trustAnchors(TrustConfigTrustStoreTrustAnchorArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/ca_cert.pem\")\n .build()).result())\n .build())\n .intermediateCas(TrustConfigTrustStoreIntermediateCaArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/ca_cert.pem\")\n .build()).result())\n .build())\n .build())\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n var defaultServerTlsPolicy = new ServerTlsPolicy(\"defaultServerTlsPolicy\", ServerTlsPolicyArgs.builder()\n .location(\"us-central1\")\n .name(\"my-tls-policy\")\n .description(\"my description\")\n .allowOpen(\"false\")\n .mtlsPolicy(ServerTlsPolicyMtlsPolicyArgs.builder()\n .clientValidationMode(\"REJECT_INVALID\")\n .clientValidationTrustConfig(defaultTrustConfig.name().applyValue(name -\u003e String.format(\"projects/%s/locations/us-central1/trustConfigs/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number()),name)))\n .build())\n .build());\n\n var defaultRegionSslCertificate = new RegionSslCertificate(\"defaultRegionSslCertificate\", RegionSslCertificateArgs.builder()\n .region(\"us-central1\")\n .name(\"my-certificate\")\n .privateKey(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/private.key\")\n .build()).result())\n .certificate(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/certificate.crt\")\n .build()).result())\n .build());\n\n var defaultRegionHealthCheck = new RegionHealthCheck(\"defaultRegionHealthCheck\", RegionHealthCheckArgs.builder()\n .region(\"us-central1\")\n .name(\"http-health-check\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var defaultRegionBackendService = new RegionBackendService(\"defaultRegionBackendService\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"backend-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .healthChecks(defaultRegionHealthCheck.id())\n .build());\n\n var defaultRegionUrlMap = new RegionUrlMap(\"defaultRegionUrlMap\", RegionUrlMapArgs.builder()\n .region(\"us-central1\")\n .name(\"url-map\")\n .description(\"a description\")\n .defaultService(defaultRegionBackendService.id())\n .hostRules(RegionUrlMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(RegionUrlMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultRegionBackendService.id())\n .pathRules(RegionUrlMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultRegionBackendService.id())\n .build())\n .build())\n .build());\n\n var default_ = new RegionTargetHttpsProxy(\"default\", RegionTargetHttpsProxyArgs.builder()\n .region(\"us-central1\")\n .name(\"test-mtls-proxy\")\n .urlMap(defaultRegionUrlMap.id())\n .sslCertificates(defaultRegionSslCertificate.id())\n .serverTlsPolicy(defaultServerTlsPolicy.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionTargetHttpsProxy\n properties:\n region: us-central1\n name: test-mtls-proxy\n urlMap: ${defaultRegionUrlMap.id}\n sslCertificates:\n - ${defaultRegionSslCertificate.id}\n serverTlsPolicy: ${defaultServerTlsPolicy.id}\n defaultTrustConfig:\n type: gcp:certificatemanager:TrustConfig\n name: default\n properties:\n location: us-central1\n name: my-trust-config\n description: sample description for trust config\n trustStores:\n - trustAnchors:\n - pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/ca_cert.pem\n Return: result\n intermediateCas:\n - pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/ca_cert.pem\n Return: result\n labels:\n foo: bar\n defaultServerTlsPolicy:\n type: gcp:networksecurity:ServerTlsPolicy\n name: default\n properties:\n location: us-central1\n name: my-tls-policy\n description: my description\n allowOpen: 'false'\n mtlsPolicy:\n clientValidationMode: REJECT_INVALID\n clientValidationTrustConfig: projects/${project.number}/locations/us-central1/trustConfigs/${defaultTrustConfig.name}\n defaultRegionSslCertificate:\n type: gcp:compute:RegionSslCertificate\n name: default\n properties:\n region: us-central1\n name: my-certificate\n privateKey:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/private.key\n Return: result\n certificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/certificate.crt\n Return: result\n defaultRegionUrlMap:\n type: gcp:compute:RegionUrlMap\n name: default\n properties:\n region: us-central1\n name: url-map\n description: a description\n defaultService: ${defaultRegionBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultRegionBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultRegionBackendService.id}\n defaultRegionBackendService:\n type: gcp:compute:RegionBackendService\n name: default\n properties:\n region: us-central1\n name: backend-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: INTERNAL_MANAGED\n healthChecks: ${defaultRegionHealthCheck.id}\n defaultRegionHealthCheck:\n type: gcp:compute:RegionHealthCheck\n name: default\n properties:\n region: us-central1\n name: http-health-check\n checkIntervalSec: 1\n timeoutSec: 1\n httpHealthCheck:\n port: 80\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Target Https Proxy Certificate Manager Certificate\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst defaultCertificate = new gcp.certificatemanager.Certificate(\"default\", {\n name: \"my-certificate\",\n location: \"us-central1\",\n selfManaged: {\n pemCertificate: std.file({\n input: \"test-fixtures/cert.pem\",\n }).then(invoke =\u003e invoke.result),\n pemPrivateKey: std.file({\n input: \"test-fixtures/private-key.pem\",\n }).then(invoke =\u003e invoke.result),\n },\n});\nconst defaultRegionBackendService = new gcp.compute.RegionBackendService(\"default\", {\n name: \"backend-service\",\n region: \"us-central1\",\n protocol: \"HTTPS\",\n timeoutSec: 30,\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n});\nconst defaultRegionUrlMap = new gcp.compute.RegionUrlMap(\"default\", {\n name: \"url-map\",\n defaultService: defaultRegionBackendService.id,\n region: \"us-central1\",\n});\nconst _default = new gcp.compute.RegionTargetHttpsProxy(\"default\", {\n name: \"target-http-proxy\",\n urlMap: defaultRegionUrlMap.id,\n certificateManagerCertificates: [pulumi.interpolate`//certificatemanager.googleapis.com/${defaultCertificate.id}`],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault_certificate = gcp.certificatemanager.Certificate(\"default\",\n name=\"my-certificate\",\n location=\"us-central1\",\n self_managed={\n \"pem_certificate\": std.file(input=\"test-fixtures/cert.pem\").result,\n \"pem_private_key\": std.file(input=\"test-fixtures/private-key.pem\").result,\n })\ndefault_region_backend_service = gcp.compute.RegionBackendService(\"default\",\n name=\"backend-service\",\n region=\"us-central1\",\n protocol=\"HTTPS\",\n timeout_sec=30,\n load_balancing_scheme=\"INTERNAL_MANAGED\")\ndefault_region_url_map = gcp.compute.RegionUrlMap(\"default\",\n name=\"url-map\",\n default_service=default_region_backend_service.id,\n region=\"us-central1\")\ndefault = gcp.compute.RegionTargetHttpsProxy(\"default\",\n name=\"target-http-proxy\",\n url_map=default_region_url_map.id,\n certificate_manager_certificates=[default_certificate.id.apply(lambda id: f\"//certificatemanager.googleapis.com/{id}\")])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultCertificate = new Gcp.CertificateManager.Certificate(\"default\", new()\n {\n Name = \"my-certificate\",\n Location = \"us-central1\",\n SelfManaged = new Gcp.CertificateManager.Inputs.CertificateSelfManagedArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n PemPrivateKey = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/private-key.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n });\n\n var defaultRegionBackendService = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n Name = \"backend-service\",\n Region = \"us-central1\",\n Protocol = \"HTTPS\",\n TimeoutSec = 30,\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n });\n\n var defaultRegionUrlMap = new Gcp.Compute.RegionUrlMap(\"default\", new()\n {\n Name = \"url-map\",\n DefaultService = defaultRegionBackendService.Id,\n Region = \"us-central1\",\n });\n\n var @default = new Gcp.Compute.RegionTargetHttpsProxy(\"default\", new()\n {\n Name = \"target-http-proxy\",\n UrlMap = defaultRegionUrlMap.Id,\n CertificateManagerCertificates = new[]\n {\n defaultCertificate.Id.Apply(id =\u003e $\"//certificatemanager.googleapis.com/{id}\"),\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/private-key.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultCertificate, err := certificatemanager.NewCertificate(ctx, \"default\", \u0026certificatemanager.CertificateArgs{\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tSelfManaged: \u0026certificatemanager.CertificateSelfManagedArgs{\n\t\t\t\tPemCertificate: pulumi.String(invokeFile.Result),\n\t\t\t\tPemPrivateKey: pulumi.String(invokeFile1.Result),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionBackendService, err := compute.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tProtocol: pulumi.String(\"HTTPS\"),\n\t\t\tTimeoutSec: pulumi.Int(30),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultRegionUrlMap, err := compute.NewRegionUrlMap(ctx, \"default\", \u0026compute.RegionUrlMapArgs{\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDefaultService: defaultRegionBackendService.ID(),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionTargetHttpsProxy(ctx, \"default\", \u0026compute.RegionTargetHttpsProxyArgs{\n\t\t\tName: pulumi.String(\"target-http-proxy\"),\n\t\t\tUrlMap: defaultRegionUrlMap.ID(),\n\t\t\tCertificateManagerCertificates: pulumi.StringArray{\n\t\t\t\tdefaultCertificate.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"//certificatemanager.googleapis.com/%v\", id), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificatemanager.Certificate;\nimport com.pulumi.gcp.certificatemanager.CertificateArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.CertificateSelfManagedArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.RegionUrlMap;\nimport com.pulumi.gcp.compute.RegionUrlMapArgs;\nimport com.pulumi.gcp.compute.RegionTargetHttpsProxy;\nimport com.pulumi.gcp.compute.RegionTargetHttpsProxyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultCertificate = new Certificate(\"defaultCertificate\", CertificateArgs.builder()\n .name(\"my-certificate\")\n .location(\"us-central1\")\n .selfManaged(CertificateSelfManagedArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/cert.pem\")\n .build()).result())\n .pemPrivateKey(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/private-key.pem\")\n .build()).result())\n .build())\n .build());\n\n var defaultRegionBackendService = new RegionBackendService(\"defaultRegionBackendService\", RegionBackendServiceArgs.builder()\n .name(\"backend-service\")\n .region(\"us-central1\")\n .protocol(\"HTTPS\")\n .timeoutSec(30)\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .build());\n\n var defaultRegionUrlMap = new RegionUrlMap(\"defaultRegionUrlMap\", RegionUrlMapArgs.builder()\n .name(\"url-map\")\n .defaultService(defaultRegionBackendService.id())\n .region(\"us-central1\")\n .build());\n\n var default_ = new RegionTargetHttpsProxy(\"default\", RegionTargetHttpsProxyArgs.builder()\n .name(\"target-http-proxy\")\n .urlMap(defaultRegionUrlMap.id())\n .certificateManagerCertificates(defaultCertificate.id().applyValue(id -\u003e String.format(\"//certificatemanager.googleapis.com/%s\", id)))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionTargetHttpsProxy\n properties:\n name: target-http-proxy\n urlMap: ${defaultRegionUrlMap.id}\n certificateManagerCertificates: # [google_certificate_manager_certificate.default.id] is also acceptable\n - //certificatemanager.googleapis.com/${defaultCertificate.id}\n defaultCertificate:\n type: gcp:certificatemanager:Certificate\n name: default\n properties:\n name: my-certificate\n location: us-central1\n selfManaged:\n pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/cert.pem\n Return: result\n pemPrivateKey:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/private-key.pem\n Return: result\n defaultRegionUrlMap:\n type: gcp:compute:RegionUrlMap\n name: default\n properties:\n name: url-map\n defaultService: ${defaultRegionBackendService.id}\n region: us-central1\n defaultRegionBackendService:\n type: gcp:compute:RegionBackendService\n name: default\n properties:\n name: backend-service\n region: us-central1\n protocol: HTTPS\n timeoutSec: 30\n loadBalancingScheme: INTERNAL_MANAGED\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRegionTargetHttpsProxy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/targetHttpsProxies/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, RegionTargetHttpsProxy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/regionTargetHttpsProxy:RegionTargetHttpsProxy default projects/{{project}}/regions/{{region}}/targetHttpsProxies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionTargetHttpsProxy:RegionTargetHttpsProxy default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionTargetHttpsProxy:RegionTargetHttpsProxy default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionTargetHttpsProxy:RegionTargetHttpsProxy default {{name}}\n```\n\n", "properties": { "certificateManagerCertificates": { "type": "array", @@ -170606,7 +170606,7 @@ } }, "gcp:compute/targetHttpsProxy:TargetHttpsProxy": { - "description": "Represents a TargetHttpsProxy resource, which is used by one or more\nglobal forwarding rule to route incoming HTTPS requests to a URL map.\n\n\nTo get more information about TargetHttpsProxy, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/v1/targetHttpsProxies)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/load-balancing/http/target-proxies)\n\n## Example Usage\n\n### Target Https Proxy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst defaultSSLCertificate = new gcp.compute.SSLCertificate(\"default\", {\n name: \"my-certificate\",\n privateKey: std.file({\n input: \"path/to/private.key\",\n }).then(invoke =\u003e invoke.result),\n certificate: std.file({\n input: \"path/to/certificate.crt\",\n }).then(invoke =\u003e invoke.result),\n});\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"http-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultURLMap = new gcp.compute.URLMap(\"default\", {\n name: \"url-map\",\n description: \"a description\",\n defaultService: defaultBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultBackendService.id,\n }],\n }],\n});\nconst _default = new gcp.compute.TargetHttpsProxy(\"default\", {\n name: \"test-proxy\",\n urlMap: defaultURLMap.id,\n sslCertificates: [defaultSSLCertificate.id],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault_ssl_certificate = gcp.compute.SSLCertificate(\"default\",\n name=\"my-certificate\",\n private_key=std.file(input=\"path/to/private.key\").result,\n certificate=std.file(input=\"path/to/certificate.crt\").result)\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"http-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_http_health_check.id)\ndefault_url_map = gcp.compute.URLMap(\"default\",\n name=\"url-map\",\n description=\"a description\",\n default_service=default_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": default_backend_service.id,\n \"path_rules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_backend_service.id,\n }],\n }])\ndefault = gcp.compute.TargetHttpsProxy(\"default\",\n name=\"test-proxy\",\n url_map=default_url_map.id,\n ssl_certificates=[default_ssl_certificate.id])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultSSLCertificate = new Gcp.Compute.SSLCertificate(\"default\", new()\n {\n Name = \"my-certificate\",\n PrivateKey = Std.File.Invoke(new()\n {\n Input = \"path/to/private.key\",\n }).Apply(invoke =\u003e invoke.Result),\n Certificate = Std.File.Invoke(new()\n {\n Input = \"path/to/certificate.crt\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"http-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultURLMap = new Gcp.Compute.URLMap(\"default\", new()\n {\n Name = \"url-map\",\n Description = \"a description\",\n DefaultService = defaultBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultBackendService.Id,\n },\n },\n },\n },\n });\n\n var @default = new Gcp.Compute.TargetHttpsProxy(\"default\", new()\n {\n Name = \"test-proxy\",\n UrlMap = defaultURLMap.Id,\n SslCertificates = new[]\n {\n defaultSSLCertificate.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/private.key\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/certificate.crt\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSSLCertificate, err := compute.NewSSLCertificate(ctx, \"default\", \u0026compute.SSLCertificateArgs{\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tPrivateKey: pulumi.String(invokeFile.Result),\n\t\t\tCertificate: pulumi.String(invokeFile1.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"http-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultBackendService, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultURLMap, err := compute.NewURLMap(ctx, \"default\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultBackendService.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewTargetHttpsProxy(ctx, \"default\", \u0026compute.TargetHttpsProxyArgs{\n\t\t\tName: pulumi.String(\"test-proxy\"),\n\t\t\tUrlMap: defaultURLMap.ID(),\n\t\t\tSslCertificates: pulumi.StringArray{\n\t\t\t\tdefaultSSLCertificate.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.SSLCertificate;\nimport com.pulumi.gcp.compute.SSLCertificateArgs;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.TargetHttpsProxy;\nimport com.pulumi.gcp.compute.TargetHttpsProxyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultSSLCertificate = new SSLCertificate(\"defaultSSLCertificate\", SSLCertificateArgs.builder()\n .name(\"my-certificate\")\n .privateKey(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/private.key\")\n .build()).result())\n .certificate(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/certificate.crt\")\n .build()).result())\n .build());\n\n var defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"http-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultURLMap = new URLMap(\"defaultURLMap\", URLMapArgs.builder()\n .name(\"url-map\")\n .description(\"a description\")\n .defaultService(defaultBackendService.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultBackendService.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultBackendService.id())\n .build())\n .build())\n .build());\n\n var default_ = new TargetHttpsProxy(\"default\", TargetHttpsProxyArgs.builder()\n .name(\"test-proxy\")\n .urlMap(defaultURLMap.id())\n .sslCertificates(defaultSSLCertificate.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:TargetHttpsProxy\n properties:\n name: test-proxy\n urlMap: ${defaultURLMap.id}\n sslCertificates:\n - ${defaultSSLCertificate.id}\n defaultSSLCertificate:\n type: gcp:compute:SSLCertificate\n name: default\n properties:\n name: my-certificate\n privateKey:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/private.key\n Return: result\n certificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/certificate.crt\n Return: result\n defaultURLMap:\n type: gcp:compute:URLMap\n name: default\n properties:\n name: url-map\n description: a description\n defaultService: ${defaultBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultBackendService.id}\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: backend-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: http-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Target Https Proxy Http Keep Alive Timeout\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst defaultSSLCertificate = new gcp.compute.SSLCertificate(\"default\", {\n name: \"my-certificate\",\n privateKey: std.file({\n input: \"path/to/private.key\",\n }).then(invoke =\u003e invoke.result),\n certificate: std.file({\n input: \"path/to/certificate.crt\",\n }).then(invoke =\u003e invoke.result),\n});\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"http-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"EXTERNAL_MANAGED\",\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultURLMap = new gcp.compute.URLMap(\"default\", {\n name: \"url-map\",\n description: \"a description\",\n defaultService: defaultBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultBackendService.id,\n }],\n }],\n});\nconst _default = new gcp.compute.TargetHttpsProxy(\"default\", {\n name: \"test-http-keep-alive-timeout-proxy\",\n httpKeepAliveTimeoutSec: 610,\n urlMap: defaultURLMap.id,\n sslCertificates: [defaultSSLCertificate.id],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault_ssl_certificate = gcp.compute.SSLCertificate(\"default\",\n name=\"my-certificate\",\n private_key=std.file(input=\"path/to/private.key\").result,\n certificate=std.file(input=\"path/to/certificate.crt\").result)\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"http-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"EXTERNAL_MANAGED\",\n health_checks=default_http_health_check.id)\ndefault_url_map = gcp.compute.URLMap(\"default\",\n name=\"url-map\",\n description=\"a description\",\n default_service=default_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": default_backend_service.id,\n \"path_rules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_backend_service.id,\n }],\n }])\ndefault = gcp.compute.TargetHttpsProxy(\"default\",\n name=\"test-http-keep-alive-timeout-proxy\",\n http_keep_alive_timeout_sec=610,\n url_map=default_url_map.id,\n ssl_certificates=[default_ssl_certificate.id])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultSSLCertificate = new Gcp.Compute.SSLCertificate(\"default\", new()\n {\n Name = \"my-certificate\",\n PrivateKey = Std.File.Invoke(new()\n {\n Input = \"path/to/private.key\",\n }).Apply(invoke =\u003e invoke.Result),\n Certificate = Std.File.Invoke(new()\n {\n Input = \"path/to/certificate.crt\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"http-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"EXTERNAL_MANAGED\",\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultURLMap = new Gcp.Compute.URLMap(\"default\", new()\n {\n Name = \"url-map\",\n Description = \"a description\",\n DefaultService = defaultBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultBackendService.Id,\n },\n },\n },\n },\n });\n\n var @default = new Gcp.Compute.TargetHttpsProxy(\"default\", new()\n {\n Name = \"test-http-keep-alive-timeout-proxy\",\n HttpKeepAliveTimeoutSec = 610,\n UrlMap = defaultURLMap.Id,\n SslCertificates = new[]\n {\n defaultSSLCertificate.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/private.key\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/certificate.crt\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSSLCertificate, err := compute.NewSSLCertificate(ctx, \"default\", \u0026compute.SSLCertificateArgs{\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tPrivateKey: pulumi.String(invokeFile.Result),\n\t\t\tCertificate: pulumi.String(invokeFile1.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"http-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultBackendService, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL_MANAGED\"),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultURLMap, err := compute.NewURLMap(ctx, \"default\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultBackendService.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewTargetHttpsProxy(ctx, \"default\", \u0026compute.TargetHttpsProxyArgs{\n\t\t\tName: pulumi.String(\"test-http-keep-alive-timeout-proxy\"),\n\t\t\tHttpKeepAliveTimeoutSec: pulumi.Int(610),\n\t\t\tUrlMap: defaultURLMap.ID(),\n\t\t\tSslCertificates: pulumi.StringArray{\n\t\t\t\tdefaultSSLCertificate.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.SSLCertificate;\nimport com.pulumi.gcp.compute.SSLCertificateArgs;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.TargetHttpsProxy;\nimport com.pulumi.gcp.compute.TargetHttpsProxyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultSSLCertificate = new SSLCertificate(\"defaultSSLCertificate\", SSLCertificateArgs.builder()\n .name(\"my-certificate\")\n .privateKey(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/private.key\")\n .build()).result())\n .certificate(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/certificate.crt\")\n .build()).result())\n .build());\n\n var defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"http-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"EXTERNAL_MANAGED\")\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultURLMap = new URLMap(\"defaultURLMap\", URLMapArgs.builder()\n .name(\"url-map\")\n .description(\"a description\")\n .defaultService(defaultBackendService.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultBackendService.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultBackendService.id())\n .build())\n .build())\n .build());\n\n var default_ = new TargetHttpsProxy(\"default\", TargetHttpsProxyArgs.builder()\n .name(\"test-http-keep-alive-timeout-proxy\")\n .httpKeepAliveTimeoutSec(610)\n .urlMap(defaultURLMap.id())\n .sslCertificates(defaultSSLCertificate.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:TargetHttpsProxy\n properties:\n name: test-http-keep-alive-timeout-proxy\n httpKeepAliveTimeoutSec: 610\n urlMap: ${defaultURLMap.id}\n sslCertificates:\n - ${defaultSSLCertificate.id}\n defaultSSLCertificate:\n type: gcp:compute:SSLCertificate\n name: default\n properties:\n name: my-certificate\n privateKey:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/private.key\n Return: result\n certificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/certificate.crt\n Return: result\n defaultURLMap:\n type: gcp:compute:URLMap\n name: default\n properties:\n name: url-map\n description: a description\n defaultService: ${defaultBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultBackendService.id}\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: backend-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: EXTERNAL_MANAGED\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: http-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Target Https Proxy Mtls\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst project = gcp.organizations.getProject({});\nconst defaultTrustConfig = new gcp.certificatemanager.TrustConfig(\"default\", {\n name: \"my-trust-config\",\n description: \"sample description for the trust config\",\n location: \"global\",\n trustStores: [{\n trustAnchors: [{\n pemCertificate: std.file({\n input: \"test-fixtures/ca_cert.pem\",\n }).then(invoke =\u003e invoke.result),\n }],\n intermediateCas: [{\n pemCertificate: std.file({\n input: \"test-fixtures/ca_cert.pem\",\n }).then(invoke =\u003e invoke.result),\n }],\n }],\n labels: {\n foo: \"bar\",\n },\n});\nconst defaultServerTlsPolicy = new gcp.networksecurity.ServerTlsPolicy(\"default\", {\n name: \"my-tls-policy\",\n description: \"my description\",\n location: \"global\",\n allowOpen: false,\n mtlsPolicy: {\n clientValidationMode: \"ALLOW_INVALID_OR_MISSING_CLIENT_CERT\",\n clientValidationTrustConfig: pulumi.all([project, defaultTrustConfig.name]).apply(([project, name]) =\u003e `projects/${project.number}/locations/global/trustConfigs/${name}`),\n },\n});\nconst defaultSSLCertificate = new gcp.compute.SSLCertificate(\"default\", {\n name: \"my-certificate\",\n privateKey: std.file({\n input: \"path/to/private.key\",\n }).then(invoke =\u003e invoke.result),\n certificate: std.file({\n input: \"path/to/certificate.crt\",\n }).then(invoke =\u003e invoke.result),\n});\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"http-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultURLMap = new gcp.compute.URLMap(\"default\", {\n name: \"url-map\",\n description: \"a description\",\n defaultService: defaultBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultBackendService.id,\n }],\n }],\n});\nconst _default = new gcp.compute.TargetHttpsProxy(\"default\", {\n name: \"test-mtls-proxy\",\n urlMap: defaultURLMap.id,\n sslCertificates: [defaultSSLCertificate.id],\n serverTlsPolicy: defaultServerTlsPolicy.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nproject = gcp.organizations.get_project()\ndefault_trust_config = gcp.certificatemanager.TrustConfig(\"default\",\n name=\"my-trust-config\",\n description=\"sample description for the trust config\",\n location=\"global\",\n trust_stores=[{\n \"trust_anchors\": [{\n \"pem_certificate\": std.file(input=\"test-fixtures/ca_cert.pem\").result,\n }],\n \"intermediate_cas\": [{\n \"pem_certificate\": std.file(input=\"test-fixtures/ca_cert.pem\").result,\n }],\n }],\n labels={\n \"foo\": \"bar\",\n })\ndefault_server_tls_policy = gcp.networksecurity.ServerTlsPolicy(\"default\",\n name=\"my-tls-policy\",\n description=\"my description\",\n location=\"global\",\n allow_open=False,\n mtls_policy={\n \"client_validation_mode\": \"ALLOW_INVALID_OR_MISSING_CLIENT_CERT\",\n \"client_validation_trust_config\": default_trust_config.name.apply(lambda name: f\"projects/{project.number}/locations/global/trustConfigs/{name}\"),\n })\ndefault_ssl_certificate = gcp.compute.SSLCertificate(\"default\",\n name=\"my-certificate\",\n private_key=std.file(input=\"path/to/private.key\").result,\n certificate=std.file(input=\"path/to/certificate.crt\").result)\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"http-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_http_health_check.id)\ndefault_url_map = gcp.compute.URLMap(\"default\",\n name=\"url-map\",\n description=\"a description\",\n default_service=default_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": default_backend_service.id,\n \"path_rules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_backend_service.id,\n }],\n }])\ndefault = gcp.compute.TargetHttpsProxy(\"default\",\n name=\"test-mtls-proxy\",\n url_map=default_url_map.id,\n ssl_certificates=[default_ssl_certificate.id],\n server_tls_policy=default_server_tls_policy.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var defaultTrustConfig = new Gcp.CertificateManager.TrustConfig(\"default\", new()\n {\n Name = \"my-trust-config\",\n Description = \"sample description for the trust config\",\n Location = \"global\",\n TrustStores = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreArgs\n {\n TrustAnchors = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreTrustAnchorArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/ca_cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n IntermediateCas = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreIntermediateCaArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/ca_cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n },\n },\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n var defaultServerTlsPolicy = new Gcp.NetworkSecurity.ServerTlsPolicy(\"default\", new()\n {\n Name = \"my-tls-policy\",\n Description = \"my description\",\n Location = \"global\",\n AllowOpen = false,\n MtlsPolicy = new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyMtlsPolicyArgs\n {\n ClientValidationMode = \"ALLOW_INVALID_OR_MISSING_CLIENT_CERT\",\n ClientValidationTrustConfig = Output.Tuple(project, defaultTrustConfig.Name).Apply(values =\u003e\n {\n var project = values.Item1;\n var name = values.Item2;\n return $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/locations/global/trustConfigs/{name}\";\n }),\n },\n });\n\n var defaultSSLCertificate = new Gcp.Compute.SSLCertificate(\"default\", new()\n {\n Name = \"my-certificate\",\n PrivateKey = Std.File.Invoke(new()\n {\n Input = \"path/to/private.key\",\n }).Apply(invoke =\u003e invoke.Result),\n Certificate = Std.File.Invoke(new()\n {\n Input = \"path/to/certificate.crt\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"http-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultURLMap = new Gcp.Compute.URLMap(\"default\", new()\n {\n Name = \"url-map\",\n Description = \"a description\",\n DefaultService = defaultBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultBackendService.Id,\n },\n },\n },\n },\n });\n\n var @default = new Gcp.Compute.TargetHttpsProxy(\"default\", new()\n {\n Name = \"test-mtls-proxy\",\n UrlMap = defaultURLMap.Id,\n SslCertificates = new[]\n {\n defaultSSLCertificate.Id,\n },\n ServerTlsPolicy = defaultServerTlsPolicy.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/ca_cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/ca_cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultTrustConfig, err := certificatemanager.NewTrustConfig(ctx, \"default\", \u0026certificatemanager.TrustConfigArgs{\n\t\t\tName: pulumi.String(\"my-trust-config\"),\n\t\t\tDescription: pulumi.String(\"sample description for the trust config\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tTrustStores: certificatemanager.TrustConfigTrustStoreArray{\n\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreArgs{\n\t\t\t\t\tTrustAnchors: certificatemanager.TrustConfigTrustStoreTrustAnchorArray{\n\t\t\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreTrustAnchorArgs{\n\t\t\t\t\t\t\tPemCertificate: pulumi.String(invokeFile.Result),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tIntermediateCas: certificatemanager.TrustConfigTrustStoreIntermediateCaArray{\n\t\t\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreIntermediateCaArgs{\n\t\t\t\t\t\t\tPemCertificate: pulumi.String(invokeFile1.Result),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultServerTlsPolicy, err := networksecurity.NewServerTlsPolicy(ctx, \"default\", \u0026networksecurity.ServerTlsPolicyArgs{\n\t\t\tName: pulumi.String(\"my-tls-policy\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tAllowOpen: pulumi.Bool(false),\n\t\t\tMtlsPolicy: \u0026networksecurity.ServerTlsPolicyMtlsPolicyArgs{\n\t\t\t\tClientValidationMode: pulumi.String(\"ALLOW_INVALID_OR_MISSING_CLIENT_CERT\"),\n\t\t\t\tClientValidationTrustConfig: defaultTrustConfig.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"projects/%v/locations/global/trustConfigs/%v\", project.Number, name), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile2, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/private.key\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile3, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/certificate.crt\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSSLCertificate, err := compute.NewSSLCertificate(ctx, \"default\", \u0026compute.SSLCertificateArgs{\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tPrivateKey: pulumi.String(invokeFile2.Result),\n\t\t\tCertificate: pulumi.String(invokeFile3.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"http-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultBackendService, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultURLMap, err := compute.NewURLMap(ctx, \"default\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultBackendService.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewTargetHttpsProxy(ctx, \"default\", \u0026compute.TargetHttpsProxyArgs{\n\t\t\tName: pulumi.String(\"test-mtls-proxy\"),\n\t\t\tUrlMap: defaultURLMap.ID(),\n\t\t\tSslCertificates: pulumi.StringArray{\n\t\t\t\tdefaultSSLCertificate.ID(),\n\t\t\t},\n\t\t\tServerTlsPolicy: defaultServerTlsPolicy.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.certificatemanager.TrustConfig;\nimport com.pulumi.gcp.certificatemanager.TrustConfigArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.TrustConfigTrustStoreArgs;\nimport com.pulumi.gcp.networksecurity.ServerTlsPolicy;\nimport com.pulumi.gcp.networksecurity.ServerTlsPolicyArgs;\nimport com.pulumi.gcp.networksecurity.inputs.ServerTlsPolicyMtlsPolicyArgs;\nimport com.pulumi.gcp.compute.SSLCertificate;\nimport com.pulumi.gcp.compute.SSLCertificateArgs;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.TargetHttpsProxy;\nimport com.pulumi.gcp.compute.TargetHttpsProxyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var defaultTrustConfig = new TrustConfig(\"defaultTrustConfig\", TrustConfigArgs.builder()\n .name(\"my-trust-config\")\n .description(\"sample description for the trust config\")\n .location(\"global\")\n .trustStores(TrustConfigTrustStoreArgs.builder()\n .trustAnchors(TrustConfigTrustStoreTrustAnchorArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/ca_cert.pem\")\n .build()).result())\n .build())\n .intermediateCas(TrustConfigTrustStoreIntermediateCaArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/ca_cert.pem\")\n .build()).result())\n .build())\n .build())\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n var defaultServerTlsPolicy = new ServerTlsPolicy(\"defaultServerTlsPolicy\", ServerTlsPolicyArgs.builder()\n .name(\"my-tls-policy\")\n .description(\"my description\")\n .location(\"global\")\n .allowOpen(\"false\")\n .mtlsPolicy(ServerTlsPolicyMtlsPolicyArgs.builder()\n .clientValidationMode(\"ALLOW_INVALID_OR_MISSING_CLIENT_CERT\")\n .clientValidationTrustConfig(defaultTrustConfig.name().applyValue(name -\u003e String.format(\"projects/%s/locations/global/trustConfigs/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number()),name)))\n .build())\n .build());\n\n var defaultSSLCertificate = new SSLCertificate(\"defaultSSLCertificate\", SSLCertificateArgs.builder()\n .name(\"my-certificate\")\n .privateKey(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/private.key\")\n .build()).result())\n .certificate(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/certificate.crt\")\n .build()).result())\n .build());\n\n var defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"http-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultURLMap = new URLMap(\"defaultURLMap\", URLMapArgs.builder()\n .name(\"url-map\")\n .description(\"a description\")\n .defaultService(defaultBackendService.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultBackendService.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultBackendService.id())\n .build())\n .build())\n .build());\n\n var default_ = new TargetHttpsProxy(\"default\", TargetHttpsProxyArgs.builder()\n .name(\"test-mtls-proxy\")\n .urlMap(defaultURLMap.id())\n .sslCertificates(defaultSSLCertificate.id())\n .serverTlsPolicy(defaultServerTlsPolicy.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:TargetHttpsProxy\n properties:\n name: test-mtls-proxy\n urlMap: ${defaultURLMap.id}\n sslCertificates:\n - ${defaultSSLCertificate.id}\n serverTlsPolicy: ${defaultServerTlsPolicy.id}\n defaultTrustConfig:\n type: gcp:certificatemanager:TrustConfig\n name: default\n properties:\n name: my-trust-config\n description: sample description for the trust config\n location: global\n trustStores:\n - trustAnchors:\n - pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/ca_cert.pem\n Return: result\n intermediateCas:\n - pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/ca_cert.pem\n Return: result\n labels:\n foo: bar\n defaultServerTlsPolicy:\n type: gcp:networksecurity:ServerTlsPolicy\n name: default\n properties:\n name: my-tls-policy\n description: my description\n location: global\n allowOpen: 'false'\n mtlsPolicy:\n clientValidationMode: ALLOW_INVALID_OR_MISSING_CLIENT_CERT\n clientValidationTrustConfig: projects/${project.number}/locations/global/trustConfigs/${defaultTrustConfig.name}\n defaultSSLCertificate:\n type: gcp:compute:SSLCertificate\n name: default\n properties:\n name: my-certificate\n privateKey:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/private.key\n Return: result\n certificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/certificate.crt\n Return: result\n defaultURLMap:\n type: gcp:compute:URLMap\n name: default\n properties:\n name: url-map\n description: a description\n defaultService: ${defaultBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultBackendService.id}\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: backend-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: http-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Target Https Proxy Certificate Manager Certificate\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst defaultCertificate = new gcp.certificatemanager.Certificate(\"default\", {\n name: \"my-certificate\",\n scope: \"ALL_REGIONS\",\n selfManaged: {\n pemCertificate: std.file({\n input: \"test-fixtures/cert.pem\",\n }).then(invoke =\u003e invoke.result),\n pemPrivateKey: std.file({\n input: \"test-fixtures/private-key.pem\",\n }).then(invoke =\u003e invoke.result),\n },\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n});\nconst defaultURLMap = new gcp.compute.URLMap(\"default\", {\n name: \"url-map\",\n description: \"a description\",\n defaultService: defaultBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultBackendService.id,\n }],\n }],\n});\nconst _default = new gcp.compute.TargetHttpsProxy(\"default\", {\n name: \"target-http-proxy\",\n urlMap: defaultURLMap.id,\n certificateManagerCertificates: [pulumi.interpolate`//certificatemanager.googleapis.com/${defaultCertificate.id}`],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault_certificate = gcp.certificatemanager.Certificate(\"default\",\n name=\"my-certificate\",\n scope=\"ALL_REGIONS\",\n self_managed={\n \"pem_certificate\": std.file(input=\"test-fixtures/cert.pem\").result,\n \"pem_private_key\": std.file(input=\"test-fixtures/private-key.pem\").result,\n })\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"INTERNAL_MANAGED\")\ndefault_url_map = gcp.compute.URLMap(\"default\",\n name=\"url-map\",\n description=\"a description\",\n default_service=default_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": default_backend_service.id,\n \"path_rules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_backend_service.id,\n }],\n }])\ndefault = gcp.compute.TargetHttpsProxy(\"default\",\n name=\"target-http-proxy\",\n url_map=default_url_map.id,\n certificate_manager_certificates=[default_certificate.id.apply(lambda id: f\"//certificatemanager.googleapis.com/{id}\")])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultCertificate = new Gcp.CertificateManager.Certificate(\"default\", new()\n {\n Name = \"my-certificate\",\n Scope = \"ALL_REGIONS\",\n SelfManaged = new Gcp.CertificateManager.Inputs.CertificateSelfManagedArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n PemPrivateKey = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/private-key.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n });\n\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n });\n\n var defaultURLMap = new Gcp.Compute.URLMap(\"default\", new()\n {\n Name = \"url-map\",\n Description = \"a description\",\n DefaultService = defaultBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultBackendService.Id,\n },\n },\n },\n },\n });\n\n var @default = new Gcp.Compute.TargetHttpsProxy(\"default\", new()\n {\n Name = \"target-http-proxy\",\n UrlMap = defaultURLMap.Id,\n CertificateManagerCertificates = new[]\n {\n defaultCertificate.Id.Apply(id =\u003e $\"//certificatemanager.googleapis.com/{id}\"),\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/private-key.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultCertificate, err := certificatemanager.NewCertificate(ctx, \"default\", \u0026certificatemanager.CertificateArgs{\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tScope: pulumi.String(\"ALL_REGIONS\"),\n\t\t\tSelfManaged: \u0026certificatemanager.CertificateSelfManagedArgs{\n\t\t\t\tPemCertificate: pulumi.String(invokeFile.Result),\n\t\t\t\tPemPrivateKey: pulumi.String(invokeFile1.Result),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultBackendService, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultURLMap, err := compute.NewURLMap(ctx, \"default\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultBackendService.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewTargetHttpsProxy(ctx, \"default\", \u0026compute.TargetHttpsProxyArgs{\n\t\t\tName: pulumi.String(\"target-http-proxy\"),\n\t\t\tUrlMap: defaultURLMap.ID(),\n\t\t\tCertificateManagerCertificates: pulumi.StringArray{\n\t\t\t\tdefaultCertificate.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"//certificatemanager.googleapis.com/%v\", id), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificatemanager.Certificate;\nimport com.pulumi.gcp.certificatemanager.CertificateArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.CertificateSelfManagedArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.TargetHttpsProxy;\nimport com.pulumi.gcp.compute.TargetHttpsProxyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultCertificate = new Certificate(\"defaultCertificate\", CertificateArgs.builder()\n .name(\"my-certificate\")\n .scope(\"ALL_REGIONS\")\n .selfManaged(CertificateSelfManagedArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/cert.pem\")\n .build()).result())\n .pemPrivateKey(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/private-key.pem\")\n .build()).result())\n .build())\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .build());\n\n var defaultURLMap = new URLMap(\"defaultURLMap\", URLMapArgs.builder()\n .name(\"url-map\")\n .description(\"a description\")\n .defaultService(defaultBackendService.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultBackendService.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultBackendService.id())\n .build())\n .build())\n .build());\n\n var default_ = new TargetHttpsProxy(\"default\", TargetHttpsProxyArgs.builder()\n .name(\"target-http-proxy\")\n .urlMap(defaultURLMap.id())\n .certificateManagerCertificates(defaultCertificate.id().applyValue(id -\u003e String.format(\"//certificatemanager.googleapis.com/%s\", id)))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:TargetHttpsProxy\n properties:\n name: target-http-proxy\n urlMap: ${defaultURLMap.id}\n certificateManagerCertificates: # [google_certificate_manager_certificate.default.id] is also acceptable\n - //certificatemanager.googleapis.com/${defaultCertificate.id}\n defaultCertificate:\n type: gcp:certificatemanager:Certificate\n name: default\n properties:\n name: my-certificate\n scope: ALL_REGIONS\n selfManaged:\n pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/cert.pem\n Return: result\n pemPrivateKey:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/private-key.pem\n Return: result\n defaultURLMap:\n type: gcp:compute:URLMap\n name: default\n properties:\n name: url-map\n description: a description\n defaultService: ${defaultBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultBackendService.id}\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: backend-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: INTERNAL_MANAGED\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTargetHttpsProxy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/targetHttpsProxies/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, TargetHttpsProxy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/targetHttpsProxy:TargetHttpsProxy default projects/{{project}}/global/targetHttpsProxies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/targetHttpsProxy:TargetHttpsProxy default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/targetHttpsProxy:TargetHttpsProxy default {{name}}\n```\n\n", + "description": "Represents a TargetHttpsProxy resource, which is used by one or more\nglobal forwarding rule to route incoming HTTPS requests to a URL map.\n\n\nTo get more information about TargetHttpsProxy, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/v1/targetHttpsProxies)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/load-balancing/http/target-proxies)\n\n## Example Usage\n\n### Target Https Proxy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst defaultSSLCertificate = new gcp.compute.SSLCertificate(\"default\", {\n name: \"my-certificate\",\n privateKey: std.file({\n input: \"path/to/private.key\",\n }).then(invoke =\u003e invoke.result),\n certificate: std.file({\n input: \"path/to/certificate.crt\",\n }).then(invoke =\u003e invoke.result),\n});\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"http-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultURLMap = new gcp.compute.URLMap(\"default\", {\n name: \"url-map\",\n description: \"a description\",\n defaultService: defaultBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultBackendService.id,\n }],\n }],\n});\nconst _default = new gcp.compute.TargetHttpsProxy(\"default\", {\n name: \"test-proxy\",\n urlMap: defaultURLMap.id,\n sslCertificates: [defaultSSLCertificate.id],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault_ssl_certificate = gcp.compute.SSLCertificate(\"default\",\n name=\"my-certificate\",\n private_key=std.file(input=\"path/to/private.key\").result,\n certificate=std.file(input=\"path/to/certificate.crt\").result)\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"http-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_http_health_check.id)\ndefault_url_map = gcp.compute.URLMap(\"default\",\n name=\"url-map\",\n description=\"a description\",\n default_service=default_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": default_backend_service.id,\n \"path_rules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_backend_service.id,\n }],\n }])\ndefault = gcp.compute.TargetHttpsProxy(\"default\",\n name=\"test-proxy\",\n url_map=default_url_map.id,\n ssl_certificates=[default_ssl_certificate.id])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultSSLCertificate = new Gcp.Compute.SSLCertificate(\"default\", new()\n {\n Name = \"my-certificate\",\n PrivateKey = Std.File.Invoke(new()\n {\n Input = \"path/to/private.key\",\n }).Apply(invoke =\u003e invoke.Result),\n Certificate = Std.File.Invoke(new()\n {\n Input = \"path/to/certificate.crt\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"http-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultURLMap = new Gcp.Compute.URLMap(\"default\", new()\n {\n Name = \"url-map\",\n Description = \"a description\",\n DefaultService = defaultBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultBackendService.Id,\n },\n },\n },\n },\n });\n\n var @default = new Gcp.Compute.TargetHttpsProxy(\"default\", new()\n {\n Name = \"test-proxy\",\n UrlMap = defaultURLMap.Id,\n SslCertificates = new[]\n {\n defaultSSLCertificate.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/private.key\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/certificate.crt\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSSLCertificate, err := compute.NewSSLCertificate(ctx, \"default\", \u0026compute.SSLCertificateArgs{\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tPrivateKey: pulumi.String(invokeFile.Result),\n\t\t\tCertificate: pulumi.String(invokeFile1.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"http-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultBackendService, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultURLMap, err := compute.NewURLMap(ctx, \"default\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultBackendService.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewTargetHttpsProxy(ctx, \"default\", \u0026compute.TargetHttpsProxyArgs{\n\t\t\tName: pulumi.String(\"test-proxy\"),\n\t\t\tUrlMap: defaultURLMap.ID(),\n\t\t\tSslCertificates: pulumi.StringArray{\n\t\t\t\tdefaultSSLCertificate.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.SSLCertificate;\nimport com.pulumi.gcp.compute.SSLCertificateArgs;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.TargetHttpsProxy;\nimport com.pulumi.gcp.compute.TargetHttpsProxyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultSSLCertificate = new SSLCertificate(\"defaultSSLCertificate\", SSLCertificateArgs.builder()\n .name(\"my-certificate\")\n .privateKey(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/private.key\")\n .build()).result())\n .certificate(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/certificate.crt\")\n .build()).result())\n .build());\n\n var defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"http-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultURLMap = new URLMap(\"defaultURLMap\", URLMapArgs.builder()\n .name(\"url-map\")\n .description(\"a description\")\n .defaultService(defaultBackendService.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultBackendService.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultBackendService.id())\n .build())\n .build())\n .build());\n\n var default_ = new TargetHttpsProxy(\"default\", TargetHttpsProxyArgs.builder()\n .name(\"test-proxy\")\n .urlMap(defaultURLMap.id())\n .sslCertificates(defaultSSLCertificate.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:TargetHttpsProxy\n properties:\n name: test-proxy\n urlMap: ${defaultURLMap.id}\n sslCertificates:\n - ${defaultSSLCertificate.id}\n defaultSSLCertificate:\n type: gcp:compute:SSLCertificate\n name: default\n properties:\n name: my-certificate\n privateKey:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/private.key\n Return: result\n certificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/certificate.crt\n Return: result\n defaultURLMap:\n type: gcp:compute:URLMap\n name: default\n properties:\n name: url-map\n description: a description\n defaultService: ${defaultBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultBackendService.id}\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: backend-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: http-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Target Https Proxy Http Keep Alive Timeout\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst defaultSSLCertificate = new gcp.compute.SSLCertificate(\"default\", {\n name: \"my-certificate\",\n privateKey: std.file({\n input: \"path/to/private.key\",\n }).then(invoke =\u003e invoke.result),\n certificate: std.file({\n input: \"path/to/certificate.crt\",\n }).then(invoke =\u003e invoke.result),\n});\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"http-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"EXTERNAL_MANAGED\",\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultURLMap = new gcp.compute.URLMap(\"default\", {\n name: \"url-map\",\n description: \"a description\",\n defaultService: defaultBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultBackendService.id,\n }],\n }],\n});\nconst _default = new gcp.compute.TargetHttpsProxy(\"default\", {\n name: \"test-http-keep-alive-timeout-proxy\",\n httpKeepAliveTimeoutSec: 610,\n urlMap: defaultURLMap.id,\n sslCertificates: [defaultSSLCertificate.id],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault_ssl_certificate = gcp.compute.SSLCertificate(\"default\",\n name=\"my-certificate\",\n private_key=std.file(input=\"path/to/private.key\").result,\n certificate=std.file(input=\"path/to/certificate.crt\").result)\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"http-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"EXTERNAL_MANAGED\",\n health_checks=default_http_health_check.id)\ndefault_url_map = gcp.compute.URLMap(\"default\",\n name=\"url-map\",\n description=\"a description\",\n default_service=default_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": default_backend_service.id,\n \"path_rules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_backend_service.id,\n }],\n }])\ndefault = gcp.compute.TargetHttpsProxy(\"default\",\n name=\"test-http-keep-alive-timeout-proxy\",\n http_keep_alive_timeout_sec=610,\n url_map=default_url_map.id,\n ssl_certificates=[default_ssl_certificate.id])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultSSLCertificate = new Gcp.Compute.SSLCertificate(\"default\", new()\n {\n Name = \"my-certificate\",\n PrivateKey = Std.File.Invoke(new()\n {\n Input = \"path/to/private.key\",\n }).Apply(invoke =\u003e invoke.Result),\n Certificate = Std.File.Invoke(new()\n {\n Input = \"path/to/certificate.crt\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"http-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"EXTERNAL_MANAGED\",\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultURLMap = new Gcp.Compute.URLMap(\"default\", new()\n {\n Name = \"url-map\",\n Description = \"a description\",\n DefaultService = defaultBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultBackendService.Id,\n },\n },\n },\n },\n });\n\n var @default = new Gcp.Compute.TargetHttpsProxy(\"default\", new()\n {\n Name = \"test-http-keep-alive-timeout-proxy\",\n HttpKeepAliveTimeoutSec = 610,\n UrlMap = defaultURLMap.Id,\n SslCertificates = new[]\n {\n defaultSSLCertificate.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/private.key\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/certificate.crt\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSSLCertificate, err := compute.NewSSLCertificate(ctx, \"default\", \u0026compute.SSLCertificateArgs{\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tPrivateKey: pulumi.String(invokeFile.Result),\n\t\t\tCertificate: pulumi.String(invokeFile1.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"http-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultBackendService, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL_MANAGED\"),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultURLMap, err := compute.NewURLMap(ctx, \"default\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultBackendService.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewTargetHttpsProxy(ctx, \"default\", \u0026compute.TargetHttpsProxyArgs{\n\t\t\tName: pulumi.String(\"test-http-keep-alive-timeout-proxy\"),\n\t\t\tHttpKeepAliveTimeoutSec: pulumi.Int(610),\n\t\t\tUrlMap: defaultURLMap.ID(),\n\t\t\tSslCertificates: pulumi.StringArray{\n\t\t\t\tdefaultSSLCertificate.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.SSLCertificate;\nimport com.pulumi.gcp.compute.SSLCertificateArgs;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.TargetHttpsProxy;\nimport com.pulumi.gcp.compute.TargetHttpsProxyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultSSLCertificate = new SSLCertificate(\"defaultSSLCertificate\", SSLCertificateArgs.builder()\n .name(\"my-certificate\")\n .privateKey(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/private.key\")\n .build()).result())\n .certificate(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/certificate.crt\")\n .build()).result())\n .build());\n\n var defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"http-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"EXTERNAL_MANAGED\")\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultURLMap = new URLMap(\"defaultURLMap\", URLMapArgs.builder()\n .name(\"url-map\")\n .description(\"a description\")\n .defaultService(defaultBackendService.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultBackendService.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultBackendService.id())\n .build())\n .build())\n .build());\n\n var default_ = new TargetHttpsProxy(\"default\", TargetHttpsProxyArgs.builder()\n .name(\"test-http-keep-alive-timeout-proxy\")\n .httpKeepAliveTimeoutSec(610)\n .urlMap(defaultURLMap.id())\n .sslCertificates(defaultSSLCertificate.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:TargetHttpsProxy\n properties:\n name: test-http-keep-alive-timeout-proxy\n httpKeepAliveTimeoutSec: 610\n urlMap: ${defaultURLMap.id}\n sslCertificates:\n - ${defaultSSLCertificate.id}\n defaultSSLCertificate:\n type: gcp:compute:SSLCertificate\n name: default\n properties:\n name: my-certificate\n privateKey:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/private.key\n Return: result\n certificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/certificate.crt\n Return: result\n defaultURLMap:\n type: gcp:compute:URLMap\n name: default\n properties:\n name: url-map\n description: a description\n defaultService: ${defaultBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultBackendService.id}\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: backend-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: EXTERNAL_MANAGED\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: http-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Target Https Proxy Mtls\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst project = gcp.organizations.getProject({});\nconst defaultTrustConfig = new gcp.certificatemanager.TrustConfig(\"default\", {\n name: \"my-trust-config\",\n description: \"sample description for the trust config\",\n location: \"global\",\n trustStores: [{\n trustAnchors: [{\n pemCertificate: std.file({\n input: \"test-fixtures/ca_cert.pem\",\n }).then(invoke =\u003e invoke.result),\n }],\n intermediateCas: [{\n pemCertificate: std.file({\n input: \"test-fixtures/ca_cert.pem\",\n }).then(invoke =\u003e invoke.result),\n }],\n }],\n labels: {\n foo: \"bar\",\n },\n});\nconst defaultServerTlsPolicy = new gcp.networksecurity.ServerTlsPolicy(\"default\", {\n name: \"my-tls-policy\",\n description: \"my description\",\n location: \"global\",\n allowOpen: false,\n mtlsPolicy: {\n clientValidationMode: \"ALLOW_INVALID_OR_MISSING_CLIENT_CERT\",\n clientValidationTrustConfig: pulumi.all([project, defaultTrustConfig.name]).apply(([project, name]) =\u003e `projects/${project.number}/locations/global/trustConfigs/${name}`),\n },\n});\nconst defaultSSLCertificate = new gcp.compute.SSLCertificate(\"default\", {\n name: \"my-certificate\",\n privateKey: std.file({\n input: \"path/to/private.key\",\n }).then(invoke =\u003e invoke.result),\n certificate: std.file({\n input: \"path/to/certificate.crt\",\n }).then(invoke =\u003e invoke.result),\n});\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"http-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultURLMap = new gcp.compute.URLMap(\"default\", {\n name: \"url-map\",\n description: \"a description\",\n defaultService: defaultBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultBackendService.id,\n }],\n }],\n});\nconst _default = new gcp.compute.TargetHttpsProxy(\"default\", {\n name: \"test-mtls-proxy\",\n urlMap: defaultURLMap.id,\n sslCertificates: [defaultSSLCertificate.id],\n serverTlsPolicy: defaultServerTlsPolicy.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nproject = gcp.organizations.get_project()\ndefault_trust_config = gcp.certificatemanager.TrustConfig(\"default\",\n name=\"my-trust-config\",\n description=\"sample description for the trust config\",\n location=\"global\",\n trust_stores=[{\n \"trust_anchors\": [{\n \"pem_certificate\": std.file(input=\"test-fixtures/ca_cert.pem\").result,\n }],\n \"intermediate_cas\": [{\n \"pem_certificate\": std.file(input=\"test-fixtures/ca_cert.pem\").result,\n }],\n }],\n labels={\n \"foo\": \"bar\",\n })\ndefault_server_tls_policy = gcp.networksecurity.ServerTlsPolicy(\"default\",\n name=\"my-tls-policy\",\n description=\"my description\",\n location=\"global\",\n allow_open=False,\n mtls_policy={\n \"client_validation_mode\": \"ALLOW_INVALID_OR_MISSING_CLIENT_CERT\",\n \"client_validation_trust_config\": default_trust_config.name.apply(lambda name: f\"projects/{project.number}/locations/global/trustConfigs/{name}\"),\n })\ndefault_ssl_certificate = gcp.compute.SSLCertificate(\"default\",\n name=\"my-certificate\",\n private_key=std.file(input=\"path/to/private.key\").result,\n certificate=std.file(input=\"path/to/certificate.crt\").result)\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"http-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_http_health_check.id)\ndefault_url_map = gcp.compute.URLMap(\"default\",\n name=\"url-map\",\n description=\"a description\",\n default_service=default_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": default_backend_service.id,\n \"path_rules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_backend_service.id,\n }],\n }])\ndefault = gcp.compute.TargetHttpsProxy(\"default\",\n name=\"test-mtls-proxy\",\n url_map=default_url_map.id,\n ssl_certificates=[default_ssl_certificate.id],\n server_tls_policy=default_server_tls_policy.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var defaultTrustConfig = new Gcp.CertificateManager.TrustConfig(\"default\", new()\n {\n Name = \"my-trust-config\",\n Description = \"sample description for the trust config\",\n Location = \"global\",\n TrustStores = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreArgs\n {\n TrustAnchors = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreTrustAnchorArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/ca_cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n IntermediateCas = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreIntermediateCaArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/ca_cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n },\n },\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n var defaultServerTlsPolicy = new Gcp.NetworkSecurity.ServerTlsPolicy(\"default\", new()\n {\n Name = \"my-tls-policy\",\n Description = \"my description\",\n Location = \"global\",\n AllowOpen = false,\n MtlsPolicy = new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyMtlsPolicyArgs\n {\n ClientValidationMode = \"ALLOW_INVALID_OR_MISSING_CLIENT_CERT\",\n ClientValidationTrustConfig = Output.Tuple(project, defaultTrustConfig.Name).Apply(values =\u003e\n {\n var project = values.Item1;\n var name = values.Item2;\n return $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/locations/global/trustConfigs/{name}\";\n }),\n },\n });\n\n var defaultSSLCertificate = new Gcp.Compute.SSLCertificate(\"default\", new()\n {\n Name = \"my-certificate\",\n PrivateKey = Std.File.Invoke(new()\n {\n Input = \"path/to/private.key\",\n }).Apply(invoke =\u003e invoke.Result),\n Certificate = Std.File.Invoke(new()\n {\n Input = \"path/to/certificate.crt\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"http-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultURLMap = new Gcp.Compute.URLMap(\"default\", new()\n {\n Name = \"url-map\",\n Description = \"a description\",\n DefaultService = defaultBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultBackendService.Id,\n },\n },\n },\n },\n });\n\n var @default = new Gcp.Compute.TargetHttpsProxy(\"default\", new()\n {\n Name = \"test-mtls-proxy\",\n UrlMap = defaultURLMap.Id,\n SslCertificates = new[]\n {\n defaultSSLCertificate.Id,\n },\n ServerTlsPolicy = defaultServerTlsPolicy.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/ca_cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/ca_cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultTrustConfig, err := certificatemanager.NewTrustConfig(ctx, \"default\", \u0026certificatemanager.TrustConfigArgs{\n\t\t\tName: pulumi.String(\"my-trust-config\"),\n\t\t\tDescription: pulumi.String(\"sample description for the trust config\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tTrustStores: certificatemanager.TrustConfigTrustStoreArray{\n\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreArgs{\n\t\t\t\t\tTrustAnchors: certificatemanager.TrustConfigTrustStoreTrustAnchorArray{\n\t\t\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreTrustAnchorArgs{\n\t\t\t\t\t\t\tPemCertificate: pulumi.String(invokeFile.Result),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tIntermediateCas: certificatemanager.TrustConfigTrustStoreIntermediateCaArray{\n\t\t\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreIntermediateCaArgs{\n\t\t\t\t\t\t\tPemCertificate: pulumi.String(invokeFile1.Result),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultServerTlsPolicy, err := networksecurity.NewServerTlsPolicy(ctx, \"default\", \u0026networksecurity.ServerTlsPolicyArgs{\n\t\t\tName: pulumi.String(\"my-tls-policy\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tAllowOpen: pulumi.Bool(false),\n\t\t\tMtlsPolicy: \u0026networksecurity.ServerTlsPolicyMtlsPolicyArgs{\n\t\t\t\tClientValidationMode: pulumi.String(\"ALLOW_INVALID_OR_MISSING_CLIENT_CERT\"),\n\t\t\t\tClientValidationTrustConfig: defaultTrustConfig.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"projects/%v/locations/global/trustConfigs/%v\", project.Number, name), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile2, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/private.key\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile3, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/certificate.crt\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSSLCertificate, err := compute.NewSSLCertificate(ctx, \"default\", \u0026compute.SSLCertificateArgs{\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tPrivateKey: pulumi.String(invokeFile2.Result),\n\t\t\tCertificate: pulumi.String(invokeFile3.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"http-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultBackendService, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultURLMap, err := compute.NewURLMap(ctx, \"default\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultBackendService.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewTargetHttpsProxy(ctx, \"default\", \u0026compute.TargetHttpsProxyArgs{\n\t\t\tName: pulumi.String(\"test-mtls-proxy\"),\n\t\t\tUrlMap: defaultURLMap.ID(),\n\t\t\tSslCertificates: pulumi.StringArray{\n\t\t\t\tdefaultSSLCertificate.ID(),\n\t\t\t},\n\t\t\tServerTlsPolicy: defaultServerTlsPolicy.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.certificatemanager.TrustConfig;\nimport com.pulumi.gcp.certificatemanager.TrustConfigArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.TrustConfigTrustStoreArgs;\nimport com.pulumi.gcp.networksecurity.ServerTlsPolicy;\nimport com.pulumi.gcp.networksecurity.ServerTlsPolicyArgs;\nimport com.pulumi.gcp.networksecurity.inputs.ServerTlsPolicyMtlsPolicyArgs;\nimport com.pulumi.gcp.compute.SSLCertificate;\nimport com.pulumi.gcp.compute.SSLCertificateArgs;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.TargetHttpsProxy;\nimport com.pulumi.gcp.compute.TargetHttpsProxyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var defaultTrustConfig = new TrustConfig(\"defaultTrustConfig\", TrustConfigArgs.builder()\n .name(\"my-trust-config\")\n .description(\"sample description for the trust config\")\n .location(\"global\")\n .trustStores(TrustConfigTrustStoreArgs.builder()\n .trustAnchors(TrustConfigTrustStoreTrustAnchorArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/ca_cert.pem\")\n .build()).result())\n .build())\n .intermediateCas(TrustConfigTrustStoreIntermediateCaArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/ca_cert.pem\")\n .build()).result())\n .build())\n .build())\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n var defaultServerTlsPolicy = new ServerTlsPolicy(\"defaultServerTlsPolicy\", ServerTlsPolicyArgs.builder()\n .name(\"my-tls-policy\")\n .description(\"my description\")\n .location(\"global\")\n .allowOpen(\"false\")\n .mtlsPolicy(ServerTlsPolicyMtlsPolicyArgs.builder()\n .clientValidationMode(\"ALLOW_INVALID_OR_MISSING_CLIENT_CERT\")\n .clientValidationTrustConfig(defaultTrustConfig.name().applyValue(name -\u003e String.format(\"projects/%s/locations/global/trustConfigs/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number()),name)))\n .build())\n .build());\n\n var defaultSSLCertificate = new SSLCertificate(\"defaultSSLCertificate\", SSLCertificateArgs.builder()\n .name(\"my-certificate\")\n .privateKey(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/private.key\")\n .build()).result())\n .certificate(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/certificate.crt\")\n .build()).result())\n .build());\n\n var defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"http-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultURLMap = new URLMap(\"defaultURLMap\", URLMapArgs.builder()\n .name(\"url-map\")\n .description(\"a description\")\n .defaultService(defaultBackendService.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultBackendService.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultBackendService.id())\n .build())\n .build())\n .build());\n\n var default_ = new TargetHttpsProxy(\"default\", TargetHttpsProxyArgs.builder()\n .name(\"test-mtls-proxy\")\n .urlMap(defaultURLMap.id())\n .sslCertificates(defaultSSLCertificate.id())\n .serverTlsPolicy(defaultServerTlsPolicy.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:TargetHttpsProxy\n properties:\n name: test-mtls-proxy\n urlMap: ${defaultURLMap.id}\n sslCertificates:\n - ${defaultSSLCertificate.id}\n serverTlsPolicy: ${defaultServerTlsPolicy.id}\n defaultTrustConfig:\n type: gcp:certificatemanager:TrustConfig\n name: default\n properties:\n name: my-trust-config\n description: sample description for the trust config\n location: global\n trustStores:\n - trustAnchors:\n - pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/ca_cert.pem\n Return: result\n intermediateCas:\n - pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/ca_cert.pem\n Return: result\n labels:\n foo: bar\n defaultServerTlsPolicy:\n type: gcp:networksecurity:ServerTlsPolicy\n name: default\n properties:\n name: my-tls-policy\n description: my description\n location: global\n allowOpen: 'false'\n mtlsPolicy:\n clientValidationMode: ALLOW_INVALID_OR_MISSING_CLIENT_CERT\n clientValidationTrustConfig: projects/${project.number}/locations/global/trustConfigs/${defaultTrustConfig.name}\n defaultSSLCertificate:\n type: gcp:compute:SSLCertificate\n name: default\n properties:\n name: my-certificate\n privateKey:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/private.key\n Return: result\n certificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/certificate.crt\n Return: result\n defaultURLMap:\n type: gcp:compute:URLMap\n name: default\n properties:\n name: url-map\n description: a description\n defaultService: ${defaultBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultBackendService.id}\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: backend-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: http-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Target Https Proxy Certificate Manager Certificate\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst defaultCertificate = new gcp.certificatemanager.Certificate(\"default\", {\n name: \"my-certificate\",\n scope: \"ALL_REGIONS\",\n selfManaged: {\n pemCertificate: std.file({\n input: \"test-fixtures/cert.pem\",\n }).then(invoke =\u003e invoke.result),\n pemPrivateKey: std.file({\n input: \"test-fixtures/private-key.pem\",\n }).then(invoke =\u003e invoke.result),\n },\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n});\nconst defaultURLMap = new gcp.compute.URLMap(\"default\", {\n name: \"url-map\",\n description: \"a description\",\n defaultService: defaultBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultBackendService.id,\n }],\n }],\n});\nconst _default = new gcp.compute.TargetHttpsProxy(\"default\", {\n name: \"target-http-proxy\",\n urlMap: defaultURLMap.id,\n certificateManagerCertificates: [pulumi.interpolate`//certificatemanager.googleapis.com/${defaultCertificate.id}`],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault_certificate = gcp.certificatemanager.Certificate(\"default\",\n name=\"my-certificate\",\n scope=\"ALL_REGIONS\",\n self_managed={\n \"pem_certificate\": std.file(input=\"test-fixtures/cert.pem\").result,\n \"pem_private_key\": std.file(input=\"test-fixtures/private-key.pem\").result,\n })\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"INTERNAL_MANAGED\")\ndefault_url_map = gcp.compute.URLMap(\"default\",\n name=\"url-map\",\n description=\"a description\",\n default_service=default_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": default_backend_service.id,\n \"path_rules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_backend_service.id,\n }],\n }])\ndefault = gcp.compute.TargetHttpsProxy(\"default\",\n name=\"target-http-proxy\",\n url_map=default_url_map.id,\n certificate_manager_certificates=[default_certificate.id.apply(lambda id: f\"//certificatemanager.googleapis.com/{id}\")])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultCertificate = new Gcp.CertificateManager.Certificate(\"default\", new()\n {\n Name = \"my-certificate\",\n Scope = \"ALL_REGIONS\",\n SelfManaged = new Gcp.CertificateManager.Inputs.CertificateSelfManagedArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n PemPrivateKey = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/private-key.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n });\n\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n });\n\n var defaultURLMap = new Gcp.Compute.URLMap(\"default\", new()\n {\n Name = \"url-map\",\n Description = \"a description\",\n DefaultService = defaultBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultBackendService.Id,\n },\n },\n },\n },\n });\n\n var @default = new Gcp.Compute.TargetHttpsProxy(\"default\", new()\n {\n Name = \"target-http-proxy\",\n UrlMap = defaultURLMap.Id,\n CertificateManagerCertificates = new[]\n {\n defaultCertificate.Id.Apply(id =\u003e $\"//certificatemanager.googleapis.com/{id}\"),\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/private-key.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultCertificate, err := certificatemanager.NewCertificate(ctx, \"default\", \u0026certificatemanager.CertificateArgs{\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tScope: pulumi.String(\"ALL_REGIONS\"),\n\t\t\tSelfManaged: \u0026certificatemanager.CertificateSelfManagedArgs{\n\t\t\t\tPemCertificate: pulumi.String(invokeFile.Result),\n\t\t\t\tPemPrivateKey: pulumi.String(invokeFile1.Result),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultBackendService, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultURLMap, err := compute.NewURLMap(ctx, \"default\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultBackendService.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewTargetHttpsProxy(ctx, \"default\", \u0026compute.TargetHttpsProxyArgs{\n\t\t\tName: pulumi.String(\"target-http-proxy\"),\n\t\t\tUrlMap: defaultURLMap.ID(),\n\t\t\tCertificateManagerCertificates: pulumi.StringArray{\n\t\t\t\tdefaultCertificate.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"//certificatemanager.googleapis.com/%v\", id), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificatemanager.Certificate;\nimport com.pulumi.gcp.certificatemanager.CertificateArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.CertificateSelfManagedArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.TargetHttpsProxy;\nimport com.pulumi.gcp.compute.TargetHttpsProxyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultCertificate = new Certificate(\"defaultCertificate\", CertificateArgs.builder()\n .name(\"my-certificate\")\n .scope(\"ALL_REGIONS\")\n .selfManaged(CertificateSelfManagedArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/cert.pem\")\n .build()).result())\n .pemPrivateKey(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/private-key.pem\")\n .build()).result())\n .build())\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .build());\n\n var defaultURLMap = new URLMap(\"defaultURLMap\", URLMapArgs.builder()\n .name(\"url-map\")\n .description(\"a description\")\n .defaultService(defaultBackendService.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultBackendService.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultBackendService.id())\n .build())\n .build())\n .build());\n\n var default_ = new TargetHttpsProxy(\"default\", TargetHttpsProxyArgs.builder()\n .name(\"target-http-proxy\")\n .urlMap(defaultURLMap.id())\n .certificateManagerCertificates(defaultCertificate.id().applyValue(id -\u003e String.format(\"//certificatemanager.googleapis.com/%s\", id)))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:TargetHttpsProxy\n properties:\n name: target-http-proxy\n urlMap: ${defaultURLMap.id}\n certificateManagerCertificates: # [google_certificate_manager_certificate.default.id] is also acceptable\n - //certificatemanager.googleapis.com/${defaultCertificate.id}\n defaultCertificate:\n type: gcp:certificatemanager:Certificate\n name: default\n properties:\n name: my-certificate\n scope: ALL_REGIONS\n selfManaged:\n pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/cert.pem\n Return: result\n pemPrivateKey:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/private-key.pem\n Return: result\n defaultURLMap:\n type: gcp:compute:URLMap\n name: default\n properties:\n name: url-map\n description: a description\n defaultService: ${defaultBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultBackendService.id}\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: backend-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: INTERNAL_MANAGED\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTargetHttpsProxy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/targetHttpsProxies/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, TargetHttpsProxy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/targetHttpsProxy:TargetHttpsProxy default projects/{{project}}/global/targetHttpsProxies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/targetHttpsProxy:TargetHttpsProxy default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/targetHttpsProxy:TargetHttpsProxy default {{name}}\n```\n\n", "properties": { "certificateManagerCertificates": { "type": "array", @@ -170842,7 +170842,7 @@ } }, "gcp:compute/targetInstance:TargetInstance": { - "description": "Represents a TargetInstance resource which defines an endpoint instance\nthat terminates traffic of certain protocols. In particular, they are used\nin Protocol Forwarding, where forwarding rules can send packets to a\nnon-NAT'ed target instance. Each target instance contains a single\nvirtual machine instance that receives and handles traffic from the\ncorresponding forwarding rules.\n\n\nTo get more information about TargetInstance, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/v1/targetInstances)\n* How-to Guides\n * [Using Protocol Forwarding](https://cloud.google.com/compute/docs/protocol-forwarding)\n\n## Example Usage\n\n### Target Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst vmimage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst target_vm = new gcp.compute.Instance(\"target-vm\", {\n name: \"target-vm\",\n machineType: \"e2-medium\",\n zone: \"us-central1-a\",\n bootDisk: {\n initializeParams: {\n image: vmimage.then(vmimage =\u003e vmimage.selfLink),\n },\n },\n networkInterfaces: [{\n network: \"default\",\n }],\n});\nconst _default = new gcp.compute.TargetInstance(\"default\", {\n name: \"target\",\n instance: target_vm.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nvmimage = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\ntarget_vm = gcp.compute.Instance(\"target-vm\",\n name=\"target-vm\",\n machine_type=\"e2-medium\",\n zone=\"us-central1-a\",\n boot_disk={\n \"initialize_params\": {\n \"image\": vmimage.self_link,\n },\n },\n network_interfaces=[{\n \"network\": \"default\",\n }])\ndefault = gcp.compute.TargetInstance(\"default\",\n name=\"target\",\n instance=target_vm.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var vmimage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var target_vm = new Gcp.Compute.Instance(\"target-vm\", new()\n {\n Name = \"target-vm\",\n MachineType = \"e2-medium\",\n Zone = \"us-central1-a\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = vmimage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n },\n });\n\n var @default = new Gcp.Compute.TargetInstance(\"default\", new()\n {\n Name = \"target\",\n Instance = target_vm.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tvmimage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"target-vm\", \u0026compute.InstanceArgs{\n\t\t\tName: pulumi.String(\"target-vm\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(vmimage.SelfLink),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewTargetInstance(ctx, \"default\", \u0026compute.TargetInstanceArgs{\n\t\t\tName: pulumi.String(\"target\"),\n\t\t\tInstance: target_vm.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.TargetInstance;\nimport com.pulumi.gcp.compute.TargetInstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var vmimage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var target_vm = new Instance(\"target-vm\", InstanceArgs.builder()\n .name(\"target-vm\")\n .machineType(\"e2-medium\")\n .zone(\"us-central1-a\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(vmimage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .build())\n .build())\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build())\n .build());\n\n var default_ = new TargetInstance(\"default\", TargetInstanceArgs.builder()\n .name(\"target\")\n .instance(target_vm.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:TargetInstance\n properties:\n name: target\n instance: ${[\"target-vm\"].id}\n target-vm:\n type: gcp:compute:Instance\n properties:\n name: target-vm\n machineType: e2-medium\n zone: us-central1-a\n bootDisk:\n initializeParams:\n image: ${vmimage.selfLink}\n networkInterfaces:\n - network: default\nvariables:\n vmimage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Target Instance Custom Network\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst target-vm = gcp.compute.getNetwork({\n name: \"default\",\n});\nconst vmimage = gcp.compute.getImage({\n family: \"debian-12\",\n project: \"debian-cloud\",\n});\nconst target_vmInstance = new gcp.compute.Instance(\"target-vm\", {\n name: \"custom-network-target-vm\",\n machineType: \"e2-medium\",\n zone: \"us-central1-a\",\n bootDisk: {\n initializeParams: {\n image: vmimage.then(vmimage =\u003e vmimage.selfLink),\n },\n },\n networkInterfaces: [{\n network: \"default\",\n }],\n});\nconst customNetwork = new gcp.compute.TargetInstance(\"custom_network\", {\n name: \"custom-network\",\n instance: target_vmInstance.id,\n network: target_vm.then(target_vm =\u003e target_vm.selfLink),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntarget_vm = gcp.compute.get_network(name=\"default\")\nvmimage = gcp.compute.get_image(family=\"debian-12\",\n project=\"debian-cloud\")\ntarget_vm_instance = gcp.compute.Instance(\"target-vm\",\n name=\"custom-network-target-vm\",\n machine_type=\"e2-medium\",\n zone=\"us-central1-a\",\n boot_disk={\n \"initialize_params\": {\n \"image\": vmimage.self_link,\n },\n },\n network_interfaces=[{\n \"network\": \"default\",\n }])\ncustom_network = gcp.compute.TargetInstance(\"custom_network\",\n name=\"custom-network\",\n instance=target_vm_instance.id,\n network=target_vm.self_link)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var target_vm = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"default\",\n });\n\n var vmimage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-12\",\n Project = \"debian-cloud\",\n });\n\n var target_vmInstance = new Gcp.Compute.Instance(\"target-vm\", new()\n {\n Name = \"custom-network-target-vm\",\n MachineType = \"e2-medium\",\n Zone = \"us-central1-a\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = vmimage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n },\n });\n\n var customNetwork = new Gcp.Compute.TargetInstance(\"custom_network\", new()\n {\n Name = \"custom-network\",\n Instance = target_vmInstance.Id,\n Network = target_vm.Apply(target_vm =\u003e target_vm.Apply(getNetworkResult =\u003e getNetworkResult.SelfLink)),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\ttarget_vm, err := compute.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"default\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvmimage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-12\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"target-vm\", \u0026compute.InstanceArgs{\n\t\t\tName: pulumi.String(\"custom-network-target-vm\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(vmimage.SelfLink),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewTargetInstance(ctx, \"custom_network\", \u0026compute.TargetInstanceArgs{\n\t\t\tName: pulumi.String(\"custom-network\"),\n\t\t\tInstance: target_vmInstance.ID(),\n\t\t\tNetwork: pulumi.String(target_vm.SelfLink),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.TargetInstance;\nimport com.pulumi.gcp.compute.TargetInstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var target-vm = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"default\")\n .build());\n\n final var vmimage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-12\")\n .project(\"debian-cloud\")\n .build());\n\n var target_vmInstance = new Instance(\"target-vmInstance\", InstanceArgs.builder()\n .name(\"custom-network-target-vm\")\n .machineType(\"e2-medium\")\n .zone(\"us-central1-a\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(vmimage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .build())\n .build())\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build())\n .build());\n\n var customNetwork = new TargetInstance(\"customNetwork\", TargetInstanceArgs.builder()\n .name(\"custom-network\")\n .instance(target_vmInstance.id())\n .network(target_vm.selfLink())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n customNetwork:\n type: gcp:compute:TargetInstance\n name: custom_network\n properties:\n name: custom-network\n instance: ${[\"target-vmInstance\"].id}\n network: ${[\"target-vm\"].selfLink}\n target-vmInstance:\n type: gcp:compute:Instance\n name: target-vm\n properties:\n name: custom-network-target-vm\n machineType: e2-medium\n zone: us-central1-a\n bootDisk:\n initializeParams:\n image: ${vmimage.selfLink}\n networkInterfaces:\n - network: default\nvariables:\n target-vm:\n fn::invoke:\n Function: gcp:compute:getNetwork\n Arguments:\n name: default\n vmimage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-12\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Target Instance With Security Policy\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"custom-default-network\",\n autoCreateSubnetworks: false,\n routingMode: \"REGIONAL\",\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"custom-default-subnet\",\n ipCidrRange: \"10.1.2.0/24\",\n network: _default.id,\n privateIpv6GoogleAccess: \"DISABLE_GOOGLE_ACCESS\",\n purpose: \"PRIVATE\",\n region: \"southamerica-west1\",\n stackType: \"IPV4_ONLY\",\n});\nconst vmimage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst target_vm = new gcp.compute.Instance(\"target-vm\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n network: _default.selfLink,\n subnetwork: defaultSubnetwork.selfLink,\n }],\n name: \"target-vm\",\n machineType: \"e2-medium\",\n zone: \"southamerica-west1-a\",\n bootDisk: {\n initializeParams: {\n image: vmimage.then(vmimage =\u003e vmimage.selfLink),\n },\n },\n});\nconst policyddosprotection = new gcp.compute.RegionSecurityPolicy(\"policyddosprotection\", {\n region: \"southamerica-west1\",\n name: \"tf-test-policyddos_85794\",\n description: \"ddos protection security policy to set target instance\",\n type: \"CLOUD_ARMOR_NETWORK\",\n ddosProtectionConfig: {\n ddosProtection: \"ADVANCED_PREVIEW\",\n },\n});\nconst edgeSecService = new gcp.compute.NetworkEdgeSecurityService(\"edge_sec_service\", {\n region: \"southamerica-west1\",\n name: \"tf-test-edgesec_21197\",\n securityPolicy: policyddosprotection.selfLink,\n});\nconst regionsecuritypolicy = new gcp.compute.RegionSecurityPolicy(\"regionsecuritypolicy\", {\n name: \"region-secpolicy\",\n region: \"southamerica-west1\",\n description: \"basic security policy for target instance\",\n type: \"CLOUD_ARMOR_NETWORK\",\n}, {\n dependsOn: [edgeSecService],\n});\nconst defaultTargetInstance = new gcp.compute.TargetInstance(\"default\", {\n name: \"target-instance\",\n zone: \"southamerica-west1-a\",\n instance: target_vm.id,\n securityPolicy: regionsecuritypolicy.selfLink,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"custom-default-network\",\n auto_create_subnetworks=False,\n routing_mode=\"REGIONAL\")\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"custom-default-subnet\",\n ip_cidr_range=\"10.1.2.0/24\",\n network=default.id,\n private_ipv6_google_access=\"DISABLE_GOOGLE_ACCESS\",\n purpose=\"PRIVATE\",\n region=\"southamerica-west1\",\n stack_type=\"IPV4_ONLY\")\nvmimage = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\ntarget_vm = gcp.compute.Instance(\"target-vm\",\n network_interfaces=[{\n \"access_configs\": [{}],\n \"network\": default.self_link,\n \"subnetwork\": default_subnetwork.self_link,\n }],\n name=\"target-vm\",\n machine_type=\"e2-medium\",\n zone=\"southamerica-west1-a\",\n boot_disk={\n \"initialize_params\": {\n \"image\": vmimage.self_link,\n },\n })\npolicyddosprotection = gcp.compute.RegionSecurityPolicy(\"policyddosprotection\",\n region=\"southamerica-west1\",\n name=\"tf-test-policyddos_85794\",\n description=\"ddos protection security policy to set target instance\",\n type=\"CLOUD_ARMOR_NETWORK\",\n ddos_protection_config={\n \"ddos_protection\": \"ADVANCED_PREVIEW\",\n })\nedge_sec_service = gcp.compute.NetworkEdgeSecurityService(\"edge_sec_service\",\n region=\"southamerica-west1\",\n name=\"tf-test-edgesec_21197\",\n security_policy=policyddosprotection.self_link)\nregionsecuritypolicy = gcp.compute.RegionSecurityPolicy(\"regionsecuritypolicy\",\n name=\"region-secpolicy\",\n region=\"southamerica-west1\",\n description=\"basic security policy for target instance\",\n type=\"CLOUD_ARMOR_NETWORK\",\n opts = pulumi.ResourceOptions(depends_on=[edge_sec_service]))\ndefault_target_instance = gcp.compute.TargetInstance(\"default\",\n name=\"target-instance\",\n zone=\"southamerica-west1-a\",\n instance=target_vm.id,\n security_policy=regionsecuritypolicy.self_link)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"custom-default-network\",\n AutoCreateSubnetworks = false,\n RoutingMode = \"REGIONAL\",\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"custom-default-subnet\",\n IpCidrRange = \"10.1.2.0/24\",\n Network = @default.Id,\n PrivateIpv6GoogleAccess = \"DISABLE_GOOGLE_ACCESS\",\n Purpose = \"PRIVATE\",\n Region = \"southamerica-west1\",\n StackType = \"IPV4_ONLY\",\n });\n\n var vmimage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var target_vm = new Gcp.Compute.Instance(\"target-vm\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Network = @default.SelfLink,\n Subnetwork = defaultSubnetwork.SelfLink,\n },\n },\n Name = \"target-vm\",\n MachineType = \"e2-medium\",\n Zone = \"southamerica-west1-a\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = vmimage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n },\n },\n });\n\n var policyddosprotection = new Gcp.Compute.RegionSecurityPolicy(\"policyddosprotection\", new()\n {\n Region = \"southamerica-west1\",\n Name = \"tf-test-policyddos_85794\",\n Description = \"ddos protection security policy to set target instance\",\n Type = \"CLOUD_ARMOR_NETWORK\",\n DdosProtectionConfig = new Gcp.Compute.Inputs.RegionSecurityPolicyDdosProtectionConfigArgs\n {\n DdosProtection = \"ADVANCED_PREVIEW\",\n },\n });\n\n var edgeSecService = new Gcp.Compute.NetworkEdgeSecurityService(\"edge_sec_service\", new()\n {\n Region = \"southamerica-west1\",\n Name = \"tf-test-edgesec_21197\",\n SecurityPolicy = policyddosprotection.SelfLink,\n });\n\n var regionsecuritypolicy = new Gcp.Compute.RegionSecurityPolicy(\"regionsecuritypolicy\", new()\n {\n Name = \"region-secpolicy\",\n Region = \"southamerica-west1\",\n Description = \"basic security policy for target instance\",\n Type = \"CLOUD_ARMOR_NETWORK\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n edgeSecService,\n },\n });\n\n var defaultTargetInstance = new Gcp.Compute.TargetInstance(\"default\", new()\n {\n Name = \"target-instance\",\n Zone = \"southamerica-west1-a\",\n Instance = target_vm.Id,\n SecurityPolicy = regionsecuritypolicy.SelfLink,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"custom-default-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t\tRoutingMode: pulumi.String(\"REGIONAL\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"custom-default-subnet\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.1.2.0/24\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tPrivateIpv6GoogleAccess: pulumi.String(\"DISABLE_GOOGLE_ACCESS\"),\n\t\t\tPurpose: pulumi.String(\"PRIVATE\"),\n\t\t\tRegion: pulumi.String(\"southamerica-west1\"),\n\t\t\tStackType: pulumi.String(\"IPV4_ONLY\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvmimage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"target-vm\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tAccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{\n\t\t\t\t\t\tnil,\n\t\t\t\t\t},\n\t\t\t\t\tNetwork: _default.SelfLink,\n\t\t\t\t\tSubnetwork: defaultSubnetwork.SelfLink,\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"target-vm\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tZone: pulumi.String(\"southamerica-west1-a\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(vmimage.SelfLink),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpolicyddosprotection, err := compute.NewRegionSecurityPolicy(ctx, \"policyddosprotection\", \u0026compute.RegionSecurityPolicyArgs{\n\t\t\tRegion: pulumi.String(\"southamerica-west1\"),\n\t\t\tName: pulumi.String(\"tf-test-policyddos_85794\"),\n\t\t\tDescription: pulumi.String(\"ddos protection security policy to set target instance\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR_NETWORK\"),\n\t\t\tDdosProtectionConfig: \u0026compute.RegionSecurityPolicyDdosProtectionConfigArgs{\n\t\t\t\tDdosProtection: pulumi.String(\"ADVANCED_PREVIEW\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tedgeSecService, err := compute.NewNetworkEdgeSecurityService(ctx, \"edge_sec_service\", \u0026compute.NetworkEdgeSecurityServiceArgs{\n\t\t\tRegion: pulumi.String(\"southamerica-west1\"),\n\t\t\tName: pulumi.String(\"tf-test-edgesec_21197\"),\n\t\t\tSecurityPolicy: policyddosprotection.SelfLink,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tregionsecuritypolicy, err := compute.NewRegionSecurityPolicy(ctx, \"regionsecuritypolicy\", \u0026compute.RegionSecurityPolicyArgs{\n\t\t\tName: pulumi.String(\"region-secpolicy\"),\n\t\t\tRegion: pulumi.String(\"southamerica-west1\"),\n\t\t\tDescription: pulumi.String(\"basic security policy for target instance\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR_NETWORK\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tedgeSecService,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewTargetInstance(ctx, \"default\", \u0026compute.TargetInstanceArgs{\n\t\t\tName: pulumi.String(\"target-instance\"),\n\t\t\tZone: pulumi.String(\"southamerica-west1-a\"),\n\t\t\tInstance: target_vm.ID(),\n\t\t\tSecurityPolicy: regionsecuritypolicy.SelfLink,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport com.pulumi.gcp.compute.RegionSecurityPolicy;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.RegionSecurityPolicyDdosProtectionConfigArgs;\nimport com.pulumi.gcp.compute.NetworkEdgeSecurityService;\nimport com.pulumi.gcp.compute.NetworkEdgeSecurityServiceArgs;\nimport com.pulumi.gcp.compute.TargetInstance;\nimport com.pulumi.gcp.compute.TargetInstanceArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"custom-default-network\")\n .autoCreateSubnetworks(false)\n .routingMode(\"REGIONAL\")\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"custom-default-subnet\")\n .ipCidrRange(\"10.1.2.0/24\")\n .network(default_.id())\n .privateIpv6GoogleAccess(\"DISABLE_GOOGLE_ACCESS\")\n .purpose(\"PRIVATE\")\n .region(\"southamerica-west1\")\n .stackType(\"IPV4_ONLY\")\n .build());\n\n final var vmimage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var target_vm = new Instance(\"target-vm\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .network(default_.selfLink())\n .subnetwork(defaultSubnetwork.selfLink())\n .build())\n .name(\"target-vm\")\n .machineType(\"e2-medium\")\n .zone(\"southamerica-west1-a\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(vmimage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .build())\n .build())\n .build());\n\n var policyddosprotection = new RegionSecurityPolicy(\"policyddosprotection\", RegionSecurityPolicyArgs.builder()\n .region(\"southamerica-west1\")\n .name(\"tf-test-policyddos_85794\")\n .description(\"ddos protection security policy to set target instance\")\n .type(\"CLOUD_ARMOR_NETWORK\")\n .ddosProtectionConfig(RegionSecurityPolicyDdosProtectionConfigArgs.builder()\n .ddosProtection(\"ADVANCED_PREVIEW\")\n .build())\n .build());\n\n var edgeSecService = new NetworkEdgeSecurityService(\"edgeSecService\", NetworkEdgeSecurityServiceArgs.builder()\n .region(\"southamerica-west1\")\n .name(\"tf-test-edgesec_21197\")\n .securityPolicy(policyddosprotection.selfLink())\n .build());\n\n var regionsecuritypolicy = new RegionSecurityPolicy(\"regionsecuritypolicy\", RegionSecurityPolicyArgs.builder()\n .name(\"region-secpolicy\")\n .region(\"southamerica-west1\")\n .description(\"basic security policy for target instance\")\n .type(\"CLOUD_ARMOR_NETWORK\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(edgeSecService)\n .build());\n\n var defaultTargetInstance = new TargetInstance(\"defaultTargetInstance\", TargetInstanceArgs.builder()\n .name(\"target-instance\")\n .zone(\"southamerica-west1-a\")\n .instance(target_vm.id())\n .securityPolicy(regionsecuritypolicy.selfLink())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: custom-default-network\n autoCreateSubnetworks: false\n routingMode: REGIONAL\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: custom-default-subnet\n ipCidrRange: 10.1.2.0/24\n network: ${default.id}\n privateIpv6GoogleAccess: DISABLE_GOOGLE_ACCESS\n purpose: PRIVATE\n region: southamerica-west1\n stackType: IPV4_ONLY\n target-vm:\n type: gcp:compute:Instance\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n network: ${default.selfLink}\n subnetwork: ${defaultSubnetwork.selfLink}\n name: target-vm\n machineType: e2-medium\n zone: southamerica-west1-a\n bootDisk:\n initializeParams:\n image: ${vmimage.selfLink}\n policyddosprotection:\n type: gcp:compute:RegionSecurityPolicy\n properties:\n region: southamerica-west1\n name: tf-test-policyddos_85794\n description: ddos protection security policy to set target instance\n type: CLOUD_ARMOR_NETWORK\n ddosProtectionConfig:\n ddosProtection: ADVANCED_PREVIEW\n edgeSecService:\n type: gcp:compute:NetworkEdgeSecurityService\n name: edge_sec_service\n properties:\n region: southamerica-west1\n name: tf-test-edgesec_21197\n securityPolicy: ${policyddosprotection.selfLink}\n regionsecuritypolicy:\n type: gcp:compute:RegionSecurityPolicy\n properties:\n name: region-secpolicy\n region: southamerica-west1\n description: basic security policy for target instance\n type: CLOUD_ARMOR_NETWORK\n options:\n dependson:\n - ${edgeSecService}\n defaultTargetInstance:\n type: gcp:compute:TargetInstance\n name: default\n properties:\n name: target-instance\n zone: southamerica-west1-a\n instance: ${[\"target-vm\"].id}\n securityPolicy: ${regionsecuritypolicy.selfLink}\nvariables:\n vmimage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTargetInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/zones/{{zone}}/targetInstances/{{name}}`\n\n* `{{project}}/{{zone}}/{{name}}`\n\n* `{{zone}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, TargetInstance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/targetInstance:TargetInstance default projects/{{project}}/zones/{{zone}}/targetInstances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/targetInstance:TargetInstance default {{project}}/{{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/targetInstance:TargetInstance default {{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/targetInstance:TargetInstance default {{name}}\n```\n\n", + "description": "Represents a TargetInstance resource which defines an endpoint instance\nthat terminates traffic of certain protocols. In particular, they are used\nin Protocol Forwarding, where forwarding rules can send packets to a\nnon-NAT'ed target instance. Each target instance contains a single\nvirtual machine instance that receives and handles traffic from the\ncorresponding forwarding rules.\n\n\nTo get more information about TargetInstance, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/v1/targetInstances)\n* How-to Guides\n * [Using Protocol Forwarding](https://cloud.google.com/compute/docs/protocol-forwarding)\n\n## Example Usage\n\n### Target Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst vmimage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst target_vm = new gcp.compute.Instance(\"target-vm\", {\n name: \"target-vm\",\n machineType: \"e2-medium\",\n zone: \"us-central1-a\",\n bootDisk: {\n initializeParams: {\n image: vmimage.then(vmimage =\u003e vmimage.selfLink),\n },\n },\n networkInterfaces: [{\n network: \"default\",\n }],\n});\nconst _default = new gcp.compute.TargetInstance(\"default\", {\n name: \"target\",\n instance: target_vm.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nvmimage = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\ntarget_vm = gcp.compute.Instance(\"target-vm\",\n name=\"target-vm\",\n machine_type=\"e2-medium\",\n zone=\"us-central1-a\",\n boot_disk={\n \"initialize_params\": {\n \"image\": vmimage.self_link,\n },\n },\n network_interfaces=[{\n \"network\": \"default\",\n }])\ndefault = gcp.compute.TargetInstance(\"default\",\n name=\"target\",\n instance=target_vm.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var vmimage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var target_vm = new Gcp.Compute.Instance(\"target-vm\", new()\n {\n Name = \"target-vm\",\n MachineType = \"e2-medium\",\n Zone = \"us-central1-a\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = vmimage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n },\n });\n\n var @default = new Gcp.Compute.TargetInstance(\"default\", new()\n {\n Name = \"target\",\n Instance = target_vm.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tvmimage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"target-vm\", \u0026compute.InstanceArgs{\n\t\t\tName: pulumi.String(\"target-vm\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(vmimage.SelfLink),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewTargetInstance(ctx, \"default\", \u0026compute.TargetInstanceArgs{\n\t\t\tName: pulumi.String(\"target\"),\n\t\t\tInstance: target_vm.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.TargetInstance;\nimport com.pulumi.gcp.compute.TargetInstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var vmimage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var target_vm = new Instance(\"target-vm\", InstanceArgs.builder()\n .name(\"target-vm\")\n .machineType(\"e2-medium\")\n .zone(\"us-central1-a\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(vmimage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .build())\n .build())\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build())\n .build());\n\n var default_ = new TargetInstance(\"default\", TargetInstanceArgs.builder()\n .name(\"target\")\n .instance(target_vm.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:TargetInstance\n properties:\n name: target\n instance: ${[\"target-vm\"].id}\n target-vm:\n type: gcp:compute:Instance\n properties:\n name: target-vm\n machineType: e2-medium\n zone: us-central1-a\n bootDisk:\n initializeParams:\n image: ${vmimage.selfLink}\n networkInterfaces:\n - network: default\nvariables:\n vmimage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Target Instance Custom Network\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst target-vm = gcp.compute.getNetwork({\n name: \"default\",\n});\nconst vmimage = gcp.compute.getImage({\n family: \"debian-12\",\n project: \"debian-cloud\",\n});\nconst target_vmInstance = new gcp.compute.Instance(\"target-vm\", {\n name: \"custom-network-target-vm\",\n machineType: \"e2-medium\",\n zone: \"us-central1-a\",\n bootDisk: {\n initializeParams: {\n image: vmimage.then(vmimage =\u003e vmimage.selfLink),\n },\n },\n networkInterfaces: [{\n network: \"default\",\n }],\n});\nconst customNetwork = new gcp.compute.TargetInstance(\"custom_network\", {\n name: \"custom-network\",\n instance: target_vmInstance.id,\n network: target_vm.then(target_vm =\u003e target_vm.selfLink),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntarget_vm = gcp.compute.get_network(name=\"default\")\nvmimage = gcp.compute.get_image(family=\"debian-12\",\n project=\"debian-cloud\")\ntarget_vm_instance = gcp.compute.Instance(\"target-vm\",\n name=\"custom-network-target-vm\",\n machine_type=\"e2-medium\",\n zone=\"us-central1-a\",\n boot_disk={\n \"initialize_params\": {\n \"image\": vmimage.self_link,\n },\n },\n network_interfaces=[{\n \"network\": \"default\",\n }])\ncustom_network = gcp.compute.TargetInstance(\"custom_network\",\n name=\"custom-network\",\n instance=target_vm_instance.id,\n network=target_vm.self_link)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var target_vm = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"default\",\n });\n\n var vmimage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-12\",\n Project = \"debian-cloud\",\n });\n\n var target_vmInstance = new Gcp.Compute.Instance(\"target-vm\", new()\n {\n Name = \"custom-network-target-vm\",\n MachineType = \"e2-medium\",\n Zone = \"us-central1-a\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = vmimage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n },\n });\n\n var customNetwork = new Gcp.Compute.TargetInstance(\"custom_network\", new()\n {\n Name = \"custom-network\",\n Instance = target_vmInstance.Id,\n Network = target_vm.Apply(target_vm =\u003e target_vm.Apply(getNetworkResult =\u003e getNetworkResult.SelfLink)),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\ttarget_vm, err := compute.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"default\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvmimage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-12\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"target-vm\", \u0026compute.InstanceArgs{\n\t\t\tName: pulumi.String(\"custom-network-target-vm\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(vmimage.SelfLink),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewTargetInstance(ctx, \"custom_network\", \u0026compute.TargetInstanceArgs{\n\t\t\tName: pulumi.String(\"custom-network\"),\n\t\t\tInstance: target_vmInstance.ID(),\n\t\t\tNetwork: pulumi.String(target_vm.SelfLink),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.TargetInstance;\nimport com.pulumi.gcp.compute.TargetInstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var target-vm = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"default\")\n .build());\n\n final var vmimage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-12\")\n .project(\"debian-cloud\")\n .build());\n\n var target_vmInstance = new Instance(\"target-vmInstance\", InstanceArgs.builder()\n .name(\"custom-network-target-vm\")\n .machineType(\"e2-medium\")\n .zone(\"us-central1-a\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(vmimage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .build())\n .build())\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build())\n .build());\n\n var customNetwork = new TargetInstance(\"customNetwork\", TargetInstanceArgs.builder()\n .name(\"custom-network\")\n .instance(target_vmInstance.id())\n .network(target_vm.selfLink())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n customNetwork:\n type: gcp:compute:TargetInstance\n name: custom_network\n properties:\n name: custom-network\n instance: ${[\"target-vmInstance\"].id}\n network: ${[\"target-vm\"].selfLink}\n target-vmInstance:\n type: gcp:compute:Instance\n name: target-vm\n properties:\n name: custom-network-target-vm\n machineType: e2-medium\n zone: us-central1-a\n bootDisk:\n initializeParams:\n image: ${vmimage.selfLink}\n networkInterfaces:\n - network: default\nvariables:\n target-vm:\n fn::invoke:\n Function: gcp:compute:getNetwork\n Arguments:\n name: default\n vmimage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-12\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Target Instance With Security Policy\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"custom-default-network\",\n autoCreateSubnetworks: false,\n routingMode: \"REGIONAL\",\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"custom-default-subnet\",\n ipCidrRange: \"10.1.2.0/24\",\n network: _default.id,\n privateIpv6GoogleAccess: \"DISABLE_GOOGLE_ACCESS\",\n purpose: \"PRIVATE\",\n region: \"southamerica-west1\",\n stackType: \"IPV4_ONLY\",\n});\nconst vmimage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst target_vm = new gcp.compute.Instance(\"target-vm\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n network: _default.selfLink,\n subnetwork: defaultSubnetwork.selfLink,\n }],\n name: \"target-vm\",\n machineType: \"e2-medium\",\n zone: \"southamerica-west1-a\",\n bootDisk: {\n initializeParams: {\n image: vmimage.then(vmimage =\u003e vmimage.selfLink),\n },\n },\n});\nconst policyddosprotection = new gcp.compute.RegionSecurityPolicy(\"policyddosprotection\", {\n region: \"southamerica-west1\",\n name: \"tf-test-policyddos_85794\",\n description: \"ddos protection security policy to set target instance\",\n type: \"CLOUD_ARMOR_NETWORK\",\n ddosProtectionConfig: {\n ddosProtection: \"ADVANCED_PREVIEW\",\n },\n});\nconst edgeSecService = new gcp.compute.NetworkEdgeSecurityService(\"edge_sec_service\", {\n region: \"southamerica-west1\",\n name: \"tf-test-edgesec_21197\",\n securityPolicy: policyddosprotection.selfLink,\n});\nconst regionsecuritypolicy = new gcp.compute.RegionSecurityPolicy(\"regionsecuritypolicy\", {\n name: \"region-secpolicy\",\n region: \"southamerica-west1\",\n description: \"basic security policy for target instance\",\n type: \"CLOUD_ARMOR_NETWORK\",\n}, {\n dependsOn: [edgeSecService],\n});\nconst defaultTargetInstance = new gcp.compute.TargetInstance(\"default\", {\n name: \"target-instance\",\n zone: \"southamerica-west1-a\",\n instance: target_vm.id,\n securityPolicy: regionsecuritypolicy.selfLink,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"custom-default-network\",\n auto_create_subnetworks=False,\n routing_mode=\"REGIONAL\")\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"custom-default-subnet\",\n ip_cidr_range=\"10.1.2.0/24\",\n network=default.id,\n private_ipv6_google_access=\"DISABLE_GOOGLE_ACCESS\",\n purpose=\"PRIVATE\",\n region=\"southamerica-west1\",\n stack_type=\"IPV4_ONLY\")\nvmimage = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\ntarget_vm = gcp.compute.Instance(\"target-vm\",\n network_interfaces=[{\n \"access_configs\": [{}],\n \"network\": default.self_link,\n \"subnetwork\": default_subnetwork.self_link,\n }],\n name=\"target-vm\",\n machine_type=\"e2-medium\",\n zone=\"southamerica-west1-a\",\n boot_disk={\n \"initialize_params\": {\n \"image\": vmimage.self_link,\n },\n })\npolicyddosprotection = gcp.compute.RegionSecurityPolicy(\"policyddosprotection\",\n region=\"southamerica-west1\",\n name=\"tf-test-policyddos_85794\",\n description=\"ddos protection security policy to set target instance\",\n type=\"CLOUD_ARMOR_NETWORK\",\n ddos_protection_config={\n \"ddos_protection\": \"ADVANCED_PREVIEW\",\n })\nedge_sec_service = gcp.compute.NetworkEdgeSecurityService(\"edge_sec_service\",\n region=\"southamerica-west1\",\n name=\"tf-test-edgesec_21197\",\n security_policy=policyddosprotection.self_link)\nregionsecuritypolicy = gcp.compute.RegionSecurityPolicy(\"regionsecuritypolicy\",\n name=\"region-secpolicy\",\n region=\"southamerica-west1\",\n description=\"basic security policy for target instance\",\n type=\"CLOUD_ARMOR_NETWORK\",\n opts = pulumi.ResourceOptions(depends_on=[edge_sec_service]))\ndefault_target_instance = gcp.compute.TargetInstance(\"default\",\n name=\"target-instance\",\n zone=\"southamerica-west1-a\",\n instance=target_vm.id,\n security_policy=regionsecuritypolicy.self_link)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"custom-default-network\",\n AutoCreateSubnetworks = false,\n RoutingMode = \"REGIONAL\",\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"custom-default-subnet\",\n IpCidrRange = \"10.1.2.0/24\",\n Network = @default.Id,\n PrivateIpv6GoogleAccess = \"DISABLE_GOOGLE_ACCESS\",\n Purpose = \"PRIVATE\",\n Region = \"southamerica-west1\",\n StackType = \"IPV4_ONLY\",\n });\n\n var vmimage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var target_vm = new Gcp.Compute.Instance(\"target-vm\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Network = @default.SelfLink,\n Subnetwork = defaultSubnetwork.SelfLink,\n },\n },\n Name = \"target-vm\",\n MachineType = \"e2-medium\",\n Zone = \"southamerica-west1-a\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = vmimage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n },\n },\n });\n\n var policyddosprotection = new Gcp.Compute.RegionSecurityPolicy(\"policyddosprotection\", new()\n {\n Region = \"southamerica-west1\",\n Name = \"tf-test-policyddos_85794\",\n Description = \"ddos protection security policy to set target instance\",\n Type = \"CLOUD_ARMOR_NETWORK\",\n DdosProtectionConfig = new Gcp.Compute.Inputs.RegionSecurityPolicyDdosProtectionConfigArgs\n {\n DdosProtection = \"ADVANCED_PREVIEW\",\n },\n });\n\n var edgeSecService = new Gcp.Compute.NetworkEdgeSecurityService(\"edge_sec_service\", new()\n {\n Region = \"southamerica-west1\",\n Name = \"tf-test-edgesec_21197\",\n SecurityPolicy = policyddosprotection.SelfLink,\n });\n\n var regionsecuritypolicy = new Gcp.Compute.RegionSecurityPolicy(\"regionsecuritypolicy\", new()\n {\n Name = \"region-secpolicy\",\n Region = \"southamerica-west1\",\n Description = \"basic security policy for target instance\",\n Type = \"CLOUD_ARMOR_NETWORK\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n edgeSecService,\n },\n });\n\n var defaultTargetInstance = new Gcp.Compute.TargetInstance(\"default\", new()\n {\n Name = \"target-instance\",\n Zone = \"southamerica-west1-a\",\n Instance = target_vm.Id,\n SecurityPolicy = regionsecuritypolicy.SelfLink,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"custom-default-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t\tRoutingMode: pulumi.String(\"REGIONAL\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"custom-default-subnet\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.1.2.0/24\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tPrivateIpv6GoogleAccess: pulumi.String(\"DISABLE_GOOGLE_ACCESS\"),\n\t\t\tPurpose: pulumi.String(\"PRIVATE\"),\n\t\t\tRegion: pulumi.String(\"southamerica-west1\"),\n\t\t\tStackType: pulumi.String(\"IPV4_ONLY\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvmimage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"target-vm\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tAccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{\n\t\t\t\t\t\t\u0026compute.InstanceNetworkInterfaceAccessConfigArgs{},\n\t\t\t\t\t},\n\t\t\t\t\tNetwork: _default.SelfLink,\n\t\t\t\t\tSubnetwork: defaultSubnetwork.SelfLink,\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"target-vm\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tZone: pulumi.String(\"southamerica-west1-a\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(vmimage.SelfLink),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpolicyddosprotection, err := compute.NewRegionSecurityPolicy(ctx, \"policyddosprotection\", \u0026compute.RegionSecurityPolicyArgs{\n\t\t\tRegion: pulumi.String(\"southamerica-west1\"),\n\t\t\tName: pulumi.String(\"tf-test-policyddos_85794\"),\n\t\t\tDescription: pulumi.String(\"ddos protection security policy to set target instance\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR_NETWORK\"),\n\t\t\tDdosProtectionConfig: \u0026compute.RegionSecurityPolicyDdosProtectionConfigArgs{\n\t\t\t\tDdosProtection: pulumi.String(\"ADVANCED_PREVIEW\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tedgeSecService, err := compute.NewNetworkEdgeSecurityService(ctx, \"edge_sec_service\", \u0026compute.NetworkEdgeSecurityServiceArgs{\n\t\t\tRegion: pulumi.String(\"southamerica-west1\"),\n\t\t\tName: pulumi.String(\"tf-test-edgesec_21197\"),\n\t\t\tSecurityPolicy: policyddosprotection.SelfLink,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tregionsecuritypolicy, err := compute.NewRegionSecurityPolicy(ctx, \"regionsecuritypolicy\", \u0026compute.RegionSecurityPolicyArgs{\n\t\t\tName: pulumi.String(\"region-secpolicy\"),\n\t\t\tRegion: pulumi.String(\"southamerica-west1\"),\n\t\t\tDescription: pulumi.String(\"basic security policy for target instance\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR_NETWORK\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tedgeSecService,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewTargetInstance(ctx, \"default\", \u0026compute.TargetInstanceArgs{\n\t\t\tName: pulumi.String(\"target-instance\"),\n\t\t\tZone: pulumi.String(\"southamerica-west1-a\"),\n\t\t\tInstance: target_vm.ID(),\n\t\t\tSecurityPolicy: regionsecuritypolicy.SelfLink,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport com.pulumi.gcp.compute.RegionSecurityPolicy;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.RegionSecurityPolicyDdosProtectionConfigArgs;\nimport com.pulumi.gcp.compute.NetworkEdgeSecurityService;\nimport com.pulumi.gcp.compute.NetworkEdgeSecurityServiceArgs;\nimport com.pulumi.gcp.compute.TargetInstance;\nimport com.pulumi.gcp.compute.TargetInstanceArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"custom-default-network\")\n .autoCreateSubnetworks(false)\n .routingMode(\"REGIONAL\")\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"custom-default-subnet\")\n .ipCidrRange(\"10.1.2.0/24\")\n .network(default_.id())\n .privateIpv6GoogleAccess(\"DISABLE_GOOGLE_ACCESS\")\n .purpose(\"PRIVATE\")\n .region(\"southamerica-west1\")\n .stackType(\"IPV4_ONLY\")\n .build());\n\n final var vmimage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var target_vm = new Instance(\"target-vm\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .network(default_.selfLink())\n .subnetwork(defaultSubnetwork.selfLink())\n .build())\n .name(\"target-vm\")\n .machineType(\"e2-medium\")\n .zone(\"southamerica-west1-a\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(vmimage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .build())\n .build())\n .build());\n\n var policyddosprotection = new RegionSecurityPolicy(\"policyddosprotection\", RegionSecurityPolicyArgs.builder()\n .region(\"southamerica-west1\")\n .name(\"tf-test-policyddos_85794\")\n .description(\"ddos protection security policy to set target instance\")\n .type(\"CLOUD_ARMOR_NETWORK\")\n .ddosProtectionConfig(RegionSecurityPolicyDdosProtectionConfigArgs.builder()\n .ddosProtection(\"ADVANCED_PREVIEW\")\n .build())\n .build());\n\n var edgeSecService = new NetworkEdgeSecurityService(\"edgeSecService\", NetworkEdgeSecurityServiceArgs.builder()\n .region(\"southamerica-west1\")\n .name(\"tf-test-edgesec_21197\")\n .securityPolicy(policyddosprotection.selfLink())\n .build());\n\n var regionsecuritypolicy = new RegionSecurityPolicy(\"regionsecuritypolicy\", RegionSecurityPolicyArgs.builder()\n .name(\"region-secpolicy\")\n .region(\"southamerica-west1\")\n .description(\"basic security policy for target instance\")\n .type(\"CLOUD_ARMOR_NETWORK\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(edgeSecService)\n .build());\n\n var defaultTargetInstance = new TargetInstance(\"defaultTargetInstance\", TargetInstanceArgs.builder()\n .name(\"target-instance\")\n .zone(\"southamerica-west1-a\")\n .instance(target_vm.id())\n .securityPolicy(regionsecuritypolicy.selfLink())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: custom-default-network\n autoCreateSubnetworks: false\n routingMode: REGIONAL\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: custom-default-subnet\n ipCidrRange: 10.1.2.0/24\n network: ${default.id}\n privateIpv6GoogleAccess: DISABLE_GOOGLE_ACCESS\n purpose: PRIVATE\n region: southamerica-west1\n stackType: IPV4_ONLY\n target-vm:\n type: gcp:compute:Instance\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n network: ${default.selfLink}\n subnetwork: ${defaultSubnetwork.selfLink}\n name: target-vm\n machineType: e2-medium\n zone: southamerica-west1-a\n bootDisk:\n initializeParams:\n image: ${vmimage.selfLink}\n policyddosprotection:\n type: gcp:compute:RegionSecurityPolicy\n properties:\n region: southamerica-west1\n name: tf-test-policyddos_85794\n description: ddos protection security policy to set target instance\n type: CLOUD_ARMOR_NETWORK\n ddosProtectionConfig:\n ddosProtection: ADVANCED_PREVIEW\n edgeSecService:\n type: gcp:compute:NetworkEdgeSecurityService\n name: edge_sec_service\n properties:\n region: southamerica-west1\n name: tf-test-edgesec_21197\n securityPolicy: ${policyddosprotection.selfLink}\n regionsecuritypolicy:\n type: gcp:compute:RegionSecurityPolicy\n properties:\n name: region-secpolicy\n region: southamerica-west1\n description: basic security policy for target instance\n type: CLOUD_ARMOR_NETWORK\n options:\n dependson:\n - ${edgeSecService}\n defaultTargetInstance:\n type: gcp:compute:TargetInstance\n name: default\n properties:\n name: target-instance\n zone: southamerica-west1-a\n instance: ${[\"target-vm\"].id}\n securityPolicy: ${regionsecuritypolicy.selfLink}\nvariables:\n vmimage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTargetInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/zones/{{zone}}/targetInstances/{{name}}`\n\n* `{{project}}/{{zone}}/{{name}}`\n\n* `{{zone}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, TargetInstance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/targetInstance:TargetInstance default projects/{{project}}/zones/{{zone}}/targetInstances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/targetInstance:TargetInstance default {{project}}/{{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/targetInstance:TargetInstance default {{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/targetInstance:TargetInstance default {{name}}\n```\n\n", "properties": { "creationTimestamp": { "type": "string", @@ -172163,7 +172163,7 @@ } }, "gcp:container/attachedCluster:AttachedCluster": { - "description": "An Anthos cluster running on customer owned infrastructure.\n\n\nTo get more information about Cluster, see:\n\n* [API documentation](https://cloud.google.com/anthos/clusters/docs/multi-cloud/reference/rest)\n* How-to Guides\n * [API reference](https://cloud.google.com/anthos/clusters/docs/multi-cloud/reference/rest/v1/projects.locations.attachedClusters)\n * [Multicloud overview](https://cloud.google.com/anthos/clusters/docs/multi-cloud)\n\n## Example Usage\n\n### Container Attached Cluster Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst versions = project.then(project =\u003e gcp.container.getAttachedVersions({\n location: \"us-west1\",\n project: project.projectId,\n}));\nconst primary = new gcp.container.AttachedCluster(\"primary\", {\n name: \"basic\",\n location: \"us-west1\",\n project: project.then(project =\u003e project.projectId),\n description: \"Test cluster\",\n distribution: \"aks\",\n oidcConfig: {\n issuerUrl: \"https://oidc.issuer.url\",\n },\n platformVersion: versions.then(versions =\u003e versions.validVersions?.[0]),\n fleet: {\n project: project.then(project =\u003e `projects/${project.number}`),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nversions = gcp.container.get_attached_versions(location=\"us-west1\",\n project=project.project_id)\nprimary = gcp.container.AttachedCluster(\"primary\",\n name=\"basic\",\n location=\"us-west1\",\n project=project.project_id,\n description=\"Test cluster\",\n distribution=\"aks\",\n oidc_config={\n \"issuer_url\": \"https://oidc.issuer.url\",\n },\n platform_version=versions.valid_versions[0],\n fleet={\n \"project\": f\"projects/{project.number}\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var versions = Gcp.Container.GetAttachedVersions.Invoke(new()\n {\n Location = \"us-west1\",\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n });\n\n var primary = new Gcp.Container.AttachedCluster(\"primary\", new()\n {\n Name = \"basic\",\n Location = \"us-west1\",\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Description = \"Test cluster\",\n Distribution = \"aks\",\n OidcConfig = new Gcp.Container.Inputs.AttachedClusterOidcConfigArgs\n {\n IssuerUrl = \"https://oidc.issuer.url\",\n },\n PlatformVersion = versions.Apply(getAttachedVersionsResult =\u003e getAttachedVersionsResult.ValidVersions[0]),\n Fleet = new Gcp.Container.Inputs.AttachedClusterFleetArgs\n {\n Project = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tversions, err := container.GetAttachedVersions(ctx, \u0026container.GetAttachedVersionsArgs{\n\t\t\tLocation: \"us-west1\",\n\t\t\tProject: project.ProjectId,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewAttachedCluster(ctx, \"primary\", \u0026container.AttachedClusterArgs{\n\t\t\tName: pulumi.String(\"basic\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tDescription: pulumi.String(\"Test cluster\"),\n\t\t\tDistribution: pulumi.String(\"aks\"),\n\t\t\tOidcConfig: \u0026container.AttachedClusterOidcConfigArgs{\n\t\t\t\tIssuerUrl: pulumi.String(\"https://oidc.issuer.url\"),\n\t\t\t},\n\t\t\tPlatformVersion: pulumi.String(versions.ValidVersions[0]),\n\t\t\tFleet: \u0026container.AttachedClusterFleetArgs{\n\t\t\t\tProject: pulumi.Sprintf(\"projects/%v\", project.Number),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.container.ContainerFunctions;\nimport com.pulumi.gcp.container.inputs.GetAttachedVersionsArgs;\nimport com.pulumi.gcp.container.AttachedCluster;\nimport com.pulumi.gcp.container.AttachedClusterArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterOidcConfigArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterFleetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n final var versions = ContainerFunctions.getAttachedVersions(GetAttachedVersionsArgs.builder()\n .location(\"us-west1\")\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .build());\n\n var primary = new AttachedCluster(\"primary\", AttachedClusterArgs.builder()\n .name(\"basic\")\n .location(\"us-west1\")\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .description(\"Test cluster\")\n .distribution(\"aks\")\n .oidcConfig(AttachedClusterOidcConfigArgs.builder()\n .issuerUrl(\"https://oidc.issuer.url\")\n .build())\n .platformVersion(versions.applyValue(getAttachedVersionsResult -\u003e getAttachedVersionsResult.validVersions()[0]))\n .fleet(AttachedClusterFleetArgs.builder()\n .project(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:AttachedCluster\n properties:\n name: basic\n location: us-west1\n project: ${project.projectId}\n description: Test cluster\n distribution: aks\n oidcConfig:\n issuerUrl: https://oidc.issuer.url\n platformVersion: ${versions.validVersions[0]}\n fleet:\n project: projects/${project.number}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n versions:\n fn::invoke:\n Function: gcp:container:getAttachedVersions\n Arguments:\n location: us-west1\n project: ${project.projectId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Container Attached Cluster Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst project = gcp.organizations.getProject({});\nconst versions = project.then(project =\u003e gcp.container.getAttachedVersions({\n location: \"us-west1\",\n project: project.projectId,\n}));\nconst primary = new gcp.container.AttachedCluster(\"primary\", {\n name: \"basic\",\n project: project.then(project =\u003e project.projectId),\n location: \"us-west1\",\n description: \"Test cluster\",\n distribution: \"aks\",\n annotations: {\n \"label-one\": \"value-one\",\n },\n authorization: {\n adminUsers: [\n \"user1@example.com\",\n \"user2@example.com\",\n ],\n adminGroups: [\n \"group1@example.com\",\n \"group2@example.com\",\n ],\n },\n oidcConfig: {\n issuerUrl: \"https://oidc.issuer.url\",\n jwks: std.base64encode({\n input: \"{\\\"keys\\\":[{\\\"use\\\":\\\"sig\\\",\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"testid\\\",\\\"alg\\\":\\\"RS256\\\",\\\"n\\\":\\\"somedata\\\",\\\"e\\\":\\\"AQAB\\\"}]}\",\n }).then(invoke =\u003e invoke.result),\n },\n platformVersion: versions.then(versions =\u003e versions.validVersions?.[0]),\n fleet: {\n project: project.then(project =\u003e `projects/${project.number}`),\n },\n loggingConfig: {\n componentConfig: {\n enableComponents: [\n \"SYSTEM_COMPONENTS\",\n \"WORKLOADS\",\n ],\n },\n },\n monitoringConfig: {\n managedPrometheusConfig: {\n enabled: true,\n },\n },\n binaryAuthorization: {\n evaluationMode: \"PROJECT_SINGLETON_POLICY_ENFORCE\",\n },\n proxyConfig: {\n kubernetesSecret: {\n name: \"proxy-config\",\n namespace: \"default\",\n },\n },\n securityPostureConfig: {\n vulnerabilityMode: \"VULNERABILITY_ENTERPRISE\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nproject = gcp.organizations.get_project()\nversions = gcp.container.get_attached_versions(location=\"us-west1\",\n project=project.project_id)\nprimary = gcp.container.AttachedCluster(\"primary\",\n name=\"basic\",\n project=project.project_id,\n location=\"us-west1\",\n description=\"Test cluster\",\n distribution=\"aks\",\n annotations={\n \"label-one\": \"value-one\",\n },\n authorization={\n \"admin_users\": [\n \"user1@example.com\",\n \"user2@example.com\",\n ],\n \"admin_groups\": [\n \"group1@example.com\",\n \"group2@example.com\",\n ],\n },\n oidc_config={\n \"issuer_url\": \"https://oidc.issuer.url\",\n \"jwks\": std.base64encode(input=\"{\\\"keys\\\":[{\\\"use\\\":\\\"sig\\\",\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"testid\\\",\\\"alg\\\":\\\"RS256\\\",\\\"n\\\":\\\"somedata\\\",\\\"e\\\":\\\"AQAB\\\"}]}\").result,\n },\n platform_version=versions.valid_versions[0],\n fleet={\n \"project\": f\"projects/{project.number}\",\n },\n logging_config={\n \"component_config\": {\n \"enable_components\": [\n \"SYSTEM_COMPONENTS\",\n \"WORKLOADS\",\n ],\n },\n },\n monitoring_config={\n \"managed_prometheus_config\": {\n \"enabled\": True,\n },\n },\n binary_authorization={\n \"evaluation_mode\": \"PROJECT_SINGLETON_POLICY_ENFORCE\",\n },\n proxy_config={\n \"kubernetes_secret\": {\n \"name\": \"proxy-config\",\n \"namespace\": \"default\",\n },\n },\n security_posture_config={\n \"vulnerability_mode\": \"VULNERABILITY_ENTERPRISE\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var versions = Gcp.Container.GetAttachedVersions.Invoke(new()\n {\n Location = \"us-west1\",\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n });\n\n var primary = new Gcp.Container.AttachedCluster(\"primary\", new()\n {\n Name = \"basic\",\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Location = \"us-west1\",\n Description = \"Test cluster\",\n Distribution = \"aks\",\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Authorization = new Gcp.Container.Inputs.AttachedClusterAuthorizationArgs\n {\n AdminUsers = new[]\n {\n \"user1@example.com\",\n \"user2@example.com\",\n },\n AdminGroups = new[]\n {\n \"group1@example.com\",\n \"group2@example.com\",\n },\n },\n OidcConfig = new Gcp.Container.Inputs.AttachedClusterOidcConfigArgs\n {\n IssuerUrl = \"https://oidc.issuer.url\",\n Jwks = Std.Base64encode.Invoke(new()\n {\n Input = \"{\\\"keys\\\":[{\\\"use\\\":\\\"sig\\\",\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"testid\\\",\\\"alg\\\":\\\"RS256\\\",\\\"n\\\":\\\"somedata\\\",\\\"e\\\":\\\"AQAB\\\"}]}\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n PlatformVersion = versions.Apply(getAttachedVersionsResult =\u003e getAttachedVersionsResult.ValidVersions[0]),\n Fleet = new Gcp.Container.Inputs.AttachedClusterFleetArgs\n {\n Project = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n LoggingConfig = new Gcp.Container.Inputs.AttachedClusterLoggingConfigArgs\n {\n ComponentConfig = new Gcp.Container.Inputs.AttachedClusterLoggingConfigComponentConfigArgs\n {\n EnableComponents = new[]\n {\n \"SYSTEM_COMPONENTS\",\n \"WORKLOADS\",\n },\n },\n },\n MonitoringConfig = new Gcp.Container.Inputs.AttachedClusterMonitoringConfigArgs\n {\n ManagedPrometheusConfig = new Gcp.Container.Inputs.AttachedClusterMonitoringConfigManagedPrometheusConfigArgs\n {\n Enabled = true,\n },\n },\n BinaryAuthorization = new Gcp.Container.Inputs.AttachedClusterBinaryAuthorizationArgs\n {\n EvaluationMode = \"PROJECT_SINGLETON_POLICY_ENFORCE\",\n },\n ProxyConfig = new Gcp.Container.Inputs.AttachedClusterProxyConfigArgs\n {\n KubernetesSecret = new Gcp.Container.Inputs.AttachedClusterProxyConfigKubernetesSecretArgs\n {\n Name = \"proxy-config\",\n Namespace = \"default\",\n },\n },\n SecurityPostureConfig = new Gcp.Container.Inputs.AttachedClusterSecurityPostureConfigArgs\n {\n VulnerabilityMode = \"VULNERABILITY_ENTERPRISE\",\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/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tversions, err := container.GetAttachedVersions(ctx, \u0026container.GetAttachedVersionsArgs{\n\t\t\tLocation: \"us-west1\",\n\t\t\tProject: project.ProjectId,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeBase64encode, err := std.Base64encode(ctx, \u0026std.Base64encodeArgs{\n\t\t\tInput: \"{\\\"keys\\\":[{\\\"use\\\":\\\"sig\\\",\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"testid\\\",\\\"alg\\\":\\\"RS256\\\",\\\"n\\\":\\\"somedata\\\",\\\"e\\\":\\\"AQAB\\\"}]}\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewAttachedCluster(ctx, \"primary\", \u0026container.AttachedClusterArgs{\n\t\t\tName: pulumi.String(\"basic\"),\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tDescription: pulumi.String(\"Test cluster\"),\n\t\t\tDistribution: pulumi.String(\"aks\"),\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tAuthorization: \u0026container.AttachedClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"user1@example.com\"),\n\t\t\t\t\tpulumi.String(\"user2@example.com\"),\n\t\t\t\t},\n\t\t\t\tAdminGroups: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"group1@example.com\"),\n\t\t\t\t\tpulumi.String(\"group2@example.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tOidcConfig: \u0026container.AttachedClusterOidcConfigArgs{\n\t\t\t\tIssuerUrl: pulumi.String(\"https://oidc.issuer.url\"),\n\t\t\t\tJwks: pulumi.String(invokeBase64encode.Result),\n\t\t\t},\n\t\t\tPlatformVersion: pulumi.String(versions.ValidVersions[0]),\n\t\t\tFleet: \u0026container.AttachedClusterFleetArgs{\n\t\t\t\tProject: pulumi.Sprintf(\"projects/%v\", project.Number),\n\t\t\t},\n\t\t\tLoggingConfig: \u0026container.AttachedClusterLoggingConfigArgs{\n\t\t\t\tComponentConfig: \u0026container.AttachedClusterLoggingConfigComponentConfigArgs{\n\t\t\t\t\tEnableComponents: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"SYSTEM_COMPONENTS\"),\n\t\t\t\t\t\tpulumi.String(\"WORKLOADS\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tMonitoringConfig: \u0026container.AttachedClusterMonitoringConfigArgs{\n\t\t\t\tManagedPrometheusConfig: \u0026container.AttachedClusterMonitoringConfigManagedPrometheusConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tBinaryAuthorization: \u0026container.AttachedClusterBinaryAuthorizationArgs{\n\t\t\t\tEvaluationMode: pulumi.String(\"PROJECT_SINGLETON_POLICY_ENFORCE\"),\n\t\t\t},\n\t\t\tProxyConfig: \u0026container.AttachedClusterProxyConfigArgs{\n\t\t\t\tKubernetesSecret: \u0026container.AttachedClusterProxyConfigKubernetesSecretArgs{\n\t\t\t\t\tName: pulumi.String(\"proxy-config\"),\n\t\t\t\t\tNamespace: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSecurityPostureConfig: \u0026container.AttachedClusterSecurityPostureConfigArgs{\n\t\t\t\tVulnerabilityMode: pulumi.String(\"VULNERABILITY_ENTERPRISE\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.container.ContainerFunctions;\nimport com.pulumi.gcp.container.inputs.GetAttachedVersionsArgs;\nimport com.pulumi.gcp.container.AttachedCluster;\nimport com.pulumi.gcp.container.AttachedClusterArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterAuthorizationArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterOidcConfigArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterFleetArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterLoggingConfigArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterLoggingConfigComponentConfigArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterMonitoringConfigArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterMonitoringConfigManagedPrometheusConfigArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterBinaryAuthorizationArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterProxyConfigArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterProxyConfigKubernetesSecretArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterSecurityPostureConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n final var versions = ContainerFunctions.getAttachedVersions(GetAttachedVersionsArgs.builder()\n .location(\"us-west1\")\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .build());\n\n var primary = new AttachedCluster(\"primary\", AttachedClusterArgs.builder()\n .name(\"basic\")\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .location(\"us-west1\")\n .description(\"Test cluster\")\n .distribution(\"aks\")\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .authorization(AttachedClusterAuthorizationArgs.builder()\n .adminUsers( \n \"user1@example.com\",\n \"user2@example.com\")\n .adminGroups( \n \"group1@example.com\",\n \"group2@example.com\")\n .build())\n .oidcConfig(AttachedClusterOidcConfigArgs.builder()\n .issuerUrl(\"https://oidc.issuer.url\")\n .jwks(StdFunctions.base64encode(Base64encodeArgs.builder()\n .input(\"{\\\"keys\\\":[{\\\"use\\\":\\\"sig\\\",\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"testid\\\",\\\"alg\\\":\\\"RS256\\\",\\\"n\\\":\\\"somedata\\\",\\\"e\\\":\\\"AQAB\\\"}]}\")\n .build()).result())\n .build())\n .platformVersion(versions.applyValue(getAttachedVersionsResult -\u003e getAttachedVersionsResult.validVersions()[0]))\n .fleet(AttachedClusterFleetArgs.builder()\n .project(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .loggingConfig(AttachedClusterLoggingConfigArgs.builder()\n .componentConfig(AttachedClusterLoggingConfigComponentConfigArgs.builder()\n .enableComponents( \n \"SYSTEM_COMPONENTS\",\n \"WORKLOADS\")\n .build())\n .build())\n .monitoringConfig(AttachedClusterMonitoringConfigArgs.builder()\n .managedPrometheusConfig(AttachedClusterMonitoringConfigManagedPrometheusConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .binaryAuthorization(AttachedClusterBinaryAuthorizationArgs.builder()\n .evaluationMode(\"PROJECT_SINGLETON_POLICY_ENFORCE\")\n .build())\n .proxyConfig(AttachedClusterProxyConfigArgs.builder()\n .kubernetesSecret(AttachedClusterProxyConfigKubernetesSecretArgs.builder()\n .name(\"proxy-config\")\n .namespace(\"default\")\n .build())\n .build())\n .securityPostureConfig(AttachedClusterSecurityPostureConfigArgs.builder()\n .vulnerabilityMode(\"VULNERABILITY_ENTERPRISE\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:AttachedCluster\n properties:\n name: basic\n project: ${project.projectId}\n location: us-west1\n description: Test cluster\n distribution: aks\n annotations:\n label-one: value-one\n authorization:\n adminUsers:\n - user1@example.com\n - user2@example.com\n adminGroups:\n - group1@example.com\n - group2@example.com\n oidcConfig:\n issuerUrl: https://oidc.issuer.url\n jwks:\n fn::invoke:\n Function: std:base64encode\n Arguments:\n input: '{\"keys\":[{\"use\":\"sig\",\"kty\":\"RSA\",\"kid\":\"testid\",\"alg\":\"RS256\",\"n\":\"somedata\",\"e\":\"AQAB\"}]}'\n Return: result\n platformVersion: ${versions.validVersions[0]}\n fleet:\n project: projects/${project.number}\n loggingConfig:\n componentConfig:\n enableComponents:\n - SYSTEM_COMPONENTS\n - WORKLOADS\n monitoringConfig:\n managedPrometheusConfig:\n enabled: true\n binaryAuthorization:\n evaluationMode: PROJECT_SINGLETON_POLICY_ENFORCE\n proxyConfig:\n kubernetesSecret:\n name: proxy-config\n namespace: default\n securityPostureConfig:\n vulnerabilityMode: VULNERABILITY_ENTERPRISE\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n versions:\n fn::invoke:\n Function: gcp:container:getAttachedVersions\n Arguments:\n location: us-west1\n project: ${project.projectId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Container Attached Cluster Ignore Errors\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst versions = project.then(project =\u003e gcp.container.getAttachedVersions({\n location: \"us-west1\",\n project: project.projectId,\n}));\nconst primary = new gcp.container.AttachedCluster(\"primary\", {\n name: \"basic\",\n location: \"us-west1\",\n project: project.then(project =\u003e project.projectId),\n description: \"Test cluster\",\n distribution: \"aks\",\n oidcConfig: {\n issuerUrl: \"https://oidc.issuer.url\",\n },\n platformVersion: versions.then(versions =\u003e versions.validVersions?.[0]),\n fleet: {\n project: project.then(project =\u003e `projects/${project.number}`),\n },\n deletionPolicy: \"DELETE_IGNORE_ERRORS\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nversions = gcp.container.get_attached_versions(location=\"us-west1\",\n project=project.project_id)\nprimary = gcp.container.AttachedCluster(\"primary\",\n name=\"basic\",\n location=\"us-west1\",\n project=project.project_id,\n description=\"Test cluster\",\n distribution=\"aks\",\n oidc_config={\n \"issuer_url\": \"https://oidc.issuer.url\",\n },\n platform_version=versions.valid_versions[0],\n fleet={\n \"project\": f\"projects/{project.number}\",\n },\n deletion_policy=\"DELETE_IGNORE_ERRORS\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var versions = Gcp.Container.GetAttachedVersions.Invoke(new()\n {\n Location = \"us-west1\",\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n });\n\n var primary = new Gcp.Container.AttachedCluster(\"primary\", new()\n {\n Name = \"basic\",\n Location = \"us-west1\",\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Description = \"Test cluster\",\n Distribution = \"aks\",\n OidcConfig = new Gcp.Container.Inputs.AttachedClusterOidcConfigArgs\n {\n IssuerUrl = \"https://oidc.issuer.url\",\n },\n PlatformVersion = versions.Apply(getAttachedVersionsResult =\u003e getAttachedVersionsResult.ValidVersions[0]),\n Fleet = new Gcp.Container.Inputs.AttachedClusterFleetArgs\n {\n Project = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n DeletionPolicy = \"DELETE_IGNORE_ERRORS\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tversions, err := container.GetAttachedVersions(ctx, \u0026container.GetAttachedVersionsArgs{\n\t\t\tLocation: \"us-west1\",\n\t\t\tProject: project.ProjectId,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewAttachedCluster(ctx, \"primary\", \u0026container.AttachedClusterArgs{\n\t\t\tName: pulumi.String(\"basic\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tDescription: pulumi.String(\"Test cluster\"),\n\t\t\tDistribution: pulumi.String(\"aks\"),\n\t\t\tOidcConfig: \u0026container.AttachedClusterOidcConfigArgs{\n\t\t\t\tIssuerUrl: pulumi.String(\"https://oidc.issuer.url\"),\n\t\t\t},\n\t\t\tPlatformVersion: pulumi.String(versions.ValidVersions[0]),\n\t\t\tFleet: \u0026container.AttachedClusterFleetArgs{\n\t\t\t\tProject: pulumi.Sprintf(\"projects/%v\", project.Number),\n\t\t\t},\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE_IGNORE_ERRORS\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.container.ContainerFunctions;\nimport com.pulumi.gcp.container.inputs.GetAttachedVersionsArgs;\nimport com.pulumi.gcp.container.AttachedCluster;\nimport com.pulumi.gcp.container.AttachedClusterArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterOidcConfigArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterFleetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n final var versions = ContainerFunctions.getAttachedVersions(GetAttachedVersionsArgs.builder()\n .location(\"us-west1\")\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .build());\n\n var primary = new AttachedCluster(\"primary\", AttachedClusterArgs.builder()\n .name(\"basic\")\n .location(\"us-west1\")\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .description(\"Test cluster\")\n .distribution(\"aks\")\n .oidcConfig(AttachedClusterOidcConfigArgs.builder()\n .issuerUrl(\"https://oidc.issuer.url\")\n .build())\n .platformVersion(versions.applyValue(getAttachedVersionsResult -\u003e getAttachedVersionsResult.validVersions()[0]))\n .fleet(AttachedClusterFleetArgs.builder()\n .project(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .deletionPolicy(\"DELETE_IGNORE_ERRORS\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:AttachedCluster\n properties:\n name: basic\n location: us-west1\n project: ${project.projectId}\n description: Test cluster\n distribution: aks\n oidcConfig:\n issuerUrl: https://oidc.issuer.url\n platformVersion: ${versions.validVersions[0]}\n fleet:\n project: projects/${project.number}\n deletionPolicy: DELETE_IGNORE_ERRORS\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n versions:\n fn::invoke:\n Function: gcp:container:getAttachedVersions\n Arguments:\n location: us-west1\n project: ${project.projectId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCluster can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/attachedClusters/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Cluster can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:container/attachedCluster:AttachedCluster default projects/{{project}}/locations/{{location}}/attachedClusters/{{name}}\n```\n\n```sh\n$ pulumi import gcp:container/attachedCluster:AttachedCluster default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:container/attachedCluster:AttachedCluster default {{location}}/{{name}}\n```\n\n", + "description": "An Anthos cluster running on customer owned infrastructure.\n\n\nTo get more information about Cluster, see:\n\n* [API documentation](https://cloud.google.com/anthos/clusters/docs/multi-cloud/reference/rest)\n* How-to Guides\n * [API reference](https://cloud.google.com/anthos/clusters/docs/multi-cloud/reference/rest/v1/projects.locations.attachedClusters)\n * [Multicloud overview](https://cloud.google.com/anthos/clusters/docs/multi-cloud)\n\n## Example Usage\n\n### Container Attached Cluster Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst versions = project.then(project =\u003e gcp.container.getAttachedVersions({\n location: \"us-west1\",\n project: project.projectId,\n}));\nconst primary = new gcp.container.AttachedCluster(\"primary\", {\n name: \"basic\",\n location: \"us-west1\",\n project: project.then(project =\u003e project.projectId),\n description: \"Test cluster\",\n distribution: \"aks\",\n oidcConfig: {\n issuerUrl: \"https://oidc.issuer.url\",\n },\n platformVersion: versions.then(versions =\u003e versions.validVersions?.[0]),\n fleet: {\n project: project.then(project =\u003e `projects/${project.number}`),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nversions = gcp.container.get_attached_versions(location=\"us-west1\",\n project=project.project_id)\nprimary = gcp.container.AttachedCluster(\"primary\",\n name=\"basic\",\n location=\"us-west1\",\n project=project.project_id,\n description=\"Test cluster\",\n distribution=\"aks\",\n oidc_config={\n \"issuer_url\": \"https://oidc.issuer.url\",\n },\n platform_version=versions.valid_versions[0],\n fleet={\n \"project\": f\"projects/{project.number}\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var versions = Gcp.Container.GetAttachedVersions.Invoke(new()\n {\n Location = \"us-west1\",\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n });\n\n var primary = new Gcp.Container.AttachedCluster(\"primary\", new()\n {\n Name = \"basic\",\n Location = \"us-west1\",\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Description = \"Test cluster\",\n Distribution = \"aks\",\n OidcConfig = new Gcp.Container.Inputs.AttachedClusterOidcConfigArgs\n {\n IssuerUrl = \"https://oidc.issuer.url\",\n },\n PlatformVersion = versions.Apply(getAttachedVersionsResult =\u003e getAttachedVersionsResult.ValidVersions[0]),\n Fleet = new Gcp.Container.Inputs.AttachedClusterFleetArgs\n {\n Project = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tversions, err := container.GetAttachedVersions(ctx, \u0026container.GetAttachedVersionsArgs{\n\t\t\tLocation: \"us-west1\",\n\t\t\tProject: project.ProjectId,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewAttachedCluster(ctx, \"primary\", \u0026container.AttachedClusterArgs{\n\t\t\tName: pulumi.String(\"basic\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tDescription: pulumi.String(\"Test cluster\"),\n\t\t\tDistribution: pulumi.String(\"aks\"),\n\t\t\tOidcConfig: \u0026container.AttachedClusterOidcConfigArgs{\n\t\t\t\tIssuerUrl: pulumi.String(\"https://oidc.issuer.url\"),\n\t\t\t},\n\t\t\tPlatformVersion: pulumi.String(versions.ValidVersions[0]),\n\t\t\tFleet: \u0026container.AttachedClusterFleetArgs{\n\t\t\t\tProject: pulumi.Sprintf(\"projects/%v\", project.Number),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.container.ContainerFunctions;\nimport com.pulumi.gcp.container.inputs.GetAttachedVersionsArgs;\nimport com.pulumi.gcp.container.AttachedCluster;\nimport com.pulumi.gcp.container.AttachedClusterArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterOidcConfigArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterFleetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n final var versions = ContainerFunctions.getAttachedVersions(GetAttachedVersionsArgs.builder()\n .location(\"us-west1\")\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .build());\n\n var primary = new AttachedCluster(\"primary\", AttachedClusterArgs.builder()\n .name(\"basic\")\n .location(\"us-west1\")\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .description(\"Test cluster\")\n .distribution(\"aks\")\n .oidcConfig(AttachedClusterOidcConfigArgs.builder()\n .issuerUrl(\"https://oidc.issuer.url\")\n .build())\n .platformVersion(versions.applyValue(getAttachedVersionsResult -\u003e getAttachedVersionsResult.validVersions()[0]))\n .fleet(AttachedClusterFleetArgs.builder()\n .project(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:AttachedCluster\n properties:\n name: basic\n location: us-west1\n project: ${project.projectId}\n description: Test cluster\n distribution: aks\n oidcConfig:\n issuerUrl: https://oidc.issuer.url\n platformVersion: ${versions.validVersions[0]}\n fleet:\n project: projects/${project.number}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n versions:\n fn::invoke:\n Function: gcp:container:getAttachedVersions\n Arguments:\n location: us-west1\n project: ${project.projectId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Container Attached Cluster Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst project = gcp.organizations.getProject({});\nconst versions = project.then(project =\u003e gcp.container.getAttachedVersions({\n location: \"us-west1\",\n project: project.projectId,\n}));\nconst primary = new gcp.container.AttachedCluster(\"primary\", {\n name: \"basic\",\n project: project.then(project =\u003e project.projectId),\n location: \"us-west1\",\n description: \"Test cluster\",\n distribution: \"aks\",\n annotations: {\n \"label-one\": \"value-one\",\n },\n authorization: {\n adminUsers: [\n \"user1@example.com\",\n \"user2@example.com\",\n ],\n adminGroups: [\n \"group1@example.com\",\n \"group2@example.com\",\n ],\n },\n oidcConfig: {\n issuerUrl: \"https://oidc.issuer.url\",\n jwks: std.base64encode({\n input: \"{\\\"keys\\\":[{\\\"use\\\":\\\"sig\\\",\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"testid\\\",\\\"alg\\\":\\\"RS256\\\",\\\"n\\\":\\\"somedata\\\",\\\"e\\\":\\\"AQAB\\\"}]}\",\n }).then(invoke =\u003e invoke.result),\n },\n platformVersion: versions.then(versions =\u003e versions.validVersions?.[0]),\n fleet: {\n project: project.then(project =\u003e `projects/${project.number}`),\n },\n loggingConfig: {\n componentConfig: {\n enableComponents: [\n \"SYSTEM_COMPONENTS\",\n \"WORKLOADS\",\n ],\n },\n },\n monitoringConfig: {\n managedPrometheusConfig: {\n enabled: true,\n },\n },\n binaryAuthorization: {\n evaluationMode: \"PROJECT_SINGLETON_POLICY_ENFORCE\",\n },\n proxyConfig: {\n kubernetesSecret: {\n name: \"proxy-config\",\n namespace: \"default\",\n },\n },\n securityPostureConfig: {\n vulnerabilityMode: \"VULNERABILITY_ENTERPRISE\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nproject = gcp.organizations.get_project()\nversions = gcp.container.get_attached_versions(location=\"us-west1\",\n project=project.project_id)\nprimary = gcp.container.AttachedCluster(\"primary\",\n name=\"basic\",\n project=project.project_id,\n location=\"us-west1\",\n description=\"Test cluster\",\n distribution=\"aks\",\n annotations={\n \"label-one\": \"value-one\",\n },\n authorization={\n \"admin_users\": [\n \"user1@example.com\",\n \"user2@example.com\",\n ],\n \"admin_groups\": [\n \"group1@example.com\",\n \"group2@example.com\",\n ],\n },\n oidc_config={\n \"issuer_url\": \"https://oidc.issuer.url\",\n \"jwks\": std.base64encode(input=\"{\\\"keys\\\":[{\\\"use\\\":\\\"sig\\\",\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"testid\\\",\\\"alg\\\":\\\"RS256\\\",\\\"n\\\":\\\"somedata\\\",\\\"e\\\":\\\"AQAB\\\"}]}\").result,\n },\n platform_version=versions.valid_versions[0],\n fleet={\n \"project\": f\"projects/{project.number}\",\n },\n logging_config={\n \"component_config\": {\n \"enable_components\": [\n \"SYSTEM_COMPONENTS\",\n \"WORKLOADS\",\n ],\n },\n },\n monitoring_config={\n \"managed_prometheus_config\": {\n \"enabled\": True,\n },\n },\n binary_authorization={\n \"evaluation_mode\": \"PROJECT_SINGLETON_POLICY_ENFORCE\",\n },\n proxy_config={\n \"kubernetes_secret\": {\n \"name\": \"proxy-config\",\n \"namespace\": \"default\",\n },\n },\n security_posture_config={\n \"vulnerability_mode\": \"VULNERABILITY_ENTERPRISE\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var versions = Gcp.Container.GetAttachedVersions.Invoke(new()\n {\n Location = \"us-west1\",\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n });\n\n var primary = new Gcp.Container.AttachedCluster(\"primary\", new()\n {\n Name = \"basic\",\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Location = \"us-west1\",\n Description = \"Test cluster\",\n Distribution = \"aks\",\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Authorization = new Gcp.Container.Inputs.AttachedClusterAuthorizationArgs\n {\n AdminUsers = new[]\n {\n \"user1@example.com\",\n \"user2@example.com\",\n },\n AdminGroups = new[]\n {\n \"group1@example.com\",\n \"group2@example.com\",\n },\n },\n OidcConfig = new Gcp.Container.Inputs.AttachedClusterOidcConfigArgs\n {\n IssuerUrl = \"https://oidc.issuer.url\",\n Jwks = Std.Base64encode.Invoke(new()\n {\n Input = \"{\\\"keys\\\":[{\\\"use\\\":\\\"sig\\\",\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"testid\\\",\\\"alg\\\":\\\"RS256\\\",\\\"n\\\":\\\"somedata\\\",\\\"e\\\":\\\"AQAB\\\"}]}\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n PlatformVersion = versions.Apply(getAttachedVersionsResult =\u003e getAttachedVersionsResult.ValidVersions[0]),\n Fleet = new Gcp.Container.Inputs.AttachedClusterFleetArgs\n {\n Project = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n LoggingConfig = new Gcp.Container.Inputs.AttachedClusterLoggingConfigArgs\n {\n ComponentConfig = new Gcp.Container.Inputs.AttachedClusterLoggingConfigComponentConfigArgs\n {\n EnableComponents = new[]\n {\n \"SYSTEM_COMPONENTS\",\n \"WORKLOADS\",\n },\n },\n },\n MonitoringConfig = new Gcp.Container.Inputs.AttachedClusterMonitoringConfigArgs\n {\n ManagedPrometheusConfig = new Gcp.Container.Inputs.AttachedClusterMonitoringConfigManagedPrometheusConfigArgs\n {\n Enabled = true,\n },\n },\n BinaryAuthorization = new Gcp.Container.Inputs.AttachedClusterBinaryAuthorizationArgs\n {\n EvaluationMode = \"PROJECT_SINGLETON_POLICY_ENFORCE\",\n },\n ProxyConfig = new Gcp.Container.Inputs.AttachedClusterProxyConfigArgs\n {\n KubernetesSecret = new Gcp.Container.Inputs.AttachedClusterProxyConfigKubernetesSecretArgs\n {\n Name = \"proxy-config\",\n Namespace = \"default\",\n },\n },\n SecurityPostureConfig = new Gcp.Container.Inputs.AttachedClusterSecurityPostureConfigArgs\n {\n VulnerabilityMode = \"VULNERABILITY_ENTERPRISE\",\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/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tversions, err := container.GetAttachedVersions(ctx, \u0026container.GetAttachedVersionsArgs{\n\t\t\tLocation: \"us-west1\",\n\t\t\tProject: project.ProjectId,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeBase64encode, err := std.Base64encode(ctx, \u0026std.Base64encodeArgs{\n\t\t\tInput: \"{\\\"keys\\\":[{\\\"use\\\":\\\"sig\\\",\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"testid\\\",\\\"alg\\\":\\\"RS256\\\",\\\"n\\\":\\\"somedata\\\",\\\"e\\\":\\\"AQAB\\\"}]}\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewAttachedCluster(ctx, \"primary\", \u0026container.AttachedClusterArgs{\n\t\t\tName: pulumi.String(\"basic\"),\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tDescription: pulumi.String(\"Test cluster\"),\n\t\t\tDistribution: pulumi.String(\"aks\"),\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tAuthorization: \u0026container.AttachedClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"user1@example.com\"),\n\t\t\t\t\tpulumi.String(\"user2@example.com\"),\n\t\t\t\t},\n\t\t\t\tAdminGroups: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"group1@example.com\"),\n\t\t\t\t\tpulumi.String(\"group2@example.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tOidcConfig: \u0026container.AttachedClusterOidcConfigArgs{\n\t\t\t\tIssuerUrl: pulumi.String(\"https://oidc.issuer.url\"),\n\t\t\t\tJwks: pulumi.String(invokeBase64encode.Result),\n\t\t\t},\n\t\t\tPlatformVersion: pulumi.String(versions.ValidVersions[0]),\n\t\t\tFleet: \u0026container.AttachedClusterFleetArgs{\n\t\t\t\tProject: pulumi.Sprintf(\"projects/%v\", project.Number),\n\t\t\t},\n\t\t\tLoggingConfig: \u0026container.AttachedClusterLoggingConfigArgs{\n\t\t\t\tComponentConfig: \u0026container.AttachedClusterLoggingConfigComponentConfigArgs{\n\t\t\t\t\tEnableComponents: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"SYSTEM_COMPONENTS\"),\n\t\t\t\t\t\tpulumi.String(\"WORKLOADS\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tMonitoringConfig: \u0026container.AttachedClusterMonitoringConfigArgs{\n\t\t\t\tManagedPrometheusConfig: \u0026container.AttachedClusterMonitoringConfigManagedPrometheusConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tBinaryAuthorization: \u0026container.AttachedClusterBinaryAuthorizationArgs{\n\t\t\t\tEvaluationMode: pulumi.String(\"PROJECT_SINGLETON_POLICY_ENFORCE\"),\n\t\t\t},\n\t\t\tProxyConfig: \u0026container.AttachedClusterProxyConfigArgs{\n\t\t\t\tKubernetesSecret: \u0026container.AttachedClusterProxyConfigKubernetesSecretArgs{\n\t\t\t\t\tName: pulumi.String(\"proxy-config\"),\n\t\t\t\t\tNamespace: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSecurityPostureConfig: \u0026container.AttachedClusterSecurityPostureConfigArgs{\n\t\t\t\tVulnerabilityMode: pulumi.String(\"VULNERABILITY_ENTERPRISE\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.container.ContainerFunctions;\nimport com.pulumi.gcp.container.inputs.GetAttachedVersionsArgs;\nimport com.pulumi.gcp.container.AttachedCluster;\nimport com.pulumi.gcp.container.AttachedClusterArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterAuthorizationArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterOidcConfigArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterFleetArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterLoggingConfigArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterLoggingConfigComponentConfigArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterMonitoringConfigArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterMonitoringConfigManagedPrometheusConfigArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterBinaryAuthorizationArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterProxyConfigArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterProxyConfigKubernetesSecretArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterSecurityPostureConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n final var versions = ContainerFunctions.getAttachedVersions(GetAttachedVersionsArgs.builder()\n .location(\"us-west1\")\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .build());\n\n var primary = new AttachedCluster(\"primary\", AttachedClusterArgs.builder()\n .name(\"basic\")\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .location(\"us-west1\")\n .description(\"Test cluster\")\n .distribution(\"aks\")\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .authorization(AttachedClusterAuthorizationArgs.builder()\n .adminUsers( \n \"user1@example.com\",\n \"user2@example.com\")\n .adminGroups( \n \"group1@example.com\",\n \"group2@example.com\")\n .build())\n .oidcConfig(AttachedClusterOidcConfigArgs.builder()\n .issuerUrl(\"https://oidc.issuer.url\")\n .jwks(StdFunctions.base64encode(Base64encodeArgs.builder()\n .input(\"{\\\"keys\\\":[{\\\"use\\\":\\\"sig\\\",\\\"kty\\\":\\\"RSA\\\",\\\"kid\\\":\\\"testid\\\",\\\"alg\\\":\\\"RS256\\\",\\\"n\\\":\\\"somedata\\\",\\\"e\\\":\\\"AQAB\\\"}]}\")\n .build()).result())\n .build())\n .platformVersion(versions.applyValue(getAttachedVersionsResult -\u003e getAttachedVersionsResult.validVersions()[0]))\n .fleet(AttachedClusterFleetArgs.builder()\n .project(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .loggingConfig(AttachedClusterLoggingConfigArgs.builder()\n .componentConfig(AttachedClusterLoggingConfigComponentConfigArgs.builder()\n .enableComponents( \n \"SYSTEM_COMPONENTS\",\n \"WORKLOADS\")\n .build())\n .build())\n .monitoringConfig(AttachedClusterMonitoringConfigArgs.builder()\n .managedPrometheusConfig(AttachedClusterMonitoringConfigManagedPrometheusConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .binaryAuthorization(AttachedClusterBinaryAuthorizationArgs.builder()\n .evaluationMode(\"PROJECT_SINGLETON_POLICY_ENFORCE\")\n .build())\n .proxyConfig(AttachedClusterProxyConfigArgs.builder()\n .kubernetesSecret(AttachedClusterProxyConfigKubernetesSecretArgs.builder()\n .name(\"proxy-config\")\n .namespace(\"default\")\n .build())\n .build())\n .securityPostureConfig(AttachedClusterSecurityPostureConfigArgs.builder()\n .vulnerabilityMode(\"VULNERABILITY_ENTERPRISE\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:AttachedCluster\n properties:\n name: basic\n project: ${project.projectId}\n location: us-west1\n description: Test cluster\n distribution: aks\n annotations:\n label-one: value-one\n authorization:\n adminUsers:\n - user1@example.com\n - user2@example.com\n adminGroups:\n - group1@example.com\n - group2@example.com\n oidcConfig:\n issuerUrl: https://oidc.issuer.url\n jwks:\n fn::invoke:\n Function: std:base64encode\n Arguments:\n input: '{\"keys\":[{\"use\":\"sig\",\"kty\":\"RSA\",\"kid\":\"testid\",\"alg\":\"RS256\",\"n\":\"somedata\",\"e\":\"AQAB\"}]}'\n Return: result\n platformVersion: ${versions.validVersions[0]}\n fleet:\n project: projects/${project.number}\n loggingConfig:\n componentConfig:\n enableComponents:\n - SYSTEM_COMPONENTS\n - WORKLOADS\n monitoringConfig:\n managedPrometheusConfig:\n enabled: true\n binaryAuthorization:\n evaluationMode: PROJECT_SINGLETON_POLICY_ENFORCE\n proxyConfig:\n kubernetesSecret:\n name: proxy-config\n namespace: default\n securityPostureConfig:\n vulnerabilityMode: VULNERABILITY_ENTERPRISE\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n versions:\n fn::invoke:\n Function: gcp:container:getAttachedVersions\n Arguments:\n location: us-west1\n project: ${project.projectId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Container Attached Cluster Ignore Errors\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst versions = project.then(project =\u003e gcp.container.getAttachedVersions({\n location: \"us-west1\",\n project: project.projectId,\n}));\nconst primary = new gcp.container.AttachedCluster(\"primary\", {\n name: \"basic\",\n location: \"us-west1\",\n project: project.then(project =\u003e project.projectId),\n description: \"Test cluster\",\n distribution: \"aks\",\n oidcConfig: {\n issuerUrl: \"https://oidc.issuer.url\",\n },\n platformVersion: versions.then(versions =\u003e versions.validVersions?.[0]),\n fleet: {\n project: project.then(project =\u003e `projects/${project.number}`),\n },\n deletionPolicy: \"DELETE_IGNORE_ERRORS\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nversions = gcp.container.get_attached_versions(location=\"us-west1\",\n project=project.project_id)\nprimary = gcp.container.AttachedCluster(\"primary\",\n name=\"basic\",\n location=\"us-west1\",\n project=project.project_id,\n description=\"Test cluster\",\n distribution=\"aks\",\n oidc_config={\n \"issuer_url\": \"https://oidc.issuer.url\",\n },\n platform_version=versions.valid_versions[0],\n fleet={\n \"project\": f\"projects/{project.number}\",\n },\n deletion_policy=\"DELETE_IGNORE_ERRORS\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var versions = Gcp.Container.GetAttachedVersions.Invoke(new()\n {\n Location = \"us-west1\",\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n });\n\n var primary = new Gcp.Container.AttachedCluster(\"primary\", new()\n {\n Name = \"basic\",\n Location = \"us-west1\",\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Description = \"Test cluster\",\n Distribution = \"aks\",\n OidcConfig = new Gcp.Container.Inputs.AttachedClusterOidcConfigArgs\n {\n IssuerUrl = \"https://oidc.issuer.url\",\n },\n PlatformVersion = versions.Apply(getAttachedVersionsResult =\u003e getAttachedVersionsResult.ValidVersions[0]),\n Fleet = new Gcp.Container.Inputs.AttachedClusterFleetArgs\n {\n Project = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n DeletionPolicy = \"DELETE_IGNORE_ERRORS\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tversions, err := container.GetAttachedVersions(ctx, \u0026container.GetAttachedVersionsArgs{\n\t\t\tLocation: \"us-west1\",\n\t\t\tProject: project.ProjectId,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewAttachedCluster(ctx, \"primary\", \u0026container.AttachedClusterArgs{\n\t\t\tName: pulumi.String(\"basic\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tDescription: pulumi.String(\"Test cluster\"),\n\t\t\tDistribution: pulumi.String(\"aks\"),\n\t\t\tOidcConfig: \u0026container.AttachedClusterOidcConfigArgs{\n\t\t\t\tIssuerUrl: pulumi.String(\"https://oidc.issuer.url\"),\n\t\t\t},\n\t\t\tPlatformVersion: pulumi.String(versions.ValidVersions[0]),\n\t\t\tFleet: \u0026container.AttachedClusterFleetArgs{\n\t\t\t\tProject: pulumi.Sprintf(\"projects/%v\", project.Number),\n\t\t\t},\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE_IGNORE_ERRORS\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.container.ContainerFunctions;\nimport com.pulumi.gcp.container.inputs.GetAttachedVersionsArgs;\nimport com.pulumi.gcp.container.AttachedCluster;\nimport com.pulumi.gcp.container.AttachedClusterArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterOidcConfigArgs;\nimport com.pulumi.gcp.container.inputs.AttachedClusterFleetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n final var versions = ContainerFunctions.getAttachedVersions(GetAttachedVersionsArgs.builder()\n .location(\"us-west1\")\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .build());\n\n var primary = new AttachedCluster(\"primary\", AttachedClusterArgs.builder()\n .name(\"basic\")\n .location(\"us-west1\")\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .description(\"Test cluster\")\n .distribution(\"aks\")\n .oidcConfig(AttachedClusterOidcConfigArgs.builder()\n .issuerUrl(\"https://oidc.issuer.url\")\n .build())\n .platformVersion(versions.applyValue(getAttachedVersionsResult -\u003e getAttachedVersionsResult.validVersions()[0]))\n .fleet(AttachedClusterFleetArgs.builder()\n .project(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .deletionPolicy(\"DELETE_IGNORE_ERRORS\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:AttachedCluster\n properties:\n name: basic\n location: us-west1\n project: ${project.projectId}\n description: Test cluster\n distribution: aks\n oidcConfig:\n issuerUrl: https://oidc.issuer.url\n platformVersion: ${versions.validVersions[0]}\n fleet:\n project: projects/${project.number}\n deletionPolicy: DELETE_IGNORE_ERRORS\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n versions:\n fn::invoke:\n Function: gcp:container:getAttachedVersions\n Arguments:\n location: us-west1\n project: ${project.projectId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCluster can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/attachedClusters/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Cluster can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:container/attachedCluster:AttachedCluster default projects/{{project}}/locations/{{location}}/attachedClusters/{{name}}\n```\n\n```sh\n$ pulumi import gcp:container/attachedCluster:AttachedCluster default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:container/attachedCluster:AttachedCluster default {{location}}/{{name}}\n```\n\n", "properties": { "annotations": { "type": "object", @@ -172794,7 +172794,7 @@ } }, "gcp:container/awsNodePool:AwsNodePool": { - "description": "An Anthos node pool running on AWS.\n\nFor more information, see:\n* [Multicloud overview](https://cloud.google.com/kubernetes-engine/multi-cloud/docs)\n## Example Usage\n\n### Basic_aws_cluster\nA basic example of a containeraws node pool\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst versions = gcp.container.getAwsVersions({\n project: \"my-project-name\",\n location: \"us-west1\",\n});\nconst primary = new gcp.container.AwsCluster(\"primary\", {\n authorization: {\n adminUsers: [{\n username: \"my@service-account.com\",\n }],\n },\n awsRegion: \"my-aws-region\",\n controlPlane: {\n awsServicesAuthentication: {\n roleArn: \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n roleSessionName: \"my--1p-dev-session\",\n },\n configEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n databaseEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n iamInstanceProfile: \"my--1p-dev-controlplane\",\n subnetIds: [\"subnet-00000000000000000\"],\n version: versions.then(versions =\u003e versions.validVersions?.[0]),\n instanceType: \"t3.medium\",\n mainVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"GP3\",\n },\n proxyConfig: {\n secretArn: \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secretVersion: \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n rootVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"GP3\",\n },\n securityGroupIds: [\"sg-00000000000000000\"],\n sshConfig: {\n ec2KeyPair: \"my--1p-dev-ssh\",\n },\n tags: {\n owner: \"my@service-account.com\",\n },\n },\n fleet: {\n project: \"my-project-number\",\n },\n location: \"us-west1\",\n name: \"name\",\n networking: {\n podAddressCidrBlocks: [\"10.2.0.0/16\"],\n serviceAddressCidrBlocks: [\"10.1.0.0/16\"],\n vpcId: \"vpc-00000000000000000\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n description: \"A sample aws cluster\",\n project: \"my-project-name\",\n});\nconst primaryAwsNodePool = new gcp.container.AwsNodePool(\"primary\", {\n autoscaling: {\n maxNodeCount: 5,\n minNodeCount: 1,\n },\n cluster: primary.name,\n config: {\n configEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n iamInstanceProfile: \"my--1p-dev-nodepool\",\n instanceType: \"t3.medium\",\n labels: {\n \"label-one\": \"value-one\",\n },\n rootVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"GP3\",\n },\n securityGroupIds: [\"sg-00000000000000000\"],\n proxyConfig: {\n secretArn: \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secretVersion: \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n sshConfig: {\n ec2KeyPair: \"my--1p-dev-ssh\",\n },\n tags: {\n \"tag-one\": \"value-one\",\n },\n taints: [{\n effect: \"PREFER_NO_SCHEDULE\",\n key: \"taint-key\",\n value: \"taint-value\",\n }],\n },\n location: \"us-west1\",\n maxPodsConstraint: {\n maxPodsPerNode: 110,\n },\n name: \"node-pool-name\",\n subnetId: \"subnet-00000000000000000\",\n version: versions.then(versions =\u003e versions.validVersions?.[0]),\n annotations: {\n \"label-one\": \"value-one\",\n },\n management: {\n autoRepair: true,\n },\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nversions = gcp.container.get_aws_versions(project=\"my-project-name\",\n location=\"us-west1\")\nprimary = gcp.container.AwsCluster(\"primary\",\n authorization={\n \"admin_users\": [{\n \"username\": \"my@service-account.com\",\n }],\n },\n aws_region=\"my-aws-region\",\n control_plane={\n \"aws_services_authentication\": {\n \"role_arn\": \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n \"role_session_name\": \"my--1p-dev-session\",\n },\n \"config_encryption\": {\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n \"database_encryption\": {\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n \"iam_instance_profile\": \"my--1p-dev-controlplane\",\n \"subnet_ids\": [\"subnet-00000000000000000\"],\n \"version\": versions.valid_versions[0],\n \"instance_type\": \"t3.medium\",\n \"main_volume\": {\n \"iops\": 3000,\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n \"size_gib\": 10,\n \"volume_type\": \"GP3\",\n },\n \"proxy_config\": {\n \"secret_arn\": \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n \"secret_version\": \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n \"root_volume\": {\n \"iops\": 3000,\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n \"size_gib\": 10,\n \"volume_type\": \"GP3\",\n },\n \"security_group_ids\": [\"sg-00000000000000000\"],\n \"ssh_config\": {\n \"ec2_key_pair\": \"my--1p-dev-ssh\",\n },\n \"tags\": {\n \"owner\": \"my@service-account.com\",\n },\n },\n fleet={\n \"project\": \"my-project-number\",\n },\n location=\"us-west1\",\n name=\"name\",\n networking={\n \"pod_address_cidr_blocks\": [\"10.2.0.0/16\"],\n \"service_address_cidr_blocks\": [\"10.1.0.0/16\"],\n \"vpc_id\": \"vpc-00000000000000000\",\n },\n annotations={\n \"label-one\": \"value-one\",\n },\n description=\"A sample aws cluster\",\n project=\"my-project-name\")\nprimary_aws_node_pool = gcp.container.AwsNodePool(\"primary\",\n autoscaling={\n \"max_node_count\": 5,\n \"min_node_count\": 1,\n },\n cluster=primary.name,\n config={\n \"config_encryption\": {\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n \"iam_instance_profile\": \"my--1p-dev-nodepool\",\n \"instance_type\": \"t3.medium\",\n \"labels\": {\n \"label_one\": \"value-one\",\n },\n \"root_volume\": {\n \"iops\": 3000,\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n \"size_gib\": 10,\n \"volume_type\": \"GP3\",\n },\n \"security_group_ids\": [\"sg-00000000000000000\"],\n \"proxy_config\": {\n \"secret_arn\": \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n \"secret_version\": \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n \"ssh_config\": {\n \"ec2_key_pair\": \"my--1p-dev-ssh\",\n },\n \"tags\": {\n \"tag_one\": \"value-one\",\n },\n \"taints\": [{\n \"effect\": \"PREFER_NO_SCHEDULE\",\n \"key\": \"taint-key\",\n \"value\": \"taint-value\",\n }],\n },\n location=\"us-west1\",\n max_pods_constraint={\n \"max_pods_per_node\": 110,\n },\n name=\"node-pool-name\",\n subnet_id=\"subnet-00000000000000000\",\n version=versions.valid_versions[0],\n annotations={\n \"label-one\": \"value-one\",\n },\n management={\n \"auto_repair\": True,\n },\n project=\"my-project-name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var versions = Gcp.Container.GetAwsVersions.Invoke(new()\n {\n Project = \"my-project-name\",\n Location = \"us-west1\",\n });\n\n var primary = new Gcp.Container.AwsCluster(\"primary\", new()\n {\n Authorization = new Gcp.Container.Inputs.AwsClusterAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.Container.Inputs.AwsClusterAuthorizationAdminUserArgs\n {\n Username = \"my@service-account.com\",\n },\n },\n },\n AwsRegion = \"my-aws-region\",\n ControlPlane = new Gcp.Container.Inputs.AwsClusterControlPlaneArgs\n {\n AwsServicesAuthentication = new Gcp.Container.Inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs\n {\n RoleArn = \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n RoleSessionName = \"my--1p-dev-session\",\n },\n ConfigEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneConfigEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n DatabaseEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneDatabaseEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n IamInstanceProfile = \"my--1p-dev-controlplane\",\n SubnetIds = new[]\n {\n \"subnet-00000000000000000\",\n },\n Version = versions.Apply(getAwsVersionsResult =\u003e getAwsVersionsResult.ValidVersions[0]),\n InstanceType = \"t3.medium\",\n MainVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneMainVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"GP3\",\n },\n ProxyConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneProxyConfigArgs\n {\n SecretArn = \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n SecretVersion = \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n RootVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneRootVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"GP3\",\n },\n SecurityGroupIds = new[]\n {\n \"sg-00000000000000000\",\n },\n SshConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneSshConfigArgs\n {\n Ec2KeyPair = \"my--1p-dev-ssh\",\n },\n Tags = \n {\n { \"owner\", \"my@service-account.com\" },\n },\n },\n Fleet = new Gcp.Container.Inputs.AwsClusterFleetArgs\n {\n Project = \"my-project-number\",\n },\n Location = \"us-west1\",\n Name = \"name\",\n Networking = new Gcp.Container.Inputs.AwsClusterNetworkingArgs\n {\n PodAddressCidrBlocks = new[]\n {\n \"10.2.0.0/16\",\n },\n ServiceAddressCidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n VpcId = \"vpc-00000000000000000\",\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Description = \"A sample aws cluster\",\n Project = \"my-project-name\",\n });\n\n var primaryAwsNodePool = new Gcp.Container.AwsNodePool(\"primary\", new()\n {\n Autoscaling = new Gcp.Container.Inputs.AwsNodePoolAutoscalingArgs\n {\n MaxNodeCount = 5,\n MinNodeCount = 1,\n },\n Cluster = primary.Name,\n Config = new Gcp.Container.Inputs.AwsNodePoolConfigArgs\n {\n ConfigEncryption = new Gcp.Container.Inputs.AwsNodePoolConfigConfigEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n IamInstanceProfile = \"my--1p-dev-nodepool\",\n InstanceType = \"t3.medium\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n RootVolume = new Gcp.Container.Inputs.AwsNodePoolConfigRootVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"GP3\",\n },\n SecurityGroupIds = new[]\n {\n \"sg-00000000000000000\",\n },\n ProxyConfig = new Gcp.Container.Inputs.AwsNodePoolConfigProxyConfigArgs\n {\n SecretArn = \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n SecretVersion = \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n SshConfig = new Gcp.Container.Inputs.AwsNodePoolConfigSshConfigArgs\n {\n Ec2KeyPair = \"my--1p-dev-ssh\",\n },\n Tags = \n {\n { \"tag-one\", \"value-one\" },\n },\n Taints = new[]\n {\n new Gcp.Container.Inputs.AwsNodePoolConfigTaintArgs\n {\n Effect = \"PREFER_NO_SCHEDULE\",\n Key = \"taint-key\",\n Value = \"taint-value\",\n },\n },\n },\n Location = \"us-west1\",\n MaxPodsConstraint = new Gcp.Container.Inputs.AwsNodePoolMaxPodsConstraintArgs\n {\n MaxPodsPerNode = 110,\n },\n Name = \"node-pool-name\",\n SubnetId = \"subnet-00000000000000000\",\n Version = versions.Apply(getAwsVersionsResult =\u003e getAwsVersionsResult.ValidVersions[0]),\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Management = new Gcp.Container.Inputs.AwsNodePoolManagementArgs\n {\n AutoRepair = true,\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tversions, err := container.GetAwsVersions(ctx, \u0026container.GetAwsVersionsArgs{\n\t\t\tProject: pulumi.StringRef(\"my-project-name\"),\n\t\t\tLocation: pulumi.StringRef(\"us-west1\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimary, err := container.NewAwsCluster(ctx, \"primary\", \u0026container.AwsClusterArgs{\n\t\t\tAuthorization: \u0026container.AwsClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: container.AwsClusterAuthorizationAdminUserArray{\n\t\t\t\t\t\u0026container.AwsClusterAuthorizationAdminUserArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"my@service-account.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAwsRegion: pulumi.String(\"my-aws-region\"),\n\t\t\tControlPlane: \u0026container.AwsClusterControlPlaneArgs{\n\t\t\t\tAwsServicesAuthentication: \u0026container.AwsClusterControlPlaneAwsServicesAuthenticationArgs{\n\t\t\t\t\tRoleArn: pulumi.String(\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\"),\n\t\t\t\t\tRoleSessionName: pulumi.String(\"my--1p-dev-session\"),\n\t\t\t\t},\n\t\t\t\tConfigEncryption: \u0026container.AwsClusterControlPlaneConfigEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tDatabaseEncryption: \u0026container.AwsClusterControlPlaneDatabaseEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tIamInstanceProfile: pulumi.String(\"my--1p-dev-controlplane\"),\n\t\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"subnet-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tVersion: pulumi.String(versions.ValidVersions[0]),\n\t\t\t\tInstanceType: pulumi.String(\"t3.medium\"),\n\t\t\t\tMainVolume: \u0026container.AwsClusterControlPlaneMainVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"GP3\"),\n\t\t\t\t},\n\t\t\t\tProxyConfig: \u0026container.AwsClusterControlPlaneProxyConfigArgs{\n\t\t\t\t\tSecretArn: pulumi.String(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\"),\n\t\t\t\t\tSecretVersion: pulumi.String(\"12345678-ABCD-EFGH-IJKL-987654321098\"),\n\t\t\t\t},\n\t\t\t\tRootVolume: \u0026container.AwsClusterControlPlaneRootVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"GP3\"),\n\t\t\t\t},\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"sg-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tSshConfig: \u0026container.AwsClusterControlPlaneSshConfigArgs{\n\t\t\t\t\tEc2KeyPair: pulumi.String(\"my--1p-dev-ssh\"),\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\t\"owner\": pulumi.String(\"my@service-account.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFleet: \u0026container.AwsClusterFleetArgs{\n\t\t\t\tProject: pulumi.String(\"my-project-number\"),\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"name\"),\n\t\t\tNetworking: \u0026container.AwsClusterNetworkingArgs{\n\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.2.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tVpcId: pulumi.String(\"vpc-00000000000000000\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"A sample aws cluster\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewAwsNodePool(ctx, \"primary\", \u0026container.AwsNodePoolArgs{\n\t\t\tAutoscaling: \u0026container.AwsNodePoolAutoscalingArgs{\n\t\t\t\tMaxNodeCount: pulumi.Int(5),\n\t\t\t\tMinNodeCount: pulumi.Int(1),\n\t\t\t},\n\t\t\tCluster: primary.Name,\n\t\t\tConfig: \u0026container.AwsNodePoolConfigArgs{\n\t\t\t\tConfigEncryption: \u0026container.AwsNodePoolConfigConfigEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tIamInstanceProfile: pulumi.String(\"my--1p-dev-nodepool\"),\n\t\t\t\tInstanceType: pulumi.String(\"t3.medium\"),\n\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t\t},\n\t\t\t\tRootVolume: \u0026container.AwsNodePoolConfigRootVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"GP3\"),\n\t\t\t\t},\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"sg-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tProxyConfig: \u0026container.AwsNodePoolConfigProxyConfigArgs{\n\t\t\t\t\tSecretArn: pulumi.String(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\"),\n\t\t\t\t\tSecretVersion: pulumi.String(\"12345678-ABCD-EFGH-IJKL-987654321098\"),\n\t\t\t\t},\n\t\t\t\tSshConfig: \u0026container.AwsNodePoolConfigSshConfigArgs{\n\t\t\t\t\tEc2KeyPair: pulumi.String(\"my--1p-dev-ssh\"),\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\t\"tag-one\": pulumi.String(\"value-one\"),\n\t\t\t\t},\n\t\t\t\tTaints: container.AwsNodePoolConfigTaintArray{\n\t\t\t\t\t\u0026container.AwsNodePoolConfigTaintArgs{\n\t\t\t\t\t\tEffect: pulumi.String(\"PREFER_NO_SCHEDULE\"),\n\t\t\t\t\t\tKey: pulumi.String(\"taint-key\"),\n\t\t\t\t\t\tValue: pulumi.String(\"taint-value\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tMaxPodsConstraint: \u0026container.AwsNodePoolMaxPodsConstraintArgs{\n\t\t\t\tMaxPodsPerNode: pulumi.Int(110),\n\t\t\t},\n\t\t\tName: pulumi.String(\"node-pool-name\"),\n\t\t\tSubnetId: pulumi.String(\"subnet-00000000000000000\"),\n\t\t\tVersion: pulumi.String(versions.ValidVersions[0]),\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tManagement: \u0026container.AwsNodePoolManagementArgs{\n\t\t\t\tAutoRepair: pulumi.Bool(true),\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.container.ContainerFunctions;\nimport com.pulumi.gcp.container.inputs.GetAwsVersionsArgs;\nimport com.pulumi.gcp.container.AwsCluster;\nimport com.pulumi.gcp.container.AwsClusterArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterAuthorizationArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneConfigEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneDatabaseEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneMainVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneProxyConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneRootVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneSshConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterFleetArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterNetworkingArgs;\nimport com.pulumi.gcp.container.AwsNodePool;\nimport com.pulumi.gcp.container.AwsNodePoolArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolAutoscalingArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigConfigEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigRootVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigProxyConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigSshConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolMaxPodsConstraintArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolManagementArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var versions = ContainerFunctions.getAwsVersions(GetAwsVersionsArgs.builder()\n .project(\"my-project-name\")\n .location(\"us-west1\")\n .build());\n\n var primary = new AwsCluster(\"primary\", AwsClusterArgs.builder()\n .authorization(AwsClusterAuthorizationArgs.builder()\n .adminUsers(AwsClusterAuthorizationAdminUserArgs.builder()\n .username(\"my@service-account.com\")\n .build())\n .build())\n .awsRegion(\"my-aws-region\")\n .controlPlane(AwsClusterControlPlaneArgs.builder()\n .awsServicesAuthentication(AwsClusterControlPlaneAwsServicesAuthenticationArgs.builder()\n .roleArn(\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\")\n .roleSessionName(\"my--1p-dev-session\")\n .build())\n .configEncryption(AwsClusterControlPlaneConfigEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .databaseEncryption(AwsClusterControlPlaneDatabaseEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .iamInstanceProfile(\"my--1p-dev-controlplane\")\n .subnetIds(\"subnet-00000000000000000\")\n .version(versions.applyValue(getAwsVersionsResult -\u003e getAwsVersionsResult.validVersions()[0]))\n .instanceType(\"t3.medium\")\n .mainVolume(AwsClusterControlPlaneMainVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"GP3\")\n .build())\n .proxyConfig(AwsClusterControlPlaneProxyConfigArgs.builder()\n .secretArn(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\")\n .secretVersion(\"12345678-ABCD-EFGH-IJKL-987654321098\")\n .build())\n .rootVolume(AwsClusterControlPlaneRootVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"GP3\")\n .build())\n .securityGroupIds(\"sg-00000000000000000\")\n .sshConfig(AwsClusterControlPlaneSshConfigArgs.builder()\n .ec2KeyPair(\"my--1p-dev-ssh\")\n .build())\n .tags(Map.of(\"owner\", \"my@service-account.com\"))\n .build())\n .fleet(AwsClusterFleetArgs.builder()\n .project(\"my-project-number\")\n .build())\n .location(\"us-west1\")\n .name(\"name\")\n .networking(AwsClusterNetworkingArgs.builder()\n .podAddressCidrBlocks(\"10.2.0.0/16\")\n .serviceAddressCidrBlocks(\"10.1.0.0/16\")\n .vpcId(\"vpc-00000000000000000\")\n .build())\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .description(\"A sample aws cluster\")\n .project(\"my-project-name\")\n .build());\n\n var primaryAwsNodePool = new AwsNodePool(\"primaryAwsNodePool\", AwsNodePoolArgs.builder()\n .autoscaling(AwsNodePoolAutoscalingArgs.builder()\n .maxNodeCount(5)\n .minNodeCount(1)\n .build())\n .cluster(primary.name())\n .config(AwsNodePoolConfigArgs.builder()\n .configEncryption(AwsNodePoolConfigConfigEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .iamInstanceProfile(\"my--1p-dev-nodepool\")\n .instanceType(\"t3.medium\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .rootVolume(AwsNodePoolConfigRootVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"GP3\")\n .build())\n .securityGroupIds(\"sg-00000000000000000\")\n .proxyConfig(AwsNodePoolConfigProxyConfigArgs.builder()\n .secretArn(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\")\n .secretVersion(\"12345678-ABCD-EFGH-IJKL-987654321098\")\n .build())\n .sshConfig(AwsNodePoolConfigSshConfigArgs.builder()\n .ec2KeyPair(\"my--1p-dev-ssh\")\n .build())\n .tags(Map.of(\"tag-one\", \"value-one\"))\n .taints(AwsNodePoolConfigTaintArgs.builder()\n .effect(\"PREFER_NO_SCHEDULE\")\n .key(\"taint-key\")\n .value(\"taint-value\")\n .build())\n .build())\n .location(\"us-west1\")\n .maxPodsConstraint(AwsNodePoolMaxPodsConstraintArgs.builder()\n .maxPodsPerNode(110)\n .build())\n .name(\"node-pool-name\")\n .subnetId(\"subnet-00000000000000000\")\n .version(versions.applyValue(getAwsVersionsResult -\u003e getAwsVersionsResult.validVersions()[0]))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .management(AwsNodePoolManagementArgs.builder()\n .autoRepair(true)\n .build())\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:AwsCluster\n properties:\n authorization:\n adminUsers:\n - username: my@service-account.com\n awsRegion: my-aws-region\n controlPlane:\n awsServicesAuthentication:\n roleArn: arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\n roleSessionName: my--1p-dev-session\n configEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n databaseEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n iamInstanceProfile: my--1p-dev-controlplane\n subnetIds:\n - subnet-00000000000000000\n version: ${versions.validVersions[0]}\n instanceType: t3.medium\n mainVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: GP3\n proxyConfig:\n secretArn: arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\n secretVersion: 12345678-ABCD-EFGH-IJKL-987654321098\n rootVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: GP3\n securityGroupIds:\n - sg-00000000000000000\n sshConfig:\n ec2KeyPair: my--1p-dev-ssh\n tags:\n owner: my@service-account.com\n fleet:\n project: my-project-number\n location: us-west1\n name: name\n networking:\n podAddressCidrBlocks:\n - 10.2.0.0/16\n serviceAddressCidrBlocks:\n - 10.1.0.0/16\n vpcId: vpc-00000000000000000\n annotations:\n label-one: value-one\n description: A sample aws cluster\n project: my-project-name\n primaryAwsNodePool:\n type: gcp:container:AwsNodePool\n name: primary\n properties:\n autoscaling:\n maxNodeCount: 5\n minNodeCount: 1\n cluster: ${primary.name}\n config:\n configEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n iamInstanceProfile: my--1p-dev-nodepool\n instanceType: t3.medium\n labels:\n label-one: value-one\n rootVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: GP3\n securityGroupIds:\n - sg-00000000000000000\n proxyConfig:\n secretArn: arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\n secretVersion: 12345678-ABCD-EFGH-IJKL-987654321098\n sshConfig:\n ec2KeyPair: my--1p-dev-ssh\n tags:\n tag-one: value-one\n taints:\n - effect: PREFER_NO_SCHEDULE\n key: taint-key\n value: taint-value\n location: us-west1\n maxPodsConstraint:\n maxPodsPerNode: 110\n name: node-pool-name\n subnetId: subnet-00000000000000000\n version: ${versions.validVersions[0]}\n annotations:\n label-one: value-one\n management:\n autoRepair: true\n project: my-project-name\nvariables:\n versions:\n fn::invoke:\n Function: gcp:container:getAwsVersions\n Arguments:\n project: my-project-name\n location: us-west1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Basic_enum_aws_cluster\nA basic example of a containeraws node pool with lowercase enums\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst versions = gcp.container.getAwsVersions({\n project: \"my-project-name\",\n location: \"us-west1\",\n});\nconst primary = new gcp.container.AwsCluster(\"primary\", {\n authorization: {\n adminUsers: [{\n username: \"my@service-account.com\",\n }],\n },\n awsRegion: \"my-aws-region\",\n controlPlane: {\n awsServicesAuthentication: {\n roleArn: \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n roleSessionName: \"my--1p-dev-session\",\n },\n configEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n databaseEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n iamInstanceProfile: \"my--1p-dev-controlplane\",\n subnetIds: [\"subnet-00000000000000000\"],\n version: versions.then(versions =\u003e versions.validVersions?.[0]),\n instanceType: \"t3.medium\",\n mainVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"GP3\",\n },\n proxyConfig: {\n secretArn: \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secretVersion: \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n rootVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"GP3\",\n },\n securityGroupIds: [\"sg-00000000000000000\"],\n sshConfig: {\n ec2KeyPair: \"my--1p-dev-ssh\",\n },\n tags: {\n owner: \"my@service-account.com\",\n },\n },\n fleet: {\n project: \"my-project-number\",\n },\n location: \"us-west1\",\n name: \"name\",\n networking: {\n podAddressCidrBlocks: [\"10.2.0.0/16\"],\n serviceAddressCidrBlocks: [\"10.1.0.0/16\"],\n vpcId: \"vpc-00000000000000000\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n description: \"A sample aws cluster\",\n project: \"my-project-name\",\n});\nconst primaryAwsNodePool = new gcp.container.AwsNodePool(\"primary\", {\n autoscaling: {\n maxNodeCount: 5,\n minNodeCount: 1,\n },\n cluster: primary.name,\n config: {\n configEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n iamInstanceProfile: \"my--1p-dev-nodepool\",\n instanceType: \"t3.medium\",\n labels: {\n \"label-one\": \"value-one\",\n },\n rootVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"gp3\",\n },\n securityGroupIds: [\"sg-00000000000000000\"],\n proxyConfig: {\n secretArn: \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secretVersion: \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n sshConfig: {\n ec2KeyPair: \"my--1p-dev-ssh\",\n },\n tags: {\n \"tag-one\": \"value-one\",\n },\n taints: [{\n effect: \"prefer_no_schedule\",\n key: \"taint-key\",\n value: \"taint-value\",\n }],\n },\n location: \"us-west1\",\n maxPodsConstraint: {\n maxPodsPerNode: 110,\n },\n name: \"node-pool-name\",\n subnetId: \"subnet-00000000000000000\",\n version: versions.then(versions =\u003e versions.validVersions?.[0]),\n annotations: {\n \"label-one\": \"value-one\",\n },\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nversions = gcp.container.get_aws_versions(project=\"my-project-name\",\n location=\"us-west1\")\nprimary = gcp.container.AwsCluster(\"primary\",\n authorization={\n \"admin_users\": [{\n \"username\": \"my@service-account.com\",\n }],\n },\n aws_region=\"my-aws-region\",\n control_plane={\n \"aws_services_authentication\": {\n \"role_arn\": \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n \"role_session_name\": \"my--1p-dev-session\",\n },\n \"config_encryption\": {\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n \"database_encryption\": {\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n \"iam_instance_profile\": \"my--1p-dev-controlplane\",\n \"subnet_ids\": [\"subnet-00000000000000000\"],\n \"version\": versions.valid_versions[0],\n \"instance_type\": \"t3.medium\",\n \"main_volume\": {\n \"iops\": 3000,\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n \"size_gib\": 10,\n \"volume_type\": \"GP3\",\n },\n \"proxy_config\": {\n \"secret_arn\": \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n \"secret_version\": \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n \"root_volume\": {\n \"iops\": 3000,\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n \"size_gib\": 10,\n \"volume_type\": \"GP3\",\n },\n \"security_group_ids\": [\"sg-00000000000000000\"],\n \"ssh_config\": {\n \"ec2_key_pair\": \"my--1p-dev-ssh\",\n },\n \"tags\": {\n \"owner\": \"my@service-account.com\",\n },\n },\n fleet={\n \"project\": \"my-project-number\",\n },\n location=\"us-west1\",\n name=\"name\",\n networking={\n \"pod_address_cidr_blocks\": [\"10.2.0.0/16\"],\n \"service_address_cidr_blocks\": [\"10.1.0.0/16\"],\n \"vpc_id\": \"vpc-00000000000000000\",\n },\n annotations={\n \"label-one\": \"value-one\",\n },\n description=\"A sample aws cluster\",\n project=\"my-project-name\")\nprimary_aws_node_pool = gcp.container.AwsNodePool(\"primary\",\n autoscaling={\n \"max_node_count\": 5,\n \"min_node_count\": 1,\n },\n cluster=primary.name,\n config={\n \"config_encryption\": {\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n \"iam_instance_profile\": \"my--1p-dev-nodepool\",\n \"instance_type\": \"t3.medium\",\n \"labels\": {\n \"label_one\": \"value-one\",\n },\n \"root_volume\": {\n \"iops\": 3000,\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n \"size_gib\": 10,\n \"volume_type\": \"gp3\",\n },\n \"security_group_ids\": [\"sg-00000000000000000\"],\n \"proxy_config\": {\n \"secret_arn\": \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n \"secret_version\": \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n \"ssh_config\": {\n \"ec2_key_pair\": \"my--1p-dev-ssh\",\n },\n \"tags\": {\n \"tag_one\": \"value-one\",\n },\n \"taints\": [{\n \"effect\": \"prefer_no_schedule\",\n \"key\": \"taint-key\",\n \"value\": \"taint-value\",\n }],\n },\n location=\"us-west1\",\n max_pods_constraint={\n \"max_pods_per_node\": 110,\n },\n name=\"node-pool-name\",\n subnet_id=\"subnet-00000000000000000\",\n version=versions.valid_versions[0],\n annotations={\n \"label-one\": \"value-one\",\n },\n project=\"my-project-name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var versions = Gcp.Container.GetAwsVersions.Invoke(new()\n {\n Project = \"my-project-name\",\n Location = \"us-west1\",\n });\n\n var primary = new Gcp.Container.AwsCluster(\"primary\", new()\n {\n Authorization = new Gcp.Container.Inputs.AwsClusterAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.Container.Inputs.AwsClusterAuthorizationAdminUserArgs\n {\n Username = \"my@service-account.com\",\n },\n },\n },\n AwsRegion = \"my-aws-region\",\n ControlPlane = new Gcp.Container.Inputs.AwsClusterControlPlaneArgs\n {\n AwsServicesAuthentication = new Gcp.Container.Inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs\n {\n RoleArn = \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n RoleSessionName = \"my--1p-dev-session\",\n },\n ConfigEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneConfigEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n DatabaseEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneDatabaseEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n IamInstanceProfile = \"my--1p-dev-controlplane\",\n SubnetIds = new[]\n {\n \"subnet-00000000000000000\",\n },\n Version = versions.Apply(getAwsVersionsResult =\u003e getAwsVersionsResult.ValidVersions[0]),\n InstanceType = \"t3.medium\",\n MainVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneMainVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"GP3\",\n },\n ProxyConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneProxyConfigArgs\n {\n SecretArn = \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n SecretVersion = \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n RootVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneRootVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"GP3\",\n },\n SecurityGroupIds = new[]\n {\n \"sg-00000000000000000\",\n },\n SshConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneSshConfigArgs\n {\n Ec2KeyPair = \"my--1p-dev-ssh\",\n },\n Tags = \n {\n { \"owner\", \"my@service-account.com\" },\n },\n },\n Fleet = new Gcp.Container.Inputs.AwsClusterFleetArgs\n {\n Project = \"my-project-number\",\n },\n Location = \"us-west1\",\n Name = \"name\",\n Networking = new Gcp.Container.Inputs.AwsClusterNetworkingArgs\n {\n PodAddressCidrBlocks = new[]\n {\n \"10.2.0.0/16\",\n },\n ServiceAddressCidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n VpcId = \"vpc-00000000000000000\",\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Description = \"A sample aws cluster\",\n Project = \"my-project-name\",\n });\n\n var primaryAwsNodePool = new Gcp.Container.AwsNodePool(\"primary\", new()\n {\n Autoscaling = new Gcp.Container.Inputs.AwsNodePoolAutoscalingArgs\n {\n MaxNodeCount = 5,\n MinNodeCount = 1,\n },\n Cluster = primary.Name,\n Config = new Gcp.Container.Inputs.AwsNodePoolConfigArgs\n {\n ConfigEncryption = new Gcp.Container.Inputs.AwsNodePoolConfigConfigEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n IamInstanceProfile = \"my--1p-dev-nodepool\",\n InstanceType = \"t3.medium\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n RootVolume = new Gcp.Container.Inputs.AwsNodePoolConfigRootVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"gp3\",\n },\n SecurityGroupIds = new[]\n {\n \"sg-00000000000000000\",\n },\n ProxyConfig = new Gcp.Container.Inputs.AwsNodePoolConfigProxyConfigArgs\n {\n SecretArn = \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n SecretVersion = \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n SshConfig = new Gcp.Container.Inputs.AwsNodePoolConfigSshConfigArgs\n {\n Ec2KeyPair = \"my--1p-dev-ssh\",\n },\n Tags = \n {\n { \"tag-one\", \"value-one\" },\n },\n Taints = new[]\n {\n new Gcp.Container.Inputs.AwsNodePoolConfigTaintArgs\n {\n Effect = \"prefer_no_schedule\",\n Key = \"taint-key\",\n Value = \"taint-value\",\n },\n },\n },\n Location = \"us-west1\",\n MaxPodsConstraint = new Gcp.Container.Inputs.AwsNodePoolMaxPodsConstraintArgs\n {\n MaxPodsPerNode = 110,\n },\n Name = \"node-pool-name\",\n SubnetId = \"subnet-00000000000000000\",\n Version = versions.Apply(getAwsVersionsResult =\u003e getAwsVersionsResult.ValidVersions[0]),\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tversions, err := container.GetAwsVersions(ctx, \u0026container.GetAwsVersionsArgs{\n\t\t\tProject: pulumi.StringRef(\"my-project-name\"),\n\t\t\tLocation: pulumi.StringRef(\"us-west1\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimary, err := container.NewAwsCluster(ctx, \"primary\", \u0026container.AwsClusterArgs{\n\t\t\tAuthorization: \u0026container.AwsClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: container.AwsClusterAuthorizationAdminUserArray{\n\t\t\t\t\t\u0026container.AwsClusterAuthorizationAdminUserArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"my@service-account.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAwsRegion: pulumi.String(\"my-aws-region\"),\n\t\t\tControlPlane: \u0026container.AwsClusterControlPlaneArgs{\n\t\t\t\tAwsServicesAuthentication: \u0026container.AwsClusterControlPlaneAwsServicesAuthenticationArgs{\n\t\t\t\t\tRoleArn: pulumi.String(\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\"),\n\t\t\t\t\tRoleSessionName: pulumi.String(\"my--1p-dev-session\"),\n\t\t\t\t},\n\t\t\t\tConfigEncryption: \u0026container.AwsClusterControlPlaneConfigEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tDatabaseEncryption: \u0026container.AwsClusterControlPlaneDatabaseEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tIamInstanceProfile: pulumi.String(\"my--1p-dev-controlplane\"),\n\t\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"subnet-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tVersion: pulumi.String(versions.ValidVersions[0]),\n\t\t\t\tInstanceType: pulumi.String(\"t3.medium\"),\n\t\t\t\tMainVolume: \u0026container.AwsClusterControlPlaneMainVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"GP3\"),\n\t\t\t\t},\n\t\t\t\tProxyConfig: \u0026container.AwsClusterControlPlaneProxyConfigArgs{\n\t\t\t\t\tSecretArn: pulumi.String(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\"),\n\t\t\t\t\tSecretVersion: pulumi.String(\"12345678-ABCD-EFGH-IJKL-987654321098\"),\n\t\t\t\t},\n\t\t\t\tRootVolume: \u0026container.AwsClusterControlPlaneRootVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"GP3\"),\n\t\t\t\t},\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"sg-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tSshConfig: \u0026container.AwsClusterControlPlaneSshConfigArgs{\n\t\t\t\t\tEc2KeyPair: pulumi.String(\"my--1p-dev-ssh\"),\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\t\"owner\": pulumi.String(\"my@service-account.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFleet: \u0026container.AwsClusterFleetArgs{\n\t\t\t\tProject: pulumi.String(\"my-project-number\"),\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"name\"),\n\t\t\tNetworking: \u0026container.AwsClusterNetworkingArgs{\n\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.2.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tVpcId: pulumi.String(\"vpc-00000000000000000\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"A sample aws cluster\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewAwsNodePool(ctx, \"primary\", \u0026container.AwsNodePoolArgs{\n\t\t\tAutoscaling: \u0026container.AwsNodePoolAutoscalingArgs{\n\t\t\t\tMaxNodeCount: pulumi.Int(5),\n\t\t\t\tMinNodeCount: pulumi.Int(1),\n\t\t\t},\n\t\t\tCluster: primary.Name,\n\t\t\tConfig: \u0026container.AwsNodePoolConfigArgs{\n\t\t\t\tConfigEncryption: \u0026container.AwsNodePoolConfigConfigEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tIamInstanceProfile: pulumi.String(\"my--1p-dev-nodepool\"),\n\t\t\t\tInstanceType: pulumi.String(\"t3.medium\"),\n\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t\t},\n\t\t\t\tRootVolume: \u0026container.AwsNodePoolConfigRootVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"gp3\"),\n\t\t\t\t},\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"sg-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tProxyConfig: \u0026container.AwsNodePoolConfigProxyConfigArgs{\n\t\t\t\t\tSecretArn: pulumi.String(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\"),\n\t\t\t\t\tSecretVersion: pulumi.String(\"12345678-ABCD-EFGH-IJKL-987654321098\"),\n\t\t\t\t},\n\t\t\t\tSshConfig: \u0026container.AwsNodePoolConfigSshConfigArgs{\n\t\t\t\t\tEc2KeyPair: pulumi.String(\"my--1p-dev-ssh\"),\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\t\"tag-one\": pulumi.String(\"value-one\"),\n\t\t\t\t},\n\t\t\t\tTaints: container.AwsNodePoolConfigTaintArray{\n\t\t\t\t\t\u0026container.AwsNodePoolConfigTaintArgs{\n\t\t\t\t\t\tEffect: pulumi.String(\"prefer_no_schedule\"),\n\t\t\t\t\t\tKey: pulumi.String(\"taint-key\"),\n\t\t\t\t\t\tValue: pulumi.String(\"taint-value\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tMaxPodsConstraint: \u0026container.AwsNodePoolMaxPodsConstraintArgs{\n\t\t\t\tMaxPodsPerNode: pulumi.Int(110),\n\t\t\t},\n\t\t\tName: pulumi.String(\"node-pool-name\"),\n\t\t\tSubnetId: pulumi.String(\"subnet-00000000000000000\"),\n\t\t\tVersion: pulumi.String(versions.ValidVersions[0]),\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.container.ContainerFunctions;\nimport com.pulumi.gcp.container.inputs.GetAwsVersionsArgs;\nimport com.pulumi.gcp.container.AwsCluster;\nimport com.pulumi.gcp.container.AwsClusterArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterAuthorizationArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneConfigEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneDatabaseEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneMainVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneProxyConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneRootVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneSshConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterFleetArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterNetworkingArgs;\nimport com.pulumi.gcp.container.AwsNodePool;\nimport com.pulumi.gcp.container.AwsNodePoolArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolAutoscalingArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigConfigEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigRootVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigProxyConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigSshConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolMaxPodsConstraintArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var versions = ContainerFunctions.getAwsVersions(GetAwsVersionsArgs.builder()\n .project(\"my-project-name\")\n .location(\"us-west1\")\n .build());\n\n var primary = new AwsCluster(\"primary\", AwsClusterArgs.builder()\n .authorization(AwsClusterAuthorizationArgs.builder()\n .adminUsers(AwsClusterAuthorizationAdminUserArgs.builder()\n .username(\"my@service-account.com\")\n .build())\n .build())\n .awsRegion(\"my-aws-region\")\n .controlPlane(AwsClusterControlPlaneArgs.builder()\n .awsServicesAuthentication(AwsClusterControlPlaneAwsServicesAuthenticationArgs.builder()\n .roleArn(\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\")\n .roleSessionName(\"my--1p-dev-session\")\n .build())\n .configEncryption(AwsClusterControlPlaneConfigEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .databaseEncryption(AwsClusterControlPlaneDatabaseEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .iamInstanceProfile(\"my--1p-dev-controlplane\")\n .subnetIds(\"subnet-00000000000000000\")\n .version(versions.applyValue(getAwsVersionsResult -\u003e getAwsVersionsResult.validVersions()[0]))\n .instanceType(\"t3.medium\")\n .mainVolume(AwsClusterControlPlaneMainVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"GP3\")\n .build())\n .proxyConfig(AwsClusterControlPlaneProxyConfigArgs.builder()\n .secretArn(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\")\n .secretVersion(\"12345678-ABCD-EFGH-IJKL-987654321098\")\n .build())\n .rootVolume(AwsClusterControlPlaneRootVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"GP3\")\n .build())\n .securityGroupIds(\"sg-00000000000000000\")\n .sshConfig(AwsClusterControlPlaneSshConfigArgs.builder()\n .ec2KeyPair(\"my--1p-dev-ssh\")\n .build())\n .tags(Map.of(\"owner\", \"my@service-account.com\"))\n .build())\n .fleet(AwsClusterFleetArgs.builder()\n .project(\"my-project-number\")\n .build())\n .location(\"us-west1\")\n .name(\"name\")\n .networking(AwsClusterNetworkingArgs.builder()\n .podAddressCidrBlocks(\"10.2.0.0/16\")\n .serviceAddressCidrBlocks(\"10.1.0.0/16\")\n .vpcId(\"vpc-00000000000000000\")\n .build())\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .description(\"A sample aws cluster\")\n .project(\"my-project-name\")\n .build());\n\n var primaryAwsNodePool = new AwsNodePool(\"primaryAwsNodePool\", AwsNodePoolArgs.builder()\n .autoscaling(AwsNodePoolAutoscalingArgs.builder()\n .maxNodeCount(5)\n .minNodeCount(1)\n .build())\n .cluster(primary.name())\n .config(AwsNodePoolConfigArgs.builder()\n .configEncryption(AwsNodePoolConfigConfigEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .iamInstanceProfile(\"my--1p-dev-nodepool\")\n .instanceType(\"t3.medium\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .rootVolume(AwsNodePoolConfigRootVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"gp3\")\n .build())\n .securityGroupIds(\"sg-00000000000000000\")\n .proxyConfig(AwsNodePoolConfigProxyConfigArgs.builder()\n .secretArn(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\")\n .secretVersion(\"12345678-ABCD-EFGH-IJKL-987654321098\")\n .build())\n .sshConfig(AwsNodePoolConfigSshConfigArgs.builder()\n .ec2KeyPair(\"my--1p-dev-ssh\")\n .build())\n .tags(Map.of(\"tag-one\", \"value-one\"))\n .taints(AwsNodePoolConfigTaintArgs.builder()\n .effect(\"prefer_no_schedule\")\n .key(\"taint-key\")\n .value(\"taint-value\")\n .build())\n .build())\n .location(\"us-west1\")\n .maxPodsConstraint(AwsNodePoolMaxPodsConstraintArgs.builder()\n .maxPodsPerNode(110)\n .build())\n .name(\"node-pool-name\")\n .subnetId(\"subnet-00000000000000000\")\n .version(versions.applyValue(getAwsVersionsResult -\u003e getAwsVersionsResult.validVersions()[0]))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:AwsCluster\n properties:\n authorization:\n adminUsers:\n - username: my@service-account.com\n awsRegion: my-aws-region\n controlPlane:\n awsServicesAuthentication:\n roleArn: arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\n roleSessionName: my--1p-dev-session\n configEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n databaseEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n iamInstanceProfile: my--1p-dev-controlplane\n subnetIds:\n - subnet-00000000000000000\n version: ${versions.validVersions[0]}\n instanceType: t3.medium\n mainVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: GP3\n proxyConfig:\n secretArn: arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\n secretVersion: 12345678-ABCD-EFGH-IJKL-987654321098\n rootVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: GP3\n securityGroupIds:\n - sg-00000000000000000\n sshConfig:\n ec2KeyPair: my--1p-dev-ssh\n tags:\n owner: my@service-account.com\n fleet:\n project: my-project-number\n location: us-west1\n name: name\n networking:\n podAddressCidrBlocks:\n - 10.2.0.0/16\n serviceAddressCidrBlocks:\n - 10.1.0.0/16\n vpcId: vpc-00000000000000000\n annotations:\n label-one: value-one\n description: A sample aws cluster\n project: my-project-name\n primaryAwsNodePool:\n type: gcp:container:AwsNodePool\n name: primary\n properties:\n autoscaling:\n maxNodeCount: 5\n minNodeCount: 1\n cluster: ${primary.name}\n config:\n configEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n iamInstanceProfile: my--1p-dev-nodepool\n instanceType: t3.medium\n labels:\n label-one: value-one\n rootVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: gp3\n securityGroupIds:\n - sg-00000000000000000\n proxyConfig:\n secretArn: arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\n secretVersion: 12345678-ABCD-EFGH-IJKL-987654321098\n sshConfig:\n ec2KeyPair: my--1p-dev-ssh\n tags:\n tag-one: value-one\n taints:\n - effect: prefer_no_schedule\n key: taint-key\n value: taint-value\n location: us-west1\n maxPodsConstraint:\n maxPodsPerNode: 110\n name: node-pool-name\n subnetId: subnet-00000000000000000\n version: ${versions.validVersions[0]}\n annotations:\n label-one: value-one\n project: my-project-name\nvariables:\n versions:\n fn::invoke:\n Function: gcp:container:getAwsVersions\n Arguments:\n project: my-project-name\n location: us-west1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Beta_basic_enum_aws_cluster\nA basic example of a containeraws node pool with lowercase enums (beta)\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst versions = gcp.container.getAwsVersions({\n project: \"my-project-name\",\n location: \"us-west1\",\n});\nconst primary = new gcp.container.AwsCluster(\"primary\", {\n authorization: {\n adminUsers: [{\n username: \"my@service-account.com\",\n }],\n },\n awsRegion: \"my-aws-region\",\n controlPlane: {\n awsServicesAuthentication: {\n roleArn: \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n roleSessionName: \"my--1p-dev-session\",\n },\n configEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n databaseEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n iamInstanceProfile: \"my--1p-dev-controlplane\",\n subnetIds: [\"subnet-00000000000000000\"],\n version: versions.then(versions =\u003e versions.validVersions?.[0]),\n instanceType: \"t3.medium\",\n mainVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"GP3\",\n },\n proxyConfig: {\n secretArn: \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secretVersion: \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n rootVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"GP3\",\n },\n securityGroupIds: [\"sg-00000000000000000\"],\n sshConfig: {\n ec2KeyPair: \"my--1p-dev-ssh\",\n },\n tags: {\n owner: \"my@service-account.com\",\n },\n },\n fleet: {\n project: \"my-project-number\",\n },\n location: \"us-west1\",\n name: \"name\",\n networking: {\n podAddressCidrBlocks: [\"10.2.0.0/16\"],\n serviceAddressCidrBlocks: [\"10.1.0.0/16\"],\n vpcId: \"vpc-00000000000000000\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n description: \"A sample aws cluster\",\n project: \"my-project-name\",\n});\nconst primaryAwsNodePool = new gcp.container.AwsNodePool(\"primary\", {\n autoscaling: {\n maxNodeCount: 5,\n minNodeCount: 1,\n },\n cluster: primary.name,\n config: {\n configEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n iamInstanceProfile: \"my--1p-dev-nodepool\",\n instanceType: \"t3.medium\",\n labels: {\n \"label-one\": \"value-one\",\n },\n rootVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"gp3\",\n },\n securityGroupIds: [\"sg-00000000000000000\"],\n proxyConfig: {\n secretArn: \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secretVersion: \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n sshConfig: {\n ec2KeyPair: \"my--1p-dev-ssh\",\n },\n tags: {\n \"tag-one\": \"value-one\",\n },\n taints: [{\n effect: \"prefer_no_schedule\",\n key: \"taint-key\",\n value: \"taint-value\",\n }],\n instancePlacement: {\n tenancy: \"dedicated\",\n },\n imageType: \"ubuntu\",\n },\n location: \"us-west1\",\n maxPodsConstraint: {\n maxPodsPerNode: 110,\n },\n name: \"node-pool-name\",\n subnetId: \"subnet-00000000000000000\",\n version: versions.then(versions =\u003e versions.validVersions?.[0]),\n annotations: {\n \"label-one\": \"value-one\",\n },\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nversions = gcp.container.get_aws_versions(project=\"my-project-name\",\n location=\"us-west1\")\nprimary = gcp.container.AwsCluster(\"primary\",\n authorization={\n \"admin_users\": [{\n \"username\": \"my@service-account.com\",\n }],\n },\n aws_region=\"my-aws-region\",\n control_plane={\n \"aws_services_authentication\": {\n \"role_arn\": \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n \"role_session_name\": \"my--1p-dev-session\",\n },\n \"config_encryption\": {\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n \"database_encryption\": {\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n \"iam_instance_profile\": \"my--1p-dev-controlplane\",\n \"subnet_ids\": [\"subnet-00000000000000000\"],\n \"version\": versions.valid_versions[0],\n \"instance_type\": \"t3.medium\",\n \"main_volume\": {\n \"iops\": 3000,\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n \"size_gib\": 10,\n \"volume_type\": \"GP3\",\n },\n \"proxy_config\": {\n \"secret_arn\": \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n \"secret_version\": \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n \"root_volume\": {\n \"iops\": 3000,\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n \"size_gib\": 10,\n \"volume_type\": \"GP3\",\n },\n \"security_group_ids\": [\"sg-00000000000000000\"],\n \"ssh_config\": {\n \"ec2_key_pair\": \"my--1p-dev-ssh\",\n },\n \"tags\": {\n \"owner\": \"my@service-account.com\",\n },\n },\n fleet={\n \"project\": \"my-project-number\",\n },\n location=\"us-west1\",\n name=\"name\",\n networking={\n \"pod_address_cidr_blocks\": [\"10.2.0.0/16\"],\n \"service_address_cidr_blocks\": [\"10.1.0.0/16\"],\n \"vpc_id\": \"vpc-00000000000000000\",\n },\n annotations={\n \"label-one\": \"value-one\",\n },\n description=\"A sample aws cluster\",\n project=\"my-project-name\")\nprimary_aws_node_pool = gcp.container.AwsNodePool(\"primary\",\n autoscaling={\n \"max_node_count\": 5,\n \"min_node_count\": 1,\n },\n cluster=primary.name,\n config={\n \"config_encryption\": {\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n \"iam_instance_profile\": \"my--1p-dev-nodepool\",\n \"instance_type\": \"t3.medium\",\n \"labels\": {\n \"label_one\": \"value-one\",\n },\n \"root_volume\": {\n \"iops\": 3000,\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n \"size_gib\": 10,\n \"volume_type\": \"gp3\",\n },\n \"security_group_ids\": [\"sg-00000000000000000\"],\n \"proxy_config\": {\n \"secret_arn\": \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n \"secret_version\": \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n \"ssh_config\": {\n \"ec2_key_pair\": \"my--1p-dev-ssh\",\n },\n \"tags\": {\n \"tag_one\": \"value-one\",\n },\n \"taints\": [{\n \"effect\": \"prefer_no_schedule\",\n \"key\": \"taint-key\",\n \"value\": \"taint-value\",\n }],\n \"instance_placement\": {\n \"tenancy\": \"dedicated\",\n },\n \"image_type\": \"ubuntu\",\n },\n location=\"us-west1\",\n max_pods_constraint={\n \"max_pods_per_node\": 110,\n },\n name=\"node-pool-name\",\n subnet_id=\"subnet-00000000000000000\",\n version=versions.valid_versions[0],\n annotations={\n \"label-one\": \"value-one\",\n },\n project=\"my-project-name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var versions = Gcp.Container.GetAwsVersions.Invoke(new()\n {\n Project = \"my-project-name\",\n Location = \"us-west1\",\n });\n\n var primary = new Gcp.Container.AwsCluster(\"primary\", new()\n {\n Authorization = new Gcp.Container.Inputs.AwsClusterAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.Container.Inputs.AwsClusterAuthorizationAdminUserArgs\n {\n Username = \"my@service-account.com\",\n },\n },\n },\n AwsRegion = \"my-aws-region\",\n ControlPlane = new Gcp.Container.Inputs.AwsClusterControlPlaneArgs\n {\n AwsServicesAuthentication = new Gcp.Container.Inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs\n {\n RoleArn = \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n RoleSessionName = \"my--1p-dev-session\",\n },\n ConfigEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneConfigEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n DatabaseEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneDatabaseEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n IamInstanceProfile = \"my--1p-dev-controlplane\",\n SubnetIds = new[]\n {\n \"subnet-00000000000000000\",\n },\n Version = versions.Apply(getAwsVersionsResult =\u003e getAwsVersionsResult.ValidVersions[0]),\n InstanceType = \"t3.medium\",\n MainVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneMainVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"GP3\",\n },\n ProxyConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneProxyConfigArgs\n {\n SecretArn = \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n SecretVersion = \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n RootVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneRootVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"GP3\",\n },\n SecurityGroupIds = new[]\n {\n \"sg-00000000000000000\",\n },\n SshConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneSshConfigArgs\n {\n Ec2KeyPair = \"my--1p-dev-ssh\",\n },\n Tags = \n {\n { \"owner\", \"my@service-account.com\" },\n },\n },\n Fleet = new Gcp.Container.Inputs.AwsClusterFleetArgs\n {\n Project = \"my-project-number\",\n },\n Location = \"us-west1\",\n Name = \"name\",\n Networking = new Gcp.Container.Inputs.AwsClusterNetworkingArgs\n {\n PodAddressCidrBlocks = new[]\n {\n \"10.2.0.0/16\",\n },\n ServiceAddressCidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n VpcId = \"vpc-00000000000000000\",\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Description = \"A sample aws cluster\",\n Project = \"my-project-name\",\n });\n\n var primaryAwsNodePool = new Gcp.Container.AwsNodePool(\"primary\", new()\n {\n Autoscaling = new Gcp.Container.Inputs.AwsNodePoolAutoscalingArgs\n {\n MaxNodeCount = 5,\n MinNodeCount = 1,\n },\n Cluster = primary.Name,\n Config = new Gcp.Container.Inputs.AwsNodePoolConfigArgs\n {\n ConfigEncryption = new Gcp.Container.Inputs.AwsNodePoolConfigConfigEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n IamInstanceProfile = \"my--1p-dev-nodepool\",\n InstanceType = \"t3.medium\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n RootVolume = new Gcp.Container.Inputs.AwsNodePoolConfigRootVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"gp3\",\n },\n SecurityGroupIds = new[]\n {\n \"sg-00000000000000000\",\n },\n ProxyConfig = new Gcp.Container.Inputs.AwsNodePoolConfigProxyConfigArgs\n {\n SecretArn = \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n SecretVersion = \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n SshConfig = new Gcp.Container.Inputs.AwsNodePoolConfigSshConfigArgs\n {\n Ec2KeyPair = \"my--1p-dev-ssh\",\n },\n Tags = \n {\n { \"tag-one\", \"value-one\" },\n },\n Taints = new[]\n {\n new Gcp.Container.Inputs.AwsNodePoolConfigTaintArgs\n {\n Effect = \"prefer_no_schedule\",\n Key = \"taint-key\",\n Value = \"taint-value\",\n },\n },\n InstancePlacement = new Gcp.Container.Inputs.AwsNodePoolConfigInstancePlacementArgs\n {\n Tenancy = \"dedicated\",\n },\n ImageType = \"ubuntu\",\n },\n Location = \"us-west1\",\n MaxPodsConstraint = new Gcp.Container.Inputs.AwsNodePoolMaxPodsConstraintArgs\n {\n MaxPodsPerNode = 110,\n },\n Name = \"node-pool-name\",\n SubnetId = \"subnet-00000000000000000\",\n Version = versions.Apply(getAwsVersionsResult =\u003e getAwsVersionsResult.ValidVersions[0]),\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tversions, err := container.GetAwsVersions(ctx, \u0026container.GetAwsVersionsArgs{\n\t\t\tProject: pulumi.StringRef(\"my-project-name\"),\n\t\t\tLocation: pulumi.StringRef(\"us-west1\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimary, err := container.NewAwsCluster(ctx, \"primary\", \u0026container.AwsClusterArgs{\n\t\t\tAuthorization: \u0026container.AwsClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: container.AwsClusterAuthorizationAdminUserArray{\n\t\t\t\t\t\u0026container.AwsClusterAuthorizationAdminUserArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"my@service-account.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAwsRegion: pulumi.String(\"my-aws-region\"),\n\t\t\tControlPlane: \u0026container.AwsClusterControlPlaneArgs{\n\t\t\t\tAwsServicesAuthentication: \u0026container.AwsClusterControlPlaneAwsServicesAuthenticationArgs{\n\t\t\t\t\tRoleArn: pulumi.String(\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\"),\n\t\t\t\t\tRoleSessionName: pulumi.String(\"my--1p-dev-session\"),\n\t\t\t\t},\n\t\t\t\tConfigEncryption: \u0026container.AwsClusterControlPlaneConfigEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tDatabaseEncryption: \u0026container.AwsClusterControlPlaneDatabaseEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tIamInstanceProfile: pulumi.String(\"my--1p-dev-controlplane\"),\n\t\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"subnet-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tVersion: pulumi.String(versions.ValidVersions[0]),\n\t\t\t\tInstanceType: pulumi.String(\"t3.medium\"),\n\t\t\t\tMainVolume: \u0026container.AwsClusterControlPlaneMainVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"GP3\"),\n\t\t\t\t},\n\t\t\t\tProxyConfig: \u0026container.AwsClusterControlPlaneProxyConfigArgs{\n\t\t\t\t\tSecretArn: pulumi.String(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\"),\n\t\t\t\t\tSecretVersion: pulumi.String(\"12345678-ABCD-EFGH-IJKL-987654321098\"),\n\t\t\t\t},\n\t\t\t\tRootVolume: \u0026container.AwsClusterControlPlaneRootVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"GP3\"),\n\t\t\t\t},\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"sg-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tSshConfig: \u0026container.AwsClusterControlPlaneSshConfigArgs{\n\t\t\t\t\tEc2KeyPair: pulumi.String(\"my--1p-dev-ssh\"),\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\t\"owner\": pulumi.String(\"my@service-account.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFleet: \u0026container.AwsClusterFleetArgs{\n\t\t\t\tProject: pulumi.String(\"my-project-number\"),\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"name\"),\n\t\t\tNetworking: \u0026container.AwsClusterNetworkingArgs{\n\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.2.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tVpcId: pulumi.String(\"vpc-00000000000000000\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"A sample aws cluster\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewAwsNodePool(ctx, \"primary\", \u0026container.AwsNodePoolArgs{\n\t\t\tAutoscaling: \u0026container.AwsNodePoolAutoscalingArgs{\n\t\t\t\tMaxNodeCount: pulumi.Int(5),\n\t\t\t\tMinNodeCount: pulumi.Int(1),\n\t\t\t},\n\t\t\tCluster: primary.Name,\n\t\t\tConfig: \u0026container.AwsNodePoolConfigArgs{\n\t\t\t\tConfigEncryption: \u0026container.AwsNodePoolConfigConfigEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tIamInstanceProfile: pulumi.String(\"my--1p-dev-nodepool\"),\n\t\t\t\tInstanceType: pulumi.String(\"t3.medium\"),\n\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t\t},\n\t\t\t\tRootVolume: \u0026container.AwsNodePoolConfigRootVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"gp3\"),\n\t\t\t\t},\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"sg-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tProxyConfig: \u0026container.AwsNodePoolConfigProxyConfigArgs{\n\t\t\t\t\tSecretArn: pulumi.String(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\"),\n\t\t\t\t\tSecretVersion: pulumi.String(\"12345678-ABCD-EFGH-IJKL-987654321098\"),\n\t\t\t\t},\n\t\t\t\tSshConfig: \u0026container.AwsNodePoolConfigSshConfigArgs{\n\t\t\t\t\tEc2KeyPair: pulumi.String(\"my--1p-dev-ssh\"),\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\t\"tag-one\": pulumi.String(\"value-one\"),\n\t\t\t\t},\n\t\t\t\tTaints: container.AwsNodePoolConfigTaintArray{\n\t\t\t\t\t\u0026container.AwsNodePoolConfigTaintArgs{\n\t\t\t\t\t\tEffect: pulumi.String(\"prefer_no_schedule\"),\n\t\t\t\t\t\tKey: pulumi.String(\"taint-key\"),\n\t\t\t\t\t\tValue: pulumi.String(\"taint-value\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tInstancePlacement: \u0026container.AwsNodePoolConfigInstancePlacementArgs{\n\t\t\t\t\tTenancy: pulumi.String(\"dedicated\"),\n\t\t\t\t},\n\t\t\t\tImageType: pulumi.String(\"ubuntu\"),\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tMaxPodsConstraint: \u0026container.AwsNodePoolMaxPodsConstraintArgs{\n\t\t\t\tMaxPodsPerNode: pulumi.Int(110),\n\t\t\t},\n\t\t\tName: pulumi.String(\"node-pool-name\"),\n\t\t\tSubnetId: pulumi.String(\"subnet-00000000000000000\"),\n\t\t\tVersion: pulumi.String(versions.ValidVersions[0]),\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.container.ContainerFunctions;\nimport com.pulumi.gcp.container.inputs.GetAwsVersionsArgs;\nimport com.pulumi.gcp.container.AwsCluster;\nimport com.pulumi.gcp.container.AwsClusterArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterAuthorizationArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneConfigEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneDatabaseEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneMainVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneProxyConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneRootVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneSshConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterFleetArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterNetworkingArgs;\nimport com.pulumi.gcp.container.AwsNodePool;\nimport com.pulumi.gcp.container.AwsNodePoolArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolAutoscalingArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigConfigEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigRootVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigProxyConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigSshConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigInstancePlacementArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolMaxPodsConstraintArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var versions = ContainerFunctions.getAwsVersions(GetAwsVersionsArgs.builder()\n .project(\"my-project-name\")\n .location(\"us-west1\")\n .build());\n\n var primary = new AwsCluster(\"primary\", AwsClusterArgs.builder()\n .authorization(AwsClusterAuthorizationArgs.builder()\n .adminUsers(AwsClusterAuthorizationAdminUserArgs.builder()\n .username(\"my@service-account.com\")\n .build())\n .build())\n .awsRegion(\"my-aws-region\")\n .controlPlane(AwsClusterControlPlaneArgs.builder()\n .awsServicesAuthentication(AwsClusterControlPlaneAwsServicesAuthenticationArgs.builder()\n .roleArn(\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\")\n .roleSessionName(\"my--1p-dev-session\")\n .build())\n .configEncryption(AwsClusterControlPlaneConfigEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .databaseEncryption(AwsClusterControlPlaneDatabaseEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .iamInstanceProfile(\"my--1p-dev-controlplane\")\n .subnetIds(\"subnet-00000000000000000\")\n .version(versions.applyValue(getAwsVersionsResult -\u003e getAwsVersionsResult.validVersions()[0]))\n .instanceType(\"t3.medium\")\n .mainVolume(AwsClusterControlPlaneMainVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"GP3\")\n .build())\n .proxyConfig(AwsClusterControlPlaneProxyConfigArgs.builder()\n .secretArn(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\")\n .secretVersion(\"12345678-ABCD-EFGH-IJKL-987654321098\")\n .build())\n .rootVolume(AwsClusterControlPlaneRootVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"GP3\")\n .build())\n .securityGroupIds(\"sg-00000000000000000\")\n .sshConfig(AwsClusterControlPlaneSshConfigArgs.builder()\n .ec2KeyPair(\"my--1p-dev-ssh\")\n .build())\n .tags(Map.of(\"owner\", \"my@service-account.com\"))\n .build())\n .fleet(AwsClusterFleetArgs.builder()\n .project(\"my-project-number\")\n .build())\n .location(\"us-west1\")\n .name(\"name\")\n .networking(AwsClusterNetworkingArgs.builder()\n .podAddressCidrBlocks(\"10.2.0.0/16\")\n .serviceAddressCidrBlocks(\"10.1.0.0/16\")\n .vpcId(\"vpc-00000000000000000\")\n .build())\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .description(\"A sample aws cluster\")\n .project(\"my-project-name\")\n .build());\n\n var primaryAwsNodePool = new AwsNodePool(\"primaryAwsNodePool\", AwsNodePoolArgs.builder()\n .autoscaling(AwsNodePoolAutoscalingArgs.builder()\n .maxNodeCount(5)\n .minNodeCount(1)\n .build())\n .cluster(primary.name())\n .config(AwsNodePoolConfigArgs.builder()\n .configEncryption(AwsNodePoolConfigConfigEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .iamInstanceProfile(\"my--1p-dev-nodepool\")\n .instanceType(\"t3.medium\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .rootVolume(AwsNodePoolConfigRootVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"gp3\")\n .build())\n .securityGroupIds(\"sg-00000000000000000\")\n .proxyConfig(AwsNodePoolConfigProxyConfigArgs.builder()\n .secretArn(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\")\n .secretVersion(\"12345678-ABCD-EFGH-IJKL-987654321098\")\n .build())\n .sshConfig(AwsNodePoolConfigSshConfigArgs.builder()\n .ec2KeyPair(\"my--1p-dev-ssh\")\n .build())\n .tags(Map.of(\"tag-one\", \"value-one\"))\n .taints(AwsNodePoolConfigTaintArgs.builder()\n .effect(\"prefer_no_schedule\")\n .key(\"taint-key\")\n .value(\"taint-value\")\n .build())\n .instancePlacement(AwsNodePoolConfigInstancePlacementArgs.builder()\n .tenancy(\"dedicated\")\n .build())\n .imageType(\"ubuntu\")\n .build())\n .location(\"us-west1\")\n .maxPodsConstraint(AwsNodePoolMaxPodsConstraintArgs.builder()\n .maxPodsPerNode(110)\n .build())\n .name(\"node-pool-name\")\n .subnetId(\"subnet-00000000000000000\")\n .version(versions.applyValue(getAwsVersionsResult -\u003e getAwsVersionsResult.validVersions()[0]))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:AwsCluster\n properties:\n authorization:\n adminUsers:\n - username: my@service-account.com\n awsRegion: my-aws-region\n controlPlane:\n awsServicesAuthentication:\n roleArn: arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\n roleSessionName: my--1p-dev-session\n configEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n databaseEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n iamInstanceProfile: my--1p-dev-controlplane\n subnetIds:\n - subnet-00000000000000000\n version: ${versions.validVersions[0]}\n instanceType: t3.medium\n mainVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: GP3\n proxyConfig:\n secretArn: arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\n secretVersion: 12345678-ABCD-EFGH-IJKL-987654321098\n rootVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: GP3\n securityGroupIds:\n - sg-00000000000000000\n sshConfig:\n ec2KeyPair: my--1p-dev-ssh\n tags:\n owner: my@service-account.com\n fleet:\n project: my-project-number\n location: us-west1\n name: name\n networking:\n podAddressCidrBlocks:\n - 10.2.0.0/16\n serviceAddressCidrBlocks:\n - 10.1.0.0/16\n vpcId: vpc-00000000000000000\n annotations:\n label-one: value-one\n description: A sample aws cluster\n project: my-project-name\n primaryAwsNodePool:\n type: gcp:container:AwsNodePool\n name: primary\n properties:\n autoscaling:\n maxNodeCount: 5\n minNodeCount: 1\n cluster: ${primary.name}\n config:\n configEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n iamInstanceProfile: my--1p-dev-nodepool\n instanceType: t3.medium\n labels:\n label-one: value-one\n rootVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: gp3\n securityGroupIds:\n - sg-00000000000000000\n proxyConfig:\n secretArn: arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\n secretVersion: 12345678-ABCD-EFGH-IJKL-987654321098\n sshConfig:\n ec2KeyPair: my--1p-dev-ssh\n tags:\n tag-one: value-one\n taints:\n - effect: prefer_no_schedule\n key: taint-key\n value: taint-value\n instancePlacement:\n tenancy: dedicated\n imageType: ubuntu\n location: us-west1\n maxPodsConstraint:\n maxPodsPerNode: 110\n name: node-pool-name\n subnetId: subnet-00000000000000000\n version: ${versions.validVersions[0]}\n annotations:\n label-one: value-one\n project: my-project-name\nvariables:\n versions:\n fn::invoke:\n Function: gcp:container:getAwsVersions\n Arguments:\n project: my-project-name\n location: us-west1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNodePool can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/awsClusters/{{cluster}}/awsNodePools/{{name}}`\n\n* `{{project}}/{{location}}/{{cluster}}/{{name}}`\n\n* `{{location}}/{{cluster}}/{{name}}`\n\nWhen using the `pulumi import` command, NodePool can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:container/awsNodePool:AwsNodePool default projects/{{project}}/locations/{{location}}/awsClusters/{{cluster}}/awsNodePools/{{name}}\n```\n\n```sh\n$ pulumi import gcp:container/awsNodePool:AwsNodePool default {{project}}/{{location}}/{{cluster}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:container/awsNodePool:AwsNodePool default {{location}}/{{cluster}}/{{name}}\n```\n\n", + "description": "An Anthos node pool running on AWS.\n\nFor more information, see:\n* [Multicloud overview](https://cloud.google.com/kubernetes-engine/multi-cloud/docs)\n## Example Usage\n\n### Basic_aws_cluster\nA basic example of a containeraws node pool\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst versions = gcp.container.getAwsVersions({\n project: \"my-project-name\",\n location: \"us-west1\",\n});\nconst primary = new gcp.container.AwsCluster(\"primary\", {\n authorization: {\n adminUsers: [{\n username: \"my@service-account.com\",\n }],\n },\n awsRegion: \"my-aws-region\",\n controlPlane: {\n awsServicesAuthentication: {\n roleArn: \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n roleSessionName: \"my--1p-dev-session\",\n },\n configEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n databaseEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n iamInstanceProfile: \"my--1p-dev-controlplane\",\n subnetIds: [\"subnet-00000000000000000\"],\n version: versions.then(versions =\u003e versions.validVersions?.[0]),\n instanceType: \"t3.medium\",\n mainVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"GP3\",\n },\n proxyConfig: {\n secretArn: \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secretVersion: \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n rootVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"GP3\",\n },\n securityGroupIds: [\"sg-00000000000000000\"],\n sshConfig: {\n ec2KeyPair: \"my--1p-dev-ssh\",\n },\n tags: {\n owner: \"my@service-account.com\",\n },\n },\n fleet: {\n project: \"my-project-number\",\n },\n location: \"us-west1\",\n name: \"name\",\n networking: {\n podAddressCidrBlocks: [\"10.2.0.0/16\"],\n serviceAddressCidrBlocks: [\"10.1.0.0/16\"],\n vpcId: \"vpc-00000000000000000\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n description: \"A sample aws cluster\",\n project: \"my-project-name\",\n});\nconst primaryAwsNodePool = new gcp.container.AwsNodePool(\"primary\", {\n autoscaling: {\n maxNodeCount: 5,\n minNodeCount: 1,\n },\n cluster: primary.name,\n config: {\n configEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n iamInstanceProfile: \"my--1p-dev-nodepool\",\n instanceType: \"t3.medium\",\n labels: {\n \"label-one\": \"value-one\",\n },\n rootVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"GP3\",\n },\n securityGroupIds: [\"sg-00000000000000000\"],\n proxyConfig: {\n secretArn: \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secretVersion: \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n sshConfig: {\n ec2KeyPair: \"my--1p-dev-ssh\",\n },\n tags: {\n \"tag-one\": \"value-one\",\n },\n taints: [{\n effect: \"PREFER_NO_SCHEDULE\",\n key: \"taint-key\",\n value: \"taint-value\",\n }],\n },\n location: \"us-west1\",\n maxPodsConstraint: {\n maxPodsPerNode: 110,\n },\n name: \"node-pool-name\",\n subnetId: \"subnet-00000000000000000\",\n version: versions.then(versions =\u003e versions.validVersions?.[0]),\n annotations: {\n \"label-one\": \"value-one\",\n },\n management: {\n autoRepair: true,\n },\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nversions = gcp.container.get_aws_versions(project=\"my-project-name\",\n location=\"us-west1\")\nprimary = gcp.container.AwsCluster(\"primary\",\n authorization={\n \"admin_users\": [{\n \"username\": \"my@service-account.com\",\n }],\n },\n aws_region=\"my-aws-region\",\n control_plane={\n \"aws_services_authentication\": {\n \"role_arn\": \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n \"role_session_name\": \"my--1p-dev-session\",\n },\n \"config_encryption\": {\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n \"database_encryption\": {\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n \"iam_instance_profile\": \"my--1p-dev-controlplane\",\n \"subnet_ids\": [\"subnet-00000000000000000\"],\n \"version\": versions.valid_versions[0],\n \"instance_type\": \"t3.medium\",\n \"main_volume\": {\n \"iops\": 3000,\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n \"size_gib\": 10,\n \"volume_type\": \"GP3\",\n },\n \"proxy_config\": {\n \"secret_arn\": \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n \"secret_version\": \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n \"root_volume\": {\n \"iops\": 3000,\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n \"size_gib\": 10,\n \"volume_type\": \"GP3\",\n },\n \"security_group_ids\": [\"sg-00000000000000000\"],\n \"ssh_config\": {\n \"ec2_key_pair\": \"my--1p-dev-ssh\",\n },\n \"tags\": {\n \"owner\": \"my@service-account.com\",\n },\n },\n fleet={\n \"project\": \"my-project-number\",\n },\n location=\"us-west1\",\n name=\"name\",\n networking={\n \"pod_address_cidr_blocks\": [\"10.2.0.0/16\"],\n \"service_address_cidr_blocks\": [\"10.1.0.0/16\"],\n \"vpc_id\": \"vpc-00000000000000000\",\n },\n annotations={\n \"label-one\": \"value-one\",\n },\n description=\"A sample aws cluster\",\n project=\"my-project-name\")\nprimary_aws_node_pool = gcp.container.AwsNodePool(\"primary\",\n autoscaling={\n \"max_node_count\": 5,\n \"min_node_count\": 1,\n },\n cluster=primary.name,\n config={\n \"config_encryption\": {\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n \"iam_instance_profile\": \"my--1p-dev-nodepool\",\n \"instance_type\": \"t3.medium\",\n \"labels\": {\n \"label-one\": \"value-one\",\n },\n \"root_volume\": {\n \"iops\": 3000,\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n \"size_gib\": 10,\n \"volume_type\": \"GP3\",\n },\n \"security_group_ids\": [\"sg-00000000000000000\"],\n \"proxy_config\": {\n \"secret_arn\": \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n \"secret_version\": \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n \"ssh_config\": {\n \"ec2_key_pair\": \"my--1p-dev-ssh\",\n },\n \"tags\": {\n \"tag-one\": \"value-one\",\n },\n \"taints\": [{\n \"effect\": \"PREFER_NO_SCHEDULE\",\n \"key\": \"taint-key\",\n \"value\": \"taint-value\",\n }],\n },\n location=\"us-west1\",\n max_pods_constraint={\n \"max_pods_per_node\": 110,\n },\n name=\"node-pool-name\",\n subnet_id=\"subnet-00000000000000000\",\n version=versions.valid_versions[0],\n annotations={\n \"label-one\": \"value-one\",\n },\n management={\n \"auto_repair\": True,\n },\n project=\"my-project-name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var versions = Gcp.Container.GetAwsVersions.Invoke(new()\n {\n Project = \"my-project-name\",\n Location = \"us-west1\",\n });\n\n var primary = new Gcp.Container.AwsCluster(\"primary\", new()\n {\n Authorization = new Gcp.Container.Inputs.AwsClusterAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.Container.Inputs.AwsClusterAuthorizationAdminUserArgs\n {\n Username = \"my@service-account.com\",\n },\n },\n },\n AwsRegion = \"my-aws-region\",\n ControlPlane = new Gcp.Container.Inputs.AwsClusterControlPlaneArgs\n {\n AwsServicesAuthentication = new Gcp.Container.Inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs\n {\n RoleArn = \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n RoleSessionName = \"my--1p-dev-session\",\n },\n ConfigEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneConfigEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n DatabaseEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneDatabaseEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n IamInstanceProfile = \"my--1p-dev-controlplane\",\n SubnetIds = new[]\n {\n \"subnet-00000000000000000\",\n },\n Version = versions.Apply(getAwsVersionsResult =\u003e getAwsVersionsResult.ValidVersions[0]),\n InstanceType = \"t3.medium\",\n MainVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneMainVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"GP3\",\n },\n ProxyConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneProxyConfigArgs\n {\n SecretArn = \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n SecretVersion = \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n RootVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneRootVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"GP3\",\n },\n SecurityGroupIds = new[]\n {\n \"sg-00000000000000000\",\n },\n SshConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneSshConfigArgs\n {\n Ec2KeyPair = \"my--1p-dev-ssh\",\n },\n Tags = \n {\n { \"owner\", \"my@service-account.com\" },\n },\n },\n Fleet = new Gcp.Container.Inputs.AwsClusterFleetArgs\n {\n Project = \"my-project-number\",\n },\n Location = \"us-west1\",\n Name = \"name\",\n Networking = new Gcp.Container.Inputs.AwsClusterNetworkingArgs\n {\n PodAddressCidrBlocks = new[]\n {\n \"10.2.0.0/16\",\n },\n ServiceAddressCidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n VpcId = \"vpc-00000000000000000\",\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Description = \"A sample aws cluster\",\n Project = \"my-project-name\",\n });\n\n var primaryAwsNodePool = new Gcp.Container.AwsNodePool(\"primary\", new()\n {\n Autoscaling = new Gcp.Container.Inputs.AwsNodePoolAutoscalingArgs\n {\n MaxNodeCount = 5,\n MinNodeCount = 1,\n },\n Cluster = primary.Name,\n Config = new Gcp.Container.Inputs.AwsNodePoolConfigArgs\n {\n ConfigEncryption = new Gcp.Container.Inputs.AwsNodePoolConfigConfigEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n IamInstanceProfile = \"my--1p-dev-nodepool\",\n InstanceType = \"t3.medium\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n RootVolume = new Gcp.Container.Inputs.AwsNodePoolConfigRootVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"GP3\",\n },\n SecurityGroupIds = new[]\n {\n \"sg-00000000000000000\",\n },\n ProxyConfig = new Gcp.Container.Inputs.AwsNodePoolConfigProxyConfigArgs\n {\n SecretArn = \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n SecretVersion = \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n SshConfig = new Gcp.Container.Inputs.AwsNodePoolConfigSshConfigArgs\n {\n Ec2KeyPair = \"my--1p-dev-ssh\",\n },\n Tags = \n {\n { \"tag-one\", \"value-one\" },\n },\n Taints = new[]\n {\n new Gcp.Container.Inputs.AwsNodePoolConfigTaintArgs\n {\n Effect = \"PREFER_NO_SCHEDULE\",\n Key = \"taint-key\",\n Value = \"taint-value\",\n },\n },\n },\n Location = \"us-west1\",\n MaxPodsConstraint = new Gcp.Container.Inputs.AwsNodePoolMaxPodsConstraintArgs\n {\n MaxPodsPerNode = 110,\n },\n Name = \"node-pool-name\",\n SubnetId = \"subnet-00000000000000000\",\n Version = versions.Apply(getAwsVersionsResult =\u003e getAwsVersionsResult.ValidVersions[0]),\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Management = new Gcp.Container.Inputs.AwsNodePoolManagementArgs\n {\n AutoRepair = true,\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tversions, err := container.GetAwsVersions(ctx, \u0026container.GetAwsVersionsArgs{\n\t\t\tProject: pulumi.StringRef(\"my-project-name\"),\n\t\t\tLocation: pulumi.StringRef(\"us-west1\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimary, err := container.NewAwsCluster(ctx, \"primary\", \u0026container.AwsClusterArgs{\n\t\t\tAuthorization: \u0026container.AwsClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: container.AwsClusterAuthorizationAdminUserArray{\n\t\t\t\t\t\u0026container.AwsClusterAuthorizationAdminUserArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"my@service-account.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAwsRegion: pulumi.String(\"my-aws-region\"),\n\t\t\tControlPlane: \u0026container.AwsClusterControlPlaneArgs{\n\t\t\t\tAwsServicesAuthentication: \u0026container.AwsClusterControlPlaneAwsServicesAuthenticationArgs{\n\t\t\t\t\tRoleArn: pulumi.String(\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\"),\n\t\t\t\t\tRoleSessionName: pulumi.String(\"my--1p-dev-session\"),\n\t\t\t\t},\n\t\t\t\tConfigEncryption: \u0026container.AwsClusterControlPlaneConfigEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tDatabaseEncryption: \u0026container.AwsClusterControlPlaneDatabaseEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tIamInstanceProfile: pulumi.String(\"my--1p-dev-controlplane\"),\n\t\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"subnet-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tVersion: pulumi.String(versions.ValidVersions[0]),\n\t\t\t\tInstanceType: pulumi.String(\"t3.medium\"),\n\t\t\t\tMainVolume: \u0026container.AwsClusterControlPlaneMainVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"GP3\"),\n\t\t\t\t},\n\t\t\t\tProxyConfig: \u0026container.AwsClusterControlPlaneProxyConfigArgs{\n\t\t\t\t\tSecretArn: pulumi.String(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\"),\n\t\t\t\t\tSecretVersion: pulumi.String(\"12345678-ABCD-EFGH-IJKL-987654321098\"),\n\t\t\t\t},\n\t\t\t\tRootVolume: \u0026container.AwsClusterControlPlaneRootVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"GP3\"),\n\t\t\t\t},\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"sg-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tSshConfig: \u0026container.AwsClusterControlPlaneSshConfigArgs{\n\t\t\t\t\tEc2KeyPair: pulumi.String(\"my--1p-dev-ssh\"),\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\t\"owner\": pulumi.String(\"my@service-account.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFleet: \u0026container.AwsClusterFleetArgs{\n\t\t\t\tProject: pulumi.String(\"my-project-number\"),\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"name\"),\n\t\t\tNetworking: \u0026container.AwsClusterNetworkingArgs{\n\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.2.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tVpcId: pulumi.String(\"vpc-00000000000000000\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"A sample aws cluster\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewAwsNodePool(ctx, \"primary\", \u0026container.AwsNodePoolArgs{\n\t\t\tAutoscaling: \u0026container.AwsNodePoolAutoscalingArgs{\n\t\t\t\tMaxNodeCount: pulumi.Int(5),\n\t\t\t\tMinNodeCount: pulumi.Int(1),\n\t\t\t},\n\t\t\tCluster: primary.Name,\n\t\t\tConfig: \u0026container.AwsNodePoolConfigArgs{\n\t\t\t\tConfigEncryption: \u0026container.AwsNodePoolConfigConfigEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tIamInstanceProfile: pulumi.String(\"my--1p-dev-nodepool\"),\n\t\t\t\tInstanceType: pulumi.String(\"t3.medium\"),\n\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t\t},\n\t\t\t\tRootVolume: \u0026container.AwsNodePoolConfigRootVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"GP3\"),\n\t\t\t\t},\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"sg-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tProxyConfig: \u0026container.AwsNodePoolConfigProxyConfigArgs{\n\t\t\t\t\tSecretArn: pulumi.String(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\"),\n\t\t\t\t\tSecretVersion: pulumi.String(\"12345678-ABCD-EFGH-IJKL-987654321098\"),\n\t\t\t\t},\n\t\t\t\tSshConfig: \u0026container.AwsNodePoolConfigSshConfigArgs{\n\t\t\t\t\tEc2KeyPair: pulumi.String(\"my--1p-dev-ssh\"),\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\t\"tag-one\": pulumi.String(\"value-one\"),\n\t\t\t\t},\n\t\t\t\tTaints: container.AwsNodePoolConfigTaintArray{\n\t\t\t\t\t\u0026container.AwsNodePoolConfigTaintArgs{\n\t\t\t\t\t\tEffect: pulumi.String(\"PREFER_NO_SCHEDULE\"),\n\t\t\t\t\t\tKey: pulumi.String(\"taint-key\"),\n\t\t\t\t\t\tValue: pulumi.String(\"taint-value\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tMaxPodsConstraint: \u0026container.AwsNodePoolMaxPodsConstraintArgs{\n\t\t\t\tMaxPodsPerNode: pulumi.Int(110),\n\t\t\t},\n\t\t\tName: pulumi.String(\"node-pool-name\"),\n\t\t\tSubnetId: pulumi.String(\"subnet-00000000000000000\"),\n\t\t\tVersion: pulumi.String(versions.ValidVersions[0]),\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tManagement: \u0026container.AwsNodePoolManagementArgs{\n\t\t\t\tAutoRepair: pulumi.Bool(true),\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.container.ContainerFunctions;\nimport com.pulumi.gcp.container.inputs.GetAwsVersionsArgs;\nimport com.pulumi.gcp.container.AwsCluster;\nimport com.pulumi.gcp.container.AwsClusterArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterAuthorizationArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneConfigEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneDatabaseEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneMainVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneProxyConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneRootVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneSshConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterFleetArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterNetworkingArgs;\nimport com.pulumi.gcp.container.AwsNodePool;\nimport com.pulumi.gcp.container.AwsNodePoolArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolAutoscalingArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigConfigEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigRootVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigProxyConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigSshConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolMaxPodsConstraintArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolManagementArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var versions = ContainerFunctions.getAwsVersions(GetAwsVersionsArgs.builder()\n .project(\"my-project-name\")\n .location(\"us-west1\")\n .build());\n\n var primary = new AwsCluster(\"primary\", AwsClusterArgs.builder()\n .authorization(AwsClusterAuthorizationArgs.builder()\n .adminUsers(AwsClusterAuthorizationAdminUserArgs.builder()\n .username(\"my@service-account.com\")\n .build())\n .build())\n .awsRegion(\"my-aws-region\")\n .controlPlane(AwsClusterControlPlaneArgs.builder()\n .awsServicesAuthentication(AwsClusterControlPlaneAwsServicesAuthenticationArgs.builder()\n .roleArn(\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\")\n .roleSessionName(\"my--1p-dev-session\")\n .build())\n .configEncryption(AwsClusterControlPlaneConfigEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .databaseEncryption(AwsClusterControlPlaneDatabaseEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .iamInstanceProfile(\"my--1p-dev-controlplane\")\n .subnetIds(\"subnet-00000000000000000\")\n .version(versions.applyValue(getAwsVersionsResult -\u003e getAwsVersionsResult.validVersions()[0]))\n .instanceType(\"t3.medium\")\n .mainVolume(AwsClusterControlPlaneMainVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"GP3\")\n .build())\n .proxyConfig(AwsClusterControlPlaneProxyConfigArgs.builder()\n .secretArn(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\")\n .secretVersion(\"12345678-ABCD-EFGH-IJKL-987654321098\")\n .build())\n .rootVolume(AwsClusterControlPlaneRootVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"GP3\")\n .build())\n .securityGroupIds(\"sg-00000000000000000\")\n .sshConfig(AwsClusterControlPlaneSshConfigArgs.builder()\n .ec2KeyPair(\"my--1p-dev-ssh\")\n .build())\n .tags(Map.of(\"owner\", \"my@service-account.com\"))\n .build())\n .fleet(AwsClusterFleetArgs.builder()\n .project(\"my-project-number\")\n .build())\n .location(\"us-west1\")\n .name(\"name\")\n .networking(AwsClusterNetworkingArgs.builder()\n .podAddressCidrBlocks(\"10.2.0.0/16\")\n .serviceAddressCidrBlocks(\"10.1.0.0/16\")\n .vpcId(\"vpc-00000000000000000\")\n .build())\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .description(\"A sample aws cluster\")\n .project(\"my-project-name\")\n .build());\n\n var primaryAwsNodePool = new AwsNodePool(\"primaryAwsNodePool\", AwsNodePoolArgs.builder()\n .autoscaling(AwsNodePoolAutoscalingArgs.builder()\n .maxNodeCount(5)\n .minNodeCount(1)\n .build())\n .cluster(primary.name())\n .config(AwsNodePoolConfigArgs.builder()\n .configEncryption(AwsNodePoolConfigConfigEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .iamInstanceProfile(\"my--1p-dev-nodepool\")\n .instanceType(\"t3.medium\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .rootVolume(AwsNodePoolConfigRootVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"GP3\")\n .build())\n .securityGroupIds(\"sg-00000000000000000\")\n .proxyConfig(AwsNodePoolConfigProxyConfigArgs.builder()\n .secretArn(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\")\n .secretVersion(\"12345678-ABCD-EFGH-IJKL-987654321098\")\n .build())\n .sshConfig(AwsNodePoolConfigSshConfigArgs.builder()\n .ec2KeyPair(\"my--1p-dev-ssh\")\n .build())\n .tags(Map.of(\"tag-one\", \"value-one\"))\n .taints(AwsNodePoolConfigTaintArgs.builder()\n .effect(\"PREFER_NO_SCHEDULE\")\n .key(\"taint-key\")\n .value(\"taint-value\")\n .build())\n .build())\n .location(\"us-west1\")\n .maxPodsConstraint(AwsNodePoolMaxPodsConstraintArgs.builder()\n .maxPodsPerNode(110)\n .build())\n .name(\"node-pool-name\")\n .subnetId(\"subnet-00000000000000000\")\n .version(versions.applyValue(getAwsVersionsResult -\u003e getAwsVersionsResult.validVersions()[0]))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .management(AwsNodePoolManagementArgs.builder()\n .autoRepair(true)\n .build())\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:AwsCluster\n properties:\n authorization:\n adminUsers:\n - username: my@service-account.com\n awsRegion: my-aws-region\n controlPlane:\n awsServicesAuthentication:\n roleArn: arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\n roleSessionName: my--1p-dev-session\n configEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n databaseEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n iamInstanceProfile: my--1p-dev-controlplane\n subnetIds:\n - subnet-00000000000000000\n version: ${versions.validVersions[0]}\n instanceType: t3.medium\n mainVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: GP3\n proxyConfig:\n secretArn: arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\n secretVersion: 12345678-ABCD-EFGH-IJKL-987654321098\n rootVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: GP3\n securityGroupIds:\n - sg-00000000000000000\n sshConfig:\n ec2KeyPair: my--1p-dev-ssh\n tags:\n owner: my@service-account.com\n fleet:\n project: my-project-number\n location: us-west1\n name: name\n networking:\n podAddressCidrBlocks:\n - 10.2.0.0/16\n serviceAddressCidrBlocks:\n - 10.1.0.0/16\n vpcId: vpc-00000000000000000\n annotations:\n label-one: value-one\n description: A sample aws cluster\n project: my-project-name\n primaryAwsNodePool:\n type: gcp:container:AwsNodePool\n name: primary\n properties:\n autoscaling:\n maxNodeCount: 5\n minNodeCount: 1\n cluster: ${primary.name}\n config:\n configEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n iamInstanceProfile: my--1p-dev-nodepool\n instanceType: t3.medium\n labels:\n label-one: value-one\n rootVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: GP3\n securityGroupIds:\n - sg-00000000000000000\n proxyConfig:\n secretArn: arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\n secretVersion: 12345678-ABCD-EFGH-IJKL-987654321098\n sshConfig:\n ec2KeyPair: my--1p-dev-ssh\n tags:\n tag-one: value-one\n taints:\n - effect: PREFER_NO_SCHEDULE\n key: taint-key\n value: taint-value\n location: us-west1\n maxPodsConstraint:\n maxPodsPerNode: 110\n name: node-pool-name\n subnetId: subnet-00000000000000000\n version: ${versions.validVersions[0]}\n annotations:\n label-one: value-one\n management:\n autoRepair: true\n project: my-project-name\nvariables:\n versions:\n fn::invoke:\n Function: gcp:container:getAwsVersions\n Arguments:\n project: my-project-name\n location: us-west1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Basic_enum_aws_cluster\nA basic example of a containeraws node pool with lowercase enums\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst versions = gcp.container.getAwsVersions({\n project: \"my-project-name\",\n location: \"us-west1\",\n});\nconst primary = new gcp.container.AwsCluster(\"primary\", {\n authorization: {\n adminUsers: [{\n username: \"my@service-account.com\",\n }],\n },\n awsRegion: \"my-aws-region\",\n controlPlane: {\n awsServicesAuthentication: {\n roleArn: \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n roleSessionName: \"my--1p-dev-session\",\n },\n configEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n databaseEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n iamInstanceProfile: \"my--1p-dev-controlplane\",\n subnetIds: [\"subnet-00000000000000000\"],\n version: versions.then(versions =\u003e versions.validVersions?.[0]),\n instanceType: \"t3.medium\",\n mainVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"GP3\",\n },\n proxyConfig: {\n secretArn: \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secretVersion: \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n rootVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"GP3\",\n },\n securityGroupIds: [\"sg-00000000000000000\"],\n sshConfig: {\n ec2KeyPair: \"my--1p-dev-ssh\",\n },\n tags: {\n owner: \"my@service-account.com\",\n },\n },\n fleet: {\n project: \"my-project-number\",\n },\n location: \"us-west1\",\n name: \"name\",\n networking: {\n podAddressCidrBlocks: [\"10.2.0.0/16\"],\n serviceAddressCidrBlocks: [\"10.1.0.0/16\"],\n vpcId: \"vpc-00000000000000000\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n description: \"A sample aws cluster\",\n project: \"my-project-name\",\n});\nconst primaryAwsNodePool = new gcp.container.AwsNodePool(\"primary\", {\n autoscaling: {\n maxNodeCount: 5,\n minNodeCount: 1,\n },\n cluster: primary.name,\n config: {\n configEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n iamInstanceProfile: \"my--1p-dev-nodepool\",\n instanceType: \"t3.medium\",\n labels: {\n \"label-one\": \"value-one\",\n },\n rootVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"gp3\",\n },\n securityGroupIds: [\"sg-00000000000000000\"],\n proxyConfig: {\n secretArn: \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secretVersion: \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n sshConfig: {\n ec2KeyPair: \"my--1p-dev-ssh\",\n },\n tags: {\n \"tag-one\": \"value-one\",\n },\n taints: [{\n effect: \"prefer_no_schedule\",\n key: \"taint-key\",\n value: \"taint-value\",\n }],\n },\n location: \"us-west1\",\n maxPodsConstraint: {\n maxPodsPerNode: 110,\n },\n name: \"node-pool-name\",\n subnetId: \"subnet-00000000000000000\",\n version: versions.then(versions =\u003e versions.validVersions?.[0]),\n annotations: {\n \"label-one\": \"value-one\",\n },\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nversions = gcp.container.get_aws_versions(project=\"my-project-name\",\n location=\"us-west1\")\nprimary = gcp.container.AwsCluster(\"primary\",\n authorization={\n \"admin_users\": [{\n \"username\": \"my@service-account.com\",\n }],\n },\n aws_region=\"my-aws-region\",\n control_plane={\n \"aws_services_authentication\": {\n \"role_arn\": \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n \"role_session_name\": \"my--1p-dev-session\",\n },\n \"config_encryption\": {\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n \"database_encryption\": {\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n \"iam_instance_profile\": \"my--1p-dev-controlplane\",\n \"subnet_ids\": [\"subnet-00000000000000000\"],\n \"version\": versions.valid_versions[0],\n \"instance_type\": \"t3.medium\",\n \"main_volume\": {\n \"iops\": 3000,\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n \"size_gib\": 10,\n \"volume_type\": \"GP3\",\n },\n \"proxy_config\": {\n \"secret_arn\": \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n \"secret_version\": \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n \"root_volume\": {\n \"iops\": 3000,\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n \"size_gib\": 10,\n \"volume_type\": \"GP3\",\n },\n \"security_group_ids\": [\"sg-00000000000000000\"],\n \"ssh_config\": {\n \"ec2_key_pair\": \"my--1p-dev-ssh\",\n },\n \"tags\": {\n \"owner\": \"my@service-account.com\",\n },\n },\n fleet={\n \"project\": \"my-project-number\",\n },\n location=\"us-west1\",\n name=\"name\",\n networking={\n \"pod_address_cidr_blocks\": [\"10.2.0.0/16\"],\n \"service_address_cidr_blocks\": [\"10.1.0.0/16\"],\n \"vpc_id\": \"vpc-00000000000000000\",\n },\n annotations={\n \"label-one\": \"value-one\",\n },\n description=\"A sample aws cluster\",\n project=\"my-project-name\")\nprimary_aws_node_pool = gcp.container.AwsNodePool(\"primary\",\n autoscaling={\n \"max_node_count\": 5,\n \"min_node_count\": 1,\n },\n cluster=primary.name,\n config={\n \"config_encryption\": {\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n \"iam_instance_profile\": \"my--1p-dev-nodepool\",\n \"instance_type\": \"t3.medium\",\n \"labels\": {\n \"label-one\": \"value-one\",\n },\n \"root_volume\": {\n \"iops\": 3000,\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n \"size_gib\": 10,\n \"volume_type\": \"gp3\",\n },\n \"security_group_ids\": [\"sg-00000000000000000\"],\n \"proxy_config\": {\n \"secret_arn\": \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n \"secret_version\": \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n \"ssh_config\": {\n \"ec2_key_pair\": \"my--1p-dev-ssh\",\n },\n \"tags\": {\n \"tag-one\": \"value-one\",\n },\n \"taints\": [{\n \"effect\": \"prefer_no_schedule\",\n \"key\": \"taint-key\",\n \"value\": \"taint-value\",\n }],\n },\n location=\"us-west1\",\n max_pods_constraint={\n \"max_pods_per_node\": 110,\n },\n name=\"node-pool-name\",\n subnet_id=\"subnet-00000000000000000\",\n version=versions.valid_versions[0],\n annotations={\n \"label-one\": \"value-one\",\n },\n project=\"my-project-name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var versions = Gcp.Container.GetAwsVersions.Invoke(new()\n {\n Project = \"my-project-name\",\n Location = \"us-west1\",\n });\n\n var primary = new Gcp.Container.AwsCluster(\"primary\", new()\n {\n Authorization = new Gcp.Container.Inputs.AwsClusterAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.Container.Inputs.AwsClusterAuthorizationAdminUserArgs\n {\n Username = \"my@service-account.com\",\n },\n },\n },\n AwsRegion = \"my-aws-region\",\n ControlPlane = new Gcp.Container.Inputs.AwsClusterControlPlaneArgs\n {\n AwsServicesAuthentication = new Gcp.Container.Inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs\n {\n RoleArn = \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n RoleSessionName = \"my--1p-dev-session\",\n },\n ConfigEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneConfigEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n DatabaseEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneDatabaseEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n IamInstanceProfile = \"my--1p-dev-controlplane\",\n SubnetIds = new[]\n {\n \"subnet-00000000000000000\",\n },\n Version = versions.Apply(getAwsVersionsResult =\u003e getAwsVersionsResult.ValidVersions[0]),\n InstanceType = \"t3.medium\",\n MainVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneMainVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"GP3\",\n },\n ProxyConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneProxyConfigArgs\n {\n SecretArn = \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n SecretVersion = \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n RootVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneRootVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"GP3\",\n },\n SecurityGroupIds = new[]\n {\n \"sg-00000000000000000\",\n },\n SshConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneSshConfigArgs\n {\n Ec2KeyPair = \"my--1p-dev-ssh\",\n },\n Tags = \n {\n { \"owner\", \"my@service-account.com\" },\n },\n },\n Fleet = new Gcp.Container.Inputs.AwsClusterFleetArgs\n {\n Project = \"my-project-number\",\n },\n Location = \"us-west1\",\n Name = \"name\",\n Networking = new Gcp.Container.Inputs.AwsClusterNetworkingArgs\n {\n PodAddressCidrBlocks = new[]\n {\n \"10.2.0.0/16\",\n },\n ServiceAddressCidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n VpcId = \"vpc-00000000000000000\",\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Description = \"A sample aws cluster\",\n Project = \"my-project-name\",\n });\n\n var primaryAwsNodePool = new Gcp.Container.AwsNodePool(\"primary\", new()\n {\n Autoscaling = new Gcp.Container.Inputs.AwsNodePoolAutoscalingArgs\n {\n MaxNodeCount = 5,\n MinNodeCount = 1,\n },\n Cluster = primary.Name,\n Config = new Gcp.Container.Inputs.AwsNodePoolConfigArgs\n {\n ConfigEncryption = new Gcp.Container.Inputs.AwsNodePoolConfigConfigEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n IamInstanceProfile = \"my--1p-dev-nodepool\",\n InstanceType = \"t3.medium\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n RootVolume = new Gcp.Container.Inputs.AwsNodePoolConfigRootVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"gp3\",\n },\n SecurityGroupIds = new[]\n {\n \"sg-00000000000000000\",\n },\n ProxyConfig = new Gcp.Container.Inputs.AwsNodePoolConfigProxyConfigArgs\n {\n SecretArn = \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n SecretVersion = \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n SshConfig = new Gcp.Container.Inputs.AwsNodePoolConfigSshConfigArgs\n {\n Ec2KeyPair = \"my--1p-dev-ssh\",\n },\n Tags = \n {\n { \"tag-one\", \"value-one\" },\n },\n Taints = new[]\n {\n new Gcp.Container.Inputs.AwsNodePoolConfigTaintArgs\n {\n Effect = \"prefer_no_schedule\",\n Key = \"taint-key\",\n Value = \"taint-value\",\n },\n },\n },\n Location = \"us-west1\",\n MaxPodsConstraint = new Gcp.Container.Inputs.AwsNodePoolMaxPodsConstraintArgs\n {\n MaxPodsPerNode = 110,\n },\n Name = \"node-pool-name\",\n SubnetId = \"subnet-00000000000000000\",\n Version = versions.Apply(getAwsVersionsResult =\u003e getAwsVersionsResult.ValidVersions[0]),\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tversions, err := container.GetAwsVersions(ctx, \u0026container.GetAwsVersionsArgs{\n\t\t\tProject: pulumi.StringRef(\"my-project-name\"),\n\t\t\tLocation: pulumi.StringRef(\"us-west1\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimary, err := container.NewAwsCluster(ctx, \"primary\", \u0026container.AwsClusterArgs{\n\t\t\tAuthorization: \u0026container.AwsClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: container.AwsClusterAuthorizationAdminUserArray{\n\t\t\t\t\t\u0026container.AwsClusterAuthorizationAdminUserArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"my@service-account.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAwsRegion: pulumi.String(\"my-aws-region\"),\n\t\t\tControlPlane: \u0026container.AwsClusterControlPlaneArgs{\n\t\t\t\tAwsServicesAuthentication: \u0026container.AwsClusterControlPlaneAwsServicesAuthenticationArgs{\n\t\t\t\t\tRoleArn: pulumi.String(\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\"),\n\t\t\t\t\tRoleSessionName: pulumi.String(\"my--1p-dev-session\"),\n\t\t\t\t},\n\t\t\t\tConfigEncryption: \u0026container.AwsClusterControlPlaneConfigEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tDatabaseEncryption: \u0026container.AwsClusterControlPlaneDatabaseEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tIamInstanceProfile: pulumi.String(\"my--1p-dev-controlplane\"),\n\t\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"subnet-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tVersion: pulumi.String(versions.ValidVersions[0]),\n\t\t\t\tInstanceType: pulumi.String(\"t3.medium\"),\n\t\t\t\tMainVolume: \u0026container.AwsClusterControlPlaneMainVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"GP3\"),\n\t\t\t\t},\n\t\t\t\tProxyConfig: \u0026container.AwsClusterControlPlaneProxyConfigArgs{\n\t\t\t\t\tSecretArn: pulumi.String(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\"),\n\t\t\t\t\tSecretVersion: pulumi.String(\"12345678-ABCD-EFGH-IJKL-987654321098\"),\n\t\t\t\t},\n\t\t\t\tRootVolume: \u0026container.AwsClusterControlPlaneRootVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"GP3\"),\n\t\t\t\t},\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"sg-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tSshConfig: \u0026container.AwsClusterControlPlaneSshConfigArgs{\n\t\t\t\t\tEc2KeyPair: pulumi.String(\"my--1p-dev-ssh\"),\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\t\"owner\": pulumi.String(\"my@service-account.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFleet: \u0026container.AwsClusterFleetArgs{\n\t\t\t\tProject: pulumi.String(\"my-project-number\"),\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"name\"),\n\t\t\tNetworking: \u0026container.AwsClusterNetworkingArgs{\n\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.2.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tVpcId: pulumi.String(\"vpc-00000000000000000\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"A sample aws cluster\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewAwsNodePool(ctx, \"primary\", \u0026container.AwsNodePoolArgs{\n\t\t\tAutoscaling: \u0026container.AwsNodePoolAutoscalingArgs{\n\t\t\t\tMaxNodeCount: pulumi.Int(5),\n\t\t\t\tMinNodeCount: pulumi.Int(1),\n\t\t\t},\n\t\t\tCluster: primary.Name,\n\t\t\tConfig: \u0026container.AwsNodePoolConfigArgs{\n\t\t\t\tConfigEncryption: \u0026container.AwsNodePoolConfigConfigEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tIamInstanceProfile: pulumi.String(\"my--1p-dev-nodepool\"),\n\t\t\t\tInstanceType: pulumi.String(\"t3.medium\"),\n\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t\t},\n\t\t\t\tRootVolume: \u0026container.AwsNodePoolConfigRootVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"gp3\"),\n\t\t\t\t},\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"sg-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tProxyConfig: \u0026container.AwsNodePoolConfigProxyConfigArgs{\n\t\t\t\t\tSecretArn: pulumi.String(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\"),\n\t\t\t\t\tSecretVersion: pulumi.String(\"12345678-ABCD-EFGH-IJKL-987654321098\"),\n\t\t\t\t},\n\t\t\t\tSshConfig: \u0026container.AwsNodePoolConfigSshConfigArgs{\n\t\t\t\t\tEc2KeyPair: pulumi.String(\"my--1p-dev-ssh\"),\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\t\"tag-one\": pulumi.String(\"value-one\"),\n\t\t\t\t},\n\t\t\t\tTaints: container.AwsNodePoolConfigTaintArray{\n\t\t\t\t\t\u0026container.AwsNodePoolConfigTaintArgs{\n\t\t\t\t\t\tEffect: pulumi.String(\"prefer_no_schedule\"),\n\t\t\t\t\t\tKey: pulumi.String(\"taint-key\"),\n\t\t\t\t\t\tValue: pulumi.String(\"taint-value\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tMaxPodsConstraint: \u0026container.AwsNodePoolMaxPodsConstraintArgs{\n\t\t\t\tMaxPodsPerNode: pulumi.Int(110),\n\t\t\t},\n\t\t\tName: pulumi.String(\"node-pool-name\"),\n\t\t\tSubnetId: pulumi.String(\"subnet-00000000000000000\"),\n\t\t\tVersion: pulumi.String(versions.ValidVersions[0]),\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.container.ContainerFunctions;\nimport com.pulumi.gcp.container.inputs.GetAwsVersionsArgs;\nimport com.pulumi.gcp.container.AwsCluster;\nimport com.pulumi.gcp.container.AwsClusterArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterAuthorizationArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneConfigEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneDatabaseEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneMainVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneProxyConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneRootVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneSshConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterFleetArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterNetworkingArgs;\nimport com.pulumi.gcp.container.AwsNodePool;\nimport com.pulumi.gcp.container.AwsNodePoolArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolAutoscalingArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigConfigEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigRootVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigProxyConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigSshConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolMaxPodsConstraintArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var versions = ContainerFunctions.getAwsVersions(GetAwsVersionsArgs.builder()\n .project(\"my-project-name\")\n .location(\"us-west1\")\n .build());\n\n var primary = new AwsCluster(\"primary\", AwsClusterArgs.builder()\n .authorization(AwsClusterAuthorizationArgs.builder()\n .adminUsers(AwsClusterAuthorizationAdminUserArgs.builder()\n .username(\"my@service-account.com\")\n .build())\n .build())\n .awsRegion(\"my-aws-region\")\n .controlPlane(AwsClusterControlPlaneArgs.builder()\n .awsServicesAuthentication(AwsClusterControlPlaneAwsServicesAuthenticationArgs.builder()\n .roleArn(\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\")\n .roleSessionName(\"my--1p-dev-session\")\n .build())\n .configEncryption(AwsClusterControlPlaneConfigEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .databaseEncryption(AwsClusterControlPlaneDatabaseEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .iamInstanceProfile(\"my--1p-dev-controlplane\")\n .subnetIds(\"subnet-00000000000000000\")\n .version(versions.applyValue(getAwsVersionsResult -\u003e getAwsVersionsResult.validVersions()[0]))\n .instanceType(\"t3.medium\")\n .mainVolume(AwsClusterControlPlaneMainVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"GP3\")\n .build())\n .proxyConfig(AwsClusterControlPlaneProxyConfigArgs.builder()\n .secretArn(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\")\n .secretVersion(\"12345678-ABCD-EFGH-IJKL-987654321098\")\n .build())\n .rootVolume(AwsClusterControlPlaneRootVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"GP3\")\n .build())\n .securityGroupIds(\"sg-00000000000000000\")\n .sshConfig(AwsClusterControlPlaneSshConfigArgs.builder()\n .ec2KeyPair(\"my--1p-dev-ssh\")\n .build())\n .tags(Map.of(\"owner\", \"my@service-account.com\"))\n .build())\n .fleet(AwsClusterFleetArgs.builder()\n .project(\"my-project-number\")\n .build())\n .location(\"us-west1\")\n .name(\"name\")\n .networking(AwsClusterNetworkingArgs.builder()\n .podAddressCidrBlocks(\"10.2.0.0/16\")\n .serviceAddressCidrBlocks(\"10.1.0.0/16\")\n .vpcId(\"vpc-00000000000000000\")\n .build())\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .description(\"A sample aws cluster\")\n .project(\"my-project-name\")\n .build());\n\n var primaryAwsNodePool = new AwsNodePool(\"primaryAwsNodePool\", AwsNodePoolArgs.builder()\n .autoscaling(AwsNodePoolAutoscalingArgs.builder()\n .maxNodeCount(5)\n .minNodeCount(1)\n .build())\n .cluster(primary.name())\n .config(AwsNodePoolConfigArgs.builder()\n .configEncryption(AwsNodePoolConfigConfigEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .iamInstanceProfile(\"my--1p-dev-nodepool\")\n .instanceType(\"t3.medium\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .rootVolume(AwsNodePoolConfigRootVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"gp3\")\n .build())\n .securityGroupIds(\"sg-00000000000000000\")\n .proxyConfig(AwsNodePoolConfigProxyConfigArgs.builder()\n .secretArn(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\")\n .secretVersion(\"12345678-ABCD-EFGH-IJKL-987654321098\")\n .build())\n .sshConfig(AwsNodePoolConfigSshConfigArgs.builder()\n .ec2KeyPair(\"my--1p-dev-ssh\")\n .build())\n .tags(Map.of(\"tag-one\", \"value-one\"))\n .taints(AwsNodePoolConfigTaintArgs.builder()\n .effect(\"prefer_no_schedule\")\n .key(\"taint-key\")\n .value(\"taint-value\")\n .build())\n .build())\n .location(\"us-west1\")\n .maxPodsConstraint(AwsNodePoolMaxPodsConstraintArgs.builder()\n .maxPodsPerNode(110)\n .build())\n .name(\"node-pool-name\")\n .subnetId(\"subnet-00000000000000000\")\n .version(versions.applyValue(getAwsVersionsResult -\u003e getAwsVersionsResult.validVersions()[0]))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:AwsCluster\n properties:\n authorization:\n adminUsers:\n - username: my@service-account.com\n awsRegion: my-aws-region\n controlPlane:\n awsServicesAuthentication:\n roleArn: arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\n roleSessionName: my--1p-dev-session\n configEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n databaseEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n iamInstanceProfile: my--1p-dev-controlplane\n subnetIds:\n - subnet-00000000000000000\n version: ${versions.validVersions[0]}\n instanceType: t3.medium\n mainVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: GP3\n proxyConfig:\n secretArn: arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\n secretVersion: 12345678-ABCD-EFGH-IJKL-987654321098\n rootVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: GP3\n securityGroupIds:\n - sg-00000000000000000\n sshConfig:\n ec2KeyPair: my--1p-dev-ssh\n tags:\n owner: my@service-account.com\n fleet:\n project: my-project-number\n location: us-west1\n name: name\n networking:\n podAddressCidrBlocks:\n - 10.2.0.0/16\n serviceAddressCidrBlocks:\n - 10.1.0.0/16\n vpcId: vpc-00000000000000000\n annotations:\n label-one: value-one\n description: A sample aws cluster\n project: my-project-name\n primaryAwsNodePool:\n type: gcp:container:AwsNodePool\n name: primary\n properties:\n autoscaling:\n maxNodeCount: 5\n minNodeCount: 1\n cluster: ${primary.name}\n config:\n configEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n iamInstanceProfile: my--1p-dev-nodepool\n instanceType: t3.medium\n labels:\n label-one: value-one\n rootVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: gp3\n securityGroupIds:\n - sg-00000000000000000\n proxyConfig:\n secretArn: arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\n secretVersion: 12345678-ABCD-EFGH-IJKL-987654321098\n sshConfig:\n ec2KeyPair: my--1p-dev-ssh\n tags:\n tag-one: value-one\n taints:\n - effect: prefer_no_schedule\n key: taint-key\n value: taint-value\n location: us-west1\n maxPodsConstraint:\n maxPodsPerNode: 110\n name: node-pool-name\n subnetId: subnet-00000000000000000\n version: ${versions.validVersions[0]}\n annotations:\n label-one: value-one\n project: my-project-name\nvariables:\n versions:\n fn::invoke:\n Function: gcp:container:getAwsVersions\n Arguments:\n project: my-project-name\n location: us-west1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Beta_basic_enum_aws_cluster\nA basic example of a containeraws node pool with lowercase enums (beta)\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst versions = gcp.container.getAwsVersions({\n project: \"my-project-name\",\n location: \"us-west1\",\n});\nconst primary = new gcp.container.AwsCluster(\"primary\", {\n authorization: {\n adminUsers: [{\n username: \"my@service-account.com\",\n }],\n },\n awsRegion: \"my-aws-region\",\n controlPlane: {\n awsServicesAuthentication: {\n roleArn: \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n roleSessionName: \"my--1p-dev-session\",\n },\n configEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n databaseEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n iamInstanceProfile: \"my--1p-dev-controlplane\",\n subnetIds: [\"subnet-00000000000000000\"],\n version: versions.then(versions =\u003e versions.validVersions?.[0]),\n instanceType: \"t3.medium\",\n mainVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"GP3\",\n },\n proxyConfig: {\n secretArn: \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secretVersion: \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n rootVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"GP3\",\n },\n securityGroupIds: [\"sg-00000000000000000\"],\n sshConfig: {\n ec2KeyPair: \"my--1p-dev-ssh\",\n },\n tags: {\n owner: \"my@service-account.com\",\n },\n },\n fleet: {\n project: \"my-project-number\",\n },\n location: \"us-west1\",\n name: \"name\",\n networking: {\n podAddressCidrBlocks: [\"10.2.0.0/16\"],\n serviceAddressCidrBlocks: [\"10.1.0.0/16\"],\n vpcId: \"vpc-00000000000000000\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n description: \"A sample aws cluster\",\n project: \"my-project-name\",\n});\nconst primaryAwsNodePool = new gcp.container.AwsNodePool(\"primary\", {\n autoscaling: {\n maxNodeCount: 5,\n minNodeCount: 1,\n },\n cluster: primary.name,\n config: {\n configEncryption: {\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n iamInstanceProfile: \"my--1p-dev-nodepool\",\n instanceType: \"t3.medium\",\n labels: {\n \"label-one\": \"value-one\",\n },\n rootVolume: {\n iops: 3000,\n kmsKeyArn: \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n sizeGib: 10,\n volumeType: \"gp3\",\n },\n securityGroupIds: [\"sg-00000000000000000\"],\n proxyConfig: {\n secretArn: \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n secretVersion: \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n sshConfig: {\n ec2KeyPair: \"my--1p-dev-ssh\",\n },\n tags: {\n \"tag-one\": \"value-one\",\n },\n taints: [{\n effect: \"prefer_no_schedule\",\n key: \"taint-key\",\n value: \"taint-value\",\n }],\n instancePlacement: {\n tenancy: \"dedicated\",\n },\n imageType: \"ubuntu\",\n },\n location: \"us-west1\",\n maxPodsConstraint: {\n maxPodsPerNode: 110,\n },\n name: \"node-pool-name\",\n subnetId: \"subnet-00000000000000000\",\n version: versions.then(versions =\u003e versions.validVersions?.[0]),\n annotations: {\n \"label-one\": \"value-one\",\n },\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nversions = gcp.container.get_aws_versions(project=\"my-project-name\",\n location=\"us-west1\")\nprimary = gcp.container.AwsCluster(\"primary\",\n authorization={\n \"admin_users\": [{\n \"username\": \"my@service-account.com\",\n }],\n },\n aws_region=\"my-aws-region\",\n control_plane={\n \"aws_services_authentication\": {\n \"role_arn\": \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n \"role_session_name\": \"my--1p-dev-session\",\n },\n \"config_encryption\": {\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n \"database_encryption\": {\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n \"iam_instance_profile\": \"my--1p-dev-controlplane\",\n \"subnet_ids\": [\"subnet-00000000000000000\"],\n \"version\": versions.valid_versions[0],\n \"instance_type\": \"t3.medium\",\n \"main_volume\": {\n \"iops\": 3000,\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n \"size_gib\": 10,\n \"volume_type\": \"GP3\",\n },\n \"proxy_config\": {\n \"secret_arn\": \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n \"secret_version\": \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n \"root_volume\": {\n \"iops\": 3000,\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n \"size_gib\": 10,\n \"volume_type\": \"GP3\",\n },\n \"security_group_ids\": [\"sg-00000000000000000\"],\n \"ssh_config\": {\n \"ec2_key_pair\": \"my--1p-dev-ssh\",\n },\n \"tags\": {\n \"owner\": \"my@service-account.com\",\n },\n },\n fleet={\n \"project\": \"my-project-number\",\n },\n location=\"us-west1\",\n name=\"name\",\n networking={\n \"pod_address_cidr_blocks\": [\"10.2.0.0/16\"],\n \"service_address_cidr_blocks\": [\"10.1.0.0/16\"],\n \"vpc_id\": \"vpc-00000000000000000\",\n },\n annotations={\n \"label-one\": \"value-one\",\n },\n description=\"A sample aws cluster\",\n project=\"my-project-name\")\nprimary_aws_node_pool = gcp.container.AwsNodePool(\"primary\",\n autoscaling={\n \"max_node_count\": 5,\n \"min_node_count\": 1,\n },\n cluster=primary.name,\n config={\n \"config_encryption\": {\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n \"iam_instance_profile\": \"my--1p-dev-nodepool\",\n \"instance_type\": \"t3.medium\",\n \"labels\": {\n \"label-one\": \"value-one\",\n },\n \"root_volume\": {\n \"iops\": 3000,\n \"kms_key_arn\": \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n \"size_gib\": 10,\n \"volume_type\": \"gp3\",\n },\n \"security_group_ids\": [\"sg-00000000000000000\"],\n \"proxy_config\": {\n \"secret_arn\": \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n \"secret_version\": \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n \"ssh_config\": {\n \"ec2_key_pair\": \"my--1p-dev-ssh\",\n },\n \"tags\": {\n \"tag-one\": \"value-one\",\n },\n \"taints\": [{\n \"effect\": \"prefer_no_schedule\",\n \"key\": \"taint-key\",\n \"value\": \"taint-value\",\n }],\n \"instance_placement\": {\n \"tenancy\": \"dedicated\",\n },\n \"image_type\": \"ubuntu\",\n },\n location=\"us-west1\",\n max_pods_constraint={\n \"max_pods_per_node\": 110,\n },\n name=\"node-pool-name\",\n subnet_id=\"subnet-00000000000000000\",\n version=versions.valid_versions[0],\n annotations={\n \"label-one\": \"value-one\",\n },\n project=\"my-project-name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var versions = Gcp.Container.GetAwsVersions.Invoke(new()\n {\n Project = \"my-project-name\",\n Location = \"us-west1\",\n });\n\n var primary = new Gcp.Container.AwsCluster(\"primary\", new()\n {\n Authorization = new Gcp.Container.Inputs.AwsClusterAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.Container.Inputs.AwsClusterAuthorizationAdminUserArgs\n {\n Username = \"my@service-account.com\",\n },\n },\n },\n AwsRegion = \"my-aws-region\",\n ControlPlane = new Gcp.Container.Inputs.AwsClusterControlPlaneArgs\n {\n AwsServicesAuthentication = new Gcp.Container.Inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs\n {\n RoleArn = \"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\",\n RoleSessionName = \"my--1p-dev-session\",\n },\n ConfigEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneConfigEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n DatabaseEncryption = new Gcp.Container.Inputs.AwsClusterControlPlaneDatabaseEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n IamInstanceProfile = \"my--1p-dev-controlplane\",\n SubnetIds = new[]\n {\n \"subnet-00000000000000000\",\n },\n Version = versions.Apply(getAwsVersionsResult =\u003e getAwsVersionsResult.ValidVersions[0]),\n InstanceType = \"t3.medium\",\n MainVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneMainVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"GP3\",\n },\n ProxyConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneProxyConfigArgs\n {\n SecretArn = \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n SecretVersion = \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n RootVolume = new Gcp.Container.Inputs.AwsClusterControlPlaneRootVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"GP3\",\n },\n SecurityGroupIds = new[]\n {\n \"sg-00000000000000000\",\n },\n SshConfig = new Gcp.Container.Inputs.AwsClusterControlPlaneSshConfigArgs\n {\n Ec2KeyPair = \"my--1p-dev-ssh\",\n },\n Tags = \n {\n { \"owner\", \"my@service-account.com\" },\n },\n },\n Fleet = new Gcp.Container.Inputs.AwsClusterFleetArgs\n {\n Project = \"my-project-number\",\n },\n Location = \"us-west1\",\n Name = \"name\",\n Networking = new Gcp.Container.Inputs.AwsClusterNetworkingArgs\n {\n PodAddressCidrBlocks = new[]\n {\n \"10.2.0.0/16\",\n },\n ServiceAddressCidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n VpcId = \"vpc-00000000000000000\",\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Description = \"A sample aws cluster\",\n Project = \"my-project-name\",\n });\n\n var primaryAwsNodePool = new Gcp.Container.AwsNodePool(\"primary\", new()\n {\n Autoscaling = new Gcp.Container.Inputs.AwsNodePoolAutoscalingArgs\n {\n MaxNodeCount = 5,\n MinNodeCount = 1,\n },\n Cluster = primary.Name,\n Config = new Gcp.Container.Inputs.AwsNodePoolConfigArgs\n {\n ConfigEncryption = new Gcp.Container.Inputs.AwsNodePoolConfigConfigEncryptionArgs\n {\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n },\n IamInstanceProfile = \"my--1p-dev-nodepool\",\n InstanceType = \"t3.medium\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n RootVolume = new Gcp.Container.Inputs.AwsNodePoolConfigRootVolumeArgs\n {\n Iops = 3000,\n KmsKeyArn = \"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\",\n SizeGib = 10,\n VolumeType = \"gp3\",\n },\n SecurityGroupIds = new[]\n {\n \"sg-00000000000000000\",\n },\n ProxyConfig = new Gcp.Container.Inputs.AwsNodePoolConfigProxyConfigArgs\n {\n SecretArn = \"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\",\n SecretVersion = \"12345678-ABCD-EFGH-IJKL-987654321098\",\n },\n SshConfig = new Gcp.Container.Inputs.AwsNodePoolConfigSshConfigArgs\n {\n Ec2KeyPair = \"my--1p-dev-ssh\",\n },\n Tags = \n {\n { \"tag-one\", \"value-one\" },\n },\n Taints = new[]\n {\n new Gcp.Container.Inputs.AwsNodePoolConfigTaintArgs\n {\n Effect = \"prefer_no_schedule\",\n Key = \"taint-key\",\n Value = \"taint-value\",\n },\n },\n InstancePlacement = new Gcp.Container.Inputs.AwsNodePoolConfigInstancePlacementArgs\n {\n Tenancy = \"dedicated\",\n },\n ImageType = \"ubuntu\",\n },\n Location = \"us-west1\",\n MaxPodsConstraint = new Gcp.Container.Inputs.AwsNodePoolMaxPodsConstraintArgs\n {\n MaxPodsPerNode = 110,\n },\n Name = \"node-pool-name\",\n SubnetId = \"subnet-00000000000000000\",\n Version = versions.Apply(getAwsVersionsResult =\u003e getAwsVersionsResult.ValidVersions[0]),\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tversions, err := container.GetAwsVersions(ctx, \u0026container.GetAwsVersionsArgs{\n\t\t\tProject: pulumi.StringRef(\"my-project-name\"),\n\t\t\tLocation: pulumi.StringRef(\"us-west1\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimary, err := container.NewAwsCluster(ctx, \"primary\", \u0026container.AwsClusterArgs{\n\t\t\tAuthorization: \u0026container.AwsClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: container.AwsClusterAuthorizationAdminUserArray{\n\t\t\t\t\t\u0026container.AwsClusterAuthorizationAdminUserArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"my@service-account.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAwsRegion: pulumi.String(\"my-aws-region\"),\n\t\t\tControlPlane: \u0026container.AwsClusterControlPlaneArgs{\n\t\t\t\tAwsServicesAuthentication: \u0026container.AwsClusterControlPlaneAwsServicesAuthenticationArgs{\n\t\t\t\t\tRoleArn: pulumi.String(\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\"),\n\t\t\t\t\tRoleSessionName: pulumi.String(\"my--1p-dev-session\"),\n\t\t\t\t},\n\t\t\t\tConfigEncryption: \u0026container.AwsClusterControlPlaneConfigEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tDatabaseEncryption: \u0026container.AwsClusterControlPlaneDatabaseEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tIamInstanceProfile: pulumi.String(\"my--1p-dev-controlplane\"),\n\t\t\t\tSubnetIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"subnet-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tVersion: pulumi.String(versions.ValidVersions[0]),\n\t\t\t\tInstanceType: pulumi.String(\"t3.medium\"),\n\t\t\t\tMainVolume: \u0026container.AwsClusterControlPlaneMainVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"GP3\"),\n\t\t\t\t},\n\t\t\t\tProxyConfig: \u0026container.AwsClusterControlPlaneProxyConfigArgs{\n\t\t\t\t\tSecretArn: pulumi.String(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\"),\n\t\t\t\t\tSecretVersion: pulumi.String(\"12345678-ABCD-EFGH-IJKL-987654321098\"),\n\t\t\t\t},\n\t\t\t\tRootVolume: \u0026container.AwsClusterControlPlaneRootVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"GP3\"),\n\t\t\t\t},\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"sg-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tSshConfig: \u0026container.AwsClusterControlPlaneSshConfigArgs{\n\t\t\t\t\tEc2KeyPair: pulumi.String(\"my--1p-dev-ssh\"),\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\t\"owner\": pulumi.String(\"my@service-account.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFleet: \u0026container.AwsClusterFleetArgs{\n\t\t\t\tProject: pulumi.String(\"my-project-number\"),\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"name\"),\n\t\t\tNetworking: \u0026container.AwsClusterNetworkingArgs{\n\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.2.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tVpcId: pulumi.String(\"vpc-00000000000000000\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"A sample aws cluster\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewAwsNodePool(ctx, \"primary\", \u0026container.AwsNodePoolArgs{\n\t\t\tAutoscaling: \u0026container.AwsNodePoolAutoscalingArgs{\n\t\t\t\tMaxNodeCount: pulumi.Int(5),\n\t\t\t\tMinNodeCount: pulumi.Int(1),\n\t\t\t},\n\t\t\tCluster: primary.Name,\n\t\t\tConfig: \u0026container.AwsNodePoolConfigArgs{\n\t\t\t\tConfigEncryption: \u0026container.AwsNodePoolConfigConfigEncryptionArgs{\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t},\n\t\t\t\tIamInstanceProfile: pulumi.String(\"my--1p-dev-nodepool\"),\n\t\t\t\tInstanceType: pulumi.String(\"t3.medium\"),\n\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t\t},\n\t\t\t\tRootVolume: \u0026container.AwsNodePoolConfigRootVolumeArgs{\n\t\t\t\t\tIops: pulumi.Int(3000),\n\t\t\t\t\tKmsKeyArn: pulumi.String(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\"),\n\t\t\t\t\tSizeGib: pulumi.Int(10),\n\t\t\t\t\tVolumeType: pulumi.String(\"gp3\"),\n\t\t\t\t},\n\t\t\t\tSecurityGroupIds: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"sg-00000000000000000\"),\n\t\t\t\t},\n\t\t\t\tProxyConfig: \u0026container.AwsNodePoolConfigProxyConfigArgs{\n\t\t\t\t\tSecretArn: pulumi.String(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\"),\n\t\t\t\t\tSecretVersion: pulumi.String(\"12345678-ABCD-EFGH-IJKL-987654321098\"),\n\t\t\t\t},\n\t\t\t\tSshConfig: \u0026container.AwsNodePoolConfigSshConfigArgs{\n\t\t\t\t\tEc2KeyPair: pulumi.String(\"my--1p-dev-ssh\"),\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringMap{\n\t\t\t\t\t\"tag-one\": pulumi.String(\"value-one\"),\n\t\t\t\t},\n\t\t\t\tTaints: container.AwsNodePoolConfigTaintArray{\n\t\t\t\t\t\u0026container.AwsNodePoolConfigTaintArgs{\n\t\t\t\t\t\tEffect: pulumi.String(\"prefer_no_schedule\"),\n\t\t\t\t\t\tKey: pulumi.String(\"taint-key\"),\n\t\t\t\t\t\tValue: pulumi.String(\"taint-value\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tInstancePlacement: \u0026container.AwsNodePoolConfigInstancePlacementArgs{\n\t\t\t\t\tTenancy: pulumi.String(\"dedicated\"),\n\t\t\t\t},\n\t\t\t\tImageType: pulumi.String(\"ubuntu\"),\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tMaxPodsConstraint: \u0026container.AwsNodePoolMaxPodsConstraintArgs{\n\t\t\t\tMaxPodsPerNode: pulumi.Int(110),\n\t\t\t},\n\t\t\tName: pulumi.String(\"node-pool-name\"),\n\t\t\tSubnetId: pulumi.String(\"subnet-00000000000000000\"),\n\t\t\tVersion: pulumi.String(versions.ValidVersions[0]),\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.container.ContainerFunctions;\nimport com.pulumi.gcp.container.inputs.GetAwsVersionsArgs;\nimport com.pulumi.gcp.container.AwsCluster;\nimport com.pulumi.gcp.container.AwsClusterArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterAuthorizationArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneAwsServicesAuthenticationArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneConfigEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneDatabaseEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneMainVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneProxyConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneRootVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterControlPlaneSshConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterFleetArgs;\nimport com.pulumi.gcp.container.inputs.AwsClusterNetworkingArgs;\nimport com.pulumi.gcp.container.AwsNodePool;\nimport com.pulumi.gcp.container.AwsNodePoolArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolAutoscalingArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigConfigEncryptionArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigRootVolumeArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigProxyConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigSshConfigArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolConfigInstancePlacementArgs;\nimport com.pulumi.gcp.container.inputs.AwsNodePoolMaxPodsConstraintArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var versions = ContainerFunctions.getAwsVersions(GetAwsVersionsArgs.builder()\n .project(\"my-project-name\")\n .location(\"us-west1\")\n .build());\n\n var primary = new AwsCluster(\"primary\", AwsClusterArgs.builder()\n .authorization(AwsClusterAuthorizationArgs.builder()\n .adminUsers(AwsClusterAuthorizationAdminUserArgs.builder()\n .username(\"my@service-account.com\")\n .build())\n .build())\n .awsRegion(\"my-aws-region\")\n .controlPlane(AwsClusterControlPlaneArgs.builder()\n .awsServicesAuthentication(AwsClusterControlPlaneAwsServicesAuthenticationArgs.builder()\n .roleArn(\"arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\")\n .roleSessionName(\"my--1p-dev-session\")\n .build())\n .configEncryption(AwsClusterControlPlaneConfigEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .databaseEncryption(AwsClusterControlPlaneDatabaseEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .iamInstanceProfile(\"my--1p-dev-controlplane\")\n .subnetIds(\"subnet-00000000000000000\")\n .version(versions.applyValue(getAwsVersionsResult -\u003e getAwsVersionsResult.validVersions()[0]))\n .instanceType(\"t3.medium\")\n .mainVolume(AwsClusterControlPlaneMainVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"GP3\")\n .build())\n .proxyConfig(AwsClusterControlPlaneProxyConfigArgs.builder()\n .secretArn(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\")\n .secretVersion(\"12345678-ABCD-EFGH-IJKL-987654321098\")\n .build())\n .rootVolume(AwsClusterControlPlaneRootVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"GP3\")\n .build())\n .securityGroupIds(\"sg-00000000000000000\")\n .sshConfig(AwsClusterControlPlaneSshConfigArgs.builder()\n .ec2KeyPair(\"my--1p-dev-ssh\")\n .build())\n .tags(Map.of(\"owner\", \"my@service-account.com\"))\n .build())\n .fleet(AwsClusterFleetArgs.builder()\n .project(\"my-project-number\")\n .build())\n .location(\"us-west1\")\n .name(\"name\")\n .networking(AwsClusterNetworkingArgs.builder()\n .podAddressCidrBlocks(\"10.2.0.0/16\")\n .serviceAddressCidrBlocks(\"10.1.0.0/16\")\n .vpcId(\"vpc-00000000000000000\")\n .build())\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .description(\"A sample aws cluster\")\n .project(\"my-project-name\")\n .build());\n\n var primaryAwsNodePool = new AwsNodePool(\"primaryAwsNodePool\", AwsNodePoolArgs.builder()\n .autoscaling(AwsNodePoolAutoscalingArgs.builder()\n .maxNodeCount(5)\n .minNodeCount(1)\n .build())\n .cluster(primary.name())\n .config(AwsNodePoolConfigArgs.builder()\n .configEncryption(AwsNodePoolConfigConfigEncryptionArgs.builder()\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .build())\n .iamInstanceProfile(\"my--1p-dev-nodepool\")\n .instanceType(\"t3.medium\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .rootVolume(AwsNodePoolConfigRootVolumeArgs.builder()\n .iops(3000)\n .kmsKeyArn(\"arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\")\n .sizeGib(10)\n .volumeType(\"gp3\")\n .build())\n .securityGroupIds(\"sg-00000000000000000\")\n .proxyConfig(AwsNodePoolConfigProxyConfigArgs.builder()\n .secretArn(\"arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\")\n .secretVersion(\"12345678-ABCD-EFGH-IJKL-987654321098\")\n .build())\n .sshConfig(AwsNodePoolConfigSshConfigArgs.builder()\n .ec2KeyPair(\"my--1p-dev-ssh\")\n .build())\n .tags(Map.of(\"tag-one\", \"value-one\"))\n .taints(AwsNodePoolConfigTaintArgs.builder()\n .effect(\"prefer_no_schedule\")\n .key(\"taint-key\")\n .value(\"taint-value\")\n .build())\n .instancePlacement(AwsNodePoolConfigInstancePlacementArgs.builder()\n .tenancy(\"dedicated\")\n .build())\n .imageType(\"ubuntu\")\n .build())\n .location(\"us-west1\")\n .maxPodsConstraint(AwsNodePoolMaxPodsConstraintArgs.builder()\n .maxPodsPerNode(110)\n .build())\n .name(\"node-pool-name\")\n .subnetId(\"subnet-00000000000000000\")\n .version(versions.applyValue(getAwsVersionsResult -\u003e getAwsVersionsResult.validVersions()[0]))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:AwsCluster\n properties:\n authorization:\n adminUsers:\n - username: my@service-account.com\n awsRegion: my-aws-region\n controlPlane:\n awsServicesAuthentication:\n roleArn: arn:aws:iam::012345678910:role/my--1p-dev-oneplatform\n roleSessionName: my--1p-dev-session\n configEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n databaseEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n iamInstanceProfile: my--1p-dev-controlplane\n subnetIds:\n - subnet-00000000000000000\n version: ${versions.validVersions[0]}\n instanceType: t3.medium\n mainVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: GP3\n proxyConfig:\n secretArn: arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\n secretVersion: 12345678-ABCD-EFGH-IJKL-987654321098\n rootVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: GP3\n securityGroupIds:\n - sg-00000000000000000\n sshConfig:\n ec2KeyPair: my--1p-dev-ssh\n tags:\n owner: my@service-account.com\n fleet:\n project: my-project-number\n location: us-west1\n name: name\n networking:\n podAddressCidrBlocks:\n - 10.2.0.0/16\n serviceAddressCidrBlocks:\n - 10.1.0.0/16\n vpcId: vpc-00000000000000000\n annotations:\n label-one: value-one\n description: A sample aws cluster\n project: my-project-name\n primaryAwsNodePool:\n type: gcp:container:AwsNodePool\n name: primary\n properties:\n autoscaling:\n maxNodeCount: 5\n minNodeCount: 1\n cluster: ${primary.name}\n config:\n configEncryption:\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n iamInstanceProfile: my--1p-dev-nodepool\n instanceType: t3.medium\n labels:\n label-one: value-one\n rootVolume:\n iops: 3000\n kmsKeyArn: arn:aws:kms:my-aws-region:012345678910:key/12345678-1234-1234-1234-123456789111\n sizeGib: 10\n volumeType: gp3\n securityGroupIds:\n - sg-00000000000000000\n proxyConfig:\n secretArn: arn:aws:secretsmanager:us-west-2:126285863215:secret:proxy_config20210824150329476300000001-ABCDEF\n secretVersion: 12345678-ABCD-EFGH-IJKL-987654321098\n sshConfig:\n ec2KeyPair: my--1p-dev-ssh\n tags:\n tag-one: value-one\n taints:\n - effect: prefer_no_schedule\n key: taint-key\n value: taint-value\n instancePlacement:\n tenancy: dedicated\n imageType: ubuntu\n location: us-west1\n maxPodsConstraint:\n maxPodsPerNode: 110\n name: node-pool-name\n subnetId: subnet-00000000000000000\n version: ${versions.validVersions[0]}\n annotations:\n label-one: value-one\n project: my-project-name\nvariables:\n versions:\n fn::invoke:\n Function: gcp:container:getAwsVersions\n Arguments:\n project: my-project-name\n location: us-west1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNodePool can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/awsClusters/{{cluster}}/awsNodePools/{{name}}`\n\n* `{{project}}/{{location}}/{{cluster}}/{{name}}`\n\n* `{{location}}/{{cluster}}/{{name}}`\n\nWhen using the `pulumi import` command, NodePool can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:container/awsNodePool:AwsNodePool default projects/{{project}}/locations/{{location}}/awsClusters/{{cluster}}/awsNodePools/{{name}}\n```\n\n```sh\n$ pulumi import gcp:container/awsNodePool:AwsNodePool default {{project}}/{{location}}/{{cluster}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:container/awsNodePool:AwsNodePool default {{location}}/{{cluster}}/{{name}}\n```\n\n", "properties": { "annotations": { "type": "object", @@ -175747,7 +175747,7 @@ } }, "gcp:databasemigrationservice/connectionProfile:ConnectionProfile": { - "description": "A connection profile definition.\n\n\nTo get more information about ConnectionProfile, see:\n\n* [API documentation](https://cloud.google.com/database-migration/docs/reference/rest/v1/projects.locations.connectionProfiles/create)\n* How-to Guides\n * [Database Migration](https://cloud.google.com/database-migration/docs/)\n\n\n\n## Example Usage\n\n### Database Migration Service Connection Profile Cloudsql\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst cloudsqldb = new gcp.sql.DatabaseInstance(\"cloudsqldb\", {\n name: \"my-database\",\n databaseVersion: \"MYSQL_5_7\",\n settings: {\n tier: \"db-n1-standard-1\",\n deletionProtectionEnabled: false,\n },\n deletionProtection: false,\n});\nconst sqlClientCert = new gcp.sql.SslCert(\"sql_client_cert\", {\n commonName: \"my-cert\",\n instance: cloudsqldb.name,\n}, {\n dependsOn: [cloudsqldb],\n});\nconst sqldbUser = new gcp.sql.User(\"sqldb_user\", {\n name: \"my-username\",\n instance: cloudsqldb.name,\n password: \"my-password\",\n}, {\n dependsOn: [sqlClientCert],\n});\nconst cloudsqlprofile = new gcp.databasemigrationservice.ConnectionProfile(\"cloudsqlprofile\", {\n location: \"us-central1\",\n connectionProfileId: \"my-fromprofileid\",\n displayName: \"my-fromprofileid_display\",\n labels: {\n foo: \"bar\",\n },\n mysql: {\n host: cloudsqldb.ipAddresses.apply(ipAddresses =\u003e ipAddresses[0].ipAddress),\n port: 3306,\n username: sqldbUser.name,\n password: sqldbUser.password,\n ssl: {\n clientKey: sqlClientCert.privateKey,\n clientCertificate: sqlClientCert.cert,\n caCertificate: sqlClientCert.serverCaCert,\n },\n cloudSqlId: \"my-database\",\n },\n}, {\n dependsOn: [sqldbUser],\n});\nconst cloudsqlprofileDestination = new gcp.databasemigrationservice.ConnectionProfile(\"cloudsqlprofile_destination\", {\n location: \"us-central1\",\n connectionProfileId: \"my-toprofileid\",\n displayName: \"my-toprofileid_displayname\",\n labels: {\n foo: \"bar\",\n },\n cloudsql: {\n settings: {\n databaseVersion: \"MYSQL_5_7\",\n userLabels: {\n cloudfoo: \"cloudbar\",\n },\n tier: \"db-n1-standard-1\",\n edition: \"ENTERPRISE\",\n storageAutoResizeLimit: \"0\",\n activationPolicy: \"ALWAYS\",\n ipConfig: {\n enableIpv4: true,\n requireSsl: true,\n },\n autoStorageIncrease: true,\n dataDiskType: \"PD_HDD\",\n dataDiskSizeGb: \"11\",\n zone: \"us-central1-b\",\n sourceId: project.then(project =\u003e `projects/${project.projectId}/locations/us-central1/connectionProfiles/my-fromprofileid`),\n rootPassword: \"testpasscloudsql\",\n },\n },\n}, {\n dependsOn: [cloudsqlprofile],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ncloudsqldb = gcp.sql.DatabaseInstance(\"cloudsqldb\",\n name=\"my-database\",\n database_version=\"MYSQL_5_7\",\n settings={\n \"tier\": \"db-n1-standard-1\",\n \"deletion_protection_enabled\": False,\n },\n deletion_protection=False)\nsql_client_cert = gcp.sql.SslCert(\"sql_client_cert\",\n common_name=\"my-cert\",\n instance=cloudsqldb.name,\n opts = pulumi.ResourceOptions(depends_on=[cloudsqldb]))\nsqldb_user = gcp.sql.User(\"sqldb_user\",\n name=\"my-username\",\n instance=cloudsqldb.name,\n password=\"my-password\",\n opts = pulumi.ResourceOptions(depends_on=[sql_client_cert]))\ncloudsqlprofile = gcp.databasemigrationservice.ConnectionProfile(\"cloudsqlprofile\",\n location=\"us-central1\",\n connection_profile_id=\"my-fromprofileid\",\n display_name=\"my-fromprofileid_display\",\n labels={\n \"foo\": \"bar\",\n },\n mysql={\n \"host\": cloudsqldb.ip_addresses[0].ip_address,\n \"port\": 3306,\n \"username\": sqldb_user.name,\n \"password\": sqldb_user.password,\n \"ssl\": {\n \"client_key\": sql_client_cert.private_key,\n \"client_certificate\": sql_client_cert.cert,\n \"ca_certificate\": sql_client_cert.server_ca_cert,\n },\n \"cloud_sql_id\": \"my-database\",\n },\n opts = pulumi.ResourceOptions(depends_on=[sqldb_user]))\ncloudsqlprofile_destination = gcp.databasemigrationservice.ConnectionProfile(\"cloudsqlprofile_destination\",\n location=\"us-central1\",\n connection_profile_id=\"my-toprofileid\",\n display_name=\"my-toprofileid_displayname\",\n labels={\n \"foo\": \"bar\",\n },\n cloudsql={\n \"settings\": {\n \"database_version\": \"MYSQL_5_7\",\n \"user_labels\": {\n \"cloudfoo\": \"cloudbar\",\n },\n \"tier\": \"db-n1-standard-1\",\n \"edition\": \"ENTERPRISE\",\n \"storage_auto_resize_limit\": \"0\",\n \"activation_policy\": \"ALWAYS\",\n \"ip_config\": {\n \"enable_ipv4\": True,\n \"require_ssl\": True,\n },\n \"auto_storage_increase\": True,\n \"data_disk_type\": \"PD_HDD\",\n \"data_disk_size_gb\": \"11\",\n \"zone\": \"us-central1-b\",\n \"source_id\": f\"projects/{project.project_id}/locations/us-central1/connectionProfiles/my-fromprofileid\",\n \"root_password\": \"testpasscloudsql\",\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[cloudsqlprofile]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cloudsqldb = new Gcp.Sql.DatabaseInstance(\"cloudsqldb\", new()\n {\n Name = \"my-database\",\n DatabaseVersion = \"MYSQL_5_7\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-n1-standard-1\",\n DeletionProtectionEnabled = false,\n },\n DeletionProtection = false,\n });\n\n var sqlClientCert = new Gcp.Sql.SslCert(\"sql_client_cert\", new()\n {\n CommonName = \"my-cert\",\n Instance = cloudsqldb.Name,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cloudsqldb,\n },\n });\n\n var sqldbUser = new Gcp.Sql.User(\"sqldb_user\", new()\n {\n Name = \"my-username\",\n Instance = cloudsqldb.Name,\n Password = \"my-password\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n sqlClientCert,\n },\n });\n\n var cloudsqlprofile = new Gcp.DatabaseMigrationService.ConnectionProfile(\"cloudsqlprofile\", new()\n {\n Location = \"us-central1\",\n ConnectionProfileId = \"my-fromprofileid\",\n DisplayName = \"my-fromprofileid_display\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Mysql = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileMysqlArgs\n {\n Host = cloudsqldb.IpAddresses.Apply(ipAddresses =\u003e ipAddresses[0].IpAddress),\n Port = 3306,\n Username = sqldbUser.Name,\n Password = sqldbUser.Password,\n Ssl = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileMysqlSslArgs\n {\n ClientKey = sqlClientCert.PrivateKey,\n ClientCertificate = sqlClientCert.Cert,\n CaCertificate = sqlClientCert.ServerCaCert,\n },\n CloudSqlId = \"my-database\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n sqldbUser,\n },\n });\n\n var cloudsqlprofileDestination = new Gcp.DatabaseMigrationService.ConnectionProfile(\"cloudsqlprofile_destination\", new()\n {\n Location = \"us-central1\",\n ConnectionProfileId = \"my-toprofileid\",\n DisplayName = \"my-toprofileid_displayname\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Cloudsql = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileCloudsqlArgs\n {\n Settings = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileCloudsqlSettingsArgs\n {\n DatabaseVersion = \"MYSQL_5_7\",\n UserLabels = \n {\n { \"cloudfoo\", \"cloudbar\" },\n },\n Tier = \"db-n1-standard-1\",\n Edition = \"ENTERPRISE\",\n StorageAutoResizeLimit = \"0\",\n ActivationPolicy = \"ALWAYS\",\n IpConfig = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileCloudsqlSettingsIpConfigArgs\n {\n EnableIpv4 = true,\n RequireSsl = true,\n },\n AutoStorageIncrease = true,\n DataDiskType = \"PD_HDD\",\n DataDiskSizeGb = \"11\",\n Zone = \"us-central1-b\",\n SourceId = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.ProjectId)}/locations/us-central1/connectionProfiles/my-fromprofileid\",\n RootPassword = \"testpasscloudsql\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cloudsqlprofile,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/databasemigrationservice\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcloudsqldb, err := sql.NewDatabaseInstance(ctx, \"cloudsqldb\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"my-database\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_5_7\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-n1-standard-1\"),\n\t\t\t\tDeletionProtectionEnabled: pulumi.Bool(false),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsqlClientCert, err := sql.NewSslCert(ctx, \"sql_client_cert\", \u0026sql.SslCertArgs{\n\t\t\tCommonName: pulumi.String(\"my-cert\"),\n\t\t\tInstance: cloudsqldb.Name,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcloudsqldb,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsqldbUser, err := sql.NewUser(ctx, \"sqldb_user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"my-username\"),\n\t\t\tInstance: cloudsqldb.Name,\n\t\t\tPassword: pulumi.String(\"my-password\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsqlClientCert,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcloudsqlprofile, err := databasemigrationservice.NewConnectionProfile(ctx, \"cloudsqlprofile\", \u0026databasemigrationservice.ConnectionProfileArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"my-fromprofileid\"),\n\t\t\tDisplayName: pulumi.String(\"my-fromprofileid_display\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tMysql: \u0026databasemigrationservice.ConnectionProfileMysqlArgs{\n\t\t\t\tHost: cloudsqldb.IpAddresses.ApplyT(func(ipAddresses []sql.DatabaseInstanceIpAddress) (*string, error) {\n\t\t\t\t\treturn \u0026ipAddresses[0].IpAddress, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tPort: pulumi.Int(3306),\n\t\t\t\tUsername: sqldbUser.Name,\n\t\t\t\tPassword: sqldbUser.Password,\n\t\t\t\tSsl: \u0026databasemigrationservice.ConnectionProfileMysqlSslArgs{\n\t\t\t\t\tClientKey: sqlClientCert.PrivateKey,\n\t\t\t\t\tClientCertificate: sqlClientCert.Cert,\n\t\t\t\t\tCaCertificate: sqlClientCert.ServerCaCert,\n\t\t\t\t},\n\t\t\t\tCloudSqlId: pulumi.String(\"my-database\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsqldbUser,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = databasemigrationservice.NewConnectionProfile(ctx, \"cloudsqlprofile_destination\", \u0026databasemigrationservice.ConnectionProfileArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"my-toprofileid\"),\n\t\t\tDisplayName: pulumi.String(\"my-toprofileid_displayname\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tCloudsql: \u0026databasemigrationservice.ConnectionProfileCloudsqlArgs{\n\t\t\t\tSettings: \u0026databasemigrationservice.ConnectionProfileCloudsqlSettingsArgs{\n\t\t\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_5_7\"),\n\t\t\t\t\tUserLabels: pulumi.StringMap{\n\t\t\t\t\t\t\"cloudfoo\": pulumi.String(\"cloudbar\"),\n\t\t\t\t\t},\n\t\t\t\t\tTier: pulumi.String(\"db-n1-standard-1\"),\n\t\t\t\t\tEdition: pulumi.String(\"ENTERPRISE\"),\n\t\t\t\t\tStorageAutoResizeLimit: pulumi.String(\"0\"),\n\t\t\t\t\tActivationPolicy: pulumi.String(\"ALWAYS\"),\n\t\t\t\t\tIpConfig: \u0026databasemigrationservice.ConnectionProfileCloudsqlSettingsIpConfigArgs{\n\t\t\t\t\t\tEnableIpv4: pulumi.Bool(true),\n\t\t\t\t\t\tRequireSsl: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tAutoStorageIncrease: pulumi.Bool(true),\n\t\t\t\t\tDataDiskType: pulumi.String(\"PD_HDD\"),\n\t\t\t\t\tDataDiskSizeGb: pulumi.String(\"11\"),\n\t\t\t\t\tZone: pulumi.String(\"us-central1-b\"),\n\t\t\t\t\tSourceId: pulumi.Sprintf(\"projects/%v/locations/us-central1/connectionProfiles/my-fromprofileid\", project.ProjectId),\n\t\t\t\t\tRootPassword: pulumi.String(\"testpasscloudsql\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcloudsqlprofile,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.SslCert;\nimport com.pulumi.gcp.sql.SslCertArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfile;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfileArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileMysqlArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileMysqlSslArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileCloudsqlArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileCloudsqlSettingsArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileCloudsqlSettingsIpConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var cloudsqldb = new DatabaseInstance(\"cloudsqldb\", DatabaseInstanceArgs.builder()\n .name(\"my-database\")\n .databaseVersion(\"MYSQL_5_7\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-n1-standard-1\")\n .deletionProtectionEnabled(false)\n .build())\n .deletionProtection(false)\n .build());\n\n var sqlClientCert = new SslCert(\"sqlClientCert\", SslCertArgs.builder()\n .commonName(\"my-cert\")\n .instance(cloudsqldb.name())\n .build(), CustomResourceOptions.builder()\n .dependsOn(cloudsqldb)\n .build());\n\n var sqldbUser = new User(\"sqldbUser\", UserArgs.builder()\n .name(\"my-username\")\n .instance(cloudsqldb.name())\n .password(\"my-password\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(sqlClientCert)\n .build());\n\n var cloudsqlprofile = new ConnectionProfile(\"cloudsqlprofile\", ConnectionProfileArgs.builder()\n .location(\"us-central1\")\n .connectionProfileId(\"my-fromprofileid\")\n .displayName(\"my-fromprofileid_display\")\n .labels(Map.of(\"foo\", \"bar\"))\n .mysql(ConnectionProfileMysqlArgs.builder()\n .host(cloudsqldb.ipAddresses().applyValue(ipAddresses -\u003e ipAddresses[0].ipAddress()))\n .port(3306)\n .username(sqldbUser.name())\n .password(sqldbUser.password())\n .ssl(ConnectionProfileMysqlSslArgs.builder()\n .clientKey(sqlClientCert.privateKey())\n .clientCertificate(sqlClientCert.cert())\n .caCertificate(sqlClientCert.serverCaCert())\n .build())\n .cloudSqlId(\"my-database\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(sqldbUser)\n .build());\n\n var cloudsqlprofileDestination = new ConnectionProfile(\"cloudsqlprofileDestination\", ConnectionProfileArgs.builder()\n .location(\"us-central1\")\n .connectionProfileId(\"my-toprofileid\")\n .displayName(\"my-toprofileid_displayname\")\n .labels(Map.of(\"foo\", \"bar\"))\n .cloudsql(ConnectionProfileCloudsqlArgs.builder()\n .settings(ConnectionProfileCloudsqlSettingsArgs.builder()\n .databaseVersion(\"MYSQL_5_7\")\n .userLabels(Map.of(\"cloudfoo\", \"cloudbar\"))\n .tier(\"db-n1-standard-1\")\n .edition(\"ENTERPRISE\")\n .storageAutoResizeLimit(\"0\")\n .activationPolicy(\"ALWAYS\")\n .ipConfig(ConnectionProfileCloudsqlSettingsIpConfigArgs.builder()\n .enableIpv4(true)\n .requireSsl(true)\n .build())\n .autoStorageIncrease(true)\n .dataDiskType(\"PD_HDD\")\n .dataDiskSizeGb(\"11\")\n .zone(\"us-central1-b\")\n .sourceId(String.format(\"projects/%s/locations/us-central1/connectionProfiles/my-fromprofileid\", project.applyValue(getProjectResult -\u003e getProjectResult.projectId())))\n .rootPassword(\"testpasscloudsql\")\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(cloudsqlprofile)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cloudsqldb:\n type: gcp:sql:DatabaseInstance\n properties:\n name: my-database\n databaseVersion: MYSQL_5_7\n settings:\n tier: db-n1-standard-1\n deletionProtectionEnabled: false\n deletionProtection: false\n sqlClientCert:\n type: gcp:sql:SslCert\n name: sql_client_cert\n properties:\n commonName: my-cert\n instance: ${cloudsqldb.name}\n options:\n dependson:\n - ${cloudsqldb}\n sqldbUser:\n type: gcp:sql:User\n name: sqldb_user\n properties:\n name: my-username\n instance: ${cloudsqldb.name}\n password: my-password\n options:\n dependson:\n - ${sqlClientCert}\n cloudsqlprofile:\n type: gcp:databasemigrationservice:ConnectionProfile\n properties:\n location: us-central1\n connectionProfileId: my-fromprofileid\n displayName: my-fromprofileid_display\n labels:\n foo: bar\n mysql:\n host: ${cloudsqldb.ipAddresses[0].ipAddress}\n port: 3306\n username: ${sqldbUser.name}\n password: ${sqldbUser.password}\n ssl:\n clientKey: ${sqlClientCert.privateKey}\n clientCertificate: ${sqlClientCert.cert}\n caCertificate: ${sqlClientCert.serverCaCert}\n cloudSqlId: my-database\n options:\n dependson:\n - ${sqldbUser}\n cloudsqlprofileDestination:\n type: gcp:databasemigrationservice:ConnectionProfile\n name: cloudsqlprofile_destination\n properties:\n location: us-central1\n connectionProfileId: my-toprofileid\n displayName: my-toprofileid_displayname\n labels:\n foo: bar\n cloudsql:\n settings:\n databaseVersion: MYSQL_5_7\n userLabels:\n cloudfoo: cloudbar\n tier: db-n1-standard-1\n edition: ENTERPRISE\n storageAutoResizeLimit: '0'\n activationPolicy: ALWAYS\n ipConfig:\n enableIpv4: true\n requireSsl: true\n autoStorageIncrease: true\n dataDiskType: PD_HDD\n dataDiskSizeGb: '11'\n zone: us-central1-b\n sourceId: projects/${project.projectId}/locations/us-central1/connectionProfiles/my-fromprofileid\n rootPassword: testpasscloudsql\n options:\n dependson:\n - ${cloudsqlprofile}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Database Migration Service Connection Profile Postgres\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst postgresqldb = new gcp.sql.DatabaseInstance(\"postgresqldb\", {\n name: \"my-database\",\n databaseVersion: \"POSTGRES_12\",\n settings: {\n tier: \"db-custom-2-13312\",\n },\n deletionProtection: false,\n});\nconst sqlClientCert = new gcp.sql.SslCert(\"sql_client_cert\", {\n commonName: \"my-cert\",\n instance: postgresqldb.name,\n}, {\n dependsOn: [postgresqldb],\n});\nconst sqldbUser = new gcp.sql.User(\"sqldb_user\", {\n name: \"my-username\",\n instance: postgresqldb.name,\n password: \"my-password\",\n}, {\n dependsOn: [sqlClientCert],\n});\nconst postgresprofile = new gcp.databasemigrationservice.ConnectionProfile(\"postgresprofile\", {\n location: \"us-central1\",\n connectionProfileId: \"my-profileid\",\n displayName: \"my-profileid_display\",\n labels: {\n foo: \"bar\",\n },\n postgresql: {\n host: postgresqldb.ipAddresses.apply(ipAddresses =\u003e ipAddresses[0].ipAddress),\n port: 5432,\n username: sqldbUser.name,\n password: sqldbUser.password,\n ssl: {\n clientKey: sqlClientCert.privateKey,\n clientCertificate: sqlClientCert.cert,\n caCertificate: sqlClientCert.serverCaCert,\n },\n cloudSqlId: \"my-database\",\n },\n}, {\n dependsOn: [sqldbUser],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npostgresqldb = gcp.sql.DatabaseInstance(\"postgresqldb\",\n name=\"my-database\",\n database_version=\"POSTGRES_12\",\n settings={\n \"tier\": \"db-custom-2-13312\",\n },\n deletion_protection=False)\nsql_client_cert = gcp.sql.SslCert(\"sql_client_cert\",\n common_name=\"my-cert\",\n instance=postgresqldb.name,\n opts = pulumi.ResourceOptions(depends_on=[postgresqldb]))\nsqldb_user = gcp.sql.User(\"sqldb_user\",\n name=\"my-username\",\n instance=postgresqldb.name,\n password=\"my-password\",\n opts = pulumi.ResourceOptions(depends_on=[sql_client_cert]))\npostgresprofile = gcp.databasemigrationservice.ConnectionProfile(\"postgresprofile\",\n location=\"us-central1\",\n connection_profile_id=\"my-profileid\",\n display_name=\"my-profileid_display\",\n labels={\n \"foo\": \"bar\",\n },\n postgresql={\n \"host\": postgresqldb.ip_addresses[0].ip_address,\n \"port\": 5432,\n \"username\": sqldb_user.name,\n \"password\": sqldb_user.password,\n \"ssl\": {\n \"client_key\": sql_client_cert.private_key,\n \"client_certificate\": sql_client_cert.cert,\n \"ca_certificate\": sql_client_cert.server_ca_cert,\n },\n \"cloud_sql_id\": \"my-database\",\n },\n opts = pulumi.ResourceOptions(depends_on=[sqldb_user]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var postgresqldb = new Gcp.Sql.DatabaseInstance(\"postgresqldb\", new()\n {\n Name = \"my-database\",\n DatabaseVersion = \"POSTGRES_12\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-custom-2-13312\",\n },\n DeletionProtection = false,\n });\n\n var sqlClientCert = new Gcp.Sql.SslCert(\"sql_client_cert\", new()\n {\n CommonName = \"my-cert\",\n Instance = postgresqldb.Name,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n postgresqldb,\n },\n });\n\n var sqldbUser = new Gcp.Sql.User(\"sqldb_user\", new()\n {\n Name = \"my-username\",\n Instance = postgresqldb.Name,\n Password = \"my-password\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n sqlClientCert,\n },\n });\n\n var postgresprofile = new Gcp.DatabaseMigrationService.ConnectionProfile(\"postgresprofile\", new()\n {\n Location = \"us-central1\",\n ConnectionProfileId = \"my-profileid\",\n DisplayName = \"my-profileid_display\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Postgresql = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfilePostgresqlArgs\n {\n Host = postgresqldb.IpAddresses.Apply(ipAddresses =\u003e ipAddresses[0].IpAddress),\n Port = 5432,\n Username = sqldbUser.Name,\n Password = sqldbUser.Password,\n Ssl = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfilePostgresqlSslArgs\n {\n ClientKey = sqlClientCert.PrivateKey,\n ClientCertificate = sqlClientCert.Cert,\n CaCertificate = sqlClientCert.ServerCaCert,\n },\n CloudSqlId = \"my-database\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n sqldbUser,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/databasemigrationservice\"\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\tpostgresqldb, err := sql.NewDatabaseInstance(ctx, \"postgresqldb\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"my-database\"),\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_12\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-custom-2-13312\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsqlClientCert, err := sql.NewSslCert(ctx, \"sql_client_cert\", \u0026sql.SslCertArgs{\n\t\t\tCommonName: pulumi.String(\"my-cert\"),\n\t\t\tInstance: postgresqldb.Name,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tpostgresqldb,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsqldbUser, err := sql.NewUser(ctx, \"sqldb_user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"my-username\"),\n\t\t\tInstance: postgresqldb.Name,\n\t\t\tPassword: pulumi.String(\"my-password\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsqlClientCert,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = databasemigrationservice.NewConnectionProfile(ctx, \"postgresprofile\", \u0026databasemigrationservice.ConnectionProfileArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"my-profileid\"),\n\t\t\tDisplayName: pulumi.String(\"my-profileid_display\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tPostgresql: \u0026databasemigrationservice.ConnectionProfilePostgresqlArgs{\n\t\t\t\tHost: postgresqldb.IpAddresses.ApplyT(func(ipAddresses []sql.DatabaseInstanceIpAddress) (*string, error) {\n\t\t\t\t\treturn \u0026ipAddresses[0].IpAddress, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tPort: pulumi.Int(5432),\n\t\t\t\tUsername: sqldbUser.Name,\n\t\t\t\tPassword: sqldbUser.Password,\n\t\t\t\tSsl: \u0026databasemigrationservice.ConnectionProfilePostgresqlSslArgs{\n\t\t\t\t\tClientKey: sqlClientCert.PrivateKey,\n\t\t\t\t\tClientCertificate: sqlClientCert.Cert,\n\t\t\t\t\tCaCertificate: sqlClientCert.ServerCaCert,\n\t\t\t\t},\n\t\t\t\tCloudSqlId: pulumi.String(\"my-database\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsqldbUser,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.SslCert;\nimport com.pulumi.gcp.sql.SslCertArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfile;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfileArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfilePostgresqlArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfilePostgresqlSslArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var postgresqldb = new DatabaseInstance(\"postgresqldb\", DatabaseInstanceArgs.builder()\n .name(\"my-database\")\n .databaseVersion(\"POSTGRES_12\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-custom-2-13312\")\n .build())\n .deletionProtection(false)\n .build());\n\n var sqlClientCert = new SslCert(\"sqlClientCert\", SslCertArgs.builder()\n .commonName(\"my-cert\")\n .instance(postgresqldb.name())\n .build(), CustomResourceOptions.builder()\n .dependsOn(postgresqldb)\n .build());\n\n var sqldbUser = new User(\"sqldbUser\", UserArgs.builder()\n .name(\"my-username\")\n .instance(postgresqldb.name())\n .password(\"my-password\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(sqlClientCert)\n .build());\n\n var postgresprofile = new ConnectionProfile(\"postgresprofile\", ConnectionProfileArgs.builder()\n .location(\"us-central1\")\n .connectionProfileId(\"my-profileid\")\n .displayName(\"my-profileid_display\")\n .labels(Map.of(\"foo\", \"bar\"))\n .postgresql(ConnectionProfilePostgresqlArgs.builder()\n .host(postgresqldb.ipAddresses().applyValue(ipAddresses -\u003e ipAddresses[0].ipAddress()))\n .port(5432)\n .username(sqldbUser.name())\n .password(sqldbUser.password())\n .ssl(ConnectionProfilePostgresqlSslArgs.builder()\n .clientKey(sqlClientCert.privateKey())\n .clientCertificate(sqlClientCert.cert())\n .caCertificate(sqlClientCert.serverCaCert())\n .build())\n .cloudSqlId(\"my-database\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(sqldbUser)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n postgresqldb:\n type: gcp:sql:DatabaseInstance\n properties:\n name: my-database\n databaseVersion: POSTGRES_12\n settings:\n tier: db-custom-2-13312\n deletionProtection: false\n sqlClientCert:\n type: gcp:sql:SslCert\n name: sql_client_cert\n properties:\n commonName: my-cert\n instance: ${postgresqldb.name}\n options:\n dependson:\n - ${postgresqldb}\n sqldbUser:\n type: gcp:sql:User\n name: sqldb_user\n properties:\n name: my-username\n instance: ${postgresqldb.name}\n password: my-password\n options:\n dependson:\n - ${sqlClientCert}\n postgresprofile:\n type: gcp:databasemigrationservice:ConnectionProfile\n properties:\n location: us-central1\n connectionProfileId: my-profileid\n displayName: my-profileid_display\n labels:\n foo: bar\n postgresql:\n host: ${postgresqldb.ipAddresses[0].ipAddress}\n port: 5432\n username: ${sqldbUser.name}\n password: ${sqldbUser.password}\n ssl:\n clientKey: ${sqlClientCert.privateKey}\n clientCertificate: ${sqlClientCert.cert}\n caCertificate: ${sqlClientCert.serverCaCert}\n cloudSqlId: my-database\n options:\n dependson:\n - ${sqldbUser}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Database Migration Service Connection Profile Oracle\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst oracleprofile = new gcp.databasemigrationservice.ConnectionProfile(\"oracleprofile\", {\n location: \"us-central1\",\n connectionProfileId: \"my-profileid\",\n displayName: \"my-profileid_display\",\n labels: {\n foo: \"bar\",\n },\n oracle: {\n host: \"host\",\n port: 1521,\n username: \"username\",\n password: \"password\",\n databaseService: \"dbprovider\",\n staticServiceIpConnectivity: {},\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\noracleprofile = gcp.databasemigrationservice.ConnectionProfile(\"oracleprofile\",\n location=\"us-central1\",\n connection_profile_id=\"my-profileid\",\n display_name=\"my-profileid_display\",\n labels={\n \"foo\": \"bar\",\n },\n oracle={\n \"host\": \"host\",\n \"port\": 1521,\n \"username\": \"username\",\n \"password\": \"password\",\n \"database_service\": \"dbprovider\",\n \"static_service_ip_connectivity\": {},\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var oracleprofile = new Gcp.DatabaseMigrationService.ConnectionProfile(\"oracleprofile\", new()\n {\n Location = \"us-central1\",\n ConnectionProfileId = \"my-profileid\",\n DisplayName = \"my-profileid_display\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Oracle = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileOracleArgs\n {\n Host = \"host\",\n Port = 1521,\n Username = \"username\",\n Password = \"password\",\n DatabaseService = \"dbprovider\",\n StaticServiceIpConnectivity = null,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/databasemigrationservice\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := databasemigrationservice.NewConnectionProfile(ctx, \"oracleprofile\", \u0026databasemigrationservice.ConnectionProfileArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"my-profileid\"),\n\t\t\tDisplayName: pulumi.String(\"my-profileid_display\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tOracle: \u0026databasemigrationservice.ConnectionProfileOracleArgs{\n\t\t\t\tHost: pulumi.String(\"host\"),\n\t\t\t\tPort: pulumi.Int(1521),\n\t\t\t\tUsername: pulumi.String(\"username\"),\n\t\t\t\tPassword: pulumi.String(\"password\"),\n\t\t\t\tDatabaseService: pulumi.String(\"dbprovider\"),\n\t\t\t\tStaticServiceIpConnectivity: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfile;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfileArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileOracleArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileOracleStaticServiceIpConnectivityArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var oracleprofile = new ConnectionProfile(\"oracleprofile\", ConnectionProfileArgs.builder()\n .location(\"us-central1\")\n .connectionProfileId(\"my-profileid\")\n .displayName(\"my-profileid_display\")\n .labels(Map.of(\"foo\", \"bar\"))\n .oracle(ConnectionProfileOracleArgs.builder()\n .host(\"host\")\n .port(1521)\n .username(\"username\")\n .password(\"password\")\n .databaseService(\"dbprovider\")\n .staticServiceIpConnectivity()\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n oracleprofile:\n type: gcp:databasemigrationservice:ConnectionProfile\n properties:\n location: us-central1\n connectionProfileId: my-profileid\n displayName: my-profileid_display\n labels:\n foo: bar\n oracle:\n host: host\n port: 1521\n username: username\n password: password\n databaseService: dbprovider\n staticServiceIpConnectivity: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Database Migration Service Connection Profile Alloydb\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst _default = new gcp.compute.Network(\"default\", {name: \"vpc-network\"});\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"private-ip-alloc\",\n addressType: \"INTERNAL\",\n purpose: \"VPC_PEERING\",\n prefixLength: 16,\n network: _default.id,\n});\nconst vpcConnection = new gcp.servicenetworking.Connection(\"vpc_connection\", {\n network: _default.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAlloc.name],\n});\nconst alloydbprofile = new gcp.databasemigrationservice.ConnectionProfile(\"alloydbprofile\", {\n location: \"us-central1\",\n connectionProfileId: \"my-profileid\",\n displayName: \"my-profileid_display\",\n labels: {\n foo: \"bar\",\n },\n alloydb: {\n clusterId: \"tf-test-dbmsalloycluster_52865\",\n settings: {\n initialUser: {\n user: \"alloyuser_85840\",\n password: \"alloypass_60302\",\n },\n vpcNetwork: _default.id,\n labels: {\n alloyfoo: \"alloybar\",\n },\n primaryInstanceSettings: {\n id: \"priminstid\",\n machineConfig: {\n cpuCount: 2,\n },\n databaseFlags: {},\n labels: {\n alloysinstfoo: \"allowinstbar\",\n },\n },\n },\n },\n}, {\n dependsOn: [vpcConnection],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ndefault = gcp.compute.Network(\"default\", name=\"vpc-network\")\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"private-ip-alloc\",\n address_type=\"INTERNAL\",\n purpose=\"VPC_PEERING\",\n prefix_length=16,\n network=default.id)\nvpc_connection = gcp.servicenetworking.Connection(\"vpc_connection\",\n network=default.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_alloc.name])\nalloydbprofile = gcp.databasemigrationservice.ConnectionProfile(\"alloydbprofile\",\n location=\"us-central1\",\n connection_profile_id=\"my-profileid\",\n display_name=\"my-profileid_display\",\n labels={\n \"foo\": \"bar\",\n },\n alloydb={\n \"cluster_id\": \"tf-test-dbmsalloycluster_52865\",\n \"settings\": {\n \"initial_user\": {\n \"user\": \"alloyuser_85840\",\n \"password\": \"alloypass_60302\",\n },\n \"vpc_network\": default.id,\n \"labels\": {\n \"alloyfoo\": \"alloybar\",\n },\n \"primary_instance_settings\": {\n \"id\": \"priminstid\",\n \"machine_config\": {\n \"cpu_count\": 2,\n },\n \"database_flags\": {},\n \"labels\": {\n \"alloysinstfoo\": \"allowinstbar\",\n },\n },\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[vpc_connection]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"vpc-network\",\n });\n\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"private-ip-alloc\",\n AddressType = \"INTERNAL\",\n Purpose = \"VPC_PEERING\",\n PrefixLength = 16,\n Network = @default.Id,\n });\n\n var vpcConnection = new Gcp.ServiceNetworking.Connection(\"vpc_connection\", new()\n {\n Network = @default.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAlloc.Name,\n },\n });\n\n var alloydbprofile = new Gcp.DatabaseMigrationService.ConnectionProfile(\"alloydbprofile\", new()\n {\n Location = \"us-central1\",\n ConnectionProfileId = \"my-profileid\",\n DisplayName = \"my-profileid_display\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Alloydb = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileAlloydbArgs\n {\n ClusterId = \"tf-test-dbmsalloycluster_52865\",\n Settings = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileAlloydbSettingsArgs\n {\n InitialUser = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileAlloydbSettingsInitialUserArgs\n {\n User = \"alloyuser_85840\",\n Password = \"alloypass_60302\",\n },\n VpcNetwork = @default.Id,\n Labels = \n {\n { \"alloyfoo\", \"alloybar\" },\n },\n PrimaryInstanceSettings = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileAlloydbSettingsPrimaryInstanceSettingsArgs\n {\n Id = \"priminstid\",\n MachineConfig = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileAlloydbSettingsPrimaryInstanceSettingsMachineConfigArgs\n {\n CpuCount = 2,\n },\n DatabaseFlags = null,\n Labels = \n {\n { \"alloysinstfoo\", \"allowinstbar\" },\n },\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vpcConnection,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/databasemigrationservice\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"vpc-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"private-ip-alloc\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvpcConnection, err := servicenetworking.NewConnection(ctx, \"vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: _default.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tprivateIpAlloc.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = databasemigrationservice.NewConnectionProfile(ctx, \"alloydbprofile\", \u0026databasemigrationservice.ConnectionProfileArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"my-profileid\"),\n\t\t\tDisplayName: pulumi.String(\"my-profileid_display\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tAlloydb: \u0026databasemigrationservice.ConnectionProfileAlloydbArgs{\n\t\t\t\tClusterId: pulumi.String(\"tf-test-dbmsalloycluster_52865\"),\n\t\t\t\tSettings: \u0026databasemigrationservice.ConnectionProfileAlloydbSettingsArgs{\n\t\t\t\t\tInitialUser: \u0026databasemigrationservice.ConnectionProfileAlloydbSettingsInitialUserArgs{\n\t\t\t\t\t\tUser: pulumi.String(\"alloyuser_85840\"),\n\t\t\t\t\t\tPassword: pulumi.String(\"alloypass_60302\"),\n\t\t\t\t\t},\n\t\t\t\t\tVpcNetwork: _default.ID(),\n\t\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\t\"alloyfoo\": pulumi.String(\"alloybar\"),\n\t\t\t\t\t},\n\t\t\t\t\tPrimaryInstanceSettings: \u0026databasemigrationservice.ConnectionProfileAlloydbSettingsPrimaryInstanceSettingsArgs{\n\t\t\t\t\t\tId: pulumi.String(\"priminstid\"),\n\t\t\t\t\t\tMachineConfig: \u0026databasemigrationservice.ConnectionProfileAlloydbSettingsPrimaryInstanceSettingsMachineConfigArgs{\n\t\t\t\t\t\t\tCpuCount: pulumi.Int(2),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDatabaseFlags: nil,\n\t\t\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\t\t\"alloysinstfoo\": pulumi.String(\"allowinstbar\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfile;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfileArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileAlloydbArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileAlloydbSettingsArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileAlloydbSettingsInitialUserArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileAlloydbSettingsPrimaryInstanceSettingsArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileAlloydbSettingsPrimaryInstanceSettingsMachineConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"vpc-network\")\n .build());\n\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"private-ip-alloc\")\n .addressType(\"INTERNAL\")\n .purpose(\"VPC_PEERING\")\n .prefixLength(16)\n .network(default_.id())\n .build());\n\n var vpcConnection = new Connection(\"vpcConnection\", ConnectionArgs.builder()\n .network(default_.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAlloc.name())\n .build());\n\n var alloydbprofile = new ConnectionProfile(\"alloydbprofile\", ConnectionProfileArgs.builder()\n .location(\"us-central1\")\n .connectionProfileId(\"my-profileid\")\n .displayName(\"my-profileid_display\")\n .labels(Map.of(\"foo\", \"bar\"))\n .alloydb(ConnectionProfileAlloydbArgs.builder()\n .clusterId(\"tf-test-dbmsalloycluster_52865\")\n .settings(ConnectionProfileAlloydbSettingsArgs.builder()\n .initialUser(ConnectionProfileAlloydbSettingsInitialUserArgs.builder()\n .user(\"alloyuser_85840\")\n .password(\"alloypass_60302\")\n .build())\n .vpcNetwork(default_.id())\n .labels(Map.of(\"alloyfoo\", \"alloybar\"))\n .primaryInstanceSettings(ConnectionProfileAlloydbSettingsPrimaryInstanceSettingsArgs.builder()\n .id(\"priminstid\")\n .machineConfig(ConnectionProfileAlloydbSettingsPrimaryInstanceSettingsMachineConfigArgs.builder()\n .cpuCount(2)\n .build())\n .databaseFlags()\n .labels(Map.of(\"alloysinstfoo\", \"allowinstbar\"))\n .build())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(vpcConnection)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: vpc-network\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: private-ip-alloc\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 16\n network: ${default.id}\n vpcConnection:\n type: gcp:servicenetworking:Connection\n name: vpc_connection\n properties:\n network: ${default.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAlloc.name}\n alloydbprofile:\n type: gcp:databasemigrationservice:ConnectionProfile\n properties:\n location: us-central1\n connectionProfileId: my-profileid\n displayName: my-profileid_display\n labels:\n foo: bar\n alloydb:\n clusterId: tf-test-dbmsalloycluster_52865\n settings:\n initialUser:\n user: alloyuser_85840\n password: alloypass_60302\n vpcNetwork: ${default.id}\n labels:\n alloyfoo: alloybar\n primaryInstanceSettings:\n id: priminstid\n machineConfig:\n cpuCount: 2\n databaseFlags: {}\n labels:\n alloysinstfoo: allowinstbar\n options:\n dependson:\n - ${vpcConnection}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Database Migration Service Connection Profile Existing Mysql\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst destinationCsql = new gcp.sql.DatabaseInstance(\"destination_csql\", {\n name: \"destination-csql\",\n databaseVersion: \"MYSQL_5_7\",\n settings: {\n tier: \"db-n1-standard-1\",\n deletionProtectionEnabled: false,\n },\n deletionProtection: false,\n});\nconst existing_mysql = new gcp.databasemigrationservice.ConnectionProfile(\"existing-mysql\", {\n location: \"us-central1\",\n connectionProfileId: \"destination-cp\",\n displayName: \"destination-cp_display\",\n labels: {\n foo: \"bar\",\n },\n mysql: {\n cloudSqlId: \"destination-csql\",\n },\n}, {\n dependsOn: [destinationCsql],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ndestination_csql = gcp.sql.DatabaseInstance(\"destination_csql\",\n name=\"destination-csql\",\n database_version=\"MYSQL_5_7\",\n settings={\n \"tier\": \"db-n1-standard-1\",\n \"deletion_protection_enabled\": False,\n },\n deletion_protection=False)\nexisting_mysql = gcp.databasemigrationservice.ConnectionProfile(\"existing-mysql\",\n location=\"us-central1\",\n connection_profile_id=\"destination-cp\",\n display_name=\"destination-cp_display\",\n labels={\n \"foo\": \"bar\",\n },\n mysql={\n \"cloud_sql_id\": \"destination-csql\",\n },\n opts = pulumi.ResourceOptions(depends_on=[destination_csql]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var destinationCsql = new Gcp.Sql.DatabaseInstance(\"destination_csql\", new()\n {\n Name = \"destination-csql\",\n DatabaseVersion = \"MYSQL_5_7\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-n1-standard-1\",\n DeletionProtectionEnabled = false,\n },\n DeletionProtection = false,\n });\n\n var existing_mysql = new Gcp.DatabaseMigrationService.ConnectionProfile(\"existing-mysql\", new()\n {\n Location = \"us-central1\",\n ConnectionProfileId = \"destination-cp\",\n DisplayName = \"destination-cp_display\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Mysql = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileMysqlArgs\n {\n CloudSqlId = \"destination-csql\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n destinationCsql,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/databasemigrationservice\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestinationCsql, err := sql.NewDatabaseInstance(ctx, \"destination_csql\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"destination-csql\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_5_7\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-n1-standard-1\"),\n\t\t\t\tDeletionProtectionEnabled: pulumi.Bool(false),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = databasemigrationservice.NewConnectionProfile(ctx, \"existing-mysql\", \u0026databasemigrationservice.ConnectionProfileArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"destination-cp\"),\n\t\t\tDisplayName: pulumi.String(\"destination-cp_display\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tMysql: \u0026databasemigrationservice.ConnectionProfileMysqlArgs{\n\t\t\t\tCloudSqlId: pulumi.String(\"destination-csql\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdestinationCsql,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfile;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfileArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileMysqlArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var destinationCsql = new DatabaseInstance(\"destinationCsql\", DatabaseInstanceArgs.builder()\n .name(\"destination-csql\")\n .databaseVersion(\"MYSQL_5_7\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-n1-standard-1\")\n .deletionProtectionEnabled(false)\n .build())\n .deletionProtection(false)\n .build());\n\n var existing_mysql = new ConnectionProfile(\"existing-mysql\", ConnectionProfileArgs.builder()\n .location(\"us-central1\")\n .connectionProfileId(\"destination-cp\")\n .displayName(\"destination-cp_display\")\n .labels(Map.of(\"foo\", \"bar\"))\n .mysql(ConnectionProfileMysqlArgs.builder()\n .cloudSqlId(\"destination-csql\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(destinationCsql)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n destinationCsql:\n type: gcp:sql:DatabaseInstance\n name: destination_csql\n properties:\n name: destination-csql\n databaseVersion: MYSQL_5_7\n settings:\n tier: db-n1-standard-1\n deletionProtectionEnabled: false\n deletionProtection: false\n existing-mysql:\n type: gcp:databasemigrationservice:ConnectionProfile\n properties:\n location: us-central1\n connectionProfileId: destination-cp\n displayName: destination-cp_display\n labels:\n foo: bar\n mysql:\n cloudSqlId: destination-csql\n options:\n dependson:\n - ${destinationCsql}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Database Migration Service Connection Profile Existing Postgres\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst destinationCsql = new gcp.sql.DatabaseInstance(\"destination_csql\", {\n name: \"destination-csql\",\n databaseVersion: \"POSTGRES_15\",\n settings: {\n tier: \"db-custom-2-13312\",\n deletionProtectionEnabled: false,\n },\n deletionProtection: false,\n});\nconst existing_psql = new gcp.databasemigrationservice.ConnectionProfile(\"existing-psql\", {\n location: \"us-central1\",\n connectionProfileId: \"destination-cp\",\n displayName: \"destination-cp_display\",\n labels: {\n foo: \"bar\",\n },\n postgresql: {\n cloudSqlId: \"destination-csql\",\n },\n}, {\n dependsOn: [destinationCsql],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ndestination_csql = gcp.sql.DatabaseInstance(\"destination_csql\",\n name=\"destination-csql\",\n database_version=\"POSTGRES_15\",\n settings={\n \"tier\": \"db-custom-2-13312\",\n \"deletion_protection_enabled\": False,\n },\n deletion_protection=False)\nexisting_psql = gcp.databasemigrationservice.ConnectionProfile(\"existing-psql\",\n location=\"us-central1\",\n connection_profile_id=\"destination-cp\",\n display_name=\"destination-cp_display\",\n labels={\n \"foo\": \"bar\",\n },\n postgresql={\n \"cloud_sql_id\": \"destination-csql\",\n },\n opts = pulumi.ResourceOptions(depends_on=[destination_csql]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var destinationCsql = new Gcp.Sql.DatabaseInstance(\"destination_csql\", new()\n {\n Name = \"destination-csql\",\n DatabaseVersion = \"POSTGRES_15\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-custom-2-13312\",\n DeletionProtectionEnabled = false,\n },\n DeletionProtection = false,\n });\n\n var existing_psql = new Gcp.DatabaseMigrationService.ConnectionProfile(\"existing-psql\", new()\n {\n Location = \"us-central1\",\n ConnectionProfileId = \"destination-cp\",\n DisplayName = \"destination-cp_display\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Postgresql = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfilePostgresqlArgs\n {\n CloudSqlId = \"destination-csql\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n destinationCsql,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/databasemigrationservice\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestinationCsql, err := sql.NewDatabaseInstance(ctx, \"destination_csql\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"destination-csql\"),\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_15\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-custom-2-13312\"),\n\t\t\t\tDeletionProtectionEnabled: pulumi.Bool(false),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = databasemigrationservice.NewConnectionProfile(ctx, \"existing-psql\", \u0026databasemigrationservice.ConnectionProfileArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"destination-cp\"),\n\t\t\tDisplayName: pulumi.String(\"destination-cp_display\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tPostgresql: \u0026databasemigrationservice.ConnectionProfilePostgresqlArgs{\n\t\t\t\tCloudSqlId: pulumi.String(\"destination-csql\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdestinationCsql,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfile;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfileArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfilePostgresqlArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var destinationCsql = new DatabaseInstance(\"destinationCsql\", DatabaseInstanceArgs.builder()\n .name(\"destination-csql\")\n .databaseVersion(\"POSTGRES_15\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-custom-2-13312\")\n .deletionProtectionEnabled(false)\n .build())\n .deletionProtection(false)\n .build());\n\n var existing_psql = new ConnectionProfile(\"existing-psql\", ConnectionProfileArgs.builder()\n .location(\"us-central1\")\n .connectionProfileId(\"destination-cp\")\n .displayName(\"destination-cp_display\")\n .labels(Map.of(\"foo\", \"bar\"))\n .postgresql(ConnectionProfilePostgresqlArgs.builder()\n .cloudSqlId(\"destination-csql\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(destinationCsql)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n destinationCsql:\n type: gcp:sql:DatabaseInstance\n name: destination_csql\n properties:\n name: destination-csql\n databaseVersion: POSTGRES_15\n settings:\n tier: db-custom-2-13312\n deletionProtectionEnabled: false\n deletionProtection: false\n existing-psql:\n type: gcp:databasemigrationservice:ConnectionProfile\n properties:\n location: us-central1\n connectionProfileId: destination-cp\n displayName: destination-cp_display\n labels:\n foo: bar\n postgresql:\n cloudSqlId: destination-csql\n options:\n dependson:\n - ${destinationCsql}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Database Migration Service Connection Profile Existing Alloydb\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst _default = new gcp.compute.Network(\"default\", {name: \"destination-alloydb\"});\nconst destinationAlloydb = new gcp.alloydb.Cluster(\"destination_alloydb\", {\n clusterId: \"destination-alloydb\",\n location: \"us-central1\",\n networkConfig: {\n network: _default.id,\n },\n databaseVersion: \"POSTGRES_15\",\n initialUser: {\n user: \"destination-alloydb\",\n password: \"destination-alloydb\",\n },\n});\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"destination-alloydb\",\n addressType: \"INTERNAL\",\n purpose: \"VPC_PEERING\",\n prefixLength: 16,\n network: _default.id,\n});\nconst vpcConnection = new gcp.servicenetworking.Connection(\"vpc_connection\", {\n network: _default.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAlloc.name],\n});\nconst destinationAlloydbPrimary = new gcp.alloydb.Instance(\"destination_alloydb_primary\", {\n cluster: destinationAlloydb.name,\n instanceId: \"destination-alloydb-primary\",\n instanceType: \"PRIMARY\",\n}, {\n dependsOn: [vpcConnection],\n});\nconst existing_alloydb = new gcp.databasemigrationservice.ConnectionProfile(\"existing-alloydb\", {\n location: \"us-central1\",\n connectionProfileId: \"destination-cp\",\n displayName: \"destination-cp_display\",\n labels: {\n foo: \"bar\",\n },\n postgresql: {\n alloydbClusterId: \"destination-alloydb\",\n },\n}, {\n dependsOn: [\n destinationAlloydb,\n destinationAlloydbPrimary,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ndefault = gcp.compute.Network(\"default\", name=\"destination-alloydb\")\ndestination_alloydb = gcp.alloydb.Cluster(\"destination_alloydb\",\n cluster_id=\"destination-alloydb\",\n location=\"us-central1\",\n network_config={\n \"network\": default.id,\n },\n database_version=\"POSTGRES_15\",\n initial_user={\n \"user\": \"destination-alloydb\",\n \"password\": \"destination-alloydb\",\n })\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"destination-alloydb\",\n address_type=\"INTERNAL\",\n purpose=\"VPC_PEERING\",\n prefix_length=16,\n network=default.id)\nvpc_connection = gcp.servicenetworking.Connection(\"vpc_connection\",\n network=default.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_alloc.name])\ndestination_alloydb_primary = gcp.alloydb.Instance(\"destination_alloydb_primary\",\n cluster=destination_alloydb.name,\n instance_id=\"destination-alloydb-primary\",\n instance_type=\"PRIMARY\",\n opts = pulumi.ResourceOptions(depends_on=[vpc_connection]))\nexisting_alloydb = gcp.databasemigrationservice.ConnectionProfile(\"existing-alloydb\",\n location=\"us-central1\",\n connection_profile_id=\"destination-cp\",\n display_name=\"destination-cp_display\",\n labels={\n \"foo\": \"bar\",\n },\n postgresql={\n \"alloydb_cluster_id\": \"destination-alloydb\",\n },\n opts = pulumi.ResourceOptions(depends_on=[\n destination_alloydb,\n destination_alloydb_primary,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"destination-alloydb\",\n });\n\n var destinationAlloydb = new Gcp.Alloydb.Cluster(\"destination_alloydb\", new()\n {\n ClusterId = \"destination-alloydb\",\n Location = \"us-central1\",\n NetworkConfig = new Gcp.Alloydb.Inputs.ClusterNetworkConfigArgs\n {\n Network = @default.Id,\n },\n DatabaseVersion = \"POSTGRES_15\",\n InitialUser = new Gcp.Alloydb.Inputs.ClusterInitialUserArgs\n {\n User = \"destination-alloydb\",\n Password = \"destination-alloydb\",\n },\n });\n\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"destination-alloydb\",\n AddressType = \"INTERNAL\",\n Purpose = \"VPC_PEERING\",\n PrefixLength = 16,\n Network = @default.Id,\n });\n\n var vpcConnection = new Gcp.ServiceNetworking.Connection(\"vpc_connection\", new()\n {\n Network = @default.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAlloc.Name,\n },\n });\n\n var destinationAlloydbPrimary = new Gcp.Alloydb.Instance(\"destination_alloydb_primary\", new()\n {\n Cluster = destinationAlloydb.Name,\n InstanceId = \"destination-alloydb-primary\",\n InstanceType = \"PRIMARY\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vpcConnection,\n },\n });\n\n var existing_alloydb = new Gcp.DatabaseMigrationService.ConnectionProfile(\"existing-alloydb\", new()\n {\n Location = \"us-central1\",\n ConnectionProfileId = \"destination-cp\",\n DisplayName = \"destination-cp_display\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Postgresql = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfilePostgresqlArgs\n {\n AlloydbClusterId = \"destination-alloydb\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n destinationAlloydb,\n destinationAlloydbPrimary,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/alloydb\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/databasemigrationservice\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"destination-alloydb\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestinationAlloydb, err := alloydb.NewCluster(ctx, \"destination_alloydb\", \u0026alloydb.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"destination-alloydb\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNetworkConfig: \u0026alloydb.ClusterNetworkConfigArgs{\n\t\t\t\tNetwork: _default.ID(),\n\t\t\t},\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_15\"),\n\t\t\tInitialUser: \u0026alloydb.ClusterInitialUserArgs{\n\t\t\t\tUser: pulumi.String(\"destination-alloydb\"),\n\t\t\t\tPassword: pulumi.String(\"destination-alloydb\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"destination-alloydb\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvpcConnection, err := servicenetworking.NewConnection(ctx, \"vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: _default.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tprivateIpAlloc.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestinationAlloydbPrimary, err := alloydb.NewInstance(ctx, \"destination_alloydb_primary\", \u0026alloydb.InstanceArgs{\n\t\t\tCluster: destinationAlloydb.Name,\n\t\t\tInstanceId: pulumi.String(\"destination-alloydb-primary\"),\n\t\t\tInstanceType: pulumi.String(\"PRIMARY\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = databasemigrationservice.NewConnectionProfile(ctx, \"existing-alloydb\", \u0026databasemigrationservice.ConnectionProfileArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"destination-cp\"),\n\t\t\tDisplayName: pulumi.String(\"destination-cp_display\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tPostgresql: \u0026databasemigrationservice.ConnectionProfilePostgresqlArgs{\n\t\t\t\tAlloydbClusterId: pulumi.String(\"destination-alloydb\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdestinationAlloydb,\n\t\t\tdestinationAlloydbPrimary,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.alloydb.Cluster;\nimport com.pulumi.gcp.alloydb.ClusterArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterNetworkConfigArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterInitialUserArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.alloydb.Instance;\nimport com.pulumi.gcp.alloydb.InstanceArgs;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfile;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfileArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfilePostgresqlArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"destination-alloydb\")\n .build());\n\n var destinationAlloydb = new Cluster(\"destinationAlloydb\", ClusterArgs.builder()\n .clusterId(\"destination-alloydb\")\n .location(\"us-central1\")\n .networkConfig(ClusterNetworkConfigArgs.builder()\n .network(default_.id())\n .build())\n .databaseVersion(\"POSTGRES_15\")\n .initialUser(ClusterInitialUserArgs.builder()\n .user(\"destination-alloydb\")\n .password(\"destination-alloydb\")\n .build())\n .build());\n\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"destination-alloydb\")\n .addressType(\"INTERNAL\")\n .purpose(\"VPC_PEERING\")\n .prefixLength(16)\n .network(default_.id())\n .build());\n\n var vpcConnection = new Connection(\"vpcConnection\", ConnectionArgs.builder()\n .network(default_.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAlloc.name())\n .build());\n\n var destinationAlloydbPrimary = new Instance(\"destinationAlloydbPrimary\", InstanceArgs.builder()\n .cluster(destinationAlloydb.name())\n .instanceId(\"destination-alloydb-primary\")\n .instanceType(\"PRIMARY\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(vpcConnection)\n .build());\n\n var existing_alloydb = new ConnectionProfile(\"existing-alloydb\", ConnectionProfileArgs.builder()\n .location(\"us-central1\")\n .connectionProfileId(\"destination-cp\")\n .displayName(\"destination-cp_display\")\n .labels(Map.of(\"foo\", \"bar\"))\n .postgresql(ConnectionProfilePostgresqlArgs.builder()\n .alloydbClusterId(\"destination-alloydb\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n destinationAlloydb,\n destinationAlloydbPrimary)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n destinationAlloydb:\n type: gcp:alloydb:Cluster\n name: destination_alloydb\n properties:\n clusterId: destination-alloydb\n location: us-central1\n networkConfig:\n network: ${default.id}\n databaseVersion: POSTGRES_15\n initialUser:\n user: destination-alloydb\n password: destination-alloydb\n destinationAlloydbPrimary:\n type: gcp:alloydb:Instance\n name: destination_alloydb_primary\n properties:\n cluster: ${destinationAlloydb.name}\n instanceId: destination-alloydb-primary\n instanceType: PRIMARY\n options:\n dependson:\n - ${vpcConnection}\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: destination-alloydb\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 16\n network: ${default.id}\n vpcConnection:\n type: gcp:servicenetworking:Connection\n name: vpc_connection\n properties:\n network: ${default.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAlloc.name}\n default:\n type: gcp:compute:Network\n properties:\n name: destination-alloydb\n existing-alloydb:\n type: gcp:databasemigrationservice:ConnectionProfile\n properties:\n location: us-central1\n connectionProfileId: destination-cp\n displayName: destination-cp_display\n labels:\n foo: bar\n postgresql:\n alloydbClusterId: destination-alloydb\n options:\n dependson:\n - ${destinationAlloydb}\n - ${destinationAlloydbPrimary}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nConnectionProfile can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/connectionProfiles/{{connection_profile_id}}`\n\n* `{{project}}/{{location}}/{{connection_profile_id}}`\n\n* `{{location}}/{{connection_profile_id}}`\n\nWhen using the `pulumi import` command, ConnectionProfile can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:databasemigrationservice/connectionProfile:ConnectionProfile default projects/{{project}}/locations/{{location}}/connectionProfiles/{{connection_profile_id}}\n```\n\n```sh\n$ pulumi import gcp:databasemigrationservice/connectionProfile:ConnectionProfile default {{project}}/{{location}}/{{connection_profile_id}}\n```\n\n```sh\n$ pulumi import gcp:databasemigrationservice/connectionProfile:ConnectionProfile default {{location}}/{{connection_profile_id}}\n```\n\n", + "description": "A connection profile definition.\n\n\nTo get more information about ConnectionProfile, see:\n\n* [API documentation](https://cloud.google.com/database-migration/docs/reference/rest/v1/projects.locations.connectionProfiles/create)\n* How-to Guides\n * [Database Migration](https://cloud.google.com/database-migration/docs/)\n\n\n\n## Example Usage\n\n### Database Migration Service Connection Profile Cloudsql\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst cloudsqldb = new gcp.sql.DatabaseInstance(\"cloudsqldb\", {\n name: \"my-database\",\n databaseVersion: \"MYSQL_5_7\",\n settings: {\n tier: \"db-n1-standard-1\",\n deletionProtectionEnabled: false,\n },\n deletionProtection: false,\n});\nconst sqlClientCert = new gcp.sql.SslCert(\"sql_client_cert\", {\n commonName: \"my-cert\",\n instance: cloudsqldb.name,\n}, {\n dependsOn: [cloudsqldb],\n});\nconst sqldbUser = new gcp.sql.User(\"sqldb_user\", {\n name: \"my-username\",\n instance: cloudsqldb.name,\n password: \"my-password\",\n}, {\n dependsOn: [sqlClientCert],\n});\nconst cloudsqlprofile = new gcp.databasemigrationservice.ConnectionProfile(\"cloudsqlprofile\", {\n location: \"us-central1\",\n connectionProfileId: \"my-fromprofileid\",\n displayName: \"my-fromprofileid_display\",\n labels: {\n foo: \"bar\",\n },\n mysql: {\n host: cloudsqldb.ipAddresses.apply(ipAddresses =\u003e ipAddresses[0].ipAddress),\n port: 3306,\n username: sqldbUser.name,\n password: sqldbUser.password,\n ssl: {\n clientKey: sqlClientCert.privateKey,\n clientCertificate: sqlClientCert.cert,\n caCertificate: sqlClientCert.serverCaCert,\n },\n cloudSqlId: \"my-database\",\n },\n}, {\n dependsOn: [sqldbUser],\n});\nconst cloudsqlprofileDestination = new gcp.databasemigrationservice.ConnectionProfile(\"cloudsqlprofile_destination\", {\n location: \"us-central1\",\n connectionProfileId: \"my-toprofileid\",\n displayName: \"my-toprofileid_displayname\",\n labels: {\n foo: \"bar\",\n },\n cloudsql: {\n settings: {\n databaseVersion: \"MYSQL_5_7\",\n userLabels: {\n cloudfoo: \"cloudbar\",\n },\n tier: \"db-n1-standard-1\",\n edition: \"ENTERPRISE\",\n storageAutoResizeLimit: \"0\",\n activationPolicy: \"ALWAYS\",\n ipConfig: {\n enableIpv4: true,\n requireSsl: true,\n },\n autoStorageIncrease: true,\n dataDiskType: \"PD_HDD\",\n dataDiskSizeGb: \"11\",\n zone: \"us-central1-b\",\n sourceId: project.then(project =\u003e `projects/${project.projectId}/locations/us-central1/connectionProfiles/my-fromprofileid`),\n rootPassword: \"testpasscloudsql\",\n },\n },\n}, {\n dependsOn: [cloudsqlprofile],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ncloudsqldb = gcp.sql.DatabaseInstance(\"cloudsqldb\",\n name=\"my-database\",\n database_version=\"MYSQL_5_7\",\n settings={\n \"tier\": \"db-n1-standard-1\",\n \"deletion_protection_enabled\": False,\n },\n deletion_protection=False)\nsql_client_cert = gcp.sql.SslCert(\"sql_client_cert\",\n common_name=\"my-cert\",\n instance=cloudsqldb.name,\n opts = pulumi.ResourceOptions(depends_on=[cloudsqldb]))\nsqldb_user = gcp.sql.User(\"sqldb_user\",\n name=\"my-username\",\n instance=cloudsqldb.name,\n password=\"my-password\",\n opts = pulumi.ResourceOptions(depends_on=[sql_client_cert]))\ncloudsqlprofile = gcp.databasemigrationservice.ConnectionProfile(\"cloudsqlprofile\",\n location=\"us-central1\",\n connection_profile_id=\"my-fromprofileid\",\n display_name=\"my-fromprofileid_display\",\n labels={\n \"foo\": \"bar\",\n },\n mysql={\n \"host\": cloudsqldb.ip_addresses[0].ip_address,\n \"port\": 3306,\n \"username\": sqldb_user.name,\n \"password\": sqldb_user.password,\n \"ssl\": {\n \"client_key\": sql_client_cert.private_key,\n \"client_certificate\": sql_client_cert.cert,\n \"ca_certificate\": sql_client_cert.server_ca_cert,\n },\n \"cloud_sql_id\": \"my-database\",\n },\n opts = pulumi.ResourceOptions(depends_on=[sqldb_user]))\ncloudsqlprofile_destination = gcp.databasemigrationservice.ConnectionProfile(\"cloudsqlprofile_destination\",\n location=\"us-central1\",\n connection_profile_id=\"my-toprofileid\",\n display_name=\"my-toprofileid_displayname\",\n labels={\n \"foo\": \"bar\",\n },\n cloudsql={\n \"settings\": {\n \"database_version\": \"MYSQL_5_7\",\n \"user_labels\": {\n \"cloudfoo\": \"cloudbar\",\n },\n \"tier\": \"db-n1-standard-1\",\n \"edition\": \"ENTERPRISE\",\n \"storage_auto_resize_limit\": \"0\",\n \"activation_policy\": \"ALWAYS\",\n \"ip_config\": {\n \"enable_ipv4\": True,\n \"require_ssl\": True,\n },\n \"auto_storage_increase\": True,\n \"data_disk_type\": \"PD_HDD\",\n \"data_disk_size_gb\": \"11\",\n \"zone\": \"us-central1-b\",\n \"source_id\": f\"projects/{project.project_id}/locations/us-central1/connectionProfiles/my-fromprofileid\",\n \"root_password\": \"testpasscloudsql\",\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[cloudsqlprofile]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cloudsqldb = new Gcp.Sql.DatabaseInstance(\"cloudsqldb\", new()\n {\n Name = \"my-database\",\n DatabaseVersion = \"MYSQL_5_7\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-n1-standard-1\",\n DeletionProtectionEnabled = false,\n },\n DeletionProtection = false,\n });\n\n var sqlClientCert = new Gcp.Sql.SslCert(\"sql_client_cert\", new()\n {\n CommonName = \"my-cert\",\n Instance = cloudsqldb.Name,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cloudsqldb,\n },\n });\n\n var sqldbUser = new Gcp.Sql.User(\"sqldb_user\", new()\n {\n Name = \"my-username\",\n Instance = cloudsqldb.Name,\n Password = \"my-password\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n sqlClientCert,\n },\n });\n\n var cloudsqlprofile = new Gcp.DatabaseMigrationService.ConnectionProfile(\"cloudsqlprofile\", new()\n {\n Location = \"us-central1\",\n ConnectionProfileId = \"my-fromprofileid\",\n DisplayName = \"my-fromprofileid_display\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Mysql = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileMysqlArgs\n {\n Host = cloudsqldb.IpAddresses.Apply(ipAddresses =\u003e ipAddresses[0].IpAddress),\n Port = 3306,\n Username = sqldbUser.Name,\n Password = sqldbUser.Password,\n Ssl = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileMysqlSslArgs\n {\n ClientKey = sqlClientCert.PrivateKey,\n ClientCertificate = sqlClientCert.Cert,\n CaCertificate = sqlClientCert.ServerCaCert,\n },\n CloudSqlId = \"my-database\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n sqldbUser,\n },\n });\n\n var cloudsqlprofileDestination = new Gcp.DatabaseMigrationService.ConnectionProfile(\"cloudsqlprofile_destination\", new()\n {\n Location = \"us-central1\",\n ConnectionProfileId = \"my-toprofileid\",\n DisplayName = \"my-toprofileid_displayname\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Cloudsql = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileCloudsqlArgs\n {\n Settings = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileCloudsqlSettingsArgs\n {\n DatabaseVersion = \"MYSQL_5_7\",\n UserLabels = \n {\n { \"cloudfoo\", \"cloudbar\" },\n },\n Tier = \"db-n1-standard-1\",\n Edition = \"ENTERPRISE\",\n StorageAutoResizeLimit = \"0\",\n ActivationPolicy = \"ALWAYS\",\n IpConfig = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileCloudsqlSettingsIpConfigArgs\n {\n EnableIpv4 = true,\n RequireSsl = true,\n },\n AutoStorageIncrease = true,\n DataDiskType = \"PD_HDD\",\n DataDiskSizeGb = \"11\",\n Zone = \"us-central1-b\",\n SourceId = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.ProjectId)}/locations/us-central1/connectionProfiles/my-fromprofileid\",\n RootPassword = \"testpasscloudsql\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cloudsqlprofile,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/databasemigrationservice\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcloudsqldb, err := sql.NewDatabaseInstance(ctx, \"cloudsqldb\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"my-database\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_5_7\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-n1-standard-1\"),\n\t\t\t\tDeletionProtectionEnabled: pulumi.Bool(false),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsqlClientCert, err := sql.NewSslCert(ctx, \"sql_client_cert\", \u0026sql.SslCertArgs{\n\t\t\tCommonName: pulumi.String(\"my-cert\"),\n\t\t\tInstance: cloudsqldb.Name,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcloudsqldb,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsqldbUser, err := sql.NewUser(ctx, \"sqldb_user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"my-username\"),\n\t\t\tInstance: cloudsqldb.Name,\n\t\t\tPassword: pulumi.String(\"my-password\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsqlClientCert,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcloudsqlprofile, err := databasemigrationservice.NewConnectionProfile(ctx, \"cloudsqlprofile\", \u0026databasemigrationservice.ConnectionProfileArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"my-fromprofileid\"),\n\t\t\tDisplayName: pulumi.String(\"my-fromprofileid_display\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tMysql: \u0026databasemigrationservice.ConnectionProfileMysqlArgs{\n\t\t\t\tHost: cloudsqldb.IpAddresses.ApplyT(func(ipAddresses []sql.DatabaseInstanceIpAddress) (*string, error) {\n\t\t\t\t\treturn \u0026ipAddresses[0].IpAddress, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tPort: pulumi.Int(3306),\n\t\t\t\tUsername: sqldbUser.Name,\n\t\t\t\tPassword: sqldbUser.Password,\n\t\t\t\tSsl: \u0026databasemigrationservice.ConnectionProfileMysqlSslArgs{\n\t\t\t\t\tClientKey: sqlClientCert.PrivateKey,\n\t\t\t\t\tClientCertificate: sqlClientCert.Cert,\n\t\t\t\t\tCaCertificate: sqlClientCert.ServerCaCert,\n\t\t\t\t},\n\t\t\t\tCloudSqlId: pulumi.String(\"my-database\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsqldbUser,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = databasemigrationservice.NewConnectionProfile(ctx, \"cloudsqlprofile_destination\", \u0026databasemigrationservice.ConnectionProfileArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"my-toprofileid\"),\n\t\t\tDisplayName: pulumi.String(\"my-toprofileid_displayname\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tCloudsql: \u0026databasemigrationservice.ConnectionProfileCloudsqlArgs{\n\t\t\t\tSettings: \u0026databasemigrationservice.ConnectionProfileCloudsqlSettingsArgs{\n\t\t\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_5_7\"),\n\t\t\t\t\tUserLabels: pulumi.StringMap{\n\t\t\t\t\t\t\"cloudfoo\": pulumi.String(\"cloudbar\"),\n\t\t\t\t\t},\n\t\t\t\t\tTier: pulumi.String(\"db-n1-standard-1\"),\n\t\t\t\t\tEdition: pulumi.String(\"ENTERPRISE\"),\n\t\t\t\t\tStorageAutoResizeLimit: pulumi.String(\"0\"),\n\t\t\t\t\tActivationPolicy: pulumi.String(\"ALWAYS\"),\n\t\t\t\t\tIpConfig: \u0026databasemigrationservice.ConnectionProfileCloudsqlSettingsIpConfigArgs{\n\t\t\t\t\t\tEnableIpv4: pulumi.Bool(true),\n\t\t\t\t\t\tRequireSsl: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tAutoStorageIncrease: pulumi.Bool(true),\n\t\t\t\t\tDataDiskType: pulumi.String(\"PD_HDD\"),\n\t\t\t\t\tDataDiskSizeGb: pulumi.String(\"11\"),\n\t\t\t\t\tZone: pulumi.String(\"us-central1-b\"),\n\t\t\t\t\tSourceId: pulumi.Sprintf(\"projects/%v/locations/us-central1/connectionProfiles/my-fromprofileid\", project.ProjectId),\n\t\t\t\t\tRootPassword: pulumi.String(\"testpasscloudsql\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcloudsqlprofile,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.SslCert;\nimport com.pulumi.gcp.sql.SslCertArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfile;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfileArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileMysqlArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileMysqlSslArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileCloudsqlArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileCloudsqlSettingsArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileCloudsqlSettingsIpConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var cloudsqldb = new DatabaseInstance(\"cloudsqldb\", DatabaseInstanceArgs.builder()\n .name(\"my-database\")\n .databaseVersion(\"MYSQL_5_7\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-n1-standard-1\")\n .deletionProtectionEnabled(false)\n .build())\n .deletionProtection(false)\n .build());\n\n var sqlClientCert = new SslCert(\"sqlClientCert\", SslCertArgs.builder()\n .commonName(\"my-cert\")\n .instance(cloudsqldb.name())\n .build(), CustomResourceOptions.builder()\n .dependsOn(cloudsqldb)\n .build());\n\n var sqldbUser = new User(\"sqldbUser\", UserArgs.builder()\n .name(\"my-username\")\n .instance(cloudsqldb.name())\n .password(\"my-password\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(sqlClientCert)\n .build());\n\n var cloudsqlprofile = new ConnectionProfile(\"cloudsqlprofile\", ConnectionProfileArgs.builder()\n .location(\"us-central1\")\n .connectionProfileId(\"my-fromprofileid\")\n .displayName(\"my-fromprofileid_display\")\n .labels(Map.of(\"foo\", \"bar\"))\n .mysql(ConnectionProfileMysqlArgs.builder()\n .host(cloudsqldb.ipAddresses().applyValue(ipAddresses -\u003e ipAddresses[0].ipAddress()))\n .port(3306)\n .username(sqldbUser.name())\n .password(sqldbUser.password())\n .ssl(ConnectionProfileMysqlSslArgs.builder()\n .clientKey(sqlClientCert.privateKey())\n .clientCertificate(sqlClientCert.cert())\n .caCertificate(sqlClientCert.serverCaCert())\n .build())\n .cloudSqlId(\"my-database\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(sqldbUser)\n .build());\n\n var cloudsqlprofileDestination = new ConnectionProfile(\"cloudsqlprofileDestination\", ConnectionProfileArgs.builder()\n .location(\"us-central1\")\n .connectionProfileId(\"my-toprofileid\")\n .displayName(\"my-toprofileid_displayname\")\n .labels(Map.of(\"foo\", \"bar\"))\n .cloudsql(ConnectionProfileCloudsqlArgs.builder()\n .settings(ConnectionProfileCloudsqlSettingsArgs.builder()\n .databaseVersion(\"MYSQL_5_7\")\n .userLabels(Map.of(\"cloudfoo\", \"cloudbar\"))\n .tier(\"db-n1-standard-1\")\n .edition(\"ENTERPRISE\")\n .storageAutoResizeLimit(\"0\")\n .activationPolicy(\"ALWAYS\")\n .ipConfig(ConnectionProfileCloudsqlSettingsIpConfigArgs.builder()\n .enableIpv4(true)\n .requireSsl(true)\n .build())\n .autoStorageIncrease(true)\n .dataDiskType(\"PD_HDD\")\n .dataDiskSizeGb(\"11\")\n .zone(\"us-central1-b\")\n .sourceId(String.format(\"projects/%s/locations/us-central1/connectionProfiles/my-fromprofileid\", project.applyValue(getProjectResult -\u003e getProjectResult.projectId())))\n .rootPassword(\"testpasscloudsql\")\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(cloudsqlprofile)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cloudsqldb:\n type: gcp:sql:DatabaseInstance\n properties:\n name: my-database\n databaseVersion: MYSQL_5_7\n settings:\n tier: db-n1-standard-1\n deletionProtectionEnabled: false\n deletionProtection: false\n sqlClientCert:\n type: gcp:sql:SslCert\n name: sql_client_cert\n properties:\n commonName: my-cert\n instance: ${cloudsqldb.name}\n options:\n dependson:\n - ${cloudsqldb}\n sqldbUser:\n type: gcp:sql:User\n name: sqldb_user\n properties:\n name: my-username\n instance: ${cloudsqldb.name}\n password: my-password\n options:\n dependson:\n - ${sqlClientCert}\n cloudsqlprofile:\n type: gcp:databasemigrationservice:ConnectionProfile\n properties:\n location: us-central1\n connectionProfileId: my-fromprofileid\n displayName: my-fromprofileid_display\n labels:\n foo: bar\n mysql:\n host: ${cloudsqldb.ipAddresses[0].ipAddress}\n port: 3306\n username: ${sqldbUser.name}\n password: ${sqldbUser.password}\n ssl:\n clientKey: ${sqlClientCert.privateKey}\n clientCertificate: ${sqlClientCert.cert}\n caCertificate: ${sqlClientCert.serverCaCert}\n cloudSqlId: my-database\n options:\n dependson:\n - ${sqldbUser}\n cloudsqlprofileDestination:\n type: gcp:databasemigrationservice:ConnectionProfile\n name: cloudsqlprofile_destination\n properties:\n location: us-central1\n connectionProfileId: my-toprofileid\n displayName: my-toprofileid_displayname\n labels:\n foo: bar\n cloudsql:\n settings:\n databaseVersion: MYSQL_5_7\n userLabels:\n cloudfoo: cloudbar\n tier: db-n1-standard-1\n edition: ENTERPRISE\n storageAutoResizeLimit: '0'\n activationPolicy: ALWAYS\n ipConfig:\n enableIpv4: true\n requireSsl: true\n autoStorageIncrease: true\n dataDiskType: PD_HDD\n dataDiskSizeGb: '11'\n zone: us-central1-b\n sourceId: projects/${project.projectId}/locations/us-central1/connectionProfiles/my-fromprofileid\n rootPassword: testpasscloudsql\n options:\n dependson:\n - ${cloudsqlprofile}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Database Migration Service Connection Profile Postgres\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst postgresqldb = new gcp.sql.DatabaseInstance(\"postgresqldb\", {\n name: \"my-database\",\n databaseVersion: \"POSTGRES_12\",\n settings: {\n tier: \"db-custom-2-13312\",\n },\n deletionProtection: false,\n});\nconst sqlClientCert = new gcp.sql.SslCert(\"sql_client_cert\", {\n commonName: \"my-cert\",\n instance: postgresqldb.name,\n}, {\n dependsOn: [postgresqldb],\n});\nconst sqldbUser = new gcp.sql.User(\"sqldb_user\", {\n name: \"my-username\",\n instance: postgresqldb.name,\n password: \"my-password\",\n}, {\n dependsOn: [sqlClientCert],\n});\nconst postgresprofile = new gcp.databasemigrationservice.ConnectionProfile(\"postgresprofile\", {\n location: \"us-central1\",\n connectionProfileId: \"my-profileid\",\n displayName: \"my-profileid_display\",\n labels: {\n foo: \"bar\",\n },\n postgresql: {\n host: postgresqldb.ipAddresses.apply(ipAddresses =\u003e ipAddresses[0].ipAddress),\n port: 5432,\n username: sqldbUser.name,\n password: sqldbUser.password,\n ssl: {\n clientKey: sqlClientCert.privateKey,\n clientCertificate: sqlClientCert.cert,\n caCertificate: sqlClientCert.serverCaCert,\n },\n cloudSqlId: \"my-database\",\n },\n}, {\n dependsOn: [sqldbUser],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npostgresqldb = gcp.sql.DatabaseInstance(\"postgresqldb\",\n name=\"my-database\",\n database_version=\"POSTGRES_12\",\n settings={\n \"tier\": \"db-custom-2-13312\",\n },\n deletion_protection=False)\nsql_client_cert = gcp.sql.SslCert(\"sql_client_cert\",\n common_name=\"my-cert\",\n instance=postgresqldb.name,\n opts = pulumi.ResourceOptions(depends_on=[postgresqldb]))\nsqldb_user = gcp.sql.User(\"sqldb_user\",\n name=\"my-username\",\n instance=postgresqldb.name,\n password=\"my-password\",\n opts = pulumi.ResourceOptions(depends_on=[sql_client_cert]))\npostgresprofile = gcp.databasemigrationservice.ConnectionProfile(\"postgresprofile\",\n location=\"us-central1\",\n connection_profile_id=\"my-profileid\",\n display_name=\"my-profileid_display\",\n labels={\n \"foo\": \"bar\",\n },\n postgresql={\n \"host\": postgresqldb.ip_addresses[0].ip_address,\n \"port\": 5432,\n \"username\": sqldb_user.name,\n \"password\": sqldb_user.password,\n \"ssl\": {\n \"client_key\": sql_client_cert.private_key,\n \"client_certificate\": sql_client_cert.cert,\n \"ca_certificate\": sql_client_cert.server_ca_cert,\n },\n \"cloud_sql_id\": \"my-database\",\n },\n opts = pulumi.ResourceOptions(depends_on=[sqldb_user]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var postgresqldb = new Gcp.Sql.DatabaseInstance(\"postgresqldb\", new()\n {\n Name = \"my-database\",\n DatabaseVersion = \"POSTGRES_12\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-custom-2-13312\",\n },\n DeletionProtection = false,\n });\n\n var sqlClientCert = new Gcp.Sql.SslCert(\"sql_client_cert\", new()\n {\n CommonName = \"my-cert\",\n Instance = postgresqldb.Name,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n postgresqldb,\n },\n });\n\n var sqldbUser = new Gcp.Sql.User(\"sqldb_user\", new()\n {\n Name = \"my-username\",\n Instance = postgresqldb.Name,\n Password = \"my-password\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n sqlClientCert,\n },\n });\n\n var postgresprofile = new Gcp.DatabaseMigrationService.ConnectionProfile(\"postgresprofile\", new()\n {\n Location = \"us-central1\",\n ConnectionProfileId = \"my-profileid\",\n DisplayName = \"my-profileid_display\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Postgresql = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfilePostgresqlArgs\n {\n Host = postgresqldb.IpAddresses.Apply(ipAddresses =\u003e ipAddresses[0].IpAddress),\n Port = 5432,\n Username = sqldbUser.Name,\n Password = sqldbUser.Password,\n Ssl = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfilePostgresqlSslArgs\n {\n ClientKey = sqlClientCert.PrivateKey,\n ClientCertificate = sqlClientCert.Cert,\n CaCertificate = sqlClientCert.ServerCaCert,\n },\n CloudSqlId = \"my-database\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n sqldbUser,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/databasemigrationservice\"\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\tpostgresqldb, err := sql.NewDatabaseInstance(ctx, \"postgresqldb\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"my-database\"),\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_12\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-custom-2-13312\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsqlClientCert, err := sql.NewSslCert(ctx, \"sql_client_cert\", \u0026sql.SslCertArgs{\n\t\t\tCommonName: pulumi.String(\"my-cert\"),\n\t\t\tInstance: postgresqldb.Name,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tpostgresqldb,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsqldbUser, err := sql.NewUser(ctx, \"sqldb_user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"my-username\"),\n\t\t\tInstance: postgresqldb.Name,\n\t\t\tPassword: pulumi.String(\"my-password\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsqlClientCert,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = databasemigrationservice.NewConnectionProfile(ctx, \"postgresprofile\", \u0026databasemigrationservice.ConnectionProfileArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"my-profileid\"),\n\t\t\tDisplayName: pulumi.String(\"my-profileid_display\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tPostgresql: \u0026databasemigrationservice.ConnectionProfilePostgresqlArgs{\n\t\t\t\tHost: postgresqldb.IpAddresses.ApplyT(func(ipAddresses []sql.DatabaseInstanceIpAddress) (*string, error) {\n\t\t\t\t\treturn \u0026ipAddresses[0].IpAddress, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tPort: pulumi.Int(5432),\n\t\t\t\tUsername: sqldbUser.Name,\n\t\t\t\tPassword: sqldbUser.Password,\n\t\t\t\tSsl: \u0026databasemigrationservice.ConnectionProfilePostgresqlSslArgs{\n\t\t\t\t\tClientKey: sqlClientCert.PrivateKey,\n\t\t\t\t\tClientCertificate: sqlClientCert.Cert,\n\t\t\t\t\tCaCertificate: sqlClientCert.ServerCaCert,\n\t\t\t\t},\n\t\t\t\tCloudSqlId: pulumi.String(\"my-database\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsqldbUser,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.SslCert;\nimport com.pulumi.gcp.sql.SslCertArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfile;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfileArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfilePostgresqlArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfilePostgresqlSslArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var postgresqldb = new DatabaseInstance(\"postgresqldb\", DatabaseInstanceArgs.builder()\n .name(\"my-database\")\n .databaseVersion(\"POSTGRES_12\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-custom-2-13312\")\n .build())\n .deletionProtection(false)\n .build());\n\n var sqlClientCert = new SslCert(\"sqlClientCert\", SslCertArgs.builder()\n .commonName(\"my-cert\")\n .instance(postgresqldb.name())\n .build(), CustomResourceOptions.builder()\n .dependsOn(postgresqldb)\n .build());\n\n var sqldbUser = new User(\"sqldbUser\", UserArgs.builder()\n .name(\"my-username\")\n .instance(postgresqldb.name())\n .password(\"my-password\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(sqlClientCert)\n .build());\n\n var postgresprofile = new ConnectionProfile(\"postgresprofile\", ConnectionProfileArgs.builder()\n .location(\"us-central1\")\n .connectionProfileId(\"my-profileid\")\n .displayName(\"my-profileid_display\")\n .labels(Map.of(\"foo\", \"bar\"))\n .postgresql(ConnectionProfilePostgresqlArgs.builder()\n .host(postgresqldb.ipAddresses().applyValue(ipAddresses -\u003e ipAddresses[0].ipAddress()))\n .port(5432)\n .username(sqldbUser.name())\n .password(sqldbUser.password())\n .ssl(ConnectionProfilePostgresqlSslArgs.builder()\n .clientKey(sqlClientCert.privateKey())\n .clientCertificate(sqlClientCert.cert())\n .caCertificate(sqlClientCert.serverCaCert())\n .build())\n .cloudSqlId(\"my-database\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(sqldbUser)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n postgresqldb:\n type: gcp:sql:DatabaseInstance\n properties:\n name: my-database\n databaseVersion: POSTGRES_12\n settings:\n tier: db-custom-2-13312\n deletionProtection: false\n sqlClientCert:\n type: gcp:sql:SslCert\n name: sql_client_cert\n properties:\n commonName: my-cert\n instance: ${postgresqldb.name}\n options:\n dependson:\n - ${postgresqldb}\n sqldbUser:\n type: gcp:sql:User\n name: sqldb_user\n properties:\n name: my-username\n instance: ${postgresqldb.name}\n password: my-password\n options:\n dependson:\n - ${sqlClientCert}\n postgresprofile:\n type: gcp:databasemigrationservice:ConnectionProfile\n properties:\n location: us-central1\n connectionProfileId: my-profileid\n displayName: my-profileid_display\n labels:\n foo: bar\n postgresql:\n host: ${postgresqldb.ipAddresses[0].ipAddress}\n port: 5432\n username: ${sqldbUser.name}\n password: ${sqldbUser.password}\n ssl:\n clientKey: ${sqlClientCert.privateKey}\n clientCertificate: ${sqlClientCert.cert}\n caCertificate: ${sqlClientCert.serverCaCert}\n cloudSqlId: my-database\n options:\n dependson:\n - ${sqldbUser}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Database Migration Service Connection Profile Oracle\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst oracleprofile = new gcp.databasemigrationservice.ConnectionProfile(\"oracleprofile\", {\n location: \"us-central1\",\n connectionProfileId: \"my-profileid\",\n displayName: \"my-profileid_display\",\n labels: {\n foo: \"bar\",\n },\n oracle: {\n host: \"host\",\n port: 1521,\n username: \"username\",\n password: \"password\",\n databaseService: \"dbprovider\",\n staticServiceIpConnectivity: {},\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\noracleprofile = gcp.databasemigrationservice.ConnectionProfile(\"oracleprofile\",\n location=\"us-central1\",\n connection_profile_id=\"my-profileid\",\n display_name=\"my-profileid_display\",\n labels={\n \"foo\": \"bar\",\n },\n oracle={\n \"host\": \"host\",\n \"port\": 1521,\n \"username\": \"username\",\n \"password\": \"password\",\n \"database_service\": \"dbprovider\",\n \"static_service_ip_connectivity\": {},\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var oracleprofile = new Gcp.DatabaseMigrationService.ConnectionProfile(\"oracleprofile\", new()\n {\n Location = \"us-central1\",\n ConnectionProfileId = \"my-profileid\",\n DisplayName = \"my-profileid_display\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Oracle = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileOracleArgs\n {\n Host = \"host\",\n Port = 1521,\n Username = \"username\",\n Password = \"password\",\n DatabaseService = \"dbprovider\",\n StaticServiceIpConnectivity = null,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/databasemigrationservice\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := databasemigrationservice.NewConnectionProfile(ctx, \"oracleprofile\", \u0026databasemigrationservice.ConnectionProfileArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"my-profileid\"),\n\t\t\tDisplayName: pulumi.String(\"my-profileid_display\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tOracle: \u0026databasemigrationservice.ConnectionProfileOracleArgs{\n\t\t\t\tHost: pulumi.String(\"host\"),\n\t\t\t\tPort: pulumi.Int(1521),\n\t\t\t\tUsername: pulumi.String(\"username\"),\n\t\t\t\tPassword: pulumi.String(\"password\"),\n\t\t\t\tDatabaseService: pulumi.String(\"dbprovider\"),\n\t\t\t\tStaticServiceIpConnectivity: \u0026databasemigrationservice.ConnectionProfileOracleStaticServiceIpConnectivityArgs{},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfile;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfileArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileOracleArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileOracleStaticServiceIpConnectivityArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var oracleprofile = new ConnectionProfile(\"oracleprofile\", ConnectionProfileArgs.builder()\n .location(\"us-central1\")\n .connectionProfileId(\"my-profileid\")\n .displayName(\"my-profileid_display\")\n .labels(Map.of(\"foo\", \"bar\"))\n .oracle(ConnectionProfileOracleArgs.builder()\n .host(\"host\")\n .port(1521)\n .username(\"username\")\n .password(\"password\")\n .databaseService(\"dbprovider\")\n .staticServiceIpConnectivity()\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n oracleprofile:\n type: gcp:databasemigrationservice:ConnectionProfile\n properties:\n location: us-central1\n connectionProfileId: my-profileid\n displayName: my-profileid_display\n labels:\n foo: bar\n oracle:\n host: host\n port: 1521\n username: username\n password: password\n databaseService: dbprovider\n staticServiceIpConnectivity: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Database Migration Service Connection Profile Alloydb\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst _default = new gcp.compute.Network(\"default\", {name: \"vpc-network\"});\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"private-ip-alloc\",\n addressType: \"INTERNAL\",\n purpose: \"VPC_PEERING\",\n prefixLength: 16,\n network: _default.id,\n});\nconst vpcConnection = new gcp.servicenetworking.Connection(\"vpc_connection\", {\n network: _default.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAlloc.name],\n});\nconst alloydbprofile = new gcp.databasemigrationservice.ConnectionProfile(\"alloydbprofile\", {\n location: \"us-central1\",\n connectionProfileId: \"my-profileid\",\n displayName: \"my-profileid_display\",\n labels: {\n foo: \"bar\",\n },\n alloydb: {\n clusterId: \"tf-test-dbmsalloycluster_52865\",\n settings: {\n initialUser: {\n user: \"alloyuser_85840\",\n password: \"alloypass_60302\",\n },\n vpcNetwork: _default.id,\n labels: {\n alloyfoo: \"alloybar\",\n },\n primaryInstanceSettings: {\n id: \"priminstid\",\n machineConfig: {\n cpuCount: 2,\n },\n databaseFlags: {},\n labels: {\n alloysinstfoo: \"allowinstbar\",\n },\n },\n },\n },\n}, {\n dependsOn: [vpcConnection],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ndefault = gcp.compute.Network(\"default\", name=\"vpc-network\")\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"private-ip-alloc\",\n address_type=\"INTERNAL\",\n purpose=\"VPC_PEERING\",\n prefix_length=16,\n network=default.id)\nvpc_connection = gcp.servicenetworking.Connection(\"vpc_connection\",\n network=default.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_alloc.name])\nalloydbprofile = gcp.databasemigrationservice.ConnectionProfile(\"alloydbprofile\",\n location=\"us-central1\",\n connection_profile_id=\"my-profileid\",\n display_name=\"my-profileid_display\",\n labels={\n \"foo\": \"bar\",\n },\n alloydb={\n \"cluster_id\": \"tf-test-dbmsalloycluster_52865\",\n \"settings\": {\n \"initial_user\": {\n \"user\": \"alloyuser_85840\",\n \"password\": \"alloypass_60302\",\n },\n \"vpc_network\": default.id,\n \"labels\": {\n \"alloyfoo\": \"alloybar\",\n },\n \"primary_instance_settings\": {\n \"id\": \"priminstid\",\n \"machine_config\": {\n \"cpu_count\": 2,\n },\n \"database_flags\": {},\n \"labels\": {\n \"alloysinstfoo\": \"allowinstbar\",\n },\n },\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[vpc_connection]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"vpc-network\",\n });\n\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"private-ip-alloc\",\n AddressType = \"INTERNAL\",\n Purpose = \"VPC_PEERING\",\n PrefixLength = 16,\n Network = @default.Id,\n });\n\n var vpcConnection = new Gcp.ServiceNetworking.Connection(\"vpc_connection\", new()\n {\n Network = @default.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAlloc.Name,\n },\n });\n\n var alloydbprofile = new Gcp.DatabaseMigrationService.ConnectionProfile(\"alloydbprofile\", new()\n {\n Location = \"us-central1\",\n ConnectionProfileId = \"my-profileid\",\n DisplayName = \"my-profileid_display\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Alloydb = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileAlloydbArgs\n {\n ClusterId = \"tf-test-dbmsalloycluster_52865\",\n Settings = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileAlloydbSettingsArgs\n {\n InitialUser = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileAlloydbSettingsInitialUserArgs\n {\n User = \"alloyuser_85840\",\n Password = \"alloypass_60302\",\n },\n VpcNetwork = @default.Id,\n Labels = \n {\n { \"alloyfoo\", \"alloybar\" },\n },\n PrimaryInstanceSettings = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileAlloydbSettingsPrimaryInstanceSettingsArgs\n {\n Id = \"priminstid\",\n MachineConfig = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileAlloydbSettingsPrimaryInstanceSettingsMachineConfigArgs\n {\n CpuCount = 2,\n },\n DatabaseFlags = null,\n Labels = \n {\n { \"alloysinstfoo\", \"allowinstbar\" },\n },\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vpcConnection,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/databasemigrationservice\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"vpc-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"private-ip-alloc\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvpcConnection, err := servicenetworking.NewConnection(ctx, \"vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: _default.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tprivateIpAlloc.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = databasemigrationservice.NewConnectionProfile(ctx, \"alloydbprofile\", \u0026databasemigrationservice.ConnectionProfileArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"my-profileid\"),\n\t\t\tDisplayName: pulumi.String(\"my-profileid_display\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tAlloydb: \u0026databasemigrationservice.ConnectionProfileAlloydbArgs{\n\t\t\t\tClusterId: pulumi.String(\"tf-test-dbmsalloycluster_52865\"),\n\t\t\t\tSettings: \u0026databasemigrationservice.ConnectionProfileAlloydbSettingsArgs{\n\t\t\t\t\tInitialUser: \u0026databasemigrationservice.ConnectionProfileAlloydbSettingsInitialUserArgs{\n\t\t\t\t\t\tUser: pulumi.String(\"alloyuser_85840\"),\n\t\t\t\t\t\tPassword: pulumi.String(\"alloypass_60302\"),\n\t\t\t\t\t},\n\t\t\t\t\tVpcNetwork: _default.ID(),\n\t\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\t\"alloyfoo\": pulumi.String(\"alloybar\"),\n\t\t\t\t\t},\n\t\t\t\t\tPrimaryInstanceSettings: \u0026databasemigrationservice.ConnectionProfileAlloydbSettingsPrimaryInstanceSettingsArgs{\n\t\t\t\t\t\tId: pulumi.String(\"priminstid\"),\n\t\t\t\t\t\tMachineConfig: \u0026databasemigrationservice.ConnectionProfileAlloydbSettingsPrimaryInstanceSettingsMachineConfigArgs{\n\t\t\t\t\t\t\tCpuCount: pulumi.Int(2),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDatabaseFlags: pulumi.StringMap{},\n\t\t\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\t\t\"alloysinstfoo\": pulumi.String(\"allowinstbar\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfile;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfileArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileAlloydbArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileAlloydbSettingsArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileAlloydbSettingsInitialUserArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileAlloydbSettingsPrimaryInstanceSettingsArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileAlloydbSettingsPrimaryInstanceSettingsMachineConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"vpc-network\")\n .build());\n\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"private-ip-alloc\")\n .addressType(\"INTERNAL\")\n .purpose(\"VPC_PEERING\")\n .prefixLength(16)\n .network(default_.id())\n .build());\n\n var vpcConnection = new Connection(\"vpcConnection\", ConnectionArgs.builder()\n .network(default_.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAlloc.name())\n .build());\n\n var alloydbprofile = new ConnectionProfile(\"alloydbprofile\", ConnectionProfileArgs.builder()\n .location(\"us-central1\")\n .connectionProfileId(\"my-profileid\")\n .displayName(\"my-profileid_display\")\n .labels(Map.of(\"foo\", \"bar\"))\n .alloydb(ConnectionProfileAlloydbArgs.builder()\n .clusterId(\"tf-test-dbmsalloycluster_52865\")\n .settings(ConnectionProfileAlloydbSettingsArgs.builder()\n .initialUser(ConnectionProfileAlloydbSettingsInitialUserArgs.builder()\n .user(\"alloyuser_85840\")\n .password(\"alloypass_60302\")\n .build())\n .vpcNetwork(default_.id())\n .labels(Map.of(\"alloyfoo\", \"alloybar\"))\n .primaryInstanceSettings(ConnectionProfileAlloydbSettingsPrimaryInstanceSettingsArgs.builder()\n .id(\"priminstid\")\n .machineConfig(ConnectionProfileAlloydbSettingsPrimaryInstanceSettingsMachineConfigArgs.builder()\n .cpuCount(2)\n .build())\n .databaseFlags()\n .labels(Map.of(\"alloysinstfoo\", \"allowinstbar\"))\n .build())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(vpcConnection)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: vpc-network\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: private-ip-alloc\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 16\n network: ${default.id}\n vpcConnection:\n type: gcp:servicenetworking:Connection\n name: vpc_connection\n properties:\n network: ${default.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAlloc.name}\n alloydbprofile:\n type: gcp:databasemigrationservice:ConnectionProfile\n properties:\n location: us-central1\n connectionProfileId: my-profileid\n displayName: my-profileid_display\n labels:\n foo: bar\n alloydb:\n clusterId: tf-test-dbmsalloycluster_52865\n settings:\n initialUser:\n user: alloyuser_85840\n password: alloypass_60302\n vpcNetwork: ${default.id}\n labels:\n alloyfoo: alloybar\n primaryInstanceSettings:\n id: priminstid\n machineConfig:\n cpuCount: 2\n databaseFlags: {}\n labels:\n alloysinstfoo: allowinstbar\n options:\n dependson:\n - ${vpcConnection}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Database Migration Service Connection Profile Existing Mysql\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst destinationCsql = new gcp.sql.DatabaseInstance(\"destination_csql\", {\n name: \"destination-csql\",\n databaseVersion: \"MYSQL_5_7\",\n settings: {\n tier: \"db-n1-standard-1\",\n deletionProtectionEnabled: false,\n },\n deletionProtection: false,\n});\nconst existing_mysql = new gcp.databasemigrationservice.ConnectionProfile(\"existing-mysql\", {\n location: \"us-central1\",\n connectionProfileId: \"destination-cp\",\n displayName: \"destination-cp_display\",\n labels: {\n foo: \"bar\",\n },\n mysql: {\n cloudSqlId: \"destination-csql\",\n },\n}, {\n dependsOn: [destinationCsql],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ndestination_csql = gcp.sql.DatabaseInstance(\"destination_csql\",\n name=\"destination-csql\",\n database_version=\"MYSQL_5_7\",\n settings={\n \"tier\": \"db-n1-standard-1\",\n \"deletion_protection_enabled\": False,\n },\n deletion_protection=False)\nexisting_mysql = gcp.databasemigrationservice.ConnectionProfile(\"existing-mysql\",\n location=\"us-central1\",\n connection_profile_id=\"destination-cp\",\n display_name=\"destination-cp_display\",\n labels={\n \"foo\": \"bar\",\n },\n mysql={\n \"cloud_sql_id\": \"destination-csql\",\n },\n opts = pulumi.ResourceOptions(depends_on=[destination_csql]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var destinationCsql = new Gcp.Sql.DatabaseInstance(\"destination_csql\", new()\n {\n Name = \"destination-csql\",\n DatabaseVersion = \"MYSQL_5_7\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-n1-standard-1\",\n DeletionProtectionEnabled = false,\n },\n DeletionProtection = false,\n });\n\n var existing_mysql = new Gcp.DatabaseMigrationService.ConnectionProfile(\"existing-mysql\", new()\n {\n Location = \"us-central1\",\n ConnectionProfileId = \"destination-cp\",\n DisplayName = \"destination-cp_display\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Mysql = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileMysqlArgs\n {\n CloudSqlId = \"destination-csql\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n destinationCsql,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/databasemigrationservice\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestinationCsql, err := sql.NewDatabaseInstance(ctx, \"destination_csql\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"destination-csql\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_5_7\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-n1-standard-1\"),\n\t\t\t\tDeletionProtectionEnabled: pulumi.Bool(false),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = databasemigrationservice.NewConnectionProfile(ctx, \"existing-mysql\", \u0026databasemigrationservice.ConnectionProfileArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"destination-cp\"),\n\t\t\tDisplayName: pulumi.String(\"destination-cp_display\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tMysql: \u0026databasemigrationservice.ConnectionProfileMysqlArgs{\n\t\t\t\tCloudSqlId: pulumi.String(\"destination-csql\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdestinationCsql,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfile;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfileArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileMysqlArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var destinationCsql = new DatabaseInstance(\"destinationCsql\", DatabaseInstanceArgs.builder()\n .name(\"destination-csql\")\n .databaseVersion(\"MYSQL_5_7\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-n1-standard-1\")\n .deletionProtectionEnabled(false)\n .build())\n .deletionProtection(false)\n .build());\n\n var existing_mysql = new ConnectionProfile(\"existing-mysql\", ConnectionProfileArgs.builder()\n .location(\"us-central1\")\n .connectionProfileId(\"destination-cp\")\n .displayName(\"destination-cp_display\")\n .labels(Map.of(\"foo\", \"bar\"))\n .mysql(ConnectionProfileMysqlArgs.builder()\n .cloudSqlId(\"destination-csql\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(destinationCsql)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n destinationCsql:\n type: gcp:sql:DatabaseInstance\n name: destination_csql\n properties:\n name: destination-csql\n databaseVersion: MYSQL_5_7\n settings:\n tier: db-n1-standard-1\n deletionProtectionEnabled: false\n deletionProtection: false\n existing-mysql:\n type: gcp:databasemigrationservice:ConnectionProfile\n properties:\n location: us-central1\n connectionProfileId: destination-cp\n displayName: destination-cp_display\n labels:\n foo: bar\n mysql:\n cloudSqlId: destination-csql\n options:\n dependson:\n - ${destinationCsql}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Database Migration Service Connection Profile Existing Postgres\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst destinationCsql = new gcp.sql.DatabaseInstance(\"destination_csql\", {\n name: \"destination-csql\",\n databaseVersion: \"POSTGRES_15\",\n settings: {\n tier: \"db-custom-2-13312\",\n deletionProtectionEnabled: false,\n },\n deletionProtection: false,\n});\nconst existing_psql = new gcp.databasemigrationservice.ConnectionProfile(\"existing-psql\", {\n location: \"us-central1\",\n connectionProfileId: \"destination-cp\",\n displayName: \"destination-cp_display\",\n labels: {\n foo: \"bar\",\n },\n postgresql: {\n cloudSqlId: \"destination-csql\",\n },\n}, {\n dependsOn: [destinationCsql],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ndestination_csql = gcp.sql.DatabaseInstance(\"destination_csql\",\n name=\"destination-csql\",\n database_version=\"POSTGRES_15\",\n settings={\n \"tier\": \"db-custom-2-13312\",\n \"deletion_protection_enabled\": False,\n },\n deletion_protection=False)\nexisting_psql = gcp.databasemigrationservice.ConnectionProfile(\"existing-psql\",\n location=\"us-central1\",\n connection_profile_id=\"destination-cp\",\n display_name=\"destination-cp_display\",\n labels={\n \"foo\": \"bar\",\n },\n postgresql={\n \"cloud_sql_id\": \"destination-csql\",\n },\n opts = pulumi.ResourceOptions(depends_on=[destination_csql]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var destinationCsql = new Gcp.Sql.DatabaseInstance(\"destination_csql\", new()\n {\n Name = \"destination-csql\",\n DatabaseVersion = \"POSTGRES_15\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-custom-2-13312\",\n DeletionProtectionEnabled = false,\n },\n DeletionProtection = false,\n });\n\n var existing_psql = new Gcp.DatabaseMigrationService.ConnectionProfile(\"existing-psql\", new()\n {\n Location = \"us-central1\",\n ConnectionProfileId = \"destination-cp\",\n DisplayName = \"destination-cp_display\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Postgresql = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfilePostgresqlArgs\n {\n CloudSqlId = \"destination-csql\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n destinationCsql,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/databasemigrationservice\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestinationCsql, err := sql.NewDatabaseInstance(ctx, \"destination_csql\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"destination-csql\"),\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_15\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-custom-2-13312\"),\n\t\t\t\tDeletionProtectionEnabled: pulumi.Bool(false),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = databasemigrationservice.NewConnectionProfile(ctx, \"existing-psql\", \u0026databasemigrationservice.ConnectionProfileArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"destination-cp\"),\n\t\t\tDisplayName: pulumi.String(\"destination-cp_display\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tPostgresql: \u0026databasemigrationservice.ConnectionProfilePostgresqlArgs{\n\t\t\t\tCloudSqlId: pulumi.String(\"destination-csql\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdestinationCsql,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfile;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfileArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfilePostgresqlArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var destinationCsql = new DatabaseInstance(\"destinationCsql\", DatabaseInstanceArgs.builder()\n .name(\"destination-csql\")\n .databaseVersion(\"POSTGRES_15\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-custom-2-13312\")\n .deletionProtectionEnabled(false)\n .build())\n .deletionProtection(false)\n .build());\n\n var existing_psql = new ConnectionProfile(\"existing-psql\", ConnectionProfileArgs.builder()\n .location(\"us-central1\")\n .connectionProfileId(\"destination-cp\")\n .displayName(\"destination-cp_display\")\n .labels(Map.of(\"foo\", \"bar\"))\n .postgresql(ConnectionProfilePostgresqlArgs.builder()\n .cloudSqlId(\"destination-csql\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(destinationCsql)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n destinationCsql:\n type: gcp:sql:DatabaseInstance\n name: destination_csql\n properties:\n name: destination-csql\n databaseVersion: POSTGRES_15\n settings:\n tier: db-custom-2-13312\n deletionProtectionEnabled: false\n deletionProtection: false\n existing-psql:\n type: gcp:databasemigrationservice:ConnectionProfile\n properties:\n location: us-central1\n connectionProfileId: destination-cp\n displayName: destination-cp_display\n labels:\n foo: bar\n postgresql:\n cloudSqlId: destination-csql\n options:\n dependson:\n - ${destinationCsql}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Database Migration Service Connection Profile Existing Alloydb\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst _default = new gcp.compute.Network(\"default\", {name: \"destination-alloydb\"});\nconst destinationAlloydb = new gcp.alloydb.Cluster(\"destination_alloydb\", {\n clusterId: \"destination-alloydb\",\n location: \"us-central1\",\n networkConfig: {\n network: _default.id,\n },\n databaseVersion: \"POSTGRES_15\",\n initialUser: {\n user: \"destination-alloydb\",\n password: \"destination-alloydb\",\n },\n});\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"destination-alloydb\",\n addressType: \"INTERNAL\",\n purpose: \"VPC_PEERING\",\n prefixLength: 16,\n network: _default.id,\n});\nconst vpcConnection = new gcp.servicenetworking.Connection(\"vpc_connection\", {\n network: _default.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAlloc.name],\n});\nconst destinationAlloydbPrimary = new gcp.alloydb.Instance(\"destination_alloydb_primary\", {\n cluster: destinationAlloydb.name,\n instanceId: \"destination-alloydb-primary\",\n instanceType: \"PRIMARY\",\n}, {\n dependsOn: [vpcConnection],\n});\nconst existing_alloydb = new gcp.databasemigrationservice.ConnectionProfile(\"existing-alloydb\", {\n location: \"us-central1\",\n connectionProfileId: \"destination-cp\",\n displayName: \"destination-cp_display\",\n labels: {\n foo: \"bar\",\n },\n postgresql: {\n alloydbClusterId: \"destination-alloydb\",\n },\n}, {\n dependsOn: [\n destinationAlloydb,\n destinationAlloydbPrimary,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ndefault = gcp.compute.Network(\"default\", name=\"destination-alloydb\")\ndestination_alloydb = gcp.alloydb.Cluster(\"destination_alloydb\",\n cluster_id=\"destination-alloydb\",\n location=\"us-central1\",\n network_config={\n \"network\": default.id,\n },\n database_version=\"POSTGRES_15\",\n initial_user={\n \"user\": \"destination-alloydb\",\n \"password\": \"destination-alloydb\",\n })\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"destination-alloydb\",\n address_type=\"INTERNAL\",\n purpose=\"VPC_PEERING\",\n prefix_length=16,\n network=default.id)\nvpc_connection = gcp.servicenetworking.Connection(\"vpc_connection\",\n network=default.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_alloc.name])\ndestination_alloydb_primary = gcp.alloydb.Instance(\"destination_alloydb_primary\",\n cluster=destination_alloydb.name,\n instance_id=\"destination-alloydb-primary\",\n instance_type=\"PRIMARY\",\n opts = pulumi.ResourceOptions(depends_on=[vpc_connection]))\nexisting_alloydb = gcp.databasemigrationservice.ConnectionProfile(\"existing-alloydb\",\n location=\"us-central1\",\n connection_profile_id=\"destination-cp\",\n display_name=\"destination-cp_display\",\n labels={\n \"foo\": \"bar\",\n },\n postgresql={\n \"alloydb_cluster_id\": \"destination-alloydb\",\n },\n opts = pulumi.ResourceOptions(depends_on=[\n destination_alloydb,\n destination_alloydb_primary,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"destination-alloydb\",\n });\n\n var destinationAlloydb = new Gcp.Alloydb.Cluster(\"destination_alloydb\", new()\n {\n ClusterId = \"destination-alloydb\",\n Location = \"us-central1\",\n NetworkConfig = new Gcp.Alloydb.Inputs.ClusterNetworkConfigArgs\n {\n Network = @default.Id,\n },\n DatabaseVersion = \"POSTGRES_15\",\n InitialUser = new Gcp.Alloydb.Inputs.ClusterInitialUserArgs\n {\n User = \"destination-alloydb\",\n Password = \"destination-alloydb\",\n },\n });\n\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"destination-alloydb\",\n AddressType = \"INTERNAL\",\n Purpose = \"VPC_PEERING\",\n PrefixLength = 16,\n Network = @default.Id,\n });\n\n var vpcConnection = new Gcp.ServiceNetworking.Connection(\"vpc_connection\", new()\n {\n Network = @default.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAlloc.Name,\n },\n });\n\n var destinationAlloydbPrimary = new Gcp.Alloydb.Instance(\"destination_alloydb_primary\", new()\n {\n Cluster = destinationAlloydb.Name,\n InstanceId = \"destination-alloydb-primary\",\n InstanceType = \"PRIMARY\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vpcConnection,\n },\n });\n\n var existing_alloydb = new Gcp.DatabaseMigrationService.ConnectionProfile(\"existing-alloydb\", new()\n {\n Location = \"us-central1\",\n ConnectionProfileId = \"destination-cp\",\n DisplayName = \"destination-cp_display\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Postgresql = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfilePostgresqlArgs\n {\n AlloydbClusterId = \"destination-alloydb\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n destinationAlloydb,\n destinationAlloydbPrimary,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/alloydb\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/databasemigrationservice\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"destination-alloydb\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestinationAlloydb, err := alloydb.NewCluster(ctx, \"destination_alloydb\", \u0026alloydb.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"destination-alloydb\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNetworkConfig: \u0026alloydb.ClusterNetworkConfigArgs{\n\t\t\t\tNetwork: _default.ID(),\n\t\t\t},\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_15\"),\n\t\t\tInitialUser: \u0026alloydb.ClusterInitialUserArgs{\n\t\t\t\tUser: pulumi.String(\"destination-alloydb\"),\n\t\t\t\tPassword: pulumi.String(\"destination-alloydb\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"destination-alloydb\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvpcConnection, err := servicenetworking.NewConnection(ctx, \"vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: _default.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tprivateIpAlloc.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestinationAlloydbPrimary, err := alloydb.NewInstance(ctx, \"destination_alloydb_primary\", \u0026alloydb.InstanceArgs{\n\t\t\tCluster: destinationAlloydb.Name,\n\t\t\tInstanceId: pulumi.String(\"destination-alloydb-primary\"),\n\t\t\tInstanceType: pulumi.String(\"PRIMARY\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = databasemigrationservice.NewConnectionProfile(ctx, \"existing-alloydb\", \u0026databasemigrationservice.ConnectionProfileArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"destination-cp\"),\n\t\t\tDisplayName: pulumi.String(\"destination-cp_display\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tPostgresql: \u0026databasemigrationservice.ConnectionProfilePostgresqlArgs{\n\t\t\t\tAlloydbClusterId: pulumi.String(\"destination-alloydb\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdestinationAlloydb,\n\t\t\tdestinationAlloydbPrimary,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.alloydb.Cluster;\nimport com.pulumi.gcp.alloydb.ClusterArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterNetworkConfigArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterInitialUserArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.alloydb.Instance;\nimport com.pulumi.gcp.alloydb.InstanceArgs;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfile;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfileArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfilePostgresqlArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"destination-alloydb\")\n .build());\n\n var destinationAlloydb = new Cluster(\"destinationAlloydb\", ClusterArgs.builder()\n .clusterId(\"destination-alloydb\")\n .location(\"us-central1\")\n .networkConfig(ClusterNetworkConfigArgs.builder()\n .network(default_.id())\n .build())\n .databaseVersion(\"POSTGRES_15\")\n .initialUser(ClusterInitialUserArgs.builder()\n .user(\"destination-alloydb\")\n .password(\"destination-alloydb\")\n .build())\n .build());\n\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"destination-alloydb\")\n .addressType(\"INTERNAL\")\n .purpose(\"VPC_PEERING\")\n .prefixLength(16)\n .network(default_.id())\n .build());\n\n var vpcConnection = new Connection(\"vpcConnection\", ConnectionArgs.builder()\n .network(default_.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAlloc.name())\n .build());\n\n var destinationAlloydbPrimary = new Instance(\"destinationAlloydbPrimary\", InstanceArgs.builder()\n .cluster(destinationAlloydb.name())\n .instanceId(\"destination-alloydb-primary\")\n .instanceType(\"PRIMARY\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(vpcConnection)\n .build());\n\n var existing_alloydb = new ConnectionProfile(\"existing-alloydb\", ConnectionProfileArgs.builder()\n .location(\"us-central1\")\n .connectionProfileId(\"destination-cp\")\n .displayName(\"destination-cp_display\")\n .labels(Map.of(\"foo\", \"bar\"))\n .postgresql(ConnectionProfilePostgresqlArgs.builder()\n .alloydbClusterId(\"destination-alloydb\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n destinationAlloydb,\n destinationAlloydbPrimary)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n destinationAlloydb:\n type: gcp:alloydb:Cluster\n name: destination_alloydb\n properties:\n clusterId: destination-alloydb\n location: us-central1\n networkConfig:\n network: ${default.id}\n databaseVersion: POSTGRES_15\n initialUser:\n user: destination-alloydb\n password: destination-alloydb\n destinationAlloydbPrimary:\n type: gcp:alloydb:Instance\n name: destination_alloydb_primary\n properties:\n cluster: ${destinationAlloydb.name}\n instanceId: destination-alloydb-primary\n instanceType: PRIMARY\n options:\n dependson:\n - ${vpcConnection}\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: destination-alloydb\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 16\n network: ${default.id}\n vpcConnection:\n type: gcp:servicenetworking:Connection\n name: vpc_connection\n properties:\n network: ${default.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAlloc.name}\n default:\n type: gcp:compute:Network\n properties:\n name: destination-alloydb\n existing-alloydb:\n type: gcp:databasemigrationservice:ConnectionProfile\n properties:\n location: us-central1\n connectionProfileId: destination-cp\n displayName: destination-cp_display\n labels:\n foo: bar\n postgresql:\n alloydbClusterId: destination-alloydb\n options:\n dependson:\n - ${destinationAlloydb}\n - ${destinationAlloydbPrimary}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nConnectionProfile can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/connectionProfiles/{{connection_profile_id}}`\n\n* `{{project}}/{{location}}/{{connection_profile_id}}`\n\n* `{{location}}/{{connection_profile_id}}`\n\nWhen using the `pulumi import` command, ConnectionProfile can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:databasemigrationservice/connectionProfile:ConnectionProfile default projects/{{project}}/locations/{{location}}/connectionProfiles/{{connection_profile_id}}\n```\n\n```sh\n$ pulumi import gcp:databasemigrationservice/connectionProfile:ConnectionProfile default {{project}}/{{location}}/{{connection_profile_id}}\n```\n\n```sh\n$ pulumi import gcp:databasemigrationservice/connectionProfile:ConnectionProfile default {{location}}/{{connection_profile_id}}\n```\n\n", "properties": { "alloydb": { "$ref": "#/types/gcp:databasemigrationservice/ConnectionProfileAlloydb:ConnectionProfileAlloydb", @@ -175987,7 +175987,7 @@ } }, "gcp:databasemigrationservice/migrationJob:MigrationJob": { - "description": "A migration job definition.\n\n\nTo get more information about MigrationJob, see:\n\n* [API documentation](https://cloud.google.com/database-migration/docs/reference/rest/v1/projects.locations.migrationJobs/create)\n* How-to Guides\n * [Database Migration](https://cloud.google.com/database-migration/docs/)\n\n## Example Usage\n\n### Database Migration Service Migration Job Mysql To Mysql\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst sourceCsql = new gcp.sql.DatabaseInstance(\"source_csql\", {\n name: \"source-csql\",\n databaseVersion: \"MYSQL_5_7\",\n settings: {\n tier: \"db-n1-standard-1\",\n deletionProtectionEnabled: false,\n },\n deletionProtection: false,\n});\nconst sourceSqlClientCert = new gcp.sql.SslCert(\"source_sql_client_cert\", {\n commonName: \"cert\",\n instance: sourceCsql.name,\n}, {\n dependsOn: [sourceCsql],\n});\nconst sourceSqldbUser = new gcp.sql.User(\"source_sqldb_user\", {\n name: \"username\",\n instance: sourceCsql.name,\n password: \"password\",\n}, {\n dependsOn: [sourceSqlClientCert],\n});\nconst sourceCp = new gcp.databasemigrationservice.ConnectionProfile(\"source_cp\", {\n location: \"us-central1\",\n connectionProfileId: \"source-cp\",\n displayName: \"source-cp_display\",\n labels: {\n foo: \"bar\",\n },\n mysql: {\n host: sourceCsql.ipAddresses.apply(ipAddresses =\u003e ipAddresses[0].ipAddress),\n port: 3306,\n username: sourceSqldbUser.name,\n password: sourceSqldbUser.password,\n ssl: {\n clientKey: sourceSqlClientCert.privateKey,\n clientCertificate: sourceSqlClientCert.cert,\n caCertificate: sourceSqlClientCert.serverCaCert,\n },\n cloudSqlId: \"source-csql\",\n },\n}, {\n dependsOn: [sourceSqldbUser],\n});\nconst destinationCsql = new gcp.sql.DatabaseInstance(\"destination_csql\", {\n name: \"destination-csql\",\n databaseVersion: \"MYSQL_5_7\",\n settings: {\n tier: \"db-n1-standard-1\",\n deletionProtectionEnabled: false,\n },\n deletionProtection: false,\n});\nconst destinationCp = new gcp.databasemigrationservice.ConnectionProfile(\"destination_cp\", {\n location: \"us-central1\",\n connectionProfileId: \"destination-cp\",\n displayName: \"destination-cp_display\",\n labels: {\n foo: \"bar\",\n },\n mysql: {\n cloudSqlId: \"destination-csql\",\n },\n}, {\n dependsOn: [destinationCsql],\n});\nconst _default = new gcp.compute.Network(\"default\", {name: \"destination-csql\"});\nconst mysqltomysql = new gcp.databasemigrationservice.MigrationJob(\"mysqltomysql\", {\n location: \"us-central1\",\n migrationJobId: \"my-migrationid\",\n displayName: \"my-migrationid_display\",\n labels: {\n foo: \"bar\",\n },\n performanceConfig: {\n dumpParallelLevel: \"MAX\",\n },\n vpcPeeringConnectivity: {\n vpc: _default.id,\n },\n dumpType: \"LOGICAL\",\n dumpFlags: {\n dumpFlags: [{\n name: \"max-allowed-packet\",\n value: \"1073741824\",\n }],\n },\n source: sourceCp.name,\n destination: destinationCp.name,\n type: \"CONTINUOUS\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nsource_csql = gcp.sql.DatabaseInstance(\"source_csql\",\n name=\"source-csql\",\n database_version=\"MYSQL_5_7\",\n settings={\n \"tier\": \"db-n1-standard-1\",\n \"deletion_protection_enabled\": False,\n },\n deletion_protection=False)\nsource_sql_client_cert = gcp.sql.SslCert(\"source_sql_client_cert\",\n common_name=\"cert\",\n instance=source_csql.name,\n opts = pulumi.ResourceOptions(depends_on=[source_csql]))\nsource_sqldb_user = gcp.sql.User(\"source_sqldb_user\",\n name=\"username\",\n instance=source_csql.name,\n password=\"password\",\n opts = pulumi.ResourceOptions(depends_on=[source_sql_client_cert]))\nsource_cp = gcp.databasemigrationservice.ConnectionProfile(\"source_cp\",\n location=\"us-central1\",\n connection_profile_id=\"source-cp\",\n display_name=\"source-cp_display\",\n labels={\n \"foo\": \"bar\",\n },\n mysql={\n \"host\": source_csql.ip_addresses[0].ip_address,\n \"port\": 3306,\n \"username\": source_sqldb_user.name,\n \"password\": source_sqldb_user.password,\n \"ssl\": {\n \"client_key\": source_sql_client_cert.private_key,\n \"client_certificate\": source_sql_client_cert.cert,\n \"ca_certificate\": source_sql_client_cert.server_ca_cert,\n },\n \"cloud_sql_id\": \"source-csql\",\n },\n opts = pulumi.ResourceOptions(depends_on=[source_sqldb_user]))\ndestination_csql = gcp.sql.DatabaseInstance(\"destination_csql\",\n name=\"destination-csql\",\n database_version=\"MYSQL_5_7\",\n settings={\n \"tier\": \"db-n1-standard-1\",\n \"deletion_protection_enabled\": False,\n },\n deletion_protection=False)\ndestination_cp = gcp.databasemigrationservice.ConnectionProfile(\"destination_cp\",\n location=\"us-central1\",\n connection_profile_id=\"destination-cp\",\n display_name=\"destination-cp_display\",\n labels={\n \"foo\": \"bar\",\n },\n mysql={\n \"cloud_sql_id\": \"destination-csql\",\n },\n opts = pulumi.ResourceOptions(depends_on=[destination_csql]))\ndefault = gcp.compute.Network(\"default\", name=\"destination-csql\")\nmysqltomysql = gcp.databasemigrationservice.MigrationJob(\"mysqltomysql\",\n location=\"us-central1\",\n migration_job_id=\"my-migrationid\",\n display_name=\"my-migrationid_display\",\n labels={\n \"foo\": \"bar\",\n },\n performance_config={\n \"dump_parallel_level\": \"MAX\",\n },\n vpc_peering_connectivity={\n \"vpc\": default.id,\n },\n dump_type=\"LOGICAL\",\n dump_flags={\n \"dump_flags\": [{\n \"name\": \"max-allowed-packet\",\n \"value\": \"1073741824\",\n }],\n },\n source=source_cp.name,\n destination=destination_cp.name,\n type=\"CONTINUOUS\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var sourceCsql = new Gcp.Sql.DatabaseInstance(\"source_csql\", new()\n {\n Name = \"source-csql\",\n DatabaseVersion = \"MYSQL_5_7\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-n1-standard-1\",\n DeletionProtectionEnabled = false,\n },\n DeletionProtection = false,\n });\n\n var sourceSqlClientCert = new Gcp.Sql.SslCert(\"source_sql_client_cert\", new()\n {\n CommonName = \"cert\",\n Instance = sourceCsql.Name,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n sourceCsql,\n },\n });\n\n var sourceSqldbUser = new Gcp.Sql.User(\"source_sqldb_user\", new()\n {\n Name = \"username\",\n Instance = sourceCsql.Name,\n Password = \"password\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n sourceSqlClientCert,\n },\n });\n\n var sourceCp = new Gcp.DatabaseMigrationService.ConnectionProfile(\"source_cp\", new()\n {\n Location = \"us-central1\",\n ConnectionProfileId = \"source-cp\",\n DisplayName = \"source-cp_display\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Mysql = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileMysqlArgs\n {\n Host = sourceCsql.IpAddresses.Apply(ipAddresses =\u003e ipAddresses[0].IpAddress),\n Port = 3306,\n Username = sourceSqldbUser.Name,\n Password = sourceSqldbUser.Password,\n Ssl = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileMysqlSslArgs\n {\n ClientKey = sourceSqlClientCert.PrivateKey,\n ClientCertificate = sourceSqlClientCert.Cert,\n CaCertificate = sourceSqlClientCert.ServerCaCert,\n },\n CloudSqlId = \"source-csql\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n sourceSqldbUser,\n },\n });\n\n var destinationCsql = new Gcp.Sql.DatabaseInstance(\"destination_csql\", new()\n {\n Name = \"destination-csql\",\n DatabaseVersion = \"MYSQL_5_7\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-n1-standard-1\",\n DeletionProtectionEnabled = false,\n },\n DeletionProtection = false,\n });\n\n var destinationCp = new Gcp.DatabaseMigrationService.ConnectionProfile(\"destination_cp\", new()\n {\n Location = \"us-central1\",\n ConnectionProfileId = \"destination-cp\",\n DisplayName = \"destination-cp_display\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Mysql = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileMysqlArgs\n {\n CloudSqlId = \"destination-csql\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n destinationCsql,\n },\n });\n\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"destination-csql\",\n });\n\n var mysqltomysql = new Gcp.DatabaseMigrationService.MigrationJob(\"mysqltomysql\", new()\n {\n Location = \"us-central1\",\n MigrationJobId = \"my-migrationid\",\n DisplayName = \"my-migrationid_display\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n PerformanceConfig = new Gcp.DatabaseMigrationService.Inputs.MigrationJobPerformanceConfigArgs\n {\n DumpParallelLevel = \"MAX\",\n },\n VpcPeeringConnectivity = new Gcp.DatabaseMigrationService.Inputs.MigrationJobVpcPeeringConnectivityArgs\n {\n Vpc = @default.Id,\n },\n DumpType = \"LOGICAL\",\n DumpFlags = new Gcp.DatabaseMigrationService.Inputs.MigrationJobDumpFlagsArgs\n {\n DumpFlags = new[]\n {\n new Gcp.DatabaseMigrationService.Inputs.MigrationJobDumpFlagsDumpFlagArgs\n {\n Name = \"max-allowed-packet\",\n Value = \"1073741824\",\n },\n },\n },\n Source = sourceCp.Name,\n Destination = destinationCp.Name,\n Type = \"CONTINUOUS\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/databasemigrationservice\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceCsql, err := sql.NewDatabaseInstance(ctx, \"source_csql\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"source-csql\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_5_7\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-n1-standard-1\"),\n\t\t\t\tDeletionProtectionEnabled: pulumi.Bool(false),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceSqlClientCert, err := sql.NewSslCert(ctx, \"source_sql_client_cert\", \u0026sql.SslCertArgs{\n\t\t\tCommonName: pulumi.String(\"cert\"),\n\t\t\tInstance: sourceCsql.Name,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsourceCsql,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceSqldbUser, err := sql.NewUser(ctx, \"source_sqldb_user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"username\"),\n\t\t\tInstance: sourceCsql.Name,\n\t\t\tPassword: pulumi.String(\"password\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsourceSqlClientCert,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceCp, err := databasemigrationservice.NewConnectionProfile(ctx, \"source_cp\", \u0026databasemigrationservice.ConnectionProfileArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"source-cp\"),\n\t\t\tDisplayName: pulumi.String(\"source-cp_display\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tMysql: \u0026databasemigrationservice.ConnectionProfileMysqlArgs{\n\t\t\t\tHost: sourceCsql.IpAddresses.ApplyT(func(ipAddresses []sql.DatabaseInstanceIpAddress) (*string, error) {\n\t\t\t\t\treturn \u0026ipAddresses[0].IpAddress, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tPort: pulumi.Int(3306),\n\t\t\t\tUsername: sourceSqldbUser.Name,\n\t\t\t\tPassword: sourceSqldbUser.Password,\n\t\t\t\tSsl: \u0026databasemigrationservice.ConnectionProfileMysqlSslArgs{\n\t\t\t\t\tClientKey: sourceSqlClientCert.PrivateKey,\n\t\t\t\t\tClientCertificate: sourceSqlClientCert.Cert,\n\t\t\t\t\tCaCertificate: sourceSqlClientCert.ServerCaCert,\n\t\t\t\t},\n\t\t\t\tCloudSqlId: pulumi.String(\"source-csql\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsourceSqldbUser,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestinationCsql, err := sql.NewDatabaseInstance(ctx, \"destination_csql\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"destination-csql\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_5_7\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-n1-standard-1\"),\n\t\t\t\tDeletionProtectionEnabled: pulumi.Bool(false),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestinationCp, err := databasemigrationservice.NewConnectionProfile(ctx, \"destination_cp\", \u0026databasemigrationservice.ConnectionProfileArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"destination-cp\"),\n\t\t\tDisplayName: pulumi.String(\"destination-cp_display\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tMysql: \u0026databasemigrationservice.ConnectionProfileMysqlArgs{\n\t\t\t\tCloudSqlId: pulumi.String(\"destination-csql\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdestinationCsql,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"destination-csql\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = databasemigrationservice.NewMigrationJob(ctx, \"mysqltomysql\", \u0026databasemigrationservice.MigrationJobArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tMigrationJobId: pulumi.String(\"my-migrationid\"),\n\t\t\tDisplayName: pulumi.String(\"my-migrationid_display\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tPerformanceConfig: \u0026databasemigrationservice.MigrationJobPerformanceConfigArgs{\n\t\t\t\tDumpParallelLevel: pulumi.String(\"MAX\"),\n\t\t\t},\n\t\t\tVpcPeeringConnectivity: \u0026databasemigrationservice.MigrationJobVpcPeeringConnectivityArgs{\n\t\t\t\tVpc: _default.ID(),\n\t\t\t},\n\t\t\tDumpType: pulumi.String(\"LOGICAL\"),\n\t\t\tDumpFlags: \u0026databasemigrationservice.MigrationJobDumpFlagsArgs{\n\t\t\t\tDumpFlags: databasemigrationservice.MigrationJobDumpFlagsDumpFlagArray{\n\t\t\t\t\t\u0026databasemigrationservice.MigrationJobDumpFlagsDumpFlagArgs{\n\t\t\t\t\t\tName: pulumi.String(\"max-allowed-packet\"),\n\t\t\t\t\t\tValue: pulumi.String(\"1073741824\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSource: sourceCp.Name,\n\t\t\tDestination: destinationCp.Name,\n\t\t\tType: pulumi.String(\"CONTINUOUS\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.SslCert;\nimport com.pulumi.gcp.sql.SslCertArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfile;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfileArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileMysqlArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileMysqlSslArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.databasemigrationservice.MigrationJob;\nimport com.pulumi.gcp.databasemigrationservice.MigrationJobArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.MigrationJobPerformanceConfigArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.MigrationJobVpcPeeringConnectivityArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.MigrationJobDumpFlagsArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var sourceCsql = new DatabaseInstance(\"sourceCsql\", DatabaseInstanceArgs.builder()\n .name(\"source-csql\")\n .databaseVersion(\"MYSQL_5_7\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-n1-standard-1\")\n .deletionProtectionEnabled(false)\n .build())\n .deletionProtection(false)\n .build());\n\n var sourceSqlClientCert = new SslCert(\"sourceSqlClientCert\", SslCertArgs.builder()\n .commonName(\"cert\")\n .instance(sourceCsql.name())\n .build(), CustomResourceOptions.builder()\n .dependsOn(sourceCsql)\n .build());\n\n var sourceSqldbUser = new User(\"sourceSqldbUser\", UserArgs.builder()\n .name(\"username\")\n .instance(sourceCsql.name())\n .password(\"password\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(sourceSqlClientCert)\n .build());\n\n var sourceCp = new ConnectionProfile(\"sourceCp\", ConnectionProfileArgs.builder()\n .location(\"us-central1\")\n .connectionProfileId(\"source-cp\")\n .displayName(\"source-cp_display\")\n .labels(Map.of(\"foo\", \"bar\"))\n .mysql(ConnectionProfileMysqlArgs.builder()\n .host(sourceCsql.ipAddresses().applyValue(ipAddresses -\u003e ipAddresses[0].ipAddress()))\n .port(3306)\n .username(sourceSqldbUser.name())\n .password(sourceSqldbUser.password())\n .ssl(ConnectionProfileMysqlSslArgs.builder()\n .clientKey(sourceSqlClientCert.privateKey())\n .clientCertificate(sourceSqlClientCert.cert())\n .caCertificate(sourceSqlClientCert.serverCaCert())\n .build())\n .cloudSqlId(\"source-csql\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(sourceSqldbUser)\n .build());\n\n var destinationCsql = new DatabaseInstance(\"destinationCsql\", DatabaseInstanceArgs.builder()\n .name(\"destination-csql\")\n .databaseVersion(\"MYSQL_5_7\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-n1-standard-1\")\n .deletionProtectionEnabled(false)\n .build())\n .deletionProtection(false)\n .build());\n\n var destinationCp = new ConnectionProfile(\"destinationCp\", ConnectionProfileArgs.builder()\n .location(\"us-central1\")\n .connectionProfileId(\"destination-cp\")\n .displayName(\"destination-cp_display\")\n .labels(Map.of(\"foo\", \"bar\"))\n .mysql(ConnectionProfileMysqlArgs.builder()\n .cloudSqlId(\"destination-csql\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(destinationCsql)\n .build());\n\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"destination-csql\")\n .build());\n\n var mysqltomysql = new MigrationJob(\"mysqltomysql\", MigrationJobArgs.builder()\n .location(\"us-central1\")\n .migrationJobId(\"my-migrationid\")\n .displayName(\"my-migrationid_display\")\n .labels(Map.of(\"foo\", \"bar\"))\n .performanceConfig(MigrationJobPerformanceConfigArgs.builder()\n .dumpParallelLevel(\"MAX\")\n .build())\n .vpcPeeringConnectivity(MigrationJobVpcPeeringConnectivityArgs.builder()\n .vpc(default_.id())\n .build())\n .dumpType(\"LOGICAL\")\n .dumpFlags(MigrationJobDumpFlagsArgs.builder()\n .dumpFlags(MigrationJobDumpFlagsDumpFlagArgs.builder()\n .name(\"max-allowed-packet\")\n .value(\"1073741824\")\n .build())\n .build())\n .source(sourceCp.name())\n .destination(destinationCp.name())\n .type(\"CONTINUOUS\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sourceCsql:\n type: gcp:sql:DatabaseInstance\n name: source_csql\n properties:\n name: source-csql\n databaseVersion: MYSQL_5_7\n settings:\n tier: db-n1-standard-1\n deletionProtectionEnabled: false\n deletionProtection: false\n sourceSqlClientCert:\n type: gcp:sql:SslCert\n name: source_sql_client_cert\n properties:\n commonName: cert\n instance: ${sourceCsql.name}\n options:\n dependson:\n - ${sourceCsql}\n sourceSqldbUser:\n type: gcp:sql:User\n name: source_sqldb_user\n properties:\n name: username\n instance: ${sourceCsql.name}\n password: password\n options:\n dependson:\n - ${sourceSqlClientCert}\n sourceCp:\n type: gcp:databasemigrationservice:ConnectionProfile\n name: source_cp\n properties:\n location: us-central1\n connectionProfileId: source-cp\n displayName: source-cp_display\n labels:\n foo: bar\n mysql:\n host: ${sourceCsql.ipAddresses[0].ipAddress}\n port: 3306\n username: ${sourceSqldbUser.name}\n password: ${sourceSqldbUser.password}\n ssl:\n clientKey: ${sourceSqlClientCert.privateKey}\n clientCertificate: ${sourceSqlClientCert.cert}\n caCertificate: ${sourceSqlClientCert.serverCaCert}\n cloudSqlId: source-csql\n options:\n dependson:\n - ${sourceSqldbUser}\n destinationCsql:\n type: gcp:sql:DatabaseInstance\n name: destination_csql\n properties:\n name: destination-csql\n databaseVersion: MYSQL_5_7\n settings:\n tier: db-n1-standard-1\n deletionProtectionEnabled: false\n deletionProtection: false\n destinationCp:\n type: gcp:databasemigrationservice:ConnectionProfile\n name: destination_cp\n properties:\n location: us-central1\n connectionProfileId: destination-cp\n displayName: destination-cp_display\n labels:\n foo: bar\n mysql:\n cloudSqlId: destination-csql\n options:\n dependson:\n - ${destinationCsql}\n default:\n type: gcp:compute:Network\n properties:\n name: destination-csql\n mysqltomysql:\n type: gcp:databasemigrationservice:MigrationJob\n properties:\n location: us-central1\n migrationJobId: my-migrationid\n displayName: my-migrationid_display\n labels:\n foo: bar\n performanceConfig:\n dumpParallelLevel: MAX\n vpcPeeringConnectivity:\n vpc: ${default.id}\n dumpType: LOGICAL\n dumpFlags:\n dumpFlags:\n - name: max-allowed-packet\n value: '1073741824'\n source: ${sourceCp.name}\n destination: ${destinationCp.name}\n type: CONTINUOUS\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Database Migration Service Migration Job Postgres To Postgres\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst sourceCsql = new gcp.sql.DatabaseInstance(\"source_csql\", {\n name: \"source-csql\",\n databaseVersion: \"POSTGRES_15\",\n settings: {\n tier: \"db-custom-2-13312\",\n deletionProtectionEnabled: false,\n },\n deletionProtection: false,\n});\nconst sourceSqlClientCert = new gcp.sql.SslCert(\"source_sql_client_cert\", {\n commonName: \"cert\",\n instance: sourceCsql.name,\n}, {\n dependsOn: [sourceCsql],\n});\nconst sourceSqldbUser = new gcp.sql.User(\"source_sqldb_user\", {\n name: \"username\",\n instance: sourceCsql.name,\n password: \"password\",\n}, {\n dependsOn: [sourceSqlClientCert],\n});\nconst sourceCp = new gcp.databasemigrationservice.ConnectionProfile(\"source_cp\", {\n location: \"us-central1\",\n connectionProfileId: \"source-cp\",\n displayName: \"source-cp_display\",\n labels: {\n foo: \"bar\",\n },\n postgresql: {\n host: sourceCsql.ipAddresses.apply(ipAddresses =\u003e ipAddresses[0].ipAddress),\n port: 3306,\n username: sourceSqldbUser.name,\n password: sourceSqldbUser.password,\n ssl: {\n clientKey: sourceSqlClientCert.privateKey,\n clientCertificate: sourceSqlClientCert.cert,\n caCertificate: sourceSqlClientCert.serverCaCert,\n },\n cloudSqlId: \"source-csql\",\n },\n}, {\n dependsOn: [sourceSqldbUser],\n});\nconst destinationCsql = new gcp.sql.DatabaseInstance(\"destination_csql\", {\n name: \"destination-csql\",\n databaseVersion: \"POSTGRES_15\",\n settings: {\n tier: \"db-custom-2-13312\",\n deletionProtectionEnabled: false,\n },\n deletionProtection: false,\n});\nconst destinationCp = new gcp.databasemigrationservice.ConnectionProfile(\"destination_cp\", {\n location: \"us-central1\",\n connectionProfileId: \"destination-cp\",\n displayName: \"destination-cp_display\",\n labels: {\n foo: \"bar\",\n },\n postgresql: {\n cloudSqlId: \"destination-csql\",\n },\n}, {\n dependsOn: [destinationCsql],\n});\nconst psqltopsql = new gcp.databasemigrationservice.MigrationJob(\"psqltopsql\", {\n location: \"us-central1\",\n migrationJobId: \"my-migrationid\",\n displayName: \"my-migrationid_display\",\n labels: {\n foo: \"bar\",\n },\n staticIpConnectivity: {},\n source: sourceCp.name,\n destination: destinationCp.name,\n type: \"CONTINUOUS\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nsource_csql = gcp.sql.DatabaseInstance(\"source_csql\",\n name=\"source-csql\",\n database_version=\"POSTGRES_15\",\n settings={\n \"tier\": \"db-custom-2-13312\",\n \"deletion_protection_enabled\": False,\n },\n deletion_protection=False)\nsource_sql_client_cert = gcp.sql.SslCert(\"source_sql_client_cert\",\n common_name=\"cert\",\n instance=source_csql.name,\n opts = pulumi.ResourceOptions(depends_on=[source_csql]))\nsource_sqldb_user = gcp.sql.User(\"source_sqldb_user\",\n name=\"username\",\n instance=source_csql.name,\n password=\"password\",\n opts = pulumi.ResourceOptions(depends_on=[source_sql_client_cert]))\nsource_cp = gcp.databasemigrationservice.ConnectionProfile(\"source_cp\",\n location=\"us-central1\",\n connection_profile_id=\"source-cp\",\n display_name=\"source-cp_display\",\n labels={\n \"foo\": \"bar\",\n },\n postgresql={\n \"host\": source_csql.ip_addresses[0].ip_address,\n \"port\": 3306,\n \"username\": source_sqldb_user.name,\n \"password\": source_sqldb_user.password,\n \"ssl\": {\n \"client_key\": source_sql_client_cert.private_key,\n \"client_certificate\": source_sql_client_cert.cert,\n \"ca_certificate\": source_sql_client_cert.server_ca_cert,\n },\n \"cloud_sql_id\": \"source-csql\",\n },\n opts = pulumi.ResourceOptions(depends_on=[source_sqldb_user]))\ndestination_csql = gcp.sql.DatabaseInstance(\"destination_csql\",\n name=\"destination-csql\",\n database_version=\"POSTGRES_15\",\n settings={\n \"tier\": \"db-custom-2-13312\",\n \"deletion_protection_enabled\": False,\n },\n deletion_protection=False)\ndestination_cp = gcp.databasemigrationservice.ConnectionProfile(\"destination_cp\",\n location=\"us-central1\",\n connection_profile_id=\"destination-cp\",\n display_name=\"destination-cp_display\",\n labels={\n \"foo\": \"bar\",\n },\n postgresql={\n \"cloud_sql_id\": \"destination-csql\",\n },\n opts = pulumi.ResourceOptions(depends_on=[destination_csql]))\npsqltopsql = gcp.databasemigrationservice.MigrationJob(\"psqltopsql\",\n location=\"us-central1\",\n migration_job_id=\"my-migrationid\",\n display_name=\"my-migrationid_display\",\n labels={\n \"foo\": \"bar\",\n },\n static_ip_connectivity={},\n source=source_cp.name,\n destination=destination_cp.name,\n type=\"CONTINUOUS\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var sourceCsql = new Gcp.Sql.DatabaseInstance(\"source_csql\", new()\n {\n Name = \"source-csql\",\n DatabaseVersion = \"POSTGRES_15\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-custom-2-13312\",\n DeletionProtectionEnabled = false,\n },\n DeletionProtection = false,\n });\n\n var sourceSqlClientCert = new Gcp.Sql.SslCert(\"source_sql_client_cert\", new()\n {\n CommonName = \"cert\",\n Instance = sourceCsql.Name,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n sourceCsql,\n },\n });\n\n var sourceSqldbUser = new Gcp.Sql.User(\"source_sqldb_user\", new()\n {\n Name = \"username\",\n Instance = sourceCsql.Name,\n Password = \"password\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n sourceSqlClientCert,\n },\n });\n\n var sourceCp = new Gcp.DatabaseMigrationService.ConnectionProfile(\"source_cp\", new()\n {\n Location = \"us-central1\",\n ConnectionProfileId = \"source-cp\",\n DisplayName = \"source-cp_display\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Postgresql = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfilePostgresqlArgs\n {\n Host = sourceCsql.IpAddresses.Apply(ipAddresses =\u003e ipAddresses[0].IpAddress),\n Port = 3306,\n Username = sourceSqldbUser.Name,\n Password = sourceSqldbUser.Password,\n Ssl = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfilePostgresqlSslArgs\n {\n ClientKey = sourceSqlClientCert.PrivateKey,\n ClientCertificate = sourceSqlClientCert.Cert,\n CaCertificate = sourceSqlClientCert.ServerCaCert,\n },\n CloudSqlId = \"source-csql\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n sourceSqldbUser,\n },\n });\n\n var destinationCsql = new Gcp.Sql.DatabaseInstance(\"destination_csql\", new()\n {\n Name = \"destination-csql\",\n DatabaseVersion = \"POSTGRES_15\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-custom-2-13312\",\n DeletionProtectionEnabled = false,\n },\n DeletionProtection = false,\n });\n\n var destinationCp = new Gcp.DatabaseMigrationService.ConnectionProfile(\"destination_cp\", new()\n {\n Location = \"us-central1\",\n ConnectionProfileId = \"destination-cp\",\n DisplayName = \"destination-cp_display\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Postgresql = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfilePostgresqlArgs\n {\n CloudSqlId = \"destination-csql\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n destinationCsql,\n },\n });\n\n var psqltopsql = new Gcp.DatabaseMigrationService.MigrationJob(\"psqltopsql\", new()\n {\n Location = \"us-central1\",\n MigrationJobId = \"my-migrationid\",\n DisplayName = \"my-migrationid_display\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n StaticIpConnectivity = null,\n Source = sourceCp.Name,\n Destination = destinationCp.Name,\n Type = \"CONTINUOUS\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/databasemigrationservice\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceCsql, err := sql.NewDatabaseInstance(ctx, \"source_csql\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"source-csql\"),\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_15\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-custom-2-13312\"),\n\t\t\t\tDeletionProtectionEnabled: pulumi.Bool(false),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceSqlClientCert, err := sql.NewSslCert(ctx, \"source_sql_client_cert\", \u0026sql.SslCertArgs{\n\t\t\tCommonName: pulumi.String(\"cert\"),\n\t\t\tInstance: sourceCsql.Name,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsourceCsql,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceSqldbUser, err := sql.NewUser(ctx, \"source_sqldb_user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"username\"),\n\t\t\tInstance: sourceCsql.Name,\n\t\t\tPassword: pulumi.String(\"password\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsourceSqlClientCert,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceCp, err := databasemigrationservice.NewConnectionProfile(ctx, \"source_cp\", \u0026databasemigrationservice.ConnectionProfileArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"source-cp\"),\n\t\t\tDisplayName: pulumi.String(\"source-cp_display\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tPostgresql: \u0026databasemigrationservice.ConnectionProfilePostgresqlArgs{\n\t\t\t\tHost: sourceCsql.IpAddresses.ApplyT(func(ipAddresses []sql.DatabaseInstanceIpAddress) (*string, error) {\n\t\t\t\t\treturn \u0026ipAddresses[0].IpAddress, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tPort: pulumi.Int(3306),\n\t\t\t\tUsername: sourceSqldbUser.Name,\n\t\t\t\tPassword: sourceSqldbUser.Password,\n\t\t\t\tSsl: \u0026databasemigrationservice.ConnectionProfilePostgresqlSslArgs{\n\t\t\t\t\tClientKey: sourceSqlClientCert.PrivateKey,\n\t\t\t\t\tClientCertificate: sourceSqlClientCert.Cert,\n\t\t\t\t\tCaCertificate: sourceSqlClientCert.ServerCaCert,\n\t\t\t\t},\n\t\t\t\tCloudSqlId: pulumi.String(\"source-csql\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsourceSqldbUser,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestinationCsql, err := sql.NewDatabaseInstance(ctx, \"destination_csql\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"destination-csql\"),\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_15\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-custom-2-13312\"),\n\t\t\t\tDeletionProtectionEnabled: pulumi.Bool(false),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestinationCp, err := databasemigrationservice.NewConnectionProfile(ctx, \"destination_cp\", \u0026databasemigrationservice.ConnectionProfileArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"destination-cp\"),\n\t\t\tDisplayName: pulumi.String(\"destination-cp_display\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tPostgresql: \u0026databasemigrationservice.ConnectionProfilePostgresqlArgs{\n\t\t\t\tCloudSqlId: pulumi.String(\"destination-csql\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdestinationCsql,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = databasemigrationservice.NewMigrationJob(ctx, \"psqltopsql\", \u0026databasemigrationservice.MigrationJobArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tMigrationJobId: pulumi.String(\"my-migrationid\"),\n\t\t\tDisplayName: pulumi.String(\"my-migrationid_display\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tStaticIpConnectivity: nil,\n\t\t\tSource: sourceCp.Name,\n\t\t\tDestination: destinationCp.Name,\n\t\t\tType: pulumi.String(\"CONTINUOUS\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.SslCert;\nimport com.pulumi.gcp.sql.SslCertArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfile;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfileArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfilePostgresqlArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfilePostgresqlSslArgs;\nimport com.pulumi.gcp.databasemigrationservice.MigrationJob;\nimport com.pulumi.gcp.databasemigrationservice.MigrationJobArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.MigrationJobStaticIpConnectivityArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var sourceCsql = new DatabaseInstance(\"sourceCsql\", DatabaseInstanceArgs.builder()\n .name(\"source-csql\")\n .databaseVersion(\"POSTGRES_15\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-custom-2-13312\")\n .deletionProtectionEnabled(false)\n .build())\n .deletionProtection(false)\n .build());\n\n var sourceSqlClientCert = new SslCert(\"sourceSqlClientCert\", SslCertArgs.builder()\n .commonName(\"cert\")\n .instance(sourceCsql.name())\n .build(), CustomResourceOptions.builder()\n .dependsOn(sourceCsql)\n .build());\n\n var sourceSqldbUser = new User(\"sourceSqldbUser\", UserArgs.builder()\n .name(\"username\")\n .instance(sourceCsql.name())\n .password(\"password\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(sourceSqlClientCert)\n .build());\n\n var sourceCp = new ConnectionProfile(\"sourceCp\", ConnectionProfileArgs.builder()\n .location(\"us-central1\")\n .connectionProfileId(\"source-cp\")\n .displayName(\"source-cp_display\")\n .labels(Map.of(\"foo\", \"bar\"))\n .postgresql(ConnectionProfilePostgresqlArgs.builder()\n .host(sourceCsql.ipAddresses().applyValue(ipAddresses -\u003e ipAddresses[0].ipAddress()))\n .port(3306)\n .username(sourceSqldbUser.name())\n .password(sourceSqldbUser.password())\n .ssl(ConnectionProfilePostgresqlSslArgs.builder()\n .clientKey(sourceSqlClientCert.privateKey())\n .clientCertificate(sourceSqlClientCert.cert())\n .caCertificate(sourceSqlClientCert.serverCaCert())\n .build())\n .cloudSqlId(\"source-csql\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(sourceSqldbUser)\n .build());\n\n var destinationCsql = new DatabaseInstance(\"destinationCsql\", DatabaseInstanceArgs.builder()\n .name(\"destination-csql\")\n .databaseVersion(\"POSTGRES_15\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-custom-2-13312\")\n .deletionProtectionEnabled(false)\n .build())\n .deletionProtection(false)\n .build());\n\n var destinationCp = new ConnectionProfile(\"destinationCp\", ConnectionProfileArgs.builder()\n .location(\"us-central1\")\n .connectionProfileId(\"destination-cp\")\n .displayName(\"destination-cp_display\")\n .labels(Map.of(\"foo\", \"bar\"))\n .postgresql(ConnectionProfilePostgresqlArgs.builder()\n .cloudSqlId(\"destination-csql\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(destinationCsql)\n .build());\n\n var psqltopsql = new MigrationJob(\"psqltopsql\", MigrationJobArgs.builder()\n .location(\"us-central1\")\n .migrationJobId(\"my-migrationid\")\n .displayName(\"my-migrationid_display\")\n .labels(Map.of(\"foo\", \"bar\"))\n .staticIpConnectivity()\n .source(sourceCp.name())\n .destination(destinationCp.name())\n .type(\"CONTINUOUS\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sourceCsql:\n type: gcp:sql:DatabaseInstance\n name: source_csql\n properties:\n name: source-csql\n databaseVersion: POSTGRES_15\n settings:\n tier: db-custom-2-13312\n deletionProtectionEnabled: false\n deletionProtection: false\n sourceSqlClientCert:\n type: gcp:sql:SslCert\n name: source_sql_client_cert\n properties:\n commonName: cert\n instance: ${sourceCsql.name}\n options:\n dependson:\n - ${sourceCsql}\n sourceSqldbUser:\n type: gcp:sql:User\n name: source_sqldb_user\n properties:\n name: username\n instance: ${sourceCsql.name}\n password: password\n options:\n dependson:\n - ${sourceSqlClientCert}\n sourceCp:\n type: gcp:databasemigrationservice:ConnectionProfile\n name: source_cp\n properties:\n location: us-central1\n connectionProfileId: source-cp\n displayName: source-cp_display\n labels:\n foo: bar\n postgresql:\n host: ${sourceCsql.ipAddresses[0].ipAddress}\n port: 3306\n username: ${sourceSqldbUser.name}\n password: ${sourceSqldbUser.password}\n ssl:\n clientKey: ${sourceSqlClientCert.privateKey}\n clientCertificate: ${sourceSqlClientCert.cert}\n caCertificate: ${sourceSqlClientCert.serverCaCert}\n cloudSqlId: source-csql\n options:\n dependson:\n - ${sourceSqldbUser}\n destinationCsql:\n type: gcp:sql:DatabaseInstance\n name: destination_csql\n properties:\n name: destination-csql\n databaseVersion: POSTGRES_15\n settings:\n tier: db-custom-2-13312\n deletionProtectionEnabled: false\n deletionProtection: false\n destinationCp:\n type: gcp:databasemigrationservice:ConnectionProfile\n name: destination_cp\n properties:\n location: us-central1\n connectionProfileId: destination-cp\n displayName: destination-cp_display\n labels:\n foo: bar\n postgresql:\n cloudSqlId: destination-csql\n options:\n dependson:\n - ${destinationCsql}\n psqltopsql:\n type: gcp:databasemigrationservice:MigrationJob\n properties:\n location: us-central1\n migrationJobId: my-migrationid\n displayName: my-migrationid_display\n labels:\n foo: bar\n staticIpConnectivity: {}\n source: ${sourceCp.name}\n destination: ${destinationCp.name}\n type: CONTINUOUS\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Database Migration Service Migration Job Postgres To Alloydb\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst sourceCsql = new gcp.sql.DatabaseInstance(\"source_csql\", {\n name: \"source-csql\",\n databaseVersion: \"POSTGRES_15\",\n settings: {\n tier: \"db-custom-2-13312\",\n deletionProtectionEnabled: false,\n },\n deletionProtection: false,\n});\nconst sourceSqlClientCert = new gcp.sql.SslCert(\"source_sql_client_cert\", {\n commonName: \"cert\",\n instance: sourceCsql.name,\n}, {\n dependsOn: [sourceCsql],\n});\nconst sourceSqldbUser = new gcp.sql.User(\"source_sqldb_user\", {\n name: \"username\",\n instance: sourceCsql.name,\n password: \"password\",\n}, {\n dependsOn: [sourceSqlClientCert],\n});\nconst sourceCp = new gcp.databasemigrationservice.ConnectionProfile(\"source_cp\", {\n location: \"us-central1\",\n connectionProfileId: \"source-cp\",\n displayName: \"source-cp_display\",\n labels: {\n foo: \"bar\",\n },\n postgresql: {\n host: sourceCsql.ipAddresses.apply(ipAddresses =\u003e ipAddresses[0].ipAddress),\n port: 3306,\n username: sourceSqldbUser.name,\n password: sourceSqldbUser.password,\n ssl: {\n clientKey: sourceSqlClientCert.privateKey,\n clientCertificate: sourceSqlClientCert.cert,\n caCertificate: sourceSqlClientCert.serverCaCert,\n },\n cloudSqlId: \"source-csql\",\n },\n}, {\n dependsOn: [sourceSqldbUser],\n});\nconst _default = new gcp.compute.Network(\"default\", {name: \"destination-alloydb\"});\nconst destinationAlloydb = new gcp.alloydb.Cluster(\"destination_alloydb\", {\n clusterId: \"destination-alloydb\",\n location: \"us-central1\",\n networkConfig: {\n network: _default.id,\n },\n databaseVersion: \"POSTGRES_15\",\n initialUser: {\n user: \"destination-alloydb\",\n password: \"destination-alloydb\",\n },\n});\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"destination-alloydb\",\n addressType: \"INTERNAL\",\n purpose: \"VPC_PEERING\",\n prefixLength: 16,\n network: _default.id,\n});\nconst vpcConnection = new gcp.servicenetworking.Connection(\"vpc_connection\", {\n network: _default.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAlloc.name],\n});\nconst destinationAlloydbPrimary = new gcp.alloydb.Instance(\"destination_alloydb_primary\", {\n cluster: destinationAlloydb.name,\n instanceId: \"destination-alloydb-primary\",\n instanceType: \"PRIMARY\",\n}, {\n dependsOn: [vpcConnection],\n});\nconst destinationCp = new gcp.databasemigrationservice.ConnectionProfile(\"destination_cp\", {\n location: \"us-central1\",\n connectionProfileId: \"destination-cp\",\n displayName: \"destination-cp_display\",\n labels: {\n foo: \"bar\",\n },\n postgresql: {\n alloydbClusterId: \"destination-alloydb\",\n },\n}, {\n dependsOn: [\n destinationAlloydb,\n destinationAlloydbPrimary,\n ],\n});\nconst psqltoalloydb = new gcp.databasemigrationservice.MigrationJob(\"psqltoalloydb\", {\n location: \"us-central1\",\n migrationJobId: \"my-migrationid\",\n displayName: \"my-migrationid_display\",\n labels: {\n foo: \"bar\",\n },\n staticIpConnectivity: {},\n source: sourceCp.name,\n destination: destinationCp.name,\n type: \"CONTINUOUS\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nsource_csql = gcp.sql.DatabaseInstance(\"source_csql\",\n name=\"source-csql\",\n database_version=\"POSTGRES_15\",\n settings={\n \"tier\": \"db-custom-2-13312\",\n \"deletion_protection_enabled\": False,\n },\n deletion_protection=False)\nsource_sql_client_cert = gcp.sql.SslCert(\"source_sql_client_cert\",\n common_name=\"cert\",\n instance=source_csql.name,\n opts = pulumi.ResourceOptions(depends_on=[source_csql]))\nsource_sqldb_user = gcp.sql.User(\"source_sqldb_user\",\n name=\"username\",\n instance=source_csql.name,\n password=\"password\",\n opts = pulumi.ResourceOptions(depends_on=[source_sql_client_cert]))\nsource_cp = gcp.databasemigrationservice.ConnectionProfile(\"source_cp\",\n location=\"us-central1\",\n connection_profile_id=\"source-cp\",\n display_name=\"source-cp_display\",\n labels={\n \"foo\": \"bar\",\n },\n postgresql={\n \"host\": source_csql.ip_addresses[0].ip_address,\n \"port\": 3306,\n \"username\": source_sqldb_user.name,\n \"password\": source_sqldb_user.password,\n \"ssl\": {\n \"client_key\": source_sql_client_cert.private_key,\n \"client_certificate\": source_sql_client_cert.cert,\n \"ca_certificate\": source_sql_client_cert.server_ca_cert,\n },\n \"cloud_sql_id\": \"source-csql\",\n },\n opts = pulumi.ResourceOptions(depends_on=[source_sqldb_user]))\ndefault = gcp.compute.Network(\"default\", name=\"destination-alloydb\")\ndestination_alloydb = gcp.alloydb.Cluster(\"destination_alloydb\",\n cluster_id=\"destination-alloydb\",\n location=\"us-central1\",\n network_config={\n \"network\": default.id,\n },\n database_version=\"POSTGRES_15\",\n initial_user={\n \"user\": \"destination-alloydb\",\n \"password\": \"destination-alloydb\",\n })\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"destination-alloydb\",\n address_type=\"INTERNAL\",\n purpose=\"VPC_PEERING\",\n prefix_length=16,\n network=default.id)\nvpc_connection = gcp.servicenetworking.Connection(\"vpc_connection\",\n network=default.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_alloc.name])\ndestination_alloydb_primary = gcp.alloydb.Instance(\"destination_alloydb_primary\",\n cluster=destination_alloydb.name,\n instance_id=\"destination-alloydb-primary\",\n instance_type=\"PRIMARY\",\n opts = pulumi.ResourceOptions(depends_on=[vpc_connection]))\ndestination_cp = gcp.databasemigrationservice.ConnectionProfile(\"destination_cp\",\n location=\"us-central1\",\n connection_profile_id=\"destination-cp\",\n display_name=\"destination-cp_display\",\n labels={\n \"foo\": \"bar\",\n },\n postgresql={\n \"alloydb_cluster_id\": \"destination-alloydb\",\n },\n opts = pulumi.ResourceOptions(depends_on=[\n destination_alloydb,\n destination_alloydb_primary,\n ]))\npsqltoalloydb = gcp.databasemigrationservice.MigrationJob(\"psqltoalloydb\",\n location=\"us-central1\",\n migration_job_id=\"my-migrationid\",\n display_name=\"my-migrationid_display\",\n labels={\n \"foo\": \"bar\",\n },\n static_ip_connectivity={},\n source=source_cp.name,\n destination=destination_cp.name,\n type=\"CONTINUOUS\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var sourceCsql = new Gcp.Sql.DatabaseInstance(\"source_csql\", new()\n {\n Name = \"source-csql\",\n DatabaseVersion = \"POSTGRES_15\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-custom-2-13312\",\n DeletionProtectionEnabled = false,\n },\n DeletionProtection = false,\n });\n\n var sourceSqlClientCert = new Gcp.Sql.SslCert(\"source_sql_client_cert\", new()\n {\n CommonName = \"cert\",\n Instance = sourceCsql.Name,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n sourceCsql,\n },\n });\n\n var sourceSqldbUser = new Gcp.Sql.User(\"source_sqldb_user\", new()\n {\n Name = \"username\",\n Instance = sourceCsql.Name,\n Password = \"password\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n sourceSqlClientCert,\n },\n });\n\n var sourceCp = new Gcp.DatabaseMigrationService.ConnectionProfile(\"source_cp\", new()\n {\n Location = \"us-central1\",\n ConnectionProfileId = \"source-cp\",\n DisplayName = \"source-cp_display\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Postgresql = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfilePostgresqlArgs\n {\n Host = sourceCsql.IpAddresses.Apply(ipAddresses =\u003e ipAddresses[0].IpAddress),\n Port = 3306,\n Username = sourceSqldbUser.Name,\n Password = sourceSqldbUser.Password,\n Ssl = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfilePostgresqlSslArgs\n {\n ClientKey = sourceSqlClientCert.PrivateKey,\n ClientCertificate = sourceSqlClientCert.Cert,\n CaCertificate = sourceSqlClientCert.ServerCaCert,\n },\n CloudSqlId = \"source-csql\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n sourceSqldbUser,\n },\n });\n\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"destination-alloydb\",\n });\n\n var destinationAlloydb = new Gcp.Alloydb.Cluster(\"destination_alloydb\", new()\n {\n ClusterId = \"destination-alloydb\",\n Location = \"us-central1\",\n NetworkConfig = new Gcp.Alloydb.Inputs.ClusterNetworkConfigArgs\n {\n Network = @default.Id,\n },\n DatabaseVersion = \"POSTGRES_15\",\n InitialUser = new Gcp.Alloydb.Inputs.ClusterInitialUserArgs\n {\n User = \"destination-alloydb\",\n Password = \"destination-alloydb\",\n },\n });\n\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"destination-alloydb\",\n AddressType = \"INTERNAL\",\n Purpose = \"VPC_PEERING\",\n PrefixLength = 16,\n Network = @default.Id,\n });\n\n var vpcConnection = new Gcp.ServiceNetworking.Connection(\"vpc_connection\", new()\n {\n Network = @default.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAlloc.Name,\n },\n });\n\n var destinationAlloydbPrimary = new Gcp.Alloydb.Instance(\"destination_alloydb_primary\", new()\n {\n Cluster = destinationAlloydb.Name,\n InstanceId = \"destination-alloydb-primary\",\n InstanceType = \"PRIMARY\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vpcConnection,\n },\n });\n\n var destinationCp = new Gcp.DatabaseMigrationService.ConnectionProfile(\"destination_cp\", new()\n {\n Location = \"us-central1\",\n ConnectionProfileId = \"destination-cp\",\n DisplayName = \"destination-cp_display\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Postgresql = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfilePostgresqlArgs\n {\n AlloydbClusterId = \"destination-alloydb\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n destinationAlloydb,\n destinationAlloydbPrimary,\n },\n });\n\n var psqltoalloydb = new Gcp.DatabaseMigrationService.MigrationJob(\"psqltoalloydb\", new()\n {\n Location = \"us-central1\",\n MigrationJobId = \"my-migrationid\",\n DisplayName = \"my-migrationid_display\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n StaticIpConnectivity = null,\n Source = sourceCp.Name,\n Destination = destinationCp.Name,\n Type = \"CONTINUOUS\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/alloydb\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/databasemigrationservice\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/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 := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceCsql, err := sql.NewDatabaseInstance(ctx, \"source_csql\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"source-csql\"),\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_15\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-custom-2-13312\"),\n\t\t\t\tDeletionProtectionEnabled: pulumi.Bool(false),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceSqlClientCert, err := sql.NewSslCert(ctx, \"source_sql_client_cert\", \u0026sql.SslCertArgs{\n\t\t\tCommonName: pulumi.String(\"cert\"),\n\t\t\tInstance: sourceCsql.Name,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsourceCsql,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceSqldbUser, err := sql.NewUser(ctx, \"source_sqldb_user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"username\"),\n\t\t\tInstance: sourceCsql.Name,\n\t\t\tPassword: pulumi.String(\"password\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsourceSqlClientCert,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceCp, err := databasemigrationservice.NewConnectionProfile(ctx, \"source_cp\", \u0026databasemigrationservice.ConnectionProfileArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"source-cp\"),\n\t\t\tDisplayName: pulumi.String(\"source-cp_display\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tPostgresql: \u0026databasemigrationservice.ConnectionProfilePostgresqlArgs{\n\t\t\t\tHost: sourceCsql.IpAddresses.ApplyT(func(ipAddresses []sql.DatabaseInstanceIpAddress) (*string, error) {\n\t\t\t\t\treturn \u0026ipAddresses[0].IpAddress, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tPort: pulumi.Int(3306),\n\t\t\t\tUsername: sourceSqldbUser.Name,\n\t\t\t\tPassword: sourceSqldbUser.Password,\n\t\t\t\tSsl: \u0026databasemigrationservice.ConnectionProfilePostgresqlSslArgs{\n\t\t\t\t\tClientKey: sourceSqlClientCert.PrivateKey,\n\t\t\t\t\tClientCertificate: sourceSqlClientCert.Cert,\n\t\t\t\t\tCaCertificate: sourceSqlClientCert.ServerCaCert,\n\t\t\t\t},\n\t\t\t\tCloudSqlId: pulumi.String(\"source-csql\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsourceSqldbUser,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"destination-alloydb\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestinationAlloydb, err := alloydb.NewCluster(ctx, \"destination_alloydb\", \u0026alloydb.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"destination-alloydb\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNetworkConfig: \u0026alloydb.ClusterNetworkConfigArgs{\n\t\t\t\tNetwork: _default.ID(),\n\t\t\t},\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_15\"),\n\t\t\tInitialUser: \u0026alloydb.ClusterInitialUserArgs{\n\t\t\t\tUser: pulumi.String(\"destination-alloydb\"),\n\t\t\t\tPassword: pulumi.String(\"destination-alloydb\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"destination-alloydb\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvpcConnection, err := servicenetworking.NewConnection(ctx, \"vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: _default.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tprivateIpAlloc.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestinationAlloydbPrimary, err := alloydb.NewInstance(ctx, \"destination_alloydb_primary\", \u0026alloydb.InstanceArgs{\n\t\t\tCluster: destinationAlloydb.Name,\n\t\t\tInstanceId: pulumi.String(\"destination-alloydb-primary\"),\n\t\t\tInstanceType: pulumi.String(\"PRIMARY\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestinationCp, err := databasemigrationservice.NewConnectionProfile(ctx, \"destination_cp\", \u0026databasemigrationservice.ConnectionProfileArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"destination-cp\"),\n\t\t\tDisplayName: pulumi.String(\"destination-cp_display\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tPostgresql: \u0026databasemigrationservice.ConnectionProfilePostgresqlArgs{\n\t\t\t\tAlloydbClusterId: pulumi.String(\"destination-alloydb\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdestinationAlloydb,\n\t\t\tdestinationAlloydbPrimary,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = databasemigrationservice.NewMigrationJob(ctx, \"psqltoalloydb\", \u0026databasemigrationservice.MigrationJobArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tMigrationJobId: pulumi.String(\"my-migrationid\"),\n\t\t\tDisplayName: pulumi.String(\"my-migrationid_display\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tStaticIpConnectivity: nil,\n\t\t\tSource: sourceCp.Name,\n\t\t\tDestination: destinationCp.Name,\n\t\t\tType: pulumi.String(\"CONTINUOUS\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.SslCert;\nimport com.pulumi.gcp.sql.SslCertArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfile;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfileArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfilePostgresqlArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfilePostgresqlSslArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.alloydb.Cluster;\nimport com.pulumi.gcp.alloydb.ClusterArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterNetworkConfigArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterInitialUserArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.alloydb.Instance;\nimport com.pulumi.gcp.alloydb.InstanceArgs;\nimport com.pulumi.gcp.databasemigrationservice.MigrationJob;\nimport com.pulumi.gcp.databasemigrationservice.MigrationJobArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.MigrationJobStaticIpConnectivityArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var sourceCsql = new DatabaseInstance(\"sourceCsql\", DatabaseInstanceArgs.builder()\n .name(\"source-csql\")\n .databaseVersion(\"POSTGRES_15\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-custom-2-13312\")\n .deletionProtectionEnabled(false)\n .build())\n .deletionProtection(false)\n .build());\n\n var sourceSqlClientCert = new SslCert(\"sourceSqlClientCert\", SslCertArgs.builder()\n .commonName(\"cert\")\n .instance(sourceCsql.name())\n .build(), CustomResourceOptions.builder()\n .dependsOn(sourceCsql)\n .build());\n\n var sourceSqldbUser = new User(\"sourceSqldbUser\", UserArgs.builder()\n .name(\"username\")\n .instance(sourceCsql.name())\n .password(\"password\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(sourceSqlClientCert)\n .build());\n\n var sourceCp = new ConnectionProfile(\"sourceCp\", ConnectionProfileArgs.builder()\n .location(\"us-central1\")\n .connectionProfileId(\"source-cp\")\n .displayName(\"source-cp_display\")\n .labels(Map.of(\"foo\", \"bar\"))\n .postgresql(ConnectionProfilePostgresqlArgs.builder()\n .host(sourceCsql.ipAddresses().applyValue(ipAddresses -\u003e ipAddresses[0].ipAddress()))\n .port(3306)\n .username(sourceSqldbUser.name())\n .password(sourceSqldbUser.password())\n .ssl(ConnectionProfilePostgresqlSslArgs.builder()\n .clientKey(sourceSqlClientCert.privateKey())\n .clientCertificate(sourceSqlClientCert.cert())\n .caCertificate(sourceSqlClientCert.serverCaCert())\n .build())\n .cloudSqlId(\"source-csql\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(sourceSqldbUser)\n .build());\n\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"destination-alloydb\")\n .build());\n\n var destinationAlloydb = new Cluster(\"destinationAlloydb\", ClusterArgs.builder()\n .clusterId(\"destination-alloydb\")\n .location(\"us-central1\")\n .networkConfig(ClusterNetworkConfigArgs.builder()\n .network(default_.id())\n .build())\n .databaseVersion(\"POSTGRES_15\")\n .initialUser(ClusterInitialUserArgs.builder()\n .user(\"destination-alloydb\")\n .password(\"destination-alloydb\")\n .build())\n .build());\n\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"destination-alloydb\")\n .addressType(\"INTERNAL\")\n .purpose(\"VPC_PEERING\")\n .prefixLength(16)\n .network(default_.id())\n .build());\n\n var vpcConnection = new Connection(\"vpcConnection\", ConnectionArgs.builder()\n .network(default_.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAlloc.name())\n .build());\n\n var destinationAlloydbPrimary = new Instance(\"destinationAlloydbPrimary\", InstanceArgs.builder()\n .cluster(destinationAlloydb.name())\n .instanceId(\"destination-alloydb-primary\")\n .instanceType(\"PRIMARY\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(vpcConnection)\n .build());\n\n var destinationCp = new ConnectionProfile(\"destinationCp\", ConnectionProfileArgs.builder()\n .location(\"us-central1\")\n .connectionProfileId(\"destination-cp\")\n .displayName(\"destination-cp_display\")\n .labels(Map.of(\"foo\", \"bar\"))\n .postgresql(ConnectionProfilePostgresqlArgs.builder()\n .alloydbClusterId(\"destination-alloydb\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n destinationAlloydb,\n destinationAlloydbPrimary)\n .build());\n\n var psqltoalloydb = new MigrationJob(\"psqltoalloydb\", MigrationJobArgs.builder()\n .location(\"us-central1\")\n .migrationJobId(\"my-migrationid\")\n .displayName(\"my-migrationid_display\")\n .labels(Map.of(\"foo\", \"bar\"))\n .staticIpConnectivity()\n .source(sourceCp.name())\n .destination(destinationCp.name())\n .type(\"CONTINUOUS\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sourceCsql:\n type: gcp:sql:DatabaseInstance\n name: source_csql\n properties:\n name: source-csql\n databaseVersion: POSTGRES_15\n settings:\n tier: db-custom-2-13312\n deletionProtectionEnabled: false\n deletionProtection: false\n sourceSqlClientCert:\n type: gcp:sql:SslCert\n name: source_sql_client_cert\n properties:\n commonName: cert\n instance: ${sourceCsql.name}\n options:\n dependson:\n - ${sourceCsql}\n sourceSqldbUser:\n type: gcp:sql:User\n name: source_sqldb_user\n properties:\n name: username\n instance: ${sourceCsql.name}\n password: password\n options:\n dependson:\n - ${sourceSqlClientCert}\n sourceCp:\n type: gcp:databasemigrationservice:ConnectionProfile\n name: source_cp\n properties:\n location: us-central1\n connectionProfileId: source-cp\n displayName: source-cp_display\n labels:\n foo: bar\n postgresql:\n host: ${sourceCsql.ipAddresses[0].ipAddress}\n port: 3306\n username: ${sourceSqldbUser.name}\n password: ${sourceSqldbUser.password}\n ssl:\n clientKey: ${sourceSqlClientCert.privateKey}\n clientCertificate: ${sourceSqlClientCert.cert}\n caCertificate: ${sourceSqlClientCert.serverCaCert}\n cloudSqlId: source-csql\n options:\n dependson:\n - ${sourceSqldbUser}\n destinationAlloydb:\n type: gcp:alloydb:Cluster\n name: destination_alloydb\n properties:\n clusterId: destination-alloydb\n location: us-central1\n networkConfig:\n network: ${default.id}\n databaseVersion: POSTGRES_15\n initialUser:\n user: destination-alloydb\n password: destination-alloydb\n destinationAlloydbPrimary:\n type: gcp:alloydb:Instance\n name: destination_alloydb_primary\n properties:\n cluster: ${destinationAlloydb.name}\n instanceId: destination-alloydb-primary\n instanceType: PRIMARY\n options:\n dependson:\n - ${vpcConnection}\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: destination-alloydb\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 16\n network: ${default.id}\n vpcConnection:\n type: gcp:servicenetworking:Connection\n name: vpc_connection\n properties:\n network: ${default.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAlloc.name}\n default:\n type: gcp:compute:Network\n properties:\n name: destination-alloydb\n destinationCp:\n type: gcp:databasemigrationservice:ConnectionProfile\n name: destination_cp\n properties:\n location: us-central1\n connectionProfileId: destination-cp\n displayName: destination-cp_display\n labels:\n foo: bar\n postgresql:\n alloydbClusterId: destination-alloydb\n options:\n dependson:\n - ${destinationAlloydb}\n - ${destinationAlloydbPrimary}\n psqltoalloydb:\n type: gcp:databasemigrationservice:MigrationJob\n properties:\n location: us-central1\n migrationJobId: my-migrationid\n displayName: my-migrationid_display\n labels:\n foo: bar\n staticIpConnectivity: {}\n source: ${sourceCp.name}\n destination: ${destinationCp.name}\n type: CONTINUOUS\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nMigrationJob can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/migrationJobs/{{migration_job_id}}`\n\n* `{{project}}/{{location}}/{{migration_job_id}}`\n\n* `{{location}}/{{migration_job_id}}`\n\nWhen using the `pulumi import` command, MigrationJob can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:databasemigrationservice/migrationJob:MigrationJob default projects/{{project}}/locations/{{location}}/migrationJobs/{{migration_job_id}}\n```\n\n```sh\n$ pulumi import gcp:databasemigrationservice/migrationJob:MigrationJob default {{project}}/{{location}}/{{migration_job_id}}\n```\n\n```sh\n$ pulumi import gcp:databasemigrationservice/migrationJob:MigrationJob default {{location}}/{{migration_job_id}}\n```\n\n", + "description": "A migration job definition.\n\n\nTo get more information about MigrationJob, see:\n\n* [API documentation](https://cloud.google.com/database-migration/docs/reference/rest/v1/projects.locations.migrationJobs/create)\n* How-to Guides\n * [Database Migration](https://cloud.google.com/database-migration/docs/)\n\n## Example Usage\n\n### Database Migration Service Migration Job Mysql To Mysql\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst sourceCsql = new gcp.sql.DatabaseInstance(\"source_csql\", {\n name: \"source-csql\",\n databaseVersion: \"MYSQL_5_7\",\n settings: {\n tier: \"db-n1-standard-1\",\n deletionProtectionEnabled: false,\n },\n deletionProtection: false,\n});\nconst sourceSqlClientCert = new gcp.sql.SslCert(\"source_sql_client_cert\", {\n commonName: \"cert\",\n instance: sourceCsql.name,\n}, {\n dependsOn: [sourceCsql],\n});\nconst sourceSqldbUser = new gcp.sql.User(\"source_sqldb_user\", {\n name: \"username\",\n instance: sourceCsql.name,\n password: \"password\",\n}, {\n dependsOn: [sourceSqlClientCert],\n});\nconst sourceCp = new gcp.databasemigrationservice.ConnectionProfile(\"source_cp\", {\n location: \"us-central1\",\n connectionProfileId: \"source-cp\",\n displayName: \"source-cp_display\",\n labels: {\n foo: \"bar\",\n },\n mysql: {\n host: sourceCsql.ipAddresses.apply(ipAddresses =\u003e ipAddresses[0].ipAddress),\n port: 3306,\n username: sourceSqldbUser.name,\n password: sourceSqldbUser.password,\n ssl: {\n clientKey: sourceSqlClientCert.privateKey,\n clientCertificate: sourceSqlClientCert.cert,\n caCertificate: sourceSqlClientCert.serverCaCert,\n },\n cloudSqlId: \"source-csql\",\n },\n}, {\n dependsOn: [sourceSqldbUser],\n});\nconst destinationCsql = new gcp.sql.DatabaseInstance(\"destination_csql\", {\n name: \"destination-csql\",\n databaseVersion: \"MYSQL_5_7\",\n settings: {\n tier: \"db-n1-standard-1\",\n deletionProtectionEnabled: false,\n },\n deletionProtection: false,\n});\nconst destinationCp = new gcp.databasemigrationservice.ConnectionProfile(\"destination_cp\", {\n location: \"us-central1\",\n connectionProfileId: \"destination-cp\",\n displayName: \"destination-cp_display\",\n labels: {\n foo: \"bar\",\n },\n mysql: {\n cloudSqlId: \"destination-csql\",\n },\n}, {\n dependsOn: [destinationCsql],\n});\nconst _default = new gcp.compute.Network(\"default\", {name: \"destination-csql\"});\nconst mysqltomysql = new gcp.databasemigrationservice.MigrationJob(\"mysqltomysql\", {\n location: \"us-central1\",\n migrationJobId: \"my-migrationid\",\n displayName: \"my-migrationid_display\",\n labels: {\n foo: \"bar\",\n },\n performanceConfig: {\n dumpParallelLevel: \"MAX\",\n },\n vpcPeeringConnectivity: {\n vpc: _default.id,\n },\n dumpType: \"LOGICAL\",\n dumpFlags: {\n dumpFlags: [{\n name: \"max-allowed-packet\",\n value: \"1073741824\",\n }],\n },\n source: sourceCp.name,\n destination: destinationCp.name,\n type: \"CONTINUOUS\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nsource_csql = gcp.sql.DatabaseInstance(\"source_csql\",\n name=\"source-csql\",\n database_version=\"MYSQL_5_7\",\n settings={\n \"tier\": \"db-n1-standard-1\",\n \"deletion_protection_enabled\": False,\n },\n deletion_protection=False)\nsource_sql_client_cert = gcp.sql.SslCert(\"source_sql_client_cert\",\n common_name=\"cert\",\n instance=source_csql.name,\n opts = pulumi.ResourceOptions(depends_on=[source_csql]))\nsource_sqldb_user = gcp.sql.User(\"source_sqldb_user\",\n name=\"username\",\n instance=source_csql.name,\n password=\"password\",\n opts = pulumi.ResourceOptions(depends_on=[source_sql_client_cert]))\nsource_cp = gcp.databasemigrationservice.ConnectionProfile(\"source_cp\",\n location=\"us-central1\",\n connection_profile_id=\"source-cp\",\n display_name=\"source-cp_display\",\n labels={\n \"foo\": \"bar\",\n },\n mysql={\n \"host\": source_csql.ip_addresses[0].ip_address,\n \"port\": 3306,\n \"username\": source_sqldb_user.name,\n \"password\": source_sqldb_user.password,\n \"ssl\": {\n \"client_key\": source_sql_client_cert.private_key,\n \"client_certificate\": source_sql_client_cert.cert,\n \"ca_certificate\": source_sql_client_cert.server_ca_cert,\n },\n \"cloud_sql_id\": \"source-csql\",\n },\n opts = pulumi.ResourceOptions(depends_on=[source_sqldb_user]))\ndestination_csql = gcp.sql.DatabaseInstance(\"destination_csql\",\n name=\"destination-csql\",\n database_version=\"MYSQL_5_7\",\n settings={\n \"tier\": \"db-n1-standard-1\",\n \"deletion_protection_enabled\": False,\n },\n deletion_protection=False)\ndestination_cp = gcp.databasemigrationservice.ConnectionProfile(\"destination_cp\",\n location=\"us-central1\",\n connection_profile_id=\"destination-cp\",\n display_name=\"destination-cp_display\",\n labels={\n \"foo\": \"bar\",\n },\n mysql={\n \"cloud_sql_id\": \"destination-csql\",\n },\n opts = pulumi.ResourceOptions(depends_on=[destination_csql]))\ndefault = gcp.compute.Network(\"default\", name=\"destination-csql\")\nmysqltomysql = gcp.databasemigrationservice.MigrationJob(\"mysqltomysql\",\n location=\"us-central1\",\n migration_job_id=\"my-migrationid\",\n display_name=\"my-migrationid_display\",\n labels={\n \"foo\": \"bar\",\n },\n performance_config={\n \"dump_parallel_level\": \"MAX\",\n },\n vpc_peering_connectivity={\n \"vpc\": default.id,\n },\n dump_type=\"LOGICAL\",\n dump_flags={\n \"dump_flags\": [{\n \"name\": \"max-allowed-packet\",\n \"value\": \"1073741824\",\n }],\n },\n source=source_cp.name,\n destination=destination_cp.name,\n type=\"CONTINUOUS\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var sourceCsql = new Gcp.Sql.DatabaseInstance(\"source_csql\", new()\n {\n Name = \"source-csql\",\n DatabaseVersion = \"MYSQL_5_7\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-n1-standard-1\",\n DeletionProtectionEnabled = false,\n },\n DeletionProtection = false,\n });\n\n var sourceSqlClientCert = new Gcp.Sql.SslCert(\"source_sql_client_cert\", new()\n {\n CommonName = \"cert\",\n Instance = sourceCsql.Name,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n sourceCsql,\n },\n });\n\n var sourceSqldbUser = new Gcp.Sql.User(\"source_sqldb_user\", new()\n {\n Name = \"username\",\n Instance = sourceCsql.Name,\n Password = \"password\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n sourceSqlClientCert,\n },\n });\n\n var sourceCp = new Gcp.DatabaseMigrationService.ConnectionProfile(\"source_cp\", new()\n {\n Location = \"us-central1\",\n ConnectionProfileId = \"source-cp\",\n DisplayName = \"source-cp_display\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Mysql = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileMysqlArgs\n {\n Host = sourceCsql.IpAddresses.Apply(ipAddresses =\u003e ipAddresses[0].IpAddress),\n Port = 3306,\n Username = sourceSqldbUser.Name,\n Password = sourceSqldbUser.Password,\n Ssl = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileMysqlSslArgs\n {\n ClientKey = sourceSqlClientCert.PrivateKey,\n ClientCertificate = sourceSqlClientCert.Cert,\n CaCertificate = sourceSqlClientCert.ServerCaCert,\n },\n CloudSqlId = \"source-csql\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n sourceSqldbUser,\n },\n });\n\n var destinationCsql = new Gcp.Sql.DatabaseInstance(\"destination_csql\", new()\n {\n Name = \"destination-csql\",\n DatabaseVersion = \"MYSQL_5_7\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-n1-standard-1\",\n DeletionProtectionEnabled = false,\n },\n DeletionProtection = false,\n });\n\n var destinationCp = new Gcp.DatabaseMigrationService.ConnectionProfile(\"destination_cp\", new()\n {\n Location = \"us-central1\",\n ConnectionProfileId = \"destination-cp\",\n DisplayName = \"destination-cp_display\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Mysql = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileMysqlArgs\n {\n CloudSqlId = \"destination-csql\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n destinationCsql,\n },\n });\n\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"destination-csql\",\n });\n\n var mysqltomysql = new Gcp.DatabaseMigrationService.MigrationJob(\"mysqltomysql\", new()\n {\n Location = \"us-central1\",\n MigrationJobId = \"my-migrationid\",\n DisplayName = \"my-migrationid_display\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n PerformanceConfig = new Gcp.DatabaseMigrationService.Inputs.MigrationJobPerformanceConfigArgs\n {\n DumpParallelLevel = \"MAX\",\n },\n VpcPeeringConnectivity = new Gcp.DatabaseMigrationService.Inputs.MigrationJobVpcPeeringConnectivityArgs\n {\n Vpc = @default.Id,\n },\n DumpType = \"LOGICAL\",\n DumpFlags = new Gcp.DatabaseMigrationService.Inputs.MigrationJobDumpFlagsArgs\n {\n DumpFlags = new[]\n {\n new Gcp.DatabaseMigrationService.Inputs.MigrationJobDumpFlagsDumpFlagArgs\n {\n Name = \"max-allowed-packet\",\n Value = \"1073741824\",\n },\n },\n },\n Source = sourceCp.Name,\n Destination = destinationCp.Name,\n Type = \"CONTINUOUS\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/databasemigrationservice\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceCsql, err := sql.NewDatabaseInstance(ctx, \"source_csql\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"source-csql\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_5_7\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-n1-standard-1\"),\n\t\t\t\tDeletionProtectionEnabled: pulumi.Bool(false),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceSqlClientCert, err := sql.NewSslCert(ctx, \"source_sql_client_cert\", \u0026sql.SslCertArgs{\n\t\t\tCommonName: pulumi.String(\"cert\"),\n\t\t\tInstance: sourceCsql.Name,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsourceCsql,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceSqldbUser, err := sql.NewUser(ctx, \"source_sqldb_user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"username\"),\n\t\t\tInstance: sourceCsql.Name,\n\t\t\tPassword: pulumi.String(\"password\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsourceSqlClientCert,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceCp, err := databasemigrationservice.NewConnectionProfile(ctx, \"source_cp\", \u0026databasemigrationservice.ConnectionProfileArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"source-cp\"),\n\t\t\tDisplayName: pulumi.String(\"source-cp_display\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tMysql: \u0026databasemigrationservice.ConnectionProfileMysqlArgs{\n\t\t\t\tHost: sourceCsql.IpAddresses.ApplyT(func(ipAddresses []sql.DatabaseInstanceIpAddress) (*string, error) {\n\t\t\t\t\treturn \u0026ipAddresses[0].IpAddress, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tPort: pulumi.Int(3306),\n\t\t\t\tUsername: sourceSqldbUser.Name,\n\t\t\t\tPassword: sourceSqldbUser.Password,\n\t\t\t\tSsl: \u0026databasemigrationservice.ConnectionProfileMysqlSslArgs{\n\t\t\t\t\tClientKey: sourceSqlClientCert.PrivateKey,\n\t\t\t\t\tClientCertificate: sourceSqlClientCert.Cert,\n\t\t\t\t\tCaCertificate: sourceSqlClientCert.ServerCaCert,\n\t\t\t\t},\n\t\t\t\tCloudSqlId: pulumi.String(\"source-csql\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsourceSqldbUser,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestinationCsql, err := sql.NewDatabaseInstance(ctx, \"destination_csql\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"destination-csql\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_5_7\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-n1-standard-1\"),\n\t\t\t\tDeletionProtectionEnabled: pulumi.Bool(false),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestinationCp, err := databasemigrationservice.NewConnectionProfile(ctx, \"destination_cp\", \u0026databasemigrationservice.ConnectionProfileArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"destination-cp\"),\n\t\t\tDisplayName: pulumi.String(\"destination-cp_display\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tMysql: \u0026databasemigrationservice.ConnectionProfileMysqlArgs{\n\t\t\t\tCloudSqlId: pulumi.String(\"destination-csql\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdestinationCsql,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"destination-csql\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = databasemigrationservice.NewMigrationJob(ctx, \"mysqltomysql\", \u0026databasemigrationservice.MigrationJobArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tMigrationJobId: pulumi.String(\"my-migrationid\"),\n\t\t\tDisplayName: pulumi.String(\"my-migrationid_display\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tPerformanceConfig: \u0026databasemigrationservice.MigrationJobPerformanceConfigArgs{\n\t\t\t\tDumpParallelLevel: pulumi.String(\"MAX\"),\n\t\t\t},\n\t\t\tVpcPeeringConnectivity: \u0026databasemigrationservice.MigrationJobVpcPeeringConnectivityArgs{\n\t\t\t\tVpc: _default.ID(),\n\t\t\t},\n\t\t\tDumpType: pulumi.String(\"LOGICAL\"),\n\t\t\tDumpFlags: \u0026databasemigrationservice.MigrationJobDumpFlagsArgs{\n\t\t\t\tDumpFlags: databasemigrationservice.MigrationJobDumpFlagsDumpFlagArray{\n\t\t\t\t\t\u0026databasemigrationservice.MigrationJobDumpFlagsDumpFlagArgs{\n\t\t\t\t\t\tName: pulumi.String(\"max-allowed-packet\"),\n\t\t\t\t\t\tValue: pulumi.String(\"1073741824\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSource: sourceCp.Name,\n\t\t\tDestination: destinationCp.Name,\n\t\t\tType: pulumi.String(\"CONTINUOUS\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.SslCert;\nimport com.pulumi.gcp.sql.SslCertArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfile;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfileArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileMysqlArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfileMysqlSslArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.databasemigrationservice.MigrationJob;\nimport com.pulumi.gcp.databasemigrationservice.MigrationJobArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.MigrationJobPerformanceConfigArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.MigrationJobVpcPeeringConnectivityArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.MigrationJobDumpFlagsArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var sourceCsql = new DatabaseInstance(\"sourceCsql\", DatabaseInstanceArgs.builder()\n .name(\"source-csql\")\n .databaseVersion(\"MYSQL_5_7\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-n1-standard-1\")\n .deletionProtectionEnabled(false)\n .build())\n .deletionProtection(false)\n .build());\n\n var sourceSqlClientCert = new SslCert(\"sourceSqlClientCert\", SslCertArgs.builder()\n .commonName(\"cert\")\n .instance(sourceCsql.name())\n .build(), CustomResourceOptions.builder()\n .dependsOn(sourceCsql)\n .build());\n\n var sourceSqldbUser = new User(\"sourceSqldbUser\", UserArgs.builder()\n .name(\"username\")\n .instance(sourceCsql.name())\n .password(\"password\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(sourceSqlClientCert)\n .build());\n\n var sourceCp = new ConnectionProfile(\"sourceCp\", ConnectionProfileArgs.builder()\n .location(\"us-central1\")\n .connectionProfileId(\"source-cp\")\n .displayName(\"source-cp_display\")\n .labels(Map.of(\"foo\", \"bar\"))\n .mysql(ConnectionProfileMysqlArgs.builder()\n .host(sourceCsql.ipAddresses().applyValue(ipAddresses -\u003e ipAddresses[0].ipAddress()))\n .port(3306)\n .username(sourceSqldbUser.name())\n .password(sourceSqldbUser.password())\n .ssl(ConnectionProfileMysqlSslArgs.builder()\n .clientKey(sourceSqlClientCert.privateKey())\n .clientCertificate(sourceSqlClientCert.cert())\n .caCertificate(sourceSqlClientCert.serverCaCert())\n .build())\n .cloudSqlId(\"source-csql\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(sourceSqldbUser)\n .build());\n\n var destinationCsql = new DatabaseInstance(\"destinationCsql\", DatabaseInstanceArgs.builder()\n .name(\"destination-csql\")\n .databaseVersion(\"MYSQL_5_7\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-n1-standard-1\")\n .deletionProtectionEnabled(false)\n .build())\n .deletionProtection(false)\n .build());\n\n var destinationCp = new ConnectionProfile(\"destinationCp\", ConnectionProfileArgs.builder()\n .location(\"us-central1\")\n .connectionProfileId(\"destination-cp\")\n .displayName(\"destination-cp_display\")\n .labels(Map.of(\"foo\", \"bar\"))\n .mysql(ConnectionProfileMysqlArgs.builder()\n .cloudSqlId(\"destination-csql\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(destinationCsql)\n .build());\n\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"destination-csql\")\n .build());\n\n var mysqltomysql = new MigrationJob(\"mysqltomysql\", MigrationJobArgs.builder()\n .location(\"us-central1\")\n .migrationJobId(\"my-migrationid\")\n .displayName(\"my-migrationid_display\")\n .labels(Map.of(\"foo\", \"bar\"))\n .performanceConfig(MigrationJobPerformanceConfigArgs.builder()\n .dumpParallelLevel(\"MAX\")\n .build())\n .vpcPeeringConnectivity(MigrationJobVpcPeeringConnectivityArgs.builder()\n .vpc(default_.id())\n .build())\n .dumpType(\"LOGICAL\")\n .dumpFlags(MigrationJobDumpFlagsArgs.builder()\n .dumpFlags(MigrationJobDumpFlagsDumpFlagArgs.builder()\n .name(\"max-allowed-packet\")\n .value(\"1073741824\")\n .build())\n .build())\n .source(sourceCp.name())\n .destination(destinationCp.name())\n .type(\"CONTINUOUS\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sourceCsql:\n type: gcp:sql:DatabaseInstance\n name: source_csql\n properties:\n name: source-csql\n databaseVersion: MYSQL_5_7\n settings:\n tier: db-n1-standard-1\n deletionProtectionEnabled: false\n deletionProtection: false\n sourceSqlClientCert:\n type: gcp:sql:SslCert\n name: source_sql_client_cert\n properties:\n commonName: cert\n instance: ${sourceCsql.name}\n options:\n dependson:\n - ${sourceCsql}\n sourceSqldbUser:\n type: gcp:sql:User\n name: source_sqldb_user\n properties:\n name: username\n instance: ${sourceCsql.name}\n password: password\n options:\n dependson:\n - ${sourceSqlClientCert}\n sourceCp:\n type: gcp:databasemigrationservice:ConnectionProfile\n name: source_cp\n properties:\n location: us-central1\n connectionProfileId: source-cp\n displayName: source-cp_display\n labels:\n foo: bar\n mysql:\n host: ${sourceCsql.ipAddresses[0].ipAddress}\n port: 3306\n username: ${sourceSqldbUser.name}\n password: ${sourceSqldbUser.password}\n ssl:\n clientKey: ${sourceSqlClientCert.privateKey}\n clientCertificate: ${sourceSqlClientCert.cert}\n caCertificate: ${sourceSqlClientCert.serverCaCert}\n cloudSqlId: source-csql\n options:\n dependson:\n - ${sourceSqldbUser}\n destinationCsql:\n type: gcp:sql:DatabaseInstance\n name: destination_csql\n properties:\n name: destination-csql\n databaseVersion: MYSQL_5_7\n settings:\n tier: db-n1-standard-1\n deletionProtectionEnabled: false\n deletionProtection: false\n destinationCp:\n type: gcp:databasemigrationservice:ConnectionProfile\n name: destination_cp\n properties:\n location: us-central1\n connectionProfileId: destination-cp\n displayName: destination-cp_display\n labels:\n foo: bar\n mysql:\n cloudSqlId: destination-csql\n options:\n dependson:\n - ${destinationCsql}\n default:\n type: gcp:compute:Network\n properties:\n name: destination-csql\n mysqltomysql:\n type: gcp:databasemigrationservice:MigrationJob\n properties:\n location: us-central1\n migrationJobId: my-migrationid\n displayName: my-migrationid_display\n labels:\n foo: bar\n performanceConfig:\n dumpParallelLevel: MAX\n vpcPeeringConnectivity:\n vpc: ${default.id}\n dumpType: LOGICAL\n dumpFlags:\n dumpFlags:\n - name: max-allowed-packet\n value: '1073741824'\n source: ${sourceCp.name}\n destination: ${destinationCp.name}\n type: CONTINUOUS\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Database Migration Service Migration Job Postgres To Postgres\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst sourceCsql = new gcp.sql.DatabaseInstance(\"source_csql\", {\n name: \"source-csql\",\n databaseVersion: \"POSTGRES_15\",\n settings: {\n tier: \"db-custom-2-13312\",\n deletionProtectionEnabled: false,\n },\n deletionProtection: false,\n});\nconst sourceSqlClientCert = new gcp.sql.SslCert(\"source_sql_client_cert\", {\n commonName: \"cert\",\n instance: sourceCsql.name,\n}, {\n dependsOn: [sourceCsql],\n});\nconst sourceSqldbUser = new gcp.sql.User(\"source_sqldb_user\", {\n name: \"username\",\n instance: sourceCsql.name,\n password: \"password\",\n}, {\n dependsOn: [sourceSqlClientCert],\n});\nconst sourceCp = new gcp.databasemigrationservice.ConnectionProfile(\"source_cp\", {\n location: \"us-central1\",\n connectionProfileId: \"source-cp\",\n displayName: \"source-cp_display\",\n labels: {\n foo: \"bar\",\n },\n postgresql: {\n host: sourceCsql.ipAddresses.apply(ipAddresses =\u003e ipAddresses[0].ipAddress),\n port: 3306,\n username: sourceSqldbUser.name,\n password: sourceSqldbUser.password,\n ssl: {\n clientKey: sourceSqlClientCert.privateKey,\n clientCertificate: sourceSqlClientCert.cert,\n caCertificate: sourceSqlClientCert.serverCaCert,\n },\n cloudSqlId: \"source-csql\",\n },\n}, {\n dependsOn: [sourceSqldbUser],\n});\nconst destinationCsql = new gcp.sql.DatabaseInstance(\"destination_csql\", {\n name: \"destination-csql\",\n databaseVersion: \"POSTGRES_15\",\n settings: {\n tier: \"db-custom-2-13312\",\n deletionProtectionEnabled: false,\n },\n deletionProtection: false,\n});\nconst destinationCp = new gcp.databasemigrationservice.ConnectionProfile(\"destination_cp\", {\n location: \"us-central1\",\n connectionProfileId: \"destination-cp\",\n displayName: \"destination-cp_display\",\n labels: {\n foo: \"bar\",\n },\n postgresql: {\n cloudSqlId: \"destination-csql\",\n },\n}, {\n dependsOn: [destinationCsql],\n});\nconst psqltopsql = new gcp.databasemigrationservice.MigrationJob(\"psqltopsql\", {\n location: \"us-central1\",\n migrationJobId: \"my-migrationid\",\n displayName: \"my-migrationid_display\",\n labels: {\n foo: \"bar\",\n },\n staticIpConnectivity: {},\n source: sourceCp.name,\n destination: destinationCp.name,\n type: \"CONTINUOUS\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nsource_csql = gcp.sql.DatabaseInstance(\"source_csql\",\n name=\"source-csql\",\n database_version=\"POSTGRES_15\",\n settings={\n \"tier\": \"db-custom-2-13312\",\n \"deletion_protection_enabled\": False,\n },\n deletion_protection=False)\nsource_sql_client_cert = gcp.sql.SslCert(\"source_sql_client_cert\",\n common_name=\"cert\",\n instance=source_csql.name,\n opts = pulumi.ResourceOptions(depends_on=[source_csql]))\nsource_sqldb_user = gcp.sql.User(\"source_sqldb_user\",\n name=\"username\",\n instance=source_csql.name,\n password=\"password\",\n opts = pulumi.ResourceOptions(depends_on=[source_sql_client_cert]))\nsource_cp = gcp.databasemigrationservice.ConnectionProfile(\"source_cp\",\n location=\"us-central1\",\n connection_profile_id=\"source-cp\",\n display_name=\"source-cp_display\",\n labels={\n \"foo\": \"bar\",\n },\n postgresql={\n \"host\": source_csql.ip_addresses[0].ip_address,\n \"port\": 3306,\n \"username\": source_sqldb_user.name,\n \"password\": source_sqldb_user.password,\n \"ssl\": {\n \"client_key\": source_sql_client_cert.private_key,\n \"client_certificate\": source_sql_client_cert.cert,\n \"ca_certificate\": source_sql_client_cert.server_ca_cert,\n },\n \"cloud_sql_id\": \"source-csql\",\n },\n opts = pulumi.ResourceOptions(depends_on=[source_sqldb_user]))\ndestination_csql = gcp.sql.DatabaseInstance(\"destination_csql\",\n name=\"destination-csql\",\n database_version=\"POSTGRES_15\",\n settings={\n \"tier\": \"db-custom-2-13312\",\n \"deletion_protection_enabled\": False,\n },\n deletion_protection=False)\ndestination_cp = gcp.databasemigrationservice.ConnectionProfile(\"destination_cp\",\n location=\"us-central1\",\n connection_profile_id=\"destination-cp\",\n display_name=\"destination-cp_display\",\n labels={\n \"foo\": \"bar\",\n },\n postgresql={\n \"cloud_sql_id\": \"destination-csql\",\n },\n opts = pulumi.ResourceOptions(depends_on=[destination_csql]))\npsqltopsql = gcp.databasemigrationservice.MigrationJob(\"psqltopsql\",\n location=\"us-central1\",\n migration_job_id=\"my-migrationid\",\n display_name=\"my-migrationid_display\",\n labels={\n \"foo\": \"bar\",\n },\n static_ip_connectivity={},\n source=source_cp.name,\n destination=destination_cp.name,\n type=\"CONTINUOUS\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var sourceCsql = new Gcp.Sql.DatabaseInstance(\"source_csql\", new()\n {\n Name = \"source-csql\",\n DatabaseVersion = \"POSTGRES_15\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-custom-2-13312\",\n DeletionProtectionEnabled = false,\n },\n DeletionProtection = false,\n });\n\n var sourceSqlClientCert = new Gcp.Sql.SslCert(\"source_sql_client_cert\", new()\n {\n CommonName = \"cert\",\n Instance = sourceCsql.Name,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n sourceCsql,\n },\n });\n\n var sourceSqldbUser = new Gcp.Sql.User(\"source_sqldb_user\", new()\n {\n Name = \"username\",\n Instance = sourceCsql.Name,\n Password = \"password\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n sourceSqlClientCert,\n },\n });\n\n var sourceCp = new Gcp.DatabaseMigrationService.ConnectionProfile(\"source_cp\", new()\n {\n Location = \"us-central1\",\n ConnectionProfileId = \"source-cp\",\n DisplayName = \"source-cp_display\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Postgresql = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfilePostgresqlArgs\n {\n Host = sourceCsql.IpAddresses.Apply(ipAddresses =\u003e ipAddresses[0].IpAddress),\n Port = 3306,\n Username = sourceSqldbUser.Name,\n Password = sourceSqldbUser.Password,\n Ssl = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfilePostgresqlSslArgs\n {\n ClientKey = sourceSqlClientCert.PrivateKey,\n ClientCertificate = sourceSqlClientCert.Cert,\n CaCertificate = sourceSqlClientCert.ServerCaCert,\n },\n CloudSqlId = \"source-csql\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n sourceSqldbUser,\n },\n });\n\n var destinationCsql = new Gcp.Sql.DatabaseInstance(\"destination_csql\", new()\n {\n Name = \"destination-csql\",\n DatabaseVersion = \"POSTGRES_15\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-custom-2-13312\",\n DeletionProtectionEnabled = false,\n },\n DeletionProtection = false,\n });\n\n var destinationCp = new Gcp.DatabaseMigrationService.ConnectionProfile(\"destination_cp\", new()\n {\n Location = \"us-central1\",\n ConnectionProfileId = \"destination-cp\",\n DisplayName = \"destination-cp_display\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Postgresql = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfilePostgresqlArgs\n {\n CloudSqlId = \"destination-csql\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n destinationCsql,\n },\n });\n\n var psqltopsql = new Gcp.DatabaseMigrationService.MigrationJob(\"psqltopsql\", new()\n {\n Location = \"us-central1\",\n MigrationJobId = \"my-migrationid\",\n DisplayName = \"my-migrationid_display\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n StaticIpConnectivity = null,\n Source = sourceCp.Name,\n Destination = destinationCp.Name,\n Type = \"CONTINUOUS\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/databasemigrationservice\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceCsql, err := sql.NewDatabaseInstance(ctx, \"source_csql\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"source-csql\"),\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_15\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-custom-2-13312\"),\n\t\t\t\tDeletionProtectionEnabled: pulumi.Bool(false),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceSqlClientCert, err := sql.NewSslCert(ctx, \"source_sql_client_cert\", \u0026sql.SslCertArgs{\n\t\t\tCommonName: pulumi.String(\"cert\"),\n\t\t\tInstance: sourceCsql.Name,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsourceCsql,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceSqldbUser, err := sql.NewUser(ctx, \"source_sqldb_user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"username\"),\n\t\t\tInstance: sourceCsql.Name,\n\t\t\tPassword: pulumi.String(\"password\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsourceSqlClientCert,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceCp, err := databasemigrationservice.NewConnectionProfile(ctx, \"source_cp\", \u0026databasemigrationservice.ConnectionProfileArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"source-cp\"),\n\t\t\tDisplayName: pulumi.String(\"source-cp_display\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tPostgresql: \u0026databasemigrationservice.ConnectionProfilePostgresqlArgs{\n\t\t\t\tHost: sourceCsql.IpAddresses.ApplyT(func(ipAddresses []sql.DatabaseInstanceIpAddress) (*string, error) {\n\t\t\t\t\treturn \u0026ipAddresses[0].IpAddress, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tPort: pulumi.Int(3306),\n\t\t\t\tUsername: sourceSqldbUser.Name,\n\t\t\t\tPassword: sourceSqldbUser.Password,\n\t\t\t\tSsl: \u0026databasemigrationservice.ConnectionProfilePostgresqlSslArgs{\n\t\t\t\t\tClientKey: sourceSqlClientCert.PrivateKey,\n\t\t\t\t\tClientCertificate: sourceSqlClientCert.Cert,\n\t\t\t\t\tCaCertificate: sourceSqlClientCert.ServerCaCert,\n\t\t\t\t},\n\t\t\t\tCloudSqlId: pulumi.String(\"source-csql\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsourceSqldbUser,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestinationCsql, err := sql.NewDatabaseInstance(ctx, \"destination_csql\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"destination-csql\"),\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_15\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-custom-2-13312\"),\n\t\t\t\tDeletionProtectionEnabled: pulumi.Bool(false),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestinationCp, err := databasemigrationservice.NewConnectionProfile(ctx, \"destination_cp\", \u0026databasemigrationservice.ConnectionProfileArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"destination-cp\"),\n\t\t\tDisplayName: pulumi.String(\"destination-cp_display\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tPostgresql: \u0026databasemigrationservice.ConnectionProfilePostgresqlArgs{\n\t\t\t\tCloudSqlId: pulumi.String(\"destination-csql\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdestinationCsql,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = databasemigrationservice.NewMigrationJob(ctx, \"psqltopsql\", \u0026databasemigrationservice.MigrationJobArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tMigrationJobId: pulumi.String(\"my-migrationid\"),\n\t\t\tDisplayName: pulumi.String(\"my-migrationid_display\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tStaticIpConnectivity: \u0026databasemigrationservice.MigrationJobStaticIpConnectivityArgs{},\n\t\t\tSource: sourceCp.Name,\n\t\t\tDestination: destinationCp.Name,\n\t\t\tType: pulumi.String(\"CONTINUOUS\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.SslCert;\nimport com.pulumi.gcp.sql.SslCertArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfile;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfileArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfilePostgresqlArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfilePostgresqlSslArgs;\nimport com.pulumi.gcp.databasemigrationservice.MigrationJob;\nimport com.pulumi.gcp.databasemigrationservice.MigrationJobArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.MigrationJobStaticIpConnectivityArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var sourceCsql = new DatabaseInstance(\"sourceCsql\", DatabaseInstanceArgs.builder()\n .name(\"source-csql\")\n .databaseVersion(\"POSTGRES_15\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-custom-2-13312\")\n .deletionProtectionEnabled(false)\n .build())\n .deletionProtection(false)\n .build());\n\n var sourceSqlClientCert = new SslCert(\"sourceSqlClientCert\", SslCertArgs.builder()\n .commonName(\"cert\")\n .instance(sourceCsql.name())\n .build(), CustomResourceOptions.builder()\n .dependsOn(sourceCsql)\n .build());\n\n var sourceSqldbUser = new User(\"sourceSqldbUser\", UserArgs.builder()\n .name(\"username\")\n .instance(sourceCsql.name())\n .password(\"password\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(sourceSqlClientCert)\n .build());\n\n var sourceCp = new ConnectionProfile(\"sourceCp\", ConnectionProfileArgs.builder()\n .location(\"us-central1\")\n .connectionProfileId(\"source-cp\")\n .displayName(\"source-cp_display\")\n .labels(Map.of(\"foo\", \"bar\"))\n .postgresql(ConnectionProfilePostgresqlArgs.builder()\n .host(sourceCsql.ipAddresses().applyValue(ipAddresses -\u003e ipAddresses[0].ipAddress()))\n .port(3306)\n .username(sourceSqldbUser.name())\n .password(sourceSqldbUser.password())\n .ssl(ConnectionProfilePostgresqlSslArgs.builder()\n .clientKey(sourceSqlClientCert.privateKey())\n .clientCertificate(sourceSqlClientCert.cert())\n .caCertificate(sourceSqlClientCert.serverCaCert())\n .build())\n .cloudSqlId(\"source-csql\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(sourceSqldbUser)\n .build());\n\n var destinationCsql = new DatabaseInstance(\"destinationCsql\", DatabaseInstanceArgs.builder()\n .name(\"destination-csql\")\n .databaseVersion(\"POSTGRES_15\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-custom-2-13312\")\n .deletionProtectionEnabled(false)\n .build())\n .deletionProtection(false)\n .build());\n\n var destinationCp = new ConnectionProfile(\"destinationCp\", ConnectionProfileArgs.builder()\n .location(\"us-central1\")\n .connectionProfileId(\"destination-cp\")\n .displayName(\"destination-cp_display\")\n .labels(Map.of(\"foo\", \"bar\"))\n .postgresql(ConnectionProfilePostgresqlArgs.builder()\n .cloudSqlId(\"destination-csql\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(destinationCsql)\n .build());\n\n var psqltopsql = new MigrationJob(\"psqltopsql\", MigrationJobArgs.builder()\n .location(\"us-central1\")\n .migrationJobId(\"my-migrationid\")\n .displayName(\"my-migrationid_display\")\n .labels(Map.of(\"foo\", \"bar\"))\n .staticIpConnectivity()\n .source(sourceCp.name())\n .destination(destinationCp.name())\n .type(\"CONTINUOUS\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sourceCsql:\n type: gcp:sql:DatabaseInstance\n name: source_csql\n properties:\n name: source-csql\n databaseVersion: POSTGRES_15\n settings:\n tier: db-custom-2-13312\n deletionProtectionEnabled: false\n deletionProtection: false\n sourceSqlClientCert:\n type: gcp:sql:SslCert\n name: source_sql_client_cert\n properties:\n commonName: cert\n instance: ${sourceCsql.name}\n options:\n dependson:\n - ${sourceCsql}\n sourceSqldbUser:\n type: gcp:sql:User\n name: source_sqldb_user\n properties:\n name: username\n instance: ${sourceCsql.name}\n password: password\n options:\n dependson:\n - ${sourceSqlClientCert}\n sourceCp:\n type: gcp:databasemigrationservice:ConnectionProfile\n name: source_cp\n properties:\n location: us-central1\n connectionProfileId: source-cp\n displayName: source-cp_display\n labels:\n foo: bar\n postgresql:\n host: ${sourceCsql.ipAddresses[0].ipAddress}\n port: 3306\n username: ${sourceSqldbUser.name}\n password: ${sourceSqldbUser.password}\n ssl:\n clientKey: ${sourceSqlClientCert.privateKey}\n clientCertificate: ${sourceSqlClientCert.cert}\n caCertificate: ${sourceSqlClientCert.serverCaCert}\n cloudSqlId: source-csql\n options:\n dependson:\n - ${sourceSqldbUser}\n destinationCsql:\n type: gcp:sql:DatabaseInstance\n name: destination_csql\n properties:\n name: destination-csql\n databaseVersion: POSTGRES_15\n settings:\n tier: db-custom-2-13312\n deletionProtectionEnabled: false\n deletionProtection: false\n destinationCp:\n type: gcp:databasemigrationservice:ConnectionProfile\n name: destination_cp\n properties:\n location: us-central1\n connectionProfileId: destination-cp\n displayName: destination-cp_display\n labels:\n foo: bar\n postgresql:\n cloudSqlId: destination-csql\n options:\n dependson:\n - ${destinationCsql}\n psqltopsql:\n type: gcp:databasemigrationservice:MigrationJob\n properties:\n location: us-central1\n migrationJobId: my-migrationid\n displayName: my-migrationid_display\n labels:\n foo: bar\n staticIpConnectivity: {}\n source: ${sourceCp.name}\n destination: ${destinationCp.name}\n type: CONTINUOUS\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Database Migration Service Migration Job Postgres To Alloydb\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst sourceCsql = new gcp.sql.DatabaseInstance(\"source_csql\", {\n name: \"source-csql\",\n databaseVersion: \"POSTGRES_15\",\n settings: {\n tier: \"db-custom-2-13312\",\n deletionProtectionEnabled: false,\n },\n deletionProtection: false,\n});\nconst sourceSqlClientCert = new gcp.sql.SslCert(\"source_sql_client_cert\", {\n commonName: \"cert\",\n instance: sourceCsql.name,\n}, {\n dependsOn: [sourceCsql],\n});\nconst sourceSqldbUser = new gcp.sql.User(\"source_sqldb_user\", {\n name: \"username\",\n instance: sourceCsql.name,\n password: \"password\",\n}, {\n dependsOn: [sourceSqlClientCert],\n});\nconst sourceCp = new gcp.databasemigrationservice.ConnectionProfile(\"source_cp\", {\n location: \"us-central1\",\n connectionProfileId: \"source-cp\",\n displayName: \"source-cp_display\",\n labels: {\n foo: \"bar\",\n },\n postgresql: {\n host: sourceCsql.ipAddresses.apply(ipAddresses =\u003e ipAddresses[0].ipAddress),\n port: 3306,\n username: sourceSqldbUser.name,\n password: sourceSqldbUser.password,\n ssl: {\n clientKey: sourceSqlClientCert.privateKey,\n clientCertificate: sourceSqlClientCert.cert,\n caCertificate: sourceSqlClientCert.serverCaCert,\n },\n cloudSqlId: \"source-csql\",\n },\n}, {\n dependsOn: [sourceSqldbUser],\n});\nconst _default = new gcp.compute.Network(\"default\", {name: \"destination-alloydb\"});\nconst destinationAlloydb = new gcp.alloydb.Cluster(\"destination_alloydb\", {\n clusterId: \"destination-alloydb\",\n location: \"us-central1\",\n networkConfig: {\n network: _default.id,\n },\n databaseVersion: \"POSTGRES_15\",\n initialUser: {\n user: \"destination-alloydb\",\n password: \"destination-alloydb\",\n },\n});\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"destination-alloydb\",\n addressType: \"INTERNAL\",\n purpose: \"VPC_PEERING\",\n prefixLength: 16,\n network: _default.id,\n});\nconst vpcConnection = new gcp.servicenetworking.Connection(\"vpc_connection\", {\n network: _default.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAlloc.name],\n});\nconst destinationAlloydbPrimary = new gcp.alloydb.Instance(\"destination_alloydb_primary\", {\n cluster: destinationAlloydb.name,\n instanceId: \"destination-alloydb-primary\",\n instanceType: \"PRIMARY\",\n}, {\n dependsOn: [vpcConnection],\n});\nconst destinationCp = new gcp.databasemigrationservice.ConnectionProfile(\"destination_cp\", {\n location: \"us-central1\",\n connectionProfileId: \"destination-cp\",\n displayName: \"destination-cp_display\",\n labels: {\n foo: \"bar\",\n },\n postgresql: {\n alloydbClusterId: \"destination-alloydb\",\n },\n}, {\n dependsOn: [\n destinationAlloydb,\n destinationAlloydbPrimary,\n ],\n});\nconst psqltoalloydb = new gcp.databasemigrationservice.MigrationJob(\"psqltoalloydb\", {\n location: \"us-central1\",\n migrationJobId: \"my-migrationid\",\n displayName: \"my-migrationid_display\",\n labels: {\n foo: \"bar\",\n },\n staticIpConnectivity: {},\n source: sourceCp.name,\n destination: destinationCp.name,\n type: \"CONTINUOUS\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nsource_csql = gcp.sql.DatabaseInstance(\"source_csql\",\n name=\"source-csql\",\n database_version=\"POSTGRES_15\",\n settings={\n \"tier\": \"db-custom-2-13312\",\n \"deletion_protection_enabled\": False,\n },\n deletion_protection=False)\nsource_sql_client_cert = gcp.sql.SslCert(\"source_sql_client_cert\",\n common_name=\"cert\",\n instance=source_csql.name,\n opts = pulumi.ResourceOptions(depends_on=[source_csql]))\nsource_sqldb_user = gcp.sql.User(\"source_sqldb_user\",\n name=\"username\",\n instance=source_csql.name,\n password=\"password\",\n opts = pulumi.ResourceOptions(depends_on=[source_sql_client_cert]))\nsource_cp = gcp.databasemigrationservice.ConnectionProfile(\"source_cp\",\n location=\"us-central1\",\n connection_profile_id=\"source-cp\",\n display_name=\"source-cp_display\",\n labels={\n \"foo\": \"bar\",\n },\n postgresql={\n \"host\": source_csql.ip_addresses[0].ip_address,\n \"port\": 3306,\n \"username\": source_sqldb_user.name,\n \"password\": source_sqldb_user.password,\n \"ssl\": {\n \"client_key\": source_sql_client_cert.private_key,\n \"client_certificate\": source_sql_client_cert.cert,\n \"ca_certificate\": source_sql_client_cert.server_ca_cert,\n },\n \"cloud_sql_id\": \"source-csql\",\n },\n opts = pulumi.ResourceOptions(depends_on=[source_sqldb_user]))\ndefault = gcp.compute.Network(\"default\", name=\"destination-alloydb\")\ndestination_alloydb = gcp.alloydb.Cluster(\"destination_alloydb\",\n cluster_id=\"destination-alloydb\",\n location=\"us-central1\",\n network_config={\n \"network\": default.id,\n },\n database_version=\"POSTGRES_15\",\n initial_user={\n \"user\": \"destination-alloydb\",\n \"password\": \"destination-alloydb\",\n })\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"destination-alloydb\",\n address_type=\"INTERNAL\",\n purpose=\"VPC_PEERING\",\n prefix_length=16,\n network=default.id)\nvpc_connection = gcp.servicenetworking.Connection(\"vpc_connection\",\n network=default.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_alloc.name])\ndestination_alloydb_primary = gcp.alloydb.Instance(\"destination_alloydb_primary\",\n cluster=destination_alloydb.name,\n instance_id=\"destination-alloydb-primary\",\n instance_type=\"PRIMARY\",\n opts = pulumi.ResourceOptions(depends_on=[vpc_connection]))\ndestination_cp = gcp.databasemigrationservice.ConnectionProfile(\"destination_cp\",\n location=\"us-central1\",\n connection_profile_id=\"destination-cp\",\n display_name=\"destination-cp_display\",\n labels={\n \"foo\": \"bar\",\n },\n postgresql={\n \"alloydb_cluster_id\": \"destination-alloydb\",\n },\n opts = pulumi.ResourceOptions(depends_on=[\n destination_alloydb,\n destination_alloydb_primary,\n ]))\npsqltoalloydb = gcp.databasemigrationservice.MigrationJob(\"psqltoalloydb\",\n location=\"us-central1\",\n migration_job_id=\"my-migrationid\",\n display_name=\"my-migrationid_display\",\n labels={\n \"foo\": \"bar\",\n },\n static_ip_connectivity={},\n source=source_cp.name,\n destination=destination_cp.name,\n type=\"CONTINUOUS\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var sourceCsql = new Gcp.Sql.DatabaseInstance(\"source_csql\", new()\n {\n Name = \"source-csql\",\n DatabaseVersion = \"POSTGRES_15\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-custom-2-13312\",\n DeletionProtectionEnabled = false,\n },\n DeletionProtection = false,\n });\n\n var sourceSqlClientCert = new Gcp.Sql.SslCert(\"source_sql_client_cert\", new()\n {\n CommonName = \"cert\",\n Instance = sourceCsql.Name,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n sourceCsql,\n },\n });\n\n var sourceSqldbUser = new Gcp.Sql.User(\"source_sqldb_user\", new()\n {\n Name = \"username\",\n Instance = sourceCsql.Name,\n Password = \"password\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n sourceSqlClientCert,\n },\n });\n\n var sourceCp = new Gcp.DatabaseMigrationService.ConnectionProfile(\"source_cp\", new()\n {\n Location = \"us-central1\",\n ConnectionProfileId = \"source-cp\",\n DisplayName = \"source-cp_display\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Postgresql = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfilePostgresqlArgs\n {\n Host = sourceCsql.IpAddresses.Apply(ipAddresses =\u003e ipAddresses[0].IpAddress),\n Port = 3306,\n Username = sourceSqldbUser.Name,\n Password = sourceSqldbUser.Password,\n Ssl = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfilePostgresqlSslArgs\n {\n ClientKey = sourceSqlClientCert.PrivateKey,\n ClientCertificate = sourceSqlClientCert.Cert,\n CaCertificate = sourceSqlClientCert.ServerCaCert,\n },\n CloudSqlId = \"source-csql\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n sourceSqldbUser,\n },\n });\n\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"destination-alloydb\",\n });\n\n var destinationAlloydb = new Gcp.Alloydb.Cluster(\"destination_alloydb\", new()\n {\n ClusterId = \"destination-alloydb\",\n Location = \"us-central1\",\n NetworkConfig = new Gcp.Alloydb.Inputs.ClusterNetworkConfigArgs\n {\n Network = @default.Id,\n },\n DatabaseVersion = \"POSTGRES_15\",\n InitialUser = new Gcp.Alloydb.Inputs.ClusterInitialUserArgs\n {\n User = \"destination-alloydb\",\n Password = \"destination-alloydb\",\n },\n });\n\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"destination-alloydb\",\n AddressType = \"INTERNAL\",\n Purpose = \"VPC_PEERING\",\n PrefixLength = 16,\n Network = @default.Id,\n });\n\n var vpcConnection = new Gcp.ServiceNetworking.Connection(\"vpc_connection\", new()\n {\n Network = @default.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAlloc.Name,\n },\n });\n\n var destinationAlloydbPrimary = new Gcp.Alloydb.Instance(\"destination_alloydb_primary\", new()\n {\n Cluster = destinationAlloydb.Name,\n InstanceId = \"destination-alloydb-primary\",\n InstanceType = \"PRIMARY\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vpcConnection,\n },\n });\n\n var destinationCp = new Gcp.DatabaseMigrationService.ConnectionProfile(\"destination_cp\", new()\n {\n Location = \"us-central1\",\n ConnectionProfileId = \"destination-cp\",\n DisplayName = \"destination-cp_display\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Postgresql = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfilePostgresqlArgs\n {\n AlloydbClusterId = \"destination-alloydb\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n destinationAlloydb,\n destinationAlloydbPrimary,\n },\n });\n\n var psqltoalloydb = new Gcp.DatabaseMigrationService.MigrationJob(\"psqltoalloydb\", new()\n {\n Location = \"us-central1\",\n MigrationJobId = \"my-migrationid\",\n DisplayName = \"my-migrationid_display\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n StaticIpConnectivity = null,\n Source = sourceCp.Name,\n Destination = destinationCp.Name,\n Type = \"CONTINUOUS\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/alloydb\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/databasemigrationservice\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/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 := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceCsql, err := sql.NewDatabaseInstance(ctx, \"source_csql\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"source-csql\"),\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_15\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-custom-2-13312\"),\n\t\t\t\tDeletionProtectionEnabled: pulumi.Bool(false),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceSqlClientCert, err := sql.NewSslCert(ctx, \"source_sql_client_cert\", \u0026sql.SslCertArgs{\n\t\t\tCommonName: pulumi.String(\"cert\"),\n\t\t\tInstance: sourceCsql.Name,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsourceCsql,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceSqldbUser, err := sql.NewUser(ctx, \"source_sqldb_user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"username\"),\n\t\t\tInstance: sourceCsql.Name,\n\t\t\tPassword: pulumi.String(\"password\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsourceSqlClientCert,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceCp, err := databasemigrationservice.NewConnectionProfile(ctx, \"source_cp\", \u0026databasemigrationservice.ConnectionProfileArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"source-cp\"),\n\t\t\tDisplayName: pulumi.String(\"source-cp_display\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tPostgresql: \u0026databasemigrationservice.ConnectionProfilePostgresqlArgs{\n\t\t\t\tHost: sourceCsql.IpAddresses.ApplyT(func(ipAddresses []sql.DatabaseInstanceIpAddress) (*string, error) {\n\t\t\t\t\treturn \u0026ipAddresses[0].IpAddress, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tPort: pulumi.Int(3306),\n\t\t\t\tUsername: sourceSqldbUser.Name,\n\t\t\t\tPassword: sourceSqldbUser.Password,\n\t\t\t\tSsl: \u0026databasemigrationservice.ConnectionProfilePostgresqlSslArgs{\n\t\t\t\t\tClientKey: sourceSqlClientCert.PrivateKey,\n\t\t\t\t\tClientCertificate: sourceSqlClientCert.Cert,\n\t\t\t\t\tCaCertificate: sourceSqlClientCert.ServerCaCert,\n\t\t\t\t},\n\t\t\t\tCloudSqlId: pulumi.String(\"source-csql\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsourceSqldbUser,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"destination-alloydb\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestinationAlloydb, err := alloydb.NewCluster(ctx, \"destination_alloydb\", \u0026alloydb.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"destination-alloydb\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNetworkConfig: \u0026alloydb.ClusterNetworkConfigArgs{\n\t\t\t\tNetwork: _default.ID(),\n\t\t\t},\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_15\"),\n\t\t\tInitialUser: \u0026alloydb.ClusterInitialUserArgs{\n\t\t\t\tUser: pulumi.String(\"destination-alloydb\"),\n\t\t\t\tPassword: pulumi.String(\"destination-alloydb\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"destination-alloydb\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvpcConnection, err := servicenetworking.NewConnection(ctx, \"vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: _default.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tprivateIpAlloc.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestinationAlloydbPrimary, err := alloydb.NewInstance(ctx, \"destination_alloydb_primary\", \u0026alloydb.InstanceArgs{\n\t\t\tCluster: destinationAlloydb.Name,\n\t\t\tInstanceId: pulumi.String(\"destination-alloydb-primary\"),\n\t\t\tInstanceType: pulumi.String(\"PRIMARY\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestinationCp, err := databasemigrationservice.NewConnectionProfile(ctx, \"destination_cp\", \u0026databasemigrationservice.ConnectionProfileArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"destination-cp\"),\n\t\t\tDisplayName: pulumi.String(\"destination-cp_display\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tPostgresql: \u0026databasemigrationservice.ConnectionProfilePostgresqlArgs{\n\t\t\t\tAlloydbClusterId: pulumi.String(\"destination-alloydb\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdestinationAlloydb,\n\t\t\tdestinationAlloydbPrimary,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = databasemigrationservice.NewMigrationJob(ctx, \"psqltoalloydb\", \u0026databasemigrationservice.MigrationJobArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tMigrationJobId: pulumi.String(\"my-migrationid\"),\n\t\t\tDisplayName: pulumi.String(\"my-migrationid_display\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tStaticIpConnectivity: \u0026databasemigrationservice.MigrationJobStaticIpConnectivityArgs{},\n\t\t\tSource: sourceCp.Name,\n\t\t\tDestination: destinationCp.Name,\n\t\t\tType: pulumi.String(\"CONTINUOUS\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.SslCert;\nimport com.pulumi.gcp.sql.SslCertArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfile;\nimport com.pulumi.gcp.databasemigrationservice.ConnectionProfileArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfilePostgresqlArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.ConnectionProfilePostgresqlSslArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.alloydb.Cluster;\nimport com.pulumi.gcp.alloydb.ClusterArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterNetworkConfigArgs;\nimport com.pulumi.gcp.alloydb.inputs.ClusterInitialUserArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.alloydb.Instance;\nimport com.pulumi.gcp.alloydb.InstanceArgs;\nimport com.pulumi.gcp.databasemigrationservice.MigrationJob;\nimport com.pulumi.gcp.databasemigrationservice.MigrationJobArgs;\nimport com.pulumi.gcp.databasemigrationservice.inputs.MigrationJobStaticIpConnectivityArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var sourceCsql = new DatabaseInstance(\"sourceCsql\", DatabaseInstanceArgs.builder()\n .name(\"source-csql\")\n .databaseVersion(\"POSTGRES_15\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-custom-2-13312\")\n .deletionProtectionEnabled(false)\n .build())\n .deletionProtection(false)\n .build());\n\n var sourceSqlClientCert = new SslCert(\"sourceSqlClientCert\", SslCertArgs.builder()\n .commonName(\"cert\")\n .instance(sourceCsql.name())\n .build(), CustomResourceOptions.builder()\n .dependsOn(sourceCsql)\n .build());\n\n var sourceSqldbUser = new User(\"sourceSqldbUser\", UserArgs.builder()\n .name(\"username\")\n .instance(sourceCsql.name())\n .password(\"password\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(sourceSqlClientCert)\n .build());\n\n var sourceCp = new ConnectionProfile(\"sourceCp\", ConnectionProfileArgs.builder()\n .location(\"us-central1\")\n .connectionProfileId(\"source-cp\")\n .displayName(\"source-cp_display\")\n .labels(Map.of(\"foo\", \"bar\"))\n .postgresql(ConnectionProfilePostgresqlArgs.builder()\n .host(sourceCsql.ipAddresses().applyValue(ipAddresses -\u003e ipAddresses[0].ipAddress()))\n .port(3306)\n .username(sourceSqldbUser.name())\n .password(sourceSqldbUser.password())\n .ssl(ConnectionProfilePostgresqlSslArgs.builder()\n .clientKey(sourceSqlClientCert.privateKey())\n .clientCertificate(sourceSqlClientCert.cert())\n .caCertificate(sourceSqlClientCert.serverCaCert())\n .build())\n .cloudSqlId(\"source-csql\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(sourceSqldbUser)\n .build());\n\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"destination-alloydb\")\n .build());\n\n var destinationAlloydb = new Cluster(\"destinationAlloydb\", ClusterArgs.builder()\n .clusterId(\"destination-alloydb\")\n .location(\"us-central1\")\n .networkConfig(ClusterNetworkConfigArgs.builder()\n .network(default_.id())\n .build())\n .databaseVersion(\"POSTGRES_15\")\n .initialUser(ClusterInitialUserArgs.builder()\n .user(\"destination-alloydb\")\n .password(\"destination-alloydb\")\n .build())\n .build());\n\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"destination-alloydb\")\n .addressType(\"INTERNAL\")\n .purpose(\"VPC_PEERING\")\n .prefixLength(16)\n .network(default_.id())\n .build());\n\n var vpcConnection = new Connection(\"vpcConnection\", ConnectionArgs.builder()\n .network(default_.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAlloc.name())\n .build());\n\n var destinationAlloydbPrimary = new Instance(\"destinationAlloydbPrimary\", InstanceArgs.builder()\n .cluster(destinationAlloydb.name())\n .instanceId(\"destination-alloydb-primary\")\n .instanceType(\"PRIMARY\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(vpcConnection)\n .build());\n\n var destinationCp = new ConnectionProfile(\"destinationCp\", ConnectionProfileArgs.builder()\n .location(\"us-central1\")\n .connectionProfileId(\"destination-cp\")\n .displayName(\"destination-cp_display\")\n .labels(Map.of(\"foo\", \"bar\"))\n .postgresql(ConnectionProfilePostgresqlArgs.builder()\n .alloydbClusterId(\"destination-alloydb\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n destinationAlloydb,\n destinationAlloydbPrimary)\n .build());\n\n var psqltoalloydb = new MigrationJob(\"psqltoalloydb\", MigrationJobArgs.builder()\n .location(\"us-central1\")\n .migrationJobId(\"my-migrationid\")\n .displayName(\"my-migrationid_display\")\n .labels(Map.of(\"foo\", \"bar\"))\n .staticIpConnectivity()\n .source(sourceCp.name())\n .destination(destinationCp.name())\n .type(\"CONTINUOUS\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sourceCsql:\n type: gcp:sql:DatabaseInstance\n name: source_csql\n properties:\n name: source-csql\n databaseVersion: POSTGRES_15\n settings:\n tier: db-custom-2-13312\n deletionProtectionEnabled: false\n deletionProtection: false\n sourceSqlClientCert:\n type: gcp:sql:SslCert\n name: source_sql_client_cert\n properties:\n commonName: cert\n instance: ${sourceCsql.name}\n options:\n dependson:\n - ${sourceCsql}\n sourceSqldbUser:\n type: gcp:sql:User\n name: source_sqldb_user\n properties:\n name: username\n instance: ${sourceCsql.name}\n password: password\n options:\n dependson:\n - ${sourceSqlClientCert}\n sourceCp:\n type: gcp:databasemigrationservice:ConnectionProfile\n name: source_cp\n properties:\n location: us-central1\n connectionProfileId: source-cp\n displayName: source-cp_display\n labels:\n foo: bar\n postgresql:\n host: ${sourceCsql.ipAddresses[0].ipAddress}\n port: 3306\n username: ${sourceSqldbUser.name}\n password: ${sourceSqldbUser.password}\n ssl:\n clientKey: ${sourceSqlClientCert.privateKey}\n clientCertificate: ${sourceSqlClientCert.cert}\n caCertificate: ${sourceSqlClientCert.serverCaCert}\n cloudSqlId: source-csql\n options:\n dependson:\n - ${sourceSqldbUser}\n destinationAlloydb:\n type: gcp:alloydb:Cluster\n name: destination_alloydb\n properties:\n clusterId: destination-alloydb\n location: us-central1\n networkConfig:\n network: ${default.id}\n databaseVersion: POSTGRES_15\n initialUser:\n user: destination-alloydb\n password: destination-alloydb\n destinationAlloydbPrimary:\n type: gcp:alloydb:Instance\n name: destination_alloydb_primary\n properties:\n cluster: ${destinationAlloydb.name}\n instanceId: destination-alloydb-primary\n instanceType: PRIMARY\n options:\n dependson:\n - ${vpcConnection}\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: destination-alloydb\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 16\n network: ${default.id}\n vpcConnection:\n type: gcp:servicenetworking:Connection\n name: vpc_connection\n properties:\n network: ${default.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAlloc.name}\n default:\n type: gcp:compute:Network\n properties:\n name: destination-alloydb\n destinationCp:\n type: gcp:databasemigrationservice:ConnectionProfile\n name: destination_cp\n properties:\n location: us-central1\n connectionProfileId: destination-cp\n displayName: destination-cp_display\n labels:\n foo: bar\n postgresql:\n alloydbClusterId: destination-alloydb\n options:\n dependson:\n - ${destinationAlloydb}\n - ${destinationAlloydbPrimary}\n psqltoalloydb:\n type: gcp:databasemigrationservice:MigrationJob\n properties:\n location: us-central1\n migrationJobId: my-migrationid\n displayName: my-migrationid_display\n labels:\n foo: bar\n staticIpConnectivity: {}\n source: ${sourceCp.name}\n destination: ${destinationCp.name}\n type: CONTINUOUS\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nMigrationJob can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/migrationJobs/{{migration_job_id}}`\n\n* `{{project}}/{{location}}/{{migration_job_id}}`\n\n* `{{location}}/{{migration_job_id}}`\n\nWhen using the `pulumi import` command, MigrationJob can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:databasemigrationservice/migrationJob:MigrationJob default projects/{{project}}/locations/{{location}}/migrationJobs/{{migration_job_id}}\n```\n\n```sh\n$ pulumi import gcp:databasemigrationservice/migrationJob:MigrationJob default {{project}}/{{location}}/{{migration_job_id}}\n```\n\n```sh\n$ pulumi import gcp:databasemigrationservice/migrationJob:MigrationJob default {{location}}/{{migration_job_id}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -179349,7 +179349,7 @@ } }, "gcp:dataform/repository:Repository": { - "description": "## Example Usage\n\n### Dataform Repository\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"my-secret\",\n replication: {\n auto: {},\n },\n});\nconst secretVersion = new gcp.secretmanager.SecretVersion(\"secret_version\", {\n secret: secret.id,\n secretData: \"secret-data\",\n});\nconst keyring = new gcp.kms.KeyRing(\"keyring\", {\n name: \"example-key-ring\",\n location: \"us-central1\",\n});\nconst exampleKey = new gcp.kms.CryptoKey(\"example_key\", {\n name: \"example-crypto-key-name\",\n keyRing: keyring.id,\n});\nconst cryptoKeyBinding = new gcp.kms.CryptoKeyIAMBinding(\"crypto_key_binding\", {\n cryptoKeyId: exampleKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members: [`serviceAccount:service-${project.number}@gcp-sa-dataform.iam.gserviceaccount.com`],\n});\nconst dataformRepository = new gcp.dataform.Repository(\"dataform_repository\", {\n name: \"dataform_repository\",\n displayName: \"dataform_repository\",\n npmrcEnvironmentVariablesSecretVersion: secretVersion.id,\n kmsKeyName: exampleKey.id,\n labels: {\n label_foo1: \"label-bar1\",\n },\n gitRemoteSettings: {\n url: \"https://github.com/OWNER/REPOSITORY.git\",\n defaultBranch: \"main\",\n authenticationTokenSecretVersion: secretVersion.id,\n },\n workspaceCompilationOverrides: {\n defaultDatabase: \"database\",\n schemaSuffix: \"_suffix\",\n tablePrefix: \"prefix_\",\n },\n}, {\n dependsOn: [cryptoKeyBinding],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"my-secret\",\n replication={\n \"auto\": {},\n })\nsecret_version = gcp.secretmanager.SecretVersion(\"secret_version\",\n secret=secret.id,\n secret_data=\"secret-data\")\nkeyring = gcp.kms.KeyRing(\"keyring\",\n name=\"example-key-ring\",\n location=\"us-central1\")\nexample_key = gcp.kms.CryptoKey(\"example_key\",\n name=\"example-crypto-key-name\",\n key_ring=keyring.id)\ncrypto_key_binding = gcp.kms.CryptoKeyIAMBinding(\"crypto_key_binding\",\n crypto_key_id=example_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members=[f\"serviceAccount:service-{project['number']}@gcp-sa-dataform.iam.gserviceaccount.com\"])\ndataform_repository = gcp.dataform.Repository(\"dataform_repository\",\n name=\"dataform_repository\",\n display_name=\"dataform_repository\",\n npmrc_environment_variables_secret_version=secret_version.id,\n kms_key_name=example_key.id,\n labels={\n \"label_foo1\": \"label-bar1\",\n },\n git_remote_settings={\n \"url\": \"https://github.com/OWNER/REPOSITORY.git\",\n \"default_branch\": \"main\",\n \"authentication_token_secret_version\": secret_version.id,\n },\n workspace_compilation_overrides={\n \"default_database\": \"database\",\n \"schema_suffix\": \"_suffix\",\n \"table_prefix\": \"prefix_\",\n },\n opts = pulumi.ResourceOptions(depends_on=[crypto_key_binding]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"my-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var secretVersion = new Gcp.SecretManager.SecretVersion(\"secret_version\", new()\n {\n Secret = secret.Id,\n SecretData = \"secret-data\",\n });\n\n var keyring = new Gcp.Kms.KeyRing(\"keyring\", new()\n {\n Name = \"example-key-ring\",\n Location = \"us-central1\",\n });\n\n var exampleKey = new Gcp.Kms.CryptoKey(\"example_key\", new()\n {\n Name = \"example-crypto-key-name\",\n KeyRing = keyring.Id,\n });\n\n var cryptoKeyBinding = new Gcp.Kms.CryptoKeyIAMBinding(\"crypto_key_binding\", new()\n {\n CryptoKeyId = exampleKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Members = new[]\n {\n $\"serviceAccount:service-{project.Number}@gcp-sa-dataform.iam.gserviceaccount.com\",\n },\n });\n\n var dataformRepository = new Gcp.Dataform.Repository(\"dataform_repository\", new()\n {\n Name = \"dataform_repository\",\n DisplayName = \"dataform_repository\",\n NpmrcEnvironmentVariablesSecretVersion = secretVersion.Id,\n KmsKeyName = exampleKey.Id,\n Labels = \n {\n { \"label_foo1\", \"label-bar1\" },\n },\n GitRemoteSettings = new Gcp.Dataform.Inputs.RepositoryGitRemoteSettingsArgs\n {\n Url = \"https://github.com/OWNER/REPOSITORY.git\",\n DefaultBranch = \"main\",\n AuthenticationTokenSecretVersion = secretVersion.Id,\n },\n WorkspaceCompilationOverrides = new Gcp.Dataform.Inputs.RepositoryWorkspaceCompilationOverridesArgs\n {\n DefaultDatabase = \"database\",\n SchemaSuffix = \"_suffix\",\n TablePrefix = \"prefix_\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cryptoKeyBinding,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataform\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"my-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecretVersion, err := secretmanager.NewSecretVersion(ctx, \"secret_version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.ID(),\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkeyring, err := kms.NewKeyRing(ctx, \"keyring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"example-key-ring\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleKey, err := kms.NewCryptoKey(ctx, \"example_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"example-crypto-key-name\"),\n\t\t\tKeyRing: keyring.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKeyBinding, err := kms.NewCryptoKeyIAMBinding(ctx, \"crypto_key_binding\", \u0026kms.CryptoKeyIAMBindingArgs{\n\t\t\tCryptoKeyId: exampleKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-dataform.iam.gserviceaccount.com\", project.Number),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataform.NewRepository(ctx, \"dataform_repository\", \u0026dataform.RepositoryArgs{\n\t\t\tName: pulumi.String(\"dataform_repository\"),\n\t\t\tDisplayName: pulumi.String(\"dataform_repository\"),\n\t\t\tNpmrcEnvironmentVariablesSecretVersion: secretVersion.ID(),\n\t\t\tKmsKeyName: exampleKey.ID(),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label_foo1\": pulumi.String(\"label-bar1\"),\n\t\t\t},\n\t\t\tGitRemoteSettings: \u0026dataform.RepositoryGitRemoteSettingsArgs{\n\t\t\t\tUrl: pulumi.String(\"https://github.com/OWNER/REPOSITORY.git\"),\n\t\t\t\tDefaultBranch: pulumi.String(\"main\"),\n\t\t\t\tAuthenticationTokenSecretVersion: secretVersion.ID(),\n\t\t\t},\n\t\t\tWorkspaceCompilationOverrides: \u0026dataform.RepositoryWorkspaceCompilationOverridesArgs{\n\t\t\t\tDefaultDatabase: pulumi.String(\"database\"),\n\t\t\t\tSchemaSuffix: pulumi.String(\"_suffix\"),\n\t\t\t\tTablePrefix: pulumi.String(\"prefix_\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcryptoKeyBinding,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.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.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBinding;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBindingArgs;\nimport com.pulumi.gcp.dataform.Repository;\nimport com.pulumi.gcp.dataform.RepositoryArgs;\nimport com.pulumi.gcp.dataform.inputs.RepositoryGitRemoteSettingsArgs;\nimport com.pulumi.gcp.dataform.inputs.RepositoryWorkspaceCompilationOverridesArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var secret = new Secret(\"secret\", SecretArgs.builder()\n .secretId(\"my-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var secretVersion = new SecretVersion(\"secretVersion\", SecretVersionArgs.builder()\n .secret(secret.id())\n .secretData(\"secret-data\")\n .build());\n\n var keyring = new KeyRing(\"keyring\", KeyRingArgs.builder()\n .name(\"example-key-ring\")\n .location(\"us-central1\")\n .build());\n\n var exampleKey = new CryptoKey(\"exampleKey\", CryptoKeyArgs.builder()\n .name(\"example-crypto-key-name\")\n .keyRing(keyring.id())\n .build());\n\n var cryptoKeyBinding = new CryptoKeyIAMBinding(\"cryptoKeyBinding\", CryptoKeyIAMBindingArgs.builder()\n .cryptoKeyId(exampleKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .members(String.format(\"serviceAccount:service-%s@gcp-sa-dataform.iam.gserviceaccount.com\", project.number()))\n .build());\n\n var dataformRepository = new Repository(\"dataformRepository\", RepositoryArgs.builder()\n .name(\"dataform_repository\")\n .displayName(\"dataform_repository\")\n .npmrcEnvironmentVariablesSecretVersion(secretVersion.id())\n .kmsKeyName(exampleKey.id())\n .labels(Map.of(\"label_foo1\", \"label-bar1\"))\n .gitRemoteSettings(RepositoryGitRemoteSettingsArgs.builder()\n .url(\"https://github.com/OWNER/REPOSITORY.git\")\n .defaultBranch(\"main\")\n .authenticationTokenSecretVersion(secretVersion.id())\n .build())\n .workspaceCompilationOverrides(RepositoryWorkspaceCompilationOverridesArgs.builder()\n .defaultDatabase(\"database\")\n .schemaSuffix(\"_suffix\")\n .tablePrefix(\"prefix_\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(cryptoKeyBinding)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: my-secret\n replication:\n auto: {}\n secretVersion:\n type: gcp:secretmanager:SecretVersion\n name: secret_version\n properties:\n secret: ${secret.id}\n secretData: secret-data\n keyring:\n type: gcp:kms:KeyRing\n properties:\n name: example-key-ring\n location: us-central1\n exampleKey:\n type: gcp:kms:CryptoKey\n name: example_key\n properties:\n name: example-crypto-key-name\n keyRing: ${keyring.id}\n cryptoKeyBinding:\n type: gcp:kms:CryptoKeyIAMBinding\n name: crypto_key_binding\n properties:\n cryptoKeyId: ${exampleKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n members:\n - serviceAccount:service-${project.number}@gcp-sa-dataform.iam.gserviceaccount.com\n dataformRepository:\n type: gcp:dataform:Repository\n name: dataform_repository\n properties:\n name: dataform_repository\n displayName: dataform_repository\n npmrcEnvironmentVariablesSecretVersion: ${secretVersion.id}\n kmsKeyName: ${exampleKey.id}\n labels:\n label_foo1: label-bar1\n gitRemoteSettings:\n url: https://github.com/OWNER/REPOSITORY.git\n defaultBranch: main\n authenticationTokenSecretVersion: ${secretVersion.id}\n workspaceCompilationOverrides:\n defaultDatabase: database\n schemaSuffix: _suffix\n tablePrefix: prefix_\n options:\n dependson:\n - ${cryptoKeyBinding}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRepository can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/repositories/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Repository can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataform/repository:Repository default projects/{{project}}/locations/{{region}}/repositories/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataform/repository:Repository default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataform/repository:Repository default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataform/repository:Repository default {{name}}\n```\n\n", + "description": "## Example Usage\n\n### Dataform Repository\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"my-secret\",\n replication: {\n auto: {},\n },\n});\nconst secretVersion = new gcp.secretmanager.SecretVersion(\"secret_version\", {\n secret: secret.id,\n secretData: \"secret-data\",\n});\nconst keyring = new gcp.kms.KeyRing(\"keyring\", {\n name: \"example-key-ring\",\n location: \"us-central1\",\n});\nconst exampleKey = new gcp.kms.CryptoKey(\"example_key\", {\n name: \"example-crypto-key-name\",\n keyRing: keyring.id,\n});\nconst cryptoKeyBinding = new gcp.kms.CryptoKeyIAMBinding(\"crypto_key_binding\", {\n cryptoKeyId: exampleKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members: [`serviceAccount:service-${project.number}@gcp-sa-dataform.iam.gserviceaccount.com`],\n});\nconst dataformRepository = new gcp.dataform.Repository(\"dataform_repository\", {\n name: \"dataform_repository\",\n displayName: \"dataform_repository\",\n npmrcEnvironmentVariablesSecretVersion: secretVersion.id,\n kmsKeyName: exampleKey.id,\n labels: {\n label_foo1: \"label-bar1\",\n },\n gitRemoteSettings: {\n url: \"https://github.com/OWNER/REPOSITORY.git\",\n defaultBranch: \"main\",\n authenticationTokenSecretVersion: secretVersion.id,\n },\n workspaceCompilationOverrides: {\n defaultDatabase: \"database\",\n schemaSuffix: \"_suffix\",\n tablePrefix: \"prefix_\",\n },\n}, {\n dependsOn: [cryptoKeyBinding],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"my-secret\",\n replication={\n \"auto\": {},\n })\nsecret_version = gcp.secretmanager.SecretVersion(\"secret_version\",\n secret=secret.id,\n secret_data=\"secret-data\")\nkeyring = gcp.kms.KeyRing(\"keyring\",\n name=\"example-key-ring\",\n location=\"us-central1\")\nexample_key = gcp.kms.CryptoKey(\"example_key\",\n name=\"example-crypto-key-name\",\n key_ring=keyring.id)\ncrypto_key_binding = gcp.kms.CryptoKeyIAMBinding(\"crypto_key_binding\",\n crypto_key_id=example_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members=[f\"serviceAccount:service-{project['number']}@gcp-sa-dataform.iam.gserviceaccount.com\"])\ndataform_repository = gcp.dataform.Repository(\"dataform_repository\",\n name=\"dataform_repository\",\n display_name=\"dataform_repository\",\n npmrc_environment_variables_secret_version=secret_version.id,\n kms_key_name=example_key.id,\n labels={\n \"label_foo1\": \"label-bar1\",\n },\n git_remote_settings={\n \"url\": \"https://github.com/OWNER/REPOSITORY.git\",\n \"default_branch\": \"main\",\n \"authentication_token_secret_version\": secret_version.id,\n },\n workspace_compilation_overrides={\n \"default_database\": \"database\",\n \"schema_suffix\": \"_suffix\",\n \"table_prefix\": \"prefix_\",\n },\n opts = pulumi.ResourceOptions(depends_on=[crypto_key_binding]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"my-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var secretVersion = new Gcp.SecretManager.SecretVersion(\"secret_version\", new()\n {\n Secret = secret.Id,\n SecretData = \"secret-data\",\n });\n\n var keyring = new Gcp.Kms.KeyRing(\"keyring\", new()\n {\n Name = \"example-key-ring\",\n Location = \"us-central1\",\n });\n\n var exampleKey = new Gcp.Kms.CryptoKey(\"example_key\", new()\n {\n Name = \"example-crypto-key-name\",\n KeyRing = keyring.Id,\n });\n\n var cryptoKeyBinding = new Gcp.Kms.CryptoKeyIAMBinding(\"crypto_key_binding\", new()\n {\n CryptoKeyId = exampleKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Members = new[]\n {\n $\"serviceAccount:service-{project.Number}@gcp-sa-dataform.iam.gserviceaccount.com\",\n },\n });\n\n var dataformRepository = new Gcp.Dataform.Repository(\"dataform_repository\", new()\n {\n Name = \"dataform_repository\",\n DisplayName = \"dataform_repository\",\n NpmrcEnvironmentVariablesSecretVersion = secretVersion.Id,\n KmsKeyName = exampleKey.Id,\n Labels = \n {\n { \"label_foo1\", \"label-bar1\" },\n },\n GitRemoteSettings = new Gcp.Dataform.Inputs.RepositoryGitRemoteSettingsArgs\n {\n Url = \"https://github.com/OWNER/REPOSITORY.git\",\n DefaultBranch = \"main\",\n AuthenticationTokenSecretVersion = secretVersion.Id,\n },\n WorkspaceCompilationOverrides = new Gcp.Dataform.Inputs.RepositoryWorkspaceCompilationOverridesArgs\n {\n DefaultDatabase = \"database\",\n SchemaSuffix = \"_suffix\",\n TablePrefix = \"prefix_\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cryptoKeyBinding,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataform\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"my-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: \u0026secretmanager.SecretReplicationAutoArgs{},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecretVersion, err := secretmanager.NewSecretVersion(ctx, \"secret_version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.ID(),\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkeyring, err := kms.NewKeyRing(ctx, \"keyring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"example-key-ring\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleKey, err := kms.NewCryptoKey(ctx, \"example_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"example-crypto-key-name\"),\n\t\t\tKeyRing: keyring.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKeyBinding, err := kms.NewCryptoKeyIAMBinding(ctx, \"crypto_key_binding\", \u0026kms.CryptoKeyIAMBindingArgs{\n\t\t\tCryptoKeyId: exampleKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-dataform.iam.gserviceaccount.com\", project.Number),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataform.NewRepository(ctx, \"dataform_repository\", \u0026dataform.RepositoryArgs{\n\t\t\tName: pulumi.String(\"dataform_repository\"),\n\t\t\tDisplayName: pulumi.String(\"dataform_repository\"),\n\t\t\tNpmrcEnvironmentVariablesSecretVersion: secretVersion.ID(),\n\t\t\tKmsKeyName: exampleKey.ID(),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label_foo1\": pulumi.String(\"label-bar1\"),\n\t\t\t},\n\t\t\tGitRemoteSettings: \u0026dataform.RepositoryGitRemoteSettingsArgs{\n\t\t\t\tUrl: pulumi.String(\"https://github.com/OWNER/REPOSITORY.git\"),\n\t\t\t\tDefaultBranch: pulumi.String(\"main\"),\n\t\t\t\tAuthenticationTokenSecretVersion: secretVersion.ID(),\n\t\t\t},\n\t\t\tWorkspaceCompilationOverrides: \u0026dataform.RepositoryWorkspaceCompilationOverridesArgs{\n\t\t\t\tDefaultDatabase: pulumi.String(\"database\"),\n\t\t\t\tSchemaSuffix: pulumi.String(\"_suffix\"),\n\t\t\t\tTablePrefix: pulumi.String(\"prefix_\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcryptoKeyBinding,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.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.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBinding;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBindingArgs;\nimport com.pulumi.gcp.dataform.Repository;\nimport com.pulumi.gcp.dataform.RepositoryArgs;\nimport com.pulumi.gcp.dataform.inputs.RepositoryGitRemoteSettingsArgs;\nimport com.pulumi.gcp.dataform.inputs.RepositoryWorkspaceCompilationOverridesArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var secret = new Secret(\"secret\", SecretArgs.builder()\n .secretId(\"my-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var secretVersion = new SecretVersion(\"secretVersion\", SecretVersionArgs.builder()\n .secret(secret.id())\n .secretData(\"secret-data\")\n .build());\n\n var keyring = new KeyRing(\"keyring\", KeyRingArgs.builder()\n .name(\"example-key-ring\")\n .location(\"us-central1\")\n .build());\n\n var exampleKey = new CryptoKey(\"exampleKey\", CryptoKeyArgs.builder()\n .name(\"example-crypto-key-name\")\n .keyRing(keyring.id())\n .build());\n\n var cryptoKeyBinding = new CryptoKeyIAMBinding(\"cryptoKeyBinding\", CryptoKeyIAMBindingArgs.builder()\n .cryptoKeyId(exampleKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .members(String.format(\"serviceAccount:service-%s@gcp-sa-dataform.iam.gserviceaccount.com\", project.number()))\n .build());\n\n var dataformRepository = new Repository(\"dataformRepository\", RepositoryArgs.builder()\n .name(\"dataform_repository\")\n .displayName(\"dataform_repository\")\n .npmrcEnvironmentVariablesSecretVersion(secretVersion.id())\n .kmsKeyName(exampleKey.id())\n .labels(Map.of(\"label_foo1\", \"label-bar1\"))\n .gitRemoteSettings(RepositoryGitRemoteSettingsArgs.builder()\n .url(\"https://github.com/OWNER/REPOSITORY.git\")\n .defaultBranch(\"main\")\n .authenticationTokenSecretVersion(secretVersion.id())\n .build())\n .workspaceCompilationOverrides(RepositoryWorkspaceCompilationOverridesArgs.builder()\n .defaultDatabase(\"database\")\n .schemaSuffix(\"_suffix\")\n .tablePrefix(\"prefix_\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(cryptoKeyBinding)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: my-secret\n replication:\n auto: {}\n secretVersion:\n type: gcp:secretmanager:SecretVersion\n name: secret_version\n properties:\n secret: ${secret.id}\n secretData: secret-data\n keyring:\n type: gcp:kms:KeyRing\n properties:\n name: example-key-ring\n location: us-central1\n exampleKey:\n type: gcp:kms:CryptoKey\n name: example_key\n properties:\n name: example-crypto-key-name\n keyRing: ${keyring.id}\n cryptoKeyBinding:\n type: gcp:kms:CryptoKeyIAMBinding\n name: crypto_key_binding\n properties:\n cryptoKeyId: ${exampleKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n members:\n - serviceAccount:service-${project.number}@gcp-sa-dataform.iam.gserviceaccount.com\n dataformRepository:\n type: gcp:dataform:Repository\n name: dataform_repository\n properties:\n name: dataform_repository\n displayName: dataform_repository\n npmrcEnvironmentVariablesSecretVersion: ${secretVersion.id}\n kmsKeyName: ${exampleKey.id}\n labels:\n label_foo1: label-bar1\n gitRemoteSettings:\n url: https://github.com/OWNER/REPOSITORY.git\n defaultBranch: main\n authenticationTokenSecretVersion: ${secretVersion.id}\n workspaceCompilationOverrides:\n defaultDatabase: database\n schemaSuffix: _suffix\n tablePrefix: prefix_\n options:\n dependson:\n - ${cryptoKeyBinding}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRepository can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/repositories/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Repository can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataform/repository:Repository default projects/{{project}}/locations/{{region}}/repositories/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataform/repository:Repository default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataform/repository:Repository default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataform/repository:Repository default {{name}}\n```\n\n", "properties": { "displayName": { "type": "string", @@ -179807,7 +179807,7 @@ } }, "gcp:dataform/repositoryReleaseConfig:RepositoryReleaseConfig": { - "description": "## Example Usage\n\n### Dataform Repository Release Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst gitRepository = new gcp.sourcerepo.Repository(\"git_repository\", {name: \"my/repository\"});\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"my_secret\",\n replication: {\n auto: {},\n },\n});\nconst secretVersion = new gcp.secretmanager.SecretVersion(\"secret_version\", {\n secret: secret.id,\n secretData: \"secret-data\",\n});\nconst repository = new gcp.dataform.Repository(\"repository\", {\n name: \"dataform_repository\",\n region: \"us-central1\",\n gitRemoteSettings: {\n url: gitRepository.url,\n defaultBranch: \"main\",\n authenticationTokenSecretVersion: secretVersion.id,\n },\n workspaceCompilationOverrides: {\n defaultDatabase: \"database\",\n schemaSuffix: \"_suffix\",\n tablePrefix: \"prefix_\",\n },\n});\nconst release = new gcp.dataform.RepositoryReleaseConfig(\"release\", {\n project: repository.project,\n region: repository.region,\n repository: repository.name,\n name: \"my_release\",\n gitCommitish: \"main\",\n cronSchedule: \"0 7 * * *\",\n timeZone: \"America/New_York\",\n codeCompilationConfig: {\n defaultDatabase: \"gcp-example-project\",\n defaultSchema: \"example-dataset\",\n defaultLocation: \"us-central1\",\n assertionSchema: \"example-assertion-dataset\",\n databaseSuffix: \"\",\n schemaSuffix: \"\",\n tablePrefix: \"\",\n vars: {\n var1: \"value\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ngit_repository = gcp.sourcerepo.Repository(\"git_repository\", name=\"my/repository\")\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"my_secret\",\n replication={\n \"auto\": {},\n })\nsecret_version = gcp.secretmanager.SecretVersion(\"secret_version\",\n secret=secret.id,\n secret_data=\"secret-data\")\nrepository = gcp.dataform.Repository(\"repository\",\n name=\"dataform_repository\",\n region=\"us-central1\",\n git_remote_settings={\n \"url\": git_repository.url,\n \"default_branch\": \"main\",\n \"authentication_token_secret_version\": secret_version.id,\n },\n workspace_compilation_overrides={\n \"default_database\": \"database\",\n \"schema_suffix\": \"_suffix\",\n \"table_prefix\": \"prefix_\",\n })\nrelease = gcp.dataform.RepositoryReleaseConfig(\"release\",\n project=repository.project,\n region=repository.region,\n repository=repository.name,\n name=\"my_release\",\n git_commitish=\"main\",\n cron_schedule=\"0 7 * * *\",\n time_zone=\"America/New_York\",\n code_compilation_config={\n \"default_database\": \"gcp-example-project\",\n \"default_schema\": \"example-dataset\",\n \"default_location\": \"us-central1\",\n \"assertion_schema\": \"example-assertion-dataset\",\n \"database_suffix\": \"\",\n \"schema_suffix\": \"\",\n \"table_prefix\": \"\",\n \"vars\": {\n \"var1\": \"value\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var gitRepository = new Gcp.SourceRepo.Repository(\"git_repository\", new()\n {\n Name = \"my/repository\",\n });\n\n var secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"my_secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var secretVersion = new Gcp.SecretManager.SecretVersion(\"secret_version\", new()\n {\n Secret = secret.Id,\n SecretData = \"secret-data\",\n });\n\n var repository = new Gcp.Dataform.Repository(\"repository\", new()\n {\n Name = \"dataform_repository\",\n Region = \"us-central1\",\n GitRemoteSettings = new Gcp.Dataform.Inputs.RepositoryGitRemoteSettingsArgs\n {\n Url = gitRepository.Url,\n DefaultBranch = \"main\",\n AuthenticationTokenSecretVersion = secretVersion.Id,\n },\n WorkspaceCompilationOverrides = new Gcp.Dataform.Inputs.RepositoryWorkspaceCompilationOverridesArgs\n {\n DefaultDatabase = \"database\",\n SchemaSuffix = \"_suffix\",\n TablePrefix = \"prefix_\",\n },\n });\n\n var release = new Gcp.Dataform.RepositoryReleaseConfig(\"release\", new()\n {\n Project = repository.Project,\n Region = repository.Region,\n Repository = repository.Name,\n Name = \"my_release\",\n GitCommitish = \"main\",\n CronSchedule = \"0 7 * * *\",\n TimeZone = \"America/New_York\",\n CodeCompilationConfig = new Gcp.Dataform.Inputs.RepositoryReleaseConfigCodeCompilationConfigArgs\n {\n DefaultDatabase = \"gcp-example-project\",\n DefaultSchema = \"example-dataset\",\n DefaultLocation = \"us-central1\",\n AssertionSchema = \"example-assertion-dataset\",\n DatabaseSuffix = \"\",\n SchemaSuffix = \"\",\n TablePrefix = \"\",\n Vars = \n {\n { \"var1\", \"value\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataform\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/sourcerepo\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tgitRepository, err := sourcerepo.NewRepository(ctx, \"git_repository\", \u0026sourcerepo.RepositoryArgs{\n\t\t\tName: pulumi.String(\"my/repository\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"my_secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecretVersion, err := secretmanager.NewSecretVersion(ctx, \"secret_version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.ID(),\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trepository, err := dataform.NewRepository(ctx, \"repository\", \u0026dataform.RepositoryArgs{\n\t\t\tName: pulumi.String(\"dataform_repository\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tGitRemoteSettings: \u0026dataform.RepositoryGitRemoteSettingsArgs{\n\t\t\t\tUrl: gitRepository.Url,\n\t\t\t\tDefaultBranch: pulumi.String(\"main\"),\n\t\t\t\tAuthenticationTokenSecretVersion: secretVersion.ID(),\n\t\t\t},\n\t\t\tWorkspaceCompilationOverrides: \u0026dataform.RepositoryWorkspaceCompilationOverridesArgs{\n\t\t\t\tDefaultDatabase: pulumi.String(\"database\"),\n\t\t\t\tSchemaSuffix: pulumi.String(\"_suffix\"),\n\t\t\t\tTablePrefix: pulumi.String(\"prefix_\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataform.NewRepositoryReleaseConfig(ctx, \"release\", \u0026dataform.RepositoryReleaseConfigArgs{\n\t\t\tProject: repository.Project,\n\t\t\tRegion: repository.Region,\n\t\t\tRepository: repository.Name,\n\t\t\tName: pulumi.String(\"my_release\"),\n\t\t\tGitCommitish: pulumi.String(\"main\"),\n\t\t\tCronSchedule: pulumi.String(\"0 7 * * *\"),\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tCodeCompilationConfig: \u0026dataform.RepositoryReleaseConfigCodeCompilationConfigArgs{\n\t\t\t\tDefaultDatabase: pulumi.String(\"gcp-example-project\"),\n\t\t\t\tDefaultSchema: pulumi.String(\"example-dataset\"),\n\t\t\t\tDefaultLocation: pulumi.String(\"us-central1\"),\n\t\t\t\tAssertionSchema: pulumi.String(\"example-assertion-dataset\"),\n\t\t\t\tDatabaseSuffix: pulumi.String(\"\"),\n\t\t\t\tSchemaSuffix: pulumi.String(\"\"),\n\t\t\t\tTablePrefix: pulumi.String(\"\"),\n\t\t\t\tVars: pulumi.StringMap{\n\t\t\t\t\t\"var1\": pulumi.String(\"value\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.sourcerepo.Repository;\nimport com.pulumi.gcp.sourcerepo.RepositoryArgs;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.dataform.Repository;\nimport com.pulumi.gcp.dataform.RepositoryArgs;\nimport com.pulumi.gcp.dataform.inputs.RepositoryGitRemoteSettingsArgs;\nimport com.pulumi.gcp.dataform.inputs.RepositoryWorkspaceCompilationOverridesArgs;\nimport com.pulumi.gcp.dataform.RepositoryReleaseConfig;\nimport com.pulumi.gcp.dataform.RepositoryReleaseConfigArgs;\nimport com.pulumi.gcp.dataform.inputs.RepositoryReleaseConfigCodeCompilationConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var gitRepository = new Repository(\"gitRepository\", RepositoryArgs.builder()\n .name(\"my/repository\")\n .build());\n\n var secret = new Secret(\"secret\", SecretArgs.builder()\n .secretId(\"my_secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var secretVersion = new SecretVersion(\"secretVersion\", SecretVersionArgs.builder()\n .secret(secret.id())\n .secretData(\"secret-data\")\n .build());\n\n var repository = new Repository(\"repository\", RepositoryArgs.builder()\n .name(\"dataform_repository\")\n .region(\"us-central1\")\n .gitRemoteSettings(RepositoryGitRemoteSettingsArgs.builder()\n .url(gitRepository.url())\n .defaultBranch(\"main\")\n .authenticationTokenSecretVersion(secretVersion.id())\n .build())\n .workspaceCompilationOverrides(RepositoryWorkspaceCompilationOverridesArgs.builder()\n .defaultDatabase(\"database\")\n .schemaSuffix(\"_suffix\")\n .tablePrefix(\"prefix_\")\n .build())\n .build());\n\n var release = new RepositoryReleaseConfig(\"release\", RepositoryReleaseConfigArgs.builder()\n .project(repository.project())\n .region(repository.region())\n .repository(repository.name())\n .name(\"my_release\")\n .gitCommitish(\"main\")\n .cronSchedule(\"0 7 * * *\")\n .timeZone(\"America/New_York\")\n .codeCompilationConfig(RepositoryReleaseConfigCodeCompilationConfigArgs.builder()\n .defaultDatabase(\"gcp-example-project\")\n .defaultSchema(\"example-dataset\")\n .defaultLocation(\"us-central1\")\n .assertionSchema(\"example-assertion-dataset\")\n .databaseSuffix(\"\")\n .schemaSuffix(\"\")\n .tablePrefix(\"\")\n .vars(Map.of(\"var1\", \"value\"))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n gitRepository:\n type: gcp:sourcerepo:Repository\n name: git_repository\n properties:\n name: my/repository\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: my_secret\n replication:\n auto: {}\n secretVersion:\n type: gcp:secretmanager:SecretVersion\n name: secret_version\n properties:\n secret: ${secret.id}\n secretData: secret-data\n repository:\n type: gcp:dataform:Repository\n properties:\n name: dataform_repository\n region: us-central1\n gitRemoteSettings:\n url: ${gitRepository.url}\n defaultBranch: main\n authenticationTokenSecretVersion: ${secretVersion.id}\n workspaceCompilationOverrides:\n defaultDatabase: database\n schemaSuffix: _suffix\n tablePrefix: prefix_\n release:\n type: gcp:dataform:RepositoryReleaseConfig\n properties:\n project: ${repository.project}\n region: ${repository.region}\n repository: ${repository.name}\n name: my_release\n gitCommitish: main\n cronSchedule: 0 7 * * *\n timeZone: America/New_York\n codeCompilationConfig:\n defaultDatabase: gcp-example-project\n defaultSchema: example-dataset\n defaultLocation: us-central1\n assertionSchema: example-assertion-dataset\n databaseSuffix:\n schemaSuffix:\n tablePrefix:\n vars:\n var1: value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRepositoryReleaseConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/repositories/{{repository}}/releaseConfigs/{{name}}`\n\n* `{{project}}/{{region}}/{{repository}}/{{name}}`\n\n* `{{region}}/{{repository}}/{{name}}`\n\n* `{{repository}}/{{name}}`\n\nWhen using the `pulumi import` command, RepositoryReleaseConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataform/repositoryReleaseConfig:RepositoryReleaseConfig default projects/{{project}}/locations/{{region}}/repositories/{{repository}}/releaseConfigs/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataform/repositoryReleaseConfig:RepositoryReleaseConfig default {{project}}/{{region}}/{{repository}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataform/repositoryReleaseConfig:RepositoryReleaseConfig default {{region}}/{{repository}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataform/repositoryReleaseConfig:RepositoryReleaseConfig default {{repository}}/{{name}}\n```\n\n", + "description": "## Example Usage\n\n### Dataform Repository Release Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst gitRepository = new gcp.sourcerepo.Repository(\"git_repository\", {name: \"my/repository\"});\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"my_secret\",\n replication: {\n auto: {},\n },\n});\nconst secretVersion = new gcp.secretmanager.SecretVersion(\"secret_version\", {\n secret: secret.id,\n secretData: \"secret-data\",\n});\nconst repository = new gcp.dataform.Repository(\"repository\", {\n name: \"dataform_repository\",\n region: \"us-central1\",\n gitRemoteSettings: {\n url: gitRepository.url,\n defaultBranch: \"main\",\n authenticationTokenSecretVersion: secretVersion.id,\n },\n workspaceCompilationOverrides: {\n defaultDatabase: \"database\",\n schemaSuffix: \"_suffix\",\n tablePrefix: \"prefix_\",\n },\n});\nconst release = new gcp.dataform.RepositoryReleaseConfig(\"release\", {\n project: repository.project,\n region: repository.region,\n repository: repository.name,\n name: \"my_release\",\n gitCommitish: \"main\",\n cronSchedule: \"0 7 * * *\",\n timeZone: \"America/New_York\",\n codeCompilationConfig: {\n defaultDatabase: \"gcp-example-project\",\n defaultSchema: \"example-dataset\",\n defaultLocation: \"us-central1\",\n assertionSchema: \"example-assertion-dataset\",\n databaseSuffix: \"\",\n schemaSuffix: \"\",\n tablePrefix: \"\",\n vars: {\n var1: \"value\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ngit_repository = gcp.sourcerepo.Repository(\"git_repository\", name=\"my/repository\")\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"my_secret\",\n replication={\n \"auto\": {},\n })\nsecret_version = gcp.secretmanager.SecretVersion(\"secret_version\",\n secret=secret.id,\n secret_data=\"secret-data\")\nrepository = gcp.dataform.Repository(\"repository\",\n name=\"dataform_repository\",\n region=\"us-central1\",\n git_remote_settings={\n \"url\": git_repository.url,\n \"default_branch\": \"main\",\n \"authentication_token_secret_version\": secret_version.id,\n },\n workspace_compilation_overrides={\n \"default_database\": \"database\",\n \"schema_suffix\": \"_suffix\",\n \"table_prefix\": \"prefix_\",\n })\nrelease = gcp.dataform.RepositoryReleaseConfig(\"release\",\n project=repository.project,\n region=repository.region,\n repository=repository.name,\n name=\"my_release\",\n git_commitish=\"main\",\n cron_schedule=\"0 7 * * *\",\n time_zone=\"America/New_York\",\n code_compilation_config={\n \"default_database\": \"gcp-example-project\",\n \"default_schema\": \"example-dataset\",\n \"default_location\": \"us-central1\",\n \"assertion_schema\": \"example-assertion-dataset\",\n \"database_suffix\": \"\",\n \"schema_suffix\": \"\",\n \"table_prefix\": \"\",\n \"vars\": {\n \"var1\": \"value\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var gitRepository = new Gcp.SourceRepo.Repository(\"git_repository\", new()\n {\n Name = \"my/repository\",\n });\n\n var secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"my_secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var secretVersion = new Gcp.SecretManager.SecretVersion(\"secret_version\", new()\n {\n Secret = secret.Id,\n SecretData = \"secret-data\",\n });\n\n var repository = new Gcp.Dataform.Repository(\"repository\", new()\n {\n Name = \"dataform_repository\",\n Region = \"us-central1\",\n GitRemoteSettings = new Gcp.Dataform.Inputs.RepositoryGitRemoteSettingsArgs\n {\n Url = gitRepository.Url,\n DefaultBranch = \"main\",\n AuthenticationTokenSecretVersion = secretVersion.Id,\n },\n WorkspaceCompilationOverrides = new Gcp.Dataform.Inputs.RepositoryWorkspaceCompilationOverridesArgs\n {\n DefaultDatabase = \"database\",\n SchemaSuffix = \"_suffix\",\n TablePrefix = \"prefix_\",\n },\n });\n\n var release = new Gcp.Dataform.RepositoryReleaseConfig(\"release\", new()\n {\n Project = repository.Project,\n Region = repository.Region,\n Repository = repository.Name,\n Name = \"my_release\",\n GitCommitish = \"main\",\n CronSchedule = \"0 7 * * *\",\n TimeZone = \"America/New_York\",\n CodeCompilationConfig = new Gcp.Dataform.Inputs.RepositoryReleaseConfigCodeCompilationConfigArgs\n {\n DefaultDatabase = \"gcp-example-project\",\n DefaultSchema = \"example-dataset\",\n DefaultLocation = \"us-central1\",\n AssertionSchema = \"example-assertion-dataset\",\n DatabaseSuffix = \"\",\n SchemaSuffix = \"\",\n TablePrefix = \"\",\n Vars = \n {\n { \"var1\", \"value\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataform\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/sourcerepo\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tgitRepository, err := sourcerepo.NewRepository(ctx, \"git_repository\", \u0026sourcerepo.RepositoryArgs{\n\t\t\tName: pulumi.String(\"my/repository\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"my_secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: \u0026secretmanager.SecretReplicationAutoArgs{},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecretVersion, err := secretmanager.NewSecretVersion(ctx, \"secret_version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.ID(),\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trepository, err := dataform.NewRepository(ctx, \"repository\", \u0026dataform.RepositoryArgs{\n\t\t\tName: pulumi.String(\"dataform_repository\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tGitRemoteSettings: \u0026dataform.RepositoryGitRemoteSettingsArgs{\n\t\t\t\tUrl: gitRepository.Url,\n\t\t\t\tDefaultBranch: pulumi.String(\"main\"),\n\t\t\t\tAuthenticationTokenSecretVersion: secretVersion.ID(),\n\t\t\t},\n\t\t\tWorkspaceCompilationOverrides: \u0026dataform.RepositoryWorkspaceCompilationOverridesArgs{\n\t\t\t\tDefaultDatabase: pulumi.String(\"database\"),\n\t\t\t\tSchemaSuffix: pulumi.String(\"_suffix\"),\n\t\t\t\tTablePrefix: pulumi.String(\"prefix_\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataform.NewRepositoryReleaseConfig(ctx, \"release\", \u0026dataform.RepositoryReleaseConfigArgs{\n\t\t\tProject: repository.Project,\n\t\t\tRegion: repository.Region,\n\t\t\tRepository: repository.Name,\n\t\t\tName: pulumi.String(\"my_release\"),\n\t\t\tGitCommitish: pulumi.String(\"main\"),\n\t\t\tCronSchedule: pulumi.String(\"0 7 * * *\"),\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tCodeCompilationConfig: \u0026dataform.RepositoryReleaseConfigCodeCompilationConfigArgs{\n\t\t\t\tDefaultDatabase: pulumi.String(\"gcp-example-project\"),\n\t\t\t\tDefaultSchema: pulumi.String(\"example-dataset\"),\n\t\t\t\tDefaultLocation: pulumi.String(\"us-central1\"),\n\t\t\t\tAssertionSchema: pulumi.String(\"example-assertion-dataset\"),\n\t\t\t\tDatabaseSuffix: pulumi.String(\"\"),\n\t\t\t\tSchemaSuffix: pulumi.String(\"\"),\n\t\t\t\tTablePrefix: pulumi.String(\"\"),\n\t\t\t\tVars: pulumi.StringMap{\n\t\t\t\t\t\"var1\": pulumi.String(\"value\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.sourcerepo.Repository;\nimport com.pulumi.gcp.sourcerepo.RepositoryArgs;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.dataform.Repository;\nimport com.pulumi.gcp.dataform.RepositoryArgs;\nimport com.pulumi.gcp.dataform.inputs.RepositoryGitRemoteSettingsArgs;\nimport com.pulumi.gcp.dataform.inputs.RepositoryWorkspaceCompilationOverridesArgs;\nimport com.pulumi.gcp.dataform.RepositoryReleaseConfig;\nimport com.pulumi.gcp.dataform.RepositoryReleaseConfigArgs;\nimport com.pulumi.gcp.dataform.inputs.RepositoryReleaseConfigCodeCompilationConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var gitRepository = new Repository(\"gitRepository\", RepositoryArgs.builder()\n .name(\"my/repository\")\n .build());\n\n var secret = new Secret(\"secret\", SecretArgs.builder()\n .secretId(\"my_secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var secretVersion = new SecretVersion(\"secretVersion\", SecretVersionArgs.builder()\n .secret(secret.id())\n .secretData(\"secret-data\")\n .build());\n\n var repository = new Repository(\"repository\", RepositoryArgs.builder()\n .name(\"dataform_repository\")\n .region(\"us-central1\")\n .gitRemoteSettings(RepositoryGitRemoteSettingsArgs.builder()\n .url(gitRepository.url())\n .defaultBranch(\"main\")\n .authenticationTokenSecretVersion(secretVersion.id())\n .build())\n .workspaceCompilationOverrides(RepositoryWorkspaceCompilationOverridesArgs.builder()\n .defaultDatabase(\"database\")\n .schemaSuffix(\"_suffix\")\n .tablePrefix(\"prefix_\")\n .build())\n .build());\n\n var release = new RepositoryReleaseConfig(\"release\", RepositoryReleaseConfigArgs.builder()\n .project(repository.project())\n .region(repository.region())\n .repository(repository.name())\n .name(\"my_release\")\n .gitCommitish(\"main\")\n .cronSchedule(\"0 7 * * *\")\n .timeZone(\"America/New_York\")\n .codeCompilationConfig(RepositoryReleaseConfigCodeCompilationConfigArgs.builder()\n .defaultDatabase(\"gcp-example-project\")\n .defaultSchema(\"example-dataset\")\n .defaultLocation(\"us-central1\")\n .assertionSchema(\"example-assertion-dataset\")\n .databaseSuffix(\"\")\n .schemaSuffix(\"\")\n .tablePrefix(\"\")\n .vars(Map.of(\"var1\", \"value\"))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n gitRepository:\n type: gcp:sourcerepo:Repository\n name: git_repository\n properties:\n name: my/repository\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: my_secret\n replication:\n auto: {}\n secretVersion:\n type: gcp:secretmanager:SecretVersion\n name: secret_version\n properties:\n secret: ${secret.id}\n secretData: secret-data\n repository:\n type: gcp:dataform:Repository\n properties:\n name: dataform_repository\n region: us-central1\n gitRemoteSettings:\n url: ${gitRepository.url}\n defaultBranch: main\n authenticationTokenSecretVersion: ${secretVersion.id}\n workspaceCompilationOverrides:\n defaultDatabase: database\n schemaSuffix: _suffix\n tablePrefix: prefix_\n release:\n type: gcp:dataform:RepositoryReleaseConfig\n properties:\n project: ${repository.project}\n region: ${repository.region}\n repository: ${repository.name}\n name: my_release\n gitCommitish: main\n cronSchedule: 0 7 * * *\n timeZone: America/New_York\n codeCompilationConfig:\n defaultDatabase: gcp-example-project\n defaultSchema: example-dataset\n defaultLocation: us-central1\n assertionSchema: example-assertion-dataset\n databaseSuffix:\n schemaSuffix:\n tablePrefix:\n vars:\n var1: value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRepositoryReleaseConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/repositories/{{repository}}/releaseConfigs/{{name}}`\n\n* `{{project}}/{{region}}/{{repository}}/{{name}}`\n\n* `{{region}}/{{repository}}/{{name}}`\n\n* `{{repository}}/{{name}}`\n\nWhen using the `pulumi import` command, RepositoryReleaseConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataform/repositoryReleaseConfig:RepositoryReleaseConfig default projects/{{project}}/locations/{{region}}/repositories/{{repository}}/releaseConfigs/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataform/repositoryReleaseConfig:RepositoryReleaseConfig default {{project}}/{{region}}/{{repository}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataform/repositoryReleaseConfig:RepositoryReleaseConfig default {{region}}/{{repository}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataform/repositoryReleaseConfig:RepositoryReleaseConfig default {{repository}}/{{name}}\n```\n\n", "properties": { "codeCompilationConfig": { "$ref": "#/types/gcp:dataform/RepositoryReleaseConfigCodeCompilationConfig:RepositoryReleaseConfigCodeCompilationConfig", @@ -179947,7 +179947,7 @@ } }, "gcp:dataform/repositoryWorkflowConfig:RepositoryWorkflowConfig": { - "description": "## Example Usage\n\n### Dataform Repository Workflow Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst gitRepository = new gcp.sourcerepo.Repository(\"git_repository\", {name: \"my/repository\"});\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"my_secret\",\n replication: {\n auto: {},\n },\n});\nconst secretVersion = new gcp.secretmanager.SecretVersion(\"secret_version\", {\n secret: secret.id,\n secretData: \"secret-data\",\n});\nconst repository = new gcp.dataform.Repository(\"repository\", {\n name: \"dataform_repository\",\n region: \"us-central1\",\n gitRemoteSettings: {\n url: gitRepository.url,\n defaultBranch: \"main\",\n authenticationTokenSecretVersion: secretVersion.id,\n },\n workspaceCompilationOverrides: {\n defaultDatabase: \"database\",\n schemaSuffix: \"_suffix\",\n tablePrefix: \"prefix_\",\n },\n});\nconst releaseConfig = new gcp.dataform.RepositoryReleaseConfig(\"release_config\", {\n project: repository.project,\n region: repository.region,\n repository: repository.name,\n name: \"my_release\",\n gitCommitish: \"main\",\n cronSchedule: \"0 7 * * *\",\n timeZone: \"America/New_York\",\n codeCompilationConfig: {\n defaultDatabase: \"gcp-example-project\",\n defaultSchema: \"example-dataset\",\n defaultLocation: \"us-central1\",\n assertionSchema: \"example-assertion-dataset\",\n databaseSuffix: \"\",\n schemaSuffix: \"\",\n tablePrefix: \"\",\n vars: {\n var1: \"value\",\n },\n },\n});\nconst dataformSa = new gcp.serviceaccount.Account(\"dataform_sa\", {\n accountId: \"dataform-sa\",\n displayName: \"Dataform Service Account\",\n});\nconst workflow = new gcp.dataform.RepositoryWorkflowConfig(\"workflow\", {\n project: repository.project,\n region: repository.region,\n repository: repository.name,\n name: \"my_workflow\",\n releaseConfig: releaseConfig.id,\n invocationConfig: {\n includedTargets: [\n {\n database: \"gcp-example-project\",\n schema: \"example-dataset\",\n name: \"target_1\",\n },\n {\n database: \"gcp-example-project\",\n schema: \"example-dataset\",\n name: \"target_2\",\n },\n ],\n includedTags: [\"tag_1\"],\n transitiveDependenciesIncluded: true,\n transitiveDependentsIncluded: true,\n fullyRefreshIncrementalTablesEnabled: false,\n serviceAccount: dataformSa.email,\n },\n cronSchedule: \"0 7 * * *\",\n timeZone: \"America/New_York\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ngit_repository = gcp.sourcerepo.Repository(\"git_repository\", name=\"my/repository\")\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"my_secret\",\n replication={\n \"auto\": {},\n })\nsecret_version = gcp.secretmanager.SecretVersion(\"secret_version\",\n secret=secret.id,\n secret_data=\"secret-data\")\nrepository = gcp.dataform.Repository(\"repository\",\n name=\"dataform_repository\",\n region=\"us-central1\",\n git_remote_settings={\n \"url\": git_repository.url,\n \"default_branch\": \"main\",\n \"authentication_token_secret_version\": secret_version.id,\n },\n workspace_compilation_overrides={\n \"default_database\": \"database\",\n \"schema_suffix\": \"_suffix\",\n \"table_prefix\": \"prefix_\",\n })\nrelease_config = gcp.dataform.RepositoryReleaseConfig(\"release_config\",\n project=repository.project,\n region=repository.region,\n repository=repository.name,\n name=\"my_release\",\n git_commitish=\"main\",\n cron_schedule=\"0 7 * * *\",\n time_zone=\"America/New_York\",\n code_compilation_config={\n \"default_database\": \"gcp-example-project\",\n \"default_schema\": \"example-dataset\",\n \"default_location\": \"us-central1\",\n \"assertion_schema\": \"example-assertion-dataset\",\n \"database_suffix\": \"\",\n \"schema_suffix\": \"\",\n \"table_prefix\": \"\",\n \"vars\": {\n \"var1\": \"value\",\n },\n })\ndataform_sa = gcp.serviceaccount.Account(\"dataform_sa\",\n account_id=\"dataform-sa\",\n display_name=\"Dataform Service Account\")\nworkflow = gcp.dataform.RepositoryWorkflowConfig(\"workflow\",\n project=repository.project,\n region=repository.region,\n repository=repository.name,\n name=\"my_workflow\",\n release_config=release_config.id,\n invocation_config={\n \"included_targets\": [\n {\n \"database\": \"gcp-example-project\",\n \"schema\": \"example-dataset\",\n \"name\": \"target_1\",\n },\n {\n \"database\": \"gcp-example-project\",\n \"schema\": \"example-dataset\",\n \"name\": \"target_2\",\n },\n ],\n \"included_tags\": [\"tag_1\"],\n \"transitive_dependencies_included\": True,\n \"transitive_dependents_included\": True,\n \"fully_refresh_incremental_tables_enabled\": False,\n \"service_account\": dataform_sa.email,\n },\n cron_schedule=\"0 7 * * *\",\n time_zone=\"America/New_York\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var gitRepository = new Gcp.SourceRepo.Repository(\"git_repository\", new()\n {\n Name = \"my/repository\",\n });\n\n var secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"my_secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var secretVersion = new Gcp.SecretManager.SecretVersion(\"secret_version\", new()\n {\n Secret = secret.Id,\n SecretData = \"secret-data\",\n });\n\n var repository = new Gcp.Dataform.Repository(\"repository\", new()\n {\n Name = \"dataform_repository\",\n Region = \"us-central1\",\n GitRemoteSettings = new Gcp.Dataform.Inputs.RepositoryGitRemoteSettingsArgs\n {\n Url = gitRepository.Url,\n DefaultBranch = \"main\",\n AuthenticationTokenSecretVersion = secretVersion.Id,\n },\n WorkspaceCompilationOverrides = new Gcp.Dataform.Inputs.RepositoryWorkspaceCompilationOverridesArgs\n {\n DefaultDatabase = \"database\",\n SchemaSuffix = \"_suffix\",\n TablePrefix = \"prefix_\",\n },\n });\n\n var releaseConfig = new Gcp.Dataform.RepositoryReleaseConfig(\"release_config\", new()\n {\n Project = repository.Project,\n Region = repository.Region,\n Repository = repository.Name,\n Name = \"my_release\",\n GitCommitish = \"main\",\n CronSchedule = \"0 7 * * *\",\n TimeZone = \"America/New_York\",\n CodeCompilationConfig = new Gcp.Dataform.Inputs.RepositoryReleaseConfigCodeCompilationConfigArgs\n {\n DefaultDatabase = \"gcp-example-project\",\n DefaultSchema = \"example-dataset\",\n DefaultLocation = \"us-central1\",\n AssertionSchema = \"example-assertion-dataset\",\n DatabaseSuffix = \"\",\n SchemaSuffix = \"\",\n TablePrefix = \"\",\n Vars = \n {\n { \"var1\", \"value\" },\n },\n },\n });\n\n var dataformSa = new Gcp.ServiceAccount.Account(\"dataform_sa\", new()\n {\n AccountId = \"dataform-sa\",\n DisplayName = \"Dataform Service Account\",\n });\n\n var workflow = new Gcp.Dataform.RepositoryWorkflowConfig(\"workflow\", new()\n {\n Project = repository.Project,\n Region = repository.Region,\n Repository = repository.Name,\n Name = \"my_workflow\",\n ReleaseConfig = releaseConfig.Id,\n InvocationConfig = new Gcp.Dataform.Inputs.RepositoryWorkflowConfigInvocationConfigArgs\n {\n IncludedTargets = new[]\n {\n new Gcp.Dataform.Inputs.RepositoryWorkflowConfigInvocationConfigIncludedTargetArgs\n {\n Database = \"gcp-example-project\",\n Schema = \"example-dataset\",\n Name = \"target_1\",\n },\n new Gcp.Dataform.Inputs.RepositoryWorkflowConfigInvocationConfigIncludedTargetArgs\n {\n Database = \"gcp-example-project\",\n Schema = \"example-dataset\",\n Name = \"target_2\",\n },\n },\n IncludedTags = new[]\n {\n \"tag_1\",\n },\n TransitiveDependenciesIncluded = true,\n TransitiveDependentsIncluded = true,\n FullyRefreshIncrementalTablesEnabled = false,\n ServiceAccount = dataformSa.Email,\n },\n CronSchedule = \"0 7 * * *\",\n TimeZone = \"America/New_York\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataform\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/sourcerepo\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tgitRepository, err := sourcerepo.NewRepository(ctx, \"git_repository\", \u0026sourcerepo.RepositoryArgs{\n\t\t\tName: pulumi.String(\"my/repository\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"my_secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecretVersion, err := secretmanager.NewSecretVersion(ctx, \"secret_version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.ID(),\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trepository, err := dataform.NewRepository(ctx, \"repository\", \u0026dataform.RepositoryArgs{\n\t\t\tName: pulumi.String(\"dataform_repository\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tGitRemoteSettings: \u0026dataform.RepositoryGitRemoteSettingsArgs{\n\t\t\t\tUrl: gitRepository.Url,\n\t\t\t\tDefaultBranch: pulumi.String(\"main\"),\n\t\t\t\tAuthenticationTokenSecretVersion: secretVersion.ID(),\n\t\t\t},\n\t\t\tWorkspaceCompilationOverrides: \u0026dataform.RepositoryWorkspaceCompilationOverridesArgs{\n\t\t\t\tDefaultDatabase: pulumi.String(\"database\"),\n\t\t\t\tSchemaSuffix: pulumi.String(\"_suffix\"),\n\t\t\t\tTablePrefix: pulumi.String(\"prefix_\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treleaseConfig, err := dataform.NewRepositoryReleaseConfig(ctx, \"release_config\", \u0026dataform.RepositoryReleaseConfigArgs{\n\t\t\tProject: repository.Project,\n\t\t\tRegion: repository.Region,\n\t\t\tRepository: repository.Name,\n\t\t\tName: pulumi.String(\"my_release\"),\n\t\t\tGitCommitish: pulumi.String(\"main\"),\n\t\t\tCronSchedule: pulumi.String(\"0 7 * * *\"),\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tCodeCompilationConfig: \u0026dataform.RepositoryReleaseConfigCodeCompilationConfigArgs{\n\t\t\t\tDefaultDatabase: pulumi.String(\"gcp-example-project\"),\n\t\t\t\tDefaultSchema: pulumi.String(\"example-dataset\"),\n\t\t\t\tDefaultLocation: pulumi.String(\"us-central1\"),\n\t\t\t\tAssertionSchema: pulumi.String(\"example-assertion-dataset\"),\n\t\t\t\tDatabaseSuffix: pulumi.String(\"\"),\n\t\t\t\tSchemaSuffix: pulumi.String(\"\"),\n\t\t\t\tTablePrefix: pulumi.String(\"\"),\n\t\t\t\tVars: pulumi.StringMap{\n\t\t\t\t\t\"var1\": pulumi.String(\"value\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdataformSa, err := serviceaccount.NewAccount(ctx, \"dataform_sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"dataform-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Dataform Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataform.NewRepositoryWorkflowConfig(ctx, \"workflow\", \u0026dataform.RepositoryWorkflowConfigArgs{\n\t\t\tProject: repository.Project,\n\t\t\tRegion: repository.Region,\n\t\t\tRepository: repository.Name,\n\t\t\tName: pulumi.String(\"my_workflow\"),\n\t\t\tReleaseConfig: releaseConfig.ID(),\n\t\t\tInvocationConfig: \u0026dataform.RepositoryWorkflowConfigInvocationConfigArgs{\n\t\t\t\tIncludedTargets: dataform.RepositoryWorkflowConfigInvocationConfigIncludedTargetArray{\n\t\t\t\t\t\u0026dataform.RepositoryWorkflowConfigInvocationConfigIncludedTargetArgs{\n\t\t\t\t\t\tDatabase: pulumi.String(\"gcp-example-project\"),\n\t\t\t\t\t\tSchema: pulumi.String(\"example-dataset\"),\n\t\t\t\t\t\tName: pulumi.String(\"target_1\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataform.RepositoryWorkflowConfigInvocationConfigIncludedTargetArgs{\n\t\t\t\t\t\tDatabase: pulumi.String(\"gcp-example-project\"),\n\t\t\t\t\t\tSchema: pulumi.String(\"example-dataset\"),\n\t\t\t\t\t\tName: pulumi.String(\"target_2\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tIncludedTags: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"tag_1\"),\n\t\t\t\t},\n\t\t\t\tTransitiveDependenciesIncluded: pulumi.Bool(true),\n\t\t\t\tTransitiveDependentsIncluded: pulumi.Bool(true),\n\t\t\t\tFullyRefreshIncrementalTablesEnabled: pulumi.Bool(false),\n\t\t\t\tServiceAccount: dataformSa.Email,\n\t\t\t},\n\t\t\tCronSchedule: pulumi.String(\"0 7 * * *\"),\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.sourcerepo.Repository;\nimport com.pulumi.gcp.sourcerepo.RepositoryArgs;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.dataform.Repository;\nimport com.pulumi.gcp.dataform.RepositoryArgs;\nimport com.pulumi.gcp.dataform.inputs.RepositoryGitRemoteSettingsArgs;\nimport com.pulumi.gcp.dataform.inputs.RepositoryWorkspaceCompilationOverridesArgs;\nimport com.pulumi.gcp.dataform.RepositoryReleaseConfig;\nimport com.pulumi.gcp.dataform.RepositoryReleaseConfigArgs;\nimport com.pulumi.gcp.dataform.inputs.RepositoryReleaseConfigCodeCompilationConfigArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.dataform.RepositoryWorkflowConfig;\nimport com.pulumi.gcp.dataform.RepositoryWorkflowConfigArgs;\nimport com.pulumi.gcp.dataform.inputs.RepositoryWorkflowConfigInvocationConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var gitRepository = new Repository(\"gitRepository\", RepositoryArgs.builder()\n .name(\"my/repository\")\n .build());\n\n var secret = new Secret(\"secret\", SecretArgs.builder()\n .secretId(\"my_secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var secretVersion = new SecretVersion(\"secretVersion\", SecretVersionArgs.builder()\n .secret(secret.id())\n .secretData(\"secret-data\")\n .build());\n\n var repository = new Repository(\"repository\", RepositoryArgs.builder()\n .name(\"dataform_repository\")\n .region(\"us-central1\")\n .gitRemoteSettings(RepositoryGitRemoteSettingsArgs.builder()\n .url(gitRepository.url())\n .defaultBranch(\"main\")\n .authenticationTokenSecretVersion(secretVersion.id())\n .build())\n .workspaceCompilationOverrides(RepositoryWorkspaceCompilationOverridesArgs.builder()\n .defaultDatabase(\"database\")\n .schemaSuffix(\"_suffix\")\n .tablePrefix(\"prefix_\")\n .build())\n .build());\n\n var releaseConfig = new RepositoryReleaseConfig(\"releaseConfig\", RepositoryReleaseConfigArgs.builder()\n .project(repository.project())\n .region(repository.region())\n .repository(repository.name())\n .name(\"my_release\")\n .gitCommitish(\"main\")\n .cronSchedule(\"0 7 * * *\")\n .timeZone(\"America/New_York\")\n .codeCompilationConfig(RepositoryReleaseConfigCodeCompilationConfigArgs.builder()\n .defaultDatabase(\"gcp-example-project\")\n .defaultSchema(\"example-dataset\")\n .defaultLocation(\"us-central1\")\n .assertionSchema(\"example-assertion-dataset\")\n .databaseSuffix(\"\")\n .schemaSuffix(\"\")\n .tablePrefix(\"\")\n .vars(Map.of(\"var1\", \"value\"))\n .build())\n .build());\n\n var dataformSa = new Account(\"dataformSa\", AccountArgs.builder()\n .accountId(\"dataform-sa\")\n .displayName(\"Dataform Service Account\")\n .build());\n\n var workflow = new RepositoryWorkflowConfig(\"workflow\", RepositoryWorkflowConfigArgs.builder()\n .project(repository.project())\n .region(repository.region())\n .repository(repository.name())\n .name(\"my_workflow\")\n .releaseConfig(releaseConfig.id())\n .invocationConfig(RepositoryWorkflowConfigInvocationConfigArgs.builder()\n .includedTargets( \n RepositoryWorkflowConfigInvocationConfigIncludedTargetArgs.builder()\n .database(\"gcp-example-project\")\n .schema(\"example-dataset\")\n .name(\"target_1\")\n .build(),\n RepositoryWorkflowConfigInvocationConfigIncludedTargetArgs.builder()\n .database(\"gcp-example-project\")\n .schema(\"example-dataset\")\n .name(\"target_2\")\n .build())\n .includedTags(\"tag_1\")\n .transitiveDependenciesIncluded(true)\n .transitiveDependentsIncluded(true)\n .fullyRefreshIncrementalTablesEnabled(false)\n .serviceAccount(dataformSa.email())\n .build())\n .cronSchedule(\"0 7 * * *\")\n .timeZone(\"America/New_York\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n gitRepository:\n type: gcp:sourcerepo:Repository\n name: git_repository\n properties:\n name: my/repository\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: my_secret\n replication:\n auto: {}\n secretVersion:\n type: gcp:secretmanager:SecretVersion\n name: secret_version\n properties:\n secret: ${secret.id}\n secretData: secret-data\n repository:\n type: gcp:dataform:Repository\n properties:\n name: dataform_repository\n region: us-central1\n gitRemoteSettings:\n url: ${gitRepository.url}\n defaultBranch: main\n authenticationTokenSecretVersion: ${secretVersion.id}\n workspaceCompilationOverrides:\n defaultDatabase: database\n schemaSuffix: _suffix\n tablePrefix: prefix_\n releaseConfig:\n type: gcp:dataform:RepositoryReleaseConfig\n name: release_config\n properties:\n project: ${repository.project}\n region: ${repository.region}\n repository: ${repository.name}\n name: my_release\n gitCommitish: main\n cronSchedule: 0 7 * * *\n timeZone: America/New_York\n codeCompilationConfig:\n defaultDatabase: gcp-example-project\n defaultSchema: example-dataset\n defaultLocation: us-central1\n assertionSchema: example-assertion-dataset\n databaseSuffix:\n schemaSuffix:\n tablePrefix:\n vars:\n var1: value\n dataformSa:\n type: gcp:serviceaccount:Account\n name: dataform_sa\n properties:\n accountId: dataform-sa\n displayName: Dataform Service Account\n workflow:\n type: gcp:dataform:RepositoryWorkflowConfig\n properties:\n project: ${repository.project}\n region: ${repository.region}\n repository: ${repository.name}\n name: my_workflow\n releaseConfig: ${releaseConfig.id}\n invocationConfig:\n includedTargets:\n - database: gcp-example-project\n schema: example-dataset\n name: target_1\n - database: gcp-example-project\n schema: example-dataset\n name: target_2\n includedTags:\n - tag_1\n transitiveDependenciesIncluded: true\n transitiveDependentsIncluded: true\n fullyRefreshIncrementalTablesEnabled: false\n serviceAccount: ${dataformSa.email}\n cronSchedule: 0 7 * * *\n timeZone: America/New_York\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRepositoryWorkflowConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/repositories/{{repository}}/workflowConfigs/{{name}}`\n\n* `{{project}}/{{region}}/{{repository}}/{{name}}`\n\n* `{{region}}/{{repository}}/{{name}}`\n\n* `{{repository}}/{{name}}`\n\nWhen using the `pulumi import` command, RepositoryWorkflowConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataform/repositoryWorkflowConfig:RepositoryWorkflowConfig default projects/{{project}}/locations/{{region}}/repositories/{{repository}}/workflowConfigs/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataform/repositoryWorkflowConfig:RepositoryWorkflowConfig default {{project}}/{{region}}/{{repository}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataform/repositoryWorkflowConfig:RepositoryWorkflowConfig default {{region}}/{{repository}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataform/repositoryWorkflowConfig:RepositoryWorkflowConfig default {{repository}}/{{name}}\n```\n\n", + "description": "## Example Usage\n\n### Dataform Repository Workflow Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst gitRepository = new gcp.sourcerepo.Repository(\"git_repository\", {name: \"my/repository\"});\nconst secret = new gcp.secretmanager.Secret(\"secret\", {\n secretId: \"my_secret\",\n replication: {\n auto: {},\n },\n});\nconst secretVersion = new gcp.secretmanager.SecretVersion(\"secret_version\", {\n secret: secret.id,\n secretData: \"secret-data\",\n});\nconst repository = new gcp.dataform.Repository(\"repository\", {\n name: \"dataform_repository\",\n region: \"us-central1\",\n gitRemoteSettings: {\n url: gitRepository.url,\n defaultBranch: \"main\",\n authenticationTokenSecretVersion: secretVersion.id,\n },\n workspaceCompilationOverrides: {\n defaultDatabase: \"database\",\n schemaSuffix: \"_suffix\",\n tablePrefix: \"prefix_\",\n },\n});\nconst releaseConfig = new gcp.dataform.RepositoryReleaseConfig(\"release_config\", {\n project: repository.project,\n region: repository.region,\n repository: repository.name,\n name: \"my_release\",\n gitCommitish: \"main\",\n cronSchedule: \"0 7 * * *\",\n timeZone: \"America/New_York\",\n codeCompilationConfig: {\n defaultDatabase: \"gcp-example-project\",\n defaultSchema: \"example-dataset\",\n defaultLocation: \"us-central1\",\n assertionSchema: \"example-assertion-dataset\",\n databaseSuffix: \"\",\n schemaSuffix: \"\",\n tablePrefix: \"\",\n vars: {\n var1: \"value\",\n },\n },\n});\nconst dataformSa = new gcp.serviceaccount.Account(\"dataform_sa\", {\n accountId: \"dataform-sa\",\n displayName: \"Dataform Service Account\",\n});\nconst workflow = new gcp.dataform.RepositoryWorkflowConfig(\"workflow\", {\n project: repository.project,\n region: repository.region,\n repository: repository.name,\n name: \"my_workflow\",\n releaseConfig: releaseConfig.id,\n invocationConfig: {\n includedTargets: [\n {\n database: \"gcp-example-project\",\n schema: \"example-dataset\",\n name: \"target_1\",\n },\n {\n database: \"gcp-example-project\",\n schema: \"example-dataset\",\n name: \"target_2\",\n },\n ],\n includedTags: [\"tag_1\"],\n transitiveDependenciesIncluded: true,\n transitiveDependentsIncluded: true,\n fullyRefreshIncrementalTablesEnabled: false,\n serviceAccount: dataformSa.email,\n },\n cronSchedule: \"0 7 * * *\",\n timeZone: \"America/New_York\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ngit_repository = gcp.sourcerepo.Repository(\"git_repository\", name=\"my/repository\")\nsecret = gcp.secretmanager.Secret(\"secret\",\n secret_id=\"my_secret\",\n replication={\n \"auto\": {},\n })\nsecret_version = gcp.secretmanager.SecretVersion(\"secret_version\",\n secret=secret.id,\n secret_data=\"secret-data\")\nrepository = gcp.dataform.Repository(\"repository\",\n name=\"dataform_repository\",\n region=\"us-central1\",\n git_remote_settings={\n \"url\": git_repository.url,\n \"default_branch\": \"main\",\n \"authentication_token_secret_version\": secret_version.id,\n },\n workspace_compilation_overrides={\n \"default_database\": \"database\",\n \"schema_suffix\": \"_suffix\",\n \"table_prefix\": \"prefix_\",\n })\nrelease_config = gcp.dataform.RepositoryReleaseConfig(\"release_config\",\n project=repository.project,\n region=repository.region,\n repository=repository.name,\n name=\"my_release\",\n git_commitish=\"main\",\n cron_schedule=\"0 7 * * *\",\n time_zone=\"America/New_York\",\n code_compilation_config={\n \"default_database\": \"gcp-example-project\",\n \"default_schema\": \"example-dataset\",\n \"default_location\": \"us-central1\",\n \"assertion_schema\": \"example-assertion-dataset\",\n \"database_suffix\": \"\",\n \"schema_suffix\": \"\",\n \"table_prefix\": \"\",\n \"vars\": {\n \"var1\": \"value\",\n },\n })\ndataform_sa = gcp.serviceaccount.Account(\"dataform_sa\",\n account_id=\"dataform-sa\",\n display_name=\"Dataform Service Account\")\nworkflow = gcp.dataform.RepositoryWorkflowConfig(\"workflow\",\n project=repository.project,\n region=repository.region,\n repository=repository.name,\n name=\"my_workflow\",\n release_config=release_config.id,\n invocation_config={\n \"included_targets\": [\n {\n \"database\": \"gcp-example-project\",\n \"schema\": \"example-dataset\",\n \"name\": \"target_1\",\n },\n {\n \"database\": \"gcp-example-project\",\n \"schema\": \"example-dataset\",\n \"name\": \"target_2\",\n },\n ],\n \"included_tags\": [\"tag_1\"],\n \"transitive_dependencies_included\": True,\n \"transitive_dependents_included\": True,\n \"fully_refresh_incremental_tables_enabled\": False,\n \"service_account\": dataform_sa.email,\n },\n cron_schedule=\"0 7 * * *\",\n time_zone=\"America/New_York\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var gitRepository = new Gcp.SourceRepo.Repository(\"git_repository\", new()\n {\n Name = \"my/repository\",\n });\n\n var secret = new Gcp.SecretManager.Secret(\"secret\", new()\n {\n SecretId = \"my_secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var secretVersion = new Gcp.SecretManager.SecretVersion(\"secret_version\", new()\n {\n Secret = secret.Id,\n SecretData = \"secret-data\",\n });\n\n var repository = new Gcp.Dataform.Repository(\"repository\", new()\n {\n Name = \"dataform_repository\",\n Region = \"us-central1\",\n GitRemoteSettings = new Gcp.Dataform.Inputs.RepositoryGitRemoteSettingsArgs\n {\n Url = gitRepository.Url,\n DefaultBranch = \"main\",\n AuthenticationTokenSecretVersion = secretVersion.Id,\n },\n WorkspaceCompilationOverrides = new Gcp.Dataform.Inputs.RepositoryWorkspaceCompilationOverridesArgs\n {\n DefaultDatabase = \"database\",\n SchemaSuffix = \"_suffix\",\n TablePrefix = \"prefix_\",\n },\n });\n\n var releaseConfig = new Gcp.Dataform.RepositoryReleaseConfig(\"release_config\", new()\n {\n Project = repository.Project,\n Region = repository.Region,\n Repository = repository.Name,\n Name = \"my_release\",\n GitCommitish = \"main\",\n CronSchedule = \"0 7 * * *\",\n TimeZone = \"America/New_York\",\n CodeCompilationConfig = new Gcp.Dataform.Inputs.RepositoryReleaseConfigCodeCompilationConfigArgs\n {\n DefaultDatabase = \"gcp-example-project\",\n DefaultSchema = \"example-dataset\",\n DefaultLocation = \"us-central1\",\n AssertionSchema = \"example-assertion-dataset\",\n DatabaseSuffix = \"\",\n SchemaSuffix = \"\",\n TablePrefix = \"\",\n Vars = \n {\n { \"var1\", \"value\" },\n },\n },\n });\n\n var dataformSa = new Gcp.ServiceAccount.Account(\"dataform_sa\", new()\n {\n AccountId = \"dataform-sa\",\n DisplayName = \"Dataform Service Account\",\n });\n\n var workflow = new Gcp.Dataform.RepositoryWorkflowConfig(\"workflow\", new()\n {\n Project = repository.Project,\n Region = repository.Region,\n Repository = repository.Name,\n Name = \"my_workflow\",\n ReleaseConfig = releaseConfig.Id,\n InvocationConfig = new Gcp.Dataform.Inputs.RepositoryWorkflowConfigInvocationConfigArgs\n {\n IncludedTargets = new[]\n {\n new Gcp.Dataform.Inputs.RepositoryWorkflowConfigInvocationConfigIncludedTargetArgs\n {\n Database = \"gcp-example-project\",\n Schema = \"example-dataset\",\n Name = \"target_1\",\n },\n new Gcp.Dataform.Inputs.RepositoryWorkflowConfigInvocationConfigIncludedTargetArgs\n {\n Database = \"gcp-example-project\",\n Schema = \"example-dataset\",\n Name = \"target_2\",\n },\n },\n IncludedTags = new[]\n {\n \"tag_1\",\n },\n TransitiveDependenciesIncluded = true,\n TransitiveDependentsIncluded = true,\n FullyRefreshIncrementalTablesEnabled = false,\n ServiceAccount = dataformSa.Email,\n },\n CronSchedule = \"0 7 * * *\",\n TimeZone = \"America/New_York\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataform\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/sourcerepo\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tgitRepository, err := sourcerepo.NewRepository(ctx, \"git_repository\", \u0026sourcerepo.RepositoryArgs{\n\t\t\tName: pulumi.String(\"my/repository\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecret, err := secretmanager.NewSecret(ctx, \"secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"my_secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: \u0026secretmanager.SecretReplicationAutoArgs{},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecretVersion, err := secretmanager.NewSecretVersion(ctx, \"secret_version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret.ID(),\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trepository, err := dataform.NewRepository(ctx, \"repository\", \u0026dataform.RepositoryArgs{\n\t\t\tName: pulumi.String(\"dataform_repository\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tGitRemoteSettings: \u0026dataform.RepositoryGitRemoteSettingsArgs{\n\t\t\t\tUrl: gitRepository.Url,\n\t\t\t\tDefaultBranch: pulumi.String(\"main\"),\n\t\t\t\tAuthenticationTokenSecretVersion: secretVersion.ID(),\n\t\t\t},\n\t\t\tWorkspaceCompilationOverrides: \u0026dataform.RepositoryWorkspaceCompilationOverridesArgs{\n\t\t\t\tDefaultDatabase: pulumi.String(\"database\"),\n\t\t\t\tSchemaSuffix: pulumi.String(\"_suffix\"),\n\t\t\t\tTablePrefix: pulumi.String(\"prefix_\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treleaseConfig, err := dataform.NewRepositoryReleaseConfig(ctx, \"release_config\", \u0026dataform.RepositoryReleaseConfigArgs{\n\t\t\tProject: repository.Project,\n\t\t\tRegion: repository.Region,\n\t\t\tRepository: repository.Name,\n\t\t\tName: pulumi.String(\"my_release\"),\n\t\t\tGitCommitish: pulumi.String(\"main\"),\n\t\t\tCronSchedule: pulumi.String(\"0 7 * * *\"),\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tCodeCompilationConfig: \u0026dataform.RepositoryReleaseConfigCodeCompilationConfigArgs{\n\t\t\t\tDefaultDatabase: pulumi.String(\"gcp-example-project\"),\n\t\t\t\tDefaultSchema: pulumi.String(\"example-dataset\"),\n\t\t\t\tDefaultLocation: pulumi.String(\"us-central1\"),\n\t\t\t\tAssertionSchema: pulumi.String(\"example-assertion-dataset\"),\n\t\t\t\tDatabaseSuffix: pulumi.String(\"\"),\n\t\t\t\tSchemaSuffix: pulumi.String(\"\"),\n\t\t\t\tTablePrefix: pulumi.String(\"\"),\n\t\t\t\tVars: pulumi.StringMap{\n\t\t\t\t\t\"var1\": pulumi.String(\"value\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdataformSa, err := serviceaccount.NewAccount(ctx, \"dataform_sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"dataform-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Dataform Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataform.NewRepositoryWorkflowConfig(ctx, \"workflow\", \u0026dataform.RepositoryWorkflowConfigArgs{\n\t\t\tProject: repository.Project,\n\t\t\tRegion: repository.Region,\n\t\t\tRepository: repository.Name,\n\t\t\tName: pulumi.String(\"my_workflow\"),\n\t\t\tReleaseConfig: releaseConfig.ID(),\n\t\t\tInvocationConfig: \u0026dataform.RepositoryWorkflowConfigInvocationConfigArgs{\n\t\t\t\tIncludedTargets: dataform.RepositoryWorkflowConfigInvocationConfigIncludedTargetArray{\n\t\t\t\t\t\u0026dataform.RepositoryWorkflowConfigInvocationConfigIncludedTargetArgs{\n\t\t\t\t\t\tDatabase: pulumi.String(\"gcp-example-project\"),\n\t\t\t\t\t\tSchema: pulumi.String(\"example-dataset\"),\n\t\t\t\t\t\tName: pulumi.String(\"target_1\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataform.RepositoryWorkflowConfigInvocationConfigIncludedTargetArgs{\n\t\t\t\t\t\tDatabase: pulumi.String(\"gcp-example-project\"),\n\t\t\t\t\t\tSchema: pulumi.String(\"example-dataset\"),\n\t\t\t\t\t\tName: pulumi.String(\"target_2\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tIncludedTags: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"tag_1\"),\n\t\t\t\t},\n\t\t\t\tTransitiveDependenciesIncluded: pulumi.Bool(true),\n\t\t\t\tTransitiveDependentsIncluded: pulumi.Bool(true),\n\t\t\t\tFullyRefreshIncrementalTablesEnabled: pulumi.Bool(false),\n\t\t\t\tServiceAccount: dataformSa.Email,\n\t\t\t},\n\t\t\tCronSchedule: pulumi.String(\"0 7 * * *\"),\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.sourcerepo.Repository;\nimport com.pulumi.gcp.sourcerepo.RepositoryArgs;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.dataform.Repository;\nimport com.pulumi.gcp.dataform.RepositoryArgs;\nimport com.pulumi.gcp.dataform.inputs.RepositoryGitRemoteSettingsArgs;\nimport com.pulumi.gcp.dataform.inputs.RepositoryWorkspaceCompilationOverridesArgs;\nimport com.pulumi.gcp.dataform.RepositoryReleaseConfig;\nimport com.pulumi.gcp.dataform.RepositoryReleaseConfigArgs;\nimport com.pulumi.gcp.dataform.inputs.RepositoryReleaseConfigCodeCompilationConfigArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.dataform.RepositoryWorkflowConfig;\nimport com.pulumi.gcp.dataform.RepositoryWorkflowConfigArgs;\nimport com.pulumi.gcp.dataform.inputs.RepositoryWorkflowConfigInvocationConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var gitRepository = new Repository(\"gitRepository\", RepositoryArgs.builder()\n .name(\"my/repository\")\n .build());\n\n var secret = new Secret(\"secret\", SecretArgs.builder()\n .secretId(\"my_secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var secretVersion = new SecretVersion(\"secretVersion\", SecretVersionArgs.builder()\n .secret(secret.id())\n .secretData(\"secret-data\")\n .build());\n\n var repository = new Repository(\"repository\", RepositoryArgs.builder()\n .name(\"dataform_repository\")\n .region(\"us-central1\")\n .gitRemoteSettings(RepositoryGitRemoteSettingsArgs.builder()\n .url(gitRepository.url())\n .defaultBranch(\"main\")\n .authenticationTokenSecretVersion(secretVersion.id())\n .build())\n .workspaceCompilationOverrides(RepositoryWorkspaceCompilationOverridesArgs.builder()\n .defaultDatabase(\"database\")\n .schemaSuffix(\"_suffix\")\n .tablePrefix(\"prefix_\")\n .build())\n .build());\n\n var releaseConfig = new RepositoryReleaseConfig(\"releaseConfig\", RepositoryReleaseConfigArgs.builder()\n .project(repository.project())\n .region(repository.region())\n .repository(repository.name())\n .name(\"my_release\")\n .gitCommitish(\"main\")\n .cronSchedule(\"0 7 * * *\")\n .timeZone(\"America/New_York\")\n .codeCompilationConfig(RepositoryReleaseConfigCodeCompilationConfigArgs.builder()\n .defaultDatabase(\"gcp-example-project\")\n .defaultSchema(\"example-dataset\")\n .defaultLocation(\"us-central1\")\n .assertionSchema(\"example-assertion-dataset\")\n .databaseSuffix(\"\")\n .schemaSuffix(\"\")\n .tablePrefix(\"\")\n .vars(Map.of(\"var1\", \"value\"))\n .build())\n .build());\n\n var dataformSa = new Account(\"dataformSa\", AccountArgs.builder()\n .accountId(\"dataform-sa\")\n .displayName(\"Dataform Service Account\")\n .build());\n\n var workflow = new RepositoryWorkflowConfig(\"workflow\", RepositoryWorkflowConfigArgs.builder()\n .project(repository.project())\n .region(repository.region())\n .repository(repository.name())\n .name(\"my_workflow\")\n .releaseConfig(releaseConfig.id())\n .invocationConfig(RepositoryWorkflowConfigInvocationConfigArgs.builder()\n .includedTargets( \n RepositoryWorkflowConfigInvocationConfigIncludedTargetArgs.builder()\n .database(\"gcp-example-project\")\n .schema(\"example-dataset\")\n .name(\"target_1\")\n .build(),\n RepositoryWorkflowConfigInvocationConfigIncludedTargetArgs.builder()\n .database(\"gcp-example-project\")\n .schema(\"example-dataset\")\n .name(\"target_2\")\n .build())\n .includedTags(\"tag_1\")\n .transitiveDependenciesIncluded(true)\n .transitiveDependentsIncluded(true)\n .fullyRefreshIncrementalTablesEnabled(false)\n .serviceAccount(dataformSa.email())\n .build())\n .cronSchedule(\"0 7 * * *\")\n .timeZone(\"America/New_York\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n gitRepository:\n type: gcp:sourcerepo:Repository\n name: git_repository\n properties:\n name: my/repository\n secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: my_secret\n replication:\n auto: {}\n secretVersion:\n type: gcp:secretmanager:SecretVersion\n name: secret_version\n properties:\n secret: ${secret.id}\n secretData: secret-data\n repository:\n type: gcp:dataform:Repository\n properties:\n name: dataform_repository\n region: us-central1\n gitRemoteSettings:\n url: ${gitRepository.url}\n defaultBranch: main\n authenticationTokenSecretVersion: ${secretVersion.id}\n workspaceCompilationOverrides:\n defaultDatabase: database\n schemaSuffix: _suffix\n tablePrefix: prefix_\n releaseConfig:\n type: gcp:dataform:RepositoryReleaseConfig\n name: release_config\n properties:\n project: ${repository.project}\n region: ${repository.region}\n repository: ${repository.name}\n name: my_release\n gitCommitish: main\n cronSchedule: 0 7 * * *\n timeZone: America/New_York\n codeCompilationConfig:\n defaultDatabase: gcp-example-project\n defaultSchema: example-dataset\n defaultLocation: us-central1\n assertionSchema: example-assertion-dataset\n databaseSuffix:\n schemaSuffix:\n tablePrefix:\n vars:\n var1: value\n dataformSa:\n type: gcp:serviceaccount:Account\n name: dataform_sa\n properties:\n accountId: dataform-sa\n displayName: Dataform Service Account\n workflow:\n type: gcp:dataform:RepositoryWorkflowConfig\n properties:\n project: ${repository.project}\n region: ${repository.region}\n repository: ${repository.name}\n name: my_workflow\n releaseConfig: ${releaseConfig.id}\n invocationConfig:\n includedTargets:\n - database: gcp-example-project\n schema: example-dataset\n name: target_1\n - database: gcp-example-project\n schema: example-dataset\n name: target_2\n includedTags:\n - tag_1\n transitiveDependenciesIncluded: true\n transitiveDependentsIncluded: true\n fullyRefreshIncrementalTablesEnabled: false\n serviceAccount: ${dataformSa.email}\n cronSchedule: 0 7 * * *\n timeZone: America/New_York\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRepositoryWorkflowConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/repositories/{{repository}}/workflowConfigs/{{name}}`\n\n* `{{project}}/{{region}}/{{repository}}/{{name}}`\n\n* `{{region}}/{{repository}}/{{name}}`\n\n* `{{repository}}/{{name}}`\n\nWhen using the `pulumi import` command, RepositoryWorkflowConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataform/repositoryWorkflowConfig:RepositoryWorkflowConfig default projects/{{project}}/locations/{{region}}/repositories/{{repository}}/workflowConfigs/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataform/repositoryWorkflowConfig:RepositoryWorkflowConfig default {{project}}/{{region}}/{{repository}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataform/repositoryWorkflowConfig:RepositoryWorkflowConfig default {{region}}/{{repository}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataform/repositoryWorkflowConfig:RepositoryWorkflowConfig default {{repository}}/{{name}}\n```\n\n", "properties": { "cronSchedule": { "type": "string", @@ -180087,7 +180087,7 @@ } }, "gcp:datafusion/instance:Instance": { - "description": "Represents a Data Fusion instance.\n\n\nTo get more information about Instance, see:\n\n* [API documentation](https://cloud.google.com/data-fusion/docs/reference/rest/v1beta1/projects.locations.instances)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/data-fusion/docs/)\n\n## Example Usage\n\n### Data Fusion Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basicInstance = new gcp.datafusion.Instance(\"basic_instance\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_instance = gcp.datafusion.Instance(\"basic_instance\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basicInstance = new Gcp.DataFusion.Instance(\"basic_instance\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := datafusion.NewInstance(ctx, \"basic_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basicInstance = new Instance(\"basicInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicInstance:\n type: gcp:datafusion:Instance\n name: basic_instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.appengine.getDefaultServiceAccount({});\nconst network = new gcp.compute.Network(\"network\", {name: \"datafusion-full-network\"});\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"datafusion-ip-alloc\",\n addressType: \"INTERNAL\",\n purpose: \"VPC_PEERING\",\n prefixLength: 22,\n network: network.id,\n});\nconst extendedInstance = new gcp.datafusion.Instance(\"extended_instance\", {\n name: \"my-instance\",\n description: \"My Data Fusion instance\",\n displayName: \"My Data Fusion instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n enableStackdriverLogging: true,\n enableStackdriverMonitoring: true,\n privateInstance: true,\n dataprocServiceAccount: _default.then(_default =\u003e _default.email),\n labels: {\n example_key: \"example_value\",\n },\n networkConfig: {\n network: \"default\",\n ipAllocation: pulumi.interpolate`${privateIpAlloc.address}/${privateIpAlloc.prefixLength}`,\n },\n accelerators: [{\n acceleratorType: \"CDC\",\n state: \"ENABLED\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.appengine.get_default_service_account()\nnetwork = gcp.compute.Network(\"network\", name=\"datafusion-full-network\")\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"datafusion-ip-alloc\",\n address_type=\"INTERNAL\",\n purpose=\"VPC_PEERING\",\n prefix_length=22,\n network=network.id)\nextended_instance = gcp.datafusion.Instance(\"extended_instance\",\n name=\"my-instance\",\n description=\"My Data Fusion instance\",\n display_name=\"My Data Fusion instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n enable_stackdriver_logging=True,\n enable_stackdriver_monitoring=True,\n private_instance=True,\n dataproc_service_account=default.email,\n labels={\n \"example_key\": \"example_value\",\n },\n network_config={\n \"network\": \"default\",\n \"ip_allocation\": pulumi.Output.all(\n address=private_ip_alloc.address,\n prefix_length=private_ip_alloc.prefix_length\n).apply(lambda resolved_outputs: f\"{resolved_outputs['address']}/{resolved_outputs['prefix_length']}\")\n,\n },\n accelerators=[{\n \"accelerator_type\": \"CDC\",\n \"state\": \"ENABLED\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.AppEngine.GetDefaultServiceAccount.Invoke();\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"datafusion-full-network\",\n });\n\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"datafusion-ip-alloc\",\n AddressType = \"INTERNAL\",\n Purpose = \"VPC_PEERING\",\n PrefixLength = 22,\n Network = network.Id,\n });\n\n var extendedInstance = new Gcp.DataFusion.Instance(\"extended_instance\", new()\n {\n Name = \"my-instance\",\n Description = \"My Data Fusion instance\",\n DisplayName = \"My Data Fusion instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n EnableStackdriverLogging = true,\n EnableStackdriverMonitoring = true,\n PrivateInstance = true,\n DataprocServiceAccount = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Email)),\n Labels = \n {\n { \"example_key\", \"example_value\" },\n },\n NetworkConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigArgs\n {\n Network = \"default\",\n IpAllocation = Output.Tuple(privateIpAlloc.Address, privateIpAlloc.PrefixLength).Apply(values =\u003e\n {\n var address = values.Item1;\n var prefixLength = values.Item2;\n return $\"{address}/{prefixLength}\";\n }),\n },\n Accelerators = new[]\n {\n new Gcp.DataFusion.Inputs.InstanceAcceleratorArgs\n {\n AcceleratorType = \"CDC\",\n State = \"ENABLED\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/appengine\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := appengine.GetDefaultServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-full-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"datafusion-ip-alloc\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tPrefixLength: pulumi.Int(22),\n\t\t\tNetwork: network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"extended_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tDescription: pulumi.String(\"My Data Fusion instance\"),\n\t\t\tDisplayName: pulumi.String(\"My Data Fusion instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableStackdriverMonitoring: pulumi.Bool(true),\n\t\t\tPrivateInstance: pulumi.Bool(true),\n\t\t\tDataprocServiceAccount: pulumi.String(_default.Email),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"example_key\": pulumi.String(\"example_value\"),\n\t\t\t},\n\t\t\tNetworkConfig: \u0026datafusion.InstanceNetworkConfigArgs{\n\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\tIpAllocation: pulumi.All(privateIpAlloc.Address, privateIpAlloc.PrefixLength).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\taddress := _args[0].(string)\n\t\t\t\t\tprefixLength := _args[1].(int)\n\t\t\t\t\treturn fmt.Sprintf(\"%v/%v\", address, prefixLength), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t\tAccelerators: datafusion.InstanceAcceleratorArray{\n\t\t\t\t\u0026datafusion.InstanceAcceleratorArgs{\n\t\t\t\t\tAcceleratorType: pulumi.String(\"CDC\"),\n\t\t\t\t\tState: pulumi.String(\"ENABLED\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.appengine.AppengineFunctions;\nimport com.pulumi.gcp.appengine.inputs.GetDefaultServiceAccountArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceAcceleratorArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = AppengineFunctions.getDefaultServiceAccount();\n\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"datafusion-full-network\")\n .build());\n\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"datafusion-ip-alloc\")\n .addressType(\"INTERNAL\")\n .purpose(\"VPC_PEERING\")\n .prefixLength(22)\n .network(network.id())\n .build());\n\n var extendedInstance = new Instance(\"extendedInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .description(\"My Data Fusion instance\")\n .displayName(\"My Data Fusion instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .enableStackdriverLogging(true)\n .enableStackdriverMonitoring(true)\n .privateInstance(true)\n .dataprocServiceAccount(default_.email())\n .labels(Map.of(\"example_key\", \"example_value\"))\n .networkConfig(InstanceNetworkConfigArgs.builder()\n .network(\"default\")\n .ipAllocation(Output.tuple(privateIpAlloc.address(), privateIpAlloc.prefixLength()).applyValue(values -\u003e {\n var address = values.t1;\n var prefixLength = values.t2;\n return String.format(\"%s/%s\", address,prefixLength);\n }))\n .build())\n .accelerators(InstanceAcceleratorArgs.builder()\n .acceleratorType(\"CDC\")\n .state(\"ENABLED\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n extendedInstance:\n type: gcp:datafusion:Instance\n name: extended_instance\n properties:\n name: my-instance\n description: My Data Fusion instance\n displayName: My Data Fusion instance\n region: us-central1\n type: BASIC\n enableStackdriverLogging: true\n enableStackdriverMonitoring: true\n privateInstance: true\n dataprocServiceAccount: ${default.email}\n labels:\n example_key: example_value\n networkConfig:\n network: default\n ipAllocation: ${privateIpAlloc.address}/${privateIpAlloc.prefixLength}\n accelerators:\n - acceleratorType: CDC\n state: ENABLED\n network:\n type: gcp:compute:Network\n properties:\n name: datafusion-full-network\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: datafusion-ip-alloc\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 22\n network: ${network.id}\nvariables:\n default:\n fn::invoke:\n Function: gcp:appengine:getDefaultServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Psc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst psc = new gcp.compute.Network(\"psc\", {\n name: \"datafusion-psc-network\",\n autoCreateSubnetworks: false,\n});\nconst pscSubnetwork = new gcp.compute.Subnetwork(\"psc\", {\n name: \"datafusion-psc-subnet\",\n region: \"us-central1\",\n network: psc.id,\n ipCidrRange: \"10.0.0.0/16\",\n});\nconst pscNetworkAttachment = new gcp.compute.NetworkAttachment(\"psc\", {\n name: \"datafusion-psc-attachment\",\n region: \"us-central1\",\n connectionPreference: \"ACCEPT_AUTOMATIC\",\n subnetworks: [pscSubnetwork.selfLink],\n});\nconst pscInstance = new gcp.datafusion.Instance(\"psc_instance\", {\n name: \"psc-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n privateInstance: true,\n networkConfig: {\n connectionType: \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n privateServiceConnectConfig: {\n networkAttachment: pscNetworkAttachment.id,\n unreachableCidrBlock: \"192.168.0.0/25\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npsc = gcp.compute.Network(\"psc\",\n name=\"datafusion-psc-network\",\n auto_create_subnetworks=False)\npsc_subnetwork = gcp.compute.Subnetwork(\"psc\",\n name=\"datafusion-psc-subnet\",\n region=\"us-central1\",\n network=psc.id,\n ip_cidr_range=\"10.0.0.0/16\")\npsc_network_attachment = gcp.compute.NetworkAttachment(\"psc\",\n name=\"datafusion-psc-attachment\",\n region=\"us-central1\",\n connection_preference=\"ACCEPT_AUTOMATIC\",\n subnetworks=[psc_subnetwork.self_link])\npsc_instance = gcp.datafusion.Instance(\"psc_instance\",\n name=\"psc-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n private_instance=True,\n network_config={\n \"connection_type\": \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n \"private_service_connect_config\": {\n \"network_attachment\": psc_network_attachment.id,\n \"unreachable_cidr_block\": \"192.168.0.0/25\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var psc = new Gcp.Compute.Network(\"psc\", new()\n {\n Name = \"datafusion-psc-network\",\n AutoCreateSubnetworks = false,\n });\n\n var pscSubnetwork = new Gcp.Compute.Subnetwork(\"psc\", new()\n {\n Name = \"datafusion-psc-subnet\",\n Region = \"us-central1\",\n Network = psc.Id,\n IpCidrRange = \"10.0.0.0/16\",\n });\n\n var pscNetworkAttachment = new Gcp.Compute.NetworkAttachment(\"psc\", new()\n {\n Name = \"datafusion-psc-attachment\",\n Region = \"us-central1\",\n ConnectionPreference = \"ACCEPT_AUTOMATIC\",\n Subnetworks = new[]\n {\n pscSubnetwork.SelfLink,\n },\n });\n\n var pscInstance = new Gcp.DataFusion.Instance(\"psc_instance\", new()\n {\n Name = \"psc-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n PrivateInstance = true,\n NetworkConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigArgs\n {\n ConnectionType = \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n PrivateServiceConnectConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigPrivateServiceConnectConfigArgs\n {\n NetworkAttachment = pscNetworkAttachment.Id,\n UnreachableCidrBlock = \"192.168.0.0/25\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpsc, err := compute.NewNetwork(ctx, \"psc\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscSubnetwork, err := compute.NewSubnetwork(ctx, \"psc\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-subnet\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: psc.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscNetworkAttachment, err := compute.NewNetworkAttachment(ctx, \"psc\", \u0026compute.NetworkAttachmentArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-attachment\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tConnectionPreference: pulumi.String(\"ACCEPT_AUTOMATIC\"),\n\t\t\tSubnetworks: pulumi.StringArray{\n\t\t\t\tpscSubnetwork.SelfLink,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"psc_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"psc-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tPrivateInstance: pulumi.Bool(true),\n\t\t\tNetworkConfig: \u0026datafusion.InstanceNetworkConfigArgs{\n\t\t\t\tConnectionType: pulumi.String(\"PRIVATE_SERVICE_CONNECT_INTERFACES\"),\n\t\t\t\tPrivateServiceConnectConfig: \u0026datafusion.InstanceNetworkConfigPrivateServiceConnectConfigArgs{\n\t\t\t\t\tNetworkAttachment: pscNetworkAttachment.ID(),\n\t\t\t\t\tUnreachableCidrBlock: pulumi.String(\"192.168.0.0/25\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.NetworkAttachment;\nimport com.pulumi.gcp.compute.NetworkAttachmentArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigPrivateServiceConnectConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var psc = new Network(\"psc\", NetworkArgs.builder()\n .name(\"datafusion-psc-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var pscSubnetwork = new Subnetwork(\"pscSubnetwork\", SubnetworkArgs.builder()\n .name(\"datafusion-psc-subnet\")\n .region(\"us-central1\")\n .network(psc.id())\n .ipCidrRange(\"10.0.0.0/16\")\n .build());\n\n var pscNetworkAttachment = new NetworkAttachment(\"pscNetworkAttachment\", NetworkAttachmentArgs.builder()\n .name(\"datafusion-psc-attachment\")\n .region(\"us-central1\")\n .connectionPreference(\"ACCEPT_AUTOMATIC\")\n .subnetworks(pscSubnetwork.selfLink())\n .build());\n\n var pscInstance = new Instance(\"pscInstance\", InstanceArgs.builder()\n .name(\"psc-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .privateInstance(true)\n .networkConfig(InstanceNetworkConfigArgs.builder()\n .connectionType(\"PRIVATE_SERVICE_CONNECT_INTERFACES\")\n .privateServiceConnectConfig(InstanceNetworkConfigPrivateServiceConnectConfigArgs.builder()\n .networkAttachment(pscNetworkAttachment.id())\n .unreachableCidrBlock(\"192.168.0.0/25\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pscInstance:\n type: gcp:datafusion:Instance\n name: psc_instance\n properties:\n name: psc-instance\n region: us-central1\n type: BASIC\n privateInstance: true\n networkConfig:\n connectionType: PRIVATE_SERVICE_CONNECT_INTERFACES\n privateServiceConnectConfig:\n networkAttachment: ${pscNetworkAttachment.id}\n unreachableCidrBlock: 192.168.0.0/25\n psc:\n type: gcp:compute:Network\n properties:\n name: datafusion-psc-network\n autoCreateSubnetworks: false\n pscSubnetwork:\n type: gcp:compute:Subnetwork\n name: psc\n properties:\n name: datafusion-psc-subnet\n region: us-central1\n network: ${psc.id}\n ipCidrRange: 10.0.0.0/16\n pscNetworkAttachment:\n type: gcp:compute:NetworkAttachment\n name: psc\n properties:\n name: datafusion-psc-attachment\n region: us-central1\n connectionPreference: ACCEPT_AUTOMATIC\n subnetworks:\n - ${pscSubnetwork.selfLink}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"my-instance\",\n location: \"us-central1\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"my-instance\",\n keyRing: keyRing.id,\n});\nconst project = gcp.organizations.getProject({});\nconst cryptoKeyMember = new gcp.kms.CryptoKeyIAMMember(\"crypto_key_member\", {\n cryptoKeyId: cryptoKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-datafusion.iam.gserviceaccount.com`),\n});\nconst cmek = new gcp.datafusion.Instance(\"cmek\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n cryptoKeyConfig: {\n keyReference: cryptoKey.id,\n },\n}, {\n dependsOn: [cryptoKeyMember],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"my-instance\",\n location=\"us-central1\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"my-instance\",\n key_ring=key_ring.id)\nproject = gcp.organizations.get_project()\ncrypto_key_member = gcp.kms.CryptoKeyIAMMember(\"crypto_key_member\",\n crypto_key_id=crypto_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-datafusion.iam.gserviceaccount.com\")\ncmek = gcp.datafusion.Instance(\"cmek\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n crypto_key_config={\n \"key_reference\": crypto_key.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[crypto_key_member]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"my-instance\",\n Location = \"us-central1\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"my-instance\",\n KeyRing = keyRing.Id,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cryptoKeyMember = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key_member\", new()\n {\n CryptoKeyId = cryptoKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-datafusion.iam.gserviceaccount.com\",\n });\n\n var cmek = new Gcp.DataFusion.Instance(\"cmek\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n CryptoKeyConfig = new Gcp.DataFusion.Inputs.InstanceCryptoKeyConfigArgs\n {\n KeyReference = cryptoKey.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cryptoKeyMember,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKeyMember, err := kms.NewCryptoKeyIAMMember(ctx, \"crypto_key_member\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: cryptoKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-datafusion.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"cmek\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tCryptoKeyConfig: \u0026datafusion.InstanceCryptoKeyConfigArgs{\n\t\t\t\tKeyReference: cryptoKey.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcryptoKeyMember,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceCryptoKeyConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"my-instance\")\n .location(\"us-central1\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"my-instance\")\n .keyRing(keyRing.id())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var cryptoKeyMember = new CryptoKeyIAMMember(\"cryptoKeyMember\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(cryptoKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-datafusion.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var cmek = new Instance(\"cmek\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .cryptoKeyConfig(InstanceCryptoKeyConfigArgs.builder()\n .keyReference(cryptoKey.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(cryptoKeyMember)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cmek:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n cryptoKeyConfig:\n keyReference: ${cryptoKey.id}\n options:\n dependson:\n - ${cryptoKeyMember}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: my-instance\n keyRing: ${keyRing.id}\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: my-instance\n location: us-central1\n cryptoKeyMember:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key_member\n properties:\n cryptoKeyId: ${cryptoKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-datafusion.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Enterprise\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst enterpriseInstance = new gcp.datafusion.Instance(\"enterprise_instance\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"ENTERPRISE\",\n enableRbac: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nenterprise_instance = gcp.datafusion.Instance(\"enterprise_instance\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"ENTERPRISE\",\n enable_rbac=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var enterpriseInstance = new Gcp.DataFusion.Instance(\"enterprise_instance\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"ENTERPRISE\",\n EnableRbac = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := datafusion.NewInstance(ctx, \"enterprise_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"ENTERPRISE\"),\n\t\t\tEnableRbac: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var enterpriseInstance = new Instance(\"enterpriseInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"ENTERPRISE\")\n .enableRbac(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n enterpriseInstance:\n type: gcp:datafusion:Instance\n name: enterprise_instance\n properties:\n name: my-instance\n region: us-central1\n type: ENTERPRISE\n enableRbac: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Event\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst eventTopic = new gcp.pubsub.Topic(\"event\", {name: \"my-instance\"});\nconst event = new gcp.datafusion.Instance(\"event\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n eventPublishConfig: {\n enabled: true,\n topic: eventTopic.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nevent_topic = gcp.pubsub.Topic(\"event\", name=\"my-instance\")\nevent = gcp.datafusion.Instance(\"event\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n event_publish_config={\n \"enabled\": True,\n \"topic\": event_topic.id,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var eventTopic = new Gcp.PubSub.Topic(\"event\", new()\n {\n Name = \"my-instance\",\n });\n\n var @event = new Gcp.DataFusion.Instance(\"event\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n EventPublishConfig = new Gcp.DataFusion.Inputs.InstanceEventPublishConfigArgs\n {\n Enabled = true,\n Topic = eventTopic.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\teventTopic, err := pubsub.NewTopic(ctx, \"event\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"event\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tEventPublishConfig: \u0026datafusion.InstanceEventPublishConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\tTopic: eventTopic.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceEventPublishConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var eventTopic = new Topic(\"eventTopic\", TopicArgs.builder()\n .name(\"my-instance\")\n .build());\n\n var event = new Instance(\"event\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .eventPublishConfig(InstanceEventPublishConfigArgs.builder()\n .enabled(true)\n .topic(eventTopic.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n event:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n eventPublishConfig:\n enabled: true\n topic: ${eventTopic.id}\n eventTopic:\n type: gcp:pubsub:Topic\n name: event\n properties:\n name: my-instance\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Zone\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst zone = new gcp.datafusion.Instance(\"zone\", {\n name: \"my-instance\",\n region: \"us-central1\",\n zone: \"us-central1-a\",\n type: \"DEVELOPER\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nzone = gcp.datafusion.Instance(\"zone\",\n name=\"my-instance\",\n region=\"us-central1\",\n zone=\"us-central1-a\",\n type=\"DEVELOPER\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var zone = new Gcp.DataFusion.Instance(\"zone\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Zone = \"us-central1-a\",\n Type = \"DEVELOPER\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := datafusion.NewInstance(ctx, \"zone\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tType: pulumi.String(\"DEVELOPER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var zone = new Instance(\"zone\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .zone(\"us-central1-a\")\n .type(\"DEVELOPER\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n zone:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n zone: us-central1-a\n type: DEVELOPER\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/instances/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:datafusion/instance:Instance default projects/{{project}}/locations/{{region}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:datafusion/instance:Instance default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:datafusion/instance:Instance default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:datafusion/instance:Instance default {{name}}\n```\n\n", + "description": "Represents a Data Fusion instance.\n\n\nTo get more information about Instance, see:\n\n* [API documentation](https://cloud.google.com/data-fusion/docs/reference/rest/v1beta1/projects.locations.instances)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/data-fusion/docs/)\n\n## Example Usage\n\n### Data Fusion Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basicInstance = new gcp.datafusion.Instance(\"basic_instance\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_instance = gcp.datafusion.Instance(\"basic_instance\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basicInstance = new Gcp.DataFusion.Instance(\"basic_instance\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := datafusion.NewInstance(ctx, \"basic_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basicInstance = new Instance(\"basicInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicInstance:\n type: gcp:datafusion:Instance\n name: basic_instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.appengine.getDefaultServiceAccount({});\nconst network = new gcp.compute.Network(\"network\", {name: \"datafusion-full-network\"});\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"datafusion-ip-alloc\",\n addressType: \"INTERNAL\",\n purpose: \"VPC_PEERING\",\n prefixLength: 22,\n network: network.id,\n});\nconst extendedInstance = new gcp.datafusion.Instance(\"extended_instance\", {\n name: \"my-instance\",\n description: \"My Data Fusion instance\",\n displayName: \"My Data Fusion instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n enableStackdriverLogging: true,\n enableStackdriverMonitoring: true,\n privateInstance: true,\n dataprocServiceAccount: _default.then(_default =\u003e _default.email),\n labels: {\n example_key: \"example_value\",\n },\n networkConfig: {\n network: \"default\",\n ipAllocation: pulumi.interpolate`${privateIpAlloc.address}/${privateIpAlloc.prefixLength}`,\n },\n accelerators: [{\n acceleratorType: \"CDC\",\n state: \"ENABLED\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.appengine.get_default_service_account()\nnetwork = gcp.compute.Network(\"network\", name=\"datafusion-full-network\")\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"datafusion-ip-alloc\",\n address_type=\"INTERNAL\",\n purpose=\"VPC_PEERING\",\n prefix_length=22,\n network=network.id)\nextended_instance = gcp.datafusion.Instance(\"extended_instance\",\n name=\"my-instance\",\n description=\"My Data Fusion instance\",\n display_name=\"My Data Fusion instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n enable_stackdriver_logging=True,\n enable_stackdriver_monitoring=True,\n private_instance=True,\n dataproc_service_account=default.email,\n labels={\n \"example_key\": \"example_value\",\n },\n network_config={\n \"network\": \"default\",\n \"ip_allocation\": pulumi.Output.all(\n address=private_ip_alloc.address,\n prefix_length=private_ip_alloc.prefix_length\n).apply(lambda resolved_outputs: f\"{resolved_outputs['address']}/{resolved_outputs['prefix_length']}\")\n,\n },\n accelerators=[{\n \"accelerator_type\": \"CDC\",\n \"state\": \"ENABLED\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.AppEngine.GetDefaultServiceAccount.Invoke();\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"datafusion-full-network\",\n });\n\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"datafusion-ip-alloc\",\n AddressType = \"INTERNAL\",\n Purpose = \"VPC_PEERING\",\n PrefixLength = 22,\n Network = network.Id,\n });\n\n var extendedInstance = new Gcp.DataFusion.Instance(\"extended_instance\", new()\n {\n Name = \"my-instance\",\n Description = \"My Data Fusion instance\",\n DisplayName = \"My Data Fusion instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n EnableStackdriverLogging = true,\n EnableStackdriverMonitoring = true,\n PrivateInstance = true,\n DataprocServiceAccount = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Email)),\n Labels = \n {\n { \"example_key\", \"example_value\" },\n },\n NetworkConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigArgs\n {\n Network = \"default\",\n IpAllocation = Output.Tuple(privateIpAlloc.Address, privateIpAlloc.PrefixLength).Apply(values =\u003e\n {\n var address = values.Item1;\n var prefixLength = values.Item2;\n return $\"{address}/{prefixLength}\";\n }),\n },\n Accelerators = new[]\n {\n new Gcp.DataFusion.Inputs.InstanceAcceleratorArgs\n {\n AcceleratorType = \"CDC\",\n State = \"ENABLED\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/appengine\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := appengine.GetDefaultServiceAccount(ctx, \u0026appengine.GetDefaultServiceAccountArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-full-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"datafusion-ip-alloc\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tPrefixLength: pulumi.Int(22),\n\t\t\tNetwork: network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"extended_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tDescription: pulumi.String(\"My Data Fusion instance\"),\n\t\t\tDisplayName: pulumi.String(\"My Data Fusion instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableStackdriverMonitoring: pulumi.Bool(true),\n\t\t\tPrivateInstance: pulumi.Bool(true),\n\t\t\tDataprocServiceAccount: pulumi.String(_default.Email),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"example_key\": pulumi.String(\"example_value\"),\n\t\t\t},\n\t\t\tNetworkConfig: \u0026datafusion.InstanceNetworkConfigArgs{\n\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\tIpAllocation: pulumi.All(privateIpAlloc.Address, privateIpAlloc.PrefixLength).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\taddress := _args[0].(string)\n\t\t\t\t\tprefixLength := _args[1].(int)\n\t\t\t\t\treturn fmt.Sprintf(\"%v/%v\", address, prefixLength), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t\tAccelerators: datafusion.InstanceAcceleratorArray{\n\t\t\t\t\u0026datafusion.InstanceAcceleratorArgs{\n\t\t\t\t\tAcceleratorType: pulumi.String(\"CDC\"),\n\t\t\t\t\tState: pulumi.String(\"ENABLED\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.appengine.AppengineFunctions;\nimport com.pulumi.gcp.appengine.inputs.GetDefaultServiceAccountArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceAcceleratorArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = AppengineFunctions.getDefaultServiceAccount();\n\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"datafusion-full-network\")\n .build());\n\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"datafusion-ip-alloc\")\n .addressType(\"INTERNAL\")\n .purpose(\"VPC_PEERING\")\n .prefixLength(22)\n .network(network.id())\n .build());\n\n var extendedInstance = new Instance(\"extendedInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .description(\"My Data Fusion instance\")\n .displayName(\"My Data Fusion instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .enableStackdriverLogging(true)\n .enableStackdriverMonitoring(true)\n .privateInstance(true)\n .dataprocServiceAccount(default_.email())\n .labels(Map.of(\"example_key\", \"example_value\"))\n .networkConfig(InstanceNetworkConfigArgs.builder()\n .network(\"default\")\n .ipAllocation(Output.tuple(privateIpAlloc.address(), privateIpAlloc.prefixLength()).applyValue(values -\u003e {\n var address = values.t1;\n var prefixLength = values.t2;\n return String.format(\"%s/%s\", address,prefixLength);\n }))\n .build())\n .accelerators(InstanceAcceleratorArgs.builder()\n .acceleratorType(\"CDC\")\n .state(\"ENABLED\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n extendedInstance:\n type: gcp:datafusion:Instance\n name: extended_instance\n properties:\n name: my-instance\n description: My Data Fusion instance\n displayName: My Data Fusion instance\n region: us-central1\n type: BASIC\n enableStackdriverLogging: true\n enableStackdriverMonitoring: true\n privateInstance: true\n dataprocServiceAccount: ${default.email}\n labels:\n example_key: example_value\n networkConfig:\n network: default\n ipAllocation: ${privateIpAlloc.address}/${privateIpAlloc.prefixLength}\n accelerators:\n - acceleratorType: CDC\n state: ENABLED\n network:\n type: gcp:compute:Network\n properties:\n name: datafusion-full-network\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: datafusion-ip-alloc\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 22\n network: ${network.id}\nvariables:\n default:\n fn::invoke:\n Function: gcp:appengine:getDefaultServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Psc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst psc = new gcp.compute.Network(\"psc\", {\n name: \"datafusion-psc-network\",\n autoCreateSubnetworks: false,\n});\nconst pscSubnetwork = new gcp.compute.Subnetwork(\"psc\", {\n name: \"datafusion-psc-subnet\",\n region: \"us-central1\",\n network: psc.id,\n ipCidrRange: \"10.0.0.0/16\",\n});\nconst pscNetworkAttachment = new gcp.compute.NetworkAttachment(\"psc\", {\n name: \"datafusion-psc-attachment\",\n region: \"us-central1\",\n connectionPreference: \"ACCEPT_AUTOMATIC\",\n subnetworks: [pscSubnetwork.selfLink],\n});\nconst pscInstance = new gcp.datafusion.Instance(\"psc_instance\", {\n name: \"psc-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n privateInstance: true,\n networkConfig: {\n connectionType: \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n privateServiceConnectConfig: {\n networkAttachment: pscNetworkAttachment.id,\n unreachableCidrBlock: \"192.168.0.0/25\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npsc = gcp.compute.Network(\"psc\",\n name=\"datafusion-psc-network\",\n auto_create_subnetworks=False)\npsc_subnetwork = gcp.compute.Subnetwork(\"psc\",\n name=\"datafusion-psc-subnet\",\n region=\"us-central1\",\n network=psc.id,\n ip_cidr_range=\"10.0.0.0/16\")\npsc_network_attachment = gcp.compute.NetworkAttachment(\"psc\",\n name=\"datafusion-psc-attachment\",\n region=\"us-central1\",\n connection_preference=\"ACCEPT_AUTOMATIC\",\n subnetworks=[psc_subnetwork.self_link])\npsc_instance = gcp.datafusion.Instance(\"psc_instance\",\n name=\"psc-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n private_instance=True,\n network_config={\n \"connection_type\": \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n \"private_service_connect_config\": {\n \"network_attachment\": psc_network_attachment.id,\n \"unreachable_cidr_block\": \"192.168.0.0/25\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var psc = new Gcp.Compute.Network(\"psc\", new()\n {\n Name = \"datafusion-psc-network\",\n AutoCreateSubnetworks = false,\n });\n\n var pscSubnetwork = new Gcp.Compute.Subnetwork(\"psc\", new()\n {\n Name = \"datafusion-psc-subnet\",\n Region = \"us-central1\",\n Network = psc.Id,\n IpCidrRange = \"10.0.0.0/16\",\n });\n\n var pscNetworkAttachment = new Gcp.Compute.NetworkAttachment(\"psc\", new()\n {\n Name = \"datafusion-psc-attachment\",\n Region = \"us-central1\",\n ConnectionPreference = \"ACCEPT_AUTOMATIC\",\n Subnetworks = new[]\n {\n pscSubnetwork.SelfLink,\n },\n });\n\n var pscInstance = new Gcp.DataFusion.Instance(\"psc_instance\", new()\n {\n Name = \"psc-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n PrivateInstance = true,\n NetworkConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigArgs\n {\n ConnectionType = \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n PrivateServiceConnectConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigPrivateServiceConnectConfigArgs\n {\n NetworkAttachment = pscNetworkAttachment.Id,\n UnreachableCidrBlock = \"192.168.0.0/25\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpsc, err := compute.NewNetwork(ctx, \"psc\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscSubnetwork, err := compute.NewSubnetwork(ctx, \"psc\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-subnet\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: psc.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscNetworkAttachment, err := compute.NewNetworkAttachment(ctx, \"psc\", \u0026compute.NetworkAttachmentArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-attachment\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tConnectionPreference: pulumi.String(\"ACCEPT_AUTOMATIC\"),\n\t\t\tSubnetworks: pulumi.StringArray{\n\t\t\t\tpscSubnetwork.SelfLink,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"psc_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"psc-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tPrivateInstance: pulumi.Bool(true),\n\t\t\tNetworkConfig: \u0026datafusion.InstanceNetworkConfigArgs{\n\t\t\t\tConnectionType: pulumi.String(\"PRIVATE_SERVICE_CONNECT_INTERFACES\"),\n\t\t\t\tPrivateServiceConnectConfig: \u0026datafusion.InstanceNetworkConfigPrivateServiceConnectConfigArgs{\n\t\t\t\t\tNetworkAttachment: pscNetworkAttachment.ID(),\n\t\t\t\t\tUnreachableCidrBlock: pulumi.String(\"192.168.0.0/25\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.NetworkAttachment;\nimport com.pulumi.gcp.compute.NetworkAttachmentArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigPrivateServiceConnectConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var psc = new Network(\"psc\", NetworkArgs.builder()\n .name(\"datafusion-psc-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var pscSubnetwork = new Subnetwork(\"pscSubnetwork\", SubnetworkArgs.builder()\n .name(\"datafusion-psc-subnet\")\n .region(\"us-central1\")\n .network(psc.id())\n .ipCidrRange(\"10.0.0.0/16\")\n .build());\n\n var pscNetworkAttachment = new NetworkAttachment(\"pscNetworkAttachment\", NetworkAttachmentArgs.builder()\n .name(\"datafusion-psc-attachment\")\n .region(\"us-central1\")\n .connectionPreference(\"ACCEPT_AUTOMATIC\")\n .subnetworks(pscSubnetwork.selfLink())\n .build());\n\n var pscInstance = new Instance(\"pscInstance\", InstanceArgs.builder()\n .name(\"psc-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .privateInstance(true)\n .networkConfig(InstanceNetworkConfigArgs.builder()\n .connectionType(\"PRIVATE_SERVICE_CONNECT_INTERFACES\")\n .privateServiceConnectConfig(InstanceNetworkConfigPrivateServiceConnectConfigArgs.builder()\n .networkAttachment(pscNetworkAttachment.id())\n .unreachableCidrBlock(\"192.168.0.0/25\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pscInstance:\n type: gcp:datafusion:Instance\n name: psc_instance\n properties:\n name: psc-instance\n region: us-central1\n type: BASIC\n privateInstance: true\n networkConfig:\n connectionType: PRIVATE_SERVICE_CONNECT_INTERFACES\n privateServiceConnectConfig:\n networkAttachment: ${pscNetworkAttachment.id}\n unreachableCidrBlock: 192.168.0.0/25\n psc:\n type: gcp:compute:Network\n properties:\n name: datafusion-psc-network\n autoCreateSubnetworks: false\n pscSubnetwork:\n type: gcp:compute:Subnetwork\n name: psc\n properties:\n name: datafusion-psc-subnet\n region: us-central1\n network: ${psc.id}\n ipCidrRange: 10.0.0.0/16\n pscNetworkAttachment:\n type: gcp:compute:NetworkAttachment\n name: psc\n properties:\n name: datafusion-psc-attachment\n region: us-central1\n connectionPreference: ACCEPT_AUTOMATIC\n subnetworks:\n - ${pscSubnetwork.selfLink}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"my-instance\",\n location: \"us-central1\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"my-instance\",\n keyRing: keyRing.id,\n});\nconst project = gcp.organizations.getProject({});\nconst cryptoKeyMember = new gcp.kms.CryptoKeyIAMMember(\"crypto_key_member\", {\n cryptoKeyId: cryptoKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-datafusion.iam.gserviceaccount.com`),\n});\nconst cmek = new gcp.datafusion.Instance(\"cmek\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n cryptoKeyConfig: {\n keyReference: cryptoKey.id,\n },\n}, {\n dependsOn: [cryptoKeyMember],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"my-instance\",\n location=\"us-central1\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"my-instance\",\n key_ring=key_ring.id)\nproject = gcp.organizations.get_project()\ncrypto_key_member = gcp.kms.CryptoKeyIAMMember(\"crypto_key_member\",\n crypto_key_id=crypto_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-datafusion.iam.gserviceaccount.com\")\ncmek = gcp.datafusion.Instance(\"cmek\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n crypto_key_config={\n \"key_reference\": crypto_key.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[crypto_key_member]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"my-instance\",\n Location = \"us-central1\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"my-instance\",\n KeyRing = keyRing.Id,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cryptoKeyMember = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key_member\", new()\n {\n CryptoKeyId = cryptoKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-datafusion.iam.gserviceaccount.com\",\n });\n\n var cmek = new Gcp.DataFusion.Instance(\"cmek\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n CryptoKeyConfig = new Gcp.DataFusion.Inputs.InstanceCryptoKeyConfigArgs\n {\n KeyReference = cryptoKey.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cryptoKeyMember,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKeyMember, err := kms.NewCryptoKeyIAMMember(ctx, \"crypto_key_member\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: cryptoKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-datafusion.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"cmek\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tCryptoKeyConfig: \u0026datafusion.InstanceCryptoKeyConfigArgs{\n\t\t\t\tKeyReference: cryptoKey.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcryptoKeyMember,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceCryptoKeyConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"my-instance\")\n .location(\"us-central1\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"my-instance\")\n .keyRing(keyRing.id())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var cryptoKeyMember = new CryptoKeyIAMMember(\"cryptoKeyMember\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(cryptoKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-datafusion.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var cmek = new Instance(\"cmek\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .cryptoKeyConfig(InstanceCryptoKeyConfigArgs.builder()\n .keyReference(cryptoKey.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(cryptoKeyMember)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cmek:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n cryptoKeyConfig:\n keyReference: ${cryptoKey.id}\n options:\n dependson:\n - ${cryptoKeyMember}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: my-instance\n keyRing: ${keyRing.id}\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: my-instance\n location: us-central1\n cryptoKeyMember:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key_member\n properties:\n cryptoKeyId: ${cryptoKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-datafusion.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Enterprise\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst enterpriseInstance = new gcp.datafusion.Instance(\"enterprise_instance\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"ENTERPRISE\",\n enableRbac: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nenterprise_instance = gcp.datafusion.Instance(\"enterprise_instance\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"ENTERPRISE\",\n enable_rbac=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var enterpriseInstance = new Gcp.DataFusion.Instance(\"enterprise_instance\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"ENTERPRISE\",\n EnableRbac = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := datafusion.NewInstance(ctx, \"enterprise_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"ENTERPRISE\"),\n\t\t\tEnableRbac: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var enterpriseInstance = new Instance(\"enterpriseInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"ENTERPRISE\")\n .enableRbac(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n enterpriseInstance:\n type: gcp:datafusion:Instance\n name: enterprise_instance\n properties:\n name: my-instance\n region: us-central1\n type: ENTERPRISE\n enableRbac: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Event\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst eventTopic = new gcp.pubsub.Topic(\"event\", {name: \"my-instance\"});\nconst event = new gcp.datafusion.Instance(\"event\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n eventPublishConfig: {\n enabled: true,\n topic: eventTopic.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nevent_topic = gcp.pubsub.Topic(\"event\", name=\"my-instance\")\nevent = gcp.datafusion.Instance(\"event\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n event_publish_config={\n \"enabled\": True,\n \"topic\": event_topic.id,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var eventTopic = new Gcp.PubSub.Topic(\"event\", new()\n {\n Name = \"my-instance\",\n });\n\n var @event = new Gcp.DataFusion.Instance(\"event\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n EventPublishConfig = new Gcp.DataFusion.Inputs.InstanceEventPublishConfigArgs\n {\n Enabled = true,\n Topic = eventTopic.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\teventTopic, err := pubsub.NewTopic(ctx, \"event\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"event\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tEventPublishConfig: \u0026datafusion.InstanceEventPublishConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\tTopic: eventTopic.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceEventPublishConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var eventTopic = new Topic(\"eventTopic\", TopicArgs.builder()\n .name(\"my-instance\")\n .build());\n\n var event = new Instance(\"event\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .eventPublishConfig(InstanceEventPublishConfigArgs.builder()\n .enabled(true)\n .topic(eventTopic.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n event:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n eventPublishConfig:\n enabled: true\n topic: ${eventTopic.id}\n eventTopic:\n type: gcp:pubsub:Topic\n name: event\n properties:\n name: my-instance\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Zone\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst zone = new gcp.datafusion.Instance(\"zone\", {\n name: \"my-instance\",\n region: \"us-central1\",\n zone: \"us-central1-a\",\n type: \"DEVELOPER\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nzone = gcp.datafusion.Instance(\"zone\",\n name=\"my-instance\",\n region=\"us-central1\",\n zone=\"us-central1-a\",\n type=\"DEVELOPER\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var zone = new Gcp.DataFusion.Instance(\"zone\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Zone = \"us-central1-a\",\n Type = \"DEVELOPER\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := datafusion.NewInstance(ctx, \"zone\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tType: pulumi.String(\"DEVELOPER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var zone = new Instance(\"zone\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .zone(\"us-central1-a\")\n .type(\"DEVELOPER\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n zone:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n zone: us-central1-a\n type: DEVELOPER\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/instances/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:datafusion/instance:Instance default projects/{{project}}/locations/{{region}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:datafusion/instance:Instance default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:datafusion/instance:Instance default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:datafusion/instance:Instance default {{name}}\n```\n\n", "properties": { "accelerators": { "type": "array", @@ -180517,7 +180517,7 @@ } }, "gcp:dataloss/preventionDeidentifyTemplate:PreventionDeidentifyTemplate": { - "description": "Allows creation of templates to de-identify content.\n\n\nTo get more information about DeidentifyTemplate, see:\n\n* [API documentation](https://cloud.google.com/dlp/docs/reference/rest/v2/projects.deidentifyTemplates)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dlp/docs/concepts-templates)\n\n\n\n## Example Usage\n\n### Dlp Deidentify Template Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.dataloss.PreventionDeidentifyTemplate(\"basic\", {\n parent: \"projects/my-project-name\",\n description: \"Description\",\n displayName: \"Displayname\",\n deidentifyConfig: {\n infoTypeTransformations: {\n transformations: [\n {\n infoTypes: [{\n name: \"FIRST_NAME\",\n }],\n primitiveTransformation: {\n replaceWithInfoTypeConfig: true,\n },\n },\n {\n infoTypes: [\n {\n name: \"PHONE_NUMBER\",\n },\n {\n name: \"AGE\",\n },\n ],\n primitiveTransformation: {\n replaceConfig: {\n newValue: {\n integerValue: 9,\n },\n },\n },\n },\n {\n infoTypes: [\n {\n name: \"EMAIL_ADDRESS\",\n },\n {\n name: \"LAST_NAME\",\n },\n ],\n primitiveTransformation: {\n characterMaskConfig: {\n maskingCharacter: \"X\",\n numberToMask: 4,\n reverseOrder: true,\n charactersToIgnores: [{\n commonCharactersToIgnore: \"PUNCTUATION\",\n }],\n },\n },\n },\n {\n infoTypes: [{\n name: \"DATE_OF_BIRTH\",\n }],\n primitiveTransformation: {\n replaceConfig: {\n newValue: {\n dateValue: {\n year: 2020,\n month: 1,\n day: 1,\n },\n },\n },\n },\n },\n {\n infoTypes: [{\n name: \"CREDIT_CARD_NUMBER\",\n }],\n primitiveTransformation: {\n cryptoDeterministicConfig: {\n context: {\n name: \"sometweak\",\n },\n cryptoKey: {\n transient: {\n name: \"beep\",\n },\n },\n surrogateInfoType: {\n name: \"abc\",\n },\n },\n },\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.dataloss.PreventionDeidentifyTemplate(\"basic\",\n parent=\"projects/my-project-name\",\n description=\"Description\",\n display_name=\"Displayname\",\n deidentify_config={\n \"info_type_transformations\": {\n \"transformations\": [\n {\n \"info_types\": [{\n \"name\": \"FIRST_NAME\",\n }],\n \"primitive_transformation\": {\n \"replace_with_info_type_config\": True,\n },\n },\n {\n \"info_types\": [\n {\n \"name\": \"PHONE_NUMBER\",\n },\n {\n \"name\": \"AGE\",\n },\n ],\n \"primitive_transformation\": {\n \"replace_config\": {\n \"new_value\": {\n \"integer_value\": 9,\n },\n },\n },\n },\n {\n \"info_types\": [\n {\n \"name\": \"EMAIL_ADDRESS\",\n },\n {\n \"name\": \"LAST_NAME\",\n },\n ],\n \"primitive_transformation\": {\n \"character_mask_config\": {\n \"masking_character\": \"X\",\n \"number_to_mask\": 4,\n \"reverse_order\": True,\n \"characters_to_ignores\": [{\n \"common_characters_to_ignore\": \"PUNCTUATION\",\n }],\n },\n },\n },\n {\n \"info_types\": [{\n \"name\": \"DATE_OF_BIRTH\",\n }],\n \"primitive_transformation\": {\n \"replace_config\": {\n \"new_value\": {\n \"date_value\": {\n \"year\": 2020,\n \"month\": 1,\n \"day\": 1,\n },\n },\n },\n },\n },\n {\n \"info_types\": [{\n \"name\": \"CREDIT_CARD_NUMBER\",\n }],\n \"primitive_transformation\": {\n \"crypto_deterministic_config\": {\n \"context\": {\n \"name\": \"sometweak\",\n },\n \"crypto_key\": {\n \"transient\": {\n \"name\": \"beep\",\n },\n },\n \"surrogate_info_type\": {\n \"name\": \"abc\",\n },\n },\n },\n },\n ],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basic = new Gcp.DataLoss.PreventionDeidentifyTemplate(\"basic\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description\",\n DisplayName = \"Displayname\",\n DeidentifyConfig = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigArgs\n {\n InfoTypeTransformations = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsArgs\n {\n Transformations = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs\n {\n Name = \"FIRST_NAME\",\n },\n },\n PrimitiveTransformation = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs\n {\n ReplaceWithInfoTypeConfig = true,\n },\n },\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs\n {\n Name = \"PHONE_NUMBER\",\n },\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs\n {\n Name = \"AGE\",\n },\n },\n PrimitiveTransformation = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs\n {\n ReplaceConfig = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigArgs\n {\n NewValue = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigNewValueArgs\n {\n IntegerValue = 9,\n },\n },\n },\n },\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs\n {\n Name = \"EMAIL_ADDRESS\",\n },\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs\n {\n Name = \"LAST_NAME\",\n },\n },\n PrimitiveTransformation = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs\n {\n CharacterMaskConfig = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCharacterMaskConfigArgs\n {\n MaskingCharacter = \"X\",\n NumberToMask = 4,\n ReverseOrder = true,\n CharactersToIgnores = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCharacterMaskConfigCharactersToIgnoreArgs\n {\n CommonCharactersToIgnore = \"PUNCTUATION\",\n },\n },\n },\n },\n },\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs\n {\n Name = \"DATE_OF_BIRTH\",\n },\n },\n PrimitiveTransformation = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs\n {\n ReplaceConfig = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigArgs\n {\n NewValue = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigNewValueArgs\n {\n DateValue = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigNewValueDateValueArgs\n {\n Year = 2020,\n Month = 1,\n Day = 1,\n },\n },\n },\n },\n },\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs\n {\n Name = \"CREDIT_CARD_NUMBER\",\n },\n },\n PrimitiveTransformation = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs\n {\n CryptoDeterministicConfig = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigArgs\n {\n Context = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigContextArgs\n {\n Name = \"sometweak\",\n },\n CryptoKey = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigCryptoKeyArgs\n {\n Transient = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigCryptoKeyTransientArgs\n {\n Name = \"beep\",\n },\n },\n SurrogateInfoType = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigSurrogateInfoTypeArgs\n {\n Name = \"abc\",\n },\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataloss.NewPreventionDeidentifyTemplate(ctx, \"basic\", \u0026dataloss.PreventionDeidentifyTemplateArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"Description\"),\n\t\t\tDisplayName: pulumi.String(\"Displayname\"),\n\t\t\tDeidentifyConfig: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigArgs{\n\t\t\t\tInfoTypeTransformations: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsArgs{\n\t\t\t\t\tTransformations: dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArray{\n\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs{\n\t\t\t\t\t\t\tInfoTypes: dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArray{\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"FIRST_NAME\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tPrimitiveTransformation: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs{\n\t\t\t\t\t\t\t\tReplaceWithInfoTypeConfig: pulumi.Bool(true),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs{\n\t\t\t\t\t\t\tInfoTypes: dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArray{\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"PHONE_NUMBER\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"AGE\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tPrimitiveTransformation: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs{\n\t\t\t\t\t\t\t\tReplaceConfig: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigArgs{\n\t\t\t\t\t\t\t\t\tNewValue: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigNewValueArgs{\n\t\t\t\t\t\t\t\t\t\tIntegerValue: pulumi.Int(9),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs{\n\t\t\t\t\t\t\tInfoTypes: dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArray{\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"EMAIL_ADDRESS\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"LAST_NAME\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tPrimitiveTransformation: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs{\n\t\t\t\t\t\t\t\tCharacterMaskConfig: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCharacterMaskConfigArgs{\n\t\t\t\t\t\t\t\t\tMaskingCharacter: pulumi.String(\"X\"),\n\t\t\t\t\t\t\t\t\tNumberToMask: pulumi.Int(4),\n\t\t\t\t\t\t\t\t\tReverseOrder: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tCharactersToIgnores: dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCharacterMaskConfigCharactersToIgnoreArray{\n\t\t\t\t\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCharacterMaskConfigCharactersToIgnoreArgs{\n\t\t\t\t\t\t\t\t\t\t\tCommonCharactersToIgnore: pulumi.String(\"PUNCTUATION\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs{\n\t\t\t\t\t\t\tInfoTypes: dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArray{\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"DATE_OF_BIRTH\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tPrimitiveTransformation: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs{\n\t\t\t\t\t\t\t\tReplaceConfig: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigArgs{\n\t\t\t\t\t\t\t\t\tNewValue: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigNewValueArgs{\n\t\t\t\t\t\t\t\t\t\tDateValue: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigNewValueDateValueArgs{\n\t\t\t\t\t\t\t\t\t\t\tYear: pulumi.Int(2020),\n\t\t\t\t\t\t\t\t\t\t\tMonth: pulumi.Int(1),\n\t\t\t\t\t\t\t\t\t\t\tDay: pulumi.Int(1),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs{\n\t\t\t\t\t\t\tInfoTypes: dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArray{\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"CREDIT_CARD_NUMBER\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tPrimitiveTransformation: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs{\n\t\t\t\t\t\t\t\tCryptoDeterministicConfig: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigArgs{\n\t\t\t\t\t\t\t\t\tContext: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigContextArgs{\n\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"sometweak\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tCryptoKey: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigCryptoKeyArgs{\n\t\t\t\t\t\t\t\t\t\tTransient: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigCryptoKeyTransientArgs{\n\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"beep\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tSurrogateInfoType: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigSurrogateInfoTypeArgs{\n\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"abc\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataloss.PreventionDeidentifyTemplate;\nimport com.pulumi.gcp.dataloss.PreventionDeidentifyTemplateArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionDeidentifyTemplateDeidentifyConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basic = new PreventionDeidentifyTemplate(\"basic\", PreventionDeidentifyTemplateArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Description\")\n .displayName(\"Displayname\")\n .deidentifyConfig(PreventionDeidentifyTemplateDeidentifyConfigArgs.builder()\n .infoTypeTransformations(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsArgs.builder()\n .transformations( \n PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs.builder()\n .infoTypes(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs.builder()\n .name(\"FIRST_NAME\")\n .build())\n .primitiveTransformation(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs.builder()\n .replaceWithInfoTypeConfig(true)\n .build())\n .build(),\n PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs.builder()\n .infoTypes( \n PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs.builder()\n .name(\"PHONE_NUMBER\")\n .build(),\n PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs.builder()\n .name(\"AGE\")\n .build())\n .primitiveTransformation(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs.builder()\n .replaceConfig(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigArgs.builder()\n .newValue(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigNewValueArgs.builder()\n .integerValue(9)\n .build())\n .build())\n .build())\n .build(),\n PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs.builder()\n .infoTypes( \n PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs.builder()\n .name(\"EMAIL_ADDRESS\")\n .build(),\n PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs.builder()\n .name(\"LAST_NAME\")\n .build())\n .primitiveTransformation(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs.builder()\n .characterMaskConfig(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCharacterMaskConfigArgs.builder()\n .maskingCharacter(\"X\")\n .numberToMask(4)\n .reverseOrder(true)\n .charactersToIgnores(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCharacterMaskConfigCharactersToIgnoreArgs.builder()\n .commonCharactersToIgnore(\"PUNCTUATION\")\n .build())\n .build())\n .build())\n .build(),\n PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs.builder()\n .infoTypes(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs.builder()\n .name(\"DATE_OF_BIRTH\")\n .build())\n .primitiveTransformation(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs.builder()\n .replaceConfig(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigArgs.builder()\n .newValue(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigNewValueArgs.builder()\n .dateValue(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigNewValueDateValueArgs.builder()\n .year(2020)\n .month(1)\n .day(1)\n .build())\n .build())\n .build())\n .build())\n .build(),\n PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs.builder()\n .infoTypes(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs.builder()\n .name(\"CREDIT_CARD_NUMBER\")\n .build())\n .primitiveTransformation(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs.builder()\n .cryptoDeterministicConfig(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigArgs.builder()\n .context(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigContextArgs.builder()\n .name(\"sometweak\")\n .build())\n .cryptoKey(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigCryptoKeyArgs.builder()\n .transient_(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigCryptoKeyTransientArgs.builder()\n .name(\"beep\")\n .build())\n .build())\n .surrogateInfoType(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigSurrogateInfoTypeArgs.builder()\n .name(\"abc\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:dataloss:PreventionDeidentifyTemplate\n properties:\n parent: projects/my-project-name\n description: Description\n displayName: Displayname\n deidentifyConfig:\n infoTypeTransformations:\n transformations:\n - infoTypes:\n - name: FIRST_NAME\n primitiveTransformation:\n replaceWithInfoTypeConfig: true\n - infoTypes:\n - name: PHONE_NUMBER\n - name: AGE\n primitiveTransformation:\n replaceConfig:\n newValue:\n integerValue: 9\n - infoTypes:\n - name: EMAIL_ADDRESS\n - name: LAST_NAME\n primitiveTransformation:\n characterMaskConfig:\n maskingCharacter: X\n numberToMask: 4\n reverseOrder: true\n charactersToIgnores:\n - commonCharactersToIgnore: PUNCTUATION\n - infoTypes:\n - name: DATE_OF_BIRTH\n primitiveTransformation:\n replaceConfig:\n newValue:\n dateValue:\n year: 2020\n month: 1\n day: 1\n - infoTypes:\n - name: CREDIT_CARD_NUMBER\n primitiveTransformation:\n cryptoDeterministicConfig:\n context:\n name: sometweak\n cryptoKey:\n transient:\n name: beep\n surrogateInfoType:\n name: abc\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Deidentify Template Image Transformations\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.dataloss.PreventionDeidentifyTemplate(\"basic\", {\n parent: \"projects/my-project-name\",\n description: \"Description\",\n displayName: \"Displayname\",\n deidentifyConfig: {\n imageTransformations: {\n transforms: [\n {\n redactionColor: {\n red: 0.5,\n blue: 1,\n green: 0.2,\n },\n selectedInfoTypes: {\n infoTypes: [{\n name: \"COLOR_INFO\",\n version: \"latest\",\n }],\n },\n },\n {\n allInfoTypes: {},\n },\n {\n allText: {},\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.dataloss.PreventionDeidentifyTemplate(\"basic\",\n parent=\"projects/my-project-name\",\n description=\"Description\",\n display_name=\"Displayname\",\n deidentify_config={\n \"image_transformations\": {\n \"transforms\": [\n {\n \"redaction_color\": {\n \"red\": 0.5,\n \"blue\": 1,\n \"green\": 0.2,\n },\n \"selected_info_types\": {\n \"info_types\": [{\n \"name\": \"COLOR_INFO\",\n \"version\": \"latest\",\n }],\n },\n },\n {\n \"all_info_types\": {},\n },\n {\n \"all_text\": {},\n },\n ],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basic = new Gcp.DataLoss.PreventionDeidentifyTemplate(\"basic\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description\",\n DisplayName = \"Displayname\",\n DeidentifyConfig = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigArgs\n {\n ImageTransformations = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsArgs\n {\n Transforms = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformArgs\n {\n RedactionColor = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformRedactionColorArgs\n {\n Red = 0.5,\n Blue = 1,\n Green = 0.2,\n },\n SelectedInfoTypes = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformSelectedInfoTypesArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformSelectedInfoTypesInfoTypeArgs\n {\n Name = \"COLOR_INFO\",\n Version = \"latest\",\n },\n },\n },\n },\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformArgs\n {\n AllInfoTypes = null,\n },\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformArgs\n {\n AllText = null,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataloss.NewPreventionDeidentifyTemplate(ctx, \"basic\", \u0026dataloss.PreventionDeidentifyTemplateArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"Description\"),\n\t\t\tDisplayName: pulumi.String(\"Displayname\"),\n\t\t\tDeidentifyConfig: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigArgs{\n\t\t\t\tImageTransformations: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsArgs{\n\t\t\t\t\tTransforms: dataloss.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformArray{\n\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformArgs{\n\t\t\t\t\t\t\tRedactionColor: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformRedactionColorArgs{\n\t\t\t\t\t\t\t\tRed: pulumi.Float64(0.5),\n\t\t\t\t\t\t\t\tBlue: pulumi.Float64(1),\n\t\t\t\t\t\t\t\tGreen: pulumi.Float64(0.2),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tSelectedInfoTypes: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformSelectedInfoTypesArgs{\n\t\t\t\t\t\t\t\tInfoTypes: dataloss.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformSelectedInfoTypesInfoTypeArray{\n\t\t\t\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformSelectedInfoTypesInfoTypeArgs{\n\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"COLOR_INFO\"),\n\t\t\t\t\t\t\t\t\t\tVersion: pulumi.String(\"latest\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformArgs{\n\t\t\t\t\t\t\tAllInfoTypes: nil,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformArgs{\n\t\t\t\t\t\t\tAllText: nil,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataloss.PreventionDeidentifyTemplate;\nimport com.pulumi.gcp.dataloss.PreventionDeidentifyTemplateArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionDeidentifyTemplateDeidentifyConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basic = new PreventionDeidentifyTemplate(\"basic\", PreventionDeidentifyTemplateArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Description\")\n .displayName(\"Displayname\")\n .deidentifyConfig(PreventionDeidentifyTemplateDeidentifyConfigArgs.builder()\n .imageTransformations(PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsArgs.builder()\n .transforms( \n PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformArgs.builder()\n .redactionColor(PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformRedactionColorArgs.builder()\n .red(0.5)\n .blue(1)\n .green(0.2)\n .build())\n .selectedInfoTypes(PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformSelectedInfoTypesArgs.builder()\n .infoTypes(PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformSelectedInfoTypesInfoTypeArgs.builder()\n .name(\"COLOR_INFO\")\n .version(\"latest\")\n .build())\n .build())\n .build(),\n PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformArgs.builder()\n .allInfoTypes()\n .build(),\n PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformArgs.builder()\n .allText()\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:dataloss:PreventionDeidentifyTemplate\n properties:\n parent: projects/my-project-name\n description: Description\n displayName: Displayname\n deidentifyConfig:\n imageTransformations:\n transforms:\n - redactionColor:\n red: 0.5\n blue: 1\n green: 0.2\n selectedInfoTypes:\n infoTypes:\n - name: COLOR_INFO\n version: latest\n - allInfoTypes: {}\n - allText: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDeidentifyTemplate can be imported using any of these accepted formats:\n\n* `{{parent}}/deidentifyTemplates/{{name}}`\n\n* `{{parent}}/{{name}}`\n\nWhen using the `pulumi import` command, DeidentifyTemplate can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataloss/preventionDeidentifyTemplate:PreventionDeidentifyTemplate default {{parent}}/deidentifyTemplates/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataloss/preventionDeidentifyTemplate:PreventionDeidentifyTemplate default {{parent}}/{{name}}\n```\n\n", + "description": "Allows creation of templates to de-identify content.\n\n\nTo get more information about DeidentifyTemplate, see:\n\n* [API documentation](https://cloud.google.com/dlp/docs/reference/rest/v2/projects.deidentifyTemplates)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dlp/docs/concepts-templates)\n\n\n\n## Example Usage\n\n### Dlp Deidentify Template Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.dataloss.PreventionDeidentifyTemplate(\"basic\", {\n parent: \"projects/my-project-name\",\n description: \"Description\",\n displayName: \"Displayname\",\n deidentifyConfig: {\n infoTypeTransformations: {\n transformations: [\n {\n infoTypes: [{\n name: \"FIRST_NAME\",\n }],\n primitiveTransformation: {\n replaceWithInfoTypeConfig: true,\n },\n },\n {\n infoTypes: [\n {\n name: \"PHONE_NUMBER\",\n },\n {\n name: \"AGE\",\n },\n ],\n primitiveTransformation: {\n replaceConfig: {\n newValue: {\n integerValue: 9,\n },\n },\n },\n },\n {\n infoTypes: [\n {\n name: \"EMAIL_ADDRESS\",\n },\n {\n name: \"LAST_NAME\",\n },\n ],\n primitiveTransformation: {\n characterMaskConfig: {\n maskingCharacter: \"X\",\n numberToMask: 4,\n reverseOrder: true,\n charactersToIgnores: [{\n commonCharactersToIgnore: \"PUNCTUATION\",\n }],\n },\n },\n },\n {\n infoTypes: [{\n name: \"DATE_OF_BIRTH\",\n }],\n primitiveTransformation: {\n replaceConfig: {\n newValue: {\n dateValue: {\n year: 2020,\n month: 1,\n day: 1,\n },\n },\n },\n },\n },\n {\n infoTypes: [{\n name: \"CREDIT_CARD_NUMBER\",\n }],\n primitiveTransformation: {\n cryptoDeterministicConfig: {\n context: {\n name: \"sometweak\",\n },\n cryptoKey: {\n transient: {\n name: \"beep\",\n },\n },\n surrogateInfoType: {\n name: \"abc\",\n },\n },\n },\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.dataloss.PreventionDeidentifyTemplate(\"basic\",\n parent=\"projects/my-project-name\",\n description=\"Description\",\n display_name=\"Displayname\",\n deidentify_config={\n \"info_type_transformations\": {\n \"transformations\": [\n {\n \"info_types\": [{\n \"name\": \"FIRST_NAME\",\n }],\n \"primitive_transformation\": {\n \"replace_with_info_type_config\": True,\n },\n },\n {\n \"info_types\": [\n {\n \"name\": \"PHONE_NUMBER\",\n },\n {\n \"name\": \"AGE\",\n },\n ],\n \"primitive_transformation\": {\n \"replace_config\": {\n \"new_value\": {\n \"integer_value\": 9,\n },\n },\n },\n },\n {\n \"info_types\": [\n {\n \"name\": \"EMAIL_ADDRESS\",\n },\n {\n \"name\": \"LAST_NAME\",\n },\n ],\n \"primitive_transformation\": {\n \"character_mask_config\": {\n \"masking_character\": \"X\",\n \"number_to_mask\": 4,\n \"reverse_order\": True,\n \"characters_to_ignores\": [{\n \"common_characters_to_ignore\": \"PUNCTUATION\",\n }],\n },\n },\n },\n {\n \"info_types\": [{\n \"name\": \"DATE_OF_BIRTH\",\n }],\n \"primitive_transformation\": {\n \"replace_config\": {\n \"new_value\": {\n \"date_value\": {\n \"year\": 2020,\n \"month\": 1,\n \"day\": 1,\n },\n },\n },\n },\n },\n {\n \"info_types\": [{\n \"name\": \"CREDIT_CARD_NUMBER\",\n }],\n \"primitive_transformation\": {\n \"crypto_deterministic_config\": {\n \"context\": {\n \"name\": \"sometweak\",\n },\n \"crypto_key\": {\n \"transient\": {\n \"name\": \"beep\",\n },\n },\n \"surrogate_info_type\": {\n \"name\": \"abc\",\n },\n },\n },\n },\n ],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basic = new Gcp.DataLoss.PreventionDeidentifyTemplate(\"basic\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description\",\n DisplayName = \"Displayname\",\n DeidentifyConfig = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigArgs\n {\n InfoTypeTransformations = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsArgs\n {\n Transformations = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs\n {\n Name = \"FIRST_NAME\",\n },\n },\n PrimitiveTransformation = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs\n {\n ReplaceWithInfoTypeConfig = true,\n },\n },\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs\n {\n Name = \"PHONE_NUMBER\",\n },\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs\n {\n Name = \"AGE\",\n },\n },\n PrimitiveTransformation = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs\n {\n ReplaceConfig = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigArgs\n {\n NewValue = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigNewValueArgs\n {\n IntegerValue = 9,\n },\n },\n },\n },\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs\n {\n Name = \"EMAIL_ADDRESS\",\n },\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs\n {\n Name = \"LAST_NAME\",\n },\n },\n PrimitiveTransformation = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs\n {\n CharacterMaskConfig = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCharacterMaskConfigArgs\n {\n MaskingCharacter = \"X\",\n NumberToMask = 4,\n ReverseOrder = true,\n CharactersToIgnores = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCharacterMaskConfigCharactersToIgnoreArgs\n {\n CommonCharactersToIgnore = \"PUNCTUATION\",\n },\n },\n },\n },\n },\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs\n {\n Name = \"DATE_OF_BIRTH\",\n },\n },\n PrimitiveTransformation = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs\n {\n ReplaceConfig = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigArgs\n {\n NewValue = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigNewValueArgs\n {\n DateValue = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigNewValueDateValueArgs\n {\n Year = 2020,\n Month = 1,\n Day = 1,\n },\n },\n },\n },\n },\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs\n {\n Name = \"CREDIT_CARD_NUMBER\",\n },\n },\n PrimitiveTransformation = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs\n {\n CryptoDeterministicConfig = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigArgs\n {\n Context = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigContextArgs\n {\n Name = \"sometweak\",\n },\n CryptoKey = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigCryptoKeyArgs\n {\n Transient = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigCryptoKeyTransientArgs\n {\n Name = \"beep\",\n },\n },\n SurrogateInfoType = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigSurrogateInfoTypeArgs\n {\n Name = \"abc\",\n },\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataloss.NewPreventionDeidentifyTemplate(ctx, \"basic\", \u0026dataloss.PreventionDeidentifyTemplateArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"Description\"),\n\t\t\tDisplayName: pulumi.String(\"Displayname\"),\n\t\t\tDeidentifyConfig: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigArgs{\n\t\t\t\tInfoTypeTransformations: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsArgs{\n\t\t\t\t\tTransformations: dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArray{\n\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs{\n\t\t\t\t\t\t\tInfoTypes: dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArray{\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"FIRST_NAME\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tPrimitiveTransformation: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs{\n\t\t\t\t\t\t\t\tReplaceWithInfoTypeConfig: pulumi.Bool(true),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs{\n\t\t\t\t\t\t\tInfoTypes: dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArray{\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"PHONE_NUMBER\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"AGE\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tPrimitiveTransformation: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs{\n\t\t\t\t\t\t\t\tReplaceConfig: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigArgs{\n\t\t\t\t\t\t\t\t\tNewValue: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigNewValueArgs{\n\t\t\t\t\t\t\t\t\t\tIntegerValue: pulumi.Int(9),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs{\n\t\t\t\t\t\t\tInfoTypes: dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArray{\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"EMAIL_ADDRESS\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"LAST_NAME\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tPrimitiveTransformation: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs{\n\t\t\t\t\t\t\t\tCharacterMaskConfig: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCharacterMaskConfigArgs{\n\t\t\t\t\t\t\t\t\tMaskingCharacter: pulumi.String(\"X\"),\n\t\t\t\t\t\t\t\t\tNumberToMask: pulumi.Int(4),\n\t\t\t\t\t\t\t\t\tReverseOrder: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tCharactersToIgnores: dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCharacterMaskConfigCharactersToIgnoreArray{\n\t\t\t\t\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCharacterMaskConfigCharactersToIgnoreArgs{\n\t\t\t\t\t\t\t\t\t\t\tCommonCharactersToIgnore: pulumi.String(\"PUNCTUATION\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs{\n\t\t\t\t\t\t\tInfoTypes: dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArray{\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"DATE_OF_BIRTH\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tPrimitiveTransformation: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs{\n\t\t\t\t\t\t\t\tReplaceConfig: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigArgs{\n\t\t\t\t\t\t\t\t\tNewValue: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigNewValueArgs{\n\t\t\t\t\t\t\t\t\t\tDateValue: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigNewValueDateValueArgs{\n\t\t\t\t\t\t\t\t\t\t\tYear: pulumi.Int(2020),\n\t\t\t\t\t\t\t\t\t\t\tMonth: pulumi.Int(1),\n\t\t\t\t\t\t\t\t\t\t\tDay: pulumi.Int(1),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs{\n\t\t\t\t\t\t\tInfoTypes: dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArray{\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"CREDIT_CARD_NUMBER\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tPrimitiveTransformation: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs{\n\t\t\t\t\t\t\t\tCryptoDeterministicConfig: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigArgs{\n\t\t\t\t\t\t\t\t\tContext: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigContextArgs{\n\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"sometweak\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tCryptoKey: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigCryptoKeyArgs{\n\t\t\t\t\t\t\t\t\t\tTransient: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigCryptoKeyTransientArgs{\n\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"beep\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tSurrogateInfoType: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigSurrogateInfoTypeArgs{\n\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"abc\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataloss.PreventionDeidentifyTemplate;\nimport com.pulumi.gcp.dataloss.PreventionDeidentifyTemplateArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionDeidentifyTemplateDeidentifyConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basic = new PreventionDeidentifyTemplate(\"basic\", PreventionDeidentifyTemplateArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Description\")\n .displayName(\"Displayname\")\n .deidentifyConfig(PreventionDeidentifyTemplateDeidentifyConfigArgs.builder()\n .infoTypeTransformations(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsArgs.builder()\n .transformations( \n PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs.builder()\n .infoTypes(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs.builder()\n .name(\"FIRST_NAME\")\n .build())\n .primitiveTransformation(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs.builder()\n .replaceWithInfoTypeConfig(true)\n .build())\n .build(),\n PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs.builder()\n .infoTypes( \n PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs.builder()\n .name(\"PHONE_NUMBER\")\n .build(),\n PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs.builder()\n .name(\"AGE\")\n .build())\n .primitiveTransformation(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs.builder()\n .replaceConfig(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigArgs.builder()\n .newValue(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigNewValueArgs.builder()\n .integerValue(9)\n .build())\n .build())\n .build())\n .build(),\n PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs.builder()\n .infoTypes( \n PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs.builder()\n .name(\"EMAIL_ADDRESS\")\n .build(),\n PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs.builder()\n .name(\"LAST_NAME\")\n .build())\n .primitiveTransformation(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs.builder()\n .characterMaskConfig(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCharacterMaskConfigArgs.builder()\n .maskingCharacter(\"X\")\n .numberToMask(4)\n .reverseOrder(true)\n .charactersToIgnores(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCharacterMaskConfigCharactersToIgnoreArgs.builder()\n .commonCharactersToIgnore(\"PUNCTUATION\")\n .build())\n .build())\n .build())\n .build(),\n PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs.builder()\n .infoTypes(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs.builder()\n .name(\"DATE_OF_BIRTH\")\n .build())\n .primitiveTransformation(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs.builder()\n .replaceConfig(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigArgs.builder()\n .newValue(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigNewValueArgs.builder()\n .dateValue(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationReplaceConfigNewValueDateValueArgs.builder()\n .year(2020)\n .month(1)\n .day(1)\n .build())\n .build())\n .build())\n .build())\n .build(),\n PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationArgs.builder()\n .infoTypes(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationInfoTypeArgs.builder()\n .name(\"CREDIT_CARD_NUMBER\")\n .build())\n .primitiveTransformation(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationArgs.builder()\n .cryptoDeterministicConfig(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigArgs.builder()\n .context(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigContextArgs.builder()\n .name(\"sometweak\")\n .build())\n .cryptoKey(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigCryptoKeyArgs.builder()\n .transient_(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigCryptoKeyTransientArgs.builder()\n .name(\"beep\")\n .build())\n .build())\n .surrogateInfoType(PreventionDeidentifyTemplateDeidentifyConfigInfoTypeTransformationsTransformationPrimitiveTransformationCryptoDeterministicConfigSurrogateInfoTypeArgs.builder()\n .name(\"abc\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:dataloss:PreventionDeidentifyTemplate\n properties:\n parent: projects/my-project-name\n description: Description\n displayName: Displayname\n deidentifyConfig:\n infoTypeTransformations:\n transformations:\n - infoTypes:\n - name: FIRST_NAME\n primitiveTransformation:\n replaceWithInfoTypeConfig: true\n - infoTypes:\n - name: PHONE_NUMBER\n - name: AGE\n primitiveTransformation:\n replaceConfig:\n newValue:\n integerValue: 9\n - infoTypes:\n - name: EMAIL_ADDRESS\n - name: LAST_NAME\n primitiveTransformation:\n characterMaskConfig:\n maskingCharacter: X\n numberToMask: 4\n reverseOrder: true\n charactersToIgnores:\n - commonCharactersToIgnore: PUNCTUATION\n - infoTypes:\n - name: DATE_OF_BIRTH\n primitiveTransformation:\n replaceConfig:\n newValue:\n dateValue:\n year: 2020\n month: 1\n day: 1\n - infoTypes:\n - name: CREDIT_CARD_NUMBER\n primitiveTransformation:\n cryptoDeterministicConfig:\n context:\n name: sometweak\n cryptoKey:\n transient:\n name: beep\n surrogateInfoType:\n name: abc\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Deidentify Template Image Transformations\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.dataloss.PreventionDeidentifyTemplate(\"basic\", {\n parent: \"projects/my-project-name\",\n description: \"Description\",\n displayName: \"Displayname\",\n deidentifyConfig: {\n imageTransformations: {\n transforms: [\n {\n redactionColor: {\n red: 0.5,\n blue: 1,\n green: 0.2,\n },\n selectedInfoTypes: {\n infoTypes: [{\n name: \"COLOR_INFO\",\n version: \"latest\",\n }],\n },\n },\n {\n allInfoTypes: {},\n },\n {\n allText: {},\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.dataloss.PreventionDeidentifyTemplate(\"basic\",\n parent=\"projects/my-project-name\",\n description=\"Description\",\n display_name=\"Displayname\",\n deidentify_config={\n \"image_transformations\": {\n \"transforms\": [\n {\n \"redaction_color\": {\n \"red\": 0.5,\n \"blue\": 1,\n \"green\": 0.2,\n },\n \"selected_info_types\": {\n \"info_types\": [{\n \"name\": \"COLOR_INFO\",\n \"version\": \"latest\",\n }],\n },\n },\n {\n \"all_info_types\": {},\n },\n {\n \"all_text\": {},\n },\n ],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basic = new Gcp.DataLoss.PreventionDeidentifyTemplate(\"basic\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description\",\n DisplayName = \"Displayname\",\n DeidentifyConfig = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigArgs\n {\n ImageTransformations = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsArgs\n {\n Transforms = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformArgs\n {\n RedactionColor = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformRedactionColorArgs\n {\n Red = 0.5,\n Blue = 1,\n Green = 0.2,\n },\n SelectedInfoTypes = new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformSelectedInfoTypesArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformSelectedInfoTypesInfoTypeArgs\n {\n Name = \"COLOR_INFO\",\n Version = \"latest\",\n },\n },\n },\n },\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformArgs\n {\n AllInfoTypes = null,\n },\n new Gcp.DataLoss.Inputs.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformArgs\n {\n AllText = null,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataloss.NewPreventionDeidentifyTemplate(ctx, \"basic\", \u0026dataloss.PreventionDeidentifyTemplateArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"Description\"),\n\t\t\tDisplayName: pulumi.String(\"Displayname\"),\n\t\t\tDeidentifyConfig: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigArgs{\n\t\t\t\tImageTransformations: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsArgs{\n\t\t\t\t\tTransforms: dataloss.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformArray{\n\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformArgs{\n\t\t\t\t\t\t\tRedactionColor: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformRedactionColorArgs{\n\t\t\t\t\t\t\t\tRed: pulumi.Float64(0.5),\n\t\t\t\t\t\t\t\tBlue: pulumi.Float64(1),\n\t\t\t\t\t\t\t\tGreen: pulumi.Float64(0.2),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tSelectedInfoTypes: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformSelectedInfoTypesArgs{\n\t\t\t\t\t\t\t\tInfoTypes: dataloss.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformSelectedInfoTypesInfoTypeArray{\n\t\t\t\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformSelectedInfoTypesInfoTypeArgs{\n\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"COLOR_INFO\"),\n\t\t\t\t\t\t\t\t\t\tVersion: pulumi.String(\"latest\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformArgs{\n\t\t\t\t\t\t\tAllInfoTypes: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformAllInfoTypesArgs{},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformArgs{\n\t\t\t\t\t\t\tAllText: \u0026dataloss.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformAllTextArgs{},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataloss.PreventionDeidentifyTemplate;\nimport com.pulumi.gcp.dataloss.PreventionDeidentifyTemplateArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionDeidentifyTemplateDeidentifyConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basic = new PreventionDeidentifyTemplate(\"basic\", PreventionDeidentifyTemplateArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Description\")\n .displayName(\"Displayname\")\n .deidentifyConfig(PreventionDeidentifyTemplateDeidentifyConfigArgs.builder()\n .imageTransformations(PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsArgs.builder()\n .transforms( \n PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformArgs.builder()\n .redactionColor(PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformRedactionColorArgs.builder()\n .red(0.5)\n .blue(1)\n .green(0.2)\n .build())\n .selectedInfoTypes(PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformSelectedInfoTypesArgs.builder()\n .infoTypes(PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformSelectedInfoTypesInfoTypeArgs.builder()\n .name(\"COLOR_INFO\")\n .version(\"latest\")\n .build())\n .build())\n .build(),\n PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformArgs.builder()\n .allInfoTypes()\n .build(),\n PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformArgs.builder()\n .allText()\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:dataloss:PreventionDeidentifyTemplate\n properties:\n parent: projects/my-project-name\n description: Description\n displayName: Displayname\n deidentifyConfig:\n imageTransformations:\n transforms:\n - redactionColor:\n red: 0.5\n blue: 1\n green: 0.2\n selectedInfoTypes:\n infoTypes:\n - name: COLOR_INFO\n version: latest\n - allInfoTypes: {}\n - allText: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDeidentifyTemplate can be imported using any of these accepted formats:\n\n* `{{parent}}/deidentifyTemplates/{{name}}`\n\n* `{{parent}}/{{name}}`\n\nWhen using the `pulumi import` command, DeidentifyTemplate can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataloss/preventionDeidentifyTemplate:PreventionDeidentifyTemplate default {{parent}}/deidentifyTemplates/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataloss/preventionDeidentifyTemplate:PreventionDeidentifyTemplate default {{parent}}/{{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -180829,7 +180829,7 @@ } }, "gcp:dataloss/preventionInspectTemplate:PreventionInspectTemplate": { - "description": "An inspect job template.\n\n\nTo get more information about InspectTemplate, see:\n\n* [API documentation](https://cloud.google.com/dlp/docs/reference/rest/v2/projects.inspectTemplates)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dlp/docs/creating-templates-inspect)\n\n## Example Usage\n\n### Dlp Inspect Template Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.dataloss.PreventionInspectTemplate(\"basic\", {\n parent: \"projects/my-project-name\",\n description: \"My description\",\n displayName: \"display_name\",\n inspectConfig: {\n infoTypes: [\n {\n name: \"EMAIL_ADDRESS\",\n },\n {\n name: \"PERSON_NAME\",\n },\n {\n name: \"LAST_NAME\",\n },\n {\n name: \"DOMAIN_NAME\",\n },\n {\n name: \"PHONE_NUMBER\",\n },\n {\n name: \"FIRST_NAME\",\n },\n ],\n minLikelihood: \"UNLIKELY\",\n ruleSets: [\n {\n infoTypes: [{\n name: \"EMAIL_ADDRESS\",\n }],\n rules: [{\n exclusionRule: {\n regex: {\n pattern: \".+@example.com\",\n },\n matchingType: \"MATCHING_TYPE_FULL_MATCH\",\n },\n }],\n },\n {\n infoTypes: [\n {\n name: \"EMAIL_ADDRESS\",\n },\n {\n name: \"DOMAIN_NAME\",\n },\n {\n name: \"PHONE_NUMBER\",\n },\n {\n name: \"PERSON_NAME\",\n },\n {\n name: \"FIRST_NAME\",\n },\n ],\n rules: [{\n exclusionRule: {\n dictionary: {\n wordList: {\n words: [\"TEST\"],\n },\n },\n matchingType: \"MATCHING_TYPE_PARTIAL_MATCH\",\n },\n }],\n },\n {\n infoTypes: [{\n name: \"PERSON_NAME\",\n }],\n rules: [{\n hotwordRule: {\n hotwordRegex: {\n pattern: \"patient\",\n },\n proximity: {\n windowBefore: 50,\n },\n likelihoodAdjustment: {\n fixedLikelihood: \"VERY_LIKELY\",\n },\n },\n }],\n },\n ],\n limits: {\n maxFindingsPerItem: 10,\n maxFindingsPerRequest: 50,\n maxFindingsPerInfoTypes: [\n {\n maxFindings: 75,\n infoType: {\n name: \"PERSON_NAME\",\n },\n },\n {\n maxFindings: 80,\n infoType: {\n name: \"LAST_NAME\",\n },\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.dataloss.PreventionInspectTemplate(\"basic\",\n parent=\"projects/my-project-name\",\n description=\"My description\",\n display_name=\"display_name\",\n inspect_config={\n \"info_types\": [\n {\n \"name\": \"EMAIL_ADDRESS\",\n },\n {\n \"name\": \"PERSON_NAME\",\n },\n {\n \"name\": \"LAST_NAME\",\n },\n {\n \"name\": \"DOMAIN_NAME\",\n },\n {\n \"name\": \"PHONE_NUMBER\",\n },\n {\n \"name\": \"FIRST_NAME\",\n },\n ],\n \"min_likelihood\": \"UNLIKELY\",\n \"rule_sets\": [\n {\n \"info_types\": [{\n \"name\": \"EMAIL_ADDRESS\",\n }],\n \"rules\": [{\n \"exclusion_rule\": {\n \"regex\": {\n \"pattern\": \".+@example.com\",\n },\n \"matching_type\": \"MATCHING_TYPE_FULL_MATCH\",\n },\n }],\n },\n {\n \"info_types\": [\n {\n \"name\": \"EMAIL_ADDRESS\",\n },\n {\n \"name\": \"DOMAIN_NAME\",\n },\n {\n \"name\": \"PHONE_NUMBER\",\n },\n {\n \"name\": \"PERSON_NAME\",\n },\n {\n \"name\": \"FIRST_NAME\",\n },\n ],\n \"rules\": [{\n \"exclusion_rule\": {\n \"dictionary\": {\n \"word_list\": {\n \"words\": [\"TEST\"],\n },\n },\n \"matching_type\": \"MATCHING_TYPE_PARTIAL_MATCH\",\n },\n }],\n },\n {\n \"info_types\": [{\n \"name\": \"PERSON_NAME\",\n }],\n \"rules\": [{\n \"hotword_rule\": {\n \"hotword_regex\": {\n \"pattern\": \"patient\",\n },\n \"proximity\": {\n \"window_before\": 50,\n },\n \"likelihood_adjustment\": {\n \"fixed_likelihood\": \"VERY_LIKELY\",\n },\n },\n }],\n },\n ],\n \"limits\": {\n \"max_findings_per_item\": 10,\n \"max_findings_per_request\": 50,\n \"max_findings_per_info_types\": [\n {\n \"max_findings\": 75,\n \"info_type\": {\n \"name\": \"PERSON_NAME\",\n },\n },\n {\n \"max_findings\": 80,\n \"info_type\": {\n \"name\": \"LAST_NAME\",\n },\n },\n ],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basic = new Gcp.DataLoss.PreventionInspectTemplate(\"basic\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"My description\",\n DisplayName = \"display_name\",\n InspectConfig = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigInfoTypeArgs\n {\n Name = \"EMAIL_ADDRESS\",\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigInfoTypeArgs\n {\n Name = \"PERSON_NAME\",\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigInfoTypeArgs\n {\n Name = \"LAST_NAME\",\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigInfoTypeArgs\n {\n Name = \"DOMAIN_NAME\",\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigInfoTypeArgs\n {\n Name = \"PHONE_NUMBER\",\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigInfoTypeArgs\n {\n Name = \"FIRST_NAME\",\n },\n },\n MinLikelihood = \"UNLIKELY\",\n RuleSets = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"EMAIL_ADDRESS\",\n },\n },\n Rules = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleArgs\n {\n ExclusionRule = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs\n {\n Regex = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleRegexArgs\n {\n Pattern = \".+@example.com\",\n },\n MatchingType = \"MATCHING_TYPE_FULL_MATCH\",\n },\n },\n },\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"EMAIL_ADDRESS\",\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"DOMAIN_NAME\",\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"PHONE_NUMBER\",\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"PERSON_NAME\",\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"FIRST_NAME\",\n },\n },\n Rules = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleArgs\n {\n ExclusionRule = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs\n {\n Dictionary = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleDictionaryArgs\n {\n WordList = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleDictionaryWordListArgs\n {\n Words = new[]\n {\n \"TEST\",\n },\n },\n },\n MatchingType = \"MATCHING_TYPE_PARTIAL_MATCH\",\n },\n },\n },\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"PERSON_NAME\",\n },\n },\n Rules = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleArgs\n {\n HotwordRule = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleArgs\n {\n HotwordRegex = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs\n {\n Pattern = \"patient\",\n },\n Proximity = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleProximityArgs\n {\n WindowBefore = 50,\n },\n LikelihoodAdjustment = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs\n {\n FixedLikelihood = \"VERY_LIKELY\",\n },\n },\n },\n },\n },\n },\n Limits = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigLimitsArgs\n {\n MaxFindingsPerItem = 10,\n MaxFindingsPerRequest = 50,\n MaxFindingsPerInfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeArgs\n {\n MaxFindings = 75,\n InfoType = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeInfoTypeArgs\n {\n Name = \"PERSON_NAME\",\n },\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeArgs\n {\n MaxFindings = 80,\n InfoType = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeInfoTypeArgs\n {\n Name = \"LAST_NAME\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataloss.NewPreventionInspectTemplate(ctx, \"basic\", \u0026dataloss.PreventionInspectTemplateArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"My description\"),\n\t\t\tDisplayName: pulumi.String(\"display_name\"),\n\t\t\tInspectConfig: \u0026dataloss.PreventionInspectTemplateInspectConfigArgs{\n\t\t\t\tInfoTypes: dataloss.PreventionInspectTemplateInspectConfigInfoTypeArray{\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigInfoTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"EMAIL_ADDRESS\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigInfoTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"PERSON_NAME\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigInfoTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"LAST_NAME\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigInfoTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"DOMAIN_NAME\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigInfoTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"PHONE_NUMBER\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigInfoTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"FIRST_NAME\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMinLikelihood: pulumi.String(\"UNLIKELY\"),\n\t\t\t\tRuleSets: dataloss.PreventionInspectTemplateInspectConfigRuleSetArray{\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetArgs{\n\t\t\t\t\t\tInfoTypes: dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"EMAIL_ADDRESS\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRules: dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArgs{\n\t\t\t\t\t\t\t\tExclusionRule: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs{\n\t\t\t\t\t\t\t\t\tRegex: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleRegexArgs{\n\t\t\t\t\t\t\t\t\t\tPattern: pulumi.String(\".+@example.com\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tMatchingType: pulumi.String(\"MATCHING_TYPE_FULL_MATCH\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetArgs{\n\t\t\t\t\t\tInfoTypes: dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"EMAIL_ADDRESS\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"DOMAIN_NAME\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"PHONE_NUMBER\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"PERSON_NAME\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"FIRST_NAME\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRules: dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArgs{\n\t\t\t\t\t\t\t\tExclusionRule: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs{\n\t\t\t\t\t\t\t\t\tDictionary: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleDictionaryArgs{\n\t\t\t\t\t\t\t\t\t\tWordList: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleDictionaryWordListArgs{\n\t\t\t\t\t\t\t\t\t\t\tWords: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"TEST\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tMatchingType: pulumi.String(\"MATCHING_TYPE_PARTIAL_MATCH\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetArgs{\n\t\t\t\t\t\tInfoTypes: dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"PERSON_NAME\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRules: dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArgs{\n\t\t\t\t\t\t\t\tHotwordRule: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleArgs{\n\t\t\t\t\t\t\t\t\tHotwordRegex: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs{\n\t\t\t\t\t\t\t\t\t\tPattern: pulumi.String(\"patient\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tProximity: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleProximityArgs{\n\t\t\t\t\t\t\t\t\t\tWindowBefore: pulumi.Int(50),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tLikelihoodAdjustment: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs{\n\t\t\t\t\t\t\t\t\t\tFixedLikelihood: pulumi.String(\"VERY_LIKELY\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tLimits: \u0026dataloss.PreventionInspectTemplateInspectConfigLimitsArgs{\n\t\t\t\t\tMaxFindingsPerItem: pulumi.Int(10),\n\t\t\t\t\tMaxFindingsPerRequest: pulumi.Int(50),\n\t\t\t\t\tMaxFindingsPerInfoTypes: dataloss.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeArray{\n\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeArgs{\n\t\t\t\t\t\t\tMaxFindings: pulumi.Int(75),\n\t\t\t\t\t\t\tInfoType: \u0026dataloss.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"PERSON_NAME\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeArgs{\n\t\t\t\t\t\t\tMaxFindings: pulumi.Int(80),\n\t\t\t\t\t\t\tInfoType: \u0026dataloss.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"LAST_NAME\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataloss.PreventionInspectTemplate;\nimport com.pulumi.gcp.dataloss.PreventionInspectTemplateArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionInspectTemplateInspectConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionInspectTemplateInspectConfigLimitsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basic = new PreventionInspectTemplate(\"basic\", PreventionInspectTemplateArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"My description\")\n .displayName(\"display_name\")\n .inspectConfig(PreventionInspectTemplateInspectConfigArgs.builder()\n .infoTypes( \n PreventionInspectTemplateInspectConfigInfoTypeArgs.builder()\n .name(\"EMAIL_ADDRESS\")\n .build(),\n PreventionInspectTemplateInspectConfigInfoTypeArgs.builder()\n .name(\"PERSON_NAME\")\n .build(),\n PreventionInspectTemplateInspectConfigInfoTypeArgs.builder()\n .name(\"LAST_NAME\")\n .build(),\n PreventionInspectTemplateInspectConfigInfoTypeArgs.builder()\n .name(\"DOMAIN_NAME\")\n .build(),\n PreventionInspectTemplateInspectConfigInfoTypeArgs.builder()\n .name(\"PHONE_NUMBER\")\n .build(),\n PreventionInspectTemplateInspectConfigInfoTypeArgs.builder()\n .name(\"FIRST_NAME\")\n .build())\n .minLikelihood(\"UNLIKELY\")\n .ruleSets( \n PreventionInspectTemplateInspectConfigRuleSetArgs.builder()\n .infoTypes(PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"EMAIL_ADDRESS\")\n .build())\n .rules(PreventionInspectTemplateInspectConfigRuleSetRuleArgs.builder()\n .exclusionRule(PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs.builder()\n .regex(PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleRegexArgs.builder()\n .pattern(\".+@example.com\")\n .build())\n .matchingType(\"MATCHING_TYPE_FULL_MATCH\")\n .build())\n .build())\n .build(),\n PreventionInspectTemplateInspectConfigRuleSetArgs.builder()\n .infoTypes( \n PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"EMAIL_ADDRESS\")\n .build(),\n PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"DOMAIN_NAME\")\n .build(),\n PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"PHONE_NUMBER\")\n .build(),\n PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"PERSON_NAME\")\n .build(),\n PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"FIRST_NAME\")\n .build())\n .rules(PreventionInspectTemplateInspectConfigRuleSetRuleArgs.builder()\n .exclusionRule(PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs.builder()\n .dictionary(PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleDictionaryArgs.builder()\n .wordList(PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleDictionaryWordListArgs.builder()\n .words(\"TEST\")\n .build())\n .build())\n .matchingType(\"MATCHING_TYPE_PARTIAL_MATCH\")\n .build())\n .build())\n .build(),\n PreventionInspectTemplateInspectConfigRuleSetArgs.builder()\n .infoTypes(PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"PERSON_NAME\")\n .build())\n .rules(PreventionInspectTemplateInspectConfigRuleSetRuleArgs.builder()\n .hotwordRule(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleArgs.builder()\n .hotwordRegex(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs.builder()\n .pattern(\"patient\")\n .build())\n .proximity(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleProximityArgs.builder()\n .windowBefore(50)\n .build())\n .likelihoodAdjustment(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs.builder()\n .fixedLikelihood(\"VERY_LIKELY\")\n .build())\n .build())\n .build())\n .build())\n .limits(PreventionInspectTemplateInspectConfigLimitsArgs.builder()\n .maxFindingsPerItem(10)\n .maxFindingsPerRequest(50)\n .maxFindingsPerInfoTypes( \n PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeArgs.builder()\n .maxFindings(\"75\")\n .infoType(PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeInfoTypeArgs.builder()\n .name(\"PERSON_NAME\")\n .build())\n .build(),\n PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeArgs.builder()\n .maxFindings(\"80\")\n .infoType(PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeInfoTypeArgs.builder()\n .name(\"LAST_NAME\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:dataloss:PreventionInspectTemplate\n properties:\n parent: projects/my-project-name\n description: My description\n displayName: display_name\n inspectConfig:\n infoTypes:\n - name: EMAIL_ADDRESS\n - name: PERSON_NAME\n - name: LAST_NAME\n - name: DOMAIN_NAME\n - name: PHONE_NUMBER\n - name: FIRST_NAME\n minLikelihood: UNLIKELY\n ruleSets:\n - infoTypes:\n - name: EMAIL_ADDRESS\n rules:\n - exclusionRule:\n regex:\n pattern: .+@example.com\n matchingType: MATCHING_TYPE_FULL_MATCH\n - infoTypes:\n - name: EMAIL_ADDRESS\n - name: DOMAIN_NAME\n - name: PHONE_NUMBER\n - name: PERSON_NAME\n - name: FIRST_NAME\n rules:\n - exclusionRule:\n dictionary:\n wordList:\n words:\n - TEST\n matchingType: MATCHING_TYPE_PARTIAL_MATCH\n - infoTypes:\n - name: PERSON_NAME\n rules:\n - hotwordRule:\n hotwordRegex:\n pattern: patient\n proximity:\n windowBefore: 50\n likelihoodAdjustment:\n fixedLikelihood: VERY_LIKELY\n limits:\n maxFindingsPerItem: 10\n maxFindingsPerRequest: 50\n maxFindingsPerInfoTypes:\n - maxFindings: '75'\n infoType:\n name: PERSON_NAME\n - maxFindings: '80'\n infoType:\n name: LAST_NAME\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Inspect Template Custom Type\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst custom = new gcp.dataloss.PreventionInspectTemplate(\"custom\", {\n parent: \"projects/my-project-name\",\n description: \"My description\",\n displayName: \"display_name\",\n inspectConfig: {\n customInfoTypes: [{\n infoType: {\n name: \"MY_CUSTOM_TYPE\",\n },\n likelihood: \"UNLIKELY\",\n regex: {\n pattern: \"test*\",\n },\n }],\n infoTypes: [{\n name: \"EMAIL_ADDRESS\",\n }],\n minLikelihood: \"UNLIKELY\",\n ruleSets: [\n {\n infoTypes: [{\n name: \"EMAIL_ADDRESS\",\n }],\n rules: [{\n exclusionRule: {\n regex: {\n pattern: \".+@example.com\",\n },\n matchingType: \"MATCHING_TYPE_FULL_MATCH\",\n },\n }],\n },\n {\n infoTypes: [{\n name: \"MY_CUSTOM_TYPE\",\n }],\n rules: [{\n hotwordRule: {\n hotwordRegex: {\n pattern: \"example*\",\n },\n proximity: {\n windowBefore: 50,\n },\n likelihoodAdjustment: {\n fixedLikelihood: \"VERY_LIKELY\",\n },\n },\n }],\n },\n ],\n limits: {\n maxFindingsPerItem: 10,\n maxFindingsPerRequest: 50,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom = gcp.dataloss.PreventionInspectTemplate(\"custom\",\n parent=\"projects/my-project-name\",\n description=\"My description\",\n display_name=\"display_name\",\n inspect_config={\n \"custom_info_types\": [{\n \"info_type\": {\n \"name\": \"MY_CUSTOM_TYPE\",\n },\n \"likelihood\": \"UNLIKELY\",\n \"regex\": {\n \"pattern\": \"test*\",\n },\n }],\n \"info_types\": [{\n \"name\": \"EMAIL_ADDRESS\",\n }],\n \"min_likelihood\": \"UNLIKELY\",\n \"rule_sets\": [\n {\n \"info_types\": [{\n \"name\": \"EMAIL_ADDRESS\",\n }],\n \"rules\": [{\n \"exclusion_rule\": {\n \"regex\": {\n \"pattern\": \".+@example.com\",\n },\n \"matching_type\": \"MATCHING_TYPE_FULL_MATCH\",\n },\n }],\n },\n {\n \"info_types\": [{\n \"name\": \"MY_CUSTOM_TYPE\",\n }],\n \"rules\": [{\n \"hotword_rule\": {\n \"hotword_regex\": {\n \"pattern\": \"example*\",\n },\n \"proximity\": {\n \"window_before\": 50,\n },\n \"likelihood_adjustment\": {\n \"fixed_likelihood\": \"VERY_LIKELY\",\n },\n },\n }],\n },\n ],\n \"limits\": {\n \"max_findings_per_item\": 10,\n \"max_findings_per_request\": 50,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var custom = new Gcp.DataLoss.PreventionInspectTemplate(\"custom\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"My description\",\n DisplayName = \"display_name\",\n InspectConfig = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigArgs\n {\n CustomInfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigCustomInfoTypeArgs\n {\n InfoType = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigCustomInfoTypeInfoTypeArgs\n {\n Name = \"MY_CUSTOM_TYPE\",\n },\n Likelihood = \"UNLIKELY\",\n Regex = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigCustomInfoTypeRegexArgs\n {\n Pattern = \"test*\",\n },\n },\n },\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigInfoTypeArgs\n {\n Name = \"EMAIL_ADDRESS\",\n },\n },\n MinLikelihood = \"UNLIKELY\",\n RuleSets = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"EMAIL_ADDRESS\",\n },\n },\n Rules = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleArgs\n {\n ExclusionRule = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs\n {\n Regex = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleRegexArgs\n {\n Pattern = \".+@example.com\",\n },\n MatchingType = \"MATCHING_TYPE_FULL_MATCH\",\n },\n },\n },\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"MY_CUSTOM_TYPE\",\n },\n },\n Rules = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleArgs\n {\n HotwordRule = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleArgs\n {\n HotwordRegex = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs\n {\n Pattern = \"example*\",\n },\n Proximity = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleProximityArgs\n {\n WindowBefore = 50,\n },\n LikelihoodAdjustment = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs\n {\n FixedLikelihood = \"VERY_LIKELY\",\n },\n },\n },\n },\n },\n },\n Limits = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigLimitsArgs\n {\n MaxFindingsPerItem = 10,\n MaxFindingsPerRequest = 50,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataloss.NewPreventionInspectTemplate(ctx, \"custom\", \u0026dataloss.PreventionInspectTemplateArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"My description\"),\n\t\t\tDisplayName: pulumi.String(\"display_name\"),\n\t\t\tInspectConfig: \u0026dataloss.PreventionInspectTemplateInspectConfigArgs{\n\t\t\t\tCustomInfoTypes: dataloss.PreventionInspectTemplateInspectConfigCustomInfoTypeArray{\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigCustomInfoTypeArgs{\n\t\t\t\t\t\tInfoType: \u0026dataloss.PreventionInspectTemplateInspectConfigCustomInfoTypeInfoTypeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"MY_CUSTOM_TYPE\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tLikelihood: pulumi.String(\"UNLIKELY\"),\n\t\t\t\t\t\tRegex: \u0026dataloss.PreventionInspectTemplateInspectConfigCustomInfoTypeRegexArgs{\n\t\t\t\t\t\t\tPattern: pulumi.String(\"test*\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tInfoTypes: dataloss.PreventionInspectTemplateInspectConfigInfoTypeArray{\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigInfoTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"EMAIL_ADDRESS\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMinLikelihood: pulumi.String(\"UNLIKELY\"),\n\t\t\t\tRuleSets: dataloss.PreventionInspectTemplateInspectConfigRuleSetArray{\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetArgs{\n\t\t\t\t\t\tInfoTypes: dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"EMAIL_ADDRESS\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRules: dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArgs{\n\t\t\t\t\t\t\t\tExclusionRule: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs{\n\t\t\t\t\t\t\t\t\tRegex: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleRegexArgs{\n\t\t\t\t\t\t\t\t\t\tPattern: pulumi.String(\".+@example.com\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tMatchingType: pulumi.String(\"MATCHING_TYPE_FULL_MATCH\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetArgs{\n\t\t\t\t\t\tInfoTypes: dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"MY_CUSTOM_TYPE\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRules: dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArgs{\n\t\t\t\t\t\t\t\tHotwordRule: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleArgs{\n\t\t\t\t\t\t\t\t\tHotwordRegex: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs{\n\t\t\t\t\t\t\t\t\t\tPattern: pulumi.String(\"example*\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tProximity: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleProximityArgs{\n\t\t\t\t\t\t\t\t\t\tWindowBefore: pulumi.Int(50),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tLikelihoodAdjustment: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs{\n\t\t\t\t\t\t\t\t\t\tFixedLikelihood: pulumi.String(\"VERY_LIKELY\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tLimits: \u0026dataloss.PreventionInspectTemplateInspectConfigLimitsArgs{\n\t\t\t\t\tMaxFindingsPerItem: pulumi.Int(10),\n\t\t\t\t\tMaxFindingsPerRequest: pulumi.Int(50),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataloss.PreventionInspectTemplate;\nimport com.pulumi.gcp.dataloss.PreventionInspectTemplateArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionInspectTemplateInspectConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionInspectTemplateInspectConfigLimitsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var custom = new PreventionInspectTemplate(\"custom\", PreventionInspectTemplateArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"My description\")\n .displayName(\"display_name\")\n .inspectConfig(PreventionInspectTemplateInspectConfigArgs.builder()\n .customInfoTypes(PreventionInspectTemplateInspectConfigCustomInfoTypeArgs.builder()\n .infoType(PreventionInspectTemplateInspectConfigCustomInfoTypeInfoTypeArgs.builder()\n .name(\"MY_CUSTOM_TYPE\")\n .build())\n .likelihood(\"UNLIKELY\")\n .regex(PreventionInspectTemplateInspectConfigCustomInfoTypeRegexArgs.builder()\n .pattern(\"test*\")\n .build())\n .build())\n .infoTypes(PreventionInspectTemplateInspectConfigInfoTypeArgs.builder()\n .name(\"EMAIL_ADDRESS\")\n .build())\n .minLikelihood(\"UNLIKELY\")\n .ruleSets( \n PreventionInspectTemplateInspectConfigRuleSetArgs.builder()\n .infoTypes(PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"EMAIL_ADDRESS\")\n .build())\n .rules(PreventionInspectTemplateInspectConfigRuleSetRuleArgs.builder()\n .exclusionRule(PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs.builder()\n .regex(PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleRegexArgs.builder()\n .pattern(\".+@example.com\")\n .build())\n .matchingType(\"MATCHING_TYPE_FULL_MATCH\")\n .build())\n .build())\n .build(),\n PreventionInspectTemplateInspectConfigRuleSetArgs.builder()\n .infoTypes(PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"MY_CUSTOM_TYPE\")\n .build())\n .rules(PreventionInspectTemplateInspectConfigRuleSetRuleArgs.builder()\n .hotwordRule(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleArgs.builder()\n .hotwordRegex(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs.builder()\n .pattern(\"example*\")\n .build())\n .proximity(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleProximityArgs.builder()\n .windowBefore(50)\n .build())\n .likelihoodAdjustment(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs.builder()\n .fixedLikelihood(\"VERY_LIKELY\")\n .build())\n .build())\n .build())\n .build())\n .limits(PreventionInspectTemplateInspectConfigLimitsArgs.builder()\n .maxFindingsPerItem(10)\n .maxFindingsPerRequest(50)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n custom:\n type: gcp:dataloss:PreventionInspectTemplate\n properties:\n parent: projects/my-project-name\n description: My description\n displayName: display_name\n inspectConfig:\n customInfoTypes:\n - infoType:\n name: MY_CUSTOM_TYPE\n likelihood: UNLIKELY\n regex:\n pattern: test*\n infoTypes:\n - name: EMAIL_ADDRESS\n minLikelihood: UNLIKELY\n ruleSets:\n - infoTypes:\n - name: EMAIL_ADDRESS\n rules:\n - exclusionRule:\n regex:\n pattern: .+@example.com\n matchingType: MATCHING_TYPE_FULL_MATCH\n - infoTypes:\n - name: MY_CUSTOM_TYPE\n rules:\n - hotwordRule:\n hotwordRegex:\n pattern: example*\n proximity:\n windowBefore: 50\n likelihoodAdjustment:\n fixedLikelihood: VERY_LIKELY\n limits:\n maxFindingsPerItem: 10\n maxFindingsPerRequest: 50\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Inspect Template Custom Type Surrogate\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst customTypeSurrogate = new gcp.dataloss.PreventionInspectTemplate(\"custom_type_surrogate\", {\n parent: \"projects/my-project-name\",\n description: \"My description\",\n displayName: \"display_name\",\n inspectConfig: {\n customInfoTypes: [{\n infoType: {\n name: \"MY_CUSTOM_TYPE\",\n },\n likelihood: \"UNLIKELY\",\n surrogateType: {},\n }],\n infoTypes: [{\n name: \"EMAIL_ADDRESS\",\n }],\n minLikelihood: \"UNLIKELY\",\n ruleSets: [\n {\n infoTypes: [{\n name: \"EMAIL_ADDRESS\",\n }],\n rules: [{\n exclusionRule: {\n regex: {\n pattern: \".+@example.com\",\n },\n matchingType: \"MATCHING_TYPE_FULL_MATCH\",\n },\n }],\n },\n {\n infoTypes: [{\n name: \"MY_CUSTOM_TYPE\",\n }],\n rules: [{\n hotwordRule: {\n hotwordRegex: {\n pattern: \"example*\",\n },\n proximity: {\n windowBefore: 50,\n },\n likelihoodAdjustment: {\n fixedLikelihood: \"VERY_LIKELY\",\n },\n },\n }],\n },\n ],\n limits: {\n maxFindingsPerItem: 10,\n maxFindingsPerRequest: 50,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_type_surrogate = gcp.dataloss.PreventionInspectTemplate(\"custom_type_surrogate\",\n parent=\"projects/my-project-name\",\n description=\"My description\",\n display_name=\"display_name\",\n inspect_config={\n \"custom_info_types\": [{\n \"info_type\": {\n \"name\": \"MY_CUSTOM_TYPE\",\n },\n \"likelihood\": \"UNLIKELY\",\n \"surrogate_type\": {},\n }],\n \"info_types\": [{\n \"name\": \"EMAIL_ADDRESS\",\n }],\n \"min_likelihood\": \"UNLIKELY\",\n \"rule_sets\": [\n {\n \"info_types\": [{\n \"name\": \"EMAIL_ADDRESS\",\n }],\n \"rules\": [{\n \"exclusion_rule\": {\n \"regex\": {\n \"pattern\": \".+@example.com\",\n },\n \"matching_type\": \"MATCHING_TYPE_FULL_MATCH\",\n },\n }],\n },\n {\n \"info_types\": [{\n \"name\": \"MY_CUSTOM_TYPE\",\n }],\n \"rules\": [{\n \"hotword_rule\": {\n \"hotword_regex\": {\n \"pattern\": \"example*\",\n },\n \"proximity\": {\n \"window_before\": 50,\n },\n \"likelihood_adjustment\": {\n \"fixed_likelihood\": \"VERY_LIKELY\",\n },\n },\n }],\n },\n ],\n \"limits\": {\n \"max_findings_per_item\": 10,\n \"max_findings_per_request\": 50,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var customTypeSurrogate = new Gcp.DataLoss.PreventionInspectTemplate(\"custom_type_surrogate\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"My description\",\n DisplayName = \"display_name\",\n InspectConfig = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigArgs\n {\n CustomInfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigCustomInfoTypeArgs\n {\n InfoType = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigCustomInfoTypeInfoTypeArgs\n {\n Name = \"MY_CUSTOM_TYPE\",\n },\n Likelihood = \"UNLIKELY\",\n SurrogateType = null,\n },\n },\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigInfoTypeArgs\n {\n Name = \"EMAIL_ADDRESS\",\n },\n },\n MinLikelihood = \"UNLIKELY\",\n RuleSets = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"EMAIL_ADDRESS\",\n },\n },\n Rules = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleArgs\n {\n ExclusionRule = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs\n {\n Regex = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleRegexArgs\n {\n Pattern = \".+@example.com\",\n },\n MatchingType = \"MATCHING_TYPE_FULL_MATCH\",\n },\n },\n },\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"MY_CUSTOM_TYPE\",\n },\n },\n Rules = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleArgs\n {\n HotwordRule = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleArgs\n {\n HotwordRegex = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs\n {\n Pattern = \"example*\",\n },\n Proximity = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleProximityArgs\n {\n WindowBefore = 50,\n },\n LikelihoodAdjustment = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs\n {\n FixedLikelihood = \"VERY_LIKELY\",\n },\n },\n },\n },\n },\n },\n Limits = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigLimitsArgs\n {\n MaxFindingsPerItem = 10,\n MaxFindingsPerRequest = 50,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataloss.NewPreventionInspectTemplate(ctx, \"custom_type_surrogate\", \u0026dataloss.PreventionInspectTemplateArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"My description\"),\n\t\t\tDisplayName: pulumi.String(\"display_name\"),\n\t\t\tInspectConfig: \u0026dataloss.PreventionInspectTemplateInspectConfigArgs{\n\t\t\t\tCustomInfoTypes: dataloss.PreventionInspectTemplateInspectConfigCustomInfoTypeArray{\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigCustomInfoTypeArgs{\n\t\t\t\t\t\tInfoType: \u0026dataloss.PreventionInspectTemplateInspectConfigCustomInfoTypeInfoTypeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"MY_CUSTOM_TYPE\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tLikelihood: pulumi.String(\"UNLIKELY\"),\n\t\t\t\t\t\tSurrogateType: nil,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tInfoTypes: dataloss.PreventionInspectTemplateInspectConfigInfoTypeArray{\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigInfoTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"EMAIL_ADDRESS\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMinLikelihood: pulumi.String(\"UNLIKELY\"),\n\t\t\t\tRuleSets: dataloss.PreventionInspectTemplateInspectConfigRuleSetArray{\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetArgs{\n\t\t\t\t\t\tInfoTypes: dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"EMAIL_ADDRESS\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRules: dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArgs{\n\t\t\t\t\t\t\t\tExclusionRule: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs{\n\t\t\t\t\t\t\t\t\tRegex: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleRegexArgs{\n\t\t\t\t\t\t\t\t\t\tPattern: pulumi.String(\".+@example.com\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tMatchingType: pulumi.String(\"MATCHING_TYPE_FULL_MATCH\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetArgs{\n\t\t\t\t\t\tInfoTypes: dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"MY_CUSTOM_TYPE\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRules: dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArgs{\n\t\t\t\t\t\t\t\tHotwordRule: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleArgs{\n\t\t\t\t\t\t\t\t\tHotwordRegex: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs{\n\t\t\t\t\t\t\t\t\t\tPattern: pulumi.String(\"example*\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tProximity: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleProximityArgs{\n\t\t\t\t\t\t\t\t\t\tWindowBefore: pulumi.Int(50),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tLikelihoodAdjustment: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs{\n\t\t\t\t\t\t\t\t\t\tFixedLikelihood: pulumi.String(\"VERY_LIKELY\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tLimits: \u0026dataloss.PreventionInspectTemplateInspectConfigLimitsArgs{\n\t\t\t\t\tMaxFindingsPerItem: pulumi.Int(10),\n\t\t\t\t\tMaxFindingsPerRequest: pulumi.Int(50),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataloss.PreventionInspectTemplate;\nimport com.pulumi.gcp.dataloss.PreventionInspectTemplateArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionInspectTemplateInspectConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionInspectTemplateInspectConfigLimitsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var customTypeSurrogate = new PreventionInspectTemplate(\"customTypeSurrogate\", PreventionInspectTemplateArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"My description\")\n .displayName(\"display_name\")\n .inspectConfig(PreventionInspectTemplateInspectConfigArgs.builder()\n .customInfoTypes(PreventionInspectTemplateInspectConfigCustomInfoTypeArgs.builder()\n .infoType(PreventionInspectTemplateInspectConfigCustomInfoTypeInfoTypeArgs.builder()\n .name(\"MY_CUSTOM_TYPE\")\n .build())\n .likelihood(\"UNLIKELY\")\n .surrogateType()\n .build())\n .infoTypes(PreventionInspectTemplateInspectConfigInfoTypeArgs.builder()\n .name(\"EMAIL_ADDRESS\")\n .build())\n .minLikelihood(\"UNLIKELY\")\n .ruleSets( \n PreventionInspectTemplateInspectConfigRuleSetArgs.builder()\n .infoTypes(PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"EMAIL_ADDRESS\")\n .build())\n .rules(PreventionInspectTemplateInspectConfigRuleSetRuleArgs.builder()\n .exclusionRule(PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs.builder()\n .regex(PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleRegexArgs.builder()\n .pattern(\".+@example.com\")\n .build())\n .matchingType(\"MATCHING_TYPE_FULL_MATCH\")\n .build())\n .build())\n .build(),\n PreventionInspectTemplateInspectConfigRuleSetArgs.builder()\n .infoTypes(PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"MY_CUSTOM_TYPE\")\n .build())\n .rules(PreventionInspectTemplateInspectConfigRuleSetRuleArgs.builder()\n .hotwordRule(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleArgs.builder()\n .hotwordRegex(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs.builder()\n .pattern(\"example*\")\n .build())\n .proximity(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleProximityArgs.builder()\n .windowBefore(50)\n .build())\n .likelihoodAdjustment(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs.builder()\n .fixedLikelihood(\"VERY_LIKELY\")\n .build())\n .build())\n .build())\n .build())\n .limits(PreventionInspectTemplateInspectConfigLimitsArgs.builder()\n .maxFindingsPerItem(10)\n .maxFindingsPerRequest(50)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n customTypeSurrogate:\n type: gcp:dataloss:PreventionInspectTemplate\n name: custom_type_surrogate\n properties:\n parent: projects/my-project-name\n description: My description\n displayName: display_name\n inspectConfig:\n customInfoTypes:\n - infoType:\n name: MY_CUSTOM_TYPE\n likelihood: UNLIKELY\n surrogateType: {}\n infoTypes:\n - name: EMAIL_ADDRESS\n minLikelihood: UNLIKELY\n ruleSets:\n - infoTypes:\n - name: EMAIL_ADDRESS\n rules:\n - exclusionRule:\n regex:\n pattern: .+@example.com\n matchingType: MATCHING_TYPE_FULL_MATCH\n - infoTypes:\n - name: MY_CUSTOM_TYPE\n rules:\n - hotwordRule:\n hotwordRegex:\n pattern: example*\n proximity:\n windowBefore: 50\n likelihoodAdjustment:\n fixedLikelihood: VERY_LIKELY\n limits:\n maxFindingsPerItem: 10\n maxFindingsPerRequest: 50\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Inspect Template Max Infotype Per Finding Default\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst maxInfotypePerFindingDefault = new gcp.dataloss.PreventionInspectTemplate(\"max_infotype_per_finding_default\", {\n parent: \"projects/my-project-name\",\n inspectConfig: {\n infoTypes: [\n {\n name: \"EMAIL_ADDRESS\",\n },\n {\n name: \"PERSON_NAME\",\n },\n ],\n minLikelihood: \"UNLIKELY\",\n limits: {\n maxFindingsPerRequest: 333,\n maxFindingsPerItem: 222,\n maxFindingsPerInfoTypes: [{\n maxFindings: 111,\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmax_infotype_per_finding_default = gcp.dataloss.PreventionInspectTemplate(\"max_infotype_per_finding_default\",\n parent=\"projects/my-project-name\",\n inspect_config={\n \"info_types\": [\n {\n \"name\": \"EMAIL_ADDRESS\",\n },\n {\n \"name\": \"PERSON_NAME\",\n },\n ],\n \"min_likelihood\": \"UNLIKELY\",\n \"limits\": {\n \"max_findings_per_request\": 333,\n \"max_findings_per_item\": 222,\n \"max_findings_per_info_types\": [{\n \"max_findings\": 111,\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var maxInfotypePerFindingDefault = new Gcp.DataLoss.PreventionInspectTemplate(\"max_infotype_per_finding_default\", new()\n {\n Parent = \"projects/my-project-name\",\n InspectConfig = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigInfoTypeArgs\n {\n Name = \"EMAIL_ADDRESS\",\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigInfoTypeArgs\n {\n Name = \"PERSON_NAME\",\n },\n },\n MinLikelihood = \"UNLIKELY\",\n Limits = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigLimitsArgs\n {\n MaxFindingsPerRequest = 333,\n MaxFindingsPerItem = 222,\n MaxFindingsPerInfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeArgs\n {\n MaxFindings = 111,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataloss.NewPreventionInspectTemplate(ctx, \"max_infotype_per_finding_default\", \u0026dataloss.PreventionInspectTemplateArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tInspectConfig: \u0026dataloss.PreventionInspectTemplateInspectConfigArgs{\n\t\t\t\tInfoTypes: dataloss.PreventionInspectTemplateInspectConfigInfoTypeArray{\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigInfoTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"EMAIL_ADDRESS\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigInfoTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"PERSON_NAME\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMinLikelihood: pulumi.String(\"UNLIKELY\"),\n\t\t\t\tLimits: \u0026dataloss.PreventionInspectTemplateInspectConfigLimitsArgs{\n\t\t\t\t\tMaxFindingsPerRequest: pulumi.Int(333),\n\t\t\t\t\tMaxFindingsPerItem: pulumi.Int(222),\n\t\t\t\t\tMaxFindingsPerInfoTypes: dataloss.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeArray{\n\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeArgs{\n\t\t\t\t\t\t\tMaxFindings: pulumi.Int(111),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataloss.PreventionInspectTemplate;\nimport com.pulumi.gcp.dataloss.PreventionInspectTemplateArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionInspectTemplateInspectConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionInspectTemplateInspectConfigLimitsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var maxInfotypePerFindingDefault = new PreventionInspectTemplate(\"maxInfotypePerFindingDefault\", PreventionInspectTemplateArgs.builder()\n .parent(\"projects/my-project-name\")\n .inspectConfig(PreventionInspectTemplateInspectConfigArgs.builder()\n .infoTypes( \n PreventionInspectTemplateInspectConfigInfoTypeArgs.builder()\n .name(\"EMAIL_ADDRESS\")\n .build(),\n PreventionInspectTemplateInspectConfigInfoTypeArgs.builder()\n .name(\"PERSON_NAME\")\n .build())\n .minLikelihood(\"UNLIKELY\")\n .limits(PreventionInspectTemplateInspectConfigLimitsArgs.builder()\n .maxFindingsPerRequest(333)\n .maxFindingsPerItem(222)\n .maxFindingsPerInfoTypes(PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeArgs.builder()\n .maxFindings(111)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n maxInfotypePerFindingDefault:\n type: gcp:dataloss:PreventionInspectTemplate\n name: max_infotype_per_finding_default\n properties:\n parent: projects/my-project-name\n inspectConfig:\n infoTypes:\n - name: EMAIL_ADDRESS\n - name: PERSON_NAME\n minLikelihood: UNLIKELY\n limits:\n maxFindingsPerRequest: 333\n maxFindingsPerItem: 222\n maxFindingsPerInfoTypes:\n - maxFindings: 111\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInspectTemplate can be imported using any of these accepted formats:\n\n* `{{parent}}/inspectTemplates/{{name}}`\n\n* `{{parent}}/{{name}}`\n\nWhen using the `pulumi import` command, InspectTemplate can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataloss/preventionInspectTemplate:PreventionInspectTemplate default {{parent}}/inspectTemplates/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataloss/preventionInspectTemplate:PreventionInspectTemplate default {{parent}}/{{name}}\n```\n\n", + "description": "An inspect job template.\n\n\nTo get more information about InspectTemplate, see:\n\n* [API documentation](https://cloud.google.com/dlp/docs/reference/rest/v2/projects.inspectTemplates)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dlp/docs/creating-templates-inspect)\n\n## Example Usage\n\n### Dlp Inspect Template Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.dataloss.PreventionInspectTemplate(\"basic\", {\n parent: \"projects/my-project-name\",\n description: \"My description\",\n displayName: \"display_name\",\n inspectConfig: {\n infoTypes: [\n {\n name: \"EMAIL_ADDRESS\",\n },\n {\n name: \"PERSON_NAME\",\n },\n {\n name: \"LAST_NAME\",\n },\n {\n name: \"DOMAIN_NAME\",\n },\n {\n name: \"PHONE_NUMBER\",\n },\n {\n name: \"FIRST_NAME\",\n },\n ],\n minLikelihood: \"UNLIKELY\",\n ruleSets: [\n {\n infoTypes: [{\n name: \"EMAIL_ADDRESS\",\n }],\n rules: [{\n exclusionRule: {\n regex: {\n pattern: \".+@example.com\",\n },\n matchingType: \"MATCHING_TYPE_FULL_MATCH\",\n },\n }],\n },\n {\n infoTypes: [\n {\n name: \"EMAIL_ADDRESS\",\n },\n {\n name: \"DOMAIN_NAME\",\n },\n {\n name: \"PHONE_NUMBER\",\n },\n {\n name: \"PERSON_NAME\",\n },\n {\n name: \"FIRST_NAME\",\n },\n ],\n rules: [{\n exclusionRule: {\n dictionary: {\n wordList: {\n words: [\"TEST\"],\n },\n },\n matchingType: \"MATCHING_TYPE_PARTIAL_MATCH\",\n },\n }],\n },\n {\n infoTypes: [{\n name: \"PERSON_NAME\",\n }],\n rules: [{\n hotwordRule: {\n hotwordRegex: {\n pattern: \"patient\",\n },\n proximity: {\n windowBefore: 50,\n },\n likelihoodAdjustment: {\n fixedLikelihood: \"VERY_LIKELY\",\n },\n },\n }],\n },\n ],\n limits: {\n maxFindingsPerItem: 10,\n maxFindingsPerRequest: 50,\n maxFindingsPerInfoTypes: [\n {\n maxFindings: 75,\n infoType: {\n name: \"PERSON_NAME\",\n },\n },\n {\n maxFindings: 80,\n infoType: {\n name: \"LAST_NAME\",\n },\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.dataloss.PreventionInspectTemplate(\"basic\",\n parent=\"projects/my-project-name\",\n description=\"My description\",\n display_name=\"display_name\",\n inspect_config={\n \"info_types\": [\n {\n \"name\": \"EMAIL_ADDRESS\",\n },\n {\n \"name\": \"PERSON_NAME\",\n },\n {\n \"name\": \"LAST_NAME\",\n },\n {\n \"name\": \"DOMAIN_NAME\",\n },\n {\n \"name\": \"PHONE_NUMBER\",\n },\n {\n \"name\": \"FIRST_NAME\",\n },\n ],\n \"min_likelihood\": \"UNLIKELY\",\n \"rule_sets\": [\n {\n \"info_types\": [{\n \"name\": \"EMAIL_ADDRESS\",\n }],\n \"rules\": [{\n \"exclusion_rule\": {\n \"regex\": {\n \"pattern\": \".+@example.com\",\n },\n \"matching_type\": \"MATCHING_TYPE_FULL_MATCH\",\n },\n }],\n },\n {\n \"info_types\": [\n {\n \"name\": \"EMAIL_ADDRESS\",\n },\n {\n \"name\": \"DOMAIN_NAME\",\n },\n {\n \"name\": \"PHONE_NUMBER\",\n },\n {\n \"name\": \"PERSON_NAME\",\n },\n {\n \"name\": \"FIRST_NAME\",\n },\n ],\n \"rules\": [{\n \"exclusion_rule\": {\n \"dictionary\": {\n \"word_list\": {\n \"words\": [\"TEST\"],\n },\n },\n \"matching_type\": \"MATCHING_TYPE_PARTIAL_MATCH\",\n },\n }],\n },\n {\n \"info_types\": [{\n \"name\": \"PERSON_NAME\",\n }],\n \"rules\": [{\n \"hotword_rule\": {\n \"hotword_regex\": {\n \"pattern\": \"patient\",\n },\n \"proximity\": {\n \"window_before\": 50,\n },\n \"likelihood_adjustment\": {\n \"fixed_likelihood\": \"VERY_LIKELY\",\n },\n },\n }],\n },\n ],\n \"limits\": {\n \"max_findings_per_item\": 10,\n \"max_findings_per_request\": 50,\n \"max_findings_per_info_types\": [\n {\n \"max_findings\": 75,\n \"info_type\": {\n \"name\": \"PERSON_NAME\",\n },\n },\n {\n \"max_findings\": 80,\n \"info_type\": {\n \"name\": \"LAST_NAME\",\n },\n },\n ],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basic = new Gcp.DataLoss.PreventionInspectTemplate(\"basic\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"My description\",\n DisplayName = \"display_name\",\n InspectConfig = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigInfoTypeArgs\n {\n Name = \"EMAIL_ADDRESS\",\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigInfoTypeArgs\n {\n Name = \"PERSON_NAME\",\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigInfoTypeArgs\n {\n Name = \"LAST_NAME\",\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigInfoTypeArgs\n {\n Name = \"DOMAIN_NAME\",\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigInfoTypeArgs\n {\n Name = \"PHONE_NUMBER\",\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigInfoTypeArgs\n {\n Name = \"FIRST_NAME\",\n },\n },\n MinLikelihood = \"UNLIKELY\",\n RuleSets = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"EMAIL_ADDRESS\",\n },\n },\n Rules = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleArgs\n {\n ExclusionRule = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs\n {\n Regex = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleRegexArgs\n {\n Pattern = \".+@example.com\",\n },\n MatchingType = \"MATCHING_TYPE_FULL_MATCH\",\n },\n },\n },\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"EMAIL_ADDRESS\",\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"DOMAIN_NAME\",\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"PHONE_NUMBER\",\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"PERSON_NAME\",\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"FIRST_NAME\",\n },\n },\n Rules = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleArgs\n {\n ExclusionRule = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs\n {\n Dictionary = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleDictionaryArgs\n {\n WordList = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleDictionaryWordListArgs\n {\n Words = new[]\n {\n \"TEST\",\n },\n },\n },\n MatchingType = \"MATCHING_TYPE_PARTIAL_MATCH\",\n },\n },\n },\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"PERSON_NAME\",\n },\n },\n Rules = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleArgs\n {\n HotwordRule = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleArgs\n {\n HotwordRegex = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs\n {\n Pattern = \"patient\",\n },\n Proximity = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleProximityArgs\n {\n WindowBefore = 50,\n },\n LikelihoodAdjustment = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs\n {\n FixedLikelihood = \"VERY_LIKELY\",\n },\n },\n },\n },\n },\n },\n Limits = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigLimitsArgs\n {\n MaxFindingsPerItem = 10,\n MaxFindingsPerRequest = 50,\n MaxFindingsPerInfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeArgs\n {\n MaxFindings = 75,\n InfoType = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeInfoTypeArgs\n {\n Name = \"PERSON_NAME\",\n },\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeArgs\n {\n MaxFindings = 80,\n InfoType = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeInfoTypeArgs\n {\n Name = \"LAST_NAME\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataloss.NewPreventionInspectTemplate(ctx, \"basic\", \u0026dataloss.PreventionInspectTemplateArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"My description\"),\n\t\t\tDisplayName: pulumi.String(\"display_name\"),\n\t\t\tInspectConfig: \u0026dataloss.PreventionInspectTemplateInspectConfigArgs{\n\t\t\t\tInfoTypes: dataloss.PreventionInspectTemplateInspectConfigInfoTypeArray{\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigInfoTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"EMAIL_ADDRESS\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigInfoTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"PERSON_NAME\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigInfoTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"LAST_NAME\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigInfoTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"DOMAIN_NAME\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigInfoTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"PHONE_NUMBER\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigInfoTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"FIRST_NAME\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMinLikelihood: pulumi.String(\"UNLIKELY\"),\n\t\t\t\tRuleSets: dataloss.PreventionInspectTemplateInspectConfigRuleSetArray{\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetArgs{\n\t\t\t\t\t\tInfoTypes: dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"EMAIL_ADDRESS\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRules: dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArgs{\n\t\t\t\t\t\t\t\tExclusionRule: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs{\n\t\t\t\t\t\t\t\t\tRegex: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleRegexArgs{\n\t\t\t\t\t\t\t\t\t\tPattern: pulumi.String(\".+@example.com\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tMatchingType: pulumi.String(\"MATCHING_TYPE_FULL_MATCH\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetArgs{\n\t\t\t\t\t\tInfoTypes: dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"EMAIL_ADDRESS\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"DOMAIN_NAME\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"PHONE_NUMBER\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"PERSON_NAME\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"FIRST_NAME\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRules: dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArgs{\n\t\t\t\t\t\t\t\tExclusionRule: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs{\n\t\t\t\t\t\t\t\t\tDictionary: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleDictionaryArgs{\n\t\t\t\t\t\t\t\t\t\tWordList: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleDictionaryWordListArgs{\n\t\t\t\t\t\t\t\t\t\t\tWords: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"TEST\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tMatchingType: pulumi.String(\"MATCHING_TYPE_PARTIAL_MATCH\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetArgs{\n\t\t\t\t\t\tInfoTypes: dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"PERSON_NAME\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRules: dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArgs{\n\t\t\t\t\t\t\t\tHotwordRule: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleArgs{\n\t\t\t\t\t\t\t\t\tHotwordRegex: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs{\n\t\t\t\t\t\t\t\t\t\tPattern: pulumi.String(\"patient\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tProximity: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleProximityArgs{\n\t\t\t\t\t\t\t\t\t\tWindowBefore: pulumi.Int(50),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tLikelihoodAdjustment: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs{\n\t\t\t\t\t\t\t\t\t\tFixedLikelihood: pulumi.String(\"VERY_LIKELY\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tLimits: \u0026dataloss.PreventionInspectTemplateInspectConfigLimitsArgs{\n\t\t\t\t\tMaxFindingsPerItem: pulumi.Int(10),\n\t\t\t\t\tMaxFindingsPerRequest: pulumi.Int(50),\n\t\t\t\t\tMaxFindingsPerInfoTypes: dataloss.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeArray{\n\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeArgs{\n\t\t\t\t\t\t\tMaxFindings: pulumi.Int(75),\n\t\t\t\t\t\t\tInfoType: \u0026dataloss.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"PERSON_NAME\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeArgs{\n\t\t\t\t\t\t\tMaxFindings: pulumi.Int(80),\n\t\t\t\t\t\t\tInfoType: \u0026dataloss.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"LAST_NAME\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataloss.PreventionInspectTemplate;\nimport com.pulumi.gcp.dataloss.PreventionInspectTemplateArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionInspectTemplateInspectConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionInspectTemplateInspectConfigLimitsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basic = new PreventionInspectTemplate(\"basic\", PreventionInspectTemplateArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"My description\")\n .displayName(\"display_name\")\n .inspectConfig(PreventionInspectTemplateInspectConfigArgs.builder()\n .infoTypes( \n PreventionInspectTemplateInspectConfigInfoTypeArgs.builder()\n .name(\"EMAIL_ADDRESS\")\n .build(),\n PreventionInspectTemplateInspectConfigInfoTypeArgs.builder()\n .name(\"PERSON_NAME\")\n .build(),\n PreventionInspectTemplateInspectConfigInfoTypeArgs.builder()\n .name(\"LAST_NAME\")\n .build(),\n PreventionInspectTemplateInspectConfigInfoTypeArgs.builder()\n .name(\"DOMAIN_NAME\")\n .build(),\n PreventionInspectTemplateInspectConfigInfoTypeArgs.builder()\n .name(\"PHONE_NUMBER\")\n .build(),\n PreventionInspectTemplateInspectConfigInfoTypeArgs.builder()\n .name(\"FIRST_NAME\")\n .build())\n .minLikelihood(\"UNLIKELY\")\n .ruleSets( \n PreventionInspectTemplateInspectConfigRuleSetArgs.builder()\n .infoTypes(PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"EMAIL_ADDRESS\")\n .build())\n .rules(PreventionInspectTemplateInspectConfigRuleSetRuleArgs.builder()\n .exclusionRule(PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs.builder()\n .regex(PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleRegexArgs.builder()\n .pattern(\".+@example.com\")\n .build())\n .matchingType(\"MATCHING_TYPE_FULL_MATCH\")\n .build())\n .build())\n .build(),\n PreventionInspectTemplateInspectConfigRuleSetArgs.builder()\n .infoTypes( \n PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"EMAIL_ADDRESS\")\n .build(),\n PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"DOMAIN_NAME\")\n .build(),\n PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"PHONE_NUMBER\")\n .build(),\n PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"PERSON_NAME\")\n .build(),\n PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"FIRST_NAME\")\n .build())\n .rules(PreventionInspectTemplateInspectConfigRuleSetRuleArgs.builder()\n .exclusionRule(PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs.builder()\n .dictionary(PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleDictionaryArgs.builder()\n .wordList(PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleDictionaryWordListArgs.builder()\n .words(\"TEST\")\n .build())\n .build())\n .matchingType(\"MATCHING_TYPE_PARTIAL_MATCH\")\n .build())\n .build())\n .build(),\n PreventionInspectTemplateInspectConfigRuleSetArgs.builder()\n .infoTypes(PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"PERSON_NAME\")\n .build())\n .rules(PreventionInspectTemplateInspectConfigRuleSetRuleArgs.builder()\n .hotwordRule(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleArgs.builder()\n .hotwordRegex(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs.builder()\n .pattern(\"patient\")\n .build())\n .proximity(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleProximityArgs.builder()\n .windowBefore(50)\n .build())\n .likelihoodAdjustment(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs.builder()\n .fixedLikelihood(\"VERY_LIKELY\")\n .build())\n .build())\n .build())\n .build())\n .limits(PreventionInspectTemplateInspectConfigLimitsArgs.builder()\n .maxFindingsPerItem(10)\n .maxFindingsPerRequest(50)\n .maxFindingsPerInfoTypes( \n PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeArgs.builder()\n .maxFindings(\"75\")\n .infoType(PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeInfoTypeArgs.builder()\n .name(\"PERSON_NAME\")\n .build())\n .build(),\n PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeArgs.builder()\n .maxFindings(\"80\")\n .infoType(PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeInfoTypeArgs.builder()\n .name(\"LAST_NAME\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:dataloss:PreventionInspectTemplate\n properties:\n parent: projects/my-project-name\n description: My description\n displayName: display_name\n inspectConfig:\n infoTypes:\n - name: EMAIL_ADDRESS\n - name: PERSON_NAME\n - name: LAST_NAME\n - name: DOMAIN_NAME\n - name: PHONE_NUMBER\n - name: FIRST_NAME\n minLikelihood: UNLIKELY\n ruleSets:\n - infoTypes:\n - name: EMAIL_ADDRESS\n rules:\n - exclusionRule:\n regex:\n pattern: .+@example.com\n matchingType: MATCHING_TYPE_FULL_MATCH\n - infoTypes:\n - name: EMAIL_ADDRESS\n - name: DOMAIN_NAME\n - name: PHONE_NUMBER\n - name: PERSON_NAME\n - name: FIRST_NAME\n rules:\n - exclusionRule:\n dictionary:\n wordList:\n words:\n - TEST\n matchingType: MATCHING_TYPE_PARTIAL_MATCH\n - infoTypes:\n - name: PERSON_NAME\n rules:\n - hotwordRule:\n hotwordRegex:\n pattern: patient\n proximity:\n windowBefore: 50\n likelihoodAdjustment:\n fixedLikelihood: VERY_LIKELY\n limits:\n maxFindingsPerItem: 10\n maxFindingsPerRequest: 50\n maxFindingsPerInfoTypes:\n - maxFindings: '75'\n infoType:\n name: PERSON_NAME\n - maxFindings: '80'\n infoType:\n name: LAST_NAME\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Inspect Template Custom Type\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst custom = new gcp.dataloss.PreventionInspectTemplate(\"custom\", {\n parent: \"projects/my-project-name\",\n description: \"My description\",\n displayName: \"display_name\",\n inspectConfig: {\n customInfoTypes: [{\n infoType: {\n name: \"MY_CUSTOM_TYPE\",\n },\n likelihood: \"UNLIKELY\",\n regex: {\n pattern: \"test*\",\n },\n }],\n infoTypes: [{\n name: \"EMAIL_ADDRESS\",\n }],\n minLikelihood: \"UNLIKELY\",\n ruleSets: [\n {\n infoTypes: [{\n name: \"EMAIL_ADDRESS\",\n }],\n rules: [{\n exclusionRule: {\n regex: {\n pattern: \".+@example.com\",\n },\n matchingType: \"MATCHING_TYPE_FULL_MATCH\",\n },\n }],\n },\n {\n infoTypes: [{\n name: \"MY_CUSTOM_TYPE\",\n }],\n rules: [{\n hotwordRule: {\n hotwordRegex: {\n pattern: \"example*\",\n },\n proximity: {\n windowBefore: 50,\n },\n likelihoodAdjustment: {\n fixedLikelihood: \"VERY_LIKELY\",\n },\n },\n }],\n },\n ],\n limits: {\n maxFindingsPerItem: 10,\n maxFindingsPerRequest: 50,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom = gcp.dataloss.PreventionInspectTemplate(\"custom\",\n parent=\"projects/my-project-name\",\n description=\"My description\",\n display_name=\"display_name\",\n inspect_config={\n \"custom_info_types\": [{\n \"info_type\": {\n \"name\": \"MY_CUSTOM_TYPE\",\n },\n \"likelihood\": \"UNLIKELY\",\n \"regex\": {\n \"pattern\": \"test*\",\n },\n }],\n \"info_types\": [{\n \"name\": \"EMAIL_ADDRESS\",\n }],\n \"min_likelihood\": \"UNLIKELY\",\n \"rule_sets\": [\n {\n \"info_types\": [{\n \"name\": \"EMAIL_ADDRESS\",\n }],\n \"rules\": [{\n \"exclusion_rule\": {\n \"regex\": {\n \"pattern\": \".+@example.com\",\n },\n \"matching_type\": \"MATCHING_TYPE_FULL_MATCH\",\n },\n }],\n },\n {\n \"info_types\": [{\n \"name\": \"MY_CUSTOM_TYPE\",\n }],\n \"rules\": [{\n \"hotword_rule\": {\n \"hotword_regex\": {\n \"pattern\": \"example*\",\n },\n \"proximity\": {\n \"window_before\": 50,\n },\n \"likelihood_adjustment\": {\n \"fixed_likelihood\": \"VERY_LIKELY\",\n },\n },\n }],\n },\n ],\n \"limits\": {\n \"max_findings_per_item\": 10,\n \"max_findings_per_request\": 50,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var custom = new Gcp.DataLoss.PreventionInspectTemplate(\"custom\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"My description\",\n DisplayName = \"display_name\",\n InspectConfig = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigArgs\n {\n CustomInfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigCustomInfoTypeArgs\n {\n InfoType = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigCustomInfoTypeInfoTypeArgs\n {\n Name = \"MY_CUSTOM_TYPE\",\n },\n Likelihood = \"UNLIKELY\",\n Regex = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigCustomInfoTypeRegexArgs\n {\n Pattern = \"test*\",\n },\n },\n },\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigInfoTypeArgs\n {\n Name = \"EMAIL_ADDRESS\",\n },\n },\n MinLikelihood = \"UNLIKELY\",\n RuleSets = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"EMAIL_ADDRESS\",\n },\n },\n Rules = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleArgs\n {\n ExclusionRule = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs\n {\n Regex = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleRegexArgs\n {\n Pattern = \".+@example.com\",\n },\n MatchingType = \"MATCHING_TYPE_FULL_MATCH\",\n },\n },\n },\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"MY_CUSTOM_TYPE\",\n },\n },\n Rules = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleArgs\n {\n HotwordRule = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleArgs\n {\n HotwordRegex = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs\n {\n Pattern = \"example*\",\n },\n Proximity = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleProximityArgs\n {\n WindowBefore = 50,\n },\n LikelihoodAdjustment = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs\n {\n FixedLikelihood = \"VERY_LIKELY\",\n },\n },\n },\n },\n },\n },\n Limits = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigLimitsArgs\n {\n MaxFindingsPerItem = 10,\n MaxFindingsPerRequest = 50,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataloss.NewPreventionInspectTemplate(ctx, \"custom\", \u0026dataloss.PreventionInspectTemplateArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"My description\"),\n\t\t\tDisplayName: pulumi.String(\"display_name\"),\n\t\t\tInspectConfig: \u0026dataloss.PreventionInspectTemplateInspectConfigArgs{\n\t\t\t\tCustomInfoTypes: dataloss.PreventionInspectTemplateInspectConfigCustomInfoTypeArray{\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigCustomInfoTypeArgs{\n\t\t\t\t\t\tInfoType: \u0026dataloss.PreventionInspectTemplateInspectConfigCustomInfoTypeInfoTypeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"MY_CUSTOM_TYPE\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tLikelihood: pulumi.String(\"UNLIKELY\"),\n\t\t\t\t\t\tRegex: \u0026dataloss.PreventionInspectTemplateInspectConfigCustomInfoTypeRegexArgs{\n\t\t\t\t\t\t\tPattern: pulumi.String(\"test*\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tInfoTypes: dataloss.PreventionInspectTemplateInspectConfigInfoTypeArray{\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigInfoTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"EMAIL_ADDRESS\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMinLikelihood: pulumi.String(\"UNLIKELY\"),\n\t\t\t\tRuleSets: dataloss.PreventionInspectTemplateInspectConfigRuleSetArray{\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetArgs{\n\t\t\t\t\t\tInfoTypes: dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"EMAIL_ADDRESS\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRules: dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArgs{\n\t\t\t\t\t\t\t\tExclusionRule: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs{\n\t\t\t\t\t\t\t\t\tRegex: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleRegexArgs{\n\t\t\t\t\t\t\t\t\t\tPattern: pulumi.String(\".+@example.com\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tMatchingType: pulumi.String(\"MATCHING_TYPE_FULL_MATCH\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetArgs{\n\t\t\t\t\t\tInfoTypes: dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"MY_CUSTOM_TYPE\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRules: dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArgs{\n\t\t\t\t\t\t\t\tHotwordRule: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleArgs{\n\t\t\t\t\t\t\t\t\tHotwordRegex: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs{\n\t\t\t\t\t\t\t\t\t\tPattern: pulumi.String(\"example*\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tProximity: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleProximityArgs{\n\t\t\t\t\t\t\t\t\t\tWindowBefore: pulumi.Int(50),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tLikelihoodAdjustment: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs{\n\t\t\t\t\t\t\t\t\t\tFixedLikelihood: pulumi.String(\"VERY_LIKELY\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tLimits: \u0026dataloss.PreventionInspectTemplateInspectConfigLimitsArgs{\n\t\t\t\t\tMaxFindingsPerItem: pulumi.Int(10),\n\t\t\t\t\tMaxFindingsPerRequest: pulumi.Int(50),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataloss.PreventionInspectTemplate;\nimport com.pulumi.gcp.dataloss.PreventionInspectTemplateArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionInspectTemplateInspectConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionInspectTemplateInspectConfigLimitsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var custom = new PreventionInspectTemplate(\"custom\", PreventionInspectTemplateArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"My description\")\n .displayName(\"display_name\")\n .inspectConfig(PreventionInspectTemplateInspectConfigArgs.builder()\n .customInfoTypes(PreventionInspectTemplateInspectConfigCustomInfoTypeArgs.builder()\n .infoType(PreventionInspectTemplateInspectConfigCustomInfoTypeInfoTypeArgs.builder()\n .name(\"MY_CUSTOM_TYPE\")\n .build())\n .likelihood(\"UNLIKELY\")\n .regex(PreventionInspectTemplateInspectConfigCustomInfoTypeRegexArgs.builder()\n .pattern(\"test*\")\n .build())\n .build())\n .infoTypes(PreventionInspectTemplateInspectConfigInfoTypeArgs.builder()\n .name(\"EMAIL_ADDRESS\")\n .build())\n .minLikelihood(\"UNLIKELY\")\n .ruleSets( \n PreventionInspectTemplateInspectConfigRuleSetArgs.builder()\n .infoTypes(PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"EMAIL_ADDRESS\")\n .build())\n .rules(PreventionInspectTemplateInspectConfigRuleSetRuleArgs.builder()\n .exclusionRule(PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs.builder()\n .regex(PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleRegexArgs.builder()\n .pattern(\".+@example.com\")\n .build())\n .matchingType(\"MATCHING_TYPE_FULL_MATCH\")\n .build())\n .build())\n .build(),\n PreventionInspectTemplateInspectConfigRuleSetArgs.builder()\n .infoTypes(PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"MY_CUSTOM_TYPE\")\n .build())\n .rules(PreventionInspectTemplateInspectConfigRuleSetRuleArgs.builder()\n .hotwordRule(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleArgs.builder()\n .hotwordRegex(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs.builder()\n .pattern(\"example*\")\n .build())\n .proximity(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleProximityArgs.builder()\n .windowBefore(50)\n .build())\n .likelihoodAdjustment(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs.builder()\n .fixedLikelihood(\"VERY_LIKELY\")\n .build())\n .build())\n .build())\n .build())\n .limits(PreventionInspectTemplateInspectConfigLimitsArgs.builder()\n .maxFindingsPerItem(10)\n .maxFindingsPerRequest(50)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n custom:\n type: gcp:dataloss:PreventionInspectTemplate\n properties:\n parent: projects/my-project-name\n description: My description\n displayName: display_name\n inspectConfig:\n customInfoTypes:\n - infoType:\n name: MY_CUSTOM_TYPE\n likelihood: UNLIKELY\n regex:\n pattern: test*\n infoTypes:\n - name: EMAIL_ADDRESS\n minLikelihood: UNLIKELY\n ruleSets:\n - infoTypes:\n - name: EMAIL_ADDRESS\n rules:\n - exclusionRule:\n regex:\n pattern: .+@example.com\n matchingType: MATCHING_TYPE_FULL_MATCH\n - infoTypes:\n - name: MY_CUSTOM_TYPE\n rules:\n - hotwordRule:\n hotwordRegex:\n pattern: example*\n proximity:\n windowBefore: 50\n likelihoodAdjustment:\n fixedLikelihood: VERY_LIKELY\n limits:\n maxFindingsPerItem: 10\n maxFindingsPerRequest: 50\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Inspect Template Custom Type Surrogate\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst customTypeSurrogate = new gcp.dataloss.PreventionInspectTemplate(\"custom_type_surrogate\", {\n parent: \"projects/my-project-name\",\n description: \"My description\",\n displayName: \"display_name\",\n inspectConfig: {\n customInfoTypes: [{\n infoType: {\n name: \"MY_CUSTOM_TYPE\",\n },\n likelihood: \"UNLIKELY\",\n surrogateType: {},\n }],\n infoTypes: [{\n name: \"EMAIL_ADDRESS\",\n }],\n minLikelihood: \"UNLIKELY\",\n ruleSets: [\n {\n infoTypes: [{\n name: \"EMAIL_ADDRESS\",\n }],\n rules: [{\n exclusionRule: {\n regex: {\n pattern: \".+@example.com\",\n },\n matchingType: \"MATCHING_TYPE_FULL_MATCH\",\n },\n }],\n },\n {\n infoTypes: [{\n name: \"MY_CUSTOM_TYPE\",\n }],\n rules: [{\n hotwordRule: {\n hotwordRegex: {\n pattern: \"example*\",\n },\n proximity: {\n windowBefore: 50,\n },\n likelihoodAdjustment: {\n fixedLikelihood: \"VERY_LIKELY\",\n },\n },\n }],\n },\n ],\n limits: {\n maxFindingsPerItem: 10,\n maxFindingsPerRequest: 50,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_type_surrogate = gcp.dataloss.PreventionInspectTemplate(\"custom_type_surrogate\",\n parent=\"projects/my-project-name\",\n description=\"My description\",\n display_name=\"display_name\",\n inspect_config={\n \"custom_info_types\": [{\n \"info_type\": {\n \"name\": \"MY_CUSTOM_TYPE\",\n },\n \"likelihood\": \"UNLIKELY\",\n \"surrogate_type\": {},\n }],\n \"info_types\": [{\n \"name\": \"EMAIL_ADDRESS\",\n }],\n \"min_likelihood\": \"UNLIKELY\",\n \"rule_sets\": [\n {\n \"info_types\": [{\n \"name\": \"EMAIL_ADDRESS\",\n }],\n \"rules\": [{\n \"exclusion_rule\": {\n \"regex\": {\n \"pattern\": \".+@example.com\",\n },\n \"matching_type\": \"MATCHING_TYPE_FULL_MATCH\",\n },\n }],\n },\n {\n \"info_types\": [{\n \"name\": \"MY_CUSTOM_TYPE\",\n }],\n \"rules\": [{\n \"hotword_rule\": {\n \"hotword_regex\": {\n \"pattern\": \"example*\",\n },\n \"proximity\": {\n \"window_before\": 50,\n },\n \"likelihood_adjustment\": {\n \"fixed_likelihood\": \"VERY_LIKELY\",\n },\n },\n }],\n },\n ],\n \"limits\": {\n \"max_findings_per_item\": 10,\n \"max_findings_per_request\": 50,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var customTypeSurrogate = new Gcp.DataLoss.PreventionInspectTemplate(\"custom_type_surrogate\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"My description\",\n DisplayName = \"display_name\",\n InspectConfig = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigArgs\n {\n CustomInfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigCustomInfoTypeArgs\n {\n InfoType = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigCustomInfoTypeInfoTypeArgs\n {\n Name = \"MY_CUSTOM_TYPE\",\n },\n Likelihood = \"UNLIKELY\",\n SurrogateType = null,\n },\n },\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigInfoTypeArgs\n {\n Name = \"EMAIL_ADDRESS\",\n },\n },\n MinLikelihood = \"UNLIKELY\",\n RuleSets = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"EMAIL_ADDRESS\",\n },\n },\n Rules = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleArgs\n {\n ExclusionRule = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs\n {\n Regex = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleRegexArgs\n {\n Pattern = \".+@example.com\",\n },\n MatchingType = \"MATCHING_TYPE_FULL_MATCH\",\n },\n },\n },\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"MY_CUSTOM_TYPE\",\n },\n },\n Rules = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleArgs\n {\n HotwordRule = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleArgs\n {\n HotwordRegex = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs\n {\n Pattern = \"example*\",\n },\n Proximity = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleProximityArgs\n {\n WindowBefore = 50,\n },\n LikelihoodAdjustment = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs\n {\n FixedLikelihood = \"VERY_LIKELY\",\n },\n },\n },\n },\n },\n },\n Limits = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigLimitsArgs\n {\n MaxFindingsPerItem = 10,\n MaxFindingsPerRequest = 50,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataloss.NewPreventionInspectTemplate(ctx, \"custom_type_surrogate\", \u0026dataloss.PreventionInspectTemplateArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"My description\"),\n\t\t\tDisplayName: pulumi.String(\"display_name\"),\n\t\t\tInspectConfig: \u0026dataloss.PreventionInspectTemplateInspectConfigArgs{\n\t\t\t\tCustomInfoTypes: dataloss.PreventionInspectTemplateInspectConfigCustomInfoTypeArray{\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigCustomInfoTypeArgs{\n\t\t\t\t\t\tInfoType: \u0026dataloss.PreventionInspectTemplateInspectConfigCustomInfoTypeInfoTypeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"MY_CUSTOM_TYPE\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tLikelihood: pulumi.String(\"UNLIKELY\"),\n\t\t\t\t\t\tSurrogateType: \u0026dataloss.PreventionInspectTemplateInspectConfigCustomInfoTypeSurrogateTypeArgs{},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tInfoTypes: dataloss.PreventionInspectTemplateInspectConfigInfoTypeArray{\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigInfoTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"EMAIL_ADDRESS\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMinLikelihood: pulumi.String(\"UNLIKELY\"),\n\t\t\t\tRuleSets: dataloss.PreventionInspectTemplateInspectConfigRuleSetArray{\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetArgs{\n\t\t\t\t\t\tInfoTypes: dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"EMAIL_ADDRESS\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRules: dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArgs{\n\t\t\t\t\t\t\t\tExclusionRule: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs{\n\t\t\t\t\t\t\t\t\tRegex: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleRegexArgs{\n\t\t\t\t\t\t\t\t\t\tPattern: pulumi.String(\".+@example.com\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tMatchingType: pulumi.String(\"MATCHING_TYPE_FULL_MATCH\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetArgs{\n\t\t\t\t\t\tInfoTypes: dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"MY_CUSTOM_TYPE\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRules: dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArray{\n\t\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleArgs{\n\t\t\t\t\t\t\t\tHotwordRule: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleArgs{\n\t\t\t\t\t\t\t\t\tHotwordRegex: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs{\n\t\t\t\t\t\t\t\t\t\tPattern: pulumi.String(\"example*\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tProximity: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleProximityArgs{\n\t\t\t\t\t\t\t\t\t\tWindowBefore: pulumi.Int(50),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tLikelihoodAdjustment: \u0026dataloss.PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs{\n\t\t\t\t\t\t\t\t\t\tFixedLikelihood: pulumi.String(\"VERY_LIKELY\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tLimits: \u0026dataloss.PreventionInspectTemplateInspectConfigLimitsArgs{\n\t\t\t\t\tMaxFindingsPerItem: pulumi.Int(10),\n\t\t\t\t\tMaxFindingsPerRequest: pulumi.Int(50),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataloss.PreventionInspectTemplate;\nimport com.pulumi.gcp.dataloss.PreventionInspectTemplateArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionInspectTemplateInspectConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionInspectTemplateInspectConfigLimitsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var customTypeSurrogate = new PreventionInspectTemplate(\"customTypeSurrogate\", PreventionInspectTemplateArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"My description\")\n .displayName(\"display_name\")\n .inspectConfig(PreventionInspectTemplateInspectConfigArgs.builder()\n .customInfoTypes(PreventionInspectTemplateInspectConfigCustomInfoTypeArgs.builder()\n .infoType(PreventionInspectTemplateInspectConfigCustomInfoTypeInfoTypeArgs.builder()\n .name(\"MY_CUSTOM_TYPE\")\n .build())\n .likelihood(\"UNLIKELY\")\n .surrogateType()\n .build())\n .infoTypes(PreventionInspectTemplateInspectConfigInfoTypeArgs.builder()\n .name(\"EMAIL_ADDRESS\")\n .build())\n .minLikelihood(\"UNLIKELY\")\n .ruleSets( \n PreventionInspectTemplateInspectConfigRuleSetArgs.builder()\n .infoTypes(PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"EMAIL_ADDRESS\")\n .build())\n .rules(PreventionInspectTemplateInspectConfigRuleSetRuleArgs.builder()\n .exclusionRule(PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleArgs.builder()\n .regex(PreventionInspectTemplateInspectConfigRuleSetRuleExclusionRuleRegexArgs.builder()\n .pattern(\".+@example.com\")\n .build())\n .matchingType(\"MATCHING_TYPE_FULL_MATCH\")\n .build())\n .build())\n .build(),\n PreventionInspectTemplateInspectConfigRuleSetArgs.builder()\n .infoTypes(PreventionInspectTemplateInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"MY_CUSTOM_TYPE\")\n .build())\n .rules(PreventionInspectTemplateInspectConfigRuleSetRuleArgs.builder()\n .hotwordRule(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleArgs.builder()\n .hotwordRegex(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs.builder()\n .pattern(\"example*\")\n .build())\n .proximity(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleProximityArgs.builder()\n .windowBefore(50)\n .build())\n .likelihoodAdjustment(PreventionInspectTemplateInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs.builder()\n .fixedLikelihood(\"VERY_LIKELY\")\n .build())\n .build())\n .build())\n .build())\n .limits(PreventionInspectTemplateInspectConfigLimitsArgs.builder()\n .maxFindingsPerItem(10)\n .maxFindingsPerRequest(50)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n customTypeSurrogate:\n type: gcp:dataloss:PreventionInspectTemplate\n name: custom_type_surrogate\n properties:\n parent: projects/my-project-name\n description: My description\n displayName: display_name\n inspectConfig:\n customInfoTypes:\n - infoType:\n name: MY_CUSTOM_TYPE\n likelihood: UNLIKELY\n surrogateType: {}\n infoTypes:\n - name: EMAIL_ADDRESS\n minLikelihood: UNLIKELY\n ruleSets:\n - infoTypes:\n - name: EMAIL_ADDRESS\n rules:\n - exclusionRule:\n regex:\n pattern: .+@example.com\n matchingType: MATCHING_TYPE_FULL_MATCH\n - infoTypes:\n - name: MY_CUSTOM_TYPE\n rules:\n - hotwordRule:\n hotwordRegex:\n pattern: example*\n proximity:\n windowBefore: 50\n likelihoodAdjustment:\n fixedLikelihood: VERY_LIKELY\n limits:\n maxFindingsPerItem: 10\n maxFindingsPerRequest: 50\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Inspect Template Max Infotype Per Finding Default\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst maxInfotypePerFindingDefault = new gcp.dataloss.PreventionInspectTemplate(\"max_infotype_per_finding_default\", {\n parent: \"projects/my-project-name\",\n inspectConfig: {\n infoTypes: [\n {\n name: \"EMAIL_ADDRESS\",\n },\n {\n name: \"PERSON_NAME\",\n },\n ],\n minLikelihood: \"UNLIKELY\",\n limits: {\n maxFindingsPerRequest: 333,\n maxFindingsPerItem: 222,\n maxFindingsPerInfoTypes: [{\n maxFindings: 111,\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmax_infotype_per_finding_default = gcp.dataloss.PreventionInspectTemplate(\"max_infotype_per_finding_default\",\n parent=\"projects/my-project-name\",\n inspect_config={\n \"info_types\": [\n {\n \"name\": \"EMAIL_ADDRESS\",\n },\n {\n \"name\": \"PERSON_NAME\",\n },\n ],\n \"min_likelihood\": \"UNLIKELY\",\n \"limits\": {\n \"max_findings_per_request\": 333,\n \"max_findings_per_item\": 222,\n \"max_findings_per_info_types\": [{\n \"max_findings\": 111,\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var maxInfotypePerFindingDefault = new Gcp.DataLoss.PreventionInspectTemplate(\"max_infotype_per_finding_default\", new()\n {\n Parent = \"projects/my-project-name\",\n InspectConfig = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigInfoTypeArgs\n {\n Name = \"EMAIL_ADDRESS\",\n },\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigInfoTypeArgs\n {\n Name = \"PERSON_NAME\",\n },\n },\n MinLikelihood = \"UNLIKELY\",\n Limits = new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigLimitsArgs\n {\n MaxFindingsPerRequest = 333,\n MaxFindingsPerItem = 222,\n MaxFindingsPerInfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeArgs\n {\n MaxFindings = 111,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataloss.NewPreventionInspectTemplate(ctx, \"max_infotype_per_finding_default\", \u0026dataloss.PreventionInspectTemplateArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tInspectConfig: \u0026dataloss.PreventionInspectTemplateInspectConfigArgs{\n\t\t\t\tInfoTypes: dataloss.PreventionInspectTemplateInspectConfigInfoTypeArray{\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigInfoTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"EMAIL_ADDRESS\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigInfoTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"PERSON_NAME\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMinLikelihood: pulumi.String(\"UNLIKELY\"),\n\t\t\t\tLimits: \u0026dataloss.PreventionInspectTemplateInspectConfigLimitsArgs{\n\t\t\t\t\tMaxFindingsPerRequest: pulumi.Int(333),\n\t\t\t\t\tMaxFindingsPerItem: pulumi.Int(222),\n\t\t\t\t\tMaxFindingsPerInfoTypes: dataloss.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeArray{\n\t\t\t\t\t\t\u0026dataloss.PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeArgs{\n\t\t\t\t\t\t\tMaxFindings: pulumi.Int(111),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataloss.PreventionInspectTemplate;\nimport com.pulumi.gcp.dataloss.PreventionInspectTemplateArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionInspectTemplateInspectConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionInspectTemplateInspectConfigLimitsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var maxInfotypePerFindingDefault = new PreventionInspectTemplate(\"maxInfotypePerFindingDefault\", PreventionInspectTemplateArgs.builder()\n .parent(\"projects/my-project-name\")\n .inspectConfig(PreventionInspectTemplateInspectConfigArgs.builder()\n .infoTypes( \n PreventionInspectTemplateInspectConfigInfoTypeArgs.builder()\n .name(\"EMAIL_ADDRESS\")\n .build(),\n PreventionInspectTemplateInspectConfigInfoTypeArgs.builder()\n .name(\"PERSON_NAME\")\n .build())\n .minLikelihood(\"UNLIKELY\")\n .limits(PreventionInspectTemplateInspectConfigLimitsArgs.builder()\n .maxFindingsPerRequest(333)\n .maxFindingsPerItem(222)\n .maxFindingsPerInfoTypes(PreventionInspectTemplateInspectConfigLimitsMaxFindingsPerInfoTypeArgs.builder()\n .maxFindings(111)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n maxInfotypePerFindingDefault:\n type: gcp:dataloss:PreventionInspectTemplate\n name: max_infotype_per_finding_default\n properties:\n parent: projects/my-project-name\n inspectConfig:\n infoTypes:\n - name: EMAIL_ADDRESS\n - name: PERSON_NAME\n minLikelihood: UNLIKELY\n limits:\n maxFindingsPerRequest: 333\n maxFindingsPerItem: 222\n maxFindingsPerInfoTypes:\n - maxFindings: 111\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInspectTemplate can be imported using any of these accepted formats:\n\n* `{{parent}}/inspectTemplates/{{name}}`\n\n* `{{parent}}/{{name}}`\n\nWhen using the `pulumi import` command, InspectTemplate can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataloss/preventionInspectTemplate:PreventionInspectTemplate default {{parent}}/inspectTemplates/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataloss/preventionInspectTemplate:PreventionInspectTemplate default {{parent}}/{{name}}\n```\n\n", "properties": { "description": { "type": "string", @@ -180922,7 +180922,7 @@ } }, "gcp:dataloss/preventionJobTrigger:PreventionJobTrigger": { - "description": "A job trigger configuration.\n\n\nTo get more information about JobTrigger, see:\n\n* [API documentation](https://cloud.google.com/dlp/docs/reference/rest/v2/projects.jobTriggers)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dlp/docs/creating-job-triggers)\n\n## Example Usage\n\n### Dlp Job Trigger Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.dataloss.PreventionJobTrigger(\"basic\", {\n parent: \"projects/my-project-name\",\n description: \"Description\",\n displayName: \"Displayname\",\n triggers: [{\n schedule: {\n recurrencePeriodDuration: \"86400s\",\n },\n }],\n inspectJob: {\n inspectTemplateName: \"fake\",\n actions: [{\n saveFindings: {\n outputConfig: {\n table: {\n projectId: \"project\",\n datasetId: \"dataset\",\n },\n },\n },\n }],\n storageConfig: {\n cloudStorageOptions: {\n fileSet: {\n url: \"gs://mybucket/directory/\",\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.dataloss.PreventionJobTrigger(\"basic\",\n parent=\"projects/my-project-name\",\n description=\"Description\",\n display_name=\"Displayname\",\n triggers=[{\n \"schedule\": {\n \"recurrence_period_duration\": \"86400s\",\n },\n }],\n inspect_job={\n \"inspect_template_name\": \"fake\",\n \"actions\": [{\n \"save_findings\": {\n \"output_config\": {\n \"table\": {\n \"project_id\": \"project\",\n \"dataset_id\": \"dataset\",\n },\n },\n },\n }],\n \"storage_config\": {\n \"cloud_storage_options\": {\n \"file_set\": {\n \"url\": \"gs://mybucket/directory/\",\n },\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basic = new Gcp.DataLoss.PreventionJobTrigger(\"basic\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description\",\n DisplayName = \"Displayname\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Schedule = new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerScheduleArgs\n {\n RecurrencePeriodDuration = \"86400s\",\n },\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"fake\",\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n SaveFindings = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsArgs\n {\n OutputConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs\n {\n Table = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs\n {\n ProjectId = \"project\",\n DatasetId = \"dataset\",\n },\n },\n },\n },\n },\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n CloudStorageOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs\n {\n FileSet = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs\n {\n Url = \"gs://mybucket/directory/\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataloss.NewPreventionJobTrigger(ctx, \"basic\", \u0026dataloss.PreventionJobTriggerArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"Description\"),\n\t\t\tDisplayName: pulumi.String(\"Displayname\"),\n\t\t\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataloss.PreventionJobTriggerTriggerScheduleArgs{\n\t\t\t\t\t\tRecurrencePeriodDuration: pulumi.String(\"86400s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"fake\"),\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tSaveFindings: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsArgs{\n\t\t\t\t\t\t\tOutputConfig: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs{\n\t\t\t\t\t\t\t\tTable: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs{\n\t\t\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\t\t\tDatasetId: pulumi.String(\"dataset\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tCloudStorageOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs{\n\t\t\t\t\t\tFileSet: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs{\n\t\t\t\t\t\t\tUrl: pulumi.String(\"gs://mybucket/directory/\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerScheduleArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basic = new PreventionJobTrigger(\"basic\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Description\")\n .displayName(\"Displayname\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .schedule(PreventionJobTriggerTriggerScheduleArgs.builder()\n .recurrencePeriodDuration(\"86400s\")\n .build())\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"fake\")\n .actions(PreventionJobTriggerInspectJobActionArgs.builder()\n .saveFindings(PreventionJobTriggerInspectJobActionSaveFindingsArgs.builder()\n .outputConfig(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs.builder()\n .table(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs.builder()\n .projectId(\"project\")\n .datasetId(\"dataset\")\n .build())\n .build())\n .build())\n .build())\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .cloudStorageOptions(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs.builder()\n .fileSet(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs.builder()\n .url(\"gs://mybucket/directory/\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:dataloss:PreventionJobTrigger\n properties:\n parent: projects/my-project-name\n description: Description\n displayName: Displayname\n triggers:\n - schedule:\n recurrencePeriodDuration: 86400s\n inspectJob:\n inspectTemplateName: fake\n actions:\n - saveFindings:\n outputConfig:\n table:\n projectId: project\n datasetId: dataset\n storageConfig:\n cloudStorageOptions:\n fileSet:\n url: gs://mybucket/directory/\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Job Trigger Bigquery Row Limit\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bigqueryRowLimit = new gcp.dataloss.PreventionJobTrigger(\"bigquery_row_limit\", {\n parent: \"projects/my-project-name\",\n description: \"Description\",\n displayName: \"Displayname\",\n triggers: [{\n schedule: {\n recurrencePeriodDuration: \"86400s\",\n },\n }],\n inspectJob: {\n inspectTemplateName: \"fake\",\n actions: [{\n saveFindings: {\n outputConfig: {\n table: {\n projectId: \"project\",\n datasetId: \"dataset\",\n },\n },\n },\n }],\n storageConfig: {\n bigQueryOptions: {\n tableReference: {\n projectId: \"project\",\n datasetId: \"dataset\",\n tableId: \"table_to_scan\",\n },\n rowsLimit: 1000,\n sampleMethod: \"RANDOM_START\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbigquery_row_limit = gcp.dataloss.PreventionJobTrigger(\"bigquery_row_limit\",\n parent=\"projects/my-project-name\",\n description=\"Description\",\n display_name=\"Displayname\",\n triggers=[{\n \"schedule\": {\n \"recurrence_period_duration\": \"86400s\",\n },\n }],\n inspect_job={\n \"inspect_template_name\": \"fake\",\n \"actions\": [{\n \"save_findings\": {\n \"output_config\": {\n \"table\": {\n \"project_id\": \"project\",\n \"dataset_id\": \"dataset\",\n },\n },\n },\n }],\n \"storage_config\": {\n \"big_query_options\": {\n \"table_reference\": {\n \"project_id\": \"project\",\n \"dataset_id\": \"dataset\",\n \"table_id\": \"table_to_scan\",\n },\n \"rows_limit\": 1000,\n \"sample_method\": \"RANDOM_START\",\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bigqueryRowLimit = new Gcp.DataLoss.PreventionJobTrigger(\"bigquery_row_limit\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description\",\n DisplayName = \"Displayname\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Schedule = new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerScheduleArgs\n {\n RecurrencePeriodDuration = \"86400s\",\n },\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"fake\",\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n SaveFindings = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsArgs\n {\n OutputConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs\n {\n Table = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs\n {\n ProjectId = \"project\",\n DatasetId = \"dataset\",\n },\n },\n },\n },\n },\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n BigQueryOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs\n {\n TableReference = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs\n {\n ProjectId = \"project\",\n DatasetId = \"dataset\",\n TableId = \"table_to_scan\",\n },\n RowsLimit = 1000,\n SampleMethod = \"RANDOM_START\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataloss.NewPreventionJobTrigger(ctx, \"bigquery_row_limit\", \u0026dataloss.PreventionJobTriggerArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"Description\"),\n\t\t\tDisplayName: pulumi.String(\"Displayname\"),\n\t\t\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataloss.PreventionJobTriggerTriggerScheduleArgs{\n\t\t\t\t\t\tRecurrencePeriodDuration: pulumi.String(\"86400s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"fake\"),\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tSaveFindings: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsArgs{\n\t\t\t\t\t\t\tOutputConfig: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs{\n\t\t\t\t\t\t\t\tTable: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs{\n\t\t\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\t\t\tDatasetId: pulumi.String(\"dataset\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tBigQueryOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs{\n\t\t\t\t\t\tTableReference: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs{\n\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\tDatasetId: pulumi.String(\"dataset\"),\n\t\t\t\t\t\t\tTableId: pulumi.String(\"table_to_scan\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRowsLimit: pulumi.Int(1000),\n\t\t\t\t\t\tSampleMethod: pulumi.String(\"RANDOM_START\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerScheduleArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bigqueryRowLimit = new PreventionJobTrigger(\"bigqueryRowLimit\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Description\")\n .displayName(\"Displayname\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .schedule(PreventionJobTriggerTriggerScheduleArgs.builder()\n .recurrencePeriodDuration(\"86400s\")\n .build())\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"fake\")\n .actions(PreventionJobTriggerInspectJobActionArgs.builder()\n .saveFindings(PreventionJobTriggerInspectJobActionSaveFindingsArgs.builder()\n .outputConfig(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs.builder()\n .table(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs.builder()\n .projectId(\"project\")\n .datasetId(\"dataset\")\n .build())\n .build())\n .build())\n .build())\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .bigQueryOptions(PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs.builder()\n .tableReference(PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs.builder()\n .projectId(\"project\")\n .datasetId(\"dataset\")\n .tableId(\"table_to_scan\")\n .build())\n .rowsLimit(1000)\n .sampleMethod(\"RANDOM_START\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bigqueryRowLimit:\n type: gcp:dataloss:PreventionJobTrigger\n name: bigquery_row_limit\n properties:\n parent: projects/my-project-name\n description: Description\n displayName: Displayname\n triggers:\n - schedule:\n recurrencePeriodDuration: 86400s\n inspectJob:\n inspectTemplateName: fake\n actions:\n - saveFindings:\n outputConfig:\n table:\n projectId: project\n datasetId: dataset\n storageConfig:\n bigQueryOptions:\n tableReference:\n projectId: project\n datasetId: dataset\n tableId: table_to_scan\n rowsLimit: 1000\n sampleMethod: RANDOM_START\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Job Trigger Bigquery Row Limit Percentage\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bigqueryRowLimitPercentage = new gcp.dataloss.PreventionJobTrigger(\"bigquery_row_limit_percentage\", {\n parent: \"projects/my-project-name\",\n description: \"Description\",\n displayName: \"Displayname\",\n triggers: [{\n schedule: {\n recurrencePeriodDuration: \"86400s\",\n },\n }],\n inspectJob: {\n inspectTemplateName: \"fake\",\n actions: [{\n saveFindings: {\n outputConfig: {\n table: {\n projectId: \"project\",\n datasetId: \"dataset\",\n },\n },\n },\n }],\n storageConfig: {\n bigQueryOptions: {\n tableReference: {\n projectId: \"project\",\n datasetId: \"dataset\",\n tableId: \"table_to_scan\",\n },\n rowsLimitPercent: 50,\n sampleMethod: \"RANDOM_START\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbigquery_row_limit_percentage = gcp.dataloss.PreventionJobTrigger(\"bigquery_row_limit_percentage\",\n parent=\"projects/my-project-name\",\n description=\"Description\",\n display_name=\"Displayname\",\n triggers=[{\n \"schedule\": {\n \"recurrence_period_duration\": \"86400s\",\n },\n }],\n inspect_job={\n \"inspect_template_name\": \"fake\",\n \"actions\": [{\n \"save_findings\": {\n \"output_config\": {\n \"table\": {\n \"project_id\": \"project\",\n \"dataset_id\": \"dataset\",\n },\n },\n },\n }],\n \"storage_config\": {\n \"big_query_options\": {\n \"table_reference\": {\n \"project_id\": \"project\",\n \"dataset_id\": \"dataset\",\n \"table_id\": \"table_to_scan\",\n },\n \"rows_limit_percent\": 50,\n \"sample_method\": \"RANDOM_START\",\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bigqueryRowLimitPercentage = new Gcp.DataLoss.PreventionJobTrigger(\"bigquery_row_limit_percentage\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description\",\n DisplayName = \"Displayname\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Schedule = new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerScheduleArgs\n {\n RecurrencePeriodDuration = \"86400s\",\n },\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"fake\",\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n SaveFindings = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsArgs\n {\n OutputConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs\n {\n Table = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs\n {\n ProjectId = \"project\",\n DatasetId = \"dataset\",\n },\n },\n },\n },\n },\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n BigQueryOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs\n {\n TableReference = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs\n {\n ProjectId = \"project\",\n DatasetId = \"dataset\",\n TableId = \"table_to_scan\",\n },\n RowsLimitPercent = 50,\n SampleMethod = \"RANDOM_START\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataloss.NewPreventionJobTrigger(ctx, \"bigquery_row_limit_percentage\", \u0026dataloss.PreventionJobTriggerArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"Description\"),\n\t\t\tDisplayName: pulumi.String(\"Displayname\"),\n\t\t\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataloss.PreventionJobTriggerTriggerScheduleArgs{\n\t\t\t\t\t\tRecurrencePeriodDuration: pulumi.String(\"86400s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"fake\"),\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tSaveFindings: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsArgs{\n\t\t\t\t\t\t\tOutputConfig: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs{\n\t\t\t\t\t\t\t\tTable: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs{\n\t\t\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\t\t\tDatasetId: pulumi.String(\"dataset\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tBigQueryOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs{\n\t\t\t\t\t\tTableReference: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs{\n\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\tDatasetId: pulumi.String(\"dataset\"),\n\t\t\t\t\t\t\tTableId: pulumi.String(\"table_to_scan\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRowsLimitPercent: pulumi.Int(50),\n\t\t\t\t\t\tSampleMethod: pulumi.String(\"RANDOM_START\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerScheduleArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bigqueryRowLimitPercentage = new PreventionJobTrigger(\"bigqueryRowLimitPercentage\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Description\")\n .displayName(\"Displayname\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .schedule(PreventionJobTriggerTriggerScheduleArgs.builder()\n .recurrencePeriodDuration(\"86400s\")\n .build())\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"fake\")\n .actions(PreventionJobTriggerInspectJobActionArgs.builder()\n .saveFindings(PreventionJobTriggerInspectJobActionSaveFindingsArgs.builder()\n .outputConfig(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs.builder()\n .table(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs.builder()\n .projectId(\"project\")\n .datasetId(\"dataset\")\n .build())\n .build())\n .build())\n .build())\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .bigQueryOptions(PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs.builder()\n .tableReference(PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs.builder()\n .projectId(\"project\")\n .datasetId(\"dataset\")\n .tableId(\"table_to_scan\")\n .build())\n .rowsLimitPercent(50)\n .sampleMethod(\"RANDOM_START\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bigqueryRowLimitPercentage:\n type: gcp:dataloss:PreventionJobTrigger\n name: bigquery_row_limit_percentage\n properties:\n parent: projects/my-project-name\n description: Description\n displayName: Displayname\n triggers:\n - schedule:\n recurrencePeriodDuration: 86400s\n inspectJob:\n inspectTemplateName: fake\n actions:\n - saveFindings:\n outputConfig:\n table:\n projectId: project\n datasetId: dataset\n storageConfig:\n bigQueryOptions:\n tableReference:\n projectId: project\n datasetId: dataset\n tableId: table_to_scan\n rowsLimitPercent: 50\n sampleMethod: RANDOM_START\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Job Trigger Job Notification Emails\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst jobNotificationEmails = new gcp.dataloss.PreventionJobTrigger(\"job_notification_emails\", {\n parent: \"projects/my-project-name\",\n description: \"Description for the job_trigger created by terraform\",\n displayName: \"TerraformDisplayName\",\n triggers: [{\n schedule: {\n recurrencePeriodDuration: \"86400s\",\n },\n }],\n inspectJob: {\n inspectTemplateName: \"sample-inspect-template\",\n actions: [{\n jobNotificationEmails: {},\n }],\n storageConfig: {\n cloudStorageOptions: {\n fileSet: {\n url: \"gs://mybucket/directory/\",\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\njob_notification_emails = gcp.dataloss.PreventionJobTrigger(\"job_notification_emails\",\n parent=\"projects/my-project-name\",\n description=\"Description for the job_trigger created by terraform\",\n display_name=\"TerraformDisplayName\",\n triggers=[{\n \"schedule\": {\n \"recurrence_period_duration\": \"86400s\",\n },\n }],\n inspect_job={\n \"inspect_template_name\": \"sample-inspect-template\",\n \"actions\": [{\n \"job_notification_emails\": {},\n }],\n \"storage_config\": {\n \"cloud_storage_options\": {\n \"file_set\": {\n \"url\": \"gs://mybucket/directory/\",\n },\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var jobNotificationEmails = new Gcp.DataLoss.PreventionJobTrigger(\"job_notification_emails\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description for the job_trigger created by terraform\",\n DisplayName = \"TerraformDisplayName\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Schedule = new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerScheduleArgs\n {\n RecurrencePeriodDuration = \"86400s\",\n },\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"sample-inspect-template\",\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n JobNotificationEmails = null,\n },\n },\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n CloudStorageOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs\n {\n FileSet = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs\n {\n Url = \"gs://mybucket/directory/\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataloss.NewPreventionJobTrigger(ctx, \"job_notification_emails\", \u0026dataloss.PreventionJobTriggerArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"Description for the job_trigger created by terraform\"),\n\t\t\tDisplayName: pulumi.String(\"TerraformDisplayName\"),\n\t\t\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataloss.PreventionJobTriggerTriggerScheduleArgs{\n\t\t\t\t\t\tRecurrencePeriodDuration: pulumi.String(\"86400s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"sample-inspect-template\"),\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tJobNotificationEmails: nil,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tCloudStorageOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs{\n\t\t\t\t\t\tFileSet: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs{\n\t\t\t\t\t\t\tUrl: pulumi.String(\"gs://mybucket/directory/\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerScheduleArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var jobNotificationEmails = new PreventionJobTrigger(\"jobNotificationEmails\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Description for the job_trigger created by terraform\")\n .displayName(\"TerraformDisplayName\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .schedule(PreventionJobTriggerTriggerScheduleArgs.builder()\n .recurrencePeriodDuration(\"86400s\")\n .build())\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"sample-inspect-template\")\n .actions(PreventionJobTriggerInspectJobActionArgs.builder()\n .jobNotificationEmails()\n .build())\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .cloudStorageOptions(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs.builder()\n .fileSet(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs.builder()\n .url(\"gs://mybucket/directory/\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n jobNotificationEmails:\n type: gcp:dataloss:PreventionJobTrigger\n name: job_notification_emails\n properties:\n parent: projects/my-project-name\n description: Description for the job_trigger created by terraform\n displayName: TerraformDisplayName\n triggers:\n - schedule:\n recurrencePeriodDuration: 86400s\n inspectJob:\n inspectTemplateName: sample-inspect-template\n actions:\n - jobNotificationEmails: {}\n storageConfig:\n cloudStorageOptions:\n fileSet:\n url: gs://mybucket/directory/\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Job Trigger Deidentify\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.bigquery.Dataset(\"default\", {\n datasetId: \"tf_test\",\n friendlyName: \"terraform-test\",\n description: \"Description for the dataset created by terraform\",\n location: \"US\",\n defaultTableExpirationMs: 3600000,\n labels: {\n env: \"default\",\n },\n});\nconst defaultTable = new gcp.bigquery.Table(\"default\", {\n datasetId: _default.datasetId,\n tableId: \"tf_test\",\n deletionProtection: false,\n timePartitioning: {\n type: \"DAY\",\n },\n labels: {\n env: \"default\",\n },\n schema: ` [\n {\n \"name\": \"quantity\",\n \"type\": \"NUMERIC\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The quantity\"\n },\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"Name of the object\"\n }\n ]\n`,\n});\nconst deidentify = new gcp.dataloss.PreventionJobTrigger(\"deidentify\", {\n parent: \"projects/my-project-name\",\n description: \"Description for the job_trigger created by terraform\",\n displayName: \"TerraformDisplayName\",\n triggers: [{\n schedule: {\n recurrencePeriodDuration: \"86400s\",\n },\n }],\n inspectJob: {\n inspectTemplateName: \"sample-inspect-template\",\n actions: [{\n deidentify: {\n cloudStorageOutput: \"gs://samplebucket/dir/\",\n fileTypesToTransforms: [\n \"CSV\",\n \"TSV\",\n ],\n transformationDetailsStorageConfig: {\n table: {\n projectId: \"my-project-name\",\n datasetId: _default.datasetId,\n tableId: defaultTable.tableId,\n },\n },\n transformationConfig: {\n deidentifyTemplate: \"sample-deidentify-template\",\n imageRedactTemplate: \"sample-image-redact-template\",\n structuredDeidentifyTemplate: \"sample-structured-deidentify-template\",\n },\n },\n }],\n storageConfig: {\n cloudStorageOptions: {\n fileSet: {\n url: \"gs://mybucket/directory/\",\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.bigquery.Dataset(\"default\",\n dataset_id=\"tf_test\",\n friendly_name=\"terraform-test\",\n description=\"Description for the dataset created by terraform\",\n location=\"US\",\n default_table_expiration_ms=3600000,\n labels={\n \"env\": \"default\",\n })\ndefault_table = gcp.bigquery.Table(\"default\",\n dataset_id=default.dataset_id,\n table_id=\"tf_test\",\n deletion_protection=False,\n time_partitioning={\n \"type\": \"DAY\",\n },\n labels={\n \"env\": \"default\",\n },\n schema=\"\"\" [\n {\n \"name\": \"quantity\",\n \"type\": \"NUMERIC\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The quantity\"\n },\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"Name of the object\"\n }\n ]\n\"\"\")\ndeidentify = gcp.dataloss.PreventionJobTrigger(\"deidentify\",\n parent=\"projects/my-project-name\",\n description=\"Description for the job_trigger created by terraform\",\n display_name=\"TerraformDisplayName\",\n triggers=[{\n \"schedule\": {\n \"recurrence_period_duration\": \"86400s\",\n },\n }],\n inspect_job={\n \"inspect_template_name\": \"sample-inspect-template\",\n \"actions\": [{\n \"deidentify\": {\n \"cloud_storage_output\": \"gs://samplebucket/dir/\",\n \"file_types_to_transforms\": [\n \"CSV\",\n \"TSV\",\n ],\n \"transformation_details_storage_config\": {\n \"table\": {\n \"project_id\": \"my-project-name\",\n \"dataset_id\": default.dataset_id,\n \"table_id\": default_table.table_id,\n },\n },\n \"transformation_config\": {\n \"deidentify_template\": \"sample-deidentify-template\",\n \"image_redact_template\": \"sample-image-redact-template\",\n \"structured_deidentify_template\": \"sample-structured-deidentify-template\",\n },\n },\n }],\n \"storage_config\": {\n \"cloud_storage_options\": {\n \"file_set\": {\n \"url\": \"gs://mybucket/directory/\",\n },\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.BigQuery.Dataset(\"default\", new()\n {\n DatasetId = \"tf_test\",\n FriendlyName = \"terraform-test\",\n Description = \"Description for the dataset created by terraform\",\n Location = \"US\",\n DefaultTableExpirationMs = 3600000,\n Labels = \n {\n { \"env\", \"default\" },\n },\n });\n\n var defaultTable = new Gcp.BigQuery.Table(\"default\", new()\n {\n DatasetId = @default.DatasetId,\n TableId = \"tf_test\",\n DeletionProtection = false,\n TimePartitioning = new Gcp.BigQuery.Inputs.TableTimePartitioningArgs\n {\n Type = \"DAY\",\n },\n Labels = \n {\n { \"env\", \"default\" },\n },\n Schema = @\" [\n {\n \"\"name\"\": \"\"quantity\"\",\n \"\"type\"\": \"\"NUMERIC\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"description\"\": \"\"The quantity\"\"\n },\n {\n \"\"name\"\": \"\"name\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"description\"\": \"\"Name of the object\"\"\n }\n ]\n\",\n });\n\n var deidentify = new Gcp.DataLoss.PreventionJobTrigger(\"deidentify\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description for the job_trigger created by terraform\",\n DisplayName = \"TerraformDisplayName\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Schedule = new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerScheduleArgs\n {\n RecurrencePeriodDuration = \"86400s\",\n },\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"sample-inspect-template\",\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n Deidentify = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionDeidentifyArgs\n {\n CloudStorageOutput = \"gs://samplebucket/dir/\",\n FileTypesToTransforms = new[]\n {\n \"CSV\",\n \"TSV\",\n },\n TransformationDetailsStorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionDeidentifyTransformationDetailsStorageConfigArgs\n {\n Table = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionDeidentifyTransformationDetailsStorageConfigTableArgs\n {\n ProjectId = \"my-project-name\",\n DatasetId = @default.DatasetId,\n TableId = defaultTable.TableId,\n },\n },\n TransformationConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionDeidentifyTransformationConfigArgs\n {\n DeidentifyTemplate = \"sample-deidentify-template\",\n ImageRedactTemplate = \"sample-image-redact-template\",\n StructuredDeidentifyTemplate = \"sample-structured-deidentify-template\",\n },\n },\n },\n },\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n CloudStorageOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs\n {\n FileSet = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs\n {\n Url = \"gs://mybucket/directory/\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := bigquery.NewDataset(ctx, \"default\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"tf_test\"),\n\t\t\tFriendlyName: pulumi.String(\"terraform-test\"),\n\t\t\tDescription: pulumi.String(\"Description for the dataset created by terraform\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tDefaultTableExpirationMs: pulumi.Int(3600000),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"default\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultTable, err := bigquery.NewTable(ctx, \"default\", \u0026bigquery.TableArgs{\n\t\t\tDatasetId: _default.DatasetId,\n\t\t\tTableId: pulumi.String(\"tf_test\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTimePartitioning: \u0026bigquery.TableTimePartitioningArgs{\n\t\t\t\tType: pulumi.String(\"DAY\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"default\"),\n\t\t\t},\n\t\t\tSchema: pulumi.String(` [\n {\n \"name\": \"quantity\",\n \"type\": \"NUMERIC\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The quantity\"\n },\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"Name of the object\"\n }\n ]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataloss.NewPreventionJobTrigger(ctx, \"deidentify\", \u0026dataloss.PreventionJobTriggerArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"Description for the job_trigger created by terraform\"),\n\t\t\tDisplayName: pulumi.String(\"TerraformDisplayName\"),\n\t\t\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataloss.PreventionJobTriggerTriggerScheduleArgs{\n\t\t\t\t\t\tRecurrencePeriodDuration: pulumi.String(\"86400s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"sample-inspect-template\"),\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tDeidentify: \u0026dataloss.PreventionJobTriggerInspectJobActionDeidentifyArgs{\n\t\t\t\t\t\t\tCloudStorageOutput: pulumi.String(\"gs://samplebucket/dir/\"),\n\t\t\t\t\t\t\tFileTypesToTransforms: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"CSV\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"TSV\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tTransformationDetailsStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobActionDeidentifyTransformationDetailsStorageConfigArgs{\n\t\t\t\t\t\t\t\tTable: \u0026dataloss.PreventionJobTriggerInspectJobActionDeidentifyTransformationDetailsStorageConfigTableArgs{\n\t\t\t\t\t\t\t\t\tProjectId: pulumi.String(\"my-project-name\"),\n\t\t\t\t\t\t\t\t\tDatasetId: _default.DatasetId,\n\t\t\t\t\t\t\t\t\tTableId: defaultTable.TableId,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tTransformationConfig: \u0026dataloss.PreventionJobTriggerInspectJobActionDeidentifyTransformationConfigArgs{\n\t\t\t\t\t\t\t\tDeidentifyTemplate: pulumi.String(\"sample-deidentify-template\"),\n\t\t\t\t\t\t\t\tImageRedactTemplate: pulumi.String(\"sample-image-redact-template\"),\n\t\t\t\t\t\t\t\tStructuredDeidentifyTemplate: pulumi.String(\"sample-structured-deidentify-template\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tCloudStorageOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs{\n\t\t\t\t\t\tFileSet: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs{\n\t\t\t\t\t\t\tUrl: pulumi.String(\"gs://mybucket/directory/\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.bigquery.inputs.TableTimePartitioningArgs;\nimport com.pulumi.gcp.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerScheduleArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Dataset(\"default\", DatasetArgs.builder()\n .datasetId(\"tf_test\")\n .friendlyName(\"terraform-test\")\n .description(\"Description for the dataset created by terraform\")\n .location(\"US\")\n .defaultTableExpirationMs(3600000)\n .labels(Map.of(\"env\", \"default\"))\n .build());\n\n var defaultTable = new Table(\"defaultTable\", TableArgs.builder()\n .datasetId(default_.datasetId())\n .tableId(\"tf_test\")\n .deletionProtection(false)\n .timePartitioning(TableTimePartitioningArgs.builder()\n .type(\"DAY\")\n .build())\n .labels(Map.of(\"env\", \"default\"))\n .schema(\"\"\"\n [\n {\n \"name\": \"quantity\",\n \"type\": \"NUMERIC\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The quantity\"\n },\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"Name of the object\"\n }\n ]\n \"\"\")\n .build());\n\n var deidentify = new PreventionJobTrigger(\"deidentify\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Description for the job_trigger created by terraform\")\n .displayName(\"TerraformDisplayName\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .schedule(PreventionJobTriggerTriggerScheduleArgs.builder()\n .recurrencePeriodDuration(\"86400s\")\n .build())\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"sample-inspect-template\")\n .actions(PreventionJobTriggerInspectJobActionArgs.builder()\n .deidentify(PreventionJobTriggerInspectJobActionDeidentifyArgs.builder()\n .cloudStorageOutput(\"gs://samplebucket/dir/\")\n .fileTypesToTransforms( \n \"CSV\",\n \"TSV\")\n .transformationDetailsStorageConfig(PreventionJobTriggerInspectJobActionDeidentifyTransformationDetailsStorageConfigArgs.builder()\n .table(PreventionJobTriggerInspectJobActionDeidentifyTransformationDetailsStorageConfigTableArgs.builder()\n .projectId(\"my-project-name\")\n .datasetId(default_.datasetId())\n .tableId(defaultTable.tableId())\n .build())\n .build())\n .transformationConfig(PreventionJobTriggerInspectJobActionDeidentifyTransformationConfigArgs.builder()\n .deidentifyTemplate(\"sample-deidentify-template\")\n .imageRedactTemplate(\"sample-image-redact-template\")\n .structuredDeidentifyTemplate(\"sample-structured-deidentify-template\")\n .build())\n .build())\n .build())\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .cloudStorageOptions(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs.builder()\n .fileSet(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs.builder()\n .url(\"gs://mybucket/directory/\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n deidentify:\n type: gcp:dataloss:PreventionJobTrigger\n properties:\n parent: projects/my-project-name\n description: Description for the job_trigger created by terraform\n displayName: TerraformDisplayName\n triggers:\n - schedule:\n recurrencePeriodDuration: 86400s\n inspectJob:\n inspectTemplateName: sample-inspect-template\n actions:\n - deidentify:\n cloudStorageOutput: gs://samplebucket/dir/\n fileTypesToTransforms:\n - CSV\n - TSV\n transformationDetailsStorageConfig:\n table:\n projectId: my-project-name\n datasetId: ${default.datasetId}\n tableId: ${defaultTable.tableId}\n transformationConfig:\n deidentifyTemplate: sample-deidentify-template\n imageRedactTemplate: sample-image-redact-template\n structuredDeidentifyTemplate: sample-structured-deidentify-template\n storageConfig:\n cloudStorageOptions:\n fileSet:\n url: gs://mybucket/directory/\n default:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: tf_test\n friendlyName: terraform-test\n description: Description for the dataset created by terraform\n location: US\n defaultTableExpirationMs: 3.6e+06\n labels:\n env: default\n defaultTable:\n type: gcp:bigquery:Table\n name: default\n properties:\n datasetId: ${default.datasetId}\n tableId: tf_test\n deletionProtection: false\n timePartitioning:\n type: DAY\n labels:\n env: default\n schema: |2\n [\n {\n \"name\": \"quantity\",\n \"type\": \"NUMERIC\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The quantity\"\n },\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"Name of the object\"\n }\n ]\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Job Trigger Hybrid\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst hybridTrigger = new gcp.dataloss.PreventionJobTrigger(\"hybrid_trigger\", {\n parent: \"projects/my-project-name\",\n triggers: [{\n manual: {},\n }],\n inspectJob: {\n inspectTemplateName: \"fake\",\n actions: [{\n saveFindings: {\n outputConfig: {\n table: {\n projectId: \"project\",\n datasetId: \"dataset\",\n },\n },\n },\n }],\n storageConfig: {\n hybridOptions: {\n description: \"Hybrid job trigger for data from the comments field of a table that contains customer appointment bookings\",\n requiredFindingLabelKeys: [\"appointment-bookings-comments\"],\n labels: {\n env: \"prod\",\n },\n tableOptions: {\n identifyingFields: [{\n name: \"booking_id\",\n }],\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhybrid_trigger = gcp.dataloss.PreventionJobTrigger(\"hybrid_trigger\",\n parent=\"projects/my-project-name\",\n triggers=[{\n \"manual\": {},\n }],\n inspect_job={\n \"inspect_template_name\": \"fake\",\n \"actions\": [{\n \"save_findings\": {\n \"output_config\": {\n \"table\": {\n \"project_id\": \"project\",\n \"dataset_id\": \"dataset\",\n },\n },\n },\n }],\n \"storage_config\": {\n \"hybrid_options\": {\n \"description\": \"Hybrid job trigger for data from the comments field of a table that contains customer appointment bookings\",\n \"required_finding_label_keys\": [\"appointment-bookings-comments\"],\n \"labels\": {\n \"env\": \"prod\",\n },\n \"table_options\": {\n \"identifying_fields\": [{\n \"name\": \"booking_id\",\n }],\n },\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var hybridTrigger = new Gcp.DataLoss.PreventionJobTrigger(\"hybrid_trigger\", new()\n {\n Parent = \"projects/my-project-name\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Manual = null,\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"fake\",\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n SaveFindings = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsArgs\n {\n OutputConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs\n {\n Table = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs\n {\n ProjectId = \"project\",\n DatasetId = \"dataset\",\n },\n },\n },\n },\n },\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n HybridOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigHybridOptionsArgs\n {\n Description = \"Hybrid job trigger for data from the comments field of a table that contains customer appointment bookings\",\n RequiredFindingLabelKeys = new[]\n {\n \"appointment-bookings-comments\",\n },\n Labels = \n {\n { \"env\", \"prod\" },\n },\n TableOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigHybridOptionsTableOptionsArgs\n {\n IdentifyingFields = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigHybridOptionsTableOptionsIdentifyingFieldArgs\n {\n Name = \"booking_id\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataloss.NewPreventionJobTrigger(ctx, \"hybrid_trigger\", \u0026dataloss.PreventionJobTriggerArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tManual: nil,\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"fake\"),\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tSaveFindings: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsArgs{\n\t\t\t\t\t\t\tOutputConfig: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs{\n\t\t\t\t\t\t\t\tTable: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs{\n\t\t\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\t\t\tDatasetId: pulumi.String(\"dataset\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tHybridOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigHybridOptionsArgs{\n\t\t\t\t\t\tDescription: pulumi.String(\"Hybrid job trigger for data from the comments field of a table that contains customer appointment bookings\"),\n\t\t\t\t\t\tRequiredFindingLabelKeys: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"appointment-bookings-comments\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\t\t\"env\": pulumi.String(\"prod\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTableOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigHybridOptionsTableOptionsArgs{\n\t\t\t\t\t\t\tIdentifyingFields: dataloss.PreventionJobTriggerInspectJobStorageConfigHybridOptionsTableOptionsIdentifyingFieldArray{\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobStorageConfigHybridOptionsTableOptionsIdentifyingFieldArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"booking_id\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerManualArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigHybridOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigHybridOptionsTableOptionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var hybridTrigger = new PreventionJobTrigger(\"hybridTrigger\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .manual()\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"fake\")\n .actions(PreventionJobTriggerInspectJobActionArgs.builder()\n .saveFindings(PreventionJobTriggerInspectJobActionSaveFindingsArgs.builder()\n .outputConfig(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs.builder()\n .table(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs.builder()\n .projectId(\"project\")\n .datasetId(\"dataset\")\n .build())\n .build())\n .build())\n .build())\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .hybridOptions(PreventionJobTriggerInspectJobStorageConfigHybridOptionsArgs.builder()\n .description(\"Hybrid job trigger for data from the comments field of a table that contains customer appointment bookings\")\n .requiredFindingLabelKeys(\"appointment-bookings-comments\")\n .labels(Map.of(\"env\", \"prod\"))\n .tableOptions(PreventionJobTriggerInspectJobStorageConfigHybridOptionsTableOptionsArgs.builder()\n .identifyingFields(PreventionJobTriggerInspectJobStorageConfigHybridOptionsTableOptionsIdentifyingFieldArgs.builder()\n .name(\"booking_id\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n hybridTrigger:\n type: gcp:dataloss:PreventionJobTrigger\n name: hybrid_trigger\n properties:\n parent: projects/my-project-name\n triggers:\n - manual: {}\n inspectJob:\n inspectTemplateName: fake\n actions:\n - saveFindings:\n outputConfig:\n table:\n projectId: project\n datasetId: dataset\n storageConfig:\n hybridOptions:\n description: Hybrid job trigger for data from the comments field of a table that contains customer appointment bookings\n requiredFindingLabelKeys:\n - appointment-bookings-comments\n labels:\n env: prod\n tableOptions:\n identifyingFields:\n - name: booking_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Job Trigger Inspect\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst inspect = new gcp.dataloss.PreventionJobTrigger(\"inspect\", {\n parent: \"projects/my-project-name\",\n description: \"Description\",\n displayName: \"Displayname\",\n triggers: [{\n schedule: {\n recurrencePeriodDuration: \"86400s\",\n },\n }],\n inspectJob: {\n inspectTemplateName: \"fake\",\n actions: [{\n saveFindings: {\n outputConfig: {\n table: {\n projectId: \"project\",\n datasetId: \"dataset\",\n },\n },\n },\n }],\n storageConfig: {\n cloudStorageOptions: {\n fileSet: {\n url: \"gs://mybucket/directory/\",\n },\n },\n },\n inspectConfig: {\n customInfoTypes: [{\n infoType: {\n name: \"MY_CUSTOM_TYPE\",\n },\n likelihood: \"UNLIKELY\",\n regex: {\n pattern: \"test*\",\n },\n }],\n infoTypes: [{\n name: \"EMAIL_ADDRESS\",\n }],\n minLikelihood: \"UNLIKELY\",\n ruleSets: [\n {\n infoTypes: [{\n name: \"EMAIL_ADDRESS\",\n }],\n rules: [{\n exclusionRule: {\n regex: {\n pattern: \".+@example.com\",\n },\n matchingType: \"MATCHING_TYPE_FULL_MATCH\",\n },\n }],\n },\n {\n infoTypes: [{\n name: \"MY_CUSTOM_TYPE\",\n }],\n rules: [{\n hotwordRule: {\n hotwordRegex: {\n pattern: \"example*\",\n },\n proximity: {\n windowBefore: 50,\n },\n likelihoodAdjustment: {\n fixedLikelihood: \"VERY_LIKELY\",\n },\n },\n }],\n },\n ],\n limits: {\n maxFindingsPerItem: 10,\n maxFindingsPerRequest: 50,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninspect = gcp.dataloss.PreventionJobTrigger(\"inspect\",\n parent=\"projects/my-project-name\",\n description=\"Description\",\n display_name=\"Displayname\",\n triggers=[{\n \"schedule\": {\n \"recurrence_period_duration\": \"86400s\",\n },\n }],\n inspect_job={\n \"inspect_template_name\": \"fake\",\n \"actions\": [{\n \"save_findings\": {\n \"output_config\": {\n \"table\": {\n \"project_id\": \"project\",\n \"dataset_id\": \"dataset\",\n },\n },\n },\n }],\n \"storage_config\": {\n \"cloud_storage_options\": {\n \"file_set\": {\n \"url\": \"gs://mybucket/directory/\",\n },\n },\n },\n \"inspect_config\": {\n \"custom_info_types\": [{\n \"info_type\": {\n \"name\": \"MY_CUSTOM_TYPE\",\n },\n \"likelihood\": \"UNLIKELY\",\n \"regex\": {\n \"pattern\": \"test*\",\n },\n }],\n \"info_types\": [{\n \"name\": \"EMAIL_ADDRESS\",\n }],\n \"min_likelihood\": \"UNLIKELY\",\n \"rule_sets\": [\n {\n \"info_types\": [{\n \"name\": \"EMAIL_ADDRESS\",\n }],\n \"rules\": [{\n \"exclusion_rule\": {\n \"regex\": {\n \"pattern\": \".+@example.com\",\n },\n \"matching_type\": \"MATCHING_TYPE_FULL_MATCH\",\n },\n }],\n },\n {\n \"info_types\": [{\n \"name\": \"MY_CUSTOM_TYPE\",\n }],\n \"rules\": [{\n \"hotword_rule\": {\n \"hotword_regex\": {\n \"pattern\": \"example*\",\n },\n \"proximity\": {\n \"window_before\": 50,\n },\n \"likelihood_adjustment\": {\n \"fixed_likelihood\": \"VERY_LIKELY\",\n },\n },\n }],\n },\n ],\n \"limits\": {\n \"max_findings_per_item\": 10,\n \"max_findings_per_request\": 50,\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var inspect = new Gcp.DataLoss.PreventionJobTrigger(\"inspect\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description\",\n DisplayName = \"Displayname\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Schedule = new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerScheduleArgs\n {\n RecurrencePeriodDuration = \"86400s\",\n },\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"fake\",\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n SaveFindings = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsArgs\n {\n OutputConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs\n {\n Table = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs\n {\n ProjectId = \"project\",\n DatasetId = \"dataset\",\n },\n },\n },\n },\n },\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n CloudStorageOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs\n {\n FileSet = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs\n {\n Url = \"gs://mybucket/directory/\",\n },\n },\n },\n InspectConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigArgs\n {\n CustomInfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigCustomInfoTypeArgs\n {\n InfoType = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigCustomInfoTypeInfoTypeArgs\n {\n Name = \"MY_CUSTOM_TYPE\",\n },\n Likelihood = \"UNLIKELY\",\n Regex = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigCustomInfoTypeRegexArgs\n {\n Pattern = \"test*\",\n },\n },\n },\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigInfoTypeArgs\n {\n Name = \"EMAIL_ADDRESS\",\n },\n },\n MinLikelihood = \"UNLIKELY\",\n RuleSets = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"EMAIL_ADDRESS\",\n },\n },\n Rules = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleArgs\n {\n ExclusionRule = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleExclusionRuleArgs\n {\n Regex = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleExclusionRuleRegexArgs\n {\n Pattern = \".+@example.com\",\n },\n MatchingType = \"MATCHING_TYPE_FULL_MATCH\",\n },\n },\n },\n },\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"MY_CUSTOM_TYPE\",\n },\n },\n Rules = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleArgs\n {\n HotwordRule = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleArgs\n {\n HotwordRegex = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs\n {\n Pattern = \"example*\",\n },\n Proximity = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleProximityArgs\n {\n WindowBefore = 50,\n },\n LikelihoodAdjustment = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs\n {\n FixedLikelihood = \"VERY_LIKELY\",\n },\n },\n },\n },\n },\n },\n Limits = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigLimitsArgs\n {\n MaxFindingsPerItem = 10,\n MaxFindingsPerRequest = 50,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataloss.NewPreventionJobTrigger(ctx, \"inspect\", \u0026dataloss.PreventionJobTriggerArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"Description\"),\n\t\t\tDisplayName: pulumi.String(\"Displayname\"),\n\t\t\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataloss.PreventionJobTriggerTriggerScheduleArgs{\n\t\t\t\t\t\tRecurrencePeriodDuration: pulumi.String(\"86400s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"fake\"),\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tSaveFindings: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsArgs{\n\t\t\t\t\t\t\tOutputConfig: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs{\n\t\t\t\t\t\t\t\tTable: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs{\n\t\t\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\t\t\tDatasetId: pulumi.String(\"dataset\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tCloudStorageOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs{\n\t\t\t\t\t\tFileSet: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs{\n\t\t\t\t\t\t\tUrl: pulumi.String(\"gs://mybucket/directory/\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tInspectConfig: \u0026dataloss.PreventionJobTriggerInspectJobInspectConfigArgs{\n\t\t\t\t\tCustomInfoTypes: dataloss.PreventionJobTriggerInspectJobInspectConfigCustomInfoTypeArray{\n\t\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobInspectConfigCustomInfoTypeArgs{\n\t\t\t\t\t\t\tInfoType: \u0026dataloss.PreventionJobTriggerInspectJobInspectConfigCustomInfoTypeInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"MY_CUSTOM_TYPE\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tLikelihood: pulumi.String(\"UNLIKELY\"),\n\t\t\t\t\t\t\tRegex: \u0026dataloss.PreventionJobTriggerInspectJobInspectConfigCustomInfoTypeRegexArgs{\n\t\t\t\t\t\t\t\tPattern: pulumi.String(\"test*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tInfoTypes: dataloss.PreventionJobTriggerInspectJobInspectConfigInfoTypeArray{\n\t\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobInspectConfigInfoTypeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"EMAIL_ADDRESS\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tMinLikelihood: pulumi.String(\"UNLIKELY\"),\n\t\t\t\t\tRuleSets: dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetArray{\n\t\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetArgs{\n\t\t\t\t\t\t\tInfoTypes: dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetInfoTypeArray{\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"EMAIL_ADDRESS\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRules: dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleArray{\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleArgs{\n\t\t\t\t\t\t\t\t\tExclusionRule: \u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleExclusionRuleArgs{\n\t\t\t\t\t\t\t\t\t\tRegex: \u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleExclusionRuleRegexArgs{\n\t\t\t\t\t\t\t\t\t\t\tPattern: pulumi.String(\".+@example.com\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tMatchingType: pulumi.String(\"MATCHING_TYPE_FULL_MATCH\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetArgs{\n\t\t\t\t\t\t\tInfoTypes: dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetInfoTypeArray{\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"MY_CUSTOM_TYPE\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRules: dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleArray{\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleArgs{\n\t\t\t\t\t\t\t\t\tHotwordRule: \u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleArgs{\n\t\t\t\t\t\t\t\t\t\tHotwordRegex: \u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs{\n\t\t\t\t\t\t\t\t\t\t\tPattern: pulumi.String(\"example*\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tProximity: \u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleProximityArgs{\n\t\t\t\t\t\t\t\t\t\t\tWindowBefore: pulumi.Int(50),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tLikelihoodAdjustment: \u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs{\n\t\t\t\t\t\t\t\t\t\t\tFixedLikelihood: pulumi.String(\"VERY_LIKELY\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tLimits: \u0026dataloss.PreventionJobTriggerInspectJobInspectConfigLimitsArgs{\n\t\t\t\t\t\tMaxFindingsPerItem: pulumi.Int(10),\n\t\t\t\t\t\tMaxFindingsPerRequest: pulumi.Int(50),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerScheduleArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobInspectConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobInspectConfigLimitsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var inspect = new PreventionJobTrigger(\"inspect\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Description\")\n .displayName(\"Displayname\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .schedule(PreventionJobTriggerTriggerScheduleArgs.builder()\n .recurrencePeriodDuration(\"86400s\")\n .build())\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"fake\")\n .actions(PreventionJobTriggerInspectJobActionArgs.builder()\n .saveFindings(PreventionJobTriggerInspectJobActionSaveFindingsArgs.builder()\n .outputConfig(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs.builder()\n .table(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs.builder()\n .projectId(\"project\")\n .datasetId(\"dataset\")\n .build())\n .build())\n .build())\n .build())\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .cloudStorageOptions(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs.builder()\n .fileSet(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs.builder()\n .url(\"gs://mybucket/directory/\")\n .build())\n .build())\n .build())\n .inspectConfig(PreventionJobTriggerInspectJobInspectConfigArgs.builder()\n .customInfoTypes(PreventionJobTriggerInspectJobInspectConfigCustomInfoTypeArgs.builder()\n .infoType(PreventionJobTriggerInspectJobInspectConfigCustomInfoTypeInfoTypeArgs.builder()\n .name(\"MY_CUSTOM_TYPE\")\n .build())\n .likelihood(\"UNLIKELY\")\n .regex(PreventionJobTriggerInspectJobInspectConfigCustomInfoTypeRegexArgs.builder()\n .pattern(\"test*\")\n .build())\n .build())\n .infoTypes(PreventionJobTriggerInspectJobInspectConfigInfoTypeArgs.builder()\n .name(\"EMAIL_ADDRESS\")\n .build())\n .minLikelihood(\"UNLIKELY\")\n .ruleSets( \n PreventionJobTriggerInspectJobInspectConfigRuleSetArgs.builder()\n .infoTypes(PreventionJobTriggerInspectJobInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"EMAIL_ADDRESS\")\n .build())\n .rules(PreventionJobTriggerInspectJobInspectConfigRuleSetRuleArgs.builder()\n .exclusionRule(PreventionJobTriggerInspectJobInspectConfigRuleSetRuleExclusionRuleArgs.builder()\n .regex(PreventionJobTriggerInspectJobInspectConfigRuleSetRuleExclusionRuleRegexArgs.builder()\n .pattern(\".+@example.com\")\n .build())\n .matchingType(\"MATCHING_TYPE_FULL_MATCH\")\n .build())\n .build())\n .build(),\n PreventionJobTriggerInspectJobInspectConfigRuleSetArgs.builder()\n .infoTypes(PreventionJobTriggerInspectJobInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"MY_CUSTOM_TYPE\")\n .build())\n .rules(PreventionJobTriggerInspectJobInspectConfigRuleSetRuleArgs.builder()\n .hotwordRule(PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleArgs.builder()\n .hotwordRegex(PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs.builder()\n .pattern(\"example*\")\n .build())\n .proximity(PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleProximityArgs.builder()\n .windowBefore(50)\n .build())\n .likelihoodAdjustment(PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs.builder()\n .fixedLikelihood(\"VERY_LIKELY\")\n .build())\n .build())\n .build())\n .build())\n .limits(PreventionJobTriggerInspectJobInspectConfigLimitsArgs.builder()\n .maxFindingsPerItem(10)\n .maxFindingsPerRequest(50)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n inspect:\n type: gcp:dataloss:PreventionJobTrigger\n properties:\n parent: projects/my-project-name\n description: Description\n displayName: Displayname\n triggers:\n - schedule:\n recurrencePeriodDuration: 86400s\n inspectJob:\n inspectTemplateName: fake\n actions:\n - saveFindings:\n outputConfig:\n table:\n projectId: project\n datasetId: dataset\n storageConfig:\n cloudStorageOptions:\n fileSet:\n url: gs://mybucket/directory/\n inspectConfig:\n customInfoTypes:\n - infoType:\n name: MY_CUSTOM_TYPE\n likelihood: UNLIKELY\n regex:\n pattern: test*\n infoTypes:\n - name: EMAIL_ADDRESS\n minLikelihood: UNLIKELY\n ruleSets:\n - infoTypes:\n - name: EMAIL_ADDRESS\n rules:\n - exclusionRule:\n regex:\n pattern: .+@example.com\n matchingType: MATCHING_TYPE_FULL_MATCH\n - infoTypes:\n - name: MY_CUSTOM_TYPE\n rules:\n - hotwordRule:\n hotwordRegex:\n pattern: example*\n proximity:\n windowBefore: 50\n likelihoodAdjustment:\n fixedLikelihood: VERY_LIKELY\n limits:\n maxFindingsPerItem: 10\n maxFindingsPerRequest: 50\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Job Trigger Publish To Stackdriver\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst publishToStackdriver = new gcp.dataloss.PreventionJobTrigger(\"publish_to_stackdriver\", {\n parent: \"projects/my-project-name\",\n description: \"Description for the job_trigger created by terraform\",\n displayName: \"TerraformDisplayName\",\n triggers: [{\n schedule: {\n recurrencePeriodDuration: \"86400s\",\n },\n }],\n inspectJob: {\n inspectTemplateName: \"sample-inspect-template\",\n actions: [{\n publishToStackdriver: {},\n }],\n storageConfig: {\n cloudStorageOptions: {\n fileSet: {\n url: \"gs://mybucket/directory/\",\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npublish_to_stackdriver = gcp.dataloss.PreventionJobTrigger(\"publish_to_stackdriver\",\n parent=\"projects/my-project-name\",\n description=\"Description for the job_trigger created by terraform\",\n display_name=\"TerraformDisplayName\",\n triggers=[{\n \"schedule\": {\n \"recurrence_period_duration\": \"86400s\",\n },\n }],\n inspect_job={\n \"inspect_template_name\": \"sample-inspect-template\",\n \"actions\": [{\n \"publish_to_stackdriver\": {},\n }],\n \"storage_config\": {\n \"cloud_storage_options\": {\n \"file_set\": {\n \"url\": \"gs://mybucket/directory/\",\n },\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var publishToStackdriver = new Gcp.DataLoss.PreventionJobTrigger(\"publish_to_stackdriver\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description for the job_trigger created by terraform\",\n DisplayName = \"TerraformDisplayName\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Schedule = new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerScheduleArgs\n {\n RecurrencePeriodDuration = \"86400s\",\n },\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"sample-inspect-template\",\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n PublishToStackdriver = null,\n },\n },\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n CloudStorageOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs\n {\n FileSet = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs\n {\n Url = \"gs://mybucket/directory/\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataloss.NewPreventionJobTrigger(ctx, \"publish_to_stackdriver\", \u0026dataloss.PreventionJobTriggerArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"Description for the job_trigger created by terraform\"),\n\t\t\tDisplayName: pulumi.String(\"TerraformDisplayName\"),\n\t\t\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataloss.PreventionJobTriggerTriggerScheduleArgs{\n\t\t\t\t\t\tRecurrencePeriodDuration: pulumi.String(\"86400s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"sample-inspect-template\"),\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tPublishToStackdriver: nil,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tCloudStorageOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs{\n\t\t\t\t\t\tFileSet: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs{\n\t\t\t\t\t\t\tUrl: pulumi.String(\"gs://mybucket/directory/\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerScheduleArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var publishToStackdriver = new PreventionJobTrigger(\"publishToStackdriver\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Description for the job_trigger created by terraform\")\n .displayName(\"TerraformDisplayName\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .schedule(PreventionJobTriggerTriggerScheduleArgs.builder()\n .recurrencePeriodDuration(\"86400s\")\n .build())\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"sample-inspect-template\")\n .actions(PreventionJobTriggerInspectJobActionArgs.builder()\n .publishToStackdriver()\n .build())\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .cloudStorageOptions(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs.builder()\n .fileSet(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs.builder()\n .url(\"gs://mybucket/directory/\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n publishToStackdriver:\n type: gcp:dataloss:PreventionJobTrigger\n name: publish_to_stackdriver\n properties:\n parent: projects/my-project-name\n description: Description for the job_trigger created by terraform\n displayName: TerraformDisplayName\n triggers:\n - schedule:\n recurrencePeriodDuration: 86400s\n inspectJob:\n inspectTemplateName: sample-inspect-template\n actions:\n - publishToStackdriver: {}\n storageConfig:\n cloudStorageOptions:\n fileSet:\n url: gs://mybucket/directory/\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Job Trigger With Id\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst withTriggerId = new gcp.dataloss.PreventionJobTrigger(\"with_trigger_id\", {\n parent: \"projects/my-project-name\",\n description: \"Starting description\",\n displayName: \"display\",\n triggerId: \"id-\",\n triggers: [{\n schedule: {\n recurrencePeriodDuration: \"86400s\",\n },\n }],\n inspectJob: {\n inspectTemplateName: \"fake\",\n actions: [{\n saveFindings: {\n outputConfig: {\n table: {\n projectId: \"project\",\n datasetId: \"dataset123\",\n },\n },\n },\n }],\n storageConfig: {\n cloudStorageOptions: {\n fileSet: {\n url: \"gs://mybucket/directory/\",\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nwith_trigger_id = gcp.dataloss.PreventionJobTrigger(\"with_trigger_id\",\n parent=\"projects/my-project-name\",\n description=\"Starting description\",\n display_name=\"display\",\n trigger_id=\"id-\",\n triggers=[{\n \"schedule\": {\n \"recurrence_period_duration\": \"86400s\",\n },\n }],\n inspect_job={\n \"inspect_template_name\": \"fake\",\n \"actions\": [{\n \"save_findings\": {\n \"output_config\": {\n \"table\": {\n \"project_id\": \"project\",\n \"dataset_id\": \"dataset123\",\n },\n },\n },\n }],\n \"storage_config\": {\n \"cloud_storage_options\": {\n \"file_set\": {\n \"url\": \"gs://mybucket/directory/\",\n },\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var withTriggerId = new Gcp.DataLoss.PreventionJobTrigger(\"with_trigger_id\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Starting description\",\n DisplayName = \"display\",\n TriggerId = \"id-\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Schedule = new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerScheduleArgs\n {\n RecurrencePeriodDuration = \"86400s\",\n },\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"fake\",\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n SaveFindings = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsArgs\n {\n OutputConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs\n {\n Table = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs\n {\n ProjectId = \"project\",\n DatasetId = \"dataset123\",\n },\n },\n },\n },\n },\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n CloudStorageOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs\n {\n FileSet = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs\n {\n Url = \"gs://mybucket/directory/\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataloss.NewPreventionJobTrigger(ctx, \"with_trigger_id\", \u0026dataloss.PreventionJobTriggerArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"Starting description\"),\n\t\t\tDisplayName: pulumi.String(\"display\"),\n\t\t\tTriggerId: pulumi.String(\"id-\"),\n\t\t\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataloss.PreventionJobTriggerTriggerScheduleArgs{\n\t\t\t\t\t\tRecurrencePeriodDuration: pulumi.String(\"86400s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"fake\"),\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tSaveFindings: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsArgs{\n\t\t\t\t\t\t\tOutputConfig: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs{\n\t\t\t\t\t\t\t\tTable: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs{\n\t\t\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\t\t\tDatasetId: pulumi.String(\"dataset123\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tCloudStorageOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs{\n\t\t\t\t\t\tFileSet: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs{\n\t\t\t\t\t\t\tUrl: pulumi.String(\"gs://mybucket/directory/\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerScheduleArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var withTriggerId = new PreventionJobTrigger(\"withTriggerId\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Starting description\")\n .displayName(\"display\")\n .triggerId(\"id-\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .schedule(PreventionJobTriggerTriggerScheduleArgs.builder()\n .recurrencePeriodDuration(\"86400s\")\n .build())\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"fake\")\n .actions(PreventionJobTriggerInspectJobActionArgs.builder()\n .saveFindings(PreventionJobTriggerInspectJobActionSaveFindingsArgs.builder()\n .outputConfig(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs.builder()\n .table(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs.builder()\n .projectId(\"project\")\n .datasetId(\"dataset123\")\n .build())\n .build())\n .build())\n .build())\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .cloudStorageOptions(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs.builder()\n .fileSet(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs.builder()\n .url(\"gs://mybucket/directory/\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n withTriggerId:\n type: gcp:dataloss:PreventionJobTrigger\n name: with_trigger_id\n properties:\n parent: projects/my-project-name\n description: Starting description\n displayName: display\n triggerId: id-\n triggers:\n - schedule:\n recurrencePeriodDuration: 86400s\n inspectJob:\n inspectTemplateName: fake\n actions:\n - saveFindings:\n outputConfig:\n table:\n projectId: project\n datasetId: dataset123\n storageConfig:\n cloudStorageOptions:\n fileSet:\n url: gs://mybucket/directory/\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Job Trigger Multiple Actions\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.dataloss.PreventionJobTrigger(\"basic\", {\n parent: \"projects/my-project-name\",\n description: \"Description\",\n displayName: \"Displayname\",\n triggers: [{\n schedule: {\n recurrencePeriodDuration: \"86400s\",\n },\n }],\n inspectJob: {\n inspectTemplateName: \"fake\",\n actions: [\n {\n saveFindings: {\n outputConfig: {\n table: {\n projectId: \"project\",\n datasetId: \"dataset\",\n },\n },\n },\n },\n {\n pubSub: {\n topic: \"projects/project/topics/topic-name\",\n },\n },\n ],\n storageConfig: {\n cloudStorageOptions: {\n fileSet: {\n url: \"gs://mybucket/directory/\",\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.dataloss.PreventionJobTrigger(\"basic\",\n parent=\"projects/my-project-name\",\n description=\"Description\",\n display_name=\"Displayname\",\n triggers=[{\n \"schedule\": {\n \"recurrence_period_duration\": \"86400s\",\n },\n }],\n inspect_job={\n \"inspect_template_name\": \"fake\",\n \"actions\": [\n {\n \"save_findings\": {\n \"output_config\": {\n \"table\": {\n \"project_id\": \"project\",\n \"dataset_id\": \"dataset\",\n },\n },\n },\n },\n {\n \"pub_sub\": {\n \"topic\": \"projects/project/topics/topic-name\",\n },\n },\n ],\n \"storage_config\": {\n \"cloud_storage_options\": {\n \"file_set\": {\n \"url\": \"gs://mybucket/directory/\",\n },\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basic = new Gcp.DataLoss.PreventionJobTrigger(\"basic\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description\",\n DisplayName = \"Displayname\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Schedule = new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerScheduleArgs\n {\n RecurrencePeriodDuration = \"86400s\",\n },\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"fake\",\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n SaveFindings = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsArgs\n {\n OutputConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs\n {\n Table = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs\n {\n ProjectId = \"project\",\n DatasetId = \"dataset\",\n },\n },\n },\n },\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n PubSub = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionPubSubArgs\n {\n Topic = \"projects/project/topics/topic-name\",\n },\n },\n },\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n CloudStorageOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs\n {\n FileSet = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs\n {\n Url = \"gs://mybucket/directory/\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataloss.NewPreventionJobTrigger(ctx, \"basic\", \u0026dataloss.PreventionJobTriggerArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"Description\"),\n\t\t\tDisplayName: pulumi.String(\"Displayname\"),\n\t\t\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataloss.PreventionJobTriggerTriggerScheduleArgs{\n\t\t\t\t\t\tRecurrencePeriodDuration: pulumi.String(\"86400s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"fake\"),\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tSaveFindings: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsArgs{\n\t\t\t\t\t\t\tOutputConfig: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs{\n\t\t\t\t\t\t\t\tTable: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs{\n\t\t\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\t\t\tDatasetId: pulumi.String(\"dataset\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tPubSub: \u0026dataloss.PreventionJobTriggerInspectJobActionPubSubArgs{\n\t\t\t\t\t\t\tTopic: pulumi.String(\"projects/project/topics/topic-name\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tCloudStorageOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs{\n\t\t\t\t\t\tFileSet: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs{\n\t\t\t\t\t\t\tUrl: pulumi.String(\"gs://mybucket/directory/\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerScheduleArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basic = new PreventionJobTrigger(\"basic\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Description\")\n .displayName(\"Displayname\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .schedule(PreventionJobTriggerTriggerScheduleArgs.builder()\n .recurrencePeriodDuration(\"86400s\")\n .build())\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"fake\")\n .actions( \n PreventionJobTriggerInspectJobActionArgs.builder()\n .saveFindings(PreventionJobTriggerInspectJobActionSaveFindingsArgs.builder()\n .outputConfig(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs.builder()\n .table(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs.builder()\n .projectId(\"project\")\n .datasetId(\"dataset\")\n .build())\n .build())\n .build())\n .build(),\n PreventionJobTriggerInspectJobActionArgs.builder()\n .pubSub(PreventionJobTriggerInspectJobActionPubSubArgs.builder()\n .topic(\"projects/project/topics/topic-name\")\n .build())\n .build())\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .cloudStorageOptions(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs.builder()\n .fileSet(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs.builder()\n .url(\"gs://mybucket/directory/\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:dataloss:PreventionJobTrigger\n properties:\n parent: projects/my-project-name\n description: Description\n displayName: Displayname\n triggers:\n - schedule:\n recurrencePeriodDuration: 86400s\n inspectJob:\n inspectTemplateName: fake\n actions:\n - saveFindings:\n outputConfig:\n table:\n projectId: project\n datasetId: dataset\n - pubSub:\n topic: projects/project/topics/topic-name\n storageConfig:\n cloudStorageOptions:\n fileSet:\n url: gs://mybucket/directory/\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Job Trigger Cloud Storage Optional Timespan Autopopulation\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.dataloss.PreventionJobTrigger(\"basic\", {\n parent: \"projects/my-project-name\",\n description: \"Description\",\n displayName: \"Displayname\",\n triggers: [{\n schedule: {\n recurrencePeriodDuration: \"86400s\",\n },\n }],\n inspectJob: {\n inspectTemplateName: \"fake\",\n actions: [{\n saveFindings: {\n outputConfig: {\n table: {\n projectId: \"project\",\n datasetId: \"dataset\",\n },\n },\n },\n }],\n storageConfig: {\n timespanConfig: {\n enableAutoPopulationOfTimespanConfig: true,\n },\n cloudStorageOptions: {\n fileSet: {\n url: \"gs://mybucket/directory/\",\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.dataloss.PreventionJobTrigger(\"basic\",\n parent=\"projects/my-project-name\",\n description=\"Description\",\n display_name=\"Displayname\",\n triggers=[{\n \"schedule\": {\n \"recurrence_period_duration\": \"86400s\",\n },\n }],\n inspect_job={\n \"inspect_template_name\": \"fake\",\n \"actions\": [{\n \"save_findings\": {\n \"output_config\": {\n \"table\": {\n \"project_id\": \"project\",\n \"dataset_id\": \"dataset\",\n },\n },\n },\n }],\n \"storage_config\": {\n \"timespan_config\": {\n \"enable_auto_population_of_timespan_config\": True,\n },\n \"cloud_storage_options\": {\n \"file_set\": {\n \"url\": \"gs://mybucket/directory/\",\n },\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basic = new Gcp.DataLoss.PreventionJobTrigger(\"basic\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description\",\n DisplayName = \"Displayname\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Schedule = new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerScheduleArgs\n {\n RecurrencePeriodDuration = \"86400s\",\n },\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"fake\",\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n SaveFindings = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsArgs\n {\n OutputConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs\n {\n Table = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs\n {\n ProjectId = \"project\",\n DatasetId = \"dataset\",\n },\n },\n },\n },\n },\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n TimespanConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigTimespanConfigArgs\n {\n EnableAutoPopulationOfTimespanConfig = true,\n },\n CloudStorageOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs\n {\n FileSet = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs\n {\n Url = \"gs://mybucket/directory/\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataloss.NewPreventionJobTrigger(ctx, \"basic\", \u0026dataloss.PreventionJobTriggerArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"Description\"),\n\t\t\tDisplayName: pulumi.String(\"Displayname\"),\n\t\t\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataloss.PreventionJobTriggerTriggerScheduleArgs{\n\t\t\t\t\t\tRecurrencePeriodDuration: pulumi.String(\"86400s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"fake\"),\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tSaveFindings: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsArgs{\n\t\t\t\t\t\t\tOutputConfig: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs{\n\t\t\t\t\t\t\t\tTable: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs{\n\t\t\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\t\t\tDatasetId: pulumi.String(\"dataset\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tTimespanConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigTimespanConfigArgs{\n\t\t\t\t\t\tEnableAutoPopulationOfTimespanConfig: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tCloudStorageOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs{\n\t\t\t\t\t\tFileSet: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs{\n\t\t\t\t\t\t\tUrl: pulumi.String(\"gs://mybucket/directory/\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerScheduleArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigTimespanConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basic = new PreventionJobTrigger(\"basic\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Description\")\n .displayName(\"Displayname\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .schedule(PreventionJobTriggerTriggerScheduleArgs.builder()\n .recurrencePeriodDuration(\"86400s\")\n .build())\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"fake\")\n .actions(PreventionJobTriggerInspectJobActionArgs.builder()\n .saveFindings(PreventionJobTriggerInspectJobActionSaveFindingsArgs.builder()\n .outputConfig(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs.builder()\n .table(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs.builder()\n .projectId(\"project\")\n .datasetId(\"dataset\")\n .build())\n .build())\n .build())\n .build())\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .timespanConfig(PreventionJobTriggerInspectJobStorageConfigTimespanConfigArgs.builder()\n .enableAutoPopulationOfTimespanConfig(true)\n .build())\n .cloudStorageOptions(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs.builder()\n .fileSet(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs.builder()\n .url(\"gs://mybucket/directory/\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:dataloss:PreventionJobTrigger\n properties:\n parent: projects/my-project-name\n description: Description\n displayName: Displayname\n triggers:\n - schedule:\n recurrencePeriodDuration: 86400s\n inspectJob:\n inspectTemplateName: fake\n actions:\n - saveFindings:\n outputConfig:\n table:\n projectId: project\n datasetId: dataset\n storageConfig:\n timespanConfig:\n enableAutoPopulationOfTimespanConfig: true\n cloudStorageOptions:\n fileSet:\n url: gs://mybucket/directory/\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Job Trigger Timespan Config Big Query\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst timespanConfigBigQuery = new gcp.dataloss.PreventionJobTrigger(\"timespan_config_big_query\", {\n parent: \"projects/my-project-name\",\n description: \"BigQuery DLP Job Trigger with timespan config and row limit\",\n displayName: \"bigquery-dlp-job-trigger-limit-timespan\",\n triggers: [{\n schedule: {\n recurrencePeriodDuration: \"86400s\",\n },\n }],\n inspectJob: {\n inspectTemplateName: \"projects/test/locations/global/inspectTemplates/6425492983381733900\",\n storageConfig: {\n bigQueryOptions: {\n tableReference: {\n projectId: \"project\",\n datasetId: \"dataset\",\n tableId: \"table\",\n },\n sampleMethod: \"\",\n },\n timespanConfig: {\n startTime: \"2023-01-01T00:00:23Z\",\n timestampField: {\n name: \"timestamp\",\n },\n },\n },\n actions: [{\n saveFindings: {\n outputConfig: {\n table: {\n projectId: \"project\",\n datasetId: \"output\",\n },\n },\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntimespan_config_big_query = gcp.dataloss.PreventionJobTrigger(\"timespan_config_big_query\",\n parent=\"projects/my-project-name\",\n description=\"BigQuery DLP Job Trigger with timespan config and row limit\",\n display_name=\"bigquery-dlp-job-trigger-limit-timespan\",\n triggers=[{\n \"schedule\": {\n \"recurrence_period_duration\": \"86400s\",\n },\n }],\n inspect_job={\n \"inspect_template_name\": \"projects/test/locations/global/inspectTemplates/6425492983381733900\",\n \"storage_config\": {\n \"big_query_options\": {\n \"table_reference\": {\n \"project_id\": \"project\",\n \"dataset_id\": \"dataset\",\n \"table_id\": \"table\",\n },\n \"sample_method\": \"\",\n },\n \"timespan_config\": {\n \"start_time\": \"2023-01-01T00:00:23Z\",\n \"timestamp_field\": {\n \"name\": \"timestamp\",\n },\n },\n },\n \"actions\": [{\n \"save_findings\": {\n \"output_config\": {\n \"table\": {\n \"project_id\": \"project\",\n \"dataset_id\": \"output\",\n },\n },\n },\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var timespanConfigBigQuery = new Gcp.DataLoss.PreventionJobTrigger(\"timespan_config_big_query\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"BigQuery DLP Job Trigger with timespan config and row limit\",\n DisplayName = \"bigquery-dlp-job-trigger-limit-timespan\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Schedule = new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerScheduleArgs\n {\n RecurrencePeriodDuration = \"86400s\",\n },\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"projects/test/locations/global/inspectTemplates/6425492983381733900\",\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n BigQueryOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs\n {\n TableReference = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs\n {\n ProjectId = \"project\",\n DatasetId = \"dataset\",\n TableId = \"table\",\n },\n SampleMethod = \"\",\n },\n TimespanConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigTimespanConfigArgs\n {\n StartTime = \"2023-01-01T00:00:23Z\",\n TimestampField = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigTimespanConfigTimestampFieldArgs\n {\n Name = \"timestamp\",\n },\n },\n },\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n SaveFindings = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsArgs\n {\n OutputConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs\n {\n Table = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs\n {\n ProjectId = \"project\",\n DatasetId = \"output\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataloss.NewPreventionJobTrigger(ctx, \"timespan_config_big_query\", \u0026dataloss.PreventionJobTriggerArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"BigQuery DLP Job Trigger with timespan config and row limit\"),\n\t\t\tDisplayName: pulumi.String(\"bigquery-dlp-job-trigger-limit-timespan\"),\n\t\t\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataloss.PreventionJobTriggerTriggerScheduleArgs{\n\t\t\t\t\t\tRecurrencePeriodDuration: pulumi.String(\"86400s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"projects/test/locations/global/inspectTemplates/6425492983381733900\"),\n\t\t\t\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tBigQueryOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs{\n\t\t\t\t\t\tTableReference: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs{\n\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\tDatasetId: pulumi.String(\"dataset\"),\n\t\t\t\t\t\t\tTableId: pulumi.String(\"table\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSampleMethod: pulumi.String(\"\"),\n\t\t\t\t\t},\n\t\t\t\t\tTimespanConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigTimespanConfigArgs{\n\t\t\t\t\t\tStartTime: pulumi.String(\"2023-01-01T00:00:23Z\"),\n\t\t\t\t\t\tTimestampField: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigTimespanConfigTimestampFieldArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"timestamp\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tSaveFindings: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsArgs{\n\t\t\t\t\t\t\tOutputConfig: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs{\n\t\t\t\t\t\t\t\tTable: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs{\n\t\t\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\t\t\tDatasetId: pulumi.String(\"output\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerScheduleArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigTimespanConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigTimespanConfigTimestampFieldArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var timespanConfigBigQuery = new PreventionJobTrigger(\"timespanConfigBigQuery\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"BigQuery DLP Job Trigger with timespan config and row limit\")\n .displayName(\"bigquery-dlp-job-trigger-limit-timespan\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .schedule(PreventionJobTriggerTriggerScheduleArgs.builder()\n .recurrencePeriodDuration(\"86400s\")\n .build())\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"projects/test/locations/global/inspectTemplates/6425492983381733900\")\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .bigQueryOptions(PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs.builder()\n .tableReference(PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs.builder()\n .projectId(\"project\")\n .datasetId(\"dataset\")\n .tableId(\"table\")\n .build())\n .sampleMethod(\"\")\n .build())\n .timespanConfig(PreventionJobTriggerInspectJobStorageConfigTimespanConfigArgs.builder()\n .startTime(\"2023-01-01T00:00:23Z\")\n .timestampField(PreventionJobTriggerInspectJobStorageConfigTimespanConfigTimestampFieldArgs.builder()\n .name(\"timestamp\")\n .build())\n .build())\n .build())\n .actions(PreventionJobTriggerInspectJobActionArgs.builder()\n .saveFindings(PreventionJobTriggerInspectJobActionSaveFindingsArgs.builder()\n .outputConfig(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs.builder()\n .table(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs.builder()\n .projectId(\"project\")\n .datasetId(\"output\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n timespanConfigBigQuery:\n type: gcp:dataloss:PreventionJobTrigger\n name: timespan_config_big_query\n properties:\n parent: projects/my-project-name\n description: BigQuery DLP Job Trigger with timespan config and row limit\n displayName: bigquery-dlp-job-trigger-limit-timespan\n triggers:\n - schedule:\n recurrencePeriodDuration: 86400s\n inspectJob:\n inspectTemplateName: projects/test/locations/global/inspectTemplates/6425492983381733900\n storageConfig:\n bigQueryOptions:\n tableReference:\n projectId: project\n datasetId: dataset\n tableId: table\n sampleMethod:\n timespanConfig:\n startTime: 2023-01-01T00:00:23Z\n timestampField:\n name: timestamp\n actions:\n - saveFindings:\n outputConfig:\n table:\n projectId: project\n datasetId: output\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nJobTrigger can be imported using any of these accepted formats:\n\n* `{{parent}}/jobTriggers/{{name}}`\n\n* `{{parent}}/{{name}}`\n\nWhen using the `pulumi import` command, JobTrigger can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataloss/preventionJobTrigger:PreventionJobTrigger default {{parent}}/jobTriggers/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataloss/preventionJobTrigger:PreventionJobTrigger default {{parent}}/{{name}}\n```\n\n", + "description": "A job trigger configuration.\n\n\nTo get more information about JobTrigger, see:\n\n* [API documentation](https://cloud.google.com/dlp/docs/reference/rest/v2/projects.jobTriggers)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dlp/docs/creating-job-triggers)\n\n## Example Usage\n\n### Dlp Job Trigger Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.dataloss.PreventionJobTrigger(\"basic\", {\n parent: \"projects/my-project-name\",\n description: \"Description\",\n displayName: \"Displayname\",\n triggers: [{\n schedule: {\n recurrencePeriodDuration: \"86400s\",\n },\n }],\n inspectJob: {\n inspectTemplateName: \"fake\",\n actions: [{\n saveFindings: {\n outputConfig: {\n table: {\n projectId: \"project\",\n datasetId: \"dataset\",\n },\n },\n },\n }],\n storageConfig: {\n cloudStorageOptions: {\n fileSet: {\n url: \"gs://mybucket/directory/\",\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.dataloss.PreventionJobTrigger(\"basic\",\n parent=\"projects/my-project-name\",\n description=\"Description\",\n display_name=\"Displayname\",\n triggers=[{\n \"schedule\": {\n \"recurrence_period_duration\": \"86400s\",\n },\n }],\n inspect_job={\n \"inspect_template_name\": \"fake\",\n \"actions\": [{\n \"save_findings\": {\n \"output_config\": {\n \"table\": {\n \"project_id\": \"project\",\n \"dataset_id\": \"dataset\",\n },\n },\n },\n }],\n \"storage_config\": {\n \"cloud_storage_options\": {\n \"file_set\": {\n \"url\": \"gs://mybucket/directory/\",\n },\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basic = new Gcp.DataLoss.PreventionJobTrigger(\"basic\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description\",\n DisplayName = \"Displayname\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Schedule = new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerScheduleArgs\n {\n RecurrencePeriodDuration = \"86400s\",\n },\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"fake\",\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n SaveFindings = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsArgs\n {\n OutputConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs\n {\n Table = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs\n {\n ProjectId = \"project\",\n DatasetId = \"dataset\",\n },\n },\n },\n },\n },\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n CloudStorageOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs\n {\n FileSet = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs\n {\n Url = \"gs://mybucket/directory/\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataloss.NewPreventionJobTrigger(ctx, \"basic\", \u0026dataloss.PreventionJobTriggerArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"Description\"),\n\t\t\tDisplayName: pulumi.String(\"Displayname\"),\n\t\t\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataloss.PreventionJobTriggerTriggerScheduleArgs{\n\t\t\t\t\t\tRecurrencePeriodDuration: pulumi.String(\"86400s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"fake\"),\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tSaveFindings: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsArgs{\n\t\t\t\t\t\t\tOutputConfig: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs{\n\t\t\t\t\t\t\t\tTable: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs{\n\t\t\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\t\t\tDatasetId: pulumi.String(\"dataset\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tCloudStorageOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs{\n\t\t\t\t\t\tFileSet: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs{\n\t\t\t\t\t\t\tUrl: pulumi.String(\"gs://mybucket/directory/\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerScheduleArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basic = new PreventionJobTrigger(\"basic\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Description\")\n .displayName(\"Displayname\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .schedule(PreventionJobTriggerTriggerScheduleArgs.builder()\n .recurrencePeriodDuration(\"86400s\")\n .build())\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"fake\")\n .actions(PreventionJobTriggerInspectJobActionArgs.builder()\n .saveFindings(PreventionJobTriggerInspectJobActionSaveFindingsArgs.builder()\n .outputConfig(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs.builder()\n .table(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs.builder()\n .projectId(\"project\")\n .datasetId(\"dataset\")\n .build())\n .build())\n .build())\n .build())\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .cloudStorageOptions(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs.builder()\n .fileSet(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs.builder()\n .url(\"gs://mybucket/directory/\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:dataloss:PreventionJobTrigger\n properties:\n parent: projects/my-project-name\n description: Description\n displayName: Displayname\n triggers:\n - schedule:\n recurrencePeriodDuration: 86400s\n inspectJob:\n inspectTemplateName: fake\n actions:\n - saveFindings:\n outputConfig:\n table:\n projectId: project\n datasetId: dataset\n storageConfig:\n cloudStorageOptions:\n fileSet:\n url: gs://mybucket/directory/\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Job Trigger Bigquery Row Limit\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bigqueryRowLimit = new gcp.dataloss.PreventionJobTrigger(\"bigquery_row_limit\", {\n parent: \"projects/my-project-name\",\n description: \"Description\",\n displayName: \"Displayname\",\n triggers: [{\n schedule: {\n recurrencePeriodDuration: \"86400s\",\n },\n }],\n inspectJob: {\n inspectTemplateName: \"fake\",\n actions: [{\n saveFindings: {\n outputConfig: {\n table: {\n projectId: \"project\",\n datasetId: \"dataset\",\n },\n },\n },\n }],\n storageConfig: {\n bigQueryOptions: {\n tableReference: {\n projectId: \"project\",\n datasetId: \"dataset\",\n tableId: \"table_to_scan\",\n },\n rowsLimit: 1000,\n sampleMethod: \"RANDOM_START\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbigquery_row_limit = gcp.dataloss.PreventionJobTrigger(\"bigquery_row_limit\",\n parent=\"projects/my-project-name\",\n description=\"Description\",\n display_name=\"Displayname\",\n triggers=[{\n \"schedule\": {\n \"recurrence_period_duration\": \"86400s\",\n },\n }],\n inspect_job={\n \"inspect_template_name\": \"fake\",\n \"actions\": [{\n \"save_findings\": {\n \"output_config\": {\n \"table\": {\n \"project_id\": \"project\",\n \"dataset_id\": \"dataset\",\n },\n },\n },\n }],\n \"storage_config\": {\n \"big_query_options\": {\n \"table_reference\": {\n \"project_id\": \"project\",\n \"dataset_id\": \"dataset\",\n \"table_id\": \"table_to_scan\",\n },\n \"rows_limit\": 1000,\n \"sample_method\": \"RANDOM_START\",\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bigqueryRowLimit = new Gcp.DataLoss.PreventionJobTrigger(\"bigquery_row_limit\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description\",\n DisplayName = \"Displayname\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Schedule = new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerScheduleArgs\n {\n RecurrencePeriodDuration = \"86400s\",\n },\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"fake\",\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n SaveFindings = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsArgs\n {\n OutputConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs\n {\n Table = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs\n {\n ProjectId = \"project\",\n DatasetId = \"dataset\",\n },\n },\n },\n },\n },\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n BigQueryOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs\n {\n TableReference = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs\n {\n ProjectId = \"project\",\n DatasetId = \"dataset\",\n TableId = \"table_to_scan\",\n },\n RowsLimit = 1000,\n SampleMethod = \"RANDOM_START\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataloss.NewPreventionJobTrigger(ctx, \"bigquery_row_limit\", \u0026dataloss.PreventionJobTriggerArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"Description\"),\n\t\t\tDisplayName: pulumi.String(\"Displayname\"),\n\t\t\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataloss.PreventionJobTriggerTriggerScheduleArgs{\n\t\t\t\t\t\tRecurrencePeriodDuration: pulumi.String(\"86400s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"fake\"),\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tSaveFindings: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsArgs{\n\t\t\t\t\t\t\tOutputConfig: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs{\n\t\t\t\t\t\t\t\tTable: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs{\n\t\t\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\t\t\tDatasetId: pulumi.String(\"dataset\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tBigQueryOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs{\n\t\t\t\t\t\tTableReference: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs{\n\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\tDatasetId: pulumi.String(\"dataset\"),\n\t\t\t\t\t\t\tTableId: pulumi.String(\"table_to_scan\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRowsLimit: pulumi.Int(1000),\n\t\t\t\t\t\tSampleMethod: pulumi.String(\"RANDOM_START\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerScheduleArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bigqueryRowLimit = new PreventionJobTrigger(\"bigqueryRowLimit\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Description\")\n .displayName(\"Displayname\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .schedule(PreventionJobTriggerTriggerScheduleArgs.builder()\n .recurrencePeriodDuration(\"86400s\")\n .build())\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"fake\")\n .actions(PreventionJobTriggerInspectJobActionArgs.builder()\n .saveFindings(PreventionJobTriggerInspectJobActionSaveFindingsArgs.builder()\n .outputConfig(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs.builder()\n .table(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs.builder()\n .projectId(\"project\")\n .datasetId(\"dataset\")\n .build())\n .build())\n .build())\n .build())\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .bigQueryOptions(PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs.builder()\n .tableReference(PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs.builder()\n .projectId(\"project\")\n .datasetId(\"dataset\")\n .tableId(\"table_to_scan\")\n .build())\n .rowsLimit(1000)\n .sampleMethod(\"RANDOM_START\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bigqueryRowLimit:\n type: gcp:dataloss:PreventionJobTrigger\n name: bigquery_row_limit\n properties:\n parent: projects/my-project-name\n description: Description\n displayName: Displayname\n triggers:\n - schedule:\n recurrencePeriodDuration: 86400s\n inspectJob:\n inspectTemplateName: fake\n actions:\n - saveFindings:\n outputConfig:\n table:\n projectId: project\n datasetId: dataset\n storageConfig:\n bigQueryOptions:\n tableReference:\n projectId: project\n datasetId: dataset\n tableId: table_to_scan\n rowsLimit: 1000\n sampleMethod: RANDOM_START\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Job Trigger Bigquery Row Limit Percentage\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bigqueryRowLimitPercentage = new gcp.dataloss.PreventionJobTrigger(\"bigquery_row_limit_percentage\", {\n parent: \"projects/my-project-name\",\n description: \"Description\",\n displayName: \"Displayname\",\n triggers: [{\n schedule: {\n recurrencePeriodDuration: \"86400s\",\n },\n }],\n inspectJob: {\n inspectTemplateName: \"fake\",\n actions: [{\n saveFindings: {\n outputConfig: {\n table: {\n projectId: \"project\",\n datasetId: \"dataset\",\n },\n },\n },\n }],\n storageConfig: {\n bigQueryOptions: {\n tableReference: {\n projectId: \"project\",\n datasetId: \"dataset\",\n tableId: \"table_to_scan\",\n },\n rowsLimitPercent: 50,\n sampleMethod: \"RANDOM_START\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbigquery_row_limit_percentage = gcp.dataloss.PreventionJobTrigger(\"bigquery_row_limit_percentage\",\n parent=\"projects/my-project-name\",\n description=\"Description\",\n display_name=\"Displayname\",\n triggers=[{\n \"schedule\": {\n \"recurrence_period_duration\": \"86400s\",\n },\n }],\n inspect_job={\n \"inspect_template_name\": \"fake\",\n \"actions\": [{\n \"save_findings\": {\n \"output_config\": {\n \"table\": {\n \"project_id\": \"project\",\n \"dataset_id\": \"dataset\",\n },\n },\n },\n }],\n \"storage_config\": {\n \"big_query_options\": {\n \"table_reference\": {\n \"project_id\": \"project\",\n \"dataset_id\": \"dataset\",\n \"table_id\": \"table_to_scan\",\n },\n \"rows_limit_percent\": 50,\n \"sample_method\": \"RANDOM_START\",\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bigqueryRowLimitPercentage = new Gcp.DataLoss.PreventionJobTrigger(\"bigquery_row_limit_percentage\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description\",\n DisplayName = \"Displayname\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Schedule = new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerScheduleArgs\n {\n RecurrencePeriodDuration = \"86400s\",\n },\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"fake\",\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n SaveFindings = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsArgs\n {\n OutputConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs\n {\n Table = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs\n {\n ProjectId = \"project\",\n DatasetId = \"dataset\",\n },\n },\n },\n },\n },\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n BigQueryOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs\n {\n TableReference = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs\n {\n ProjectId = \"project\",\n DatasetId = \"dataset\",\n TableId = \"table_to_scan\",\n },\n RowsLimitPercent = 50,\n SampleMethod = \"RANDOM_START\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataloss.NewPreventionJobTrigger(ctx, \"bigquery_row_limit_percentage\", \u0026dataloss.PreventionJobTriggerArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"Description\"),\n\t\t\tDisplayName: pulumi.String(\"Displayname\"),\n\t\t\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataloss.PreventionJobTriggerTriggerScheduleArgs{\n\t\t\t\t\t\tRecurrencePeriodDuration: pulumi.String(\"86400s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"fake\"),\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tSaveFindings: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsArgs{\n\t\t\t\t\t\t\tOutputConfig: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs{\n\t\t\t\t\t\t\t\tTable: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs{\n\t\t\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\t\t\tDatasetId: pulumi.String(\"dataset\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tBigQueryOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs{\n\t\t\t\t\t\tTableReference: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs{\n\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\tDatasetId: pulumi.String(\"dataset\"),\n\t\t\t\t\t\t\tTableId: pulumi.String(\"table_to_scan\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRowsLimitPercent: pulumi.Int(50),\n\t\t\t\t\t\tSampleMethod: pulumi.String(\"RANDOM_START\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerScheduleArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bigqueryRowLimitPercentage = new PreventionJobTrigger(\"bigqueryRowLimitPercentage\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Description\")\n .displayName(\"Displayname\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .schedule(PreventionJobTriggerTriggerScheduleArgs.builder()\n .recurrencePeriodDuration(\"86400s\")\n .build())\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"fake\")\n .actions(PreventionJobTriggerInspectJobActionArgs.builder()\n .saveFindings(PreventionJobTriggerInspectJobActionSaveFindingsArgs.builder()\n .outputConfig(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs.builder()\n .table(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs.builder()\n .projectId(\"project\")\n .datasetId(\"dataset\")\n .build())\n .build())\n .build())\n .build())\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .bigQueryOptions(PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs.builder()\n .tableReference(PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs.builder()\n .projectId(\"project\")\n .datasetId(\"dataset\")\n .tableId(\"table_to_scan\")\n .build())\n .rowsLimitPercent(50)\n .sampleMethod(\"RANDOM_START\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bigqueryRowLimitPercentage:\n type: gcp:dataloss:PreventionJobTrigger\n name: bigquery_row_limit_percentage\n properties:\n parent: projects/my-project-name\n description: Description\n displayName: Displayname\n triggers:\n - schedule:\n recurrencePeriodDuration: 86400s\n inspectJob:\n inspectTemplateName: fake\n actions:\n - saveFindings:\n outputConfig:\n table:\n projectId: project\n datasetId: dataset\n storageConfig:\n bigQueryOptions:\n tableReference:\n projectId: project\n datasetId: dataset\n tableId: table_to_scan\n rowsLimitPercent: 50\n sampleMethod: RANDOM_START\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Job Trigger Job Notification Emails\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst jobNotificationEmails = new gcp.dataloss.PreventionJobTrigger(\"job_notification_emails\", {\n parent: \"projects/my-project-name\",\n description: \"Description for the job_trigger created by terraform\",\n displayName: \"TerraformDisplayName\",\n triggers: [{\n schedule: {\n recurrencePeriodDuration: \"86400s\",\n },\n }],\n inspectJob: {\n inspectTemplateName: \"sample-inspect-template\",\n actions: [{\n jobNotificationEmails: {},\n }],\n storageConfig: {\n cloudStorageOptions: {\n fileSet: {\n url: \"gs://mybucket/directory/\",\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\njob_notification_emails = gcp.dataloss.PreventionJobTrigger(\"job_notification_emails\",\n parent=\"projects/my-project-name\",\n description=\"Description for the job_trigger created by terraform\",\n display_name=\"TerraformDisplayName\",\n triggers=[{\n \"schedule\": {\n \"recurrence_period_duration\": \"86400s\",\n },\n }],\n inspect_job={\n \"inspect_template_name\": \"sample-inspect-template\",\n \"actions\": [{\n \"job_notification_emails\": {},\n }],\n \"storage_config\": {\n \"cloud_storage_options\": {\n \"file_set\": {\n \"url\": \"gs://mybucket/directory/\",\n },\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var jobNotificationEmails = new Gcp.DataLoss.PreventionJobTrigger(\"job_notification_emails\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description for the job_trigger created by terraform\",\n DisplayName = \"TerraformDisplayName\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Schedule = new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerScheduleArgs\n {\n RecurrencePeriodDuration = \"86400s\",\n },\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"sample-inspect-template\",\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n JobNotificationEmails = null,\n },\n },\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n CloudStorageOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs\n {\n FileSet = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs\n {\n Url = \"gs://mybucket/directory/\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataloss.NewPreventionJobTrigger(ctx, \"job_notification_emails\", \u0026dataloss.PreventionJobTriggerArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"Description for the job_trigger created by terraform\"),\n\t\t\tDisplayName: pulumi.String(\"TerraformDisplayName\"),\n\t\t\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataloss.PreventionJobTriggerTriggerScheduleArgs{\n\t\t\t\t\t\tRecurrencePeriodDuration: pulumi.String(\"86400s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"sample-inspect-template\"),\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tJobNotificationEmails: \u0026dataloss.PreventionJobTriggerInspectJobActionJobNotificationEmailsArgs{},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tCloudStorageOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs{\n\t\t\t\t\t\tFileSet: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs{\n\t\t\t\t\t\t\tUrl: pulumi.String(\"gs://mybucket/directory/\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerScheduleArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var jobNotificationEmails = new PreventionJobTrigger(\"jobNotificationEmails\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Description for the job_trigger created by terraform\")\n .displayName(\"TerraformDisplayName\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .schedule(PreventionJobTriggerTriggerScheduleArgs.builder()\n .recurrencePeriodDuration(\"86400s\")\n .build())\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"sample-inspect-template\")\n .actions(PreventionJobTriggerInspectJobActionArgs.builder()\n .jobNotificationEmails()\n .build())\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .cloudStorageOptions(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs.builder()\n .fileSet(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs.builder()\n .url(\"gs://mybucket/directory/\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n jobNotificationEmails:\n type: gcp:dataloss:PreventionJobTrigger\n name: job_notification_emails\n properties:\n parent: projects/my-project-name\n description: Description for the job_trigger created by terraform\n displayName: TerraformDisplayName\n triggers:\n - schedule:\n recurrencePeriodDuration: 86400s\n inspectJob:\n inspectTemplateName: sample-inspect-template\n actions:\n - jobNotificationEmails: {}\n storageConfig:\n cloudStorageOptions:\n fileSet:\n url: gs://mybucket/directory/\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Job Trigger Deidentify\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.bigquery.Dataset(\"default\", {\n datasetId: \"tf_test\",\n friendlyName: \"terraform-test\",\n description: \"Description for the dataset created by terraform\",\n location: \"US\",\n defaultTableExpirationMs: 3600000,\n labels: {\n env: \"default\",\n },\n});\nconst defaultTable = new gcp.bigquery.Table(\"default\", {\n datasetId: _default.datasetId,\n tableId: \"tf_test\",\n deletionProtection: false,\n timePartitioning: {\n type: \"DAY\",\n },\n labels: {\n env: \"default\",\n },\n schema: ` [\n {\n \"name\": \"quantity\",\n \"type\": \"NUMERIC\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The quantity\"\n },\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"Name of the object\"\n }\n ]\n`,\n});\nconst deidentify = new gcp.dataloss.PreventionJobTrigger(\"deidentify\", {\n parent: \"projects/my-project-name\",\n description: \"Description for the job_trigger created by terraform\",\n displayName: \"TerraformDisplayName\",\n triggers: [{\n schedule: {\n recurrencePeriodDuration: \"86400s\",\n },\n }],\n inspectJob: {\n inspectTemplateName: \"sample-inspect-template\",\n actions: [{\n deidentify: {\n cloudStorageOutput: \"gs://samplebucket/dir/\",\n fileTypesToTransforms: [\n \"CSV\",\n \"TSV\",\n ],\n transformationDetailsStorageConfig: {\n table: {\n projectId: \"my-project-name\",\n datasetId: _default.datasetId,\n tableId: defaultTable.tableId,\n },\n },\n transformationConfig: {\n deidentifyTemplate: \"sample-deidentify-template\",\n imageRedactTemplate: \"sample-image-redact-template\",\n structuredDeidentifyTemplate: \"sample-structured-deidentify-template\",\n },\n },\n }],\n storageConfig: {\n cloudStorageOptions: {\n fileSet: {\n url: \"gs://mybucket/directory/\",\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.bigquery.Dataset(\"default\",\n dataset_id=\"tf_test\",\n friendly_name=\"terraform-test\",\n description=\"Description for the dataset created by terraform\",\n location=\"US\",\n default_table_expiration_ms=3600000,\n labels={\n \"env\": \"default\",\n })\ndefault_table = gcp.bigquery.Table(\"default\",\n dataset_id=default.dataset_id,\n table_id=\"tf_test\",\n deletion_protection=False,\n time_partitioning={\n \"type\": \"DAY\",\n },\n labels={\n \"env\": \"default\",\n },\n schema=\"\"\" [\n {\n \"name\": \"quantity\",\n \"type\": \"NUMERIC\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The quantity\"\n },\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"Name of the object\"\n }\n ]\n\"\"\")\ndeidentify = gcp.dataloss.PreventionJobTrigger(\"deidentify\",\n parent=\"projects/my-project-name\",\n description=\"Description for the job_trigger created by terraform\",\n display_name=\"TerraformDisplayName\",\n triggers=[{\n \"schedule\": {\n \"recurrence_period_duration\": \"86400s\",\n },\n }],\n inspect_job={\n \"inspect_template_name\": \"sample-inspect-template\",\n \"actions\": [{\n \"deidentify\": {\n \"cloud_storage_output\": \"gs://samplebucket/dir/\",\n \"file_types_to_transforms\": [\n \"CSV\",\n \"TSV\",\n ],\n \"transformation_details_storage_config\": {\n \"table\": {\n \"project_id\": \"my-project-name\",\n \"dataset_id\": default.dataset_id,\n \"table_id\": default_table.table_id,\n },\n },\n \"transformation_config\": {\n \"deidentify_template\": \"sample-deidentify-template\",\n \"image_redact_template\": \"sample-image-redact-template\",\n \"structured_deidentify_template\": \"sample-structured-deidentify-template\",\n },\n },\n }],\n \"storage_config\": {\n \"cloud_storage_options\": {\n \"file_set\": {\n \"url\": \"gs://mybucket/directory/\",\n },\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.BigQuery.Dataset(\"default\", new()\n {\n DatasetId = \"tf_test\",\n FriendlyName = \"terraform-test\",\n Description = \"Description for the dataset created by terraform\",\n Location = \"US\",\n DefaultTableExpirationMs = 3600000,\n Labels = \n {\n { \"env\", \"default\" },\n },\n });\n\n var defaultTable = new Gcp.BigQuery.Table(\"default\", new()\n {\n DatasetId = @default.DatasetId,\n TableId = \"tf_test\",\n DeletionProtection = false,\n TimePartitioning = new Gcp.BigQuery.Inputs.TableTimePartitioningArgs\n {\n Type = \"DAY\",\n },\n Labels = \n {\n { \"env\", \"default\" },\n },\n Schema = @\" [\n {\n \"\"name\"\": \"\"quantity\"\",\n \"\"type\"\": \"\"NUMERIC\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"description\"\": \"\"The quantity\"\"\n },\n {\n \"\"name\"\": \"\"name\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"description\"\": \"\"Name of the object\"\"\n }\n ]\n\",\n });\n\n var deidentify = new Gcp.DataLoss.PreventionJobTrigger(\"deidentify\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description for the job_trigger created by terraform\",\n DisplayName = \"TerraformDisplayName\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Schedule = new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerScheduleArgs\n {\n RecurrencePeriodDuration = \"86400s\",\n },\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"sample-inspect-template\",\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n Deidentify = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionDeidentifyArgs\n {\n CloudStorageOutput = \"gs://samplebucket/dir/\",\n FileTypesToTransforms = new[]\n {\n \"CSV\",\n \"TSV\",\n },\n TransformationDetailsStorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionDeidentifyTransformationDetailsStorageConfigArgs\n {\n Table = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionDeidentifyTransformationDetailsStorageConfigTableArgs\n {\n ProjectId = \"my-project-name\",\n DatasetId = @default.DatasetId,\n TableId = defaultTable.TableId,\n },\n },\n TransformationConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionDeidentifyTransformationConfigArgs\n {\n DeidentifyTemplate = \"sample-deidentify-template\",\n ImageRedactTemplate = \"sample-image-redact-template\",\n StructuredDeidentifyTemplate = \"sample-structured-deidentify-template\",\n },\n },\n },\n },\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n CloudStorageOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs\n {\n FileSet = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs\n {\n Url = \"gs://mybucket/directory/\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := bigquery.NewDataset(ctx, \"default\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"tf_test\"),\n\t\t\tFriendlyName: pulumi.String(\"terraform-test\"),\n\t\t\tDescription: pulumi.String(\"Description for the dataset created by terraform\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tDefaultTableExpirationMs: pulumi.Int(3600000),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"default\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultTable, err := bigquery.NewTable(ctx, \"default\", \u0026bigquery.TableArgs{\n\t\t\tDatasetId: _default.DatasetId,\n\t\t\tTableId: pulumi.String(\"tf_test\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTimePartitioning: \u0026bigquery.TableTimePartitioningArgs{\n\t\t\t\tType: pulumi.String(\"DAY\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"default\"),\n\t\t\t},\n\t\t\tSchema: pulumi.String(` [\n {\n \"name\": \"quantity\",\n \"type\": \"NUMERIC\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The quantity\"\n },\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"Name of the object\"\n }\n ]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataloss.NewPreventionJobTrigger(ctx, \"deidentify\", \u0026dataloss.PreventionJobTriggerArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"Description for the job_trigger created by terraform\"),\n\t\t\tDisplayName: pulumi.String(\"TerraformDisplayName\"),\n\t\t\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataloss.PreventionJobTriggerTriggerScheduleArgs{\n\t\t\t\t\t\tRecurrencePeriodDuration: pulumi.String(\"86400s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"sample-inspect-template\"),\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tDeidentify: \u0026dataloss.PreventionJobTriggerInspectJobActionDeidentifyArgs{\n\t\t\t\t\t\t\tCloudStorageOutput: pulumi.String(\"gs://samplebucket/dir/\"),\n\t\t\t\t\t\t\tFileTypesToTransforms: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"CSV\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"TSV\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tTransformationDetailsStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobActionDeidentifyTransformationDetailsStorageConfigArgs{\n\t\t\t\t\t\t\t\tTable: \u0026dataloss.PreventionJobTriggerInspectJobActionDeidentifyTransformationDetailsStorageConfigTableArgs{\n\t\t\t\t\t\t\t\t\tProjectId: pulumi.String(\"my-project-name\"),\n\t\t\t\t\t\t\t\t\tDatasetId: _default.DatasetId,\n\t\t\t\t\t\t\t\t\tTableId: defaultTable.TableId,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tTransformationConfig: \u0026dataloss.PreventionJobTriggerInspectJobActionDeidentifyTransformationConfigArgs{\n\t\t\t\t\t\t\t\tDeidentifyTemplate: pulumi.String(\"sample-deidentify-template\"),\n\t\t\t\t\t\t\t\tImageRedactTemplate: pulumi.String(\"sample-image-redact-template\"),\n\t\t\t\t\t\t\t\tStructuredDeidentifyTemplate: pulumi.String(\"sample-structured-deidentify-template\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tCloudStorageOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs{\n\t\t\t\t\t\tFileSet: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs{\n\t\t\t\t\t\t\tUrl: pulumi.String(\"gs://mybucket/directory/\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.bigquery.inputs.TableTimePartitioningArgs;\nimport com.pulumi.gcp.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerScheduleArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Dataset(\"default\", DatasetArgs.builder()\n .datasetId(\"tf_test\")\n .friendlyName(\"terraform-test\")\n .description(\"Description for the dataset created by terraform\")\n .location(\"US\")\n .defaultTableExpirationMs(3600000)\n .labels(Map.of(\"env\", \"default\"))\n .build());\n\n var defaultTable = new Table(\"defaultTable\", TableArgs.builder()\n .datasetId(default_.datasetId())\n .tableId(\"tf_test\")\n .deletionProtection(false)\n .timePartitioning(TableTimePartitioningArgs.builder()\n .type(\"DAY\")\n .build())\n .labels(Map.of(\"env\", \"default\"))\n .schema(\"\"\"\n [\n {\n \"name\": \"quantity\",\n \"type\": \"NUMERIC\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The quantity\"\n },\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"Name of the object\"\n }\n ]\n \"\"\")\n .build());\n\n var deidentify = new PreventionJobTrigger(\"deidentify\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Description for the job_trigger created by terraform\")\n .displayName(\"TerraformDisplayName\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .schedule(PreventionJobTriggerTriggerScheduleArgs.builder()\n .recurrencePeriodDuration(\"86400s\")\n .build())\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"sample-inspect-template\")\n .actions(PreventionJobTriggerInspectJobActionArgs.builder()\n .deidentify(PreventionJobTriggerInspectJobActionDeidentifyArgs.builder()\n .cloudStorageOutput(\"gs://samplebucket/dir/\")\n .fileTypesToTransforms( \n \"CSV\",\n \"TSV\")\n .transformationDetailsStorageConfig(PreventionJobTriggerInspectJobActionDeidentifyTransformationDetailsStorageConfigArgs.builder()\n .table(PreventionJobTriggerInspectJobActionDeidentifyTransformationDetailsStorageConfigTableArgs.builder()\n .projectId(\"my-project-name\")\n .datasetId(default_.datasetId())\n .tableId(defaultTable.tableId())\n .build())\n .build())\n .transformationConfig(PreventionJobTriggerInspectJobActionDeidentifyTransformationConfigArgs.builder()\n .deidentifyTemplate(\"sample-deidentify-template\")\n .imageRedactTemplate(\"sample-image-redact-template\")\n .structuredDeidentifyTemplate(\"sample-structured-deidentify-template\")\n .build())\n .build())\n .build())\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .cloudStorageOptions(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs.builder()\n .fileSet(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs.builder()\n .url(\"gs://mybucket/directory/\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n deidentify:\n type: gcp:dataloss:PreventionJobTrigger\n properties:\n parent: projects/my-project-name\n description: Description for the job_trigger created by terraform\n displayName: TerraformDisplayName\n triggers:\n - schedule:\n recurrencePeriodDuration: 86400s\n inspectJob:\n inspectTemplateName: sample-inspect-template\n actions:\n - deidentify:\n cloudStorageOutput: gs://samplebucket/dir/\n fileTypesToTransforms:\n - CSV\n - TSV\n transformationDetailsStorageConfig:\n table:\n projectId: my-project-name\n datasetId: ${default.datasetId}\n tableId: ${defaultTable.tableId}\n transformationConfig:\n deidentifyTemplate: sample-deidentify-template\n imageRedactTemplate: sample-image-redact-template\n structuredDeidentifyTemplate: sample-structured-deidentify-template\n storageConfig:\n cloudStorageOptions:\n fileSet:\n url: gs://mybucket/directory/\n default:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: tf_test\n friendlyName: terraform-test\n description: Description for the dataset created by terraform\n location: US\n defaultTableExpirationMs: 3.6e+06\n labels:\n env: default\n defaultTable:\n type: gcp:bigquery:Table\n name: default\n properties:\n datasetId: ${default.datasetId}\n tableId: tf_test\n deletionProtection: false\n timePartitioning:\n type: DAY\n labels:\n env: default\n schema: |2\n [\n {\n \"name\": \"quantity\",\n \"type\": \"NUMERIC\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The quantity\"\n },\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"Name of the object\"\n }\n ]\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Job Trigger Hybrid\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst hybridTrigger = new gcp.dataloss.PreventionJobTrigger(\"hybrid_trigger\", {\n parent: \"projects/my-project-name\",\n triggers: [{\n manual: {},\n }],\n inspectJob: {\n inspectTemplateName: \"fake\",\n actions: [{\n saveFindings: {\n outputConfig: {\n table: {\n projectId: \"project\",\n datasetId: \"dataset\",\n },\n },\n },\n }],\n storageConfig: {\n hybridOptions: {\n description: \"Hybrid job trigger for data from the comments field of a table that contains customer appointment bookings\",\n requiredFindingLabelKeys: [\"appointment-bookings-comments\"],\n labels: {\n env: \"prod\",\n },\n tableOptions: {\n identifyingFields: [{\n name: \"booking_id\",\n }],\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhybrid_trigger = gcp.dataloss.PreventionJobTrigger(\"hybrid_trigger\",\n parent=\"projects/my-project-name\",\n triggers=[{\n \"manual\": {},\n }],\n inspect_job={\n \"inspect_template_name\": \"fake\",\n \"actions\": [{\n \"save_findings\": {\n \"output_config\": {\n \"table\": {\n \"project_id\": \"project\",\n \"dataset_id\": \"dataset\",\n },\n },\n },\n }],\n \"storage_config\": {\n \"hybrid_options\": {\n \"description\": \"Hybrid job trigger for data from the comments field of a table that contains customer appointment bookings\",\n \"required_finding_label_keys\": [\"appointment-bookings-comments\"],\n \"labels\": {\n \"env\": \"prod\",\n },\n \"table_options\": {\n \"identifying_fields\": [{\n \"name\": \"booking_id\",\n }],\n },\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var hybridTrigger = new Gcp.DataLoss.PreventionJobTrigger(\"hybrid_trigger\", new()\n {\n Parent = \"projects/my-project-name\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Manual = null,\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"fake\",\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n SaveFindings = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsArgs\n {\n OutputConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs\n {\n Table = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs\n {\n ProjectId = \"project\",\n DatasetId = \"dataset\",\n },\n },\n },\n },\n },\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n HybridOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigHybridOptionsArgs\n {\n Description = \"Hybrid job trigger for data from the comments field of a table that contains customer appointment bookings\",\n RequiredFindingLabelKeys = new[]\n {\n \"appointment-bookings-comments\",\n },\n Labels = \n {\n { \"env\", \"prod\" },\n },\n TableOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigHybridOptionsTableOptionsArgs\n {\n IdentifyingFields = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigHybridOptionsTableOptionsIdentifyingFieldArgs\n {\n Name = \"booking_id\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataloss.NewPreventionJobTrigger(ctx, \"hybrid_trigger\", \u0026dataloss.PreventionJobTriggerArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tManual: \u0026dataloss.PreventionJobTriggerTriggerManualArgs{},\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"fake\"),\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tSaveFindings: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsArgs{\n\t\t\t\t\t\t\tOutputConfig: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs{\n\t\t\t\t\t\t\t\tTable: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs{\n\t\t\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\t\t\tDatasetId: pulumi.String(\"dataset\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tHybridOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigHybridOptionsArgs{\n\t\t\t\t\t\tDescription: pulumi.String(\"Hybrid job trigger for data from the comments field of a table that contains customer appointment bookings\"),\n\t\t\t\t\t\tRequiredFindingLabelKeys: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"appointment-bookings-comments\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\t\t\"env\": pulumi.String(\"prod\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTableOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigHybridOptionsTableOptionsArgs{\n\t\t\t\t\t\t\tIdentifyingFields: dataloss.PreventionJobTriggerInspectJobStorageConfigHybridOptionsTableOptionsIdentifyingFieldArray{\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobStorageConfigHybridOptionsTableOptionsIdentifyingFieldArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"booking_id\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerManualArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigHybridOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigHybridOptionsTableOptionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var hybridTrigger = new PreventionJobTrigger(\"hybridTrigger\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .manual()\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"fake\")\n .actions(PreventionJobTriggerInspectJobActionArgs.builder()\n .saveFindings(PreventionJobTriggerInspectJobActionSaveFindingsArgs.builder()\n .outputConfig(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs.builder()\n .table(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs.builder()\n .projectId(\"project\")\n .datasetId(\"dataset\")\n .build())\n .build())\n .build())\n .build())\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .hybridOptions(PreventionJobTriggerInspectJobStorageConfigHybridOptionsArgs.builder()\n .description(\"Hybrid job trigger for data from the comments field of a table that contains customer appointment bookings\")\n .requiredFindingLabelKeys(\"appointment-bookings-comments\")\n .labels(Map.of(\"env\", \"prod\"))\n .tableOptions(PreventionJobTriggerInspectJobStorageConfigHybridOptionsTableOptionsArgs.builder()\n .identifyingFields(PreventionJobTriggerInspectJobStorageConfigHybridOptionsTableOptionsIdentifyingFieldArgs.builder()\n .name(\"booking_id\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n hybridTrigger:\n type: gcp:dataloss:PreventionJobTrigger\n name: hybrid_trigger\n properties:\n parent: projects/my-project-name\n triggers:\n - manual: {}\n inspectJob:\n inspectTemplateName: fake\n actions:\n - saveFindings:\n outputConfig:\n table:\n projectId: project\n datasetId: dataset\n storageConfig:\n hybridOptions:\n description: Hybrid job trigger for data from the comments field of a table that contains customer appointment bookings\n requiredFindingLabelKeys:\n - appointment-bookings-comments\n labels:\n env: prod\n tableOptions:\n identifyingFields:\n - name: booking_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Job Trigger Inspect\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst inspect = new gcp.dataloss.PreventionJobTrigger(\"inspect\", {\n parent: \"projects/my-project-name\",\n description: \"Description\",\n displayName: \"Displayname\",\n triggers: [{\n schedule: {\n recurrencePeriodDuration: \"86400s\",\n },\n }],\n inspectJob: {\n inspectTemplateName: \"fake\",\n actions: [{\n saveFindings: {\n outputConfig: {\n table: {\n projectId: \"project\",\n datasetId: \"dataset\",\n },\n },\n },\n }],\n storageConfig: {\n cloudStorageOptions: {\n fileSet: {\n url: \"gs://mybucket/directory/\",\n },\n },\n },\n inspectConfig: {\n customInfoTypes: [{\n infoType: {\n name: \"MY_CUSTOM_TYPE\",\n },\n likelihood: \"UNLIKELY\",\n regex: {\n pattern: \"test*\",\n },\n }],\n infoTypes: [{\n name: \"EMAIL_ADDRESS\",\n }],\n minLikelihood: \"UNLIKELY\",\n ruleSets: [\n {\n infoTypes: [{\n name: \"EMAIL_ADDRESS\",\n }],\n rules: [{\n exclusionRule: {\n regex: {\n pattern: \".+@example.com\",\n },\n matchingType: \"MATCHING_TYPE_FULL_MATCH\",\n },\n }],\n },\n {\n infoTypes: [{\n name: \"MY_CUSTOM_TYPE\",\n }],\n rules: [{\n hotwordRule: {\n hotwordRegex: {\n pattern: \"example*\",\n },\n proximity: {\n windowBefore: 50,\n },\n likelihoodAdjustment: {\n fixedLikelihood: \"VERY_LIKELY\",\n },\n },\n }],\n },\n ],\n limits: {\n maxFindingsPerItem: 10,\n maxFindingsPerRequest: 50,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninspect = gcp.dataloss.PreventionJobTrigger(\"inspect\",\n parent=\"projects/my-project-name\",\n description=\"Description\",\n display_name=\"Displayname\",\n triggers=[{\n \"schedule\": {\n \"recurrence_period_duration\": \"86400s\",\n },\n }],\n inspect_job={\n \"inspect_template_name\": \"fake\",\n \"actions\": [{\n \"save_findings\": {\n \"output_config\": {\n \"table\": {\n \"project_id\": \"project\",\n \"dataset_id\": \"dataset\",\n },\n },\n },\n }],\n \"storage_config\": {\n \"cloud_storage_options\": {\n \"file_set\": {\n \"url\": \"gs://mybucket/directory/\",\n },\n },\n },\n \"inspect_config\": {\n \"custom_info_types\": [{\n \"info_type\": {\n \"name\": \"MY_CUSTOM_TYPE\",\n },\n \"likelihood\": \"UNLIKELY\",\n \"regex\": {\n \"pattern\": \"test*\",\n },\n }],\n \"info_types\": [{\n \"name\": \"EMAIL_ADDRESS\",\n }],\n \"min_likelihood\": \"UNLIKELY\",\n \"rule_sets\": [\n {\n \"info_types\": [{\n \"name\": \"EMAIL_ADDRESS\",\n }],\n \"rules\": [{\n \"exclusion_rule\": {\n \"regex\": {\n \"pattern\": \".+@example.com\",\n },\n \"matching_type\": \"MATCHING_TYPE_FULL_MATCH\",\n },\n }],\n },\n {\n \"info_types\": [{\n \"name\": \"MY_CUSTOM_TYPE\",\n }],\n \"rules\": [{\n \"hotword_rule\": {\n \"hotword_regex\": {\n \"pattern\": \"example*\",\n },\n \"proximity\": {\n \"window_before\": 50,\n },\n \"likelihood_adjustment\": {\n \"fixed_likelihood\": \"VERY_LIKELY\",\n },\n },\n }],\n },\n ],\n \"limits\": {\n \"max_findings_per_item\": 10,\n \"max_findings_per_request\": 50,\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var inspect = new Gcp.DataLoss.PreventionJobTrigger(\"inspect\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description\",\n DisplayName = \"Displayname\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Schedule = new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerScheduleArgs\n {\n RecurrencePeriodDuration = \"86400s\",\n },\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"fake\",\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n SaveFindings = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsArgs\n {\n OutputConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs\n {\n Table = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs\n {\n ProjectId = \"project\",\n DatasetId = \"dataset\",\n },\n },\n },\n },\n },\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n CloudStorageOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs\n {\n FileSet = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs\n {\n Url = \"gs://mybucket/directory/\",\n },\n },\n },\n InspectConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigArgs\n {\n CustomInfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigCustomInfoTypeArgs\n {\n InfoType = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigCustomInfoTypeInfoTypeArgs\n {\n Name = \"MY_CUSTOM_TYPE\",\n },\n Likelihood = \"UNLIKELY\",\n Regex = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigCustomInfoTypeRegexArgs\n {\n Pattern = \"test*\",\n },\n },\n },\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigInfoTypeArgs\n {\n Name = \"EMAIL_ADDRESS\",\n },\n },\n MinLikelihood = \"UNLIKELY\",\n RuleSets = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"EMAIL_ADDRESS\",\n },\n },\n Rules = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleArgs\n {\n ExclusionRule = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleExclusionRuleArgs\n {\n Regex = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleExclusionRuleRegexArgs\n {\n Pattern = \".+@example.com\",\n },\n MatchingType = \"MATCHING_TYPE_FULL_MATCH\",\n },\n },\n },\n },\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetArgs\n {\n InfoTypes = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetInfoTypeArgs\n {\n Name = \"MY_CUSTOM_TYPE\",\n },\n },\n Rules = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleArgs\n {\n HotwordRule = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleArgs\n {\n HotwordRegex = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs\n {\n Pattern = \"example*\",\n },\n Proximity = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleProximityArgs\n {\n WindowBefore = 50,\n },\n LikelihoodAdjustment = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs\n {\n FixedLikelihood = \"VERY_LIKELY\",\n },\n },\n },\n },\n },\n },\n Limits = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobInspectConfigLimitsArgs\n {\n MaxFindingsPerItem = 10,\n MaxFindingsPerRequest = 50,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataloss.NewPreventionJobTrigger(ctx, \"inspect\", \u0026dataloss.PreventionJobTriggerArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"Description\"),\n\t\t\tDisplayName: pulumi.String(\"Displayname\"),\n\t\t\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataloss.PreventionJobTriggerTriggerScheduleArgs{\n\t\t\t\t\t\tRecurrencePeriodDuration: pulumi.String(\"86400s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"fake\"),\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tSaveFindings: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsArgs{\n\t\t\t\t\t\t\tOutputConfig: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs{\n\t\t\t\t\t\t\t\tTable: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs{\n\t\t\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\t\t\tDatasetId: pulumi.String(\"dataset\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tCloudStorageOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs{\n\t\t\t\t\t\tFileSet: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs{\n\t\t\t\t\t\t\tUrl: pulumi.String(\"gs://mybucket/directory/\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tInspectConfig: \u0026dataloss.PreventionJobTriggerInspectJobInspectConfigArgs{\n\t\t\t\t\tCustomInfoTypes: dataloss.PreventionJobTriggerInspectJobInspectConfigCustomInfoTypeArray{\n\t\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobInspectConfigCustomInfoTypeArgs{\n\t\t\t\t\t\t\tInfoType: \u0026dataloss.PreventionJobTriggerInspectJobInspectConfigCustomInfoTypeInfoTypeArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"MY_CUSTOM_TYPE\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tLikelihood: pulumi.String(\"UNLIKELY\"),\n\t\t\t\t\t\t\tRegex: \u0026dataloss.PreventionJobTriggerInspectJobInspectConfigCustomInfoTypeRegexArgs{\n\t\t\t\t\t\t\t\tPattern: pulumi.String(\"test*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tInfoTypes: dataloss.PreventionJobTriggerInspectJobInspectConfigInfoTypeArray{\n\t\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobInspectConfigInfoTypeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"EMAIL_ADDRESS\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tMinLikelihood: pulumi.String(\"UNLIKELY\"),\n\t\t\t\t\tRuleSets: dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetArray{\n\t\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetArgs{\n\t\t\t\t\t\t\tInfoTypes: dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetInfoTypeArray{\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"EMAIL_ADDRESS\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRules: dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleArray{\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleArgs{\n\t\t\t\t\t\t\t\t\tExclusionRule: \u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleExclusionRuleArgs{\n\t\t\t\t\t\t\t\t\t\tRegex: \u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleExclusionRuleRegexArgs{\n\t\t\t\t\t\t\t\t\t\t\tPattern: pulumi.String(\".+@example.com\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tMatchingType: pulumi.String(\"MATCHING_TYPE_FULL_MATCH\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetArgs{\n\t\t\t\t\t\t\tInfoTypes: dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetInfoTypeArray{\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetInfoTypeArgs{\n\t\t\t\t\t\t\t\t\tName: pulumi.String(\"MY_CUSTOM_TYPE\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRules: dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleArray{\n\t\t\t\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleArgs{\n\t\t\t\t\t\t\t\t\tHotwordRule: \u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleArgs{\n\t\t\t\t\t\t\t\t\t\tHotwordRegex: \u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs{\n\t\t\t\t\t\t\t\t\t\t\tPattern: pulumi.String(\"example*\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tProximity: \u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleProximityArgs{\n\t\t\t\t\t\t\t\t\t\t\tWindowBefore: pulumi.Int(50),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tLikelihoodAdjustment: \u0026dataloss.PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs{\n\t\t\t\t\t\t\t\t\t\t\tFixedLikelihood: pulumi.String(\"VERY_LIKELY\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tLimits: \u0026dataloss.PreventionJobTriggerInspectJobInspectConfigLimitsArgs{\n\t\t\t\t\t\tMaxFindingsPerItem: pulumi.Int(10),\n\t\t\t\t\t\tMaxFindingsPerRequest: pulumi.Int(50),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerScheduleArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobInspectConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobInspectConfigLimitsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var inspect = new PreventionJobTrigger(\"inspect\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Description\")\n .displayName(\"Displayname\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .schedule(PreventionJobTriggerTriggerScheduleArgs.builder()\n .recurrencePeriodDuration(\"86400s\")\n .build())\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"fake\")\n .actions(PreventionJobTriggerInspectJobActionArgs.builder()\n .saveFindings(PreventionJobTriggerInspectJobActionSaveFindingsArgs.builder()\n .outputConfig(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs.builder()\n .table(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs.builder()\n .projectId(\"project\")\n .datasetId(\"dataset\")\n .build())\n .build())\n .build())\n .build())\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .cloudStorageOptions(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs.builder()\n .fileSet(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs.builder()\n .url(\"gs://mybucket/directory/\")\n .build())\n .build())\n .build())\n .inspectConfig(PreventionJobTriggerInspectJobInspectConfigArgs.builder()\n .customInfoTypes(PreventionJobTriggerInspectJobInspectConfigCustomInfoTypeArgs.builder()\n .infoType(PreventionJobTriggerInspectJobInspectConfigCustomInfoTypeInfoTypeArgs.builder()\n .name(\"MY_CUSTOM_TYPE\")\n .build())\n .likelihood(\"UNLIKELY\")\n .regex(PreventionJobTriggerInspectJobInspectConfigCustomInfoTypeRegexArgs.builder()\n .pattern(\"test*\")\n .build())\n .build())\n .infoTypes(PreventionJobTriggerInspectJobInspectConfigInfoTypeArgs.builder()\n .name(\"EMAIL_ADDRESS\")\n .build())\n .minLikelihood(\"UNLIKELY\")\n .ruleSets( \n PreventionJobTriggerInspectJobInspectConfigRuleSetArgs.builder()\n .infoTypes(PreventionJobTriggerInspectJobInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"EMAIL_ADDRESS\")\n .build())\n .rules(PreventionJobTriggerInspectJobInspectConfigRuleSetRuleArgs.builder()\n .exclusionRule(PreventionJobTriggerInspectJobInspectConfigRuleSetRuleExclusionRuleArgs.builder()\n .regex(PreventionJobTriggerInspectJobInspectConfigRuleSetRuleExclusionRuleRegexArgs.builder()\n .pattern(\".+@example.com\")\n .build())\n .matchingType(\"MATCHING_TYPE_FULL_MATCH\")\n .build())\n .build())\n .build(),\n PreventionJobTriggerInspectJobInspectConfigRuleSetArgs.builder()\n .infoTypes(PreventionJobTriggerInspectJobInspectConfigRuleSetInfoTypeArgs.builder()\n .name(\"MY_CUSTOM_TYPE\")\n .build())\n .rules(PreventionJobTriggerInspectJobInspectConfigRuleSetRuleArgs.builder()\n .hotwordRule(PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleArgs.builder()\n .hotwordRegex(PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleHotwordRegexArgs.builder()\n .pattern(\"example*\")\n .build())\n .proximity(PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleProximityArgs.builder()\n .windowBefore(50)\n .build())\n .likelihoodAdjustment(PreventionJobTriggerInspectJobInspectConfigRuleSetRuleHotwordRuleLikelihoodAdjustmentArgs.builder()\n .fixedLikelihood(\"VERY_LIKELY\")\n .build())\n .build())\n .build())\n .build())\n .limits(PreventionJobTriggerInspectJobInspectConfigLimitsArgs.builder()\n .maxFindingsPerItem(10)\n .maxFindingsPerRequest(50)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n inspect:\n type: gcp:dataloss:PreventionJobTrigger\n properties:\n parent: projects/my-project-name\n description: Description\n displayName: Displayname\n triggers:\n - schedule:\n recurrencePeriodDuration: 86400s\n inspectJob:\n inspectTemplateName: fake\n actions:\n - saveFindings:\n outputConfig:\n table:\n projectId: project\n datasetId: dataset\n storageConfig:\n cloudStorageOptions:\n fileSet:\n url: gs://mybucket/directory/\n inspectConfig:\n customInfoTypes:\n - infoType:\n name: MY_CUSTOM_TYPE\n likelihood: UNLIKELY\n regex:\n pattern: test*\n infoTypes:\n - name: EMAIL_ADDRESS\n minLikelihood: UNLIKELY\n ruleSets:\n - infoTypes:\n - name: EMAIL_ADDRESS\n rules:\n - exclusionRule:\n regex:\n pattern: .+@example.com\n matchingType: MATCHING_TYPE_FULL_MATCH\n - infoTypes:\n - name: MY_CUSTOM_TYPE\n rules:\n - hotwordRule:\n hotwordRegex:\n pattern: example*\n proximity:\n windowBefore: 50\n likelihoodAdjustment:\n fixedLikelihood: VERY_LIKELY\n limits:\n maxFindingsPerItem: 10\n maxFindingsPerRequest: 50\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Job Trigger Publish To Stackdriver\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst publishToStackdriver = new gcp.dataloss.PreventionJobTrigger(\"publish_to_stackdriver\", {\n parent: \"projects/my-project-name\",\n description: \"Description for the job_trigger created by terraform\",\n displayName: \"TerraformDisplayName\",\n triggers: [{\n schedule: {\n recurrencePeriodDuration: \"86400s\",\n },\n }],\n inspectJob: {\n inspectTemplateName: \"sample-inspect-template\",\n actions: [{\n publishToStackdriver: {},\n }],\n storageConfig: {\n cloudStorageOptions: {\n fileSet: {\n url: \"gs://mybucket/directory/\",\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npublish_to_stackdriver = gcp.dataloss.PreventionJobTrigger(\"publish_to_stackdriver\",\n parent=\"projects/my-project-name\",\n description=\"Description for the job_trigger created by terraform\",\n display_name=\"TerraformDisplayName\",\n triggers=[{\n \"schedule\": {\n \"recurrence_period_duration\": \"86400s\",\n },\n }],\n inspect_job={\n \"inspect_template_name\": \"sample-inspect-template\",\n \"actions\": [{\n \"publish_to_stackdriver\": {},\n }],\n \"storage_config\": {\n \"cloud_storage_options\": {\n \"file_set\": {\n \"url\": \"gs://mybucket/directory/\",\n },\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var publishToStackdriver = new Gcp.DataLoss.PreventionJobTrigger(\"publish_to_stackdriver\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description for the job_trigger created by terraform\",\n DisplayName = \"TerraformDisplayName\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Schedule = new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerScheduleArgs\n {\n RecurrencePeriodDuration = \"86400s\",\n },\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"sample-inspect-template\",\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n PublishToStackdriver = null,\n },\n },\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n CloudStorageOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs\n {\n FileSet = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs\n {\n Url = \"gs://mybucket/directory/\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataloss.NewPreventionJobTrigger(ctx, \"publish_to_stackdriver\", \u0026dataloss.PreventionJobTriggerArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"Description for the job_trigger created by terraform\"),\n\t\t\tDisplayName: pulumi.String(\"TerraformDisplayName\"),\n\t\t\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataloss.PreventionJobTriggerTriggerScheduleArgs{\n\t\t\t\t\t\tRecurrencePeriodDuration: pulumi.String(\"86400s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"sample-inspect-template\"),\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tPublishToStackdriver: \u0026dataloss.PreventionJobTriggerInspectJobActionPublishToStackdriverArgs{},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tCloudStorageOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs{\n\t\t\t\t\t\tFileSet: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs{\n\t\t\t\t\t\t\tUrl: pulumi.String(\"gs://mybucket/directory/\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerScheduleArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var publishToStackdriver = new PreventionJobTrigger(\"publishToStackdriver\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Description for the job_trigger created by terraform\")\n .displayName(\"TerraformDisplayName\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .schedule(PreventionJobTriggerTriggerScheduleArgs.builder()\n .recurrencePeriodDuration(\"86400s\")\n .build())\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"sample-inspect-template\")\n .actions(PreventionJobTriggerInspectJobActionArgs.builder()\n .publishToStackdriver()\n .build())\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .cloudStorageOptions(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs.builder()\n .fileSet(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs.builder()\n .url(\"gs://mybucket/directory/\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n publishToStackdriver:\n type: gcp:dataloss:PreventionJobTrigger\n name: publish_to_stackdriver\n properties:\n parent: projects/my-project-name\n description: Description for the job_trigger created by terraform\n displayName: TerraformDisplayName\n triggers:\n - schedule:\n recurrencePeriodDuration: 86400s\n inspectJob:\n inspectTemplateName: sample-inspect-template\n actions:\n - publishToStackdriver: {}\n storageConfig:\n cloudStorageOptions:\n fileSet:\n url: gs://mybucket/directory/\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Job Trigger With Id\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst withTriggerId = new gcp.dataloss.PreventionJobTrigger(\"with_trigger_id\", {\n parent: \"projects/my-project-name\",\n description: \"Starting description\",\n displayName: \"display\",\n triggerId: \"id-\",\n triggers: [{\n schedule: {\n recurrencePeriodDuration: \"86400s\",\n },\n }],\n inspectJob: {\n inspectTemplateName: \"fake\",\n actions: [{\n saveFindings: {\n outputConfig: {\n table: {\n projectId: \"project\",\n datasetId: \"dataset123\",\n },\n },\n },\n }],\n storageConfig: {\n cloudStorageOptions: {\n fileSet: {\n url: \"gs://mybucket/directory/\",\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nwith_trigger_id = gcp.dataloss.PreventionJobTrigger(\"with_trigger_id\",\n parent=\"projects/my-project-name\",\n description=\"Starting description\",\n display_name=\"display\",\n trigger_id=\"id-\",\n triggers=[{\n \"schedule\": {\n \"recurrence_period_duration\": \"86400s\",\n },\n }],\n inspect_job={\n \"inspect_template_name\": \"fake\",\n \"actions\": [{\n \"save_findings\": {\n \"output_config\": {\n \"table\": {\n \"project_id\": \"project\",\n \"dataset_id\": \"dataset123\",\n },\n },\n },\n }],\n \"storage_config\": {\n \"cloud_storage_options\": {\n \"file_set\": {\n \"url\": \"gs://mybucket/directory/\",\n },\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var withTriggerId = new Gcp.DataLoss.PreventionJobTrigger(\"with_trigger_id\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Starting description\",\n DisplayName = \"display\",\n TriggerId = \"id-\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Schedule = new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerScheduleArgs\n {\n RecurrencePeriodDuration = \"86400s\",\n },\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"fake\",\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n SaveFindings = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsArgs\n {\n OutputConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs\n {\n Table = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs\n {\n ProjectId = \"project\",\n DatasetId = \"dataset123\",\n },\n },\n },\n },\n },\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n CloudStorageOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs\n {\n FileSet = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs\n {\n Url = \"gs://mybucket/directory/\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataloss.NewPreventionJobTrigger(ctx, \"with_trigger_id\", \u0026dataloss.PreventionJobTriggerArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"Starting description\"),\n\t\t\tDisplayName: pulumi.String(\"display\"),\n\t\t\tTriggerId: pulumi.String(\"id-\"),\n\t\t\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataloss.PreventionJobTriggerTriggerScheduleArgs{\n\t\t\t\t\t\tRecurrencePeriodDuration: pulumi.String(\"86400s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"fake\"),\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tSaveFindings: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsArgs{\n\t\t\t\t\t\t\tOutputConfig: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs{\n\t\t\t\t\t\t\t\tTable: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs{\n\t\t\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\t\t\tDatasetId: pulumi.String(\"dataset123\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tCloudStorageOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs{\n\t\t\t\t\t\tFileSet: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs{\n\t\t\t\t\t\t\tUrl: pulumi.String(\"gs://mybucket/directory/\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerScheduleArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var withTriggerId = new PreventionJobTrigger(\"withTriggerId\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Starting description\")\n .displayName(\"display\")\n .triggerId(\"id-\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .schedule(PreventionJobTriggerTriggerScheduleArgs.builder()\n .recurrencePeriodDuration(\"86400s\")\n .build())\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"fake\")\n .actions(PreventionJobTriggerInspectJobActionArgs.builder()\n .saveFindings(PreventionJobTriggerInspectJobActionSaveFindingsArgs.builder()\n .outputConfig(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs.builder()\n .table(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs.builder()\n .projectId(\"project\")\n .datasetId(\"dataset123\")\n .build())\n .build())\n .build())\n .build())\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .cloudStorageOptions(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs.builder()\n .fileSet(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs.builder()\n .url(\"gs://mybucket/directory/\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n withTriggerId:\n type: gcp:dataloss:PreventionJobTrigger\n name: with_trigger_id\n properties:\n parent: projects/my-project-name\n description: Starting description\n displayName: display\n triggerId: id-\n triggers:\n - schedule:\n recurrencePeriodDuration: 86400s\n inspectJob:\n inspectTemplateName: fake\n actions:\n - saveFindings:\n outputConfig:\n table:\n projectId: project\n datasetId: dataset123\n storageConfig:\n cloudStorageOptions:\n fileSet:\n url: gs://mybucket/directory/\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Job Trigger Multiple Actions\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.dataloss.PreventionJobTrigger(\"basic\", {\n parent: \"projects/my-project-name\",\n description: \"Description\",\n displayName: \"Displayname\",\n triggers: [{\n schedule: {\n recurrencePeriodDuration: \"86400s\",\n },\n }],\n inspectJob: {\n inspectTemplateName: \"fake\",\n actions: [\n {\n saveFindings: {\n outputConfig: {\n table: {\n projectId: \"project\",\n datasetId: \"dataset\",\n },\n },\n },\n },\n {\n pubSub: {\n topic: \"projects/project/topics/topic-name\",\n },\n },\n ],\n storageConfig: {\n cloudStorageOptions: {\n fileSet: {\n url: \"gs://mybucket/directory/\",\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.dataloss.PreventionJobTrigger(\"basic\",\n parent=\"projects/my-project-name\",\n description=\"Description\",\n display_name=\"Displayname\",\n triggers=[{\n \"schedule\": {\n \"recurrence_period_duration\": \"86400s\",\n },\n }],\n inspect_job={\n \"inspect_template_name\": \"fake\",\n \"actions\": [\n {\n \"save_findings\": {\n \"output_config\": {\n \"table\": {\n \"project_id\": \"project\",\n \"dataset_id\": \"dataset\",\n },\n },\n },\n },\n {\n \"pub_sub\": {\n \"topic\": \"projects/project/topics/topic-name\",\n },\n },\n ],\n \"storage_config\": {\n \"cloud_storage_options\": {\n \"file_set\": {\n \"url\": \"gs://mybucket/directory/\",\n },\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basic = new Gcp.DataLoss.PreventionJobTrigger(\"basic\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description\",\n DisplayName = \"Displayname\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Schedule = new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerScheduleArgs\n {\n RecurrencePeriodDuration = \"86400s\",\n },\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"fake\",\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n SaveFindings = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsArgs\n {\n OutputConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs\n {\n Table = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs\n {\n ProjectId = \"project\",\n DatasetId = \"dataset\",\n },\n },\n },\n },\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n PubSub = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionPubSubArgs\n {\n Topic = \"projects/project/topics/topic-name\",\n },\n },\n },\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n CloudStorageOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs\n {\n FileSet = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs\n {\n Url = \"gs://mybucket/directory/\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataloss.NewPreventionJobTrigger(ctx, \"basic\", \u0026dataloss.PreventionJobTriggerArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"Description\"),\n\t\t\tDisplayName: pulumi.String(\"Displayname\"),\n\t\t\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataloss.PreventionJobTriggerTriggerScheduleArgs{\n\t\t\t\t\t\tRecurrencePeriodDuration: pulumi.String(\"86400s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"fake\"),\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tSaveFindings: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsArgs{\n\t\t\t\t\t\t\tOutputConfig: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs{\n\t\t\t\t\t\t\t\tTable: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs{\n\t\t\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\t\t\tDatasetId: pulumi.String(\"dataset\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tPubSub: \u0026dataloss.PreventionJobTriggerInspectJobActionPubSubArgs{\n\t\t\t\t\t\t\tTopic: pulumi.String(\"projects/project/topics/topic-name\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tCloudStorageOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs{\n\t\t\t\t\t\tFileSet: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs{\n\t\t\t\t\t\t\tUrl: pulumi.String(\"gs://mybucket/directory/\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerScheduleArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basic = new PreventionJobTrigger(\"basic\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Description\")\n .displayName(\"Displayname\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .schedule(PreventionJobTriggerTriggerScheduleArgs.builder()\n .recurrencePeriodDuration(\"86400s\")\n .build())\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"fake\")\n .actions( \n PreventionJobTriggerInspectJobActionArgs.builder()\n .saveFindings(PreventionJobTriggerInspectJobActionSaveFindingsArgs.builder()\n .outputConfig(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs.builder()\n .table(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs.builder()\n .projectId(\"project\")\n .datasetId(\"dataset\")\n .build())\n .build())\n .build())\n .build(),\n PreventionJobTriggerInspectJobActionArgs.builder()\n .pubSub(PreventionJobTriggerInspectJobActionPubSubArgs.builder()\n .topic(\"projects/project/topics/topic-name\")\n .build())\n .build())\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .cloudStorageOptions(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs.builder()\n .fileSet(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs.builder()\n .url(\"gs://mybucket/directory/\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:dataloss:PreventionJobTrigger\n properties:\n parent: projects/my-project-name\n description: Description\n displayName: Displayname\n triggers:\n - schedule:\n recurrencePeriodDuration: 86400s\n inspectJob:\n inspectTemplateName: fake\n actions:\n - saveFindings:\n outputConfig:\n table:\n projectId: project\n datasetId: dataset\n - pubSub:\n topic: projects/project/topics/topic-name\n storageConfig:\n cloudStorageOptions:\n fileSet:\n url: gs://mybucket/directory/\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Job Trigger Cloud Storage Optional Timespan Autopopulation\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.dataloss.PreventionJobTrigger(\"basic\", {\n parent: \"projects/my-project-name\",\n description: \"Description\",\n displayName: \"Displayname\",\n triggers: [{\n schedule: {\n recurrencePeriodDuration: \"86400s\",\n },\n }],\n inspectJob: {\n inspectTemplateName: \"fake\",\n actions: [{\n saveFindings: {\n outputConfig: {\n table: {\n projectId: \"project\",\n datasetId: \"dataset\",\n },\n },\n },\n }],\n storageConfig: {\n timespanConfig: {\n enableAutoPopulationOfTimespanConfig: true,\n },\n cloudStorageOptions: {\n fileSet: {\n url: \"gs://mybucket/directory/\",\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.dataloss.PreventionJobTrigger(\"basic\",\n parent=\"projects/my-project-name\",\n description=\"Description\",\n display_name=\"Displayname\",\n triggers=[{\n \"schedule\": {\n \"recurrence_period_duration\": \"86400s\",\n },\n }],\n inspect_job={\n \"inspect_template_name\": \"fake\",\n \"actions\": [{\n \"save_findings\": {\n \"output_config\": {\n \"table\": {\n \"project_id\": \"project\",\n \"dataset_id\": \"dataset\",\n },\n },\n },\n }],\n \"storage_config\": {\n \"timespan_config\": {\n \"enable_auto_population_of_timespan_config\": True,\n },\n \"cloud_storage_options\": {\n \"file_set\": {\n \"url\": \"gs://mybucket/directory/\",\n },\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basic = new Gcp.DataLoss.PreventionJobTrigger(\"basic\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"Description\",\n DisplayName = \"Displayname\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Schedule = new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerScheduleArgs\n {\n RecurrencePeriodDuration = \"86400s\",\n },\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"fake\",\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n SaveFindings = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsArgs\n {\n OutputConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs\n {\n Table = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs\n {\n ProjectId = \"project\",\n DatasetId = \"dataset\",\n },\n },\n },\n },\n },\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n TimespanConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigTimespanConfigArgs\n {\n EnableAutoPopulationOfTimespanConfig = true,\n },\n CloudStorageOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs\n {\n FileSet = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs\n {\n Url = \"gs://mybucket/directory/\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataloss.NewPreventionJobTrigger(ctx, \"basic\", \u0026dataloss.PreventionJobTriggerArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"Description\"),\n\t\t\tDisplayName: pulumi.String(\"Displayname\"),\n\t\t\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataloss.PreventionJobTriggerTriggerScheduleArgs{\n\t\t\t\t\t\tRecurrencePeriodDuration: pulumi.String(\"86400s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"fake\"),\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tSaveFindings: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsArgs{\n\t\t\t\t\t\t\tOutputConfig: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs{\n\t\t\t\t\t\t\t\tTable: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs{\n\t\t\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\t\t\tDatasetId: pulumi.String(\"dataset\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tTimespanConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigTimespanConfigArgs{\n\t\t\t\t\t\tEnableAutoPopulationOfTimespanConfig: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tCloudStorageOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs{\n\t\t\t\t\t\tFileSet: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs{\n\t\t\t\t\t\t\tUrl: pulumi.String(\"gs://mybucket/directory/\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerScheduleArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigTimespanConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basic = new PreventionJobTrigger(\"basic\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"Description\")\n .displayName(\"Displayname\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .schedule(PreventionJobTriggerTriggerScheduleArgs.builder()\n .recurrencePeriodDuration(\"86400s\")\n .build())\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"fake\")\n .actions(PreventionJobTriggerInspectJobActionArgs.builder()\n .saveFindings(PreventionJobTriggerInspectJobActionSaveFindingsArgs.builder()\n .outputConfig(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs.builder()\n .table(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs.builder()\n .projectId(\"project\")\n .datasetId(\"dataset\")\n .build())\n .build())\n .build())\n .build())\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .timespanConfig(PreventionJobTriggerInspectJobStorageConfigTimespanConfigArgs.builder()\n .enableAutoPopulationOfTimespanConfig(true)\n .build())\n .cloudStorageOptions(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsArgs.builder()\n .fileSet(PreventionJobTriggerInspectJobStorageConfigCloudStorageOptionsFileSetArgs.builder()\n .url(\"gs://mybucket/directory/\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:dataloss:PreventionJobTrigger\n properties:\n parent: projects/my-project-name\n description: Description\n displayName: Displayname\n triggers:\n - schedule:\n recurrencePeriodDuration: 86400s\n inspectJob:\n inspectTemplateName: fake\n actions:\n - saveFindings:\n outputConfig:\n table:\n projectId: project\n datasetId: dataset\n storageConfig:\n timespanConfig:\n enableAutoPopulationOfTimespanConfig: true\n cloudStorageOptions:\n fileSet:\n url: gs://mybucket/directory/\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dlp Job Trigger Timespan Config Big Query\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst timespanConfigBigQuery = new gcp.dataloss.PreventionJobTrigger(\"timespan_config_big_query\", {\n parent: \"projects/my-project-name\",\n description: \"BigQuery DLP Job Trigger with timespan config and row limit\",\n displayName: \"bigquery-dlp-job-trigger-limit-timespan\",\n triggers: [{\n schedule: {\n recurrencePeriodDuration: \"86400s\",\n },\n }],\n inspectJob: {\n inspectTemplateName: \"projects/test/locations/global/inspectTemplates/6425492983381733900\",\n storageConfig: {\n bigQueryOptions: {\n tableReference: {\n projectId: \"project\",\n datasetId: \"dataset\",\n tableId: \"table\",\n },\n sampleMethod: \"\",\n },\n timespanConfig: {\n startTime: \"2023-01-01T00:00:23Z\",\n timestampField: {\n name: \"timestamp\",\n },\n },\n },\n actions: [{\n saveFindings: {\n outputConfig: {\n table: {\n projectId: \"project\",\n datasetId: \"output\",\n },\n },\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntimespan_config_big_query = gcp.dataloss.PreventionJobTrigger(\"timespan_config_big_query\",\n parent=\"projects/my-project-name\",\n description=\"BigQuery DLP Job Trigger with timespan config and row limit\",\n display_name=\"bigquery-dlp-job-trigger-limit-timespan\",\n triggers=[{\n \"schedule\": {\n \"recurrence_period_duration\": \"86400s\",\n },\n }],\n inspect_job={\n \"inspect_template_name\": \"projects/test/locations/global/inspectTemplates/6425492983381733900\",\n \"storage_config\": {\n \"big_query_options\": {\n \"table_reference\": {\n \"project_id\": \"project\",\n \"dataset_id\": \"dataset\",\n \"table_id\": \"table\",\n },\n \"sample_method\": \"\",\n },\n \"timespan_config\": {\n \"start_time\": \"2023-01-01T00:00:23Z\",\n \"timestamp_field\": {\n \"name\": \"timestamp\",\n },\n },\n },\n \"actions\": [{\n \"save_findings\": {\n \"output_config\": {\n \"table\": {\n \"project_id\": \"project\",\n \"dataset_id\": \"output\",\n },\n },\n },\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var timespanConfigBigQuery = new Gcp.DataLoss.PreventionJobTrigger(\"timespan_config_big_query\", new()\n {\n Parent = \"projects/my-project-name\",\n Description = \"BigQuery DLP Job Trigger with timespan config and row limit\",\n DisplayName = \"bigquery-dlp-job-trigger-limit-timespan\",\n Triggers = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerArgs\n {\n Schedule = new Gcp.DataLoss.Inputs.PreventionJobTriggerTriggerScheduleArgs\n {\n RecurrencePeriodDuration = \"86400s\",\n },\n },\n },\n InspectJob = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobArgs\n {\n InspectTemplateName = \"projects/test/locations/global/inspectTemplates/6425492983381733900\",\n StorageConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigArgs\n {\n BigQueryOptions = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs\n {\n TableReference = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs\n {\n ProjectId = \"project\",\n DatasetId = \"dataset\",\n TableId = \"table\",\n },\n SampleMethod = \"\",\n },\n TimespanConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigTimespanConfigArgs\n {\n StartTime = \"2023-01-01T00:00:23Z\",\n TimestampField = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobStorageConfigTimespanConfigTimestampFieldArgs\n {\n Name = \"timestamp\",\n },\n },\n },\n Actions = new[]\n {\n new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionArgs\n {\n SaveFindings = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsArgs\n {\n OutputConfig = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs\n {\n Table = new Gcp.DataLoss.Inputs.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs\n {\n ProjectId = \"project\",\n DatasetId = \"output\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataloss\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataloss.NewPreventionJobTrigger(ctx, \"timespan_config_big_query\", \u0026dataloss.PreventionJobTriggerArgs{\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tDescription: pulumi.String(\"BigQuery DLP Job Trigger with timespan config and row limit\"),\n\t\t\tDisplayName: pulumi.String(\"bigquery-dlp-job-trigger-limit-timespan\"),\n\t\t\tTriggers: dataloss.PreventionJobTriggerTriggerArray{\n\t\t\t\t\u0026dataloss.PreventionJobTriggerTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataloss.PreventionJobTriggerTriggerScheduleArgs{\n\t\t\t\t\t\tRecurrencePeriodDuration: pulumi.String(\"86400s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tInspectJob: \u0026dataloss.PreventionJobTriggerInspectJobArgs{\n\t\t\t\tInspectTemplateName: pulumi.String(\"projects/test/locations/global/inspectTemplates/6425492983381733900\"),\n\t\t\t\tStorageConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{\n\t\t\t\t\tBigQueryOptions: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs{\n\t\t\t\t\t\tTableReference: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs{\n\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\tDatasetId: pulumi.String(\"dataset\"),\n\t\t\t\t\t\t\tTableId: pulumi.String(\"table\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSampleMethod: pulumi.String(\"\"),\n\t\t\t\t\t},\n\t\t\t\t\tTimespanConfig: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigTimespanConfigArgs{\n\t\t\t\t\t\tStartTime: pulumi.String(\"2023-01-01T00:00:23Z\"),\n\t\t\t\t\t\tTimestampField: \u0026dataloss.PreventionJobTriggerInspectJobStorageConfigTimespanConfigTimestampFieldArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"timestamp\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tActions: dataloss.PreventionJobTriggerInspectJobActionArray{\n\t\t\t\t\t\u0026dataloss.PreventionJobTriggerInspectJobActionArgs{\n\t\t\t\t\t\tSaveFindings: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsArgs{\n\t\t\t\t\t\t\tOutputConfig: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs{\n\t\t\t\t\t\t\t\tTable: \u0026dataloss.PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs{\n\t\t\t\t\t\t\t\t\tProjectId: pulumi.String(\"project\"),\n\t\t\t\t\t\t\t\t\tDatasetId: pulumi.String(\"output\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataloss.PreventionJobTrigger;\nimport com.pulumi.gcp.dataloss.PreventionJobTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerTriggerScheduleArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigTimespanConfigArgs;\nimport com.pulumi.gcp.dataloss.inputs.PreventionJobTriggerInspectJobStorageConfigTimespanConfigTimestampFieldArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var timespanConfigBigQuery = new PreventionJobTrigger(\"timespanConfigBigQuery\", PreventionJobTriggerArgs.builder()\n .parent(\"projects/my-project-name\")\n .description(\"BigQuery DLP Job Trigger with timespan config and row limit\")\n .displayName(\"bigquery-dlp-job-trigger-limit-timespan\")\n .triggers(PreventionJobTriggerTriggerArgs.builder()\n .schedule(PreventionJobTriggerTriggerScheduleArgs.builder()\n .recurrencePeriodDuration(\"86400s\")\n .build())\n .build())\n .inspectJob(PreventionJobTriggerInspectJobArgs.builder()\n .inspectTemplateName(\"projects/test/locations/global/inspectTemplates/6425492983381733900\")\n .storageConfig(PreventionJobTriggerInspectJobStorageConfigArgs.builder()\n .bigQueryOptions(PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsArgs.builder()\n .tableReference(PreventionJobTriggerInspectJobStorageConfigBigQueryOptionsTableReferenceArgs.builder()\n .projectId(\"project\")\n .datasetId(\"dataset\")\n .tableId(\"table\")\n .build())\n .sampleMethod(\"\")\n .build())\n .timespanConfig(PreventionJobTriggerInspectJobStorageConfigTimespanConfigArgs.builder()\n .startTime(\"2023-01-01T00:00:23Z\")\n .timestampField(PreventionJobTriggerInspectJobStorageConfigTimespanConfigTimestampFieldArgs.builder()\n .name(\"timestamp\")\n .build())\n .build())\n .build())\n .actions(PreventionJobTriggerInspectJobActionArgs.builder()\n .saveFindings(PreventionJobTriggerInspectJobActionSaveFindingsArgs.builder()\n .outputConfig(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigArgs.builder()\n .table(PreventionJobTriggerInspectJobActionSaveFindingsOutputConfigTableArgs.builder()\n .projectId(\"project\")\n .datasetId(\"output\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n timespanConfigBigQuery:\n type: gcp:dataloss:PreventionJobTrigger\n name: timespan_config_big_query\n properties:\n parent: projects/my-project-name\n description: BigQuery DLP Job Trigger with timespan config and row limit\n displayName: bigquery-dlp-job-trigger-limit-timespan\n triggers:\n - schedule:\n recurrencePeriodDuration: 86400s\n inspectJob:\n inspectTemplateName: projects/test/locations/global/inspectTemplates/6425492983381733900\n storageConfig:\n bigQueryOptions:\n tableReference:\n projectId: project\n datasetId: dataset\n tableId: table\n sampleMethod:\n timespanConfig:\n startTime: 2023-01-01T00:00:23Z\n timestampField:\n name: timestamp\n actions:\n - saveFindings:\n outputConfig:\n table:\n projectId: project\n datasetId: output\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nJobTrigger can be imported using any of these accepted formats:\n\n* `{{parent}}/jobTriggers/{{name}}`\n\n* `{{parent}}/{{name}}`\n\nWhen using the `pulumi import` command, JobTrigger can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataloss/preventionJobTrigger:PreventionJobTrigger default {{parent}}/jobTriggers/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataloss/preventionJobTrigger:PreventionJobTrigger default {{parent}}/{{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -182375,7 +182375,7 @@ } }, "gcp:dataplex/datascan:Datascan": { - "description": "Represents a user-visible job which provides the insights for the related data source.\n\n\nTo get more information about Datascan, see:\n\n* [API documentation](https://cloud.google.com/dataplex/docs/reference/rest)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dataplex/docs)\n\n## Example Usage\n\n### Dataplex Datascan Basic Profile\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basicProfile = new gcp.dataplex.Datascan(\"basic_profile\", {\n location: \"us-central1\",\n dataScanId: \"dataprofile-basic\",\n data: {\n resource: \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\",\n },\n executionSpec: {\n trigger: {\n onDemand: {},\n },\n },\n dataProfileSpec: {},\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_profile = gcp.dataplex.Datascan(\"basic_profile\",\n location=\"us-central1\",\n data_scan_id=\"dataprofile-basic\",\n data={\n \"resource\": \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\",\n },\n execution_spec={\n \"trigger\": {\n \"on_demand\": {},\n },\n },\n data_profile_spec={},\n project=\"my-project-name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basicProfile = new Gcp.DataPlex.Datascan(\"basic_profile\", new()\n {\n Location = \"us-central1\",\n DataScanId = \"dataprofile-basic\",\n Data = new Gcp.DataPlex.Inputs.DatascanDataArgs\n {\n Resource = \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\",\n },\n ExecutionSpec = new Gcp.DataPlex.Inputs.DatascanExecutionSpecArgs\n {\n Trigger = new Gcp.DataPlex.Inputs.DatascanExecutionSpecTriggerArgs\n {\n OnDemand = null,\n },\n },\n DataProfileSpec = null,\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataplex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataplex.NewDatascan(ctx, \"basic_profile\", \u0026dataplex.DatascanArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDataScanId: pulumi.String(\"dataprofile-basic\"),\n\t\t\tData: \u0026dataplex.DatascanDataArgs{\n\t\t\t\tResource: pulumi.String(\"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\"),\n\t\t\t},\n\t\t\tExecutionSpec: \u0026dataplex.DatascanExecutionSpecArgs{\n\t\t\t\tTrigger: \u0026dataplex.DatascanExecutionSpecTriggerArgs{\n\t\t\t\t\tOnDemand: nil,\n\t\t\t\t},\n\t\t\t},\n\t\t\tDataProfileSpec: nil,\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataplex.Datascan;\nimport com.pulumi.gcp.dataplex.DatascanArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecTriggerArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecTriggerOnDemandArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataProfileSpecArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basicProfile = new Datascan(\"basicProfile\", DatascanArgs.builder()\n .location(\"us-central1\")\n .dataScanId(\"dataprofile-basic\")\n .data(DatascanDataArgs.builder()\n .resource(\"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\")\n .build())\n .executionSpec(DatascanExecutionSpecArgs.builder()\n .trigger(DatascanExecutionSpecTriggerArgs.builder()\n .onDemand()\n .build())\n .build())\n .dataProfileSpec()\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicProfile:\n type: gcp:dataplex:Datascan\n name: basic_profile\n properties:\n location: us-central1\n dataScanId: dataprofile-basic\n data:\n resource: //bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\n executionSpec:\n trigger:\n onDemand: {}\n dataProfileSpec: {}\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataplex Datascan Full Profile\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst source = new gcp.bigquery.Dataset(\"source\", {\n datasetId: \"dataplex_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n deleteContentsOnDestroy: true,\n});\nconst fullProfile = new gcp.dataplex.Datascan(\"full_profile\", {\n location: \"us-central1\",\n displayName: \"Full Datascan Profile\",\n dataScanId: \"dataprofile-full\",\n description: \"Example resource - Full Datascan Profile\",\n labels: {\n author: \"billing\",\n },\n data: {\n resource: \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\",\n },\n executionSpec: {\n trigger: {\n schedule: {\n cron: \"TZ=America/New_York 1 1 * * *\",\n },\n },\n },\n dataProfileSpec: {\n samplingPercent: 80,\n rowFilter: \"word_count \u003e 10\",\n includeFields: {\n fieldNames: [\"word_count\"],\n },\n excludeFields: {\n fieldNames: [\"property_type\"],\n },\n postScanActions: {\n bigqueryExport: {\n resultsTable: \"//bigquery.googleapis.com/projects/my-project-name/datasets/dataplex_dataset/tables/profile_export\",\n },\n },\n },\n project: \"my-project-name\",\n}, {\n dependsOn: [source],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsource = gcp.bigquery.Dataset(\"source\",\n dataset_id=\"dataplex_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\",\n delete_contents_on_destroy=True)\nfull_profile = gcp.dataplex.Datascan(\"full_profile\",\n location=\"us-central1\",\n display_name=\"Full Datascan Profile\",\n data_scan_id=\"dataprofile-full\",\n description=\"Example resource - Full Datascan Profile\",\n labels={\n \"author\": \"billing\",\n },\n data={\n \"resource\": \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\",\n },\n execution_spec={\n \"trigger\": {\n \"schedule\": {\n \"cron\": \"TZ=America/New_York 1 1 * * *\",\n },\n },\n },\n data_profile_spec={\n \"sampling_percent\": 80,\n \"row_filter\": \"word_count \u003e 10\",\n \"include_fields\": {\n \"field_names\": [\"word_count\"],\n },\n \"exclude_fields\": {\n \"field_names\": [\"property_type\"],\n },\n \"post_scan_actions\": {\n \"bigquery_export\": {\n \"results_table\": \"//bigquery.googleapis.com/projects/my-project-name/datasets/dataplex_dataset/tables/profile_export\",\n },\n },\n },\n project=\"my-project-name\",\n opts = pulumi.ResourceOptions(depends_on=[source]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var source = new Gcp.BigQuery.Dataset(\"source\", new()\n {\n DatasetId = \"dataplex_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n DeleteContentsOnDestroy = true,\n });\n\n var fullProfile = new Gcp.DataPlex.Datascan(\"full_profile\", new()\n {\n Location = \"us-central1\",\n DisplayName = \"Full Datascan Profile\",\n DataScanId = \"dataprofile-full\",\n Description = \"Example resource - Full Datascan Profile\",\n Labels = \n {\n { \"author\", \"billing\" },\n },\n Data = new Gcp.DataPlex.Inputs.DatascanDataArgs\n {\n Resource = \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\",\n },\n ExecutionSpec = new Gcp.DataPlex.Inputs.DatascanExecutionSpecArgs\n {\n Trigger = new Gcp.DataPlex.Inputs.DatascanExecutionSpecTriggerArgs\n {\n Schedule = new Gcp.DataPlex.Inputs.DatascanExecutionSpecTriggerScheduleArgs\n {\n Cron = \"TZ=America/New_York 1 1 * * *\",\n },\n },\n },\n DataProfileSpec = new Gcp.DataPlex.Inputs.DatascanDataProfileSpecArgs\n {\n SamplingPercent = 80,\n RowFilter = \"word_count \u003e 10\",\n IncludeFields = new Gcp.DataPlex.Inputs.DatascanDataProfileSpecIncludeFieldsArgs\n {\n FieldNames = new[]\n {\n \"word_count\",\n },\n },\n ExcludeFields = new Gcp.DataPlex.Inputs.DatascanDataProfileSpecExcludeFieldsArgs\n {\n FieldNames = new[]\n {\n \"property_type\",\n },\n },\n PostScanActions = new Gcp.DataPlex.Inputs.DatascanDataProfileSpecPostScanActionsArgs\n {\n BigqueryExport = new Gcp.DataPlex.Inputs.DatascanDataProfileSpecPostScanActionsBigqueryExportArgs\n {\n ResultsTable = \"//bigquery.googleapis.com/projects/my-project-name/datasets/dataplex_dataset/tables/profile_export\",\n },\n },\n },\n Project = \"my-project-name\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n source,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataplex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsource, err := bigquery.NewDataset(ctx, \"source\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataplex_dataset\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tDeleteContentsOnDestroy: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataplex.NewDatascan(ctx, \"full_profile\", \u0026dataplex.DatascanArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"Full Datascan Profile\"),\n\t\t\tDataScanId: pulumi.String(\"dataprofile-full\"),\n\t\t\tDescription: pulumi.String(\"Example resource - Full Datascan Profile\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"author\": pulumi.String(\"billing\"),\n\t\t\t},\n\t\t\tData: \u0026dataplex.DatascanDataArgs{\n\t\t\t\tResource: pulumi.String(\"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\"),\n\t\t\t},\n\t\t\tExecutionSpec: \u0026dataplex.DatascanExecutionSpecArgs{\n\t\t\t\tTrigger: \u0026dataplex.DatascanExecutionSpecTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataplex.DatascanExecutionSpecTriggerScheduleArgs{\n\t\t\t\t\t\tCron: pulumi.String(\"TZ=America/New_York 1 1 * * *\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDataProfileSpec: \u0026dataplex.DatascanDataProfileSpecArgs{\n\t\t\t\tSamplingPercent: pulumi.Float64(80),\n\t\t\t\tRowFilter: pulumi.String(\"word_count \u003e 10\"),\n\t\t\t\tIncludeFields: \u0026dataplex.DatascanDataProfileSpecIncludeFieldsArgs{\n\t\t\t\t\tFieldNames: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"word_count\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tExcludeFields: \u0026dataplex.DatascanDataProfileSpecExcludeFieldsArgs{\n\t\t\t\t\tFieldNames: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"property_type\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPostScanActions: \u0026dataplex.DatascanDataProfileSpecPostScanActionsArgs{\n\t\t\t\t\tBigqueryExport: \u0026dataplex.DatascanDataProfileSpecPostScanActionsBigqueryExportArgs{\n\t\t\t\t\t\tResultsTable: pulumi.String(\"//bigquery.googleapis.com/projects/my-project-name/datasets/dataplex_dataset/tables/profile_export\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsource,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.dataplex.Datascan;\nimport com.pulumi.gcp.dataplex.DatascanArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecTriggerArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecTriggerScheduleArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataProfileSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataProfileSpecIncludeFieldsArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataProfileSpecExcludeFieldsArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataProfileSpecPostScanActionsArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataProfileSpecPostScanActionsBigqueryExportArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var source = new Dataset(\"source\", DatasetArgs.builder()\n .datasetId(\"dataplex_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .deleteContentsOnDestroy(true)\n .build());\n\n var fullProfile = new Datascan(\"fullProfile\", DatascanArgs.builder()\n .location(\"us-central1\")\n .displayName(\"Full Datascan Profile\")\n .dataScanId(\"dataprofile-full\")\n .description(\"Example resource - Full Datascan Profile\")\n .labels(Map.of(\"author\", \"billing\"))\n .data(DatascanDataArgs.builder()\n .resource(\"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\")\n .build())\n .executionSpec(DatascanExecutionSpecArgs.builder()\n .trigger(DatascanExecutionSpecTriggerArgs.builder()\n .schedule(DatascanExecutionSpecTriggerScheduleArgs.builder()\n .cron(\"TZ=America/New_York 1 1 * * *\")\n .build())\n .build())\n .build())\n .dataProfileSpec(DatascanDataProfileSpecArgs.builder()\n .samplingPercent(80)\n .rowFilter(\"word_count \u003e 10\")\n .includeFields(DatascanDataProfileSpecIncludeFieldsArgs.builder()\n .fieldNames(\"word_count\")\n .build())\n .excludeFields(DatascanDataProfileSpecExcludeFieldsArgs.builder()\n .fieldNames(\"property_type\")\n .build())\n .postScanActions(DatascanDataProfileSpecPostScanActionsArgs.builder()\n .bigqueryExport(DatascanDataProfileSpecPostScanActionsBigqueryExportArgs.builder()\n .resultsTable(\"//bigquery.googleapis.com/projects/my-project-name/datasets/dataplex_dataset/tables/profile_export\")\n .build())\n .build())\n .build())\n .project(\"my-project-name\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(source)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n fullProfile:\n type: gcp:dataplex:Datascan\n name: full_profile\n properties:\n location: us-central1\n displayName: Full Datascan Profile\n dataScanId: dataprofile-full\n description: Example resource - Full Datascan Profile\n labels:\n author: billing\n data:\n resource: //bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\n executionSpec:\n trigger:\n schedule:\n cron: TZ=America/New_York 1 1 * * *\n dataProfileSpec:\n samplingPercent: 80\n rowFilter: word_count \u003e 10\n includeFields:\n fieldNames:\n - word_count\n excludeFields:\n fieldNames:\n - property_type\n postScanActions:\n bigqueryExport:\n resultsTable: //bigquery.googleapis.com/projects/my-project-name/datasets/dataplex_dataset/tables/profile_export\n project: my-project-name\n options:\n dependson:\n - ${source}\n source:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataplex_dataset\n friendlyName: test\n description: This is a test description\n location: US\n deleteContentsOnDestroy: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataplex Datascan Basic Quality\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basicQuality = new gcp.dataplex.Datascan(\"basic_quality\", {\n location: \"us-central1\",\n dataScanId: \"dataquality-basic\",\n data: {\n resource: \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\",\n },\n executionSpec: {\n trigger: {\n onDemand: {},\n },\n },\n dataQualitySpec: {\n rules: [{\n dimension: \"VALIDITY\",\n name: \"rule1\",\n description: \"rule 1 for validity dimension\",\n tableConditionExpectation: {\n sqlExpression: \"COUNT(*) \u003e 0\",\n },\n }],\n },\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_quality = gcp.dataplex.Datascan(\"basic_quality\",\n location=\"us-central1\",\n data_scan_id=\"dataquality-basic\",\n data={\n \"resource\": \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\",\n },\n execution_spec={\n \"trigger\": {\n \"on_demand\": {},\n },\n },\n data_quality_spec={\n \"rules\": [{\n \"dimension\": \"VALIDITY\",\n \"name\": \"rule1\",\n \"description\": \"rule 1 for validity dimension\",\n \"table_condition_expectation\": {\n \"sql_expression\": \"COUNT(*) \u003e 0\",\n },\n }],\n },\n project=\"my-project-name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basicQuality = new Gcp.DataPlex.Datascan(\"basic_quality\", new()\n {\n Location = \"us-central1\",\n DataScanId = \"dataquality-basic\",\n Data = new Gcp.DataPlex.Inputs.DatascanDataArgs\n {\n Resource = \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\",\n },\n ExecutionSpec = new Gcp.DataPlex.Inputs.DatascanExecutionSpecArgs\n {\n Trigger = new Gcp.DataPlex.Inputs.DatascanExecutionSpecTriggerArgs\n {\n OnDemand = null,\n },\n },\n DataQualitySpec = new Gcp.DataPlex.Inputs.DatascanDataQualitySpecArgs\n {\n Rules = new[]\n {\n new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleArgs\n {\n Dimension = \"VALIDITY\",\n Name = \"rule1\",\n Description = \"rule 1 for validity dimension\",\n TableConditionExpectation = new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleTableConditionExpectationArgs\n {\n SqlExpression = \"COUNT(*) \u003e 0\",\n },\n },\n },\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataplex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataplex.NewDatascan(ctx, \"basic_quality\", \u0026dataplex.DatascanArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDataScanId: pulumi.String(\"dataquality-basic\"),\n\t\t\tData: \u0026dataplex.DatascanDataArgs{\n\t\t\t\tResource: pulumi.String(\"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\"),\n\t\t\t},\n\t\t\tExecutionSpec: \u0026dataplex.DatascanExecutionSpecArgs{\n\t\t\t\tTrigger: \u0026dataplex.DatascanExecutionSpecTriggerArgs{\n\t\t\t\t\tOnDemand: nil,\n\t\t\t\t},\n\t\t\t},\n\t\t\tDataQualitySpec: \u0026dataplex.DatascanDataQualitySpecArgs{\n\t\t\t\tRules: dataplex.DatascanDataQualitySpecRuleArray{\n\t\t\t\t\t\u0026dataplex.DatascanDataQualitySpecRuleArgs{\n\t\t\t\t\t\tDimension: pulumi.String(\"VALIDITY\"),\n\t\t\t\t\t\tName: pulumi.String(\"rule1\"),\n\t\t\t\t\t\tDescription: pulumi.String(\"rule 1 for validity dimension\"),\n\t\t\t\t\t\tTableConditionExpectation: \u0026dataplex.DatascanDataQualitySpecRuleTableConditionExpectationArgs{\n\t\t\t\t\t\t\tSqlExpression: pulumi.String(\"COUNT(*) \u003e 0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataplex.Datascan;\nimport com.pulumi.gcp.dataplex.DatascanArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecTriggerArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecTriggerOnDemandArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataQualitySpecArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basicQuality = new Datascan(\"basicQuality\", DatascanArgs.builder()\n .location(\"us-central1\")\n .dataScanId(\"dataquality-basic\")\n .data(DatascanDataArgs.builder()\n .resource(\"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\")\n .build())\n .executionSpec(DatascanExecutionSpecArgs.builder()\n .trigger(DatascanExecutionSpecTriggerArgs.builder()\n .onDemand()\n .build())\n .build())\n .dataQualitySpec(DatascanDataQualitySpecArgs.builder()\n .rules(DatascanDataQualitySpecRuleArgs.builder()\n .dimension(\"VALIDITY\")\n .name(\"rule1\")\n .description(\"rule 1 for validity dimension\")\n .tableConditionExpectation(DatascanDataQualitySpecRuleTableConditionExpectationArgs.builder()\n .sqlExpression(\"COUNT(*) \u003e 0\")\n .build())\n .build())\n .build())\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicQuality:\n type: gcp:dataplex:Datascan\n name: basic_quality\n properties:\n location: us-central1\n dataScanId: dataquality-basic\n data:\n resource: //bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\n executionSpec:\n trigger:\n onDemand: {}\n dataQualitySpec:\n rules:\n - dimension: VALIDITY\n name: rule1\n description: rule 1 for validity dimension\n tableConditionExpectation:\n sqlExpression: COUNT(*) \u003e 0\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataplex Datascan Full Quality\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst fullQuality = new gcp.dataplex.Datascan(\"full_quality\", {\n location: \"us-central1\",\n displayName: \"Full Datascan Quality\",\n dataScanId: \"dataquality-full\",\n description: \"Example resource - Full Datascan Quality\",\n labels: {\n author: \"billing\",\n },\n data: {\n resource: \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/austin_bikeshare/tables/bikeshare_stations\",\n },\n executionSpec: {\n trigger: {\n schedule: {\n cron: \"TZ=America/New_York 1 1 * * *\",\n },\n },\n field: \"modified_date\",\n },\n dataQualitySpec: {\n samplingPercent: 5,\n rowFilter: \"station_id \u003e 1000\",\n rules: [\n {\n column: \"address\",\n dimension: \"VALIDITY\",\n threshold: 0.99,\n nonNullExpectation: {},\n },\n {\n column: \"council_district\",\n dimension: \"VALIDITY\",\n ignoreNull: true,\n threshold: 0.9,\n rangeExpectation: {\n minValue: \"1\",\n maxValue: \"10\",\n strictMinEnabled: true,\n strictMaxEnabled: false,\n },\n },\n {\n column: \"power_type\",\n dimension: \"VALIDITY\",\n ignoreNull: false,\n regexExpectation: {\n regex: \".*solar.*\",\n },\n },\n {\n column: \"property_type\",\n dimension: \"VALIDITY\",\n ignoreNull: false,\n setExpectation: {\n values: [\n \"sidewalk\",\n \"parkland\",\n ],\n },\n },\n {\n column: \"address\",\n dimension: \"UNIQUENESS\",\n uniquenessExpectation: {},\n },\n {\n column: \"number_of_docks\",\n dimension: \"VALIDITY\",\n statisticRangeExpectation: {\n statistic: \"MEAN\",\n minValue: \"5\",\n maxValue: \"15\",\n strictMinEnabled: true,\n strictMaxEnabled: true,\n },\n },\n {\n column: \"footprint_length\",\n dimension: \"VALIDITY\",\n rowConditionExpectation: {\n sqlExpression: \"footprint_length \u003e 0 AND footprint_length \u003c= 10\",\n },\n },\n {\n dimension: \"VALIDITY\",\n tableConditionExpectation: {\n sqlExpression: \"COUNT(*) \u003e 0\",\n },\n },\n {\n dimension: \"VALIDITY\",\n sqlAssertion: {\n sqlStatement: \"select * from bigquery-public-data.austin_bikeshare.bikeshare_stations where station_id is null\",\n },\n },\n ],\n },\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfull_quality = gcp.dataplex.Datascan(\"full_quality\",\n location=\"us-central1\",\n display_name=\"Full Datascan Quality\",\n data_scan_id=\"dataquality-full\",\n description=\"Example resource - Full Datascan Quality\",\n labels={\n \"author\": \"billing\",\n },\n data={\n \"resource\": \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/austin_bikeshare/tables/bikeshare_stations\",\n },\n execution_spec={\n \"trigger\": {\n \"schedule\": {\n \"cron\": \"TZ=America/New_York 1 1 * * *\",\n },\n },\n \"field\": \"modified_date\",\n },\n data_quality_spec={\n \"sampling_percent\": 5,\n \"row_filter\": \"station_id \u003e 1000\",\n \"rules\": [\n {\n \"column\": \"address\",\n \"dimension\": \"VALIDITY\",\n \"threshold\": 0.99,\n \"non_null_expectation\": {},\n },\n {\n \"column\": \"council_district\",\n \"dimension\": \"VALIDITY\",\n \"ignore_null\": True,\n \"threshold\": 0.9,\n \"range_expectation\": {\n \"min_value\": \"1\",\n \"max_value\": \"10\",\n \"strict_min_enabled\": True,\n \"strict_max_enabled\": False,\n },\n },\n {\n \"column\": \"power_type\",\n \"dimension\": \"VALIDITY\",\n \"ignore_null\": False,\n \"regex_expectation\": {\n \"regex\": \".*solar.*\",\n },\n },\n {\n \"column\": \"property_type\",\n \"dimension\": \"VALIDITY\",\n \"ignore_null\": False,\n \"set_expectation\": {\n \"values\": [\n \"sidewalk\",\n \"parkland\",\n ],\n },\n },\n {\n \"column\": \"address\",\n \"dimension\": \"UNIQUENESS\",\n \"uniqueness_expectation\": {},\n },\n {\n \"column\": \"number_of_docks\",\n \"dimension\": \"VALIDITY\",\n \"statistic_range_expectation\": {\n \"statistic\": \"MEAN\",\n \"min_value\": \"5\",\n \"max_value\": \"15\",\n \"strict_min_enabled\": True,\n \"strict_max_enabled\": True,\n },\n },\n {\n \"column\": \"footprint_length\",\n \"dimension\": \"VALIDITY\",\n \"row_condition_expectation\": {\n \"sql_expression\": \"footprint_length \u003e 0 AND footprint_length \u003c= 10\",\n },\n },\n {\n \"dimension\": \"VALIDITY\",\n \"table_condition_expectation\": {\n \"sql_expression\": \"COUNT(*) \u003e 0\",\n },\n },\n {\n \"dimension\": \"VALIDITY\",\n \"sql_assertion\": {\n \"sql_statement\": \"select * from bigquery-public-data.austin_bikeshare.bikeshare_stations where station_id is null\",\n },\n },\n ],\n },\n project=\"my-project-name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var fullQuality = new Gcp.DataPlex.Datascan(\"full_quality\", new()\n {\n Location = \"us-central1\",\n DisplayName = \"Full Datascan Quality\",\n DataScanId = \"dataquality-full\",\n Description = \"Example resource - Full Datascan Quality\",\n Labels = \n {\n { \"author\", \"billing\" },\n },\n Data = new Gcp.DataPlex.Inputs.DatascanDataArgs\n {\n Resource = \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/austin_bikeshare/tables/bikeshare_stations\",\n },\n ExecutionSpec = new Gcp.DataPlex.Inputs.DatascanExecutionSpecArgs\n {\n Trigger = new Gcp.DataPlex.Inputs.DatascanExecutionSpecTriggerArgs\n {\n Schedule = new Gcp.DataPlex.Inputs.DatascanExecutionSpecTriggerScheduleArgs\n {\n Cron = \"TZ=America/New_York 1 1 * * *\",\n },\n },\n Field = \"modified_date\",\n },\n DataQualitySpec = new Gcp.DataPlex.Inputs.DatascanDataQualitySpecArgs\n {\n SamplingPercent = 5,\n RowFilter = \"station_id \u003e 1000\",\n Rules = new[]\n {\n new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleArgs\n {\n Column = \"address\",\n Dimension = \"VALIDITY\",\n Threshold = 0.99,\n NonNullExpectation = null,\n },\n new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleArgs\n {\n Column = \"council_district\",\n Dimension = \"VALIDITY\",\n IgnoreNull = true,\n Threshold = 0.9,\n RangeExpectation = new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleRangeExpectationArgs\n {\n MinValue = \"1\",\n MaxValue = \"10\",\n StrictMinEnabled = true,\n StrictMaxEnabled = false,\n },\n },\n new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleArgs\n {\n Column = \"power_type\",\n Dimension = \"VALIDITY\",\n IgnoreNull = false,\n RegexExpectation = new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleRegexExpectationArgs\n {\n Regex = \".*solar.*\",\n },\n },\n new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleArgs\n {\n Column = \"property_type\",\n Dimension = \"VALIDITY\",\n IgnoreNull = false,\n SetExpectation = new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleSetExpectationArgs\n {\n Values = new[]\n {\n \"sidewalk\",\n \"parkland\",\n },\n },\n },\n new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleArgs\n {\n Column = \"address\",\n Dimension = \"UNIQUENESS\",\n UniquenessExpectation = null,\n },\n new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleArgs\n {\n Column = \"number_of_docks\",\n Dimension = \"VALIDITY\",\n StatisticRangeExpectation = new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleStatisticRangeExpectationArgs\n {\n Statistic = \"MEAN\",\n MinValue = \"5\",\n MaxValue = \"15\",\n StrictMinEnabled = true,\n StrictMaxEnabled = true,\n },\n },\n new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleArgs\n {\n Column = \"footprint_length\",\n Dimension = \"VALIDITY\",\n RowConditionExpectation = new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleRowConditionExpectationArgs\n {\n SqlExpression = \"footprint_length \u003e 0 AND footprint_length \u003c= 10\",\n },\n },\n new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleArgs\n {\n Dimension = \"VALIDITY\",\n TableConditionExpectation = new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleTableConditionExpectationArgs\n {\n SqlExpression = \"COUNT(*) \u003e 0\",\n },\n },\n new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleArgs\n {\n Dimension = \"VALIDITY\",\n SqlAssertion = new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleSqlAssertionArgs\n {\n SqlStatement = \"select * from bigquery-public-data.austin_bikeshare.bikeshare_stations where station_id is null\",\n },\n },\n },\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataplex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataplex.NewDatascan(ctx, \"full_quality\", \u0026dataplex.DatascanArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"Full Datascan Quality\"),\n\t\t\tDataScanId: pulumi.String(\"dataquality-full\"),\n\t\t\tDescription: pulumi.String(\"Example resource - Full Datascan Quality\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"author\": pulumi.String(\"billing\"),\n\t\t\t},\n\t\t\tData: \u0026dataplex.DatascanDataArgs{\n\t\t\t\tResource: pulumi.String(\"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/austin_bikeshare/tables/bikeshare_stations\"),\n\t\t\t},\n\t\t\tExecutionSpec: \u0026dataplex.DatascanExecutionSpecArgs{\n\t\t\t\tTrigger: \u0026dataplex.DatascanExecutionSpecTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataplex.DatascanExecutionSpecTriggerScheduleArgs{\n\t\t\t\t\t\tCron: pulumi.String(\"TZ=America/New_York 1 1 * * *\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tField: pulumi.String(\"modified_date\"),\n\t\t\t},\n\t\t\tDataQualitySpec: \u0026dataplex.DatascanDataQualitySpecArgs{\n\t\t\t\tSamplingPercent: pulumi.Float64(5),\n\t\t\t\tRowFilter: pulumi.String(\"station_id \u003e 1000\"),\n\t\t\t\tRules: dataplex.DatascanDataQualitySpecRuleArray{\n\t\t\t\t\t\u0026dataplex.DatascanDataQualitySpecRuleArgs{\n\t\t\t\t\t\tColumn: pulumi.String(\"address\"),\n\t\t\t\t\t\tDimension: pulumi.String(\"VALIDITY\"),\n\t\t\t\t\t\tThreshold: pulumi.Float64(0.99),\n\t\t\t\t\t\tNonNullExpectation: nil,\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataplex.DatascanDataQualitySpecRuleArgs{\n\t\t\t\t\t\tColumn: pulumi.String(\"council_district\"),\n\t\t\t\t\t\tDimension: pulumi.String(\"VALIDITY\"),\n\t\t\t\t\t\tIgnoreNull: pulumi.Bool(true),\n\t\t\t\t\t\tThreshold: pulumi.Float64(0.9),\n\t\t\t\t\t\tRangeExpectation: \u0026dataplex.DatascanDataQualitySpecRuleRangeExpectationArgs{\n\t\t\t\t\t\t\tMinValue: pulumi.String(\"1\"),\n\t\t\t\t\t\t\tMaxValue: pulumi.String(\"10\"),\n\t\t\t\t\t\t\tStrictMinEnabled: pulumi.Bool(true),\n\t\t\t\t\t\t\tStrictMaxEnabled: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataplex.DatascanDataQualitySpecRuleArgs{\n\t\t\t\t\t\tColumn: pulumi.String(\"power_type\"),\n\t\t\t\t\t\tDimension: pulumi.String(\"VALIDITY\"),\n\t\t\t\t\t\tIgnoreNull: pulumi.Bool(false),\n\t\t\t\t\t\tRegexExpectation: \u0026dataplex.DatascanDataQualitySpecRuleRegexExpectationArgs{\n\t\t\t\t\t\t\tRegex: pulumi.String(\".*solar.*\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataplex.DatascanDataQualitySpecRuleArgs{\n\t\t\t\t\t\tColumn: pulumi.String(\"property_type\"),\n\t\t\t\t\t\tDimension: pulumi.String(\"VALIDITY\"),\n\t\t\t\t\t\tIgnoreNull: pulumi.Bool(false),\n\t\t\t\t\t\tSetExpectation: \u0026dataplex.DatascanDataQualitySpecRuleSetExpectationArgs{\n\t\t\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"sidewalk\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"parkland\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataplex.DatascanDataQualitySpecRuleArgs{\n\t\t\t\t\t\tColumn: pulumi.String(\"address\"),\n\t\t\t\t\t\tDimension: pulumi.String(\"UNIQUENESS\"),\n\t\t\t\t\t\tUniquenessExpectation: nil,\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataplex.DatascanDataQualitySpecRuleArgs{\n\t\t\t\t\t\tColumn: pulumi.String(\"number_of_docks\"),\n\t\t\t\t\t\tDimension: pulumi.String(\"VALIDITY\"),\n\t\t\t\t\t\tStatisticRangeExpectation: \u0026dataplex.DatascanDataQualitySpecRuleStatisticRangeExpectationArgs{\n\t\t\t\t\t\t\tStatistic: pulumi.String(\"MEAN\"),\n\t\t\t\t\t\t\tMinValue: pulumi.String(\"5\"),\n\t\t\t\t\t\t\tMaxValue: pulumi.String(\"15\"),\n\t\t\t\t\t\t\tStrictMinEnabled: pulumi.Bool(true),\n\t\t\t\t\t\t\tStrictMaxEnabled: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataplex.DatascanDataQualitySpecRuleArgs{\n\t\t\t\t\t\tColumn: pulumi.String(\"footprint_length\"),\n\t\t\t\t\t\tDimension: pulumi.String(\"VALIDITY\"),\n\t\t\t\t\t\tRowConditionExpectation: \u0026dataplex.DatascanDataQualitySpecRuleRowConditionExpectationArgs{\n\t\t\t\t\t\t\tSqlExpression: pulumi.String(\"footprint_length \u003e 0 AND footprint_length \u003c= 10\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataplex.DatascanDataQualitySpecRuleArgs{\n\t\t\t\t\t\tDimension: pulumi.String(\"VALIDITY\"),\n\t\t\t\t\t\tTableConditionExpectation: \u0026dataplex.DatascanDataQualitySpecRuleTableConditionExpectationArgs{\n\t\t\t\t\t\t\tSqlExpression: pulumi.String(\"COUNT(*) \u003e 0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataplex.DatascanDataQualitySpecRuleArgs{\n\t\t\t\t\t\tDimension: pulumi.String(\"VALIDITY\"),\n\t\t\t\t\t\tSqlAssertion: \u0026dataplex.DatascanDataQualitySpecRuleSqlAssertionArgs{\n\t\t\t\t\t\t\tSqlStatement: pulumi.String(\"select * from bigquery-public-data.austin_bikeshare.bikeshare_stations where station_id is null\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataplex.Datascan;\nimport com.pulumi.gcp.dataplex.DatascanArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecTriggerArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecTriggerScheduleArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataQualitySpecArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var fullQuality = new Datascan(\"fullQuality\", DatascanArgs.builder()\n .location(\"us-central1\")\n .displayName(\"Full Datascan Quality\")\n .dataScanId(\"dataquality-full\")\n .description(\"Example resource - Full Datascan Quality\")\n .labels(Map.of(\"author\", \"billing\"))\n .data(DatascanDataArgs.builder()\n .resource(\"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/austin_bikeshare/tables/bikeshare_stations\")\n .build())\n .executionSpec(DatascanExecutionSpecArgs.builder()\n .trigger(DatascanExecutionSpecTriggerArgs.builder()\n .schedule(DatascanExecutionSpecTriggerScheduleArgs.builder()\n .cron(\"TZ=America/New_York 1 1 * * *\")\n .build())\n .build())\n .field(\"modified_date\")\n .build())\n .dataQualitySpec(DatascanDataQualitySpecArgs.builder()\n .samplingPercent(5)\n .rowFilter(\"station_id \u003e 1000\")\n .rules( \n DatascanDataQualitySpecRuleArgs.builder()\n .column(\"address\")\n .dimension(\"VALIDITY\")\n .threshold(0.99)\n .nonNullExpectation()\n .build(),\n DatascanDataQualitySpecRuleArgs.builder()\n .column(\"council_district\")\n .dimension(\"VALIDITY\")\n .ignoreNull(true)\n .threshold(0.9)\n .rangeExpectation(DatascanDataQualitySpecRuleRangeExpectationArgs.builder()\n .minValue(1)\n .maxValue(10)\n .strictMinEnabled(true)\n .strictMaxEnabled(false)\n .build())\n .build(),\n DatascanDataQualitySpecRuleArgs.builder()\n .column(\"power_type\")\n .dimension(\"VALIDITY\")\n .ignoreNull(false)\n .regexExpectation(DatascanDataQualitySpecRuleRegexExpectationArgs.builder()\n .regex(\".*solar.*\")\n .build())\n .build(),\n DatascanDataQualitySpecRuleArgs.builder()\n .column(\"property_type\")\n .dimension(\"VALIDITY\")\n .ignoreNull(false)\n .setExpectation(DatascanDataQualitySpecRuleSetExpectationArgs.builder()\n .values( \n \"sidewalk\",\n \"parkland\")\n .build())\n .build(),\n DatascanDataQualitySpecRuleArgs.builder()\n .column(\"address\")\n .dimension(\"UNIQUENESS\")\n .uniquenessExpectation()\n .build(),\n DatascanDataQualitySpecRuleArgs.builder()\n .column(\"number_of_docks\")\n .dimension(\"VALIDITY\")\n .statisticRangeExpectation(DatascanDataQualitySpecRuleStatisticRangeExpectationArgs.builder()\n .statistic(\"MEAN\")\n .minValue(5)\n .maxValue(15)\n .strictMinEnabled(true)\n .strictMaxEnabled(true)\n .build())\n .build(),\n DatascanDataQualitySpecRuleArgs.builder()\n .column(\"footprint_length\")\n .dimension(\"VALIDITY\")\n .rowConditionExpectation(DatascanDataQualitySpecRuleRowConditionExpectationArgs.builder()\n .sqlExpression(\"footprint_length \u003e 0 AND footprint_length \u003c= 10\")\n .build())\n .build(),\n DatascanDataQualitySpecRuleArgs.builder()\n .dimension(\"VALIDITY\")\n .tableConditionExpectation(DatascanDataQualitySpecRuleTableConditionExpectationArgs.builder()\n .sqlExpression(\"COUNT(*) \u003e 0\")\n .build())\n .build(),\n DatascanDataQualitySpecRuleArgs.builder()\n .dimension(\"VALIDITY\")\n .sqlAssertion(DatascanDataQualitySpecRuleSqlAssertionArgs.builder()\n .sqlStatement(\"select * from bigquery-public-data.austin_bikeshare.bikeshare_stations where station_id is null\")\n .build())\n .build())\n .build())\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n fullQuality:\n type: gcp:dataplex:Datascan\n name: full_quality\n properties:\n location: us-central1\n displayName: Full Datascan Quality\n dataScanId: dataquality-full\n description: Example resource - Full Datascan Quality\n labels:\n author: billing\n data:\n resource: //bigquery.googleapis.com/projects/bigquery-public-data/datasets/austin_bikeshare/tables/bikeshare_stations\n executionSpec:\n trigger:\n schedule:\n cron: TZ=America/New_York 1 1 * * *\n field: modified_date\n dataQualitySpec:\n samplingPercent: 5\n rowFilter: station_id \u003e 1000\n rules:\n - column: address\n dimension: VALIDITY\n threshold: 0.99\n nonNullExpectation: {}\n - column: council_district\n dimension: VALIDITY\n ignoreNull: true\n threshold: 0.9\n rangeExpectation:\n minValue: 1\n maxValue: 10\n strictMinEnabled: true\n strictMaxEnabled: false\n - column: power_type\n dimension: VALIDITY\n ignoreNull: false\n regexExpectation:\n regex: .*solar.*\n - column: property_type\n dimension: VALIDITY\n ignoreNull: false\n setExpectation:\n values:\n - sidewalk\n - parkland\n - column: address\n dimension: UNIQUENESS\n uniquenessExpectation: {}\n - column: number_of_docks\n dimension: VALIDITY\n statisticRangeExpectation:\n statistic: MEAN\n minValue: 5\n maxValue: 15\n strictMinEnabled: true\n strictMaxEnabled: true\n - column: footprint_length\n dimension: VALIDITY\n rowConditionExpectation:\n sqlExpression: footprint_length \u003e 0 AND footprint_length \u003c= 10\n - dimension: VALIDITY\n tableConditionExpectation:\n sqlExpression: COUNT(*) \u003e 0\n - dimension: VALIDITY\n sqlAssertion:\n sqlStatement: select * from bigquery-public-data.austin_bikeshare.bikeshare_stations where station_id is null\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDatascan can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/dataScans/{{data_scan_id}}`\n\n* `{{project}}/{{location}}/{{data_scan_id}}`\n\n* `{{location}}/{{data_scan_id}}`\n\n* `{{data_scan_id}}`\n\nWhen using the `pulumi import` command, Datascan can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataplex/datascan:Datascan default projects/{{project}}/locations/{{location}}/dataScans/{{data_scan_id}}\n```\n\n```sh\n$ pulumi import gcp:dataplex/datascan:Datascan default {{project}}/{{location}}/{{data_scan_id}}\n```\n\n```sh\n$ pulumi import gcp:dataplex/datascan:Datascan default {{location}}/{{data_scan_id}}\n```\n\n```sh\n$ pulumi import gcp:dataplex/datascan:Datascan default {{data_scan_id}}\n```\n\n", + "description": "Represents a user-visible job which provides the insights for the related data source.\n\n\nTo get more information about Datascan, see:\n\n* [API documentation](https://cloud.google.com/dataplex/docs/reference/rest)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dataplex/docs)\n\n## Example Usage\n\n### Dataplex Datascan Basic Profile\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basicProfile = new gcp.dataplex.Datascan(\"basic_profile\", {\n location: \"us-central1\",\n dataScanId: \"dataprofile-basic\",\n data: {\n resource: \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\",\n },\n executionSpec: {\n trigger: {\n onDemand: {},\n },\n },\n dataProfileSpec: {},\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_profile = gcp.dataplex.Datascan(\"basic_profile\",\n location=\"us-central1\",\n data_scan_id=\"dataprofile-basic\",\n data={\n \"resource\": \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\",\n },\n execution_spec={\n \"trigger\": {\n \"on_demand\": {},\n },\n },\n data_profile_spec={},\n project=\"my-project-name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basicProfile = new Gcp.DataPlex.Datascan(\"basic_profile\", new()\n {\n Location = \"us-central1\",\n DataScanId = \"dataprofile-basic\",\n Data = new Gcp.DataPlex.Inputs.DatascanDataArgs\n {\n Resource = \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\",\n },\n ExecutionSpec = new Gcp.DataPlex.Inputs.DatascanExecutionSpecArgs\n {\n Trigger = new Gcp.DataPlex.Inputs.DatascanExecutionSpecTriggerArgs\n {\n OnDemand = null,\n },\n },\n DataProfileSpec = null,\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataplex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataplex.NewDatascan(ctx, \"basic_profile\", \u0026dataplex.DatascanArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDataScanId: pulumi.String(\"dataprofile-basic\"),\n\t\t\tData: \u0026dataplex.DatascanDataArgs{\n\t\t\t\tResource: pulumi.String(\"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\"),\n\t\t\t},\n\t\t\tExecutionSpec: \u0026dataplex.DatascanExecutionSpecArgs{\n\t\t\t\tTrigger: \u0026dataplex.DatascanExecutionSpecTriggerArgs{\n\t\t\t\t\tOnDemand: \u0026dataplex.DatascanExecutionSpecTriggerOnDemandArgs{},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDataProfileSpec: \u0026dataplex.DatascanDataProfileSpecArgs{},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataplex.Datascan;\nimport com.pulumi.gcp.dataplex.DatascanArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecTriggerArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecTriggerOnDemandArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataProfileSpecArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basicProfile = new Datascan(\"basicProfile\", DatascanArgs.builder()\n .location(\"us-central1\")\n .dataScanId(\"dataprofile-basic\")\n .data(DatascanDataArgs.builder()\n .resource(\"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\")\n .build())\n .executionSpec(DatascanExecutionSpecArgs.builder()\n .trigger(DatascanExecutionSpecTriggerArgs.builder()\n .onDemand()\n .build())\n .build())\n .dataProfileSpec()\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicProfile:\n type: gcp:dataplex:Datascan\n name: basic_profile\n properties:\n location: us-central1\n dataScanId: dataprofile-basic\n data:\n resource: //bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\n executionSpec:\n trigger:\n onDemand: {}\n dataProfileSpec: {}\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataplex Datascan Full Profile\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst source = new gcp.bigquery.Dataset(\"source\", {\n datasetId: \"dataplex_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n deleteContentsOnDestroy: true,\n});\nconst fullProfile = new gcp.dataplex.Datascan(\"full_profile\", {\n location: \"us-central1\",\n displayName: \"Full Datascan Profile\",\n dataScanId: \"dataprofile-full\",\n description: \"Example resource - Full Datascan Profile\",\n labels: {\n author: \"billing\",\n },\n data: {\n resource: \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\",\n },\n executionSpec: {\n trigger: {\n schedule: {\n cron: \"TZ=America/New_York 1 1 * * *\",\n },\n },\n },\n dataProfileSpec: {\n samplingPercent: 80,\n rowFilter: \"word_count \u003e 10\",\n includeFields: {\n fieldNames: [\"word_count\"],\n },\n excludeFields: {\n fieldNames: [\"property_type\"],\n },\n postScanActions: {\n bigqueryExport: {\n resultsTable: \"//bigquery.googleapis.com/projects/my-project-name/datasets/dataplex_dataset/tables/profile_export\",\n },\n },\n },\n project: \"my-project-name\",\n}, {\n dependsOn: [source],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsource = gcp.bigquery.Dataset(\"source\",\n dataset_id=\"dataplex_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\",\n delete_contents_on_destroy=True)\nfull_profile = gcp.dataplex.Datascan(\"full_profile\",\n location=\"us-central1\",\n display_name=\"Full Datascan Profile\",\n data_scan_id=\"dataprofile-full\",\n description=\"Example resource - Full Datascan Profile\",\n labels={\n \"author\": \"billing\",\n },\n data={\n \"resource\": \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\",\n },\n execution_spec={\n \"trigger\": {\n \"schedule\": {\n \"cron\": \"TZ=America/New_York 1 1 * * *\",\n },\n },\n },\n data_profile_spec={\n \"sampling_percent\": 80,\n \"row_filter\": \"word_count \u003e 10\",\n \"include_fields\": {\n \"field_names\": [\"word_count\"],\n },\n \"exclude_fields\": {\n \"field_names\": [\"property_type\"],\n },\n \"post_scan_actions\": {\n \"bigquery_export\": {\n \"results_table\": \"//bigquery.googleapis.com/projects/my-project-name/datasets/dataplex_dataset/tables/profile_export\",\n },\n },\n },\n project=\"my-project-name\",\n opts = pulumi.ResourceOptions(depends_on=[source]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var source = new Gcp.BigQuery.Dataset(\"source\", new()\n {\n DatasetId = \"dataplex_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n DeleteContentsOnDestroy = true,\n });\n\n var fullProfile = new Gcp.DataPlex.Datascan(\"full_profile\", new()\n {\n Location = \"us-central1\",\n DisplayName = \"Full Datascan Profile\",\n DataScanId = \"dataprofile-full\",\n Description = \"Example resource - Full Datascan Profile\",\n Labels = \n {\n { \"author\", \"billing\" },\n },\n Data = new Gcp.DataPlex.Inputs.DatascanDataArgs\n {\n Resource = \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\",\n },\n ExecutionSpec = new Gcp.DataPlex.Inputs.DatascanExecutionSpecArgs\n {\n Trigger = new Gcp.DataPlex.Inputs.DatascanExecutionSpecTriggerArgs\n {\n Schedule = new Gcp.DataPlex.Inputs.DatascanExecutionSpecTriggerScheduleArgs\n {\n Cron = \"TZ=America/New_York 1 1 * * *\",\n },\n },\n },\n DataProfileSpec = new Gcp.DataPlex.Inputs.DatascanDataProfileSpecArgs\n {\n SamplingPercent = 80,\n RowFilter = \"word_count \u003e 10\",\n IncludeFields = new Gcp.DataPlex.Inputs.DatascanDataProfileSpecIncludeFieldsArgs\n {\n FieldNames = new[]\n {\n \"word_count\",\n },\n },\n ExcludeFields = new Gcp.DataPlex.Inputs.DatascanDataProfileSpecExcludeFieldsArgs\n {\n FieldNames = new[]\n {\n \"property_type\",\n },\n },\n PostScanActions = new Gcp.DataPlex.Inputs.DatascanDataProfileSpecPostScanActionsArgs\n {\n BigqueryExport = new Gcp.DataPlex.Inputs.DatascanDataProfileSpecPostScanActionsBigqueryExportArgs\n {\n ResultsTable = \"//bigquery.googleapis.com/projects/my-project-name/datasets/dataplex_dataset/tables/profile_export\",\n },\n },\n },\n Project = \"my-project-name\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n source,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataplex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsource, err := bigquery.NewDataset(ctx, \"source\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"dataplex_dataset\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tDeleteContentsOnDestroy: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataplex.NewDatascan(ctx, \"full_profile\", \u0026dataplex.DatascanArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"Full Datascan Profile\"),\n\t\t\tDataScanId: pulumi.String(\"dataprofile-full\"),\n\t\t\tDescription: pulumi.String(\"Example resource - Full Datascan Profile\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"author\": pulumi.String(\"billing\"),\n\t\t\t},\n\t\t\tData: \u0026dataplex.DatascanDataArgs{\n\t\t\t\tResource: pulumi.String(\"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\"),\n\t\t\t},\n\t\t\tExecutionSpec: \u0026dataplex.DatascanExecutionSpecArgs{\n\t\t\t\tTrigger: \u0026dataplex.DatascanExecutionSpecTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataplex.DatascanExecutionSpecTriggerScheduleArgs{\n\t\t\t\t\t\tCron: pulumi.String(\"TZ=America/New_York 1 1 * * *\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDataProfileSpec: \u0026dataplex.DatascanDataProfileSpecArgs{\n\t\t\t\tSamplingPercent: pulumi.Float64(80),\n\t\t\t\tRowFilter: pulumi.String(\"word_count \u003e 10\"),\n\t\t\t\tIncludeFields: \u0026dataplex.DatascanDataProfileSpecIncludeFieldsArgs{\n\t\t\t\t\tFieldNames: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"word_count\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tExcludeFields: \u0026dataplex.DatascanDataProfileSpecExcludeFieldsArgs{\n\t\t\t\t\tFieldNames: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"property_type\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPostScanActions: \u0026dataplex.DatascanDataProfileSpecPostScanActionsArgs{\n\t\t\t\t\tBigqueryExport: \u0026dataplex.DatascanDataProfileSpecPostScanActionsBigqueryExportArgs{\n\t\t\t\t\t\tResultsTable: pulumi.String(\"//bigquery.googleapis.com/projects/my-project-name/datasets/dataplex_dataset/tables/profile_export\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsource,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.dataplex.Datascan;\nimport com.pulumi.gcp.dataplex.DatascanArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecTriggerArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecTriggerScheduleArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataProfileSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataProfileSpecIncludeFieldsArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataProfileSpecExcludeFieldsArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataProfileSpecPostScanActionsArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataProfileSpecPostScanActionsBigqueryExportArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var source = new Dataset(\"source\", DatasetArgs.builder()\n .datasetId(\"dataplex_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .deleteContentsOnDestroy(true)\n .build());\n\n var fullProfile = new Datascan(\"fullProfile\", DatascanArgs.builder()\n .location(\"us-central1\")\n .displayName(\"Full Datascan Profile\")\n .dataScanId(\"dataprofile-full\")\n .description(\"Example resource - Full Datascan Profile\")\n .labels(Map.of(\"author\", \"billing\"))\n .data(DatascanDataArgs.builder()\n .resource(\"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\")\n .build())\n .executionSpec(DatascanExecutionSpecArgs.builder()\n .trigger(DatascanExecutionSpecTriggerArgs.builder()\n .schedule(DatascanExecutionSpecTriggerScheduleArgs.builder()\n .cron(\"TZ=America/New_York 1 1 * * *\")\n .build())\n .build())\n .build())\n .dataProfileSpec(DatascanDataProfileSpecArgs.builder()\n .samplingPercent(80)\n .rowFilter(\"word_count \u003e 10\")\n .includeFields(DatascanDataProfileSpecIncludeFieldsArgs.builder()\n .fieldNames(\"word_count\")\n .build())\n .excludeFields(DatascanDataProfileSpecExcludeFieldsArgs.builder()\n .fieldNames(\"property_type\")\n .build())\n .postScanActions(DatascanDataProfileSpecPostScanActionsArgs.builder()\n .bigqueryExport(DatascanDataProfileSpecPostScanActionsBigqueryExportArgs.builder()\n .resultsTable(\"//bigquery.googleapis.com/projects/my-project-name/datasets/dataplex_dataset/tables/profile_export\")\n .build())\n .build())\n .build())\n .project(\"my-project-name\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(source)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n fullProfile:\n type: gcp:dataplex:Datascan\n name: full_profile\n properties:\n location: us-central1\n displayName: Full Datascan Profile\n dataScanId: dataprofile-full\n description: Example resource - Full Datascan Profile\n labels:\n author: billing\n data:\n resource: //bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\n executionSpec:\n trigger:\n schedule:\n cron: TZ=America/New_York 1 1 * * *\n dataProfileSpec:\n samplingPercent: 80\n rowFilter: word_count \u003e 10\n includeFields:\n fieldNames:\n - word_count\n excludeFields:\n fieldNames:\n - property_type\n postScanActions:\n bigqueryExport:\n resultsTable: //bigquery.googleapis.com/projects/my-project-name/datasets/dataplex_dataset/tables/profile_export\n project: my-project-name\n options:\n dependson:\n - ${source}\n source:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: dataplex_dataset\n friendlyName: test\n description: This is a test description\n location: US\n deleteContentsOnDestroy: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataplex Datascan Basic Quality\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basicQuality = new gcp.dataplex.Datascan(\"basic_quality\", {\n location: \"us-central1\",\n dataScanId: \"dataquality-basic\",\n data: {\n resource: \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\",\n },\n executionSpec: {\n trigger: {\n onDemand: {},\n },\n },\n dataQualitySpec: {\n rules: [{\n dimension: \"VALIDITY\",\n name: \"rule1\",\n description: \"rule 1 for validity dimension\",\n tableConditionExpectation: {\n sqlExpression: \"COUNT(*) \u003e 0\",\n },\n }],\n },\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_quality = gcp.dataplex.Datascan(\"basic_quality\",\n location=\"us-central1\",\n data_scan_id=\"dataquality-basic\",\n data={\n \"resource\": \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\",\n },\n execution_spec={\n \"trigger\": {\n \"on_demand\": {},\n },\n },\n data_quality_spec={\n \"rules\": [{\n \"dimension\": \"VALIDITY\",\n \"name\": \"rule1\",\n \"description\": \"rule 1 for validity dimension\",\n \"table_condition_expectation\": {\n \"sql_expression\": \"COUNT(*) \u003e 0\",\n },\n }],\n },\n project=\"my-project-name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basicQuality = new Gcp.DataPlex.Datascan(\"basic_quality\", new()\n {\n Location = \"us-central1\",\n DataScanId = \"dataquality-basic\",\n Data = new Gcp.DataPlex.Inputs.DatascanDataArgs\n {\n Resource = \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\",\n },\n ExecutionSpec = new Gcp.DataPlex.Inputs.DatascanExecutionSpecArgs\n {\n Trigger = new Gcp.DataPlex.Inputs.DatascanExecutionSpecTriggerArgs\n {\n OnDemand = null,\n },\n },\n DataQualitySpec = new Gcp.DataPlex.Inputs.DatascanDataQualitySpecArgs\n {\n Rules = new[]\n {\n new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleArgs\n {\n Dimension = \"VALIDITY\",\n Name = \"rule1\",\n Description = \"rule 1 for validity dimension\",\n TableConditionExpectation = new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleTableConditionExpectationArgs\n {\n SqlExpression = \"COUNT(*) \u003e 0\",\n },\n },\n },\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataplex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataplex.NewDatascan(ctx, \"basic_quality\", \u0026dataplex.DatascanArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDataScanId: pulumi.String(\"dataquality-basic\"),\n\t\t\tData: \u0026dataplex.DatascanDataArgs{\n\t\t\t\tResource: pulumi.String(\"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\"),\n\t\t\t},\n\t\t\tExecutionSpec: \u0026dataplex.DatascanExecutionSpecArgs{\n\t\t\t\tTrigger: \u0026dataplex.DatascanExecutionSpecTriggerArgs{\n\t\t\t\t\tOnDemand: \u0026dataplex.DatascanExecutionSpecTriggerOnDemandArgs{},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDataQualitySpec: \u0026dataplex.DatascanDataQualitySpecArgs{\n\t\t\t\tRules: dataplex.DatascanDataQualitySpecRuleArray{\n\t\t\t\t\t\u0026dataplex.DatascanDataQualitySpecRuleArgs{\n\t\t\t\t\t\tDimension: pulumi.String(\"VALIDITY\"),\n\t\t\t\t\t\tName: pulumi.String(\"rule1\"),\n\t\t\t\t\t\tDescription: pulumi.String(\"rule 1 for validity dimension\"),\n\t\t\t\t\t\tTableConditionExpectation: \u0026dataplex.DatascanDataQualitySpecRuleTableConditionExpectationArgs{\n\t\t\t\t\t\t\tSqlExpression: pulumi.String(\"COUNT(*) \u003e 0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataplex.Datascan;\nimport com.pulumi.gcp.dataplex.DatascanArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecTriggerArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecTriggerOnDemandArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataQualitySpecArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basicQuality = new Datascan(\"basicQuality\", DatascanArgs.builder()\n .location(\"us-central1\")\n .dataScanId(\"dataquality-basic\")\n .data(DatascanDataArgs.builder()\n .resource(\"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\")\n .build())\n .executionSpec(DatascanExecutionSpecArgs.builder()\n .trigger(DatascanExecutionSpecTriggerArgs.builder()\n .onDemand()\n .build())\n .build())\n .dataQualitySpec(DatascanDataQualitySpecArgs.builder()\n .rules(DatascanDataQualitySpecRuleArgs.builder()\n .dimension(\"VALIDITY\")\n .name(\"rule1\")\n .description(\"rule 1 for validity dimension\")\n .tableConditionExpectation(DatascanDataQualitySpecRuleTableConditionExpectationArgs.builder()\n .sqlExpression(\"COUNT(*) \u003e 0\")\n .build())\n .build())\n .build())\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicQuality:\n type: gcp:dataplex:Datascan\n name: basic_quality\n properties:\n location: us-central1\n dataScanId: dataquality-basic\n data:\n resource: //bigquery.googleapis.com/projects/bigquery-public-data/datasets/samples/tables/shakespeare\n executionSpec:\n trigger:\n onDemand: {}\n dataQualitySpec:\n rules:\n - dimension: VALIDITY\n name: rule1\n description: rule 1 for validity dimension\n tableConditionExpectation:\n sqlExpression: COUNT(*) \u003e 0\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataplex Datascan Full Quality\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst fullQuality = new gcp.dataplex.Datascan(\"full_quality\", {\n location: \"us-central1\",\n displayName: \"Full Datascan Quality\",\n dataScanId: \"dataquality-full\",\n description: \"Example resource - Full Datascan Quality\",\n labels: {\n author: \"billing\",\n },\n data: {\n resource: \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/austin_bikeshare/tables/bikeshare_stations\",\n },\n executionSpec: {\n trigger: {\n schedule: {\n cron: \"TZ=America/New_York 1 1 * * *\",\n },\n },\n field: \"modified_date\",\n },\n dataQualitySpec: {\n samplingPercent: 5,\n rowFilter: \"station_id \u003e 1000\",\n rules: [\n {\n column: \"address\",\n dimension: \"VALIDITY\",\n threshold: 0.99,\n nonNullExpectation: {},\n },\n {\n column: \"council_district\",\n dimension: \"VALIDITY\",\n ignoreNull: true,\n threshold: 0.9,\n rangeExpectation: {\n minValue: \"1\",\n maxValue: \"10\",\n strictMinEnabled: true,\n strictMaxEnabled: false,\n },\n },\n {\n column: \"power_type\",\n dimension: \"VALIDITY\",\n ignoreNull: false,\n regexExpectation: {\n regex: \".*solar.*\",\n },\n },\n {\n column: \"property_type\",\n dimension: \"VALIDITY\",\n ignoreNull: false,\n setExpectation: {\n values: [\n \"sidewalk\",\n \"parkland\",\n ],\n },\n },\n {\n column: \"address\",\n dimension: \"UNIQUENESS\",\n uniquenessExpectation: {},\n },\n {\n column: \"number_of_docks\",\n dimension: \"VALIDITY\",\n statisticRangeExpectation: {\n statistic: \"MEAN\",\n minValue: \"5\",\n maxValue: \"15\",\n strictMinEnabled: true,\n strictMaxEnabled: true,\n },\n },\n {\n column: \"footprint_length\",\n dimension: \"VALIDITY\",\n rowConditionExpectation: {\n sqlExpression: \"footprint_length \u003e 0 AND footprint_length \u003c= 10\",\n },\n },\n {\n dimension: \"VALIDITY\",\n tableConditionExpectation: {\n sqlExpression: \"COUNT(*) \u003e 0\",\n },\n },\n {\n dimension: \"VALIDITY\",\n sqlAssertion: {\n sqlStatement: \"select * from bigquery-public-data.austin_bikeshare.bikeshare_stations where station_id is null\",\n },\n },\n ],\n },\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfull_quality = gcp.dataplex.Datascan(\"full_quality\",\n location=\"us-central1\",\n display_name=\"Full Datascan Quality\",\n data_scan_id=\"dataquality-full\",\n description=\"Example resource - Full Datascan Quality\",\n labels={\n \"author\": \"billing\",\n },\n data={\n \"resource\": \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/austin_bikeshare/tables/bikeshare_stations\",\n },\n execution_spec={\n \"trigger\": {\n \"schedule\": {\n \"cron\": \"TZ=America/New_York 1 1 * * *\",\n },\n },\n \"field\": \"modified_date\",\n },\n data_quality_spec={\n \"sampling_percent\": 5,\n \"row_filter\": \"station_id \u003e 1000\",\n \"rules\": [\n {\n \"column\": \"address\",\n \"dimension\": \"VALIDITY\",\n \"threshold\": 0.99,\n \"non_null_expectation\": {},\n },\n {\n \"column\": \"council_district\",\n \"dimension\": \"VALIDITY\",\n \"ignore_null\": True,\n \"threshold\": 0.9,\n \"range_expectation\": {\n \"min_value\": \"1\",\n \"max_value\": \"10\",\n \"strict_min_enabled\": True,\n \"strict_max_enabled\": False,\n },\n },\n {\n \"column\": \"power_type\",\n \"dimension\": \"VALIDITY\",\n \"ignore_null\": False,\n \"regex_expectation\": {\n \"regex\": \".*solar.*\",\n },\n },\n {\n \"column\": \"property_type\",\n \"dimension\": \"VALIDITY\",\n \"ignore_null\": False,\n \"set_expectation\": {\n \"values\": [\n \"sidewalk\",\n \"parkland\",\n ],\n },\n },\n {\n \"column\": \"address\",\n \"dimension\": \"UNIQUENESS\",\n \"uniqueness_expectation\": {},\n },\n {\n \"column\": \"number_of_docks\",\n \"dimension\": \"VALIDITY\",\n \"statistic_range_expectation\": {\n \"statistic\": \"MEAN\",\n \"min_value\": \"5\",\n \"max_value\": \"15\",\n \"strict_min_enabled\": True,\n \"strict_max_enabled\": True,\n },\n },\n {\n \"column\": \"footprint_length\",\n \"dimension\": \"VALIDITY\",\n \"row_condition_expectation\": {\n \"sql_expression\": \"footprint_length \u003e 0 AND footprint_length \u003c= 10\",\n },\n },\n {\n \"dimension\": \"VALIDITY\",\n \"table_condition_expectation\": {\n \"sql_expression\": \"COUNT(*) \u003e 0\",\n },\n },\n {\n \"dimension\": \"VALIDITY\",\n \"sql_assertion\": {\n \"sql_statement\": \"select * from bigquery-public-data.austin_bikeshare.bikeshare_stations where station_id is null\",\n },\n },\n ],\n },\n project=\"my-project-name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var fullQuality = new Gcp.DataPlex.Datascan(\"full_quality\", new()\n {\n Location = \"us-central1\",\n DisplayName = \"Full Datascan Quality\",\n DataScanId = \"dataquality-full\",\n Description = \"Example resource - Full Datascan Quality\",\n Labels = \n {\n { \"author\", \"billing\" },\n },\n Data = new Gcp.DataPlex.Inputs.DatascanDataArgs\n {\n Resource = \"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/austin_bikeshare/tables/bikeshare_stations\",\n },\n ExecutionSpec = new Gcp.DataPlex.Inputs.DatascanExecutionSpecArgs\n {\n Trigger = new Gcp.DataPlex.Inputs.DatascanExecutionSpecTriggerArgs\n {\n Schedule = new Gcp.DataPlex.Inputs.DatascanExecutionSpecTriggerScheduleArgs\n {\n Cron = \"TZ=America/New_York 1 1 * * *\",\n },\n },\n Field = \"modified_date\",\n },\n DataQualitySpec = new Gcp.DataPlex.Inputs.DatascanDataQualitySpecArgs\n {\n SamplingPercent = 5,\n RowFilter = \"station_id \u003e 1000\",\n Rules = new[]\n {\n new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleArgs\n {\n Column = \"address\",\n Dimension = \"VALIDITY\",\n Threshold = 0.99,\n NonNullExpectation = null,\n },\n new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleArgs\n {\n Column = \"council_district\",\n Dimension = \"VALIDITY\",\n IgnoreNull = true,\n Threshold = 0.9,\n RangeExpectation = new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleRangeExpectationArgs\n {\n MinValue = \"1\",\n MaxValue = \"10\",\n StrictMinEnabled = true,\n StrictMaxEnabled = false,\n },\n },\n new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleArgs\n {\n Column = \"power_type\",\n Dimension = \"VALIDITY\",\n IgnoreNull = false,\n RegexExpectation = new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleRegexExpectationArgs\n {\n Regex = \".*solar.*\",\n },\n },\n new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleArgs\n {\n Column = \"property_type\",\n Dimension = \"VALIDITY\",\n IgnoreNull = false,\n SetExpectation = new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleSetExpectationArgs\n {\n Values = new[]\n {\n \"sidewalk\",\n \"parkland\",\n },\n },\n },\n new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleArgs\n {\n Column = \"address\",\n Dimension = \"UNIQUENESS\",\n UniquenessExpectation = null,\n },\n new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleArgs\n {\n Column = \"number_of_docks\",\n Dimension = \"VALIDITY\",\n StatisticRangeExpectation = new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleStatisticRangeExpectationArgs\n {\n Statistic = \"MEAN\",\n MinValue = \"5\",\n MaxValue = \"15\",\n StrictMinEnabled = true,\n StrictMaxEnabled = true,\n },\n },\n new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleArgs\n {\n Column = \"footprint_length\",\n Dimension = \"VALIDITY\",\n RowConditionExpectation = new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleRowConditionExpectationArgs\n {\n SqlExpression = \"footprint_length \u003e 0 AND footprint_length \u003c= 10\",\n },\n },\n new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleArgs\n {\n Dimension = \"VALIDITY\",\n TableConditionExpectation = new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleTableConditionExpectationArgs\n {\n SqlExpression = \"COUNT(*) \u003e 0\",\n },\n },\n new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleArgs\n {\n Dimension = \"VALIDITY\",\n SqlAssertion = new Gcp.DataPlex.Inputs.DatascanDataQualitySpecRuleSqlAssertionArgs\n {\n SqlStatement = \"select * from bigquery-public-data.austin_bikeshare.bikeshare_stations where station_id is null\",\n },\n },\n },\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataplex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataplex.NewDatascan(ctx, \"full_quality\", \u0026dataplex.DatascanArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"Full Datascan Quality\"),\n\t\t\tDataScanId: pulumi.String(\"dataquality-full\"),\n\t\t\tDescription: pulumi.String(\"Example resource - Full Datascan Quality\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"author\": pulumi.String(\"billing\"),\n\t\t\t},\n\t\t\tData: \u0026dataplex.DatascanDataArgs{\n\t\t\t\tResource: pulumi.String(\"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/austin_bikeshare/tables/bikeshare_stations\"),\n\t\t\t},\n\t\t\tExecutionSpec: \u0026dataplex.DatascanExecutionSpecArgs{\n\t\t\t\tTrigger: \u0026dataplex.DatascanExecutionSpecTriggerArgs{\n\t\t\t\t\tSchedule: \u0026dataplex.DatascanExecutionSpecTriggerScheduleArgs{\n\t\t\t\t\t\tCron: pulumi.String(\"TZ=America/New_York 1 1 * * *\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tField: pulumi.String(\"modified_date\"),\n\t\t\t},\n\t\t\tDataQualitySpec: \u0026dataplex.DatascanDataQualitySpecArgs{\n\t\t\t\tSamplingPercent: pulumi.Float64(5),\n\t\t\t\tRowFilter: pulumi.String(\"station_id \u003e 1000\"),\n\t\t\t\tRules: dataplex.DatascanDataQualitySpecRuleArray{\n\t\t\t\t\t\u0026dataplex.DatascanDataQualitySpecRuleArgs{\n\t\t\t\t\t\tColumn: pulumi.String(\"address\"),\n\t\t\t\t\t\tDimension: pulumi.String(\"VALIDITY\"),\n\t\t\t\t\t\tThreshold: pulumi.Float64(0.99),\n\t\t\t\t\t\tNonNullExpectation: \u0026dataplex.DatascanDataQualitySpecRuleNonNullExpectationArgs{},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataplex.DatascanDataQualitySpecRuleArgs{\n\t\t\t\t\t\tColumn: pulumi.String(\"council_district\"),\n\t\t\t\t\t\tDimension: pulumi.String(\"VALIDITY\"),\n\t\t\t\t\t\tIgnoreNull: pulumi.Bool(true),\n\t\t\t\t\t\tThreshold: pulumi.Float64(0.9),\n\t\t\t\t\t\tRangeExpectation: \u0026dataplex.DatascanDataQualitySpecRuleRangeExpectationArgs{\n\t\t\t\t\t\t\tMinValue: pulumi.String(\"1\"),\n\t\t\t\t\t\t\tMaxValue: pulumi.String(\"10\"),\n\t\t\t\t\t\t\tStrictMinEnabled: pulumi.Bool(true),\n\t\t\t\t\t\t\tStrictMaxEnabled: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataplex.DatascanDataQualitySpecRuleArgs{\n\t\t\t\t\t\tColumn: pulumi.String(\"power_type\"),\n\t\t\t\t\t\tDimension: pulumi.String(\"VALIDITY\"),\n\t\t\t\t\t\tIgnoreNull: pulumi.Bool(false),\n\t\t\t\t\t\tRegexExpectation: \u0026dataplex.DatascanDataQualitySpecRuleRegexExpectationArgs{\n\t\t\t\t\t\t\tRegex: pulumi.String(\".*solar.*\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataplex.DatascanDataQualitySpecRuleArgs{\n\t\t\t\t\t\tColumn: pulumi.String(\"property_type\"),\n\t\t\t\t\t\tDimension: pulumi.String(\"VALIDITY\"),\n\t\t\t\t\t\tIgnoreNull: pulumi.Bool(false),\n\t\t\t\t\t\tSetExpectation: \u0026dataplex.DatascanDataQualitySpecRuleSetExpectationArgs{\n\t\t\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"sidewalk\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"parkland\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataplex.DatascanDataQualitySpecRuleArgs{\n\t\t\t\t\t\tColumn: pulumi.String(\"address\"),\n\t\t\t\t\t\tDimension: pulumi.String(\"UNIQUENESS\"),\n\t\t\t\t\t\tUniquenessExpectation: \u0026dataplex.DatascanDataQualitySpecRuleUniquenessExpectationArgs{},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataplex.DatascanDataQualitySpecRuleArgs{\n\t\t\t\t\t\tColumn: pulumi.String(\"number_of_docks\"),\n\t\t\t\t\t\tDimension: pulumi.String(\"VALIDITY\"),\n\t\t\t\t\t\tStatisticRangeExpectation: \u0026dataplex.DatascanDataQualitySpecRuleStatisticRangeExpectationArgs{\n\t\t\t\t\t\t\tStatistic: pulumi.String(\"MEAN\"),\n\t\t\t\t\t\t\tMinValue: pulumi.String(\"5\"),\n\t\t\t\t\t\t\tMaxValue: pulumi.String(\"15\"),\n\t\t\t\t\t\t\tStrictMinEnabled: pulumi.Bool(true),\n\t\t\t\t\t\t\tStrictMaxEnabled: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataplex.DatascanDataQualitySpecRuleArgs{\n\t\t\t\t\t\tColumn: pulumi.String(\"footprint_length\"),\n\t\t\t\t\t\tDimension: pulumi.String(\"VALIDITY\"),\n\t\t\t\t\t\tRowConditionExpectation: \u0026dataplex.DatascanDataQualitySpecRuleRowConditionExpectationArgs{\n\t\t\t\t\t\t\tSqlExpression: pulumi.String(\"footprint_length \u003e 0 AND footprint_length \u003c= 10\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataplex.DatascanDataQualitySpecRuleArgs{\n\t\t\t\t\t\tDimension: pulumi.String(\"VALIDITY\"),\n\t\t\t\t\t\tTableConditionExpectation: \u0026dataplex.DatascanDataQualitySpecRuleTableConditionExpectationArgs{\n\t\t\t\t\t\t\tSqlExpression: pulumi.String(\"COUNT(*) \u003e 0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dataplex.DatascanDataQualitySpecRuleArgs{\n\t\t\t\t\t\tDimension: pulumi.String(\"VALIDITY\"),\n\t\t\t\t\t\tSqlAssertion: \u0026dataplex.DatascanDataQualitySpecRuleSqlAssertionArgs{\n\t\t\t\t\t\t\tSqlStatement: pulumi.String(\"select * from bigquery-public-data.austin_bikeshare.bikeshare_stations where station_id is null\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataplex.Datascan;\nimport com.pulumi.gcp.dataplex.DatascanArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecTriggerArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanExecutionSpecTriggerScheduleArgs;\nimport com.pulumi.gcp.dataplex.inputs.DatascanDataQualitySpecArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var fullQuality = new Datascan(\"fullQuality\", DatascanArgs.builder()\n .location(\"us-central1\")\n .displayName(\"Full Datascan Quality\")\n .dataScanId(\"dataquality-full\")\n .description(\"Example resource - Full Datascan Quality\")\n .labels(Map.of(\"author\", \"billing\"))\n .data(DatascanDataArgs.builder()\n .resource(\"//bigquery.googleapis.com/projects/bigquery-public-data/datasets/austin_bikeshare/tables/bikeshare_stations\")\n .build())\n .executionSpec(DatascanExecutionSpecArgs.builder()\n .trigger(DatascanExecutionSpecTriggerArgs.builder()\n .schedule(DatascanExecutionSpecTriggerScheduleArgs.builder()\n .cron(\"TZ=America/New_York 1 1 * * *\")\n .build())\n .build())\n .field(\"modified_date\")\n .build())\n .dataQualitySpec(DatascanDataQualitySpecArgs.builder()\n .samplingPercent(5)\n .rowFilter(\"station_id \u003e 1000\")\n .rules( \n DatascanDataQualitySpecRuleArgs.builder()\n .column(\"address\")\n .dimension(\"VALIDITY\")\n .threshold(0.99)\n .nonNullExpectation()\n .build(),\n DatascanDataQualitySpecRuleArgs.builder()\n .column(\"council_district\")\n .dimension(\"VALIDITY\")\n .ignoreNull(true)\n .threshold(0.9)\n .rangeExpectation(DatascanDataQualitySpecRuleRangeExpectationArgs.builder()\n .minValue(1)\n .maxValue(10)\n .strictMinEnabled(true)\n .strictMaxEnabled(false)\n .build())\n .build(),\n DatascanDataQualitySpecRuleArgs.builder()\n .column(\"power_type\")\n .dimension(\"VALIDITY\")\n .ignoreNull(false)\n .regexExpectation(DatascanDataQualitySpecRuleRegexExpectationArgs.builder()\n .regex(\".*solar.*\")\n .build())\n .build(),\n DatascanDataQualitySpecRuleArgs.builder()\n .column(\"property_type\")\n .dimension(\"VALIDITY\")\n .ignoreNull(false)\n .setExpectation(DatascanDataQualitySpecRuleSetExpectationArgs.builder()\n .values( \n \"sidewalk\",\n \"parkland\")\n .build())\n .build(),\n DatascanDataQualitySpecRuleArgs.builder()\n .column(\"address\")\n .dimension(\"UNIQUENESS\")\n .uniquenessExpectation()\n .build(),\n DatascanDataQualitySpecRuleArgs.builder()\n .column(\"number_of_docks\")\n .dimension(\"VALIDITY\")\n .statisticRangeExpectation(DatascanDataQualitySpecRuleStatisticRangeExpectationArgs.builder()\n .statistic(\"MEAN\")\n .minValue(5)\n .maxValue(15)\n .strictMinEnabled(true)\n .strictMaxEnabled(true)\n .build())\n .build(),\n DatascanDataQualitySpecRuleArgs.builder()\n .column(\"footprint_length\")\n .dimension(\"VALIDITY\")\n .rowConditionExpectation(DatascanDataQualitySpecRuleRowConditionExpectationArgs.builder()\n .sqlExpression(\"footprint_length \u003e 0 AND footprint_length \u003c= 10\")\n .build())\n .build(),\n DatascanDataQualitySpecRuleArgs.builder()\n .dimension(\"VALIDITY\")\n .tableConditionExpectation(DatascanDataQualitySpecRuleTableConditionExpectationArgs.builder()\n .sqlExpression(\"COUNT(*) \u003e 0\")\n .build())\n .build(),\n DatascanDataQualitySpecRuleArgs.builder()\n .dimension(\"VALIDITY\")\n .sqlAssertion(DatascanDataQualitySpecRuleSqlAssertionArgs.builder()\n .sqlStatement(\"select * from bigquery-public-data.austin_bikeshare.bikeshare_stations where station_id is null\")\n .build())\n .build())\n .build())\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n fullQuality:\n type: gcp:dataplex:Datascan\n name: full_quality\n properties:\n location: us-central1\n displayName: Full Datascan Quality\n dataScanId: dataquality-full\n description: Example resource - Full Datascan Quality\n labels:\n author: billing\n data:\n resource: //bigquery.googleapis.com/projects/bigquery-public-data/datasets/austin_bikeshare/tables/bikeshare_stations\n executionSpec:\n trigger:\n schedule:\n cron: TZ=America/New_York 1 1 * * *\n field: modified_date\n dataQualitySpec:\n samplingPercent: 5\n rowFilter: station_id \u003e 1000\n rules:\n - column: address\n dimension: VALIDITY\n threshold: 0.99\n nonNullExpectation: {}\n - column: council_district\n dimension: VALIDITY\n ignoreNull: true\n threshold: 0.9\n rangeExpectation:\n minValue: 1\n maxValue: 10\n strictMinEnabled: true\n strictMaxEnabled: false\n - column: power_type\n dimension: VALIDITY\n ignoreNull: false\n regexExpectation:\n regex: .*solar.*\n - column: property_type\n dimension: VALIDITY\n ignoreNull: false\n setExpectation:\n values:\n - sidewalk\n - parkland\n - column: address\n dimension: UNIQUENESS\n uniquenessExpectation: {}\n - column: number_of_docks\n dimension: VALIDITY\n statisticRangeExpectation:\n statistic: MEAN\n minValue: 5\n maxValue: 15\n strictMinEnabled: true\n strictMaxEnabled: true\n - column: footprint_length\n dimension: VALIDITY\n rowConditionExpectation:\n sqlExpression: footprint_length \u003e 0 AND footprint_length \u003c= 10\n - dimension: VALIDITY\n tableConditionExpectation:\n sqlExpression: COUNT(*) \u003e 0\n - dimension: VALIDITY\n sqlAssertion:\n sqlStatement: select * from bigquery-public-data.austin_bikeshare.bikeshare_stations where station_id is null\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDatascan can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/dataScans/{{data_scan_id}}`\n\n* `{{project}}/{{location}}/{{data_scan_id}}`\n\n* `{{location}}/{{data_scan_id}}`\n\n* `{{data_scan_id}}`\n\nWhen using the `pulumi import` command, Datascan can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataplex/datascan:Datascan default projects/{{project}}/locations/{{location}}/dataScans/{{data_scan_id}}\n```\n\n```sh\n$ pulumi import gcp:dataplex/datascan:Datascan default {{project}}/{{location}}/{{data_scan_id}}\n```\n\n```sh\n$ pulumi import gcp:dataplex/datascan:Datascan default {{location}}/{{data_scan_id}}\n```\n\n```sh\n$ pulumi import gcp:dataplex/datascan:Datascan default {{data_scan_id}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -184542,7 +184542,7 @@ } }, "gcp:dataplex/task:Task": { - "description": "A Dataplex task represents the work that you want Dataplex to do on a schedule. It encapsulates code, parameters, and the schedule.\n\n\nTo get more information about Task, see:\n\n* [API documentation](https://cloud.google.com/dataplex/docs/reference/rest/v1/projects.locations.lakes.tasks)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dataplex/docs)\n\n## Example Usage\n\n### Dataplex Task Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example = new gcp.dataplex.Lake(\"example\", {\n name: \"tf-test-lake_91042\",\n location: \"us-central1\",\n project: \"my-project-name\",\n});\nconst exampleTask = new gcp.dataplex.Task(\"example\", {\n taskId: \"tf-test-task_72490\",\n location: \"us-central1\",\n lake: example.name,\n description: \"Test Task Basic\",\n displayName: \"task-basic\",\n labels: {\n count: \"3\",\n },\n triggerSpec: {\n type: \"RECURRING\",\n disabled: false,\n maxRetries: 3,\n startTime: \"2023-10-02T15:01:23Z\",\n schedule: \"1 * * * *\",\n },\n executionSpec: {\n serviceAccount: project.then(project =\u003e `${project.number}-compute@developer.gserviceaccount.com`),\n project: \"my-project-name\",\n maxJobExecutionLifetime: \"100s\",\n kmsKey: \"234jn2kjn42k3n423\",\n },\n spark: {\n pythonScriptFile: \"gs://dataproc-examples/pyspark/hello-world/hello-world.py\",\n },\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample = gcp.dataplex.Lake(\"example\",\n name=\"tf-test-lake_91042\",\n location=\"us-central1\",\n project=\"my-project-name\")\nexample_task = gcp.dataplex.Task(\"example\",\n task_id=\"tf-test-task_72490\",\n location=\"us-central1\",\n lake=example.name,\n description=\"Test Task Basic\",\n display_name=\"task-basic\",\n labels={\n \"count\": \"3\",\n },\n trigger_spec={\n \"type\": \"RECURRING\",\n \"disabled\": False,\n \"max_retries\": 3,\n \"start_time\": \"2023-10-02T15:01:23Z\",\n \"schedule\": \"1 * * * *\",\n },\n execution_spec={\n \"service_account\": f\"{project.number}-compute@developer.gserviceaccount.com\",\n \"project\": \"my-project-name\",\n \"max_job_execution_lifetime\": \"100s\",\n \"kms_key\": \"234jn2kjn42k3n423\",\n },\n spark={\n \"python_script_file\": \"gs://dataproc-examples/pyspark/hello-world/hello-world.py\",\n },\n project=\"my-project-name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var example = new Gcp.DataPlex.Lake(\"example\", new()\n {\n Name = \"tf-test-lake_91042\",\n Location = \"us-central1\",\n Project = \"my-project-name\",\n });\n\n var exampleTask = new Gcp.DataPlex.Task(\"example\", new()\n {\n TaskId = \"tf-test-task_72490\",\n Location = \"us-central1\",\n Lake = example.Name,\n Description = \"Test Task Basic\",\n DisplayName = \"task-basic\",\n Labels = \n {\n { \"count\", \"3\" },\n },\n TriggerSpec = new Gcp.DataPlex.Inputs.TaskTriggerSpecArgs\n {\n Type = \"RECURRING\",\n Disabled = false,\n MaxRetries = 3,\n StartTime = \"2023-10-02T15:01:23Z\",\n Schedule = \"1 * * * *\",\n },\n ExecutionSpec = new Gcp.DataPlex.Inputs.TaskExecutionSpecArgs\n {\n ServiceAccount = $\"{project.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n Project = \"my-project-name\",\n MaxJobExecutionLifetime = \"100s\",\n KmsKey = \"234jn2kjn42k3n423\",\n },\n Spark = new Gcp.DataPlex.Inputs.TaskSparkArgs\n {\n PythonScriptFile = \"gs://dataproc-examples/pyspark/hello-world/hello-world.py\",\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataplex\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := dataplex.NewLake(ctx, \"example\", \u0026dataplex.LakeArgs{\n\t\t\tName: pulumi.String(\"tf-test-lake_91042\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataplex.NewTask(ctx, \"example\", \u0026dataplex.TaskArgs{\n\t\t\tTaskId: pulumi.String(\"tf-test-task_72490\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLake: example.Name,\n\t\t\tDescription: pulumi.String(\"Test Task Basic\"),\n\t\t\tDisplayName: pulumi.String(\"task-basic\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"count\": pulumi.String(\"3\"),\n\t\t\t},\n\t\t\tTriggerSpec: \u0026dataplex.TaskTriggerSpecArgs{\n\t\t\t\tType: pulumi.String(\"RECURRING\"),\n\t\t\t\tDisabled: pulumi.Bool(false),\n\t\t\t\tMaxRetries: pulumi.Int(3),\n\t\t\t\tStartTime: pulumi.String(\"2023-10-02T15:01:23Z\"),\n\t\t\t\tSchedule: pulumi.String(\"1 * * * *\"),\n\t\t\t},\n\t\t\tExecutionSpec: \u0026dataplex.TaskExecutionSpecArgs{\n\t\t\t\tServiceAccount: pulumi.Sprintf(\"%v-compute@developer.gserviceaccount.com\", project.Number),\n\t\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\t\tMaxJobExecutionLifetime: pulumi.String(\"100s\"),\n\t\t\t\tKmsKey: pulumi.String(\"234jn2kjn42k3n423\"),\n\t\t\t},\n\t\t\tSpark: \u0026dataplex.TaskSparkArgs{\n\t\t\t\tPythonScriptFile: pulumi.String(\"gs://dataproc-examples/pyspark/hello-world/hello-world.py\"),\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.dataplex.Lake;\nimport com.pulumi.gcp.dataplex.LakeArgs;\nimport com.pulumi.gcp.dataplex.Task;\nimport com.pulumi.gcp.dataplex.TaskArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskTriggerSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskExecutionSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskSparkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var example = new Lake(\"example\", LakeArgs.builder()\n .name(\"tf-test-lake_91042\")\n .location(\"us-central1\")\n .project(\"my-project-name\")\n .build());\n\n var exampleTask = new Task(\"exampleTask\", TaskArgs.builder()\n .taskId(\"tf-test-task_72490\")\n .location(\"us-central1\")\n .lake(example.name())\n .description(\"Test Task Basic\")\n .displayName(\"task-basic\")\n .labels(Map.of(\"count\", \"3\"))\n .triggerSpec(TaskTriggerSpecArgs.builder()\n .type(\"RECURRING\")\n .disabled(false)\n .maxRetries(3)\n .startTime(\"2023-10-02T15:01:23Z\")\n .schedule(\"1 * * * *\")\n .build())\n .executionSpec(TaskExecutionSpecArgs.builder()\n .serviceAccount(String.format(\"%s-compute@developer.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .project(\"my-project-name\")\n .maxJobExecutionLifetime(\"100s\")\n .kmsKey(\"234jn2kjn42k3n423\")\n .build())\n .spark(TaskSparkArgs.builder()\n .pythonScriptFile(\"gs://dataproc-examples/pyspark/hello-world/hello-world.py\")\n .build())\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:dataplex:Lake\n properties:\n name: tf-test-lake_91042\n location: us-central1\n project: my-project-name\n exampleTask:\n type: gcp:dataplex:Task\n name: example\n properties:\n taskId: tf-test-task_72490\n location: us-central1\n lake: ${example.name}\n description: Test Task Basic\n displayName: task-basic\n labels:\n count: '3'\n triggerSpec:\n type: RECURRING\n disabled: false\n maxRetries: 3\n startTime: 2023-10-02T15:01:23Z\n schedule: 1 * * * *\n executionSpec:\n serviceAccount: ${project.number}-compute@developer.gserviceaccount.com\n project: my-project-name\n maxJobExecutionLifetime: 100s\n kmsKey: 234jn2kjn42k3n423\n spark:\n pythonScriptFile: gs://dataproc-examples/pyspark/hello-world/hello-world.py\n project: my-project-name\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataplex Task Spark\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// VPC network\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"tf-test-workstation-cluster_89605\",\n autoCreateSubnetworks: true,\n});\nconst project = gcp.organizations.getProject({});\nconst exampleSpark = new gcp.dataplex.Lake(\"example_spark\", {\n name: \"tf-test-lake_56730\",\n location: \"us-central1\",\n project: \"my-project-name\",\n});\nconst exampleSparkTask = new gcp.dataplex.Task(\"example_spark\", {\n taskId: \"tf-test-task_95154\",\n location: \"us-central1\",\n lake: exampleSpark.name,\n triggerSpec: {\n type: \"ON_DEMAND\",\n },\n description: \"task-spark-terraform\",\n executionSpec: {\n serviceAccount: project.then(project =\u003e `${project.number}-compute@developer.gserviceaccount.com`),\n args: {\n TASK_ARGS: \"--output_location,gs://spark-job/task-result, --output_format, json\",\n },\n },\n spark: {\n infrastructureSpec: {\n batch: {\n executorsCount: 2,\n maxExecutorsCount: 100,\n },\n containerImage: {\n image: \"test-image\",\n javaJars: [\"test-java-jars.jar\"],\n pythonPackages: [\"gs://bucket-name/my/path/to/lib.tar.gz\"],\n properties: {\n name: \"wrench\",\n mass: \"1.3kg\",\n count: \"3\",\n },\n },\n vpcNetwork: {\n networkTags: [\"test-network-tag\"],\n subNetwork: _default.id,\n },\n },\n fileUris: [\"gs://terrafrom-test/test.csv\"],\n archiveUris: [\"gs://terraform-test/test.csv\"],\n sqlScript: \"show databases\",\n },\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# VPC network\ndefault = gcp.compute.Network(\"default\",\n name=\"tf-test-workstation-cluster_89605\",\n auto_create_subnetworks=True)\nproject = gcp.organizations.get_project()\nexample_spark = gcp.dataplex.Lake(\"example_spark\",\n name=\"tf-test-lake_56730\",\n location=\"us-central1\",\n project=\"my-project-name\")\nexample_spark_task = gcp.dataplex.Task(\"example_spark\",\n task_id=\"tf-test-task_95154\",\n location=\"us-central1\",\n lake=example_spark.name,\n trigger_spec={\n \"type\": \"ON_DEMAND\",\n },\n description=\"task-spark-terraform\",\n execution_spec={\n \"service_account\": f\"{project.number}-compute@developer.gserviceaccount.com\",\n \"args\": {\n \"tas_k__args\": \"--output_location,gs://spark-job/task-result, --output_format, json\",\n },\n },\n spark={\n \"infrastructure_spec\": {\n \"batch\": {\n \"executors_count\": 2,\n \"max_executors_count\": 100,\n },\n \"container_image\": {\n \"image\": \"test-image\",\n \"java_jars\": [\"test-java-jars.jar\"],\n \"python_packages\": [\"gs://bucket-name/my/path/to/lib.tar.gz\"],\n \"properties\": {\n \"name\": \"wrench\",\n \"mass\": \"1.3kg\",\n \"count\": \"3\",\n },\n },\n \"vpc_network\": {\n \"network_tags\": [\"test-network-tag\"],\n \"sub_network\": default.id,\n },\n },\n \"file_uris\": [\"gs://terrafrom-test/test.csv\"],\n \"archive_uris\": [\"gs://terraform-test/test.csv\"],\n \"sql_script\": \"show databases\",\n },\n project=\"my-project-name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // VPC network\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"tf-test-workstation-cluster_89605\",\n AutoCreateSubnetworks = true,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var exampleSpark = new Gcp.DataPlex.Lake(\"example_spark\", new()\n {\n Name = \"tf-test-lake_56730\",\n Location = \"us-central1\",\n Project = \"my-project-name\",\n });\n\n var exampleSparkTask = new Gcp.DataPlex.Task(\"example_spark\", new()\n {\n TaskId = \"tf-test-task_95154\",\n Location = \"us-central1\",\n Lake = exampleSpark.Name,\n TriggerSpec = new Gcp.DataPlex.Inputs.TaskTriggerSpecArgs\n {\n Type = \"ON_DEMAND\",\n },\n Description = \"task-spark-terraform\",\n ExecutionSpec = new Gcp.DataPlex.Inputs.TaskExecutionSpecArgs\n {\n ServiceAccount = $\"{project.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n Args = \n {\n { \"TASK_ARGS\", \"--output_location,gs://spark-job/task-result, --output_format, json\" },\n },\n },\n Spark = new Gcp.DataPlex.Inputs.TaskSparkArgs\n {\n InfrastructureSpec = new Gcp.DataPlex.Inputs.TaskSparkInfrastructureSpecArgs\n {\n Batch = new Gcp.DataPlex.Inputs.TaskSparkInfrastructureSpecBatchArgs\n {\n ExecutorsCount = 2,\n MaxExecutorsCount = 100,\n },\n ContainerImage = new Gcp.DataPlex.Inputs.TaskSparkInfrastructureSpecContainerImageArgs\n {\n Image = \"test-image\",\n JavaJars = new[]\n {\n \"test-java-jars.jar\",\n },\n PythonPackages = new[]\n {\n \"gs://bucket-name/my/path/to/lib.tar.gz\",\n },\n Properties = \n {\n { \"name\", \"wrench\" },\n { \"mass\", \"1.3kg\" },\n { \"count\", \"3\" },\n },\n },\n VpcNetwork = new Gcp.DataPlex.Inputs.TaskSparkInfrastructureSpecVpcNetworkArgs\n {\n NetworkTags = new[]\n {\n \"test-network-tag\",\n },\n SubNetwork = @default.Id,\n },\n },\n FileUris = new[]\n {\n \"gs://terrafrom-test/test.csv\",\n },\n ArchiveUris = new[]\n {\n \"gs://terraform-test/test.csv\",\n },\n SqlScript = \"show databases\",\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataplex\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// VPC network\n\t\t_, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"tf-test-workstation-cluster_89605\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleSpark, err := dataplex.NewLake(ctx, \"example_spark\", \u0026dataplex.LakeArgs{\n\t\t\tName: pulumi.String(\"tf-test-lake_56730\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataplex.NewTask(ctx, \"example_spark\", \u0026dataplex.TaskArgs{\n\t\t\tTaskId: pulumi.String(\"tf-test-task_95154\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLake: exampleSpark.Name,\n\t\t\tTriggerSpec: \u0026dataplex.TaskTriggerSpecArgs{\n\t\t\t\tType: pulumi.String(\"ON_DEMAND\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"task-spark-terraform\"),\n\t\t\tExecutionSpec: \u0026dataplex.TaskExecutionSpecArgs{\n\t\t\t\tServiceAccount: pulumi.Sprintf(\"%v-compute@developer.gserviceaccount.com\", project.Number),\n\t\t\t\tArgs: pulumi.StringMap{\n\t\t\t\t\t\"TASK_ARGS\": pulumi.String(\"--output_location,gs://spark-job/task-result, --output_format, json\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSpark: \u0026dataplex.TaskSparkArgs{\n\t\t\t\tInfrastructureSpec: \u0026dataplex.TaskSparkInfrastructureSpecArgs{\n\t\t\t\t\tBatch: \u0026dataplex.TaskSparkInfrastructureSpecBatchArgs{\n\t\t\t\t\t\tExecutorsCount: pulumi.Int(2),\n\t\t\t\t\t\tMaxExecutorsCount: pulumi.Int(100),\n\t\t\t\t\t},\n\t\t\t\t\tContainerImage: \u0026dataplex.TaskSparkInfrastructureSpecContainerImageArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"test-image\"),\n\t\t\t\t\t\tJavaJars: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"test-java-jars.jar\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPythonPackages: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"gs://bucket-name/my/path/to/lib.tar.gz\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\t\t\"name\": pulumi.String(\"wrench\"),\n\t\t\t\t\t\t\t\"mass\": pulumi.String(\"1.3kg\"),\n\t\t\t\t\t\t\t\"count\": pulumi.String(\"3\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tVpcNetwork: \u0026dataplex.TaskSparkInfrastructureSpecVpcNetworkArgs{\n\t\t\t\t\t\tNetworkTags: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"test-network-tag\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSubNetwork: _default.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tFileUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://terrafrom-test/test.csv\"),\n\t\t\t\t},\n\t\t\t\tArchiveUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://terraform-test/test.csv\"),\n\t\t\t\t},\n\t\t\t\tSqlScript: pulumi.String(\"show databases\"),\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.dataplex.Lake;\nimport com.pulumi.gcp.dataplex.LakeArgs;\nimport com.pulumi.gcp.dataplex.Task;\nimport com.pulumi.gcp.dataplex.TaskArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskTriggerSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskExecutionSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskSparkArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskSparkInfrastructureSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskSparkInfrastructureSpecBatchArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskSparkInfrastructureSpecContainerImageArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskSparkInfrastructureSpecVpcNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // VPC network\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"tf-test-workstation-cluster_89605\")\n .autoCreateSubnetworks(true)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var exampleSpark = new Lake(\"exampleSpark\", LakeArgs.builder()\n .name(\"tf-test-lake_56730\")\n .location(\"us-central1\")\n .project(\"my-project-name\")\n .build());\n\n var exampleSparkTask = new Task(\"exampleSparkTask\", TaskArgs.builder()\n .taskId(\"tf-test-task_95154\")\n .location(\"us-central1\")\n .lake(exampleSpark.name())\n .triggerSpec(TaskTriggerSpecArgs.builder()\n .type(\"ON_DEMAND\")\n .build())\n .description(\"task-spark-terraform\")\n .executionSpec(TaskExecutionSpecArgs.builder()\n .serviceAccount(String.format(\"%s-compute@developer.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .args(Map.of(\"TASK_ARGS\", \"--output_location,gs://spark-job/task-result, --output_format, json\"))\n .build())\n .spark(TaskSparkArgs.builder()\n .infrastructureSpec(TaskSparkInfrastructureSpecArgs.builder()\n .batch(TaskSparkInfrastructureSpecBatchArgs.builder()\n .executorsCount(2)\n .maxExecutorsCount(100)\n .build())\n .containerImage(TaskSparkInfrastructureSpecContainerImageArgs.builder()\n .image(\"test-image\")\n .javaJars(\"test-java-jars.jar\")\n .pythonPackages(\"gs://bucket-name/my/path/to/lib.tar.gz\")\n .properties(Map.ofEntries(\n Map.entry(\"name\", \"wrench\"),\n Map.entry(\"mass\", \"1.3kg\"),\n Map.entry(\"count\", \"3\")\n ))\n .build())\n .vpcNetwork(TaskSparkInfrastructureSpecVpcNetworkArgs.builder()\n .networkTags(\"test-network-tag\")\n .subNetwork(default_.id())\n .build())\n .build())\n .fileUris(\"gs://terrafrom-test/test.csv\")\n .archiveUris(\"gs://terraform-test/test.csv\")\n .sqlScript(\"show databases\")\n .build())\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # VPC network\n default:\n type: gcp:compute:Network\n properties:\n name: tf-test-workstation-cluster_89605\n autoCreateSubnetworks: true\n exampleSpark:\n type: gcp:dataplex:Lake\n name: example_spark\n properties:\n name: tf-test-lake_56730\n location: us-central1\n project: my-project-name\n exampleSparkTask:\n type: gcp:dataplex:Task\n name: example_spark\n properties:\n taskId: tf-test-task_95154\n location: us-central1\n lake: ${exampleSpark.name}\n triggerSpec:\n type: ON_DEMAND\n description: task-spark-terraform\n executionSpec:\n serviceAccount: ${project.number}-compute@developer.gserviceaccount.com\n args:\n TASK_ARGS: --output_location,gs://spark-job/task-result, --output_format, json\n spark:\n infrastructureSpec:\n batch:\n executorsCount: 2\n maxExecutorsCount: 100\n containerImage:\n image: test-image\n javaJars:\n - test-java-jars.jar\n pythonPackages:\n - gs://bucket-name/my/path/to/lib.tar.gz\n properties:\n name: wrench\n mass: 1.3kg\n count: '3'\n vpcNetwork:\n networkTags:\n - test-network-tag\n subNetwork: ${default.id}\n fileUris:\n - gs://terrafrom-test/test.csv\n archiveUris:\n - gs://terraform-test/test.csv\n sqlScript: show databases\n project: my-project-name\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataplex Task Notebook\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// VPC network\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"tf-test-workstation-cluster_64336\",\n autoCreateSubnetworks: true,\n});\nconst project = gcp.organizations.getProject({});\nconst exampleNotebook = new gcp.dataplex.Lake(\"example_notebook\", {\n name: \"tf-test-lake_34962\",\n location: \"us-central1\",\n project: \"my-project-name\",\n});\nconst exampleNotebookTask = new gcp.dataplex.Task(\"example_notebook\", {\n taskId: \"tf-test-task_74000\",\n location: \"us-central1\",\n lake: exampleNotebook.name,\n triggerSpec: {\n type: \"RECURRING\",\n schedule: \"1 * * * *\",\n },\n executionSpec: {\n serviceAccount: project.then(project =\u003e `${project.number}-compute@developer.gserviceaccount.com`),\n args: {\n TASK_ARGS: \"--output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json\",\n },\n },\n notebook: {\n notebook: \"gs://terraform-test/test-notebook.ipynb\",\n infrastructureSpec: {\n batch: {\n executorsCount: 2,\n maxExecutorsCount: 100,\n },\n containerImage: {\n image: \"test-image\",\n javaJars: [\"test-java-jars.jar\"],\n pythonPackages: [\"gs://bucket-name/my/path/to/lib.tar.gz\"],\n properties: {\n name: \"wrench\",\n mass: \"1.3kg\",\n count: \"3\",\n },\n },\n vpcNetwork: {\n networkTags: [\"test-network-tag\"],\n network: _default.id,\n },\n },\n fileUris: [\"gs://terraform-test/test.csv\"],\n archiveUris: [\"gs://terraform-test/test.csv\"],\n },\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# VPC network\ndefault = gcp.compute.Network(\"default\",\n name=\"tf-test-workstation-cluster_64336\",\n auto_create_subnetworks=True)\nproject = gcp.organizations.get_project()\nexample_notebook = gcp.dataplex.Lake(\"example_notebook\",\n name=\"tf-test-lake_34962\",\n location=\"us-central1\",\n project=\"my-project-name\")\nexample_notebook_task = gcp.dataplex.Task(\"example_notebook\",\n task_id=\"tf-test-task_74000\",\n location=\"us-central1\",\n lake=example_notebook.name,\n trigger_spec={\n \"type\": \"RECURRING\",\n \"schedule\": \"1 * * * *\",\n },\n execution_spec={\n \"service_account\": f\"{project.number}-compute@developer.gserviceaccount.com\",\n \"args\": {\n \"tas_k__args\": \"--output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json\",\n },\n },\n notebook={\n \"notebook\": \"gs://terraform-test/test-notebook.ipynb\",\n \"infrastructure_spec\": {\n \"batch\": {\n \"executors_count\": 2,\n \"max_executors_count\": 100,\n },\n \"container_image\": {\n \"image\": \"test-image\",\n \"java_jars\": [\"test-java-jars.jar\"],\n \"python_packages\": [\"gs://bucket-name/my/path/to/lib.tar.gz\"],\n \"properties\": {\n \"name\": \"wrench\",\n \"mass\": \"1.3kg\",\n \"count\": \"3\",\n },\n },\n \"vpc_network\": {\n \"network_tags\": [\"test-network-tag\"],\n \"network\": default.id,\n },\n },\n \"file_uris\": [\"gs://terraform-test/test.csv\"],\n \"archive_uris\": [\"gs://terraform-test/test.csv\"],\n },\n project=\"my-project-name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // VPC network\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"tf-test-workstation-cluster_64336\",\n AutoCreateSubnetworks = true,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var exampleNotebook = new Gcp.DataPlex.Lake(\"example_notebook\", new()\n {\n Name = \"tf-test-lake_34962\",\n Location = \"us-central1\",\n Project = \"my-project-name\",\n });\n\n var exampleNotebookTask = new Gcp.DataPlex.Task(\"example_notebook\", new()\n {\n TaskId = \"tf-test-task_74000\",\n Location = \"us-central1\",\n Lake = exampleNotebook.Name,\n TriggerSpec = new Gcp.DataPlex.Inputs.TaskTriggerSpecArgs\n {\n Type = \"RECURRING\",\n Schedule = \"1 * * * *\",\n },\n ExecutionSpec = new Gcp.DataPlex.Inputs.TaskExecutionSpecArgs\n {\n ServiceAccount = $\"{project.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n Args = \n {\n { \"TASK_ARGS\", \"--output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json\" },\n },\n },\n Notebook = new Gcp.DataPlex.Inputs.TaskNotebookArgs\n {\n Notebook = \"gs://terraform-test/test-notebook.ipynb\",\n InfrastructureSpec = new Gcp.DataPlex.Inputs.TaskNotebookInfrastructureSpecArgs\n {\n Batch = new Gcp.DataPlex.Inputs.TaskNotebookInfrastructureSpecBatchArgs\n {\n ExecutorsCount = 2,\n MaxExecutorsCount = 100,\n },\n ContainerImage = new Gcp.DataPlex.Inputs.TaskNotebookInfrastructureSpecContainerImageArgs\n {\n Image = \"test-image\",\n JavaJars = new[]\n {\n \"test-java-jars.jar\",\n },\n PythonPackages = new[]\n {\n \"gs://bucket-name/my/path/to/lib.tar.gz\",\n },\n Properties = \n {\n { \"name\", \"wrench\" },\n { \"mass\", \"1.3kg\" },\n { \"count\", \"3\" },\n },\n },\n VpcNetwork = new Gcp.DataPlex.Inputs.TaskNotebookInfrastructureSpecVpcNetworkArgs\n {\n NetworkTags = new[]\n {\n \"test-network-tag\",\n },\n Network = @default.Id,\n },\n },\n FileUris = new[]\n {\n \"gs://terraform-test/test.csv\",\n },\n ArchiveUris = new[]\n {\n \"gs://terraform-test/test.csv\",\n },\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataplex\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// VPC network\n\t\t_, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"tf-test-workstation-cluster_64336\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleNotebook, err := dataplex.NewLake(ctx, \"example_notebook\", \u0026dataplex.LakeArgs{\n\t\t\tName: pulumi.String(\"tf-test-lake_34962\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataplex.NewTask(ctx, \"example_notebook\", \u0026dataplex.TaskArgs{\n\t\t\tTaskId: pulumi.String(\"tf-test-task_74000\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLake: exampleNotebook.Name,\n\t\t\tTriggerSpec: \u0026dataplex.TaskTriggerSpecArgs{\n\t\t\t\tType: pulumi.String(\"RECURRING\"),\n\t\t\t\tSchedule: pulumi.String(\"1 * * * *\"),\n\t\t\t},\n\t\t\tExecutionSpec: \u0026dataplex.TaskExecutionSpecArgs{\n\t\t\t\tServiceAccount: pulumi.Sprintf(\"%v-compute@developer.gserviceaccount.com\", project.Number),\n\t\t\t\tArgs: pulumi.StringMap{\n\t\t\t\t\t\"TASK_ARGS\": pulumi.String(\"--output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNotebook: \u0026dataplex.TaskNotebookArgs{\n\t\t\t\tNotebook: pulumi.String(\"gs://terraform-test/test-notebook.ipynb\"),\n\t\t\t\tInfrastructureSpec: \u0026dataplex.TaskNotebookInfrastructureSpecArgs{\n\t\t\t\t\tBatch: \u0026dataplex.TaskNotebookInfrastructureSpecBatchArgs{\n\t\t\t\t\t\tExecutorsCount: pulumi.Int(2),\n\t\t\t\t\t\tMaxExecutorsCount: pulumi.Int(100),\n\t\t\t\t\t},\n\t\t\t\t\tContainerImage: \u0026dataplex.TaskNotebookInfrastructureSpecContainerImageArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"test-image\"),\n\t\t\t\t\t\tJavaJars: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"test-java-jars.jar\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPythonPackages: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"gs://bucket-name/my/path/to/lib.tar.gz\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\t\t\"name\": pulumi.String(\"wrench\"),\n\t\t\t\t\t\t\t\"mass\": pulumi.String(\"1.3kg\"),\n\t\t\t\t\t\t\t\"count\": pulumi.String(\"3\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tVpcNetwork: \u0026dataplex.TaskNotebookInfrastructureSpecVpcNetworkArgs{\n\t\t\t\t\t\tNetworkTags: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"test-network-tag\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tNetwork: _default.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tFileUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://terraform-test/test.csv\"),\n\t\t\t\t},\n\t\t\t\tArchiveUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://terraform-test/test.csv\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.dataplex.Lake;\nimport com.pulumi.gcp.dataplex.LakeArgs;\nimport com.pulumi.gcp.dataplex.Task;\nimport com.pulumi.gcp.dataplex.TaskArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskTriggerSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskExecutionSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskNotebookArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskNotebookInfrastructureSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskNotebookInfrastructureSpecBatchArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskNotebookInfrastructureSpecContainerImageArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskNotebookInfrastructureSpecVpcNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // VPC network\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"tf-test-workstation-cluster_64336\")\n .autoCreateSubnetworks(true)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var exampleNotebook = new Lake(\"exampleNotebook\", LakeArgs.builder()\n .name(\"tf-test-lake_34962\")\n .location(\"us-central1\")\n .project(\"my-project-name\")\n .build());\n\n var exampleNotebookTask = new Task(\"exampleNotebookTask\", TaskArgs.builder()\n .taskId(\"tf-test-task_74000\")\n .location(\"us-central1\")\n .lake(exampleNotebook.name())\n .triggerSpec(TaskTriggerSpecArgs.builder()\n .type(\"RECURRING\")\n .schedule(\"1 * * * *\")\n .build())\n .executionSpec(TaskExecutionSpecArgs.builder()\n .serviceAccount(String.format(\"%s-compute@developer.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .args(Map.of(\"TASK_ARGS\", \"--output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json\"))\n .build())\n .notebook(TaskNotebookArgs.builder()\n .notebook(\"gs://terraform-test/test-notebook.ipynb\")\n .infrastructureSpec(TaskNotebookInfrastructureSpecArgs.builder()\n .batch(TaskNotebookInfrastructureSpecBatchArgs.builder()\n .executorsCount(2)\n .maxExecutorsCount(100)\n .build())\n .containerImage(TaskNotebookInfrastructureSpecContainerImageArgs.builder()\n .image(\"test-image\")\n .javaJars(\"test-java-jars.jar\")\n .pythonPackages(\"gs://bucket-name/my/path/to/lib.tar.gz\")\n .properties(Map.ofEntries(\n Map.entry(\"name\", \"wrench\"),\n Map.entry(\"mass\", \"1.3kg\"),\n Map.entry(\"count\", \"3\")\n ))\n .build())\n .vpcNetwork(TaskNotebookInfrastructureSpecVpcNetworkArgs.builder()\n .networkTags(\"test-network-tag\")\n .network(default_.id())\n .build())\n .build())\n .fileUris(\"gs://terraform-test/test.csv\")\n .archiveUris(\"gs://terraform-test/test.csv\")\n .build())\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # VPC network\n default:\n type: gcp:compute:Network\n properties:\n name: tf-test-workstation-cluster_64336\n autoCreateSubnetworks: true\n exampleNotebook:\n type: gcp:dataplex:Lake\n name: example_notebook\n properties:\n name: tf-test-lake_34962\n location: us-central1\n project: my-project-name\n exampleNotebookTask:\n type: gcp:dataplex:Task\n name: example_notebook\n properties:\n taskId: tf-test-task_74000\n location: us-central1\n lake: ${exampleNotebook.name}\n triggerSpec:\n type: RECURRING\n schedule: 1 * * * *\n executionSpec:\n serviceAccount: ${project.number}-compute@developer.gserviceaccount.com\n args:\n TASK_ARGS: --output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json\n notebook:\n notebook: gs://terraform-test/test-notebook.ipynb\n infrastructureSpec:\n batch:\n executorsCount: 2\n maxExecutorsCount: 100\n containerImage:\n image: test-image\n javaJars:\n - test-java-jars.jar\n pythonPackages:\n - gs://bucket-name/my/path/to/lib.tar.gz\n properties:\n name: wrench\n mass: 1.3kg\n count: '3'\n vpcNetwork:\n networkTags:\n - test-network-tag\n network: ${default.id}\n fileUris:\n - gs://terraform-test/test.csv\n archiveUris:\n - gs://terraform-test/test.csv\n project: my-project-name\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTask can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/lakes/{{lake}}/tasks/{{task_id}}`\n\n* `{{project}}/{{location}}/{{lake}}/{{task_id}}`\n\n* `{{location}}/{{lake}}/{{task_id}}`\n\nWhen using the `pulumi import` command, Task can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataplex/task:Task default projects/{{project}}/locations/{{location}}/lakes/{{lake}}/tasks/{{task_id}}\n```\n\n```sh\n$ pulumi import gcp:dataplex/task:Task default {{project}}/{{location}}/{{lake}}/{{task_id}}\n```\n\n```sh\n$ pulumi import gcp:dataplex/task:Task default {{location}}/{{lake}}/{{task_id}}\n```\n\n", + "description": "A Dataplex task represents the work that you want Dataplex to do on a schedule. It encapsulates code, parameters, and the schedule.\n\n\nTo get more information about Task, see:\n\n* [API documentation](https://cloud.google.com/dataplex/docs/reference/rest/v1/projects.locations.lakes.tasks)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dataplex/docs)\n\n## Example Usage\n\n### Dataplex Task Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example = new gcp.dataplex.Lake(\"example\", {\n name: \"tf-test-lake_91042\",\n location: \"us-central1\",\n project: \"my-project-name\",\n});\nconst exampleTask = new gcp.dataplex.Task(\"example\", {\n taskId: \"tf-test-task_72490\",\n location: \"us-central1\",\n lake: example.name,\n description: \"Test Task Basic\",\n displayName: \"task-basic\",\n labels: {\n count: \"3\",\n },\n triggerSpec: {\n type: \"RECURRING\",\n disabled: false,\n maxRetries: 3,\n startTime: \"2023-10-02T15:01:23Z\",\n schedule: \"1 * * * *\",\n },\n executionSpec: {\n serviceAccount: project.then(project =\u003e `${project.number}-compute@developer.gserviceaccount.com`),\n project: \"my-project-name\",\n maxJobExecutionLifetime: \"100s\",\n kmsKey: \"234jn2kjn42k3n423\",\n },\n spark: {\n pythonScriptFile: \"gs://dataproc-examples/pyspark/hello-world/hello-world.py\",\n },\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample = gcp.dataplex.Lake(\"example\",\n name=\"tf-test-lake_91042\",\n location=\"us-central1\",\n project=\"my-project-name\")\nexample_task = gcp.dataplex.Task(\"example\",\n task_id=\"tf-test-task_72490\",\n location=\"us-central1\",\n lake=example.name,\n description=\"Test Task Basic\",\n display_name=\"task-basic\",\n labels={\n \"count\": \"3\",\n },\n trigger_spec={\n \"type\": \"RECURRING\",\n \"disabled\": False,\n \"max_retries\": 3,\n \"start_time\": \"2023-10-02T15:01:23Z\",\n \"schedule\": \"1 * * * *\",\n },\n execution_spec={\n \"service_account\": f\"{project.number}-compute@developer.gserviceaccount.com\",\n \"project\": \"my-project-name\",\n \"max_job_execution_lifetime\": \"100s\",\n \"kms_key\": \"234jn2kjn42k3n423\",\n },\n spark={\n \"python_script_file\": \"gs://dataproc-examples/pyspark/hello-world/hello-world.py\",\n },\n project=\"my-project-name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var example = new Gcp.DataPlex.Lake(\"example\", new()\n {\n Name = \"tf-test-lake_91042\",\n Location = \"us-central1\",\n Project = \"my-project-name\",\n });\n\n var exampleTask = new Gcp.DataPlex.Task(\"example\", new()\n {\n TaskId = \"tf-test-task_72490\",\n Location = \"us-central1\",\n Lake = example.Name,\n Description = \"Test Task Basic\",\n DisplayName = \"task-basic\",\n Labels = \n {\n { \"count\", \"3\" },\n },\n TriggerSpec = new Gcp.DataPlex.Inputs.TaskTriggerSpecArgs\n {\n Type = \"RECURRING\",\n Disabled = false,\n MaxRetries = 3,\n StartTime = \"2023-10-02T15:01:23Z\",\n Schedule = \"1 * * * *\",\n },\n ExecutionSpec = new Gcp.DataPlex.Inputs.TaskExecutionSpecArgs\n {\n ServiceAccount = $\"{project.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n Project = \"my-project-name\",\n MaxJobExecutionLifetime = \"100s\",\n KmsKey = \"234jn2kjn42k3n423\",\n },\n Spark = new Gcp.DataPlex.Inputs.TaskSparkArgs\n {\n PythonScriptFile = \"gs://dataproc-examples/pyspark/hello-world/hello-world.py\",\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataplex\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := dataplex.NewLake(ctx, \"example\", \u0026dataplex.LakeArgs{\n\t\t\tName: pulumi.String(\"tf-test-lake_91042\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataplex.NewTask(ctx, \"example\", \u0026dataplex.TaskArgs{\n\t\t\tTaskId: pulumi.String(\"tf-test-task_72490\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLake: example.Name,\n\t\t\tDescription: pulumi.String(\"Test Task Basic\"),\n\t\t\tDisplayName: pulumi.String(\"task-basic\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"count\": pulumi.String(\"3\"),\n\t\t\t},\n\t\t\tTriggerSpec: \u0026dataplex.TaskTriggerSpecArgs{\n\t\t\t\tType: pulumi.String(\"RECURRING\"),\n\t\t\t\tDisabled: pulumi.Bool(false),\n\t\t\t\tMaxRetries: pulumi.Int(3),\n\t\t\t\tStartTime: pulumi.String(\"2023-10-02T15:01:23Z\"),\n\t\t\t\tSchedule: pulumi.String(\"1 * * * *\"),\n\t\t\t},\n\t\t\tExecutionSpec: \u0026dataplex.TaskExecutionSpecArgs{\n\t\t\t\tServiceAccount: pulumi.Sprintf(\"%v-compute@developer.gserviceaccount.com\", project.Number),\n\t\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\t\tMaxJobExecutionLifetime: pulumi.String(\"100s\"),\n\t\t\t\tKmsKey: pulumi.String(\"234jn2kjn42k3n423\"),\n\t\t\t},\n\t\t\tSpark: \u0026dataplex.TaskSparkArgs{\n\t\t\t\tPythonScriptFile: pulumi.String(\"gs://dataproc-examples/pyspark/hello-world/hello-world.py\"),\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.dataplex.Lake;\nimport com.pulumi.gcp.dataplex.LakeArgs;\nimport com.pulumi.gcp.dataplex.Task;\nimport com.pulumi.gcp.dataplex.TaskArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskTriggerSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskExecutionSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskSparkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var example = new Lake(\"example\", LakeArgs.builder()\n .name(\"tf-test-lake_91042\")\n .location(\"us-central1\")\n .project(\"my-project-name\")\n .build());\n\n var exampleTask = new Task(\"exampleTask\", TaskArgs.builder()\n .taskId(\"tf-test-task_72490\")\n .location(\"us-central1\")\n .lake(example.name())\n .description(\"Test Task Basic\")\n .displayName(\"task-basic\")\n .labels(Map.of(\"count\", \"3\"))\n .triggerSpec(TaskTriggerSpecArgs.builder()\n .type(\"RECURRING\")\n .disabled(false)\n .maxRetries(3)\n .startTime(\"2023-10-02T15:01:23Z\")\n .schedule(\"1 * * * *\")\n .build())\n .executionSpec(TaskExecutionSpecArgs.builder()\n .serviceAccount(String.format(\"%s-compute@developer.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .project(\"my-project-name\")\n .maxJobExecutionLifetime(\"100s\")\n .kmsKey(\"234jn2kjn42k3n423\")\n .build())\n .spark(TaskSparkArgs.builder()\n .pythonScriptFile(\"gs://dataproc-examples/pyspark/hello-world/hello-world.py\")\n .build())\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:dataplex:Lake\n properties:\n name: tf-test-lake_91042\n location: us-central1\n project: my-project-name\n exampleTask:\n type: gcp:dataplex:Task\n name: example\n properties:\n taskId: tf-test-task_72490\n location: us-central1\n lake: ${example.name}\n description: Test Task Basic\n displayName: task-basic\n labels:\n count: '3'\n triggerSpec:\n type: RECURRING\n disabled: false\n maxRetries: 3\n startTime: 2023-10-02T15:01:23Z\n schedule: 1 * * * *\n executionSpec:\n serviceAccount: ${project.number}-compute@developer.gserviceaccount.com\n project: my-project-name\n maxJobExecutionLifetime: 100s\n kmsKey: 234jn2kjn42k3n423\n spark:\n pythonScriptFile: gs://dataproc-examples/pyspark/hello-world/hello-world.py\n project: my-project-name\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataplex Task Spark\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// VPC network\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"tf-test-workstation-cluster_89605\",\n autoCreateSubnetworks: true,\n});\nconst project = gcp.organizations.getProject({});\nconst exampleSpark = new gcp.dataplex.Lake(\"example_spark\", {\n name: \"tf-test-lake_56730\",\n location: \"us-central1\",\n project: \"my-project-name\",\n});\nconst exampleSparkTask = new gcp.dataplex.Task(\"example_spark\", {\n taskId: \"tf-test-task_95154\",\n location: \"us-central1\",\n lake: exampleSpark.name,\n triggerSpec: {\n type: \"ON_DEMAND\",\n },\n description: \"task-spark-terraform\",\n executionSpec: {\n serviceAccount: project.then(project =\u003e `${project.number}-compute@developer.gserviceaccount.com`),\n args: {\n TASK_ARGS: \"--output_location,gs://spark-job/task-result, --output_format, json\",\n },\n },\n spark: {\n infrastructureSpec: {\n batch: {\n executorsCount: 2,\n maxExecutorsCount: 100,\n },\n containerImage: {\n image: \"test-image\",\n javaJars: [\"test-java-jars.jar\"],\n pythonPackages: [\"gs://bucket-name/my/path/to/lib.tar.gz\"],\n properties: {\n name: \"wrench\",\n mass: \"1.3kg\",\n count: \"3\",\n },\n },\n vpcNetwork: {\n networkTags: [\"test-network-tag\"],\n subNetwork: _default.id,\n },\n },\n fileUris: [\"gs://terrafrom-test/test.csv\"],\n archiveUris: [\"gs://terraform-test/test.csv\"],\n sqlScript: \"show databases\",\n },\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# VPC network\ndefault = gcp.compute.Network(\"default\",\n name=\"tf-test-workstation-cluster_89605\",\n auto_create_subnetworks=True)\nproject = gcp.organizations.get_project()\nexample_spark = gcp.dataplex.Lake(\"example_spark\",\n name=\"tf-test-lake_56730\",\n location=\"us-central1\",\n project=\"my-project-name\")\nexample_spark_task = gcp.dataplex.Task(\"example_spark\",\n task_id=\"tf-test-task_95154\",\n location=\"us-central1\",\n lake=example_spark.name,\n trigger_spec={\n \"type\": \"ON_DEMAND\",\n },\n description=\"task-spark-terraform\",\n execution_spec={\n \"service_account\": f\"{project.number}-compute@developer.gserviceaccount.com\",\n \"args\": {\n \"TASK_ARGS\": \"--output_location,gs://spark-job/task-result, --output_format, json\",\n },\n },\n spark={\n \"infrastructure_spec\": {\n \"batch\": {\n \"executors_count\": 2,\n \"max_executors_count\": 100,\n },\n \"container_image\": {\n \"image\": \"test-image\",\n \"java_jars\": [\"test-java-jars.jar\"],\n \"python_packages\": [\"gs://bucket-name/my/path/to/lib.tar.gz\"],\n \"properties\": {\n \"name\": \"wrench\",\n \"mass\": \"1.3kg\",\n \"count\": \"3\",\n },\n },\n \"vpc_network\": {\n \"network_tags\": [\"test-network-tag\"],\n \"sub_network\": default.id,\n },\n },\n \"file_uris\": [\"gs://terrafrom-test/test.csv\"],\n \"archive_uris\": [\"gs://terraform-test/test.csv\"],\n \"sql_script\": \"show databases\",\n },\n project=\"my-project-name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // VPC network\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"tf-test-workstation-cluster_89605\",\n AutoCreateSubnetworks = true,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var exampleSpark = new Gcp.DataPlex.Lake(\"example_spark\", new()\n {\n Name = \"tf-test-lake_56730\",\n Location = \"us-central1\",\n Project = \"my-project-name\",\n });\n\n var exampleSparkTask = new Gcp.DataPlex.Task(\"example_spark\", new()\n {\n TaskId = \"tf-test-task_95154\",\n Location = \"us-central1\",\n Lake = exampleSpark.Name,\n TriggerSpec = new Gcp.DataPlex.Inputs.TaskTriggerSpecArgs\n {\n Type = \"ON_DEMAND\",\n },\n Description = \"task-spark-terraform\",\n ExecutionSpec = new Gcp.DataPlex.Inputs.TaskExecutionSpecArgs\n {\n ServiceAccount = $\"{project.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n Args = \n {\n { \"TASK_ARGS\", \"--output_location,gs://spark-job/task-result, --output_format, json\" },\n },\n },\n Spark = new Gcp.DataPlex.Inputs.TaskSparkArgs\n {\n InfrastructureSpec = new Gcp.DataPlex.Inputs.TaskSparkInfrastructureSpecArgs\n {\n Batch = new Gcp.DataPlex.Inputs.TaskSparkInfrastructureSpecBatchArgs\n {\n ExecutorsCount = 2,\n MaxExecutorsCount = 100,\n },\n ContainerImage = new Gcp.DataPlex.Inputs.TaskSparkInfrastructureSpecContainerImageArgs\n {\n Image = \"test-image\",\n JavaJars = new[]\n {\n \"test-java-jars.jar\",\n },\n PythonPackages = new[]\n {\n \"gs://bucket-name/my/path/to/lib.tar.gz\",\n },\n Properties = \n {\n { \"name\", \"wrench\" },\n { \"mass\", \"1.3kg\" },\n { \"count\", \"3\" },\n },\n },\n VpcNetwork = new Gcp.DataPlex.Inputs.TaskSparkInfrastructureSpecVpcNetworkArgs\n {\n NetworkTags = new[]\n {\n \"test-network-tag\",\n },\n SubNetwork = @default.Id,\n },\n },\n FileUris = new[]\n {\n \"gs://terrafrom-test/test.csv\",\n },\n ArchiveUris = new[]\n {\n \"gs://terraform-test/test.csv\",\n },\n SqlScript = \"show databases\",\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataplex\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// VPC network\n\t\t_, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"tf-test-workstation-cluster_89605\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleSpark, err := dataplex.NewLake(ctx, \"example_spark\", \u0026dataplex.LakeArgs{\n\t\t\tName: pulumi.String(\"tf-test-lake_56730\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataplex.NewTask(ctx, \"example_spark\", \u0026dataplex.TaskArgs{\n\t\t\tTaskId: pulumi.String(\"tf-test-task_95154\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLake: exampleSpark.Name,\n\t\t\tTriggerSpec: \u0026dataplex.TaskTriggerSpecArgs{\n\t\t\t\tType: pulumi.String(\"ON_DEMAND\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"task-spark-terraform\"),\n\t\t\tExecutionSpec: \u0026dataplex.TaskExecutionSpecArgs{\n\t\t\t\tServiceAccount: pulumi.Sprintf(\"%v-compute@developer.gserviceaccount.com\", project.Number),\n\t\t\t\tArgs: pulumi.StringMap{\n\t\t\t\t\t\"TASK_ARGS\": pulumi.String(\"--output_location,gs://spark-job/task-result, --output_format, json\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSpark: \u0026dataplex.TaskSparkArgs{\n\t\t\t\tInfrastructureSpec: \u0026dataplex.TaskSparkInfrastructureSpecArgs{\n\t\t\t\t\tBatch: \u0026dataplex.TaskSparkInfrastructureSpecBatchArgs{\n\t\t\t\t\t\tExecutorsCount: pulumi.Int(2),\n\t\t\t\t\t\tMaxExecutorsCount: pulumi.Int(100),\n\t\t\t\t\t},\n\t\t\t\t\tContainerImage: \u0026dataplex.TaskSparkInfrastructureSpecContainerImageArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"test-image\"),\n\t\t\t\t\t\tJavaJars: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"test-java-jars.jar\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPythonPackages: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"gs://bucket-name/my/path/to/lib.tar.gz\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\t\t\"name\": pulumi.String(\"wrench\"),\n\t\t\t\t\t\t\t\"mass\": pulumi.String(\"1.3kg\"),\n\t\t\t\t\t\t\t\"count\": pulumi.String(\"3\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tVpcNetwork: \u0026dataplex.TaskSparkInfrastructureSpecVpcNetworkArgs{\n\t\t\t\t\t\tNetworkTags: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"test-network-tag\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSubNetwork: _default.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tFileUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://terrafrom-test/test.csv\"),\n\t\t\t\t},\n\t\t\t\tArchiveUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://terraform-test/test.csv\"),\n\t\t\t\t},\n\t\t\t\tSqlScript: pulumi.String(\"show databases\"),\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.dataplex.Lake;\nimport com.pulumi.gcp.dataplex.LakeArgs;\nimport com.pulumi.gcp.dataplex.Task;\nimport com.pulumi.gcp.dataplex.TaskArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskTriggerSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskExecutionSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskSparkArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskSparkInfrastructureSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskSparkInfrastructureSpecBatchArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskSparkInfrastructureSpecContainerImageArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskSparkInfrastructureSpecVpcNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // VPC network\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"tf-test-workstation-cluster_89605\")\n .autoCreateSubnetworks(true)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var exampleSpark = new Lake(\"exampleSpark\", LakeArgs.builder()\n .name(\"tf-test-lake_56730\")\n .location(\"us-central1\")\n .project(\"my-project-name\")\n .build());\n\n var exampleSparkTask = new Task(\"exampleSparkTask\", TaskArgs.builder()\n .taskId(\"tf-test-task_95154\")\n .location(\"us-central1\")\n .lake(exampleSpark.name())\n .triggerSpec(TaskTriggerSpecArgs.builder()\n .type(\"ON_DEMAND\")\n .build())\n .description(\"task-spark-terraform\")\n .executionSpec(TaskExecutionSpecArgs.builder()\n .serviceAccount(String.format(\"%s-compute@developer.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .args(Map.of(\"TASK_ARGS\", \"--output_location,gs://spark-job/task-result, --output_format, json\"))\n .build())\n .spark(TaskSparkArgs.builder()\n .infrastructureSpec(TaskSparkInfrastructureSpecArgs.builder()\n .batch(TaskSparkInfrastructureSpecBatchArgs.builder()\n .executorsCount(2)\n .maxExecutorsCount(100)\n .build())\n .containerImage(TaskSparkInfrastructureSpecContainerImageArgs.builder()\n .image(\"test-image\")\n .javaJars(\"test-java-jars.jar\")\n .pythonPackages(\"gs://bucket-name/my/path/to/lib.tar.gz\")\n .properties(Map.ofEntries(\n Map.entry(\"name\", \"wrench\"),\n Map.entry(\"mass\", \"1.3kg\"),\n Map.entry(\"count\", \"3\")\n ))\n .build())\n .vpcNetwork(TaskSparkInfrastructureSpecVpcNetworkArgs.builder()\n .networkTags(\"test-network-tag\")\n .subNetwork(default_.id())\n .build())\n .build())\n .fileUris(\"gs://terrafrom-test/test.csv\")\n .archiveUris(\"gs://terraform-test/test.csv\")\n .sqlScript(\"show databases\")\n .build())\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # VPC network\n default:\n type: gcp:compute:Network\n properties:\n name: tf-test-workstation-cluster_89605\n autoCreateSubnetworks: true\n exampleSpark:\n type: gcp:dataplex:Lake\n name: example_spark\n properties:\n name: tf-test-lake_56730\n location: us-central1\n project: my-project-name\n exampleSparkTask:\n type: gcp:dataplex:Task\n name: example_spark\n properties:\n taskId: tf-test-task_95154\n location: us-central1\n lake: ${exampleSpark.name}\n triggerSpec:\n type: ON_DEMAND\n description: task-spark-terraform\n executionSpec:\n serviceAccount: ${project.number}-compute@developer.gserviceaccount.com\n args:\n TASK_ARGS: --output_location,gs://spark-job/task-result, --output_format, json\n spark:\n infrastructureSpec:\n batch:\n executorsCount: 2\n maxExecutorsCount: 100\n containerImage:\n image: test-image\n javaJars:\n - test-java-jars.jar\n pythonPackages:\n - gs://bucket-name/my/path/to/lib.tar.gz\n properties:\n name: wrench\n mass: 1.3kg\n count: '3'\n vpcNetwork:\n networkTags:\n - test-network-tag\n subNetwork: ${default.id}\n fileUris:\n - gs://terrafrom-test/test.csv\n archiveUris:\n - gs://terraform-test/test.csv\n sqlScript: show databases\n project: my-project-name\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataplex Task Notebook\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// VPC network\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"tf-test-workstation-cluster_64336\",\n autoCreateSubnetworks: true,\n});\nconst project = gcp.organizations.getProject({});\nconst exampleNotebook = new gcp.dataplex.Lake(\"example_notebook\", {\n name: \"tf-test-lake_34962\",\n location: \"us-central1\",\n project: \"my-project-name\",\n});\nconst exampleNotebookTask = new gcp.dataplex.Task(\"example_notebook\", {\n taskId: \"tf-test-task_74000\",\n location: \"us-central1\",\n lake: exampleNotebook.name,\n triggerSpec: {\n type: \"RECURRING\",\n schedule: \"1 * * * *\",\n },\n executionSpec: {\n serviceAccount: project.then(project =\u003e `${project.number}-compute@developer.gserviceaccount.com`),\n args: {\n TASK_ARGS: \"--output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json\",\n },\n },\n notebook: {\n notebook: \"gs://terraform-test/test-notebook.ipynb\",\n infrastructureSpec: {\n batch: {\n executorsCount: 2,\n maxExecutorsCount: 100,\n },\n containerImage: {\n image: \"test-image\",\n javaJars: [\"test-java-jars.jar\"],\n pythonPackages: [\"gs://bucket-name/my/path/to/lib.tar.gz\"],\n properties: {\n name: \"wrench\",\n mass: \"1.3kg\",\n count: \"3\",\n },\n },\n vpcNetwork: {\n networkTags: [\"test-network-tag\"],\n network: _default.id,\n },\n },\n fileUris: [\"gs://terraform-test/test.csv\"],\n archiveUris: [\"gs://terraform-test/test.csv\"],\n },\n project: \"my-project-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# VPC network\ndefault = gcp.compute.Network(\"default\",\n name=\"tf-test-workstation-cluster_64336\",\n auto_create_subnetworks=True)\nproject = gcp.organizations.get_project()\nexample_notebook = gcp.dataplex.Lake(\"example_notebook\",\n name=\"tf-test-lake_34962\",\n location=\"us-central1\",\n project=\"my-project-name\")\nexample_notebook_task = gcp.dataplex.Task(\"example_notebook\",\n task_id=\"tf-test-task_74000\",\n location=\"us-central1\",\n lake=example_notebook.name,\n trigger_spec={\n \"type\": \"RECURRING\",\n \"schedule\": \"1 * * * *\",\n },\n execution_spec={\n \"service_account\": f\"{project.number}-compute@developer.gserviceaccount.com\",\n \"args\": {\n \"TASK_ARGS\": \"--output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json\",\n },\n },\n notebook={\n \"notebook\": \"gs://terraform-test/test-notebook.ipynb\",\n \"infrastructure_spec\": {\n \"batch\": {\n \"executors_count\": 2,\n \"max_executors_count\": 100,\n },\n \"container_image\": {\n \"image\": \"test-image\",\n \"java_jars\": [\"test-java-jars.jar\"],\n \"python_packages\": [\"gs://bucket-name/my/path/to/lib.tar.gz\"],\n \"properties\": {\n \"name\": \"wrench\",\n \"mass\": \"1.3kg\",\n \"count\": \"3\",\n },\n },\n \"vpc_network\": {\n \"network_tags\": [\"test-network-tag\"],\n \"network\": default.id,\n },\n },\n \"file_uris\": [\"gs://terraform-test/test.csv\"],\n \"archive_uris\": [\"gs://terraform-test/test.csv\"],\n },\n project=\"my-project-name\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // VPC network\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"tf-test-workstation-cluster_64336\",\n AutoCreateSubnetworks = true,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var exampleNotebook = new Gcp.DataPlex.Lake(\"example_notebook\", new()\n {\n Name = \"tf-test-lake_34962\",\n Location = \"us-central1\",\n Project = \"my-project-name\",\n });\n\n var exampleNotebookTask = new Gcp.DataPlex.Task(\"example_notebook\", new()\n {\n TaskId = \"tf-test-task_74000\",\n Location = \"us-central1\",\n Lake = exampleNotebook.Name,\n TriggerSpec = new Gcp.DataPlex.Inputs.TaskTriggerSpecArgs\n {\n Type = \"RECURRING\",\n Schedule = \"1 * * * *\",\n },\n ExecutionSpec = new Gcp.DataPlex.Inputs.TaskExecutionSpecArgs\n {\n ServiceAccount = $\"{project.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n Args = \n {\n { \"TASK_ARGS\", \"--output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json\" },\n },\n },\n Notebook = new Gcp.DataPlex.Inputs.TaskNotebookArgs\n {\n Notebook = \"gs://terraform-test/test-notebook.ipynb\",\n InfrastructureSpec = new Gcp.DataPlex.Inputs.TaskNotebookInfrastructureSpecArgs\n {\n Batch = new Gcp.DataPlex.Inputs.TaskNotebookInfrastructureSpecBatchArgs\n {\n ExecutorsCount = 2,\n MaxExecutorsCount = 100,\n },\n ContainerImage = new Gcp.DataPlex.Inputs.TaskNotebookInfrastructureSpecContainerImageArgs\n {\n Image = \"test-image\",\n JavaJars = new[]\n {\n \"test-java-jars.jar\",\n },\n PythonPackages = new[]\n {\n \"gs://bucket-name/my/path/to/lib.tar.gz\",\n },\n Properties = \n {\n { \"name\", \"wrench\" },\n { \"mass\", \"1.3kg\" },\n { \"count\", \"3\" },\n },\n },\n VpcNetwork = new Gcp.DataPlex.Inputs.TaskNotebookInfrastructureSpecVpcNetworkArgs\n {\n NetworkTags = new[]\n {\n \"test-network-tag\",\n },\n Network = @default.Id,\n },\n },\n FileUris = new[]\n {\n \"gs://terraform-test/test.csv\",\n },\n ArchiveUris = new[]\n {\n \"gs://terraform-test/test.csv\",\n },\n },\n Project = \"my-project-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataplex\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// VPC network\n\t\t_, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"tf-test-workstation-cluster_64336\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleNotebook, err := dataplex.NewLake(ctx, \"example_notebook\", \u0026dataplex.LakeArgs{\n\t\t\tName: pulumi.String(\"tf-test-lake_34962\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataplex.NewTask(ctx, \"example_notebook\", \u0026dataplex.TaskArgs{\n\t\t\tTaskId: pulumi.String(\"tf-test-task_74000\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLake: exampleNotebook.Name,\n\t\t\tTriggerSpec: \u0026dataplex.TaskTriggerSpecArgs{\n\t\t\t\tType: pulumi.String(\"RECURRING\"),\n\t\t\t\tSchedule: pulumi.String(\"1 * * * *\"),\n\t\t\t},\n\t\t\tExecutionSpec: \u0026dataplex.TaskExecutionSpecArgs{\n\t\t\t\tServiceAccount: pulumi.Sprintf(\"%v-compute@developer.gserviceaccount.com\", project.Number),\n\t\t\t\tArgs: pulumi.StringMap{\n\t\t\t\t\t\"TASK_ARGS\": pulumi.String(\"--output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNotebook: \u0026dataplex.TaskNotebookArgs{\n\t\t\t\tNotebook: pulumi.String(\"gs://terraform-test/test-notebook.ipynb\"),\n\t\t\t\tInfrastructureSpec: \u0026dataplex.TaskNotebookInfrastructureSpecArgs{\n\t\t\t\t\tBatch: \u0026dataplex.TaskNotebookInfrastructureSpecBatchArgs{\n\t\t\t\t\t\tExecutorsCount: pulumi.Int(2),\n\t\t\t\t\t\tMaxExecutorsCount: pulumi.Int(100),\n\t\t\t\t\t},\n\t\t\t\t\tContainerImage: \u0026dataplex.TaskNotebookInfrastructureSpecContainerImageArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"test-image\"),\n\t\t\t\t\t\tJavaJars: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"test-java-jars.jar\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPythonPackages: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"gs://bucket-name/my/path/to/lib.tar.gz\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\t\t\"name\": pulumi.String(\"wrench\"),\n\t\t\t\t\t\t\t\"mass\": pulumi.String(\"1.3kg\"),\n\t\t\t\t\t\t\t\"count\": pulumi.String(\"3\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tVpcNetwork: \u0026dataplex.TaskNotebookInfrastructureSpecVpcNetworkArgs{\n\t\t\t\t\t\tNetworkTags: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"test-network-tag\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tNetwork: _default.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tFileUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://terraform-test/test.csv\"),\n\t\t\t\t},\n\t\t\t\tArchiveUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://terraform-test/test.csv\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.dataplex.Lake;\nimport com.pulumi.gcp.dataplex.LakeArgs;\nimport com.pulumi.gcp.dataplex.Task;\nimport com.pulumi.gcp.dataplex.TaskArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskTriggerSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskExecutionSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskNotebookArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskNotebookInfrastructureSpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskNotebookInfrastructureSpecBatchArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskNotebookInfrastructureSpecContainerImageArgs;\nimport com.pulumi.gcp.dataplex.inputs.TaskNotebookInfrastructureSpecVpcNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // VPC network\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"tf-test-workstation-cluster_64336\")\n .autoCreateSubnetworks(true)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var exampleNotebook = new Lake(\"exampleNotebook\", LakeArgs.builder()\n .name(\"tf-test-lake_34962\")\n .location(\"us-central1\")\n .project(\"my-project-name\")\n .build());\n\n var exampleNotebookTask = new Task(\"exampleNotebookTask\", TaskArgs.builder()\n .taskId(\"tf-test-task_74000\")\n .location(\"us-central1\")\n .lake(exampleNotebook.name())\n .triggerSpec(TaskTriggerSpecArgs.builder()\n .type(\"RECURRING\")\n .schedule(\"1 * * * *\")\n .build())\n .executionSpec(TaskExecutionSpecArgs.builder()\n .serviceAccount(String.format(\"%s-compute@developer.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .args(Map.of(\"TASK_ARGS\", \"--output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json\"))\n .build())\n .notebook(TaskNotebookArgs.builder()\n .notebook(\"gs://terraform-test/test-notebook.ipynb\")\n .infrastructureSpec(TaskNotebookInfrastructureSpecArgs.builder()\n .batch(TaskNotebookInfrastructureSpecBatchArgs.builder()\n .executorsCount(2)\n .maxExecutorsCount(100)\n .build())\n .containerImage(TaskNotebookInfrastructureSpecContainerImageArgs.builder()\n .image(\"test-image\")\n .javaJars(\"test-java-jars.jar\")\n .pythonPackages(\"gs://bucket-name/my/path/to/lib.tar.gz\")\n .properties(Map.ofEntries(\n Map.entry(\"name\", \"wrench\"),\n Map.entry(\"mass\", \"1.3kg\"),\n Map.entry(\"count\", \"3\")\n ))\n .build())\n .vpcNetwork(TaskNotebookInfrastructureSpecVpcNetworkArgs.builder()\n .networkTags(\"test-network-tag\")\n .network(default_.id())\n .build())\n .build())\n .fileUris(\"gs://terraform-test/test.csv\")\n .archiveUris(\"gs://terraform-test/test.csv\")\n .build())\n .project(\"my-project-name\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # VPC network\n default:\n type: gcp:compute:Network\n properties:\n name: tf-test-workstation-cluster_64336\n autoCreateSubnetworks: true\n exampleNotebook:\n type: gcp:dataplex:Lake\n name: example_notebook\n properties:\n name: tf-test-lake_34962\n location: us-central1\n project: my-project-name\n exampleNotebookTask:\n type: gcp:dataplex:Task\n name: example_notebook\n properties:\n taskId: tf-test-task_74000\n location: us-central1\n lake: ${exampleNotebook.name}\n triggerSpec:\n type: RECURRING\n schedule: 1 * * * *\n executionSpec:\n serviceAccount: ${project.number}-compute@developer.gserviceaccount.com\n args:\n TASK_ARGS: --output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json\n notebook:\n notebook: gs://terraform-test/test-notebook.ipynb\n infrastructureSpec:\n batch:\n executorsCount: 2\n maxExecutorsCount: 100\n containerImage:\n image: test-image\n javaJars:\n - test-java-jars.jar\n pythonPackages:\n - gs://bucket-name/my/path/to/lib.tar.gz\n properties:\n name: wrench\n mass: 1.3kg\n count: '3'\n vpcNetwork:\n networkTags:\n - test-network-tag\n network: ${default.id}\n fileUris:\n - gs://terraform-test/test.csv\n archiveUris:\n - gs://terraform-test/test.csv\n project: my-project-name\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTask can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/lakes/{{lake}}/tasks/{{task_id}}`\n\n* `{{project}}/{{location}}/{{lake}}/{{task_id}}`\n\n* `{{location}}/{{lake}}/{{task_id}}`\n\nWhen using the `pulumi import` command, Task can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataplex/task:Task default projects/{{project}}/locations/{{location}}/lakes/{{lake}}/tasks/{{task_id}}\n```\n\n```sh\n$ pulumi import gcp:dataplex/task:Task default {{project}}/{{location}}/{{lake}}/{{task_id}}\n```\n\n```sh\n$ pulumi import gcp:dataplex/task:Task default {{location}}/{{lake}}/{{task_id}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -185166,7 +185166,7 @@ } }, "gcp:dataplex/zone:Zone": { - "description": "The Dataplex Zone resource\n\n## Example Usage\n\n### Basic_zone\nA basic example of a dataplex zone\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.dataplex.Lake(\"basic\", {\n location: \"us-west1\",\n name: \"lake\",\n description: \"Lake for DCL\",\n displayName: \"Lake for DCL\",\n project: \"my-project-name\",\n labels: {\n \"my-lake\": \"exists\",\n },\n});\nconst primary = new gcp.dataplex.Zone(\"primary\", {\n discoverySpec: {\n enabled: false,\n },\n lake: basic.name,\n location: \"us-west1\",\n name: \"zone\",\n resourceSpec: {\n locationType: \"MULTI_REGION\",\n },\n type: \"RAW\",\n description: \"Zone for DCL\",\n displayName: \"Zone for DCL\",\n project: \"my-project-name\",\n labels: {},\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.dataplex.Lake(\"basic\",\n location=\"us-west1\",\n name=\"lake\",\n description=\"Lake for DCL\",\n display_name=\"Lake for DCL\",\n project=\"my-project-name\",\n labels={\n \"my-lake\": \"exists\",\n })\nprimary = gcp.dataplex.Zone(\"primary\",\n discovery_spec={\n \"enabled\": False,\n },\n lake=basic.name,\n location=\"us-west1\",\n name=\"zone\",\n resource_spec={\n \"location_type\": \"MULTI_REGION\",\n },\n type=\"RAW\",\n description=\"Zone for DCL\",\n display_name=\"Zone for DCL\",\n project=\"my-project-name\",\n labels={})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basic = new Gcp.DataPlex.Lake(\"basic\", new()\n {\n Location = \"us-west1\",\n Name = \"lake\",\n Description = \"Lake for DCL\",\n DisplayName = \"Lake for DCL\",\n Project = \"my-project-name\",\n Labels = \n {\n { \"my-lake\", \"exists\" },\n },\n });\n\n var primary = new Gcp.DataPlex.Zone(\"primary\", new()\n {\n DiscoverySpec = new Gcp.DataPlex.Inputs.ZoneDiscoverySpecArgs\n {\n Enabled = false,\n },\n Lake = basic.Name,\n Location = \"us-west1\",\n Name = \"zone\",\n ResourceSpec = new Gcp.DataPlex.Inputs.ZoneResourceSpecArgs\n {\n LocationType = \"MULTI_REGION\",\n },\n Type = \"RAW\",\n Description = \"Zone for DCL\",\n DisplayName = \"Zone for DCL\",\n Project = \"my-project-name\",\n Labels = null,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataplex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbasic, err := dataplex.NewLake(ctx, \"basic\", \u0026dataplex.LakeArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"lake\"),\n\t\t\tDescription: pulumi.String(\"Lake for DCL\"),\n\t\t\tDisplayName: pulumi.String(\"Lake for DCL\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my-lake\": pulumi.String(\"exists\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataplex.NewZone(ctx, \"primary\", \u0026dataplex.ZoneArgs{\n\t\t\tDiscoverySpec: \u0026dataplex.ZoneDiscoverySpecArgs{\n\t\t\t\tEnabled: pulumi.Bool(false),\n\t\t\t},\n\t\t\tLake: basic.Name,\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"zone\"),\n\t\t\tResourceSpec: \u0026dataplex.ZoneResourceSpecArgs{\n\t\t\t\tLocationType: pulumi.String(\"MULTI_REGION\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"RAW\"),\n\t\t\tDescription: pulumi.String(\"Zone for DCL\"),\n\t\t\tDisplayName: pulumi.String(\"Zone for DCL\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tLabels: nil,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataplex.Lake;\nimport com.pulumi.gcp.dataplex.LakeArgs;\nimport com.pulumi.gcp.dataplex.Zone;\nimport com.pulumi.gcp.dataplex.ZoneArgs;\nimport com.pulumi.gcp.dataplex.inputs.ZoneDiscoverySpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.ZoneResourceSpecArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basic = new Lake(\"basic\", LakeArgs.builder()\n .location(\"us-west1\")\n .name(\"lake\")\n .description(\"Lake for DCL\")\n .displayName(\"Lake for DCL\")\n .project(\"my-project-name\")\n .labels(Map.of(\"my-lake\", \"exists\"))\n .build());\n\n var primary = new Zone(\"primary\", ZoneArgs.builder()\n .discoverySpec(ZoneDiscoverySpecArgs.builder()\n .enabled(false)\n .build())\n .lake(basic.name())\n .location(\"us-west1\")\n .name(\"zone\")\n .resourceSpec(ZoneResourceSpecArgs.builder()\n .locationType(\"MULTI_REGION\")\n .build())\n .type(\"RAW\")\n .description(\"Zone for DCL\")\n .displayName(\"Zone for DCL\")\n .project(\"my-project-name\")\n .labels()\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:dataplex:Zone\n properties:\n discoverySpec:\n enabled: false\n lake: ${basic.name}\n location: us-west1\n name: zone\n resourceSpec:\n locationType: MULTI_REGION\n type: RAW\n description: Zone for DCL\n displayName: Zone for DCL\n project: my-project-name\n labels: {}\n basic:\n type: gcp:dataplex:Lake\n properties:\n location: us-west1\n name: lake\n description: Lake for DCL\n displayName: Lake for DCL\n project: my-project-name\n labels:\n my-lake: exists\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nZone can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/lakes/{{lake}}/zones/{{name}}`\n\n* `{{project}}/{{location}}/{{lake}}/{{name}}`\n\n* `{{location}}/{{lake}}/{{name}}`\n\nWhen using the `pulumi import` command, Zone can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataplex/zone:Zone default projects/{{project}}/locations/{{location}}/lakes/{{lake}}/zones/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataplex/zone:Zone default {{project}}/{{location}}/{{lake}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataplex/zone:Zone default {{location}}/{{lake}}/{{name}}\n```\n\n", + "description": "The Dataplex Zone resource\n\n## Example Usage\n\n### Basic_zone\nA basic example of a dataplex zone\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.dataplex.Lake(\"basic\", {\n location: \"us-west1\",\n name: \"lake\",\n description: \"Lake for DCL\",\n displayName: \"Lake for DCL\",\n project: \"my-project-name\",\n labels: {\n \"my-lake\": \"exists\",\n },\n});\nconst primary = new gcp.dataplex.Zone(\"primary\", {\n discoverySpec: {\n enabled: false,\n },\n lake: basic.name,\n location: \"us-west1\",\n name: \"zone\",\n resourceSpec: {\n locationType: \"MULTI_REGION\",\n },\n type: \"RAW\",\n description: \"Zone for DCL\",\n displayName: \"Zone for DCL\",\n project: \"my-project-name\",\n labels: {},\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.dataplex.Lake(\"basic\",\n location=\"us-west1\",\n name=\"lake\",\n description=\"Lake for DCL\",\n display_name=\"Lake for DCL\",\n project=\"my-project-name\",\n labels={\n \"my-lake\": \"exists\",\n })\nprimary = gcp.dataplex.Zone(\"primary\",\n discovery_spec={\n \"enabled\": False,\n },\n lake=basic.name,\n location=\"us-west1\",\n name=\"zone\",\n resource_spec={\n \"location_type\": \"MULTI_REGION\",\n },\n type=\"RAW\",\n description=\"Zone for DCL\",\n display_name=\"Zone for DCL\",\n project=\"my-project-name\",\n labels={})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basic = new Gcp.DataPlex.Lake(\"basic\", new()\n {\n Location = \"us-west1\",\n Name = \"lake\",\n Description = \"Lake for DCL\",\n DisplayName = \"Lake for DCL\",\n Project = \"my-project-name\",\n Labels = \n {\n { \"my-lake\", \"exists\" },\n },\n });\n\n var primary = new Gcp.DataPlex.Zone(\"primary\", new()\n {\n DiscoverySpec = new Gcp.DataPlex.Inputs.ZoneDiscoverySpecArgs\n {\n Enabled = false,\n },\n Lake = basic.Name,\n Location = \"us-west1\",\n Name = \"zone\",\n ResourceSpec = new Gcp.DataPlex.Inputs.ZoneResourceSpecArgs\n {\n LocationType = \"MULTI_REGION\",\n },\n Type = \"RAW\",\n Description = \"Zone for DCL\",\n DisplayName = \"Zone for DCL\",\n Project = \"my-project-name\",\n Labels = null,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataplex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbasic, err := dataplex.NewLake(ctx, \"basic\", \u0026dataplex.LakeArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"lake\"),\n\t\t\tDescription: pulumi.String(\"Lake for DCL\"),\n\t\t\tDisplayName: pulumi.String(\"Lake for DCL\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my-lake\": pulumi.String(\"exists\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataplex.NewZone(ctx, \"primary\", \u0026dataplex.ZoneArgs{\n\t\t\tDiscoverySpec: \u0026dataplex.ZoneDiscoverySpecArgs{\n\t\t\t\tEnabled: pulumi.Bool(false),\n\t\t\t},\n\t\t\tLake: basic.Name,\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"zone\"),\n\t\t\tResourceSpec: \u0026dataplex.ZoneResourceSpecArgs{\n\t\t\t\tLocationType: pulumi.String(\"MULTI_REGION\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"RAW\"),\n\t\t\tDescription: pulumi.String(\"Zone for DCL\"),\n\t\t\tDisplayName: pulumi.String(\"Zone for DCL\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tLabels: pulumi.StringMap{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataplex.Lake;\nimport com.pulumi.gcp.dataplex.LakeArgs;\nimport com.pulumi.gcp.dataplex.Zone;\nimport com.pulumi.gcp.dataplex.ZoneArgs;\nimport com.pulumi.gcp.dataplex.inputs.ZoneDiscoverySpecArgs;\nimport com.pulumi.gcp.dataplex.inputs.ZoneResourceSpecArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basic = new Lake(\"basic\", LakeArgs.builder()\n .location(\"us-west1\")\n .name(\"lake\")\n .description(\"Lake for DCL\")\n .displayName(\"Lake for DCL\")\n .project(\"my-project-name\")\n .labels(Map.of(\"my-lake\", \"exists\"))\n .build());\n\n var primary = new Zone(\"primary\", ZoneArgs.builder()\n .discoverySpec(ZoneDiscoverySpecArgs.builder()\n .enabled(false)\n .build())\n .lake(basic.name())\n .location(\"us-west1\")\n .name(\"zone\")\n .resourceSpec(ZoneResourceSpecArgs.builder()\n .locationType(\"MULTI_REGION\")\n .build())\n .type(\"RAW\")\n .description(\"Zone for DCL\")\n .displayName(\"Zone for DCL\")\n .project(\"my-project-name\")\n .labels()\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:dataplex:Zone\n properties:\n discoverySpec:\n enabled: false\n lake: ${basic.name}\n location: us-west1\n name: zone\n resourceSpec:\n locationType: MULTI_REGION\n type: RAW\n description: Zone for DCL\n displayName: Zone for DCL\n project: my-project-name\n labels: {}\n basic:\n type: gcp:dataplex:Lake\n properties:\n location: us-west1\n name: lake\n description: Lake for DCL\n displayName: Lake for DCL\n project: my-project-name\n labels:\n my-lake: exists\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nZone can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/lakes/{{lake}}/zones/{{name}}`\n\n* `{{project}}/{{location}}/{{lake}}/{{name}}`\n\n* `{{location}}/{{lake}}/{{name}}`\n\nWhen using the `pulumi import` command, Zone can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataplex/zone:Zone default projects/{{project}}/locations/{{location}}/lakes/{{lake}}/zones/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataplex/zone:Zone default {{project}}/{{location}}/{{lake}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dataplex/zone:Zone default {{location}}/{{lake}}/{{name}}\n```\n\n", "properties": { "assetStatuses": { "type": "array", @@ -186200,7 +186200,7 @@ } }, "gcp:dataproc/cluster:Cluster": { - "description": "Manages a Cloud Dataproc cluster resource within GCP.\n\n* [API documentation](https://cloud.google.com/dataproc/docs/reference/rest/v1/projects.regions.clusters)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dataproc/docs)\n\n\n!\u003e **Warning:** Due to limitations of the API, all arguments except\n`labels`,`cluster_config.worker_config.num_instances` and `cluster_config.preemptible_worker_config.num_instances` are non-updatable. Changing `cluster_config.worker_config.min_num_instances` will be ignored. Changing others will cause recreation of the\nwhole cluster!\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst simplecluster = new gcp.dataproc.Cluster(\"simplecluster\", {\n name: \"simplecluster\",\n region: \"us-central1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsimplecluster = gcp.dataproc.Cluster(\"simplecluster\",\n name=\"simplecluster\",\n region=\"us-central1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var simplecluster = new Gcp.Dataproc.Cluster(\"simplecluster\", new()\n {\n Name = \"simplecluster\",\n Region = \"us-central1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataproc\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataproc.NewCluster(ctx, \"simplecluster\", \u0026dataproc.ClusterArgs{\n\t\t\tName: pulumi.String(\"simplecluster\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataproc.Cluster;\nimport com.pulumi.gcp.dataproc.ClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var simplecluster = new Cluster(\"simplecluster\", ClusterArgs.builder()\n .name(\"simplecluster\")\n .region(\"us-central1\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n simplecluster:\n type: gcp:dataproc:Cluster\n properties:\n name: simplecluster\n region: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Advanced\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.serviceaccount.Account(\"default\", {\n accountId: \"service-account-id\",\n displayName: \"Service Account\",\n});\nconst mycluster = new gcp.dataproc.Cluster(\"mycluster\", {\n name: \"mycluster\",\n region: \"us-central1\",\n gracefulDecommissionTimeout: \"120s\",\n labels: {\n foo: \"bar\",\n },\n clusterConfig: {\n stagingBucket: \"dataproc-staging-bucket\",\n masterConfig: {\n numInstances: 1,\n machineType: \"e2-medium\",\n diskConfig: {\n bootDiskType: \"pd-ssd\",\n bootDiskSizeGb: 30,\n },\n },\n workerConfig: {\n numInstances: 2,\n machineType: \"e2-medium\",\n minCpuPlatform: \"Intel Skylake\",\n diskConfig: {\n bootDiskSizeGb: 30,\n numLocalSsds: 1,\n },\n },\n preemptibleWorkerConfig: {\n numInstances: 0,\n },\n softwareConfig: {\n imageVersion: \"2.0.35-debian10\",\n overrideProperties: {\n \"dataproc:dataproc.allow.zero.workers\": \"true\",\n },\n },\n gceClusterConfig: {\n tags: [\n \"foo\",\n \"bar\",\n ],\n serviceAccount: _default.email,\n serviceAccountScopes: [\"cloud-platform\"],\n },\n initializationActions: [{\n script: \"gs://dataproc-initialization-actions/stackdriver/stackdriver.sh\",\n timeoutSec: 500,\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.serviceaccount.Account(\"default\",\n account_id=\"service-account-id\",\n display_name=\"Service Account\")\nmycluster = gcp.dataproc.Cluster(\"mycluster\",\n name=\"mycluster\",\n region=\"us-central1\",\n graceful_decommission_timeout=\"120s\",\n labels={\n \"foo\": \"bar\",\n },\n cluster_config={\n \"staging_bucket\": \"dataproc-staging-bucket\",\n \"master_config\": {\n \"num_instances\": 1,\n \"machine_type\": \"e2-medium\",\n \"disk_config\": {\n \"boot_disk_type\": \"pd-ssd\",\n \"boot_disk_size_gb\": 30,\n },\n },\n \"worker_config\": {\n \"num_instances\": 2,\n \"machine_type\": \"e2-medium\",\n \"min_cpu_platform\": \"Intel Skylake\",\n \"disk_config\": {\n \"boot_disk_size_gb\": 30,\n \"num_local_ssds\": 1,\n },\n },\n \"preemptible_worker_config\": {\n \"num_instances\": 0,\n },\n \"software_config\": {\n \"image_version\": \"2.0.35-debian10\",\n \"override_properties\": {\n \"dataproc_dataproc_allow_zero_workers\": \"true\",\n },\n },\n \"gce_cluster_config\": {\n \"tags\": [\n \"foo\",\n \"bar\",\n ],\n \"service_account\": default.email,\n \"service_account_scopes\": [\"cloud-platform\"],\n },\n \"initialization_actions\": [{\n \"script\": \"gs://dataproc-initialization-actions/stackdriver/stackdriver.sh\",\n \"timeout_sec\": 500,\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.ServiceAccount.Account(\"default\", new()\n {\n AccountId = \"service-account-id\",\n DisplayName = \"Service Account\",\n });\n\n var mycluster = new Gcp.Dataproc.Cluster(\"mycluster\", new()\n {\n Name = \"mycluster\",\n Region = \"us-central1\",\n GracefulDecommissionTimeout = \"120s\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n ClusterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigArgs\n {\n StagingBucket = \"dataproc-staging-bucket\",\n MasterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigMasterConfigArgs\n {\n NumInstances = 1,\n MachineType = \"e2-medium\",\n DiskConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigMasterConfigDiskConfigArgs\n {\n BootDiskType = \"pd-ssd\",\n BootDiskSizeGb = 30,\n },\n },\n WorkerConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigWorkerConfigArgs\n {\n NumInstances = 2,\n MachineType = \"e2-medium\",\n MinCpuPlatform = \"Intel Skylake\",\n DiskConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigWorkerConfigDiskConfigArgs\n {\n BootDiskSizeGb = 30,\n NumLocalSsds = 1,\n },\n },\n PreemptibleWorkerConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigPreemptibleWorkerConfigArgs\n {\n NumInstances = 0,\n },\n SoftwareConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigSoftwareConfigArgs\n {\n ImageVersion = \"2.0.35-debian10\",\n OverrideProperties = \n {\n { \"dataproc:dataproc.allow.zero.workers\", \"true\" },\n },\n },\n GceClusterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigGceClusterConfigArgs\n {\n Tags = new[]\n {\n \"foo\",\n \"bar\",\n },\n ServiceAccount = @default.Email,\n ServiceAccountScopes = new[]\n {\n \"cloud-platform\",\n },\n },\n InitializationActions = new[]\n {\n new Gcp.Dataproc.Inputs.ClusterClusterConfigInitializationActionArgs\n {\n Script = \"gs://dataproc-initialization-actions/stackdriver/stackdriver.sh\",\n TimeoutSec = 500,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataproc\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := serviceaccount.NewAccount(ctx, \"default\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"service-account-id\"),\n\t\t\tDisplayName: pulumi.String(\"Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataproc.NewCluster(ctx, \"mycluster\", \u0026dataproc.ClusterArgs{\n\t\t\tName: pulumi.String(\"mycluster\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tGracefulDecommissionTimeout: pulumi.String(\"120s\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tClusterConfig: \u0026dataproc.ClusterClusterConfigArgs{\n\t\t\t\tStagingBucket: pulumi.String(\"dataproc-staging-bucket\"),\n\t\t\t\tMasterConfig: \u0026dataproc.ClusterClusterConfigMasterConfigArgs{\n\t\t\t\t\tNumInstances: pulumi.Int(1),\n\t\t\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\t\t\tDiskConfig: \u0026dataproc.ClusterClusterConfigMasterConfigDiskConfigArgs{\n\t\t\t\t\t\tBootDiskType: pulumi.String(\"pd-ssd\"),\n\t\t\t\t\t\tBootDiskSizeGb: pulumi.Int(30),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tWorkerConfig: \u0026dataproc.ClusterClusterConfigWorkerConfigArgs{\n\t\t\t\t\tNumInstances: pulumi.Int(2),\n\t\t\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\t\t\tMinCpuPlatform: pulumi.String(\"Intel Skylake\"),\n\t\t\t\t\tDiskConfig: \u0026dataproc.ClusterClusterConfigWorkerConfigDiskConfigArgs{\n\t\t\t\t\t\tBootDiskSizeGb: pulumi.Int(30),\n\t\t\t\t\t\tNumLocalSsds: pulumi.Int(1),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPreemptibleWorkerConfig: \u0026dataproc.ClusterClusterConfigPreemptibleWorkerConfigArgs{\n\t\t\t\t\tNumInstances: pulumi.Int(0),\n\t\t\t\t},\n\t\t\t\tSoftwareConfig: \u0026dataproc.ClusterClusterConfigSoftwareConfigArgs{\n\t\t\t\t\tImageVersion: pulumi.String(\"2.0.35-debian10\"),\n\t\t\t\t\tOverrideProperties: pulumi.StringMap{\n\t\t\t\t\t\t\"dataproc:dataproc.allow.zero.workers\": pulumi.String(\"true\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tGceClusterConfig: \u0026dataproc.ClusterClusterConfigGceClusterConfigArgs{\n\t\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t\t\t},\n\t\t\t\t\tServiceAccount: _default.Email,\n\t\t\t\t\tServiceAccountScopes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"cloud-platform\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tInitializationActions: dataproc.ClusterClusterConfigInitializationActionArray{\n\t\t\t\t\t\u0026dataproc.ClusterClusterConfigInitializationActionArgs{\n\t\t\t\t\t\tScript: pulumi.String(\"gs://dataproc-initialization-actions/stackdriver/stackdriver.sh\"),\n\t\t\t\t\t\tTimeoutSec: pulumi.Int(500),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.dataproc.Cluster;\nimport com.pulumi.gcp.dataproc.ClusterArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigMasterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigMasterConfigDiskConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigWorkerConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigWorkerConfigDiskConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigPreemptibleWorkerConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigSoftwareConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigGceClusterConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Account(\"default\", AccountArgs.builder()\n .accountId(\"service-account-id\")\n .displayName(\"Service Account\")\n .build());\n\n var mycluster = new Cluster(\"mycluster\", ClusterArgs.builder()\n .name(\"mycluster\")\n .region(\"us-central1\")\n .gracefulDecommissionTimeout(\"120s\")\n .labels(Map.of(\"foo\", \"bar\"))\n .clusterConfig(ClusterClusterConfigArgs.builder()\n .stagingBucket(\"dataproc-staging-bucket\")\n .masterConfig(ClusterClusterConfigMasterConfigArgs.builder()\n .numInstances(1)\n .machineType(\"e2-medium\")\n .diskConfig(ClusterClusterConfigMasterConfigDiskConfigArgs.builder()\n .bootDiskType(\"pd-ssd\")\n .bootDiskSizeGb(30)\n .build())\n .build())\n .workerConfig(ClusterClusterConfigWorkerConfigArgs.builder()\n .numInstances(2)\n .machineType(\"e2-medium\")\n .minCpuPlatform(\"Intel Skylake\")\n .diskConfig(ClusterClusterConfigWorkerConfigDiskConfigArgs.builder()\n .bootDiskSizeGb(30)\n .numLocalSsds(1)\n .build())\n .build())\n .preemptibleWorkerConfig(ClusterClusterConfigPreemptibleWorkerConfigArgs.builder()\n .numInstances(0)\n .build())\n .softwareConfig(ClusterClusterConfigSoftwareConfigArgs.builder()\n .imageVersion(\"2.0.35-debian10\")\n .overrideProperties(Map.of(\"dataproc:dataproc.allow.zero.workers\", \"true\"))\n .build())\n .gceClusterConfig(ClusterClusterConfigGceClusterConfigArgs.builder()\n .tags( \n \"foo\",\n \"bar\")\n .serviceAccount(default_.email())\n .serviceAccountScopes(\"cloud-platform\")\n .build())\n .initializationActions(ClusterClusterConfigInitializationActionArgs.builder()\n .script(\"gs://dataproc-initialization-actions/stackdriver/stackdriver.sh\")\n .timeoutSec(500)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:serviceaccount:Account\n properties:\n accountId: service-account-id\n displayName: Service Account\n mycluster:\n type: gcp:dataproc:Cluster\n properties:\n name: mycluster\n region: us-central1\n gracefulDecommissionTimeout: 120s\n labels:\n foo: bar\n clusterConfig:\n stagingBucket: dataproc-staging-bucket\n masterConfig:\n numInstances: 1\n machineType: e2-medium\n diskConfig:\n bootDiskType: pd-ssd\n bootDiskSizeGb: 30\n workerConfig:\n numInstances: 2\n machineType: e2-medium\n minCpuPlatform: Intel Skylake\n diskConfig:\n bootDiskSizeGb: 30\n numLocalSsds: 1\n preemptibleWorkerConfig:\n numInstances: 0\n softwareConfig:\n imageVersion: 2.0.35-debian10\n overrideProperties:\n dataproc:dataproc.allow.zero.workers: 'true'\n gceClusterConfig:\n tags:\n - foo\n - bar\n serviceAccount: ${default.email}\n serviceAccountScopes:\n - cloud-platform\n initializationActions:\n - script: gs://dataproc-initialization-actions/stackdriver/stackdriver.sh\n timeoutSec: 500\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Using A GPU Accelerator\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst acceleratedCluster = new gcp.dataproc.Cluster(\"accelerated_cluster\", {\n name: \"my-cluster-with-gpu\",\n region: \"us-central1\",\n clusterConfig: {\n gceClusterConfig: {\n zone: \"us-central1-a\",\n },\n masterConfig: {\n accelerators: [{\n acceleratorType: \"nvidia-tesla-k80\",\n acceleratorCount: 1,\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccelerated_cluster = gcp.dataproc.Cluster(\"accelerated_cluster\",\n name=\"my-cluster-with-gpu\",\n region=\"us-central1\",\n cluster_config={\n \"gce_cluster_config\": {\n \"zone\": \"us-central1-a\",\n },\n \"master_config\": {\n \"accelerators\": [{\n \"accelerator_type\": \"nvidia-tesla-k80\",\n \"accelerator_count\": 1,\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var acceleratedCluster = new Gcp.Dataproc.Cluster(\"accelerated_cluster\", new()\n {\n Name = \"my-cluster-with-gpu\",\n Region = \"us-central1\",\n ClusterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigArgs\n {\n GceClusterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigGceClusterConfigArgs\n {\n Zone = \"us-central1-a\",\n },\n MasterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigMasterConfigArgs\n {\n Accelerators = new[]\n {\n new Gcp.Dataproc.Inputs.ClusterClusterConfigMasterConfigAcceleratorArgs\n {\n AcceleratorType = \"nvidia-tesla-k80\",\n AcceleratorCount = 1,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataproc\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataproc.NewCluster(ctx, \"accelerated_cluster\", \u0026dataproc.ClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster-with-gpu\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tClusterConfig: \u0026dataproc.ClusterClusterConfigArgs{\n\t\t\t\tGceClusterConfig: \u0026dataproc.ClusterClusterConfigGceClusterConfigArgs{\n\t\t\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\t\t},\n\t\t\t\tMasterConfig: \u0026dataproc.ClusterClusterConfigMasterConfigArgs{\n\t\t\t\t\tAccelerators: dataproc.ClusterClusterConfigMasterConfigAcceleratorArray{\n\t\t\t\t\t\t\u0026dataproc.ClusterClusterConfigMasterConfigAcceleratorArgs{\n\t\t\t\t\t\t\tAcceleratorType: pulumi.String(\"nvidia-tesla-k80\"),\n\t\t\t\t\t\t\tAcceleratorCount: pulumi.Int(1),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataproc.Cluster;\nimport com.pulumi.gcp.dataproc.ClusterArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigGceClusterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigMasterConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var acceleratedCluster = new Cluster(\"acceleratedCluster\", ClusterArgs.builder()\n .name(\"my-cluster-with-gpu\")\n .region(\"us-central1\")\n .clusterConfig(ClusterClusterConfigArgs.builder()\n .gceClusterConfig(ClusterClusterConfigGceClusterConfigArgs.builder()\n .zone(\"us-central1-a\")\n .build())\n .masterConfig(ClusterClusterConfigMasterConfigArgs.builder()\n .accelerators(ClusterClusterConfigMasterConfigAcceleratorArgs.builder()\n .acceleratorType(\"nvidia-tesla-k80\")\n .acceleratorCount(\"1\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n acceleratedCluster:\n type: gcp:dataproc:Cluster\n name: accelerated_cluster\n properties:\n name: my-cluster-with-gpu\n region: us-central1\n clusterConfig:\n gceClusterConfig:\n zone: us-central1-a\n masterConfig:\n accelerators:\n - acceleratorType: nvidia-tesla-k80\n acceleratorCount: '1'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource does not support import.\n\n", + "description": "Manages a Cloud Dataproc cluster resource within GCP.\n\n* [API documentation](https://cloud.google.com/dataproc/docs/reference/rest/v1/projects.regions.clusters)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dataproc/docs)\n\n\n!\u003e **Warning:** Due to limitations of the API, all arguments except\n`labels`,`cluster_config.worker_config.num_instances` and `cluster_config.preemptible_worker_config.num_instances` are non-updatable. Changing `cluster_config.worker_config.min_num_instances` will be ignored. Changing others will cause recreation of the\nwhole cluster!\n\n## Example Usage\n\n### Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst simplecluster = new gcp.dataproc.Cluster(\"simplecluster\", {\n name: \"simplecluster\",\n region: \"us-central1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsimplecluster = gcp.dataproc.Cluster(\"simplecluster\",\n name=\"simplecluster\",\n region=\"us-central1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var simplecluster = new Gcp.Dataproc.Cluster(\"simplecluster\", new()\n {\n Name = \"simplecluster\",\n Region = \"us-central1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataproc\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataproc.NewCluster(ctx, \"simplecluster\", \u0026dataproc.ClusterArgs{\n\t\t\tName: pulumi.String(\"simplecluster\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataproc.Cluster;\nimport com.pulumi.gcp.dataproc.ClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var simplecluster = new Cluster(\"simplecluster\", ClusterArgs.builder()\n .name(\"simplecluster\")\n .region(\"us-central1\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n simplecluster:\n type: gcp:dataproc:Cluster\n properties:\n name: simplecluster\n region: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Advanced\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.serviceaccount.Account(\"default\", {\n accountId: \"service-account-id\",\n displayName: \"Service Account\",\n});\nconst mycluster = new gcp.dataproc.Cluster(\"mycluster\", {\n name: \"mycluster\",\n region: \"us-central1\",\n gracefulDecommissionTimeout: \"120s\",\n labels: {\n foo: \"bar\",\n },\n clusterConfig: {\n stagingBucket: \"dataproc-staging-bucket\",\n masterConfig: {\n numInstances: 1,\n machineType: \"e2-medium\",\n diskConfig: {\n bootDiskType: \"pd-ssd\",\n bootDiskSizeGb: 30,\n },\n },\n workerConfig: {\n numInstances: 2,\n machineType: \"e2-medium\",\n minCpuPlatform: \"Intel Skylake\",\n diskConfig: {\n bootDiskSizeGb: 30,\n numLocalSsds: 1,\n },\n },\n preemptibleWorkerConfig: {\n numInstances: 0,\n },\n softwareConfig: {\n imageVersion: \"2.0.35-debian10\",\n overrideProperties: {\n \"dataproc:dataproc.allow.zero.workers\": \"true\",\n },\n },\n gceClusterConfig: {\n tags: [\n \"foo\",\n \"bar\",\n ],\n serviceAccount: _default.email,\n serviceAccountScopes: [\"cloud-platform\"],\n },\n initializationActions: [{\n script: \"gs://dataproc-initialization-actions/stackdriver/stackdriver.sh\",\n timeoutSec: 500,\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.serviceaccount.Account(\"default\",\n account_id=\"service-account-id\",\n display_name=\"Service Account\")\nmycluster = gcp.dataproc.Cluster(\"mycluster\",\n name=\"mycluster\",\n region=\"us-central1\",\n graceful_decommission_timeout=\"120s\",\n labels={\n \"foo\": \"bar\",\n },\n cluster_config={\n \"staging_bucket\": \"dataproc-staging-bucket\",\n \"master_config\": {\n \"num_instances\": 1,\n \"machine_type\": \"e2-medium\",\n \"disk_config\": {\n \"boot_disk_type\": \"pd-ssd\",\n \"boot_disk_size_gb\": 30,\n },\n },\n \"worker_config\": {\n \"num_instances\": 2,\n \"machine_type\": \"e2-medium\",\n \"min_cpu_platform\": \"Intel Skylake\",\n \"disk_config\": {\n \"boot_disk_size_gb\": 30,\n \"num_local_ssds\": 1,\n },\n },\n \"preemptible_worker_config\": {\n \"num_instances\": 0,\n },\n \"software_config\": {\n \"image_version\": \"2.0.35-debian10\",\n \"override_properties\": {\n \"dataproc:dataproc.allow.zero.workers\": \"true\",\n },\n },\n \"gce_cluster_config\": {\n \"tags\": [\n \"foo\",\n \"bar\",\n ],\n \"service_account\": default.email,\n \"service_account_scopes\": [\"cloud-platform\"],\n },\n \"initialization_actions\": [{\n \"script\": \"gs://dataproc-initialization-actions/stackdriver/stackdriver.sh\",\n \"timeout_sec\": 500,\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.ServiceAccount.Account(\"default\", new()\n {\n AccountId = \"service-account-id\",\n DisplayName = \"Service Account\",\n });\n\n var mycluster = new Gcp.Dataproc.Cluster(\"mycluster\", new()\n {\n Name = \"mycluster\",\n Region = \"us-central1\",\n GracefulDecommissionTimeout = \"120s\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n ClusterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigArgs\n {\n StagingBucket = \"dataproc-staging-bucket\",\n MasterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigMasterConfigArgs\n {\n NumInstances = 1,\n MachineType = \"e2-medium\",\n DiskConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigMasterConfigDiskConfigArgs\n {\n BootDiskType = \"pd-ssd\",\n BootDiskSizeGb = 30,\n },\n },\n WorkerConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigWorkerConfigArgs\n {\n NumInstances = 2,\n MachineType = \"e2-medium\",\n MinCpuPlatform = \"Intel Skylake\",\n DiskConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigWorkerConfigDiskConfigArgs\n {\n BootDiskSizeGb = 30,\n NumLocalSsds = 1,\n },\n },\n PreemptibleWorkerConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigPreemptibleWorkerConfigArgs\n {\n NumInstances = 0,\n },\n SoftwareConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigSoftwareConfigArgs\n {\n ImageVersion = \"2.0.35-debian10\",\n OverrideProperties = \n {\n { \"dataproc:dataproc.allow.zero.workers\", \"true\" },\n },\n },\n GceClusterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigGceClusterConfigArgs\n {\n Tags = new[]\n {\n \"foo\",\n \"bar\",\n },\n ServiceAccount = @default.Email,\n ServiceAccountScopes = new[]\n {\n \"cloud-platform\",\n },\n },\n InitializationActions = new[]\n {\n new Gcp.Dataproc.Inputs.ClusterClusterConfigInitializationActionArgs\n {\n Script = \"gs://dataproc-initialization-actions/stackdriver/stackdriver.sh\",\n TimeoutSec = 500,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataproc\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := serviceaccount.NewAccount(ctx, \"default\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"service-account-id\"),\n\t\t\tDisplayName: pulumi.String(\"Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataproc.NewCluster(ctx, \"mycluster\", \u0026dataproc.ClusterArgs{\n\t\t\tName: pulumi.String(\"mycluster\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tGracefulDecommissionTimeout: pulumi.String(\"120s\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tClusterConfig: \u0026dataproc.ClusterClusterConfigArgs{\n\t\t\t\tStagingBucket: pulumi.String(\"dataproc-staging-bucket\"),\n\t\t\t\tMasterConfig: \u0026dataproc.ClusterClusterConfigMasterConfigArgs{\n\t\t\t\t\tNumInstances: pulumi.Int(1),\n\t\t\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\t\t\tDiskConfig: \u0026dataproc.ClusterClusterConfigMasterConfigDiskConfigArgs{\n\t\t\t\t\t\tBootDiskType: pulumi.String(\"pd-ssd\"),\n\t\t\t\t\t\tBootDiskSizeGb: pulumi.Int(30),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tWorkerConfig: \u0026dataproc.ClusterClusterConfigWorkerConfigArgs{\n\t\t\t\t\tNumInstances: pulumi.Int(2),\n\t\t\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\t\t\tMinCpuPlatform: pulumi.String(\"Intel Skylake\"),\n\t\t\t\t\tDiskConfig: \u0026dataproc.ClusterClusterConfigWorkerConfigDiskConfigArgs{\n\t\t\t\t\t\tBootDiskSizeGb: pulumi.Int(30),\n\t\t\t\t\t\tNumLocalSsds: pulumi.Int(1),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPreemptibleWorkerConfig: \u0026dataproc.ClusterClusterConfigPreemptibleWorkerConfigArgs{\n\t\t\t\t\tNumInstances: pulumi.Int(0),\n\t\t\t\t},\n\t\t\t\tSoftwareConfig: \u0026dataproc.ClusterClusterConfigSoftwareConfigArgs{\n\t\t\t\t\tImageVersion: pulumi.String(\"2.0.35-debian10\"),\n\t\t\t\t\tOverrideProperties: pulumi.StringMap{\n\t\t\t\t\t\t\"dataproc:dataproc.allow.zero.workers\": pulumi.String(\"true\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tGceClusterConfig: \u0026dataproc.ClusterClusterConfigGceClusterConfigArgs{\n\t\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t\t\t},\n\t\t\t\t\tServiceAccount: _default.Email,\n\t\t\t\t\tServiceAccountScopes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"cloud-platform\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tInitializationActions: dataproc.ClusterClusterConfigInitializationActionArray{\n\t\t\t\t\t\u0026dataproc.ClusterClusterConfigInitializationActionArgs{\n\t\t\t\t\t\tScript: pulumi.String(\"gs://dataproc-initialization-actions/stackdriver/stackdriver.sh\"),\n\t\t\t\t\t\tTimeoutSec: pulumi.Int(500),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.dataproc.Cluster;\nimport com.pulumi.gcp.dataproc.ClusterArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigMasterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigMasterConfigDiskConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigWorkerConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigWorkerConfigDiskConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigPreemptibleWorkerConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigSoftwareConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigGceClusterConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Account(\"default\", AccountArgs.builder()\n .accountId(\"service-account-id\")\n .displayName(\"Service Account\")\n .build());\n\n var mycluster = new Cluster(\"mycluster\", ClusterArgs.builder()\n .name(\"mycluster\")\n .region(\"us-central1\")\n .gracefulDecommissionTimeout(\"120s\")\n .labels(Map.of(\"foo\", \"bar\"))\n .clusterConfig(ClusterClusterConfigArgs.builder()\n .stagingBucket(\"dataproc-staging-bucket\")\n .masterConfig(ClusterClusterConfigMasterConfigArgs.builder()\n .numInstances(1)\n .machineType(\"e2-medium\")\n .diskConfig(ClusterClusterConfigMasterConfigDiskConfigArgs.builder()\n .bootDiskType(\"pd-ssd\")\n .bootDiskSizeGb(30)\n .build())\n .build())\n .workerConfig(ClusterClusterConfigWorkerConfigArgs.builder()\n .numInstances(2)\n .machineType(\"e2-medium\")\n .minCpuPlatform(\"Intel Skylake\")\n .diskConfig(ClusterClusterConfigWorkerConfigDiskConfigArgs.builder()\n .bootDiskSizeGb(30)\n .numLocalSsds(1)\n .build())\n .build())\n .preemptibleWorkerConfig(ClusterClusterConfigPreemptibleWorkerConfigArgs.builder()\n .numInstances(0)\n .build())\n .softwareConfig(ClusterClusterConfigSoftwareConfigArgs.builder()\n .imageVersion(\"2.0.35-debian10\")\n .overrideProperties(Map.of(\"dataproc:dataproc.allow.zero.workers\", \"true\"))\n .build())\n .gceClusterConfig(ClusterClusterConfigGceClusterConfigArgs.builder()\n .tags( \n \"foo\",\n \"bar\")\n .serviceAccount(default_.email())\n .serviceAccountScopes(\"cloud-platform\")\n .build())\n .initializationActions(ClusterClusterConfigInitializationActionArgs.builder()\n .script(\"gs://dataproc-initialization-actions/stackdriver/stackdriver.sh\")\n .timeoutSec(500)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:serviceaccount:Account\n properties:\n accountId: service-account-id\n displayName: Service Account\n mycluster:\n type: gcp:dataproc:Cluster\n properties:\n name: mycluster\n region: us-central1\n gracefulDecommissionTimeout: 120s\n labels:\n foo: bar\n clusterConfig:\n stagingBucket: dataproc-staging-bucket\n masterConfig:\n numInstances: 1\n machineType: e2-medium\n diskConfig:\n bootDiskType: pd-ssd\n bootDiskSizeGb: 30\n workerConfig:\n numInstances: 2\n machineType: e2-medium\n minCpuPlatform: Intel Skylake\n diskConfig:\n bootDiskSizeGb: 30\n numLocalSsds: 1\n preemptibleWorkerConfig:\n numInstances: 0\n softwareConfig:\n imageVersion: 2.0.35-debian10\n overrideProperties:\n dataproc:dataproc.allow.zero.workers: 'true'\n gceClusterConfig:\n tags:\n - foo\n - bar\n serviceAccount: ${default.email}\n serviceAccountScopes:\n - cloud-platform\n initializationActions:\n - script: gs://dataproc-initialization-actions/stackdriver/stackdriver.sh\n timeoutSec: 500\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Using A GPU Accelerator\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst acceleratedCluster = new gcp.dataproc.Cluster(\"accelerated_cluster\", {\n name: \"my-cluster-with-gpu\",\n region: \"us-central1\",\n clusterConfig: {\n gceClusterConfig: {\n zone: \"us-central1-a\",\n },\n masterConfig: {\n accelerators: [{\n acceleratorType: \"nvidia-tesla-k80\",\n acceleratorCount: 1,\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccelerated_cluster = gcp.dataproc.Cluster(\"accelerated_cluster\",\n name=\"my-cluster-with-gpu\",\n region=\"us-central1\",\n cluster_config={\n \"gce_cluster_config\": {\n \"zone\": \"us-central1-a\",\n },\n \"master_config\": {\n \"accelerators\": [{\n \"accelerator_type\": \"nvidia-tesla-k80\",\n \"accelerator_count\": 1,\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var acceleratedCluster = new Gcp.Dataproc.Cluster(\"accelerated_cluster\", new()\n {\n Name = \"my-cluster-with-gpu\",\n Region = \"us-central1\",\n ClusterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigArgs\n {\n GceClusterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigGceClusterConfigArgs\n {\n Zone = \"us-central1-a\",\n },\n MasterConfig = new Gcp.Dataproc.Inputs.ClusterClusterConfigMasterConfigArgs\n {\n Accelerators = new[]\n {\n new Gcp.Dataproc.Inputs.ClusterClusterConfigMasterConfigAcceleratorArgs\n {\n AcceleratorType = \"nvidia-tesla-k80\",\n AcceleratorCount = 1,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataproc\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dataproc.NewCluster(ctx, \"accelerated_cluster\", \u0026dataproc.ClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster-with-gpu\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tClusterConfig: \u0026dataproc.ClusterClusterConfigArgs{\n\t\t\t\tGceClusterConfig: \u0026dataproc.ClusterClusterConfigGceClusterConfigArgs{\n\t\t\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\t\t},\n\t\t\t\tMasterConfig: \u0026dataproc.ClusterClusterConfigMasterConfigArgs{\n\t\t\t\t\tAccelerators: dataproc.ClusterClusterConfigMasterConfigAcceleratorArray{\n\t\t\t\t\t\t\u0026dataproc.ClusterClusterConfigMasterConfigAcceleratorArgs{\n\t\t\t\t\t\t\tAcceleratorType: pulumi.String(\"nvidia-tesla-k80\"),\n\t\t\t\t\t\t\tAcceleratorCount: pulumi.Int(1),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataproc.Cluster;\nimport com.pulumi.gcp.dataproc.ClusterArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigGceClusterConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.ClusterClusterConfigMasterConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var acceleratedCluster = new Cluster(\"acceleratedCluster\", ClusterArgs.builder()\n .name(\"my-cluster-with-gpu\")\n .region(\"us-central1\")\n .clusterConfig(ClusterClusterConfigArgs.builder()\n .gceClusterConfig(ClusterClusterConfigGceClusterConfigArgs.builder()\n .zone(\"us-central1-a\")\n .build())\n .masterConfig(ClusterClusterConfigMasterConfigArgs.builder()\n .accelerators(ClusterClusterConfigMasterConfigAcceleratorArgs.builder()\n .acceleratorType(\"nvidia-tesla-k80\")\n .acceleratorCount(\"1\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n acceleratedCluster:\n type: gcp:dataproc:Cluster\n name: accelerated_cluster\n properties:\n name: my-cluster-with-gpu\n region: us-central1\n clusterConfig:\n gceClusterConfig:\n zone: us-central1-a\n masterConfig:\n accelerators:\n - acceleratorType: nvidia-tesla-k80\n acceleratorCount: '1'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource does not support import.\n\n", "properties": { "clusterConfig": { "$ref": "#/types/gcp:dataproc/ClusterClusterConfig:ClusterClusterConfig", @@ -186672,7 +186672,7 @@ } }, "gcp:dataproc/job:Job": { - "description": "Manages a job resource within a Dataproc cluster within GCE. For more information see\n[the official dataproc documentation](https://cloud.google.com/dataproc/).\n\n!\u003e **Note:** This resource does not support 'update' and changing any attributes will cause the resource to be recreated.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst mycluster = new gcp.dataproc.Cluster(\"mycluster\", {\n name: \"dproc-cluster-unique-name\",\n region: \"us-central1\",\n});\n// Submit an example spark job to a dataproc cluster\nconst spark = new gcp.dataproc.Job(\"spark\", {\n region: mycluster.region,\n forceDelete: true,\n placement: {\n clusterName: mycluster.name,\n },\n sparkConfig: {\n mainClass: \"org.apache.spark.examples.SparkPi\",\n jarFileUris: [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n args: [\"1000\"],\n properties: {\n \"spark.logConf\": \"true\",\n },\n loggingConfig: {\n driverLogLevels: {\n root: \"INFO\",\n },\n },\n },\n});\n// Submit an example pyspark job to a dataproc cluster\nconst pyspark = new gcp.dataproc.Job(\"pyspark\", {\n region: mycluster.region,\n forceDelete: true,\n placement: {\n clusterName: mycluster.name,\n },\n pysparkConfig: {\n mainPythonFileUri: \"gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py\",\n properties: {\n \"spark.logConf\": \"true\",\n },\n },\n});\nexport const sparkStatus = spark.statuses.apply(statuses =\u003e statuses[0].state);\nexport const pysparkStatus = pyspark.statuses.apply(statuses =\u003e statuses[0].state);\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmycluster = gcp.dataproc.Cluster(\"mycluster\",\n name=\"dproc-cluster-unique-name\",\n region=\"us-central1\")\n# Submit an example spark job to a dataproc cluster\nspark = gcp.dataproc.Job(\"spark\",\n region=mycluster.region,\n force_delete=True,\n placement={\n \"cluster_name\": mycluster.name,\n },\n spark_config={\n \"main_class\": \"org.apache.spark.examples.SparkPi\",\n \"jar_file_uris\": [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n \"args\": [\"1000\"],\n \"properties\": {\n \"spark_log_conf\": \"true\",\n },\n \"logging_config\": {\n \"driver_log_levels\": {\n \"root\": \"INFO\",\n },\n },\n })\n# Submit an example pyspark job to a dataproc cluster\npyspark = gcp.dataproc.Job(\"pyspark\",\n region=mycluster.region,\n force_delete=True,\n placement={\n \"cluster_name\": mycluster.name,\n },\n pyspark_config={\n \"main_python_file_uri\": \"gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py\",\n \"properties\": {\n \"spark_log_conf\": \"true\",\n },\n })\npulumi.export(\"sparkStatus\", spark.statuses[0].state)\npulumi.export(\"pysparkStatus\", pyspark.statuses[0].state)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var mycluster = new Gcp.Dataproc.Cluster(\"mycluster\", new()\n {\n Name = \"dproc-cluster-unique-name\",\n Region = \"us-central1\",\n });\n\n // Submit an example spark job to a dataproc cluster\n var spark = new Gcp.Dataproc.Job(\"spark\", new()\n {\n Region = mycluster.Region,\n ForceDelete = true,\n Placement = new Gcp.Dataproc.Inputs.JobPlacementArgs\n {\n ClusterName = mycluster.Name,\n },\n SparkConfig = new Gcp.Dataproc.Inputs.JobSparkConfigArgs\n {\n MainClass = \"org.apache.spark.examples.SparkPi\",\n JarFileUris = new[]\n {\n \"file:///usr/lib/spark/examples/jars/spark-examples.jar\",\n },\n Args = new[]\n {\n \"1000\",\n },\n Properties = \n {\n { \"spark.logConf\", \"true\" },\n },\n LoggingConfig = new Gcp.Dataproc.Inputs.JobSparkConfigLoggingConfigArgs\n {\n DriverLogLevels = \n {\n { \"root\", \"INFO\" },\n },\n },\n },\n });\n\n // Submit an example pyspark job to a dataproc cluster\n var pyspark = new Gcp.Dataproc.Job(\"pyspark\", new()\n {\n Region = mycluster.Region,\n ForceDelete = true,\n Placement = new Gcp.Dataproc.Inputs.JobPlacementArgs\n {\n ClusterName = mycluster.Name,\n },\n PysparkConfig = new Gcp.Dataproc.Inputs.JobPysparkConfigArgs\n {\n MainPythonFileUri = \"gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py\",\n Properties = \n {\n { \"spark.logConf\", \"true\" },\n },\n },\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"sparkStatus\"] = spark.Statuses.Apply(statuses =\u003e statuses[0].State),\n [\"pysparkStatus\"] = pyspark.Statuses.Apply(statuses =\u003e statuses[0].State),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataproc\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmycluster, err := dataproc.NewCluster(ctx, \"mycluster\", \u0026dataproc.ClusterArgs{\n\t\t\tName: pulumi.String(\"dproc-cluster-unique-name\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Submit an example spark job to a dataproc cluster\n\t\tspark, err := dataproc.NewJob(ctx, \"spark\", \u0026dataproc.JobArgs{\n\t\t\tRegion: mycluster.Region,\n\t\t\tForceDelete: pulumi.Bool(true),\n\t\t\tPlacement: \u0026dataproc.JobPlacementArgs{\n\t\t\t\tClusterName: mycluster.Name,\n\t\t\t},\n\t\t\tSparkConfig: \u0026dataproc.JobSparkConfigArgs{\n\t\t\t\tMainClass: pulumi.String(\"org.apache.spark.examples.SparkPi\"),\n\t\t\t\tJarFileUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"),\n\t\t\t\t},\n\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"1000\"),\n\t\t\t\t},\n\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\"spark.logConf\": pulumi.String(\"true\"),\n\t\t\t\t},\n\t\t\t\tLoggingConfig: \u0026dataproc.JobSparkConfigLoggingConfigArgs{\n\t\t\t\t\tDriverLogLevels: pulumi.StringMap{\n\t\t\t\t\t\t\"root\": pulumi.String(\"INFO\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Submit an example pyspark job to a dataproc cluster\n\t\tpyspark, err := dataproc.NewJob(ctx, \"pyspark\", \u0026dataproc.JobArgs{\n\t\t\tRegion: mycluster.Region,\n\t\t\tForceDelete: pulumi.Bool(true),\n\t\t\tPlacement: \u0026dataproc.JobPlacementArgs{\n\t\t\t\tClusterName: mycluster.Name,\n\t\t\t},\n\t\t\tPysparkConfig: \u0026dataproc.JobPysparkConfigArgs{\n\t\t\t\tMainPythonFileUri: pulumi.String(\"gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py\"),\n\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\"spark.logConf\": pulumi.String(\"true\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"sparkStatus\", spark.Statuses.ApplyT(func(statuses []dataproc.JobStatus) (*string, error) {\n\t\t\treturn \u0026statuses[0].State, nil\n\t\t}).(pulumi.StringPtrOutput))\n\t\tctx.Export(\"pysparkStatus\", pyspark.Statuses.ApplyT(func(statuses []dataproc.JobStatus) (*string, error) {\n\t\t\treturn \u0026statuses[0].State, nil\n\t\t}).(pulumi.StringPtrOutput))\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataproc.Cluster;\nimport com.pulumi.gcp.dataproc.ClusterArgs;\nimport com.pulumi.gcp.dataproc.Job;\nimport com.pulumi.gcp.dataproc.JobArgs;\nimport com.pulumi.gcp.dataproc.inputs.JobPlacementArgs;\nimport com.pulumi.gcp.dataproc.inputs.JobSparkConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.JobSparkConfigLoggingConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.JobPysparkConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var mycluster = new Cluster(\"mycluster\", ClusterArgs.builder()\n .name(\"dproc-cluster-unique-name\")\n .region(\"us-central1\")\n .build());\n\n // Submit an example spark job to a dataproc cluster\n var spark = new Job(\"spark\", JobArgs.builder()\n .region(mycluster.region())\n .forceDelete(true)\n .placement(JobPlacementArgs.builder()\n .clusterName(mycluster.name())\n .build())\n .sparkConfig(JobSparkConfigArgs.builder()\n .mainClass(\"org.apache.spark.examples.SparkPi\")\n .jarFileUris(\"file:///usr/lib/spark/examples/jars/spark-examples.jar\")\n .args(\"1000\")\n .properties(Map.of(\"spark.logConf\", \"true\"))\n .loggingConfig(JobSparkConfigLoggingConfigArgs.builder()\n .driverLogLevels(Map.of(\"root\", \"INFO\"))\n .build())\n .build())\n .build());\n\n // Submit an example pyspark job to a dataproc cluster\n var pyspark = new Job(\"pyspark\", JobArgs.builder()\n .region(mycluster.region())\n .forceDelete(true)\n .placement(JobPlacementArgs.builder()\n .clusterName(mycluster.name())\n .build())\n .pysparkConfig(JobPysparkConfigArgs.builder()\n .mainPythonFileUri(\"gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py\")\n .properties(Map.of(\"spark.logConf\", \"true\"))\n .build())\n .build());\n\n ctx.export(\"sparkStatus\", spark.statuses().applyValue(statuses -\u003e statuses[0].state()));\n ctx.export(\"pysparkStatus\", pyspark.statuses().applyValue(statuses -\u003e statuses[0].state()));\n }\n}\n```\n```yaml\nresources:\n mycluster:\n type: gcp:dataproc:Cluster\n properties:\n name: dproc-cluster-unique-name\n region: us-central1\n # Submit an example spark job to a dataproc cluster\n spark:\n type: gcp:dataproc:Job\n properties:\n region: ${mycluster.region}\n forceDelete: true\n placement:\n clusterName: ${mycluster.name}\n sparkConfig:\n mainClass: org.apache.spark.examples.SparkPi\n jarFileUris:\n - file:///usr/lib/spark/examples/jars/spark-examples.jar\n args:\n - '1000'\n properties:\n spark.logConf: 'true'\n loggingConfig:\n driverLogLevels:\n root: INFO\n # Submit an example pyspark job to a dataproc cluster\n pyspark:\n type: gcp:dataproc:Job\n properties:\n region: ${mycluster.region}\n forceDelete: true\n placement:\n clusterName: ${mycluster.name}\n pysparkConfig:\n mainPythonFileUri: gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py\n properties:\n spark.logConf: 'true'\noutputs:\n # Check out current state of the jobs\n sparkStatus: ${spark.statuses[0].state}\n pysparkStatus: ${pyspark.statuses[0].state}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource does not support import.\n\n", + "description": "Manages a job resource within a Dataproc cluster within GCE. For more information see\n[the official dataproc documentation](https://cloud.google.com/dataproc/).\n\n!\u003e **Note:** This resource does not support 'update' and changing any attributes will cause the resource to be recreated.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst mycluster = new gcp.dataproc.Cluster(\"mycluster\", {\n name: \"dproc-cluster-unique-name\",\n region: \"us-central1\",\n});\n// Submit an example spark job to a dataproc cluster\nconst spark = new gcp.dataproc.Job(\"spark\", {\n region: mycluster.region,\n forceDelete: true,\n placement: {\n clusterName: mycluster.name,\n },\n sparkConfig: {\n mainClass: \"org.apache.spark.examples.SparkPi\",\n jarFileUris: [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n args: [\"1000\"],\n properties: {\n \"spark.logConf\": \"true\",\n },\n loggingConfig: {\n driverLogLevels: {\n root: \"INFO\",\n },\n },\n },\n});\n// Submit an example pyspark job to a dataproc cluster\nconst pyspark = new gcp.dataproc.Job(\"pyspark\", {\n region: mycluster.region,\n forceDelete: true,\n placement: {\n clusterName: mycluster.name,\n },\n pysparkConfig: {\n mainPythonFileUri: \"gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py\",\n properties: {\n \"spark.logConf\": \"true\",\n },\n },\n});\nexport const sparkStatus = spark.statuses.apply(statuses =\u003e statuses[0].state);\nexport const pysparkStatus = pyspark.statuses.apply(statuses =\u003e statuses[0].state);\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmycluster = gcp.dataproc.Cluster(\"mycluster\",\n name=\"dproc-cluster-unique-name\",\n region=\"us-central1\")\n# Submit an example spark job to a dataproc cluster\nspark = gcp.dataproc.Job(\"spark\",\n region=mycluster.region,\n force_delete=True,\n placement={\n \"cluster_name\": mycluster.name,\n },\n spark_config={\n \"main_class\": \"org.apache.spark.examples.SparkPi\",\n \"jar_file_uris\": [\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"],\n \"args\": [\"1000\"],\n \"properties\": {\n \"spark.logConf\": \"true\",\n },\n \"logging_config\": {\n \"driver_log_levels\": {\n \"root\": \"INFO\",\n },\n },\n })\n# Submit an example pyspark job to a dataproc cluster\npyspark = gcp.dataproc.Job(\"pyspark\",\n region=mycluster.region,\n force_delete=True,\n placement={\n \"cluster_name\": mycluster.name,\n },\n pyspark_config={\n \"main_python_file_uri\": \"gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py\",\n \"properties\": {\n \"spark.logConf\": \"true\",\n },\n })\npulumi.export(\"sparkStatus\", spark.statuses[0].state)\npulumi.export(\"pysparkStatus\", pyspark.statuses[0].state)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var mycluster = new Gcp.Dataproc.Cluster(\"mycluster\", new()\n {\n Name = \"dproc-cluster-unique-name\",\n Region = \"us-central1\",\n });\n\n // Submit an example spark job to a dataproc cluster\n var spark = new Gcp.Dataproc.Job(\"spark\", new()\n {\n Region = mycluster.Region,\n ForceDelete = true,\n Placement = new Gcp.Dataproc.Inputs.JobPlacementArgs\n {\n ClusterName = mycluster.Name,\n },\n SparkConfig = new Gcp.Dataproc.Inputs.JobSparkConfigArgs\n {\n MainClass = \"org.apache.spark.examples.SparkPi\",\n JarFileUris = new[]\n {\n \"file:///usr/lib/spark/examples/jars/spark-examples.jar\",\n },\n Args = new[]\n {\n \"1000\",\n },\n Properties = \n {\n { \"spark.logConf\", \"true\" },\n },\n LoggingConfig = new Gcp.Dataproc.Inputs.JobSparkConfigLoggingConfigArgs\n {\n DriverLogLevels = \n {\n { \"root\", \"INFO\" },\n },\n },\n },\n });\n\n // Submit an example pyspark job to a dataproc cluster\n var pyspark = new Gcp.Dataproc.Job(\"pyspark\", new()\n {\n Region = mycluster.Region,\n ForceDelete = true,\n Placement = new Gcp.Dataproc.Inputs.JobPlacementArgs\n {\n ClusterName = mycluster.Name,\n },\n PysparkConfig = new Gcp.Dataproc.Inputs.JobPysparkConfigArgs\n {\n MainPythonFileUri = \"gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py\",\n Properties = \n {\n { \"spark.logConf\", \"true\" },\n },\n },\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"sparkStatus\"] = spark.Statuses.Apply(statuses =\u003e statuses[0].State),\n [\"pysparkStatus\"] = pyspark.Statuses.Apply(statuses =\u003e statuses[0].State),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataproc\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmycluster, err := dataproc.NewCluster(ctx, \"mycluster\", \u0026dataproc.ClusterArgs{\n\t\t\tName: pulumi.String(\"dproc-cluster-unique-name\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Submit an example spark job to a dataproc cluster\n\t\tspark, err := dataproc.NewJob(ctx, \"spark\", \u0026dataproc.JobArgs{\n\t\t\tRegion: mycluster.Region,\n\t\t\tForceDelete: pulumi.Bool(true),\n\t\t\tPlacement: \u0026dataproc.JobPlacementArgs{\n\t\t\t\tClusterName: mycluster.Name,\n\t\t\t},\n\t\t\tSparkConfig: \u0026dataproc.JobSparkConfigArgs{\n\t\t\t\tMainClass: pulumi.String(\"org.apache.spark.examples.SparkPi\"),\n\t\t\t\tJarFileUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"file:///usr/lib/spark/examples/jars/spark-examples.jar\"),\n\t\t\t\t},\n\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"1000\"),\n\t\t\t\t},\n\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\"spark.logConf\": pulumi.String(\"true\"),\n\t\t\t\t},\n\t\t\t\tLoggingConfig: \u0026dataproc.JobSparkConfigLoggingConfigArgs{\n\t\t\t\t\tDriverLogLevels: pulumi.StringMap{\n\t\t\t\t\t\t\"root\": pulumi.String(\"INFO\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Submit an example pyspark job to a dataproc cluster\n\t\tpyspark, err := dataproc.NewJob(ctx, \"pyspark\", \u0026dataproc.JobArgs{\n\t\t\tRegion: mycluster.Region,\n\t\t\tForceDelete: pulumi.Bool(true),\n\t\t\tPlacement: \u0026dataproc.JobPlacementArgs{\n\t\t\t\tClusterName: mycluster.Name,\n\t\t\t},\n\t\t\tPysparkConfig: \u0026dataproc.JobPysparkConfigArgs{\n\t\t\t\tMainPythonFileUri: pulumi.String(\"gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py\"),\n\t\t\t\tProperties: pulumi.StringMap{\n\t\t\t\t\t\"spark.logConf\": pulumi.String(\"true\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"sparkStatus\", spark.Statuses.ApplyT(func(statuses []dataproc.JobStatus) (*string, error) {\n\t\t\treturn \u0026statuses[0].State, nil\n\t\t}).(pulumi.StringPtrOutput))\n\t\tctx.Export(\"pysparkStatus\", pyspark.Statuses.ApplyT(func(statuses []dataproc.JobStatus) (*string, error) {\n\t\t\treturn \u0026statuses[0].State, nil\n\t\t}).(pulumi.StringPtrOutput))\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataproc.Cluster;\nimport com.pulumi.gcp.dataproc.ClusterArgs;\nimport com.pulumi.gcp.dataproc.Job;\nimport com.pulumi.gcp.dataproc.JobArgs;\nimport com.pulumi.gcp.dataproc.inputs.JobPlacementArgs;\nimport com.pulumi.gcp.dataproc.inputs.JobSparkConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.JobSparkConfigLoggingConfigArgs;\nimport com.pulumi.gcp.dataproc.inputs.JobPysparkConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var mycluster = new Cluster(\"mycluster\", ClusterArgs.builder()\n .name(\"dproc-cluster-unique-name\")\n .region(\"us-central1\")\n .build());\n\n // Submit an example spark job to a dataproc cluster\n var spark = new Job(\"spark\", JobArgs.builder()\n .region(mycluster.region())\n .forceDelete(true)\n .placement(JobPlacementArgs.builder()\n .clusterName(mycluster.name())\n .build())\n .sparkConfig(JobSparkConfigArgs.builder()\n .mainClass(\"org.apache.spark.examples.SparkPi\")\n .jarFileUris(\"file:///usr/lib/spark/examples/jars/spark-examples.jar\")\n .args(\"1000\")\n .properties(Map.of(\"spark.logConf\", \"true\"))\n .loggingConfig(JobSparkConfigLoggingConfigArgs.builder()\n .driverLogLevels(Map.of(\"root\", \"INFO\"))\n .build())\n .build())\n .build());\n\n // Submit an example pyspark job to a dataproc cluster\n var pyspark = new Job(\"pyspark\", JobArgs.builder()\n .region(mycluster.region())\n .forceDelete(true)\n .placement(JobPlacementArgs.builder()\n .clusterName(mycluster.name())\n .build())\n .pysparkConfig(JobPysparkConfigArgs.builder()\n .mainPythonFileUri(\"gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py\")\n .properties(Map.of(\"spark.logConf\", \"true\"))\n .build())\n .build());\n\n ctx.export(\"sparkStatus\", spark.statuses().applyValue(statuses -\u003e statuses[0].state()));\n ctx.export(\"pysparkStatus\", pyspark.statuses().applyValue(statuses -\u003e statuses[0].state()));\n }\n}\n```\n```yaml\nresources:\n mycluster:\n type: gcp:dataproc:Cluster\n properties:\n name: dproc-cluster-unique-name\n region: us-central1\n # Submit an example spark job to a dataproc cluster\n spark:\n type: gcp:dataproc:Job\n properties:\n region: ${mycluster.region}\n forceDelete: true\n placement:\n clusterName: ${mycluster.name}\n sparkConfig:\n mainClass: org.apache.spark.examples.SparkPi\n jarFileUris:\n - file:///usr/lib/spark/examples/jars/spark-examples.jar\n args:\n - '1000'\n properties:\n spark.logConf: 'true'\n loggingConfig:\n driverLogLevels:\n root: INFO\n # Submit an example pyspark job to a dataproc cluster\n pyspark:\n type: gcp:dataproc:Job\n properties:\n region: ${mycluster.region}\n forceDelete: true\n placement:\n clusterName: ${mycluster.name}\n pysparkConfig:\n mainPythonFileUri: gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py\n properties:\n spark.logConf: 'true'\noutputs:\n # Check out current state of the jobs\n sparkStatus: ${spark.statuses[0].state}\n pysparkStatus: ${pyspark.statuses[0].state}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource does not support import.\n\n", "properties": { "driverControlsFilesUri": { "type": "string", @@ -187272,7 +187272,7 @@ } }, "gcp:dataproc/metastoreFederation:MetastoreFederation": { - "description": "A managed metastore federation.\n\n\n\n## Example Usage\n\n### Dataproc Metastore Federation Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultMetastoreService = new gcp.dataproc.MetastoreService(\"default\", {\n serviceId: \"metastore-service\",\n location: \"us-central1\",\n tier: \"DEVELOPER\",\n hiveMetastoreConfig: {\n version: \"3.1.2\",\n endpointProtocol: \"GRPC\",\n },\n});\nconst _default = new gcp.dataproc.MetastoreFederation(\"default\", {\n location: \"us-central1\",\n federationId: \"metastore-fed\",\n version: \"3.1.2\",\n backendMetastores: [{\n rank: \"1\",\n name: defaultMetastoreService.id,\n metastoreType: \"DATAPROC_METASTORE\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_metastore_service = gcp.dataproc.MetastoreService(\"default\",\n service_id=\"metastore-service\",\n location=\"us-central1\",\n tier=\"DEVELOPER\",\n hive_metastore_config={\n \"version\": \"3.1.2\",\n \"endpoint_protocol\": \"GRPC\",\n })\ndefault = gcp.dataproc.MetastoreFederation(\"default\",\n location=\"us-central1\",\n federation_id=\"metastore-fed\",\n version=\"3.1.2\",\n backend_metastores=[{\n \"rank\": \"1\",\n \"name\": default_metastore_service.id,\n \"metastore_type\": \"DATAPROC_METASTORE\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultMetastoreService = new Gcp.Dataproc.MetastoreService(\"default\", new()\n {\n ServiceId = \"metastore-service\",\n Location = \"us-central1\",\n Tier = \"DEVELOPER\",\n HiveMetastoreConfig = new Gcp.Dataproc.Inputs.MetastoreServiceHiveMetastoreConfigArgs\n {\n Version = \"3.1.2\",\n EndpointProtocol = \"GRPC\",\n },\n });\n\n var @default = new Gcp.Dataproc.MetastoreFederation(\"default\", new()\n {\n Location = \"us-central1\",\n FederationId = \"metastore-fed\",\n Version = \"3.1.2\",\n BackendMetastores = new[]\n {\n new Gcp.Dataproc.Inputs.MetastoreFederationBackendMetastoreArgs\n {\n Rank = \"1\",\n Name = defaultMetastoreService.Id,\n MetastoreType = \"DATAPROC_METASTORE\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataproc\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdefaultMetastoreService, err := dataproc.NewMetastoreService(ctx, \"default\", \u0026dataproc.MetastoreServiceArgs{\n\t\t\tServiceId: pulumi.String(\"metastore-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTier: pulumi.String(\"DEVELOPER\"),\n\t\t\tHiveMetastoreConfig: \u0026dataproc.MetastoreServiceHiveMetastoreConfigArgs{\n\t\t\t\tVersion: pulumi.String(\"3.1.2\"),\n\t\t\t\tEndpointProtocol: pulumi.String(\"GRPC\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataproc.NewMetastoreFederation(ctx, \"default\", \u0026dataproc.MetastoreFederationArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tFederationId: pulumi.String(\"metastore-fed\"),\n\t\t\tVersion: pulumi.String(\"3.1.2\"),\n\t\t\tBackendMetastores: dataproc.MetastoreFederationBackendMetastoreArray{\n\t\t\t\t\u0026dataproc.MetastoreFederationBackendMetastoreArgs{\n\t\t\t\t\tRank: pulumi.String(\"1\"),\n\t\t\t\t\tName: defaultMetastoreService.ID(),\n\t\t\t\t\tMetastoreType: pulumi.String(\"DATAPROC_METASTORE\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataproc.MetastoreService;\nimport com.pulumi.gcp.dataproc.MetastoreServiceArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceHiveMetastoreConfigArgs;\nimport com.pulumi.gcp.dataproc.MetastoreFederation;\nimport com.pulumi.gcp.dataproc.MetastoreFederationArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreFederationBackendMetastoreArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultMetastoreService = new MetastoreService(\"defaultMetastoreService\", MetastoreServiceArgs.builder()\n .serviceId(\"metastore-service\")\n .location(\"us-central1\")\n .tier(\"DEVELOPER\")\n .hiveMetastoreConfig(MetastoreServiceHiveMetastoreConfigArgs.builder()\n .version(\"3.1.2\")\n .endpointProtocol(\"GRPC\")\n .build())\n .build());\n\n var default_ = new MetastoreFederation(\"default\", MetastoreFederationArgs.builder()\n .location(\"us-central1\")\n .federationId(\"metastore-fed\")\n .version(\"3.1.2\")\n .backendMetastores(MetastoreFederationBackendMetastoreArgs.builder()\n .rank(\"1\")\n .name(defaultMetastoreService.id())\n .metastoreType(\"DATAPROC_METASTORE\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:dataproc:MetastoreFederation\n properties:\n location: us-central1\n federationId: metastore-fed\n version: 3.1.2\n backendMetastores:\n - rank: '1'\n name: ${defaultMetastoreService.id}\n metastoreType: DATAPROC_METASTORE\n defaultMetastoreService:\n type: gcp:dataproc:MetastoreService\n name: default\n properties:\n serviceId: metastore-service\n location: us-central1\n tier: DEVELOPER\n hiveMetastoreConfig:\n version: 3.1.2\n endpointProtocol: GRPC\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataproc Metastore Federation Bigquery\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultMetastoreService = new gcp.dataproc.MetastoreService(\"default\", {\n serviceId: \"metastore-service\",\n location: \"us-central1\",\n tier: \"DEVELOPER\",\n hiveMetastoreConfig: {\n version: \"3.1.2\",\n endpointProtocol: \"GRPC\",\n },\n});\nconst project = gcp.organizations.getProject({});\nconst _default = new gcp.dataproc.MetastoreFederation(\"default\", {\n location: \"us-central1\",\n federationId: \"metastore-fed\",\n version: \"3.1.2\",\n backendMetastores: [\n {\n rank: \"2\",\n name: project.then(project =\u003e project.id),\n metastoreType: \"BIGQUERY\",\n },\n {\n rank: \"1\",\n name: defaultMetastoreService.id,\n metastoreType: \"DATAPROC_METASTORE\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_metastore_service = gcp.dataproc.MetastoreService(\"default\",\n service_id=\"metastore-service\",\n location=\"us-central1\",\n tier=\"DEVELOPER\",\n hive_metastore_config={\n \"version\": \"3.1.2\",\n \"endpoint_protocol\": \"GRPC\",\n })\nproject = gcp.organizations.get_project()\ndefault = gcp.dataproc.MetastoreFederation(\"default\",\n location=\"us-central1\",\n federation_id=\"metastore-fed\",\n version=\"3.1.2\",\n backend_metastores=[\n {\n \"rank\": \"2\",\n \"name\": project.id,\n \"metastore_type\": \"BIGQUERY\",\n },\n {\n \"rank\": \"1\",\n \"name\": default_metastore_service.id,\n \"metastore_type\": \"DATAPROC_METASTORE\",\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultMetastoreService = new Gcp.Dataproc.MetastoreService(\"default\", new()\n {\n ServiceId = \"metastore-service\",\n Location = \"us-central1\",\n Tier = \"DEVELOPER\",\n HiveMetastoreConfig = new Gcp.Dataproc.Inputs.MetastoreServiceHiveMetastoreConfigArgs\n {\n Version = \"3.1.2\",\n EndpointProtocol = \"GRPC\",\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var @default = new Gcp.Dataproc.MetastoreFederation(\"default\", new()\n {\n Location = \"us-central1\",\n FederationId = \"metastore-fed\",\n Version = \"3.1.2\",\n BackendMetastores = new[]\n {\n new Gcp.Dataproc.Inputs.MetastoreFederationBackendMetastoreArgs\n {\n Rank = \"2\",\n Name = project.Apply(getProjectResult =\u003e getProjectResult.Id),\n MetastoreType = \"BIGQUERY\",\n },\n new Gcp.Dataproc.Inputs.MetastoreFederationBackendMetastoreArgs\n {\n Rank = \"1\",\n Name = defaultMetastoreService.Id,\n MetastoreType = \"DATAPROC_METASTORE\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataproc\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdefaultMetastoreService, err := dataproc.NewMetastoreService(ctx, \"default\", \u0026dataproc.MetastoreServiceArgs{\n\t\t\tServiceId: pulumi.String(\"metastore-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTier: pulumi.String(\"DEVELOPER\"),\n\t\t\tHiveMetastoreConfig: \u0026dataproc.MetastoreServiceHiveMetastoreConfigArgs{\n\t\t\t\tVersion: pulumi.String(\"3.1.2\"),\n\t\t\t\tEndpointProtocol: pulumi.String(\"GRPC\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataproc.NewMetastoreFederation(ctx, \"default\", \u0026dataproc.MetastoreFederationArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tFederationId: pulumi.String(\"metastore-fed\"),\n\t\t\tVersion: pulumi.String(\"3.1.2\"),\n\t\t\tBackendMetastores: dataproc.MetastoreFederationBackendMetastoreArray{\n\t\t\t\t\u0026dataproc.MetastoreFederationBackendMetastoreArgs{\n\t\t\t\t\tRank: pulumi.String(\"2\"),\n\t\t\t\t\tName: pulumi.String(project.Id),\n\t\t\t\t\tMetastoreType: pulumi.String(\"BIGQUERY\"),\n\t\t\t\t},\n\t\t\t\t\u0026dataproc.MetastoreFederationBackendMetastoreArgs{\n\t\t\t\t\tRank: pulumi.String(\"1\"),\n\t\t\t\t\tName: defaultMetastoreService.ID(),\n\t\t\t\t\tMetastoreType: pulumi.String(\"DATAPROC_METASTORE\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataproc.MetastoreService;\nimport com.pulumi.gcp.dataproc.MetastoreServiceArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceHiveMetastoreConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.dataproc.MetastoreFederation;\nimport com.pulumi.gcp.dataproc.MetastoreFederationArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreFederationBackendMetastoreArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultMetastoreService = new MetastoreService(\"defaultMetastoreService\", MetastoreServiceArgs.builder()\n .serviceId(\"metastore-service\")\n .location(\"us-central1\")\n .tier(\"DEVELOPER\")\n .hiveMetastoreConfig(MetastoreServiceHiveMetastoreConfigArgs.builder()\n .version(\"3.1.2\")\n .endpointProtocol(\"GRPC\")\n .build())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var default_ = new MetastoreFederation(\"default\", MetastoreFederationArgs.builder()\n .location(\"us-central1\")\n .federationId(\"metastore-fed\")\n .version(\"3.1.2\")\n .backendMetastores( \n MetastoreFederationBackendMetastoreArgs.builder()\n .rank(\"2\")\n .name(project.applyValue(getProjectResult -\u003e getProjectResult.id()))\n .metastoreType(\"BIGQUERY\")\n .build(),\n MetastoreFederationBackendMetastoreArgs.builder()\n .rank(\"1\")\n .name(defaultMetastoreService.id())\n .metastoreType(\"DATAPROC_METASTORE\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:dataproc:MetastoreFederation\n properties:\n location: us-central1\n federationId: metastore-fed\n version: 3.1.2\n backendMetastores:\n - rank: '2'\n name: ${project.id}\n metastoreType: BIGQUERY\n - rank: '1'\n name: ${defaultMetastoreService.id}\n metastoreType: DATAPROC_METASTORE\n defaultMetastoreService:\n type: gcp:dataproc:MetastoreService\n name: default\n properties:\n serviceId: metastore-service\n location: us-central1\n tier: DEVELOPER\n hiveMetastoreConfig:\n version: 3.1.2\n endpointProtocol: GRPC\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFederation can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/federations/{{federation_id}}`\n\n* `{{project}}/{{location}}/{{federation_id}}`\n\n* `{{location}}/{{federation_id}}`\n\nWhen using the `pulumi import` command, Federation can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataproc/metastoreFederation:MetastoreFederation default projects/{{project}}/locations/{{location}}/federations/{{federation_id}}\n```\n\n```sh\n$ pulumi import gcp:dataproc/metastoreFederation:MetastoreFederation default {{project}}/{{location}}/{{federation_id}}\n```\n\n```sh\n$ pulumi import gcp:dataproc/metastoreFederation:MetastoreFederation default {{location}}/{{federation_id}}\n```\n\n", + "description": "A managed metastore federation.\n\n\n\n## Example Usage\n\n### Dataproc Metastore Federation Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultMetastoreService = new gcp.dataproc.MetastoreService(\"default\", {\n serviceId: \"metastore-service\",\n location: \"us-central1\",\n tier: \"DEVELOPER\",\n hiveMetastoreConfig: {\n version: \"3.1.2\",\n endpointProtocol: \"GRPC\",\n },\n});\nconst _default = new gcp.dataproc.MetastoreFederation(\"default\", {\n location: \"us-central1\",\n federationId: \"metastore-fed\",\n version: \"3.1.2\",\n backendMetastores: [{\n rank: \"1\",\n name: defaultMetastoreService.id,\n metastoreType: \"DATAPROC_METASTORE\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_metastore_service = gcp.dataproc.MetastoreService(\"default\",\n service_id=\"metastore-service\",\n location=\"us-central1\",\n tier=\"DEVELOPER\",\n hive_metastore_config={\n \"version\": \"3.1.2\",\n \"endpoint_protocol\": \"GRPC\",\n })\ndefault = gcp.dataproc.MetastoreFederation(\"default\",\n location=\"us-central1\",\n federation_id=\"metastore-fed\",\n version=\"3.1.2\",\n backend_metastores=[{\n \"rank\": \"1\",\n \"name\": default_metastore_service.id,\n \"metastore_type\": \"DATAPROC_METASTORE\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultMetastoreService = new Gcp.Dataproc.MetastoreService(\"default\", new()\n {\n ServiceId = \"metastore-service\",\n Location = \"us-central1\",\n Tier = \"DEVELOPER\",\n HiveMetastoreConfig = new Gcp.Dataproc.Inputs.MetastoreServiceHiveMetastoreConfigArgs\n {\n Version = \"3.1.2\",\n EndpointProtocol = \"GRPC\",\n },\n });\n\n var @default = new Gcp.Dataproc.MetastoreFederation(\"default\", new()\n {\n Location = \"us-central1\",\n FederationId = \"metastore-fed\",\n Version = \"3.1.2\",\n BackendMetastores = new[]\n {\n new Gcp.Dataproc.Inputs.MetastoreFederationBackendMetastoreArgs\n {\n Rank = \"1\",\n Name = defaultMetastoreService.Id,\n MetastoreType = \"DATAPROC_METASTORE\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataproc\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdefaultMetastoreService, err := dataproc.NewMetastoreService(ctx, \"default\", \u0026dataproc.MetastoreServiceArgs{\n\t\t\tServiceId: pulumi.String(\"metastore-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTier: pulumi.String(\"DEVELOPER\"),\n\t\t\tHiveMetastoreConfig: \u0026dataproc.MetastoreServiceHiveMetastoreConfigArgs{\n\t\t\t\tVersion: pulumi.String(\"3.1.2\"),\n\t\t\t\tEndpointProtocol: pulumi.String(\"GRPC\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataproc.NewMetastoreFederation(ctx, \"default\", \u0026dataproc.MetastoreFederationArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tFederationId: pulumi.String(\"metastore-fed\"),\n\t\t\tVersion: pulumi.String(\"3.1.2\"),\n\t\t\tBackendMetastores: dataproc.MetastoreFederationBackendMetastoreArray{\n\t\t\t\t\u0026dataproc.MetastoreFederationBackendMetastoreArgs{\n\t\t\t\t\tRank: pulumi.String(\"1\"),\n\t\t\t\t\tName: defaultMetastoreService.ID(),\n\t\t\t\t\tMetastoreType: pulumi.String(\"DATAPROC_METASTORE\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataproc.MetastoreService;\nimport com.pulumi.gcp.dataproc.MetastoreServiceArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceHiveMetastoreConfigArgs;\nimport com.pulumi.gcp.dataproc.MetastoreFederation;\nimport com.pulumi.gcp.dataproc.MetastoreFederationArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreFederationBackendMetastoreArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultMetastoreService = new MetastoreService(\"defaultMetastoreService\", MetastoreServiceArgs.builder()\n .serviceId(\"metastore-service\")\n .location(\"us-central1\")\n .tier(\"DEVELOPER\")\n .hiveMetastoreConfig(MetastoreServiceHiveMetastoreConfigArgs.builder()\n .version(\"3.1.2\")\n .endpointProtocol(\"GRPC\")\n .build())\n .build());\n\n var default_ = new MetastoreFederation(\"default\", MetastoreFederationArgs.builder()\n .location(\"us-central1\")\n .federationId(\"metastore-fed\")\n .version(\"3.1.2\")\n .backendMetastores(MetastoreFederationBackendMetastoreArgs.builder()\n .rank(\"1\")\n .name(defaultMetastoreService.id())\n .metastoreType(\"DATAPROC_METASTORE\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:dataproc:MetastoreFederation\n properties:\n location: us-central1\n federationId: metastore-fed\n version: 3.1.2\n backendMetastores:\n - rank: '1'\n name: ${defaultMetastoreService.id}\n metastoreType: DATAPROC_METASTORE\n defaultMetastoreService:\n type: gcp:dataproc:MetastoreService\n name: default\n properties:\n serviceId: metastore-service\n location: us-central1\n tier: DEVELOPER\n hiveMetastoreConfig:\n version: 3.1.2\n endpointProtocol: GRPC\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dataproc Metastore Federation Bigquery\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultMetastoreService = new gcp.dataproc.MetastoreService(\"default\", {\n serviceId: \"metastore-service\",\n location: \"us-central1\",\n tier: \"DEVELOPER\",\n hiveMetastoreConfig: {\n version: \"3.1.2\",\n endpointProtocol: \"GRPC\",\n },\n});\nconst project = gcp.organizations.getProject({});\nconst _default = new gcp.dataproc.MetastoreFederation(\"default\", {\n location: \"us-central1\",\n federationId: \"metastore-fed\",\n version: \"3.1.2\",\n backendMetastores: [\n {\n rank: \"2\",\n name: project.then(project =\u003e project.id),\n metastoreType: \"BIGQUERY\",\n },\n {\n rank: \"1\",\n name: defaultMetastoreService.id,\n metastoreType: \"DATAPROC_METASTORE\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_metastore_service = gcp.dataproc.MetastoreService(\"default\",\n service_id=\"metastore-service\",\n location=\"us-central1\",\n tier=\"DEVELOPER\",\n hive_metastore_config={\n \"version\": \"3.1.2\",\n \"endpoint_protocol\": \"GRPC\",\n })\nproject = gcp.organizations.get_project()\ndefault = gcp.dataproc.MetastoreFederation(\"default\",\n location=\"us-central1\",\n federation_id=\"metastore-fed\",\n version=\"3.1.2\",\n backend_metastores=[\n {\n \"rank\": \"2\",\n \"name\": project.id,\n \"metastore_type\": \"BIGQUERY\",\n },\n {\n \"rank\": \"1\",\n \"name\": default_metastore_service.id,\n \"metastore_type\": \"DATAPROC_METASTORE\",\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultMetastoreService = new Gcp.Dataproc.MetastoreService(\"default\", new()\n {\n ServiceId = \"metastore-service\",\n Location = \"us-central1\",\n Tier = \"DEVELOPER\",\n HiveMetastoreConfig = new Gcp.Dataproc.Inputs.MetastoreServiceHiveMetastoreConfigArgs\n {\n Version = \"3.1.2\",\n EndpointProtocol = \"GRPC\",\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var @default = new Gcp.Dataproc.MetastoreFederation(\"default\", new()\n {\n Location = \"us-central1\",\n FederationId = \"metastore-fed\",\n Version = \"3.1.2\",\n BackendMetastores = new[]\n {\n new Gcp.Dataproc.Inputs.MetastoreFederationBackendMetastoreArgs\n {\n Rank = \"2\",\n Name = project.Apply(getProjectResult =\u003e getProjectResult.Id),\n MetastoreType = \"BIGQUERY\",\n },\n new Gcp.Dataproc.Inputs.MetastoreFederationBackendMetastoreArgs\n {\n Rank = \"1\",\n Name = defaultMetastoreService.Id,\n MetastoreType = \"DATAPROC_METASTORE\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dataproc\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdefaultMetastoreService, err := dataproc.NewMetastoreService(ctx, \"default\", \u0026dataproc.MetastoreServiceArgs{\n\t\t\tServiceId: pulumi.String(\"metastore-service\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTier: pulumi.String(\"DEVELOPER\"),\n\t\t\tHiveMetastoreConfig: \u0026dataproc.MetastoreServiceHiveMetastoreConfigArgs{\n\t\t\t\tVersion: pulumi.String(\"3.1.2\"),\n\t\t\t\tEndpointProtocol: pulumi.String(\"GRPC\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dataproc.NewMetastoreFederation(ctx, \"default\", \u0026dataproc.MetastoreFederationArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tFederationId: pulumi.String(\"metastore-fed\"),\n\t\t\tVersion: pulumi.String(\"3.1.2\"),\n\t\t\tBackendMetastores: dataproc.MetastoreFederationBackendMetastoreArray{\n\t\t\t\t\u0026dataproc.MetastoreFederationBackendMetastoreArgs{\n\t\t\t\t\tRank: pulumi.String(\"2\"),\n\t\t\t\t\tName: pulumi.String(project.Id),\n\t\t\t\t\tMetastoreType: pulumi.String(\"BIGQUERY\"),\n\t\t\t\t},\n\t\t\t\t\u0026dataproc.MetastoreFederationBackendMetastoreArgs{\n\t\t\t\t\tRank: pulumi.String(\"1\"),\n\t\t\t\t\tName: defaultMetastoreService.ID(),\n\t\t\t\t\tMetastoreType: pulumi.String(\"DATAPROC_METASTORE\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dataproc.MetastoreService;\nimport com.pulumi.gcp.dataproc.MetastoreServiceArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreServiceHiveMetastoreConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.dataproc.MetastoreFederation;\nimport com.pulumi.gcp.dataproc.MetastoreFederationArgs;\nimport com.pulumi.gcp.dataproc.inputs.MetastoreFederationBackendMetastoreArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultMetastoreService = new MetastoreService(\"defaultMetastoreService\", MetastoreServiceArgs.builder()\n .serviceId(\"metastore-service\")\n .location(\"us-central1\")\n .tier(\"DEVELOPER\")\n .hiveMetastoreConfig(MetastoreServiceHiveMetastoreConfigArgs.builder()\n .version(\"3.1.2\")\n .endpointProtocol(\"GRPC\")\n .build())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var default_ = new MetastoreFederation(\"default\", MetastoreFederationArgs.builder()\n .location(\"us-central1\")\n .federationId(\"metastore-fed\")\n .version(\"3.1.2\")\n .backendMetastores( \n MetastoreFederationBackendMetastoreArgs.builder()\n .rank(\"2\")\n .name(project.applyValue(getProjectResult -\u003e getProjectResult.id()))\n .metastoreType(\"BIGQUERY\")\n .build(),\n MetastoreFederationBackendMetastoreArgs.builder()\n .rank(\"1\")\n .name(defaultMetastoreService.id())\n .metastoreType(\"DATAPROC_METASTORE\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:dataproc:MetastoreFederation\n properties:\n location: us-central1\n federationId: metastore-fed\n version: 3.1.2\n backendMetastores:\n - rank: '2'\n name: ${project.id}\n metastoreType: BIGQUERY\n - rank: '1'\n name: ${defaultMetastoreService.id}\n metastoreType: DATAPROC_METASTORE\n defaultMetastoreService:\n type: gcp:dataproc:MetastoreService\n name: default\n properties:\n serviceId: metastore-service\n location: us-central1\n tier: DEVELOPER\n hiveMetastoreConfig:\n version: 3.1.2\n endpointProtocol: GRPC\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFederation can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/federations/{{federation_id}}`\n\n* `{{project}}/{{location}}/{{federation_id}}`\n\n* `{{location}}/{{federation_id}}`\n\nWhen using the `pulumi import` command, Federation can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dataproc/metastoreFederation:MetastoreFederation default projects/{{project}}/locations/{{location}}/federations/{{federation_id}}\n```\n\n```sh\n$ pulumi import gcp:dataproc/metastoreFederation:MetastoreFederation default {{project}}/{{location}}/{{federation_id}}\n```\n\n```sh\n$ pulumi import gcp:dataproc/metastoreFederation:MetastoreFederation default {{location}}/{{federation_id}}\n```\n\n", "properties": { "backendMetastores": { "type": "array", @@ -189128,7 +189128,7 @@ } }, "gcp:datastream/stream:Stream": { - "description": "A resource representing streaming data from a source to a destination.\n\n\nTo get more information about Stream, see:\n\n* [API documentation](https://cloud.google.com/datastream/docs/reference/rest/v1/projects.locations.streams)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/datastream/docs/create-a-stream)\n\n## Example Usage\n\n### Datastream Stream Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst project = gcp.organizations.getProject({});\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"my-instance\",\n databaseVersion: \"MYSQL_8_0\",\n region: \"us-central1\",\n settings: {\n tier: \"db-f1-micro\",\n backupConfiguration: {\n enabled: true,\n binaryLogEnabled: true,\n },\n ipConfiguration: {\n authorizedNetworks: [\n {\n value: \"34.71.242.81\",\n },\n {\n value: \"34.72.28.29\",\n },\n {\n value: \"34.67.6.157\",\n },\n {\n value: \"34.67.234.134\",\n },\n {\n value: \"34.72.239.218\",\n },\n ],\n },\n },\n deletionProtection: true,\n});\nconst db = new gcp.sql.Database(\"db\", {\n instance: instance.name,\n name: \"db\",\n});\nconst pwd = new random.RandomPassword(\"pwd\", {\n length: 16,\n special: false,\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"user\",\n instance: instance.name,\n host: \"%\",\n password: pwd.result,\n});\nconst sourceConnectionProfile = new gcp.datastream.ConnectionProfile(\"source_connection_profile\", {\n displayName: \"Source connection profile\",\n location: \"us-central1\",\n connectionProfileId: \"source-profile\",\n mysqlProfile: {\n hostname: instance.publicIpAddress,\n username: user.name,\n password: user.password,\n },\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"my-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst viewer = new gcp.storage.BucketIAMMember(\"viewer\", {\n bucket: bucket.name,\n role: \"roles/storage.objectViewer\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-datastream.iam.gserviceaccount.com`),\n});\nconst creator = new gcp.storage.BucketIAMMember(\"creator\", {\n bucket: bucket.name,\n role: \"roles/storage.objectCreator\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-datastream.iam.gserviceaccount.com`),\n});\nconst reader = new gcp.storage.BucketIAMMember(\"reader\", {\n bucket: bucket.name,\n role: \"roles/storage.legacyBucketReader\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-datastream.iam.gserviceaccount.com`),\n});\nconst keyUser = new gcp.kms.CryptoKeyIAMMember(\"key_user\", {\n cryptoKeyId: \"kms-name\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-datastream.iam.gserviceaccount.com`),\n});\nconst destinationConnectionProfile = new gcp.datastream.ConnectionProfile(\"destination_connection_profile\", {\n displayName: \"Connection profile\",\n location: \"us-central1\",\n connectionProfileId: \"destination-profile\",\n gcsProfile: {\n bucket: bucket.name,\n rootPath: \"/path\",\n },\n});\nconst _default = new gcp.datastream.Stream(\"default\", {\n streamId: \"my-stream\",\n desiredState: \"NOT_STARTED\",\n location: \"us-central1\",\n displayName: \"my stream\",\n labels: {\n key: \"value\",\n },\n sourceConfig: {\n sourceConnectionProfile: sourceConnectionProfile.id,\n mysqlSourceConfig: {\n includeObjects: {\n mysqlDatabases: [{\n database: \"my-database\",\n mysqlTables: [\n {\n table: \"includedTable\",\n mysqlColumns: [{\n column: \"includedColumn\",\n dataType: \"VARCHAR\",\n collation: \"utf8mb4\",\n primaryKey: false,\n nullable: false,\n ordinalPosition: 0,\n }],\n },\n {\n table: \"includedTable_2\",\n },\n ],\n }],\n },\n excludeObjects: {\n mysqlDatabases: [{\n database: \"my-database\",\n mysqlTables: [{\n table: \"excludedTable\",\n mysqlColumns: [{\n column: \"excludedColumn\",\n dataType: \"VARCHAR\",\n collation: \"utf8mb4\",\n primaryKey: false,\n nullable: false,\n ordinalPosition: 0,\n }],\n }],\n }],\n },\n maxConcurrentCdcTasks: 5,\n },\n },\n destinationConfig: {\n destinationConnectionProfile: destinationConnectionProfile.id,\n gcsDestinationConfig: {\n path: \"mydata\",\n fileRotationMb: 200,\n fileRotationInterval: \"60s\",\n jsonFileFormat: {\n schemaFileFormat: \"NO_SCHEMA_FILE\",\n compression: \"GZIP\",\n },\n },\n },\n backfillAll: {\n mysqlExcludedObjects: {\n mysqlDatabases: [{\n database: \"my-database\",\n mysqlTables: [{\n table: \"excludedTable\",\n mysqlColumns: [{\n column: \"excludedColumn\",\n dataType: \"VARCHAR\",\n collation: \"utf8mb4\",\n primaryKey: false,\n nullable: false,\n ordinalPosition: 0,\n }],\n }],\n }],\n },\n },\n customerManagedEncryptionKey: \"kms-name\",\n}, {\n dependsOn: [keyUser],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\nproject = gcp.organizations.get_project()\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"my-instance\",\n database_version=\"MYSQL_8_0\",\n region=\"us-central1\",\n settings={\n \"tier\": \"db-f1-micro\",\n \"backup_configuration\": {\n \"enabled\": True,\n \"binary_log_enabled\": True,\n },\n \"ip_configuration\": {\n \"authorized_networks\": [\n {\n \"value\": \"34.71.242.81\",\n },\n {\n \"value\": \"34.72.28.29\",\n },\n {\n \"value\": \"34.67.6.157\",\n },\n {\n \"value\": \"34.67.234.134\",\n },\n {\n \"value\": \"34.72.239.218\",\n },\n ],\n },\n },\n deletion_protection=True)\ndb = gcp.sql.Database(\"db\",\n instance=instance.name,\n name=\"db\")\npwd = random.RandomPassword(\"pwd\",\n length=16,\n special=False)\nuser = gcp.sql.User(\"user\",\n name=\"user\",\n instance=instance.name,\n host=\"%\",\n password=pwd.result)\nsource_connection_profile = gcp.datastream.ConnectionProfile(\"source_connection_profile\",\n display_name=\"Source connection profile\",\n location=\"us-central1\",\n connection_profile_id=\"source-profile\",\n mysql_profile={\n \"hostname\": instance.public_ip_address,\n \"username\": user.name,\n \"password\": user.password,\n })\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"my-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nviewer = gcp.storage.BucketIAMMember(\"viewer\",\n bucket=bucket.name,\n role=\"roles/storage.objectViewer\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-datastream.iam.gserviceaccount.com\")\ncreator = gcp.storage.BucketIAMMember(\"creator\",\n bucket=bucket.name,\n role=\"roles/storage.objectCreator\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-datastream.iam.gserviceaccount.com\")\nreader = gcp.storage.BucketIAMMember(\"reader\",\n bucket=bucket.name,\n role=\"roles/storage.legacyBucketReader\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-datastream.iam.gserviceaccount.com\")\nkey_user = gcp.kms.CryptoKeyIAMMember(\"key_user\",\n crypto_key_id=\"kms-name\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-datastream.iam.gserviceaccount.com\")\ndestination_connection_profile = gcp.datastream.ConnectionProfile(\"destination_connection_profile\",\n display_name=\"Connection profile\",\n location=\"us-central1\",\n connection_profile_id=\"destination-profile\",\n gcs_profile={\n \"bucket\": bucket.name,\n \"root_path\": \"/path\",\n })\ndefault = gcp.datastream.Stream(\"default\",\n stream_id=\"my-stream\",\n desired_state=\"NOT_STARTED\",\n location=\"us-central1\",\n display_name=\"my stream\",\n labels={\n \"key\": \"value\",\n },\n source_config={\n \"source_connection_profile\": source_connection_profile.id,\n \"mysql_source_config\": {\n \"include_objects\": {\n \"mysql_databases\": [{\n \"database\": \"my-database\",\n \"mysql_tables\": [\n {\n \"table\": \"includedTable\",\n \"mysql_columns\": [{\n \"column\": \"includedColumn\",\n \"data_type\": \"VARCHAR\",\n \"collation\": \"utf8mb4\",\n \"primary_key\": False,\n \"nullable\": False,\n \"ordinal_position\": 0,\n }],\n },\n {\n \"table\": \"includedTable_2\",\n },\n ],\n }],\n },\n \"exclude_objects\": {\n \"mysql_databases\": [{\n \"database\": \"my-database\",\n \"mysql_tables\": [{\n \"table\": \"excludedTable\",\n \"mysql_columns\": [{\n \"column\": \"excludedColumn\",\n \"data_type\": \"VARCHAR\",\n \"collation\": \"utf8mb4\",\n \"primary_key\": False,\n \"nullable\": False,\n \"ordinal_position\": 0,\n }],\n }],\n }],\n },\n \"max_concurrent_cdc_tasks\": 5,\n },\n },\n destination_config={\n \"destination_connection_profile\": destination_connection_profile.id,\n \"gcs_destination_config\": {\n \"path\": \"mydata\",\n \"file_rotation_mb\": 200,\n \"file_rotation_interval\": \"60s\",\n \"json_file_format\": {\n \"schema_file_format\": \"NO_SCHEMA_FILE\",\n \"compression\": \"GZIP\",\n },\n },\n },\n backfill_all={\n \"mysql_excluded_objects\": {\n \"mysql_databases\": [{\n \"database\": \"my-database\",\n \"mysql_tables\": [{\n \"table\": \"excludedTable\",\n \"mysql_columns\": [{\n \"column\": \"excludedColumn\",\n \"data_type\": \"VARCHAR\",\n \"collation\": \"utf8mb4\",\n \"primary_key\": False,\n \"nullable\": False,\n \"ordinal_position\": 0,\n }],\n }],\n }],\n },\n },\n customer_managed_encryption_key=\"kms-name\",\n opts = pulumi.ResourceOptions(depends_on=[key_user]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"my-instance\",\n DatabaseVersion = \"MYSQL_8_0\",\n Region = \"us-central1\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n BackupConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsBackupConfigurationArgs\n {\n Enabled = true,\n BinaryLogEnabled = true,\n },\n IpConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationArgs\n {\n AuthorizedNetworks = new[]\n {\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.71.242.81\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.28.29\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.6.157\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.234.134\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.239.218\",\n },\n },\n },\n },\n DeletionProtection = true,\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Instance = instance.Name,\n Name = \"db\",\n });\n\n var pwd = new Random.RandomPassword(\"pwd\", new()\n {\n Length = 16,\n Special = false,\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"user\",\n Instance = instance.Name,\n Host = \"%\",\n Password = pwd.Result,\n });\n\n var sourceConnectionProfile = new Gcp.Datastream.ConnectionProfile(\"source_connection_profile\", new()\n {\n DisplayName = \"Source connection profile\",\n Location = \"us-central1\",\n ConnectionProfileId = \"source-profile\",\n MysqlProfile = new Gcp.Datastream.Inputs.ConnectionProfileMysqlProfileArgs\n {\n Hostname = instance.PublicIpAddress,\n Username = user.Name,\n Password = user.Password,\n },\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = \"my-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var viewer = new Gcp.Storage.BucketIAMMember(\"viewer\", new()\n {\n Bucket = bucket.Name,\n Role = \"roles/storage.objectViewer\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-datastream.iam.gserviceaccount.com\",\n });\n\n var creator = new Gcp.Storage.BucketIAMMember(\"creator\", new()\n {\n Bucket = bucket.Name,\n Role = \"roles/storage.objectCreator\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-datastream.iam.gserviceaccount.com\",\n });\n\n var reader = new Gcp.Storage.BucketIAMMember(\"reader\", new()\n {\n Bucket = bucket.Name,\n Role = \"roles/storage.legacyBucketReader\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-datastream.iam.gserviceaccount.com\",\n });\n\n var keyUser = new Gcp.Kms.CryptoKeyIAMMember(\"key_user\", new()\n {\n CryptoKeyId = \"kms-name\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-datastream.iam.gserviceaccount.com\",\n });\n\n var destinationConnectionProfile = new Gcp.Datastream.ConnectionProfile(\"destination_connection_profile\", new()\n {\n DisplayName = \"Connection profile\",\n Location = \"us-central1\",\n ConnectionProfileId = \"destination-profile\",\n GcsProfile = new Gcp.Datastream.Inputs.ConnectionProfileGcsProfileArgs\n {\n Bucket = bucket.Name,\n RootPath = \"/path\",\n },\n });\n\n var @default = new Gcp.Datastream.Stream(\"default\", new()\n {\n StreamId = \"my-stream\",\n DesiredState = \"NOT_STARTED\",\n Location = \"us-central1\",\n DisplayName = \"my stream\",\n Labels = \n {\n { \"key\", \"value\" },\n },\n SourceConfig = new Gcp.Datastream.Inputs.StreamSourceConfigArgs\n {\n SourceConnectionProfile = sourceConnectionProfile.Id,\n MysqlSourceConfig = new Gcp.Datastream.Inputs.StreamSourceConfigMysqlSourceConfigArgs\n {\n IncludeObjects = new Gcp.Datastream.Inputs.StreamSourceConfigMysqlSourceConfigIncludeObjectsArgs\n {\n MysqlDatabases = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseArgs\n {\n Database = \"my-database\",\n MysqlTables = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseMysqlTableArgs\n {\n Table = \"includedTable\",\n MysqlColumns = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseMysqlTableMysqlColumnArgs\n {\n Column = \"includedColumn\",\n DataType = \"VARCHAR\",\n Collation = \"utf8mb4\",\n PrimaryKey = false,\n Nullable = false,\n OrdinalPosition = 0,\n },\n },\n },\n new Gcp.Datastream.Inputs.StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseMysqlTableArgs\n {\n Table = \"includedTable_2\",\n },\n },\n },\n },\n },\n ExcludeObjects = new Gcp.Datastream.Inputs.StreamSourceConfigMysqlSourceConfigExcludeObjectsArgs\n {\n MysqlDatabases = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseArgs\n {\n Database = \"my-database\",\n MysqlTables = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTableArgs\n {\n Table = \"excludedTable\",\n MysqlColumns = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTableMysqlColumnArgs\n {\n Column = \"excludedColumn\",\n DataType = \"VARCHAR\",\n Collation = \"utf8mb4\",\n PrimaryKey = false,\n Nullable = false,\n OrdinalPosition = 0,\n },\n },\n },\n },\n },\n },\n },\n MaxConcurrentCdcTasks = 5,\n },\n },\n DestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigArgs\n {\n DestinationConnectionProfile = destinationConnectionProfile.Id,\n GcsDestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigGcsDestinationConfigArgs\n {\n Path = \"mydata\",\n FileRotationMb = 200,\n FileRotationInterval = \"60s\",\n JsonFileFormat = new Gcp.Datastream.Inputs.StreamDestinationConfigGcsDestinationConfigJsonFileFormatArgs\n {\n SchemaFileFormat = \"NO_SCHEMA_FILE\",\n Compression = \"GZIP\",\n },\n },\n },\n BackfillAll = new Gcp.Datastream.Inputs.StreamBackfillAllArgs\n {\n MysqlExcludedObjects = new Gcp.Datastream.Inputs.StreamBackfillAllMysqlExcludedObjectsArgs\n {\n MysqlDatabases = new[]\n {\n new Gcp.Datastream.Inputs.StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseArgs\n {\n Database = \"my-database\",\n MysqlTables = new[]\n {\n new Gcp.Datastream.Inputs.StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseMysqlTableArgs\n {\n Table = \"excludedTable\",\n MysqlColumns = new[]\n {\n new Gcp.Datastream.Inputs.StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseMysqlTableMysqlColumnArgs\n {\n Column = \"excludedColumn\",\n DataType = \"VARCHAR\",\n Collation = \"utf8mb4\",\n PrimaryKey = false,\n Nullable = false,\n OrdinalPosition = 0,\n },\n },\n },\n },\n },\n },\n },\n },\n CustomerManagedEncryptionKey = \"kms-name\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n keyUser,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datastream\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi-random/sdk/v4/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_8_0\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t\tBackupConfiguration: \u0026sql.DatabaseInstanceSettingsBackupConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tBinaryLogEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tIpConfiguration: \u0026sql.DatabaseInstanceSettingsIpConfigurationArgs{\n\t\t\t\t\tAuthorizedNetworks: sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArray{\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.71.242.81\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.28.29\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.6.157\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.234.134\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.239.218\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tName: pulumi.String(\"db\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpwd, err := random.NewRandomPassword(ctx, \"pwd\", \u0026random.RandomPasswordArgs{\n\t\t\tLength: pulumi.Int(16),\n\t\t\tSpecial: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tHost: pulumi.String(\"%\"),\n\t\t\tPassword: pwd.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceConnectionProfile, err := datastream.NewConnectionProfile(ctx, \"source_connection_profile\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Source connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"source-profile\"),\n\t\t\tMysqlProfile: \u0026datastream.ConnectionProfileMysqlProfileArgs{\n\t\t\t\tHostname: instance.PublicIpAddress,\n\t\t\t\tUsername: user.Name,\n\t\t\t\tPassword: user.Password,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"my-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewBucketIAMMember(ctx, \"viewer\", \u0026storage.BucketIAMMemberArgs{\n\t\t\tBucket: bucket.Name,\n\t\t\tRole: pulumi.String(\"roles/storage.objectViewer\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-datastream.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewBucketIAMMember(ctx, \"creator\", \u0026storage.BucketIAMMemberArgs{\n\t\t\tBucket: bucket.Name,\n\t\t\tRole: pulumi.String(\"roles/storage.objectCreator\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-datastream.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewBucketIAMMember(ctx, \"reader\", \u0026storage.BucketIAMMemberArgs{\n\t\t\tBucket: bucket.Name,\n\t\t\tRole: pulumi.String(\"roles/storage.legacyBucketReader\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-datastream.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkeyUser, err := kms.NewCryptoKeyIAMMember(ctx, \"key_user\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"kms-name\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-datastream.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestinationConnectionProfile, err := datastream.NewConnectionProfile(ctx, \"destination_connection_profile\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"destination-profile\"),\n\t\t\tGcsProfile: \u0026datastream.ConnectionProfileGcsProfileArgs{\n\t\t\t\tBucket: bucket.Name,\n\t\t\t\tRootPath: pulumi.String(\"/path\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datastream.NewStream(ctx, \"default\", \u0026datastream.StreamArgs{\n\t\t\tStreamId: pulumi.String(\"my-stream\"),\n\t\t\tDesiredState: pulumi.String(\"NOT_STARTED\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"my stream\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"key\": pulumi.String(\"value\"),\n\t\t\t},\n\t\t\tSourceConfig: \u0026datastream.StreamSourceConfigArgs{\n\t\t\t\tSourceConnectionProfile: sourceConnectionProfile.ID(),\n\t\t\t\tMysqlSourceConfig: \u0026datastream.StreamSourceConfigMysqlSourceConfigArgs{\n\t\t\t\t\tIncludeObjects: \u0026datastream.StreamSourceConfigMysqlSourceConfigIncludeObjectsArgs{\n\t\t\t\t\t\tMysqlDatabases: datastream.StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseArray{\n\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseArgs{\n\t\t\t\t\t\t\t\tDatabase: pulumi.String(\"my-database\"),\n\t\t\t\t\t\t\t\tMysqlTables: datastream.StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseMysqlTableArray{\n\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseMysqlTableArgs{\n\t\t\t\t\t\t\t\t\t\tTable: pulumi.String(\"includedTable\"),\n\t\t\t\t\t\t\t\t\t\tMysqlColumns: datastream.StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseMysqlTableMysqlColumnArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseMysqlTableMysqlColumnArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tColumn: pulumi.String(\"includedColumn\"),\n\t\t\t\t\t\t\t\t\t\t\t\tDataType: pulumi.String(\"VARCHAR\"),\n\t\t\t\t\t\t\t\t\t\t\t\tCollation: pulumi.String(\"utf8mb4\"),\n\t\t\t\t\t\t\t\t\t\t\t\tPrimaryKey: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t\t\t\tNullable: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t\t\t\tOrdinalPosition: pulumi.Int(0),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseMysqlTableArgs{\n\t\t\t\t\t\t\t\t\t\tTable: pulumi.String(\"includedTable_2\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tExcludeObjects: \u0026datastream.StreamSourceConfigMysqlSourceConfigExcludeObjectsArgs{\n\t\t\t\t\t\tMysqlDatabases: datastream.StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseArray{\n\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseArgs{\n\t\t\t\t\t\t\t\tDatabase: pulumi.String(\"my-database\"),\n\t\t\t\t\t\t\t\tMysqlTables: datastream.StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTableArray{\n\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTableArgs{\n\t\t\t\t\t\t\t\t\t\tTable: pulumi.String(\"excludedTable\"),\n\t\t\t\t\t\t\t\t\t\tMysqlColumns: datastream.StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTableMysqlColumnArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTableMysqlColumnArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tColumn: pulumi.String(\"excludedColumn\"),\n\t\t\t\t\t\t\t\t\t\t\t\tDataType: pulumi.String(\"VARCHAR\"),\n\t\t\t\t\t\t\t\t\t\t\t\tCollation: pulumi.String(\"utf8mb4\"),\n\t\t\t\t\t\t\t\t\t\t\t\tPrimaryKey: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t\t\t\tNullable: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t\t\t\tOrdinalPosition: pulumi.Int(0),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tMaxConcurrentCdcTasks: pulumi.Int(5),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDestinationConfig: \u0026datastream.StreamDestinationConfigArgs{\n\t\t\t\tDestinationConnectionProfile: destinationConnectionProfile.ID(),\n\t\t\t\tGcsDestinationConfig: \u0026datastream.StreamDestinationConfigGcsDestinationConfigArgs{\n\t\t\t\t\tPath: pulumi.String(\"mydata\"),\n\t\t\t\t\tFileRotationMb: pulumi.Int(200),\n\t\t\t\t\tFileRotationInterval: pulumi.String(\"60s\"),\n\t\t\t\t\tJsonFileFormat: \u0026datastream.StreamDestinationConfigGcsDestinationConfigJsonFileFormatArgs{\n\t\t\t\t\t\tSchemaFileFormat: pulumi.String(\"NO_SCHEMA_FILE\"),\n\t\t\t\t\t\tCompression: pulumi.String(\"GZIP\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBackfillAll: \u0026datastream.StreamBackfillAllArgs{\n\t\t\t\tMysqlExcludedObjects: \u0026datastream.StreamBackfillAllMysqlExcludedObjectsArgs{\n\t\t\t\t\tMysqlDatabases: datastream.StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseArray{\n\t\t\t\t\t\t\u0026datastream.StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseArgs{\n\t\t\t\t\t\t\tDatabase: pulumi.String(\"my-database\"),\n\t\t\t\t\t\t\tMysqlTables: datastream.StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseMysqlTableArray{\n\t\t\t\t\t\t\t\t\u0026datastream.StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseMysqlTableArgs{\n\t\t\t\t\t\t\t\t\tTable: pulumi.String(\"excludedTable\"),\n\t\t\t\t\t\t\t\t\tMysqlColumns: datastream.StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseMysqlTableMysqlColumnArray{\n\t\t\t\t\t\t\t\t\t\t\u0026datastream.StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseMysqlTableMysqlColumnArgs{\n\t\t\t\t\t\t\t\t\t\t\tColumn: pulumi.String(\"excludedColumn\"),\n\t\t\t\t\t\t\t\t\t\t\tDataType: pulumi.String(\"VARCHAR\"),\n\t\t\t\t\t\t\t\t\t\t\tCollation: pulumi.String(\"utf8mb4\"),\n\t\t\t\t\t\t\t\t\t\t\tPrimaryKey: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t\t\tNullable: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t\t\tOrdinalPosition: pulumi.Int(0),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tCustomerManagedEncryptionKey: pulumi.String(\"kms-name\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tkeyUser,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsBackupConfigurationArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsIpConfigurationArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport com.pulumi.random.RandomPassword;\nimport com.pulumi.random.RandomPasswordArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileMysqlProfileArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketIAMMember;\nimport com.pulumi.gcp.storage.BucketIAMMemberArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileGcsProfileArgs;\nimport com.pulumi.gcp.datastream.Stream;\nimport com.pulumi.gcp.datastream.StreamArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigMysqlSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigMysqlSourceConfigIncludeObjectsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigMysqlSourceConfigExcludeObjectsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigGcsDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigGcsDestinationConfigJsonFileFormatArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamBackfillAllArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamBackfillAllMysqlExcludedObjectsArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"my-instance\")\n .databaseVersion(\"MYSQL_8_0\")\n .region(\"us-central1\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .backupConfiguration(DatabaseInstanceSettingsBackupConfigurationArgs.builder()\n .enabled(true)\n .binaryLogEnabled(true)\n .build())\n .ipConfiguration(DatabaseInstanceSettingsIpConfigurationArgs.builder()\n .authorizedNetworks( \n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.71.242.81\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.28.29\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.6.157\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.234.134\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.239.218\")\n .build())\n .build())\n .build())\n .deletionProtection(true)\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .instance(instance.name())\n .name(\"db\")\n .build());\n\n var pwd = new RandomPassword(\"pwd\", RandomPasswordArgs.builder()\n .length(16)\n .special(false)\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"user\")\n .instance(instance.name())\n .host(\"%\")\n .password(pwd.result())\n .build());\n\n var sourceConnectionProfile = new ConnectionProfile(\"sourceConnectionProfile\", ConnectionProfileArgs.builder()\n .displayName(\"Source connection profile\")\n .location(\"us-central1\")\n .connectionProfileId(\"source-profile\")\n .mysqlProfile(ConnectionProfileMysqlProfileArgs.builder()\n .hostname(instance.publicIpAddress())\n .username(user.name())\n .password(user.password())\n .build())\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(\"my-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var viewer = new BucketIAMMember(\"viewer\", BucketIAMMemberArgs.builder()\n .bucket(bucket.name())\n .role(\"roles/storage.objectViewer\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-datastream.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var creator = new BucketIAMMember(\"creator\", BucketIAMMemberArgs.builder()\n .bucket(bucket.name())\n .role(\"roles/storage.objectCreator\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-datastream.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var reader = new BucketIAMMember(\"reader\", BucketIAMMemberArgs.builder()\n .bucket(bucket.name())\n .role(\"roles/storage.legacyBucketReader\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-datastream.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var keyUser = new CryptoKeyIAMMember(\"keyUser\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(\"kms-name\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-datastream.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var destinationConnectionProfile = new ConnectionProfile(\"destinationConnectionProfile\", ConnectionProfileArgs.builder()\n .displayName(\"Connection profile\")\n .location(\"us-central1\")\n .connectionProfileId(\"destination-profile\")\n .gcsProfile(ConnectionProfileGcsProfileArgs.builder()\n .bucket(bucket.name())\n .rootPath(\"/path\")\n .build())\n .build());\n\n var default_ = new Stream(\"default\", StreamArgs.builder()\n .streamId(\"my-stream\")\n .desiredState(\"NOT_STARTED\")\n .location(\"us-central1\")\n .displayName(\"my stream\")\n .labels(Map.of(\"key\", \"value\"))\n .sourceConfig(StreamSourceConfigArgs.builder()\n .sourceConnectionProfile(sourceConnectionProfile.id())\n .mysqlSourceConfig(StreamSourceConfigMysqlSourceConfigArgs.builder()\n .includeObjects(StreamSourceConfigMysqlSourceConfigIncludeObjectsArgs.builder()\n .mysqlDatabases(StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseArgs.builder()\n .database(\"my-database\")\n .mysqlTables( \n StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseMysqlTableArgs.builder()\n .table(\"includedTable\")\n .mysqlColumns(StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseMysqlTableMysqlColumnArgs.builder()\n .column(\"includedColumn\")\n .dataType(\"VARCHAR\")\n .collation(\"utf8mb4\")\n .primaryKey(false)\n .nullable(false)\n .ordinalPosition(0)\n .build())\n .build(),\n StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseMysqlTableArgs.builder()\n .table(\"includedTable_2\")\n .build())\n .build())\n .build())\n .excludeObjects(StreamSourceConfigMysqlSourceConfigExcludeObjectsArgs.builder()\n .mysqlDatabases(StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseArgs.builder()\n .database(\"my-database\")\n .mysqlTables(StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTableArgs.builder()\n .table(\"excludedTable\")\n .mysqlColumns(StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTableMysqlColumnArgs.builder()\n .column(\"excludedColumn\")\n .dataType(\"VARCHAR\")\n .collation(\"utf8mb4\")\n .primaryKey(false)\n .nullable(false)\n .ordinalPosition(0)\n .build())\n .build())\n .build())\n .build())\n .maxConcurrentCdcTasks(5)\n .build())\n .build())\n .destinationConfig(StreamDestinationConfigArgs.builder()\n .destinationConnectionProfile(destinationConnectionProfile.id())\n .gcsDestinationConfig(StreamDestinationConfigGcsDestinationConfigArgs.builder()\n .path(\"mydata\")\n .fileRotationMb(200)\n .fileRotationInterval(\"60s\")\n .jsonFileFormat(StreamDestinationConfigGcsDestinationConfigJsonFileFormatArgs.builder()\n .schemaFileFormat(\"NO_SCHEMA_FILE\")\n .compression(\"GZIP\")\n .build())\n .build())\n .build())\n .backfillAll(StreamBackfillAllArgs.builder()\n .mysqlExcludedObjects(StreamBackfillAllMysqlExcludedObjectsArgs.builder()\n .mysqlDatabases(StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseArgs.builder()\n .database(\"my-database\")\n .mysqlTables(StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseMysqlTableArgs.builder()\n .table(\"excludedTable\")\n .mysqlColumns(StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseMysqlTableMysqlColumnArgs.builder()\n .column(\"excludedColumn\")\n .dataType(\"VARCHAR\")\n .collation(\"utf8mb4\")\n .primaryKey(false)\n .nullable(false)\n .ordinalPosition(0)\n .build())\n .build())\n .build())\n .build())\n .build())\n .customerManagedEncryptionKey(\"kms-name\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(keyUser)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: my-instance\n databaseVersion: MYSQL_8_0\n region: us-central1\n settings:\n tier: db-f1-micro\n backupConfiguration:\n enabled: true\n binaryLogEnabled: true\n ipConfiguration:\n authorizedNetworks:\n - value: 34.71.242.81\n - value: 34.72.28.29\n - value: 34.67.6.157\n - value: 34.67.234.134\n - value: 34.72.239.218\n deletionProtection: true\n db:\n type: gcp:sql:Database\n properties:\n instance: ${instance.name}\n name: db\n pwd:\n type: random:RandomPassword\n properties:\n length: 16\n special: false\n user:\n type: gcp:sql:User\n properties:\n name: user\n instance: ${instance.name}\n host: '%'\n password: ${pwd.result}\n sourceConnectionProfile:\n type: gcp:datastream:ConnectionProfile\n name: source_connection_profile\n properties:\n displayName: Source connection profile\n location: us-central1\n connectionProfileId: source-profile\n mysqlProfile:\n hostname: ${instance.publicIpAddress}\n username: ${user.name}\n password: ${user.password}\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: my-bucket\n location: US\n uniformBucketLevelAccess: true\n viewer:\n type: gcp:storage:BucketIAMMember\n properties:\n bucket: ${bucket.name}\n role: roles/storage.objectViewer\n member: serviceAccount:service-${project.number}@gcp-sa-datastream.iam.gserviceaccount.com\n creator:\n type: gcp:storage:BucketIAMMember\n properties:\n bucket: ${bucket.name}\n role: roles/storage.objectCreator\n member: serviceAccount:service-${project.number}@gcp-sa-datastream.iam.gserviceaccount.com\n reader:\n type: gcp:storage:BucketIAMMember\n properties:\n bucket: ${bucket.name}\n role: roles/storage.legacyBucketReader\n member: serviceAccount:service-${project.number}@gcp-sa-datastream.iam.gserviceaccount.com\n keyUser:\n type: gcp:kms:CryptoKeyIAMMember\n name: key_user\n properties:\n cryptoKeyId: kms-name\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-datastream.iam.gserviceaccount.com\n destinationConnectionProfile:\n type: gcp:datastream:ConnectionProfile\n name: destination_connection_profile\n properties:\n displayName: Connection profile\n location: us-central1\n connectionProfileId: destination-profile\n gcsProfile:\n bucket: ${bucket.name}\n rootPath: /path\n default:\n type: gcp:datastream:Stream\n properties:\n streamId: my-stream\n desiredState: NOT_STARTED\n location: us-central1\n displayName: my stream\n labels:\n key: value\n sourceConfig:\n sourceConnectionProfile: ${sourceConnectionProfile.id}\n mysqlSourceConfig:\n includeObjects:\n mysqlDatabases:\n - database: my-database\n mysqlTables:\n - table: includedTable\n mysqlColumns:\n - column: includedColumn\n dataType: VARCHAR\n collation: utf8mb4\n primaryKey: false\n nullable: false\n ordinalPosition: 0\n - table: includedTable_2\n excludeObjects:\n mysqlDatabases:\n - database: my-database\n mysqlTables:\n - table: excludedTable\n mysqlColumns:\n - column: excludedColumn\n dataType: VARCHAR\n collation: utf8mb4\n primaryKey: false\n nullable: false\n ordinalPosition: 0\n maxConcurrentCdcTasks: 5\n destinationConfig:\n destinationConnectionProfile: ${destinationConnectionProfile.id}\n gcsDestinationConfig:\n path: mydata\n fileRotationMb: 200\n fileRotationInterval: 60s\n jsonFileFormat:\n schemaFileFormat: NO_SCHEMA_FILE\n compression: GZIP\n backfillAll:\n mysqlExcludedObjects:\n mysqlDatabases:\n - database: my-database\n mysqlTables:\n - table: excludedTable\n mysqlColumns:\n - column: excludedColumn\n dataType: VARCHAR\n collation: utf8mb4\n primaryKey: false\n nullable: false\n ordinalPosition: 0\n customerManagedEncryptionKey: kms-name\n options:\n dependson:\n - ${keyUser}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Datastream Stream Postgresql\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst source = new gcp.datastream.ConnectionProfile(\"source\", {\n displayName: \"Postgresql Source\",\n location: \"us-central1\",\n connectionProfileId: \"source-profile\",\n postgresqlProfile: {\n hostname: \"hostname\",\n port: 3306,\n username: \"user\",\n password: \"pass\",\n database: \"postgres\",\n },\n});\nconst destination = new gcp.datastream.ConnectionProfile(\"destination\", {\n displayName: \"BigQuery Destination\",\n location: \"us-central1\",\n connectionProfileId: \"destination-profile\",\n bigqueryProfile: {},\n});\nconst _default = new gcp.datastream.Stream(\"default\", {\n displayName: \"Postgres to BigQuery\",\n location: \"us-central1\",\n streamId: \"my-stream\",\n desiredState: \"RUNNING\",\n sourceConfig: {\n sourceConnectionProfile: source.id,\n postgresqlSourceConfig: {\n maxConcurrentBackfillTasks: 12,\n publication: \"publication\",\n replicationSlot: \"replication_slot\",\n includeObjects: {\n postgresqlSchemas: [{\n schema: \"schema\",\n postgresqlTables: [{\n table: \"table\",\n postgresqlColumns: [{\n column: \"column\",\n }],\n }],\n }],\n },\n excludeObjects: {\n postgresqlSchemas: [{\n schema: \"schema\",\n postgresqlTables: [{\n table: \"table\",\n postgresqlColumns: [{\n column: \"column\",\n }],\n }],\n }],\n },\n },\n },\n destinationConfig: {\n destinationConnectionProfile: destination.id,\n bigqueryDestinationConfig: {\n dataFreshness: \"900s\",\n sourceHierarchyDatasets: {\n datasetTemplate: {\n location: \"us-central1\",\n },\n },\n },\n },\n backfillAll: {\n postgresqlExcludedObjects: {\n postgresqlSchemas: [{\n schema: \"schema\",\n postgresqlTables: [{\n table: \"table\",\n postgresqlColumns: [{\n column: \"column\",\n }],\n }],\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsource = gcp.datastream.ConnectionProfile(\"source\",\n display_name=\"Postgresql Source\",\n location=\"us-central1\",\n connection_profile_id=\"source-profile\",\n postgresql_profile={\n \"hostname\": \"hostname\",\n \"port\": 3306,\n \"username\": \"user\",\n \"password\": \"pass\",\n \"database\": \"postgres\",\n })\ndestination = gcp.datastream.ConnectionProfile(\"destination\",\n display_name=\"BigQuery Destination\",\n location=\"us-central1\",\n connection_profile_id=\"destination-profile\",\n bigquery_profile={})\ndefault = gcp.datastream.Stream(\"default\",\n display_name=\"Postgres to BigQuery\",\n location=\"us-central1\",\n stream_id=\"my-stream\",\n desired_state=\"RUNNING\",\n source_config={\n \"source_connection_profile\": source.id,\n \"postgresql_source_config\": {\n \"max_concurrent_backfill_tasks\": 12,\n \"publication\": \"publication\",\n \"replication_slot\": \"replication_slot\",\n \"include_objects\": {\n \"postgresql_schemas\": [{\n \"schema\": \"schema\",\n \"postgresql_tables\": [{\n \"table\": \"table\",\n \"postgresql_columns\": [{\n \"column\": \"column\",\n }],\n }],\n }],\n },\n \"exclude_objects\": {\n \"postgresql_schemas\": [{\n \"schema\": \"schema\",\n \"postgresql_tables\": [{\n \"table\": \"table\",\n \"postgresql_columns\": [{\n \"column\": \"column\",\n }],\n }],\n }],\n },\n },\n },\n destination_config={\n \"destination_connection_profile\": destination.id,\n \"bigquery_destination_config\": {\n \"data_freshness\": \"900s\",\n \"source_hierarchy_datasets\": {\n \"dataset_template\": {\n \"location\": \"us-central1\",\n },\n },\n },\n },\n backfill_all={\n \"postgresql_excluded_objects\": {\n \"postgresql_schemas\": [{\n \"schema\": \"schema\",\n \"postgresql_tables\": [{\n \"table\": \"table\",\n \"postgresql_columns\": [{\n \"column\": \"column\",\n }],\n }],\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var source = new Gcp.Datastream.ConnectionProfile(\"source\", new()\n {\n DisplayName = \"Postgresql Source\",\n Location = \"us-central1\",\n ConnectionProfileId = \"source-profile\",\n PostgresqlProfile = new Gcp.Datastream.Inputs.ConnectionProfilePostgresqlProfileArgs\n {\n Hostname = \"hostname\",\n Port = 3306,\n Username = \"user\",\n Password = \"pass\",\n Database = \"postgres\",\n },\n });\n\n var destination = new Gcp.Datastream.ConnectionProfile(\"destination\", new()\n {\n DisplayName = \"BigQuery Destination\",\n Location = \"us-central1\",\n ConnectionProfileId = \"destination-profile\",\n BigqueryProfile = null,\n });\n\n var @default = new Gcp.Datastream.Stream(\"default\", new()\n {\n DisplayName = \"Postgres to BigQuery\",\n Location = \"us-central1\",\n StreamId = \"my-stream\",\n DesiredState = \"RUNNING\",\n SourceConfig = new Gcp.Datastream.Inputs.StreamSourceConfigArgs\n {\n SourceConnectionProfile = source.Id,\n PostgresqlSourceConfig = new Gcp.Datastream.Inputs.StreamSourceConfigPostgresqlSourceConfigArgs\n {\n MaxConcurrentBackfillTasks = 12,\n Publication = \"publication\",\n ReplicationSlot = \"replication_slot\",\n IncludeObjects = new Gcp.Datastream.Inputs.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsArgs\n {\n PostgresqlSchemas = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaArgs\n {\n Schema = \"schema\",\n PostgresqlTables = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaPostgresqlTableArgs\n {\n Table = \"table\",\n PostgresqlColumns = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArgs\n {\n Column = \"column\",\n },\n },\n },\n },\n },\n },\n },\n ExcludeObjects = new Gcp.Datastream.Inputs.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsArgs\n {\n PostgresqlSchemas = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaArgs\n {\n Schema = \"schema\",\n PostgresqlTables = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaPostgresqlTableArgs\n {\n Table = \"table\",\n PostgresqlColumns = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArgs\n {\n Column = \"column\",\n },\n },\n },\n },\n },\n },\n },\n },\n },\n DestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigArgs\n {\n DestinationConnectionProfile = destination.Id,\n BigqueryDestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigArgs\n {\n DataFreshness = \"900s\",\n SourceHierarchyDatasets = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs\n {\n DatasetTemplate = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs\n {\n Location = \"us-central1\",\n },\n },\n },\n },\n BackfillAll = new Gcp.Datastream.Inputs.StreamBackfillAllArgs\n {\n PostgresqlExcludedObjects = new Gcp.Datastream.Inputs.StreamBackfillAllPostgresqlExcludedObjectsArgs\n {\n PostgresqlSchemas = new[]\n {\n new Gcp.Datastream.Inputs.StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaArgs\n {\n Schema = \"schema\",\n PostgresqlTables = new[]\n {\n new Gcp.Datastream.Inputs.StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaPostgresqlTableArgs\n {\n Table = \"table\",\n PostgresqlColumns = new[]\n {\n new Gcp.Datastream.Inputs.StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArgs\n {\n Column = \"column\",\n },\n },\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datastream\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsource, err := datastream.NewConnectionProfile(ctx, \"source\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Postgresql Source\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"source-profile\"),\n\t\t\tPostgresqlProfile: \u0026datastream.ConnectionProfilePostgresqlProfileArgs{\n\t\t\t\tHostname: pulumi.String(\"hostname\"),\n\t\t\t\tPort: pulumi.Int(3306),\n\t\t\t\tUsername: pulumi.String(\"user\"),\n\t\t\t\tPassword: pulumi.String(\"pass\"),\n\t\t\t\tDatabase: pulumi.String(\"postgres\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestination, err := datastream.NewConnectionProfile(ctx, \"destination\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"BigQuery Destination\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"destination-profile\"),\n\t\t\tBigqueryProfile: nil,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datastream.NewStream(ctx, \"default\", \u0026datastream.StreamArgs{\n\t\t\tDisplayName: pulumi.String(\"Postgres to BigQuery\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tStreamId: pulumi.String(\"my-stream\"),\n\t\t\tDesiredState: pulumi.String(\"RUNNING\"),\n\t\t\tSourceConfig: \u0026datastream.StreamSourceConfigArgs{\n\t\t\t\tSourceConnectionProfile: source.ID(),\n\t\t\t\tPostgresqlSourceConfig: \u0026datastream.StreamSourceConfigPostgresqlSourceConfigArgs{\n\t\t\t\t\tMaxConcurrentBackfillTasks: pulumi.Int(12),\n\t\t\t\t\tPublication: pulumi.String(\"publication\"),\n\t\t\t\t\tReplicationSlot: pulumi.String(\"replication_slot\"),\n\t\t\t\t\tIncludeObjects: \u0026datastream.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsArgs{\n\t\t\t\t\t\tPostgresqlSchemas: datastream.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaArray{\n\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaArgs{\n\t\t\t\t\t\t\t\tSchema: pulumi.String(\"schema\"),\n\t\t\t\t\t\t\t\tPostgresqlTables: datastream.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaPostgresqlTableArray{\n\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaPostgresqlTableArgs{\n\t\t\t\t\t\t\t\t\t\tTable: pulumi.String(\"table\"),\n\t\t\t\t\t\t\t\t\t\tPostgresqlColumns: datastream.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tColumn: pulumi.String(\"column\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tExcludeObjects: \u0026datastream.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsArgs{\n\t\t\t\t\t\tPostgresqlSchemas: datastream.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaArray{\n\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaArgs{\n\t\t\t\t\t\t\t\tSchema: pulumi.String(\"schema\"),\n\t\t\t\t\t\t\t\tPostgresqlTables: datastream.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaPostgresqlTableArray{\n\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaPostgresqlTableArgs{\n\t\t\t\t\t\t\t\t\t\tTable: pulumi.String(\"table\"),\n\t\t\t\t\t\t\t\t\t\tPostgresqlColumns: datastream.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tColumn: pulumi.String(\"column\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDestinationConfig: \u0026datastream.StreamDestinationConfigArgs{\n\t\t\t\tDestinationConnectionProfile: destination.ID(),\n\t\t\t\tBigqueryDestinationConfig: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigArgs{\n\t\t\t\t\tDataFreshness: pulumi.String(\"900s\"),\n\t\t\t\t\tSourceHierarchyDatasets: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs{\n\t\t\t\t\t\tDatasetTemplate: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBackfillAll: \u0026datastream.StreamBackfillAllArgs{\n\t\t\t\tPostgresqlExcludedObjects: \u0026datastream.StreamBackfillAllPostgresqlExcludedObjectsArgs{\n\t\t\t\t\tPostgresqlSchemas: datastream.StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaArray{\n\t\t\t\t\t\t\u0026datastream.StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaArgs{\n\t\t\t\t\t\t\tSchema: pulumi.String(\"schema\"),\n\t\t\t\t\t\t\tPostgresqlTables: datastream.StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaPostgresqlTableArray{\n\t\t\t\t\t\t\t\t\u0026datastream.StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaPostgresqlTableArgs{\n\t\t\t\t\t\t\t\t\tTable: pulumi.String(\"table\"),\n\t\t\t\t\t\t\t\t\tPostgresqlColumns: datastream.StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArray{\n\t\t\t\t\t\t\t\t\t\t\u0026datastream.StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArgs{\n\t\t\t\t\t\t\t\t\t\t\tColumn: pulumi.String(\"column\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfilePostgresqlProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileBigqueryProfileArgs;\nimport com.pulumi.gcp.datastream.Stream;\nimport com.pulumi.gcp.datastream.StreamArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigPostgresqlSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamBackfillAllArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamBackfillAllPostgresqlExcludedObjectsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var source = new ConnectionProfile(\"source\", ConnectionProfileArgs.builder()\n .displayName(\"Postgresql Source\")\n .location(\"us-central1\")\n .connectionProfileId(\"source-profile\")\n .postgresqlProfile(ConnectionProfilePostgresqlProfileArgs.builder()\n .hostname(\"hostname\")\n .port(3306)\n .username(\"user\")\n .password(\"pass\")\n .database(\"postgres\")\n .build())\n .build());\n\n var destination = new ConnectionProfile(\"destination\", ConnectionProfileArgs.builder()\n .displayName(\"BigQuery Destination\")\n .location(\"us-central1\")\n .connectionProfileId(\"destination-profile\")\n .bigqueryProfile()\n .build());\n\n var default_ = new Stream(\"default\", StreamArgs.builder()\n .displayName(\"Postgres to BigQuery\")\n .location(\"us-central1\")\n .streamId(\"my-stream\")\n .desiredState(\"RUNNING\")\n .sourceConfig(StreamSourceConfigArgs.builder()\n .sourceConnectionProfile(source.id())\n .postgresqlSourceConfig(StreamSourceConfigPostgresqlSourceConfigArgs.builder()\n .maxConcurrentBackfillTasks(12)\n .publication(\"publication\")\n .replicationSlot(\"replication_slot\")\n .includeObjects(StreamSourceConfigPostgresqlSourceConfigIncludeObjectsArgs.builder()\n .postgresqlSchemas(StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaArgs.builder()\n .schema(\"schema\")\n .postgresqlTables(StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaPostgresqlTableArgs.builder()\n .table(\"table\")\n .postgresqlColumns(StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArgs.builder()\n .column(\"column\")\n .build())\n .build())\n .build())\n .build())\n .excludeObjects(StreamSourceConfigPostgresqlSourceConfigExcludeObjectsArgs.builder()\n .postgresqlSchemas(StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaArgs.builder()\n .schema(\"schema\")\n .postgresqlTables(StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaPostgresqlTableArgs.builder()\n .table(\"table\")\n .postgresqlColumns(StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArgs.builder()\n .column(\"column\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .build())\n .destinationConfig(StreamDestinationConfigArgs.builder()\n .destinationConnectionProfile(destination.id())\n .bigqueryDestinationConfig(StreamDestinationConfigBigqueryDestinationConfigArgs.builder()\n .dataFreshness(\"900s\")\n .sourceHierarchyDatasets(StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs.builder()\n .datasetTemplate(StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs.builder()\n .location(\"us-central1\")\n .build())\n .build())\n .build())\n .build())\n .backfillAll(StreamBackfillAllArgs.builder()\n .postgresqlExcludedObjects(StreamBackfillAllPostgresqlExcludedObjectsArgs.builder()\n .postgresqlSchemas(StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaArgs.builder()\n .schema(\"schema\")\n .postgresqlTables(StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaPostgresqlTableArgs.builder()\n .table(\"table\")\n .postgresqlColumns(StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArgs.builder()\n .column(\"column\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n source:\n type: gcp:datastream:ConnectionProfile\n properties:\n displayName: Postgresql Source\n location: us-central1\n connectionProfileId: source-profile\n postgresqlProfile:\n hostname: hostname\n port: 3306\n username: user\n password: pass\n database: postgres\n destination:\n type: gcp:datastream:ConnectionProfile\n properties:\n displayName: BigQuery Destination\n location: us-central1\n connectionProfileId: destination-profile\n bigqueryProfile: {}\n default:\n type: gcp:datastream:Stream\n properties:\n displayName: Postgres to BigQuery\n location: us-central1\n streamId: my-stream\n desiredState: RUNNING\n sourceConfig:\n sourceConnectionProfile: ${source.id}\n postgresqlSourceConfig:\n maxConcurrentBackfillTasks: 12\n publication: publication\n replicationSlot: replication_slot\n includeObjects:\n postgresqlSchemas:\n - schema: schema\n postgresqlTables:\n - table: table\n postgresqlColumns:\n - column: column\n excludeObjects:\n postgresqlSchemas:\n - schema: schema\n postgresqlTables:\n - table: table\n postgresqlColumns:\n - column: column\n destinationConfig:\n destinationConnectionProfile: ${destination.id}\n bigqueryDestinationConfig:\n dataFreshness: 900s\n sourceHierarchyDatasets:\n datasetTemplate:\n location: us-central1\n backfillAll:\n postgresqlExcludedObjects:\n postgresqlSchemas:\n - schema: schema\n postgresqlTables:\n - table: table\n postgresqlColumns:\n - column: column\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Datastream Stream Oracle\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst source = new gcp.datastream.ConnectionProfile(\"source\", {\n displayName: \"Oracle Source\",\n location: \"us-central1\",\n connectionProfileId: \"source-profile\",\n oracleProfile: {\n hostname: \"hostname\",\n port: 1521,\n username: \"user\",\n password: \"pass\",\n databaseService: \"ORCL\",\n },\n});\nconst destination = new gcp.datastream.ConnectionProfile(\"destination\", {\n displayName: \"BigQuery Destination\",\n location: \"us-central1\",\n connectionProfileId: \"destination-profile\",\n bigqueryProfile: {},\n});\nconst stream5 = new gcp.datastream.Stream(\"stream5\", {\n displayName: \"Oracle to BigQuery\",\n location: \"us-central1\",\n streamId: \"my-stream\",\n desiredState: \"RUNNING\",\n sourceConfig: {\n sourceConnectionProfile: source.id,\n oracleSourceConfig: {\n maxConcurrentCdcTasks: 8,\n maxConcurrentBackfillTasks: 12,\n includeObjects: {\n oracleSchemas: [{\n schema: \"schema\",\n oracleTables: [{\n table: \"table\",\n oracleColumns: [{\n column: \"column\",\n }],\n }],\n }],\n },\n excludeObjects: {\n oracleSchemas: [{\n schema: \"schema\",\n oracleTables: [{\n table: \"table\",\n oracleColumns: [{\n column: \"column\",\n }],\n }],\n }],\n },\n dropLargeObjects: {},\n },\n },\n destinationConfig: {\n destinationConnectionProfile: destination.id,\n bigqueryDestinationConfig: {\n dataFreshness: \"900s\",\n sourceHierarchyDatasets: {\n datasetTemplate: {\n location: \"us-central1\",\n },\n },\n },\n },\n backfillAll: {\n oracleExcludedObjects: {\n oracleSchemas: [{\n schema: \"schema\",\n oracleTables: [{\n table: \"table\",\n oracleColumns: [{\n column: \"column\",\n }],\n }],\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsource = gcp.datastream.ConnectionProfile(\"source\",\n display_name=\"Oracle Source\",\n location=\"us-central1\",\n connection_profile_id=\"source-profile\",\n oracle_profile={\n \"hostname\": \"hostname\",\n \"port\": 1521,\n \"username\": \"user\",\n \"password\": \"pass\",\n \"database_service\": \"ORCL\",\n })\ndestination = gcp.datastream.ConnectionProfile(\"destination\",\n display_name=\"BigQuery Destination\",\n location=\"us-central1\",\n connection_profile_id=\"destination-profile\",\n bigquery_profile={})\nstream5 = gcp.datastream.Stream(\"stream5\",\n display_name=\"Oracle to BigQuery\",\n location=\"us-central1\",\n stream_id=\"my-stream\",\n desired_state=\"RUNNING\",\n source_config={\n \"source_connection_profile\": source.id,\n \"oracle_source_config\": {\n \"max_concurrent_cdc_tasks\": 8,\n \"max_concurrent_backfill_tasks\": 12,\n \"include_objects\": {\n \"oracle_schemas\": [{\n \"schema\": \"schema\",\n \"oracle_tables\": [{\n \"table\": \"table\",\n \"oracle_columns\": [{\n \"column\": \"column\",\n }],\n }],\n }],\n },\n \"exclude_objects\": {\n \"oracle_schemas\": [{\n \"schema\": \"schema\",\n \"oracle_tables\": [{\n \"table\": \"table\",\n \"oracle_columns\": [{\n \"column\": \"column\",\n }],\n }],\n }],\n },\n \"drop_large_objects\": {},\n },\n },\n destination_config={\n \"destination_connection_profile\": destination.id,\n \"bigquery_destination_config\": {\n \"data_freshness\": \"900s\",\n \"source_hierarchy_datasets\": {\n \"dataset_template\": {\n \"location\": \"us-central1\",\n },\n },\n },\n },\n backfill_all={\n \"oracle_excluded_objects\": {\n \"oracle_schemas\": [{\n \"schema\": \"schema\",\n \"oracle_tables\": [{\n \"table\": \"table\",\n \"oracle_columns\": [{\n \"column\": \"column\",\n }],\n }],\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var source = new Gcp.Datastream.ConnectionProfile(\"source\", new()\n {\n DisplayName = \"Oracle Source\",\n Location = \"us-central1\",\n ConnectionProfileId = \"source-profile\",\n OracleProfile = new Gcp.Datastream.Inputs.ConnectionProfileOracleProfileArgs\n {\n Hostname = \"hostname\",\n Port = 1521,\n Username = \"user\",\n Password = \"pass\",\n DatabaseService = \"ORCL\",\n },\n });\n\n var destination = new Gcp.Datastream.ConnectionProfile(\"destination\", new()\n {\n DisplayName = \"BigQuery Destination\",\n Location = \"us-central1\",\n ConnectionProfileId = \"destination-profile\",\n BigqueryProfile = null,\n });\n\n var stream5 = new Gcp.Datastream.Stream(\"stream5\", new()\n {\n DisplayName = \"Oracle to BigQuery\",\n Location = \"us-central1\",\n StreamId = \"my-stream\",\n DesiredState = \"RUNNING\",\n SourceConfig = new Gcp.Datastream.Inputs.StreamSourceConfigArgs\n {\n SourceConnectionProfile = source.Id,\n OracleSourceConfig = new Gcp.Datastream.Inputs.StreamSourceConfigOracleSourceConfigArgs\n {\n MaxConcurrentCdcTasks = 8,\n MaxConcurrentBackfillTasks = 12,\n IncludeObjects = new Gcp.Datastream.Inputs.StreamSourceConfigOracleSourceConfigIncludeObjectsArgs\n {\n OracleSchemas = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaArgs\n {\n Schema = \"schema\",\n OracleTables = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaOracleTableArgs\n {\n Table = \"table\",\n OracleColumns = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaOracleTableOracleColumnArgs\n {\n Column = \"column\",\n },\n },\n },\n },\n },\n },\n },\n ExcludeObjects = new Gcp.Datastream.Inputs.StreamSourceConfigOracleSourceConfigExcludeObjectsArgs\n {\n OracleSchemas = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaArgs\n {\n Schema = \"schema\",\n OracleTables = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaOracleTableArgs\n {\n Table = \"table\",\n OracleColumns = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaOracleTableOracleColumnArgs\n {\n Column = \"column\",\n },\n },\n },\n },\n },\n },\n },\n DropLargeObjects = null,\n },\n },\n DestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigArgs\n {\n DestinationConnectionProfile = destination.Id,\n BigqueryDestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigArgs\n {\n DataFreshness = \"900s\",\n SourceHierarchyDatasets = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs\n {\n DatasetTemplate = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs\n {\n Location = \"us-central1\",\n },\n },\n },\n },\n BackfillAll = new Gcp.Datastream.Inputs.StreamBackfillAllArgs\n {\n OracleExcludedObjects = new Gcp.Datastream.Inputs.StreamBackfillAllOracleExcludedObjectsArgs\n {\n OracleSchemas = new[]\n {\n new Gcp.Datastream.Inputs.StreamBackfillAllOracleExcludedObjectsOracleSchemaArgs\n {\n Schema = \"schema\",\n OracleTables = new[]\n {\n new Gcp.Datastream.Inputs.StreamBackfillAllOracleExcludedObjectsOracleSchemaOracleTableArgs\n {\n Table = \"table\",\n OracleColumns = new[]\n {\n new Gcp.Datastream.Inputs.StreamBackfillAllOracleExcludedObjectsOracleSchemaOracleTableOracleColumnArgs\n {\n Column = \"column\",\n },\n },\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datastream\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsource, err := datastream.NewConnectionProfile(ctx, \"source\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Oracle Source\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"source-profile\"),\n\t\t\tOracleProfile: \u0026datastream.ConnectionProfileOracleProfileArgs{\n\t\t\t\tHostname: pulumi.String(\"hostname\"),\n\t\t\t\tPort: pulumi.Int(1521),\n\t\t\t\tUsername: pulumi.String(\"user\"),\n\t\t\t\tPassword: pulumi.String(\"pass\"),\n\t\t\t\tDatabaseService: pulumi.String(\"ORCL\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestination, err := datastream.NewConnectionProfile(ctx, \"destination\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"BigQuery Destination\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"destination-profile\"),\n\t\t\tBigqueryProfile: nil,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datastream.NewStream(ctx, \"stream5\", \u0026datastream.StreamArgs{\n\t\t\tDisplayName: pulumi.String(\"Oracle to BigQuery\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tStreamId: pulumi.String(\"my-stream\"),\n\t\t\tDesiredState: pulumi.String(\"RUNNING\"),\n\t\t\tSourceConfig: \u0026datastream.StreamSourceConfigArgs{\n\t\t\t\tSourceConnectionProfile: source.ID(),\n\t\t\t\tOracleSourceConfig: \u0026datastream.StreamSourceConfigOracleSourceConfigArgs{\n\t\t\t\t\tMaxConcurrentCdcTasks: pulumi.Int(8),\n\t\t\t\t\tMaxConcurrentBackfillTasks: pulumi.Int(12),\n\t\t\t\t\tIncludeObjects: \u0026datastream.StreamSourceConfigOracleSourceConfigIncludeObjectsArgs{\n\t\t\t\t\t\tOracleSchemas: datastream.StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaArray{\n\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaArgs{\n\t\t\t\t\t\t\t\tSchema: pulumi.String(\"schema\"),\n\t\t\t\t\t\t\t\tOracleTables: datastream.StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaOracleTableArray{\n\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaOracleTableArgs{\n\t\t\t\t\t\t\t\t\t\tTable: pulumi.String(\"table\"),\n\t\t\t\t\t\t\t\t\t\tOracleColumns: datastream.StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaOracleTableOracleColumnArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaOracleTableOracleColumnArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tColumn: pulumi.String(\"column\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tExcludeObjects: \u0026datastream.StreamSourceConfigOracleSourceConfigExcludeObjectsArgs{\n\t\t\t\t\t\tOracleSchemas: datastream.StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaArray{\n\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaArgs{\n\t\t\t\t\t\t\t\tSchema: pulumi.String(\"schema\"),\n\t\t\t\t\t\t\t\tOracleTables: datastream.StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaOracleTableArray{\n\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaOracleTableArgs{\n\t\t\t\t\t\t\t\t\t\tTable: pulumi.String(\"table\"),\n\t\t\t\t\t\t\t\t\t\tOracleColumns: datastream.StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaOracleTableOracleColumnArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaOracleTableOracleColumnArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tColumn: pulumi.String(\"column\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tDropLargeObjects: nil,\n\t\t\t\t},\n\t\t\t},\n\t\t\tDestinationConfig: \u0026datastream.StreamDestinationConfigArgs{\n\t\t\t\tDestinationConnectionProfile: destination.ID(),\n\t\t\t\tBigqueryDestinationConfig: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigArgs{\n\t\t\t\t\tDataFreshness: pulumi.String(\"900s\"),\n\t\t\t\t\tSourceHierarchyDatasets: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs{\n\t\t\t\t\t\tDatasetTemplate: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBackfillAll: \u0026datastream.StreamBackfillAllArgs{\n\t\t\t\tOracleExcludedObjects: \u0026datastream.StreamBackfillAllOracleExcludedObjectsArgs{\n\t\t\t\t\tOracleSchemas: datastream.StreamBackfillAllOracleExcludedObjectsOracleSchemaArray{\n\t\t\t\t\t\t\u0026datastream.StreamBackfillAllOracleExcludedObjectsOracleSchemaArgs{\n\t\t\t\t\t\t\tSchema: pulumi.String(\"schema\"),\n\t\t\t\t\t\t\tOracleTables: datastream.StreamBackfillAllOracleExcludedObjectsOracleSchemaOracleTableArray{\n\t\t\t\t\t\t\t\t\u0026datastream.StreamBackfillAllOracleExcludedObjectsOracleSchemaOracleTableArgs{\n\t\t\t\t\t\t\t\t\tTable: pulumi.String(\"table\"),\n\t\t\t\t\t\t\t\t\tOracleColumns: datastream.StreamBackfillAllOracleExcludedObjectsOracleSchemaOracleTableOracleColumnArray{\n\t\t\t\t\t\t\t\t\t\t\u0026datastream.StreamBackfillAllOracleExcludedObjectsOracleSchemaOracleTableOracleColumnArgs{\n\t\t\t\t\t\t\t\t\t\t\tColumn: pulumi.String(\"column\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileOracleProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileBigqueryProfileArgs;\nimport com.pulumi.gcp.datastream.Stream;\nimport com.pulumi.gcp.datastream.StreamArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigOracleSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigOracleSourceConfigIncludeObjectsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigOracleSourceConfigExcludeObjectsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigOracleSourceConfigDropLargeObjectsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamBackfillAllArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamBackfillAllOracleExcludedObjectsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var source = new ConnectionProfile(\"source\", ConnectionProfileArgs.builder()\n .displayName(\"Oracle Source\")\n .location(\"us-central1\")\n .connectionProfileId(\"source-profile\")\n .oracleProfile(ConnectionProfileOracleProfileArgs.builder()\n .hostname(\"hostname\")\n .port(1521)\n .username(\"user\")\n .password(\"pass\")\n .databaseService(\"ORCL\")\n .build())\n .build());\n\n var destination = new ConnectionProfile(\"destination\", ConnectionProfileArgs.builder()\n .displayName(\"BigQuery Destination\")\n .location(\"us-central1\")\n .connectionProfileId(\"destination-profile\")\n .bigqueryProfile()\n .build());\n\n var stream5 = new Stream(\"stream5\", StreamArgs.builder()\n .displayName(\"Oracle to BigQuery\")\n .location(\"us-central1\")\n .streamId(\"my-stream\")\n .desiredState(\"RUNNING\")\n .sourceConfig(StreamSourceConfigArgs.builder()\n .sourceConnectionProfile(source.id())\n .oracleSourceConfig(StreamSourceConfigOracleSourceConfigArgs.builder()\n .maxConcurrentCdcTasks(8)\n .maxConcurrentBackfillTasks(12)\n .includeObjects(StreamSourceConfigOracleSourceConfigIncludeObjectsArgs.builder()\n .oracleSchemas(StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaArgs.builder()\n .schema(\"schema\")\n .oracleTables(StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaOracleTableArgs.builder()\n .table(\"table\")\n .oracleColumns(StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaOracleTableOracleColumnArgs.builder()\n .column(\"column\")\n .build())\n .build())\n .build())\n .build())\n .excludeObjects(StreamSourceConfigOracleSourceConfigExcludeObjectsArgs.builder()\n .oracleSchemas(StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaArgs.builder()\n .schema(\"schema\")\n .oracleTables(StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaOracleTableArgs.builder()\n .table(\"table\")\n .oracleColumns(StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaOracleTableOracleColumnArgs.builder()\n .column(\"column\")\n .build())\n .build())\n .build())\n .build())\n .dropLargeObjects()\n .build())\n .build())\n .destinationConfig(StreamDestinationConfigArgs.builder()\n .destinationConnectionProfile(destination.id())\n .bigqueryDestinationConfig(StreamDestinationConfigBigqueryDestinationConfigArgs.builder()\n .dataFreshness(\"900s\")\n .sourceHierarchyDatasets(StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs.builder()\n .datasetTemplate(StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs.builder()\n .location(\"us-central1\")\n .build())\n .build())\n .build())\n .build())\n .backfillAll(StreamBackfillAllArgs.builder()\n .oracleExcludedObjects(StreamBackfillAllOracleExcludedObjectsArgs.builder()\n .oracleSchemas(StreamBackfillAllOracleExcludedObjectsOracleSchemaArgs.builder()\n .schema(\"schema\")\n .oracleTables(StreamBackfillAllOracleExcludedObjectsOracleSchemaOracleTableArgs.builder()\n .table(\"table\")\n .oracleColumns(StreamBackfillAllOracleExcludedObjectsOracleSchemaOracleTableOracleColumnArgs.builder()\n .column(\"column\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n source:\n type: gcp:datastream:ConnectionProfile\n properties:\n displayName: Oracle Source\n location: us-central1\n connectionProfileId: source-profile\n oracleProfile:\n hostname: hostname\n port: 1521\n username: user\n password: pass\n databaseService: ORCL\n destination:\n type: gcp:datastream:ConnectionProfile\n properties:\n displayName: BigQuery Destination\n location: us-central1\n connectionProfileId: destination-profile\n bigqueryProfile: {}\n stream5:\n type: gcp:datastream:Stream\n properties:\n displayName: Oracle to BigQuery\n location: us-central1\n streamId: my-stream\n desiredState: RUNNING\n sourceConfig:\n sourceConnectionProfile: ${source.id}\n oracleSourceConfig:\n maxConcurrentCdcTasks: 8\n maxConcurrentBackfillTasks: 12\n includeObjects:\n oracleSchemas:\n - schema: schema\n oracleTables:\n - table: table\n oracleColumns:\n - column: column\n excludeObjects:\n oracleSchemas:\n - schema: schema\n oracleTables:\n - table: table\n oracleColumns:\n - column: column\n dropLargeObjects: {}\n destinationConfig:\n destinationConnectionProfile: ${destination.id}\n bigqueryDestinationConfig:\n dataFreshness: 900s\n sourceHierarchyDatasets:\n datasetTemplate:\n location: us-central1\n backfillAll:\n oracleExcludedObjects:\n oracleSchemas:\n - schema: schema\n oracleTables:\n - table: table\n oracleColumns:\n - column: column\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Datastream Stream Sql Server\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"sql-server\",\n databaseVersion: \"SQLSERVER_2019_STANDARD\",\n region: \"us-central1\",\n rootPassword: \"root-password\",\n deletionProtection: true,\n settings: {\n tier: \"db-custom-2-4096\",\n ipConfiguration: {\n authorizedNetworks: [\n {\n value: \"34.71.242.81\",\n },\n {\n value: \"34.72.28.29\",\n },\n {\n value: \"34.67.6.157\",\n },\n {\n value: \"34.67.234.134\",\n },\n {\n value: \"34.72.239.218\",\n },\n ],\n },\n },\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"user\",\n instance: instance.name,\n password: \"password\",\n});\nconst db = new gcp.sql.Database(\"db\", {\n name: \"db\",\n instance: instance.name,\n}, {\n dependsOn: [user],\n});\nconst source = new gcp.datastream.ConnectionProfile(\"source\", {\n displayName: \"SQL Server Source\",\n location: \"us-central1\",\n connectionProfileId: \"source-profile\",\n sqlServerProfile: {\n hostname: instance.publicIpAddress,\n port: 1433,\n username: user.name,\n password: user.password,\n database: db.name,\n },\n});\nconst destination = new gcp.datastream.ConnectionProfile(\"destination\", {\n displayName: \"BigQuery Destination\",\n location: \"us-central1\",\n connectionProfileId: \"destination-profile\",\n bigqueryProfile: {},\n});\nconst _default = new gcp.datastream.Stream(\"default\", {\n displayName: \"SQL Server to BigQuery\",\n location: \"us-central1\",\n streamId: \"stream\",\n sourceConfig: {\n sourceConnectionProfile: source.id,\n sqlServerSourceConfig: {\n includeObjects: {\n schemas: [{\n schema: \"schema\",\n tables: [{\n table: \"table\",\n }],\n }],\n },\n transactionLogs: {},\n },\n },\n destinationConfig: {\n destinationConnectionProfile: destination.id,\n bigqueryDestinationConfig: {\n dataFreshness: \"900s\",\n sourceHierarchyDatasets: {\n datasetTemplate: {\n location: \"us-central1\",\n },\n },\n },\n },\n backfillNone: {},\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"sql-server\",\n database_version=\"SQLSERVER_2019_STANDARD\",\n region=\"us-central1\",\n root_password=\"root-password\",\n deletion_protection=True,\n settings={\n \"tier\": \"db-custom-2-4096\",\n \"ip_configuration\": {\n \"authorized_networks\": [\n {\n \"value\": \"34.71.242.81\",\n },\n {\n \"value\": \"34.72.28.29\",\n },\n {\n \"value\": \"34.67.6.157\",\n },\n {\n \"value\": \"34.67.234.134\",\n },\n {\n \"value\": \"34.72.239.218\",\n },\n ],\n },\n })\nuser = gcp.sql.User(\"user\",\n name=\"user\",\n instance=instance.name,\n password=\"password\")\ndb = gcp.sql.Database(\"db\",\n name=\"db\",\n instance=instance.name,\n opts = pulumi.ResourceOptions(depends_on=[user]))\nsource = gcp.datastream.ConnectionProfile(\"source\",\n display_name=\"SQL Server Source\",\n location=\"us-central1\",\n connection_profile_id=\"source-profile\",\n sql_server_profile={\n \"hostname\": instance.public_ip_address,\n \"port\": 1433,\n \"username\": user.name,\n \"password\": user.password,\n \"database\": db.name,\n })\ndestination = gcp.datastream.ConnectionProfile(\"destination\",\n display_name=\"BigQuery Destination\",\n location=\"us-central1\",\n connection_profile_id=\"destination-profile\",\n bigquery_profile={})\ndefault = gcp.datastream.Stream(\"default\",\n display_name=\"SQL Server to BigQuery\",\n location=\"us-central1\",\n stream_id=\"stream\",\n source_config={\n \"source_connection_profile\": source.id,\n \"sql_server_source_config\": {\n \"include_objects\": {\n \"schemas\": [{\n \"schema\": \"schema\",\n \"tables\": [{\n \"table\": \"table\",\n }],\n }],\n },\n \"transaction_logs\": {},\n },\n },\n destination_config={\n \"destination_connection_profile\": destination.id,\n \"bigquery_destination_config\": {\n \"data_freshness\": \"900s\",\n \"source_hierarchy_datasets\": {\n \"dataset_template\": {\n \"location\": \"us-central1\",\n },\n },\n },\n },\n backfill_none={})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"sql-server\",\n DatabaseVersion = \"SQLSERVER_2019_STANDARD\",\n Region = \"us-central1\",\n RootPassword = \"root-password\",\n DeletionProtection = true,\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-custom-2-4096\",\n IpConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationArgs\n {\n AuthorizedNetworks = new[]\n {\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.71.242.81\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.28.29\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.6.157\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.234.134\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.239.218\",\n },\n },\n },\n },\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"user\",\n Instance = instance.Name,\n Password = \"password\",\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Name = \"db\",\n Instance = instance.Name,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n user,\n },\n });\n\n var source = new Gcp.Datastream.ConnectionProfile(\"source\", new()\n {\n DisplayName = \"SQL Server Source\",\n Location = \"us-central1\",\n ConnectionProfileId = \"source-profile\",\n SqlServerProfile = new Gcp.Datastream.Inputs.ConnectionProfileSqlServerProfileArgs\n {\n Hostname = instance.PublicIpAddress,\n Port = 1433,\n Username = user.Name,\n Password = user.Password,\n Database = db.Name,\n },\n });\n\n var destination = new Gcp.Datastream.ConnectionProfile(\"destination\", new()\n {\n DisplayName = \"BigQuery Destination\",\n Location = \"us-central1\",\n ConnectionProfileId = \"destination-profile\",\n BigqueryProfile = null,\n });\n\n var @default = new Gcp.Datastream.Stream(\"default\", new()\n {\n DisplayName = \"SQL Server to BigQuery\",\n Location = \"us-central1\",\n StreamId = \"stream\",\n SourceConfig = new Gcp.Datastream.Inputs.StreamSourceConfigArgs\n {\n SourceConnectionProfile = source.Id,\n SqlServerSourceConfig = new Gcp.Datastream.Inputs.StreamSourceConfigSqlServerSourceConfigArgs\n {\n IncludeObjects = new Gcp.Datastream.Inputs.StreamSourceConfigSqlServerSourceConfigIncludeObjectsArgs\n {\n Schemas = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaArgs\n {\n Schema = \"schema\",\n Tables = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaTableArgs\n {\n Table = \"table\",\n },\n },\n },\n },\n },\n TransactionLogs = null,\n },\n },\n DestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigArgs\n {\n DestinationConnectionProfile = destination.Id,\n BigqueryDestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigArgs\n {\n DataFreshness = \"900s\",\n SourceHierarchyDatasets = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs\n {\n DatasetTemplate = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs\n {\n Location = \"us-central1\",\n },\n },\n },\n },\n BackfillNone = null,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datastream\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"sql-server\"),\n\t\t\tDatabaseVersion: pulumi.String(\"SQLSERVER_2019_STANDARD\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tRootPassword: pulumi.String(\"root-password\"),\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-custom-2-4096\"),\n\t\t\t\tIpConfiguration: \u0026sql.DatabaseInstanceSettingsIpConfigurationArgs{\n\t\t\t\t\tAuthorizedNetworks: sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArray{\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.71.242.81\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.28.29\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.6.157\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.234.134\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.239.218\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tPassword: pulumi.String(\"password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdb, err := sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tName: pulumi.String(\"db\"),\n\t\t\tInstance: instance.Name,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tuser,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsource, err := datastream.NewConnectionProfile(ctx, \"source\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"SQL Server Source\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"source-profile\"),\n\t\t\tSqlServerProfile: \u0026datastream.ConnectionProfileSqlServerProfileArgs{\n\t\t\t\tHostname: instance.PublicIpAddress,\n\t\t\t\tPort: pulumi.Int(1433),\n\t\t\t\tUsername: user.Name,\n\t\t\t\tPassword: user.Password,\n\t\t\t\tDatabase: db.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestination, err := datastream.NewConnectionProfile(ctx, \"destination\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"BigQuery Destination\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"destination-profile\"),\n\t\t\tBigqueryProfile: nil,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datastream.NewStream(ctx, \"default\", \u0026datastream.StreamArgs{\n\t\t\tDisplayName: pulumi.String(\"SQL Server to BigQuery\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tStreamId: pulumi.String(\"stream\"),\n\t\t\tSourceConfig: \u0026datastream.StreamSourceConfigArgs{\n\t\t\t\tSourceConnectionProfile: source.ID(),\n\t\t\t\tSqlServerSourceConfig: \u0026datastream.StreamSourceConfigSqlServerSourceConfigArgs{\n\t\t\t\t\tIncludeObjects: \u0026datastream.StreamSourceConfigSqlServerSourceConfigIncludeObjectsArgs{\n\t\t\t\t\t\tSchemas: datastream.StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaArray{\n\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaArgs{\n\t\t\t\t\t\t\t\tSchema: pulumi.String(\"schema\"),\n\t\t\t\t\t\t\t\tTables: datastream.StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaTableArray{\n\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaTableArgs{\n\t\t\t\t\t\t\t\t\t\tTable: pulumi.String(\"table\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tTransactionLogs: nil,\n\t\t\t\t},\n\t\t\t},\n\t\t\tDestinationConfig: \u0026datastream.StreamDestinationConfigArgs{\n\t\t\t\tDestinationConnectionProfile: destination.ID(),\n\t\t\t\tBigqueryDestinationConfig: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigArgs{\n\t\t\t\t\tDataFreshness: pulumi.String(\"900s\"),\n\t\t\t\t\tSourceHierarchyDatasets: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs{\n\t\t\t\t\t\tDatasetTemplate: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBackfillNone: nil,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsIpConfigurationArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport com.pulumi.gcp.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileSqlServerProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileBigqueryProfileArgs;\nimport com.pulumi.gcp.datastream.Stream;\nimport com.pulumi.gcp.datastream.StreamArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigSqlServerSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigSqlServerSourceConfigIncludeObjectsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigSqlServerSourceConfigTransactionLogsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamBackfillNoneArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"sql-server\")\n .databaseVersion(\"SQLSERVER_2019_STANDARD\")\n .region(\"us-central1\")\n .rootPassword(\"root-password\")\n .deletionProtection(\"true\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-custom-2-4096\")\n .ipConfiguration(DatabaseInstanceSettingsIpConfigurationArgs.builder()\n .authorizedNetworks( \n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.71.242.81\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.28.29\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.6.157\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.234.134\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.239.218\")\n .build())\n .build())\n .build())\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"user\")\n .instance(instance.name())\n .password(\"password\")\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .name(\"db\")\n .instance(instance.name())\n .build(), CustomResourceOptions.builder()\n .dependsOn(user)\n .build());\n\n var source = new ConnectionProfile(\"source\", ConnectionProfileArgs.builder()\n .displayName(\"SQL Server Source\")\n .location(\"us-central1\")\n .connectionProfileId(\"source-profile\")\n .sqlServerProfile(ConnectionProfileSqlServerProfileArgs.builder()\n .hostname(instance.publicIpAddress())\n .port(1433)\n .username(user.name())\n .password(user.password())\n .database(db.name())\n .build())\n .build());\n\n var destination = new ConnectionProfile(\"destination\", ConnectionProfileArgs.builder()\n .displayName(\"BigQuery Destination\")\n .location(\"us-central1\")\n .connectionProfileId(\"destination-profile\")\n .bigqueryProfile()\n .build());\n\n var default_ = new Stream(\"default\", StreamArgs.builder()\n .displayName(\"SQL Server to BigQuery\")\n .location(\"us-central1\")\n .streamId(\"stream\")\n .sourceConfig(StreamSourceConfigArgs.builder()\n .sourceConnectionProfile(source.id())\n .sqlServerSourceConfig(StreamSourceConfigSqlServerSourceConfigArgs.builder()\n .includeObjects(StreamSourceConfigSqlServerSourceConfigIncludeObjectsArgs.builder()\n .schemas(StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaArgs.builder()\n .schema(\"schema\")\n .tables(StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaTableArgs.builder()\n .table(\"table\")\n .build())\n .build())\n .build())\n .transactionLogs()\n .build())\n .build())\n .destinationConfig(StreamDestinationConfigArgs.builder()\n .destinationConnectionProfile(destination.id())\n .bigqueryDestinationConfig(StreamDestinationConfigBigqueryDestinationConfigArgs.builder()\n .dataFreshness(\"900s\")\n .sourceHierarchyDatasets(StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs.builder()\n .datasetTemplate(StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs.builder()\n .location(\"us-central1\")\n .build())\n .build())\n .build())\n .build())\n .backfillNone()\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: sql-server\n databaseVersion: SQLSERVER_2019_STANDARD\n region: us-central1\n rootPassword: root-password\n deletionProtection: 'true'\n settings:\n tier: db-custom-2-4096\n ipConfiguration:\n authorizedNetworks:\n - value: 34.71.242.81\n - value: 34.72.28.29\n - value: 34.67.6.157\n - value: 34.67.234.134\n - value: 34.72.239.218\n db:\n type: gcp:sql:Database\n properties:\n name: db\n instance: ${instance.name}\n options:\n dependson:\n - ${user}\n user:\n type: gcp:sql:User\n properties:\n name: user\n instance: ${instance.name}\n password: password\n source:\n type: gcp:datastream:ConnectionProfile\n properties:\n displayName: SQL Server Source\n location: us-central1\n connectionProfileId: source-profile\n sqlServerProfile:\n hostname: ${instance.publicIpAddress}\n port: 1433\n username: ${user.name}\n password: ${user.password}\n database: ${db.name}\n destination:\n type: gcp:datastream:ConnectionProfile\n properties:\n displayName: BigQuery Destination\n location: us-central1\n connectionProfileId: destination-profile\n bigqueryProfile: {}\n default:\n type: gcp:datastream:Stream\n properties:\n displayName: SQL Server to BigQuery\n location: us-central1\n streamId: stream\n sourceConfig:\n sourceConnectionProfile: ${source.id}\n sqlServerSourceConfig:\n includeObjects:\n schemas:\n - schema: schema\n tables:\n - table: table\n transactionLogs: {}\n destinationConfig:\n destinationConnectionProfile: ${destination.id}\n bigqueryDestinationConfig:\n dataFreshness: 900s\n sourceHierarchyDatasets:\n datasetTemplate:\n location: us-central1\n backfillNone: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Datastream Stream Sql Server Change Tables\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"sql-server\",\n databaseVersion: \"SQLSERVER_2019_STANDARD\",\n region: \"us-central1\",\n rootPassword: \"root-password\",\n deletionProtection: true,\n settings: {\n tier: \"db-custom-2-4096\",\n ipConfiguration: {\n authorizedNetworks: [\n {\n value: \"34.71.242.81\",\n },\n {\n value: \"34.72.28.29\",\n },\n {\n value: \"34.67.6.157\",\n },\n {\n value: \"34.67.234.134\",\n },\n {\n value: \"34.72.239.218\",\n },\n ],\n },\n },\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"user\",\n instance: instance.name,\n password: \"password\",\n});\nconst db = new gcp.sql.Database(\"db\", {\n name: \"db\",\n instance: instance.name,\n}, {\n dependsOn: [user],\n});\nconst source = new gcp.datastream.ConnectionProfile(\"source\", {\n displayName: \"SQL Server Source\",\n location: \"us-central1\",\n connectionProfileId: \"source-profile\",\n sqlServerProfile: {\n hostname: instance.publicIpAddress,\n port: 1433,\n username: user.name,\n password: user.password,\n database: db.name,\n },\n});\nconst destination = new gcp.datastream.ConnectionProfile(\"destination\", {\n displayName: \"BigQuery Destination\",\n location: \"us-central1\",\n connectionProfileId: \"destination-profile\",\n bigqueryProfile: {},\n});\nconst _default = new gcp.datastream.Stream(\"default\", {\n displayName: \"SQL Server to BigQuery\",\n location: \"us-central1\",\n streamId: \"stream\",\n sourceConfig: {\n sourceConnectionProfile: source.id,\n sqlServerSourceConfig: {\n includeObjects: {\n schemas: [{\n schema: \"schema\",\n tables: [{\n table: \"table\",\n }],\n }],\n },\n changeTables: {},\n },\n },\n destinationConfig: {\n destinationConnectionProfile: destination.id,\n bigqueryDestinationConfig: {\n dataFreshness: \"900s\",\n sourceHierarchyDatasets: {\n datasetTemplate: {\n location: \"us-central1\",\n },\n },\n },\n },\n backfillNone: {},\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"sql-server\",\n database_version=\"SQLSERVER_2019_STANDARD\",\n region=\"us-central1\",\n root_password=\"root-password\",\n deletion_protection=True,\n settings={\n \"tier\": \"db-custom-2-4096\",\n \"ip_configuration\": {\n \"authorized_networks\": [\n {\n \"value\": \"34.71.242.81\",\n },\n {\n \"value\": \"34.72.28.29\",\n },\n {\n \"value\": \"34.67.6.157\",\n },\n {\n \"value\": \"34.67.234.134\",\n },\n {\n \"value\": \"34.72.239.218\",\n },\n ],\n },\n })\nuser = gcp.sql.User(\"user\",\n name=\"user\",\n instance=instance.name,\n password=\"password\")\ndb = gcp.sql.Database(\"db\",\n name=\"db\",\n instance=instance.name,\n opts = pulumi.ResourceOptions(depends_on=[user]))\nsource = gcp.datastream.ConnectionProfile(\"source\",\n display_name=\"SQL Server Source\",\n location=\"us-central1\",\n connection_profile_id=\"source-profile\",\n sql_server_profile={\n \"hostname\": instance.public_ip_address,\n \"port\": 1433,\n \"username\": user.name,\n \"password\": user.password,\n \"database\": db.name,\n })\ndestination = gcp.datastream.ConnectionProfile(\"destination\",\n display_name=\"BigQuery Destination\",\n location=\"us-central1\",\n connection_profile_id=\"destination-profile\",\n bigquery_profile={})\ndefault = gcp.datastream.Stream(\"default\",\n display_name=\"SQL Server to BigQuery\",\n location=\"us-central1\",\n stream_id=\"stream\",\n source_config={\n \"source_connection_profile\": source.id,\n \"sql_server_source_config\": {\n \"include_objects\": {\n \"schemas\": [{\n \"schema\": \"schema\",\n \"tables\": [{\n \"table\": \"table\",\n }],\n }],\n },\n \"change_tables\": {},\n },\n },\n destination_config={\n \"destination_connection_profile\": destination.id,\n \"bigquery_destination_config\": {\n \"data_freshness\": \"900s\",\n \"source_hierarchy_datasets\": {\n \"dataset_template\": {\n \"location\": \"us-central1\",\n },\n },\n },\n },\n backfill_none={})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"sql-server\",\n DatabaseVersion = \"SQLSERVER_2019_STANDARD\",\n Region = \"us-central1\",\n RootPassword = \"root-password\",\n DeletionProtection = true,\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-custom-2-4096\",\n IpConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationArgs\n {\n AuthorizedNetworks = new[]\n {\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.71.242.81\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.28.29\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.6.157\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.234.134\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.239.218\",\n },\n },\n },\n },\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"user\",\n Instance = instance.Name,\n Password = \"password\",\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Name = \"db\",\n Instance = instance.Name,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n user,\n },\n });\n\n var source = new Gcp.Datastream.ConnectionProfile(\"source\", new()\n {\n DisplayName = \"SQL Server Source\",\n Location = \"us-central1\",\n ConnectionProfileId = \"source-profile\",\n SqlServerProfile = new Gcp.Datastream.Inputs.ConnectionProfileSqlServerProfileArgs\n {\n Hostname = instance.PublicIpAddress,\n Port = 1433,\n Username = user.Name,\n Password = user.Password,\n Database = db.Name,\n },\n });\n\n var destination = new Gcp.Datastream.ConnectionProfile(\"destination\", new()\n {\n DisplayName = \"BigQuery Destination\",\n Location = \"us-central1\",\n ConnectionProfileId = \"destination-profile\",\n BigqueryProfile = null,\n });\n\n var @default = new Gcp.Datastream.Stream(\"default\", new()\n {\n DisplayName = \"SQL Server to BigQuery\",\n Location = \"us-central1\",\n StreamId = \"stream\",\n SourceConfig = new Gcp.Datastream.Inputs.StreamSourceConfigArgs\n {\n SourceConnectionProfile = source.Id,\n SqlServerSourceConfig = new Gcp.Datastream.Inputs.StreamSourceConfigSqlServerSourceConfigArgs\n {\n IncludeObjects = new Gcp.Datastream.Inputs.StreamSourceConfigSqlServerSourceConfigIncludeObjectsArgs\n {\n Schemas = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaArgs\n {\n Schema = \"schema\",\n Tables = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaTableArgs\n {\n Table = \"table\",\n },\n },\n },\n },\n },\n ChangeTables = null,\n },\n },\n DestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigArgs\n {\n DestinationConnectionProfile = destination.Id,\n BigqueryDestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigArgs\n {\n DataFreshness = \"900s\",\n SourceHierarchyDatasets = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs\n {\n DatasetTemplate = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs\n {\n Location = \"us-central1\",\n },\n },\n },\n },\n BackfillNone = null,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datastream\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"sql-server\"),\n\t\t\tDatabaseVersion: pulumi.String(\"SQLSERVER_2019_STANDARD\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tRootPassword: pulumi.String(\"root-password\"),\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-custom-2-4096\"),\n\t\t\t\tIpConfiguration: \u0026sql.DatabaseInstanceSettingsIpConfigurationArgs{\n\t\t\t\t\tAuthorizedNetworks: sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArray{\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.71.242.81\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.28.29\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.6.157\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.234.134\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.239.218\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tPassword: pulumi.String(\"password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdb, err := sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tName: pulumi.String(\"db\"),\n\t\t\tInstance: instance.Name,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tuser,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsource, err := datastream.NewConnectionProfile(ctx, \"source\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"SQL Server Source\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"source-profile\"),\n\t\t\tSqlServerProfile: \u0026datastream.ConnectionProfileSqlServerProfileArgs{\n\t\t\t\tHostname: instance.PublicIpAddress,\n\t\t\t\tPort: pulumi.Int(1433),\n\t\t\t\tUsername: user.Name,\n\t\t\t\tPassword: user.Password,\n\t\t\t\tDatabase: db.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestination, err := datastream.NewConnectionProfile(ctx, \"destination\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"BigQuery Destination\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"destination-profile\"),\n\t\t\tBigqueryProfile: nil,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datastream.NewStream(ctx, \"default\", \u0026datastream.StreamArgs{\n\t\t\tDisplayName: pulumi.String(\"SQL Server to BigQuery\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tStreamId: pulumi.String(\"stream\"),\n\t\t\tSourceConfig: \u0026datastream.StreamSourceConfigArgs{\n\t\t\t\tSourceConnectionProfile: source.ID(),\n\t\t\t\tSqlServerSourceConfig: \u0026datastream.StreamSourceConfigSqlServerSourceConfigArgs{\n\t\t\t\t\tIncludeObjects: \u0026datastream.StreamSourceConfigSqlServerSourceConfigIncludeObjectsArgs{\n\t\t\t\t\t\tSchemas: datastream.StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaArray{\n\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaArgs{\n\t\t\t\t\t\t\t\tSchema: pulumi.String(\"schema\"),\n\t\t\t\t\t\t\t\tTables: datastream.StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaTableArray{\n\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaTableArgs{\n\t\t\t\t\t\t\t\t\t\tTable: pulumi.String(\"table\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tChangeTables: nil,\n\t\t\t\t},\n\t\t\t},\n\t\t\tDestinationConfig: \u0026datastream.StreamDestinationConfigArgs{\n\t\t\t\tDestinationConnectionProfile: destination.ID(),\n\t\t\t\tBigqueryDestinationConfig: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigArgs{\n\t\t\t\t\tDataFreshness: pulumi.String(\"900s\"),\n\t\t\t\t\tSourceHierarchyDatasets: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs{\n\t\t\t\t\t\tDatasetTemplate: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBackfillNone: nil,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsIpConfigurationArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport com.pulumi.gcp.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileSqlServerProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileBigqueryProfileArgs;\nimport com.pulumi.gcp.datastream.Stream;\nimport com.pulumi.gcp.datastream.StreamArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigSqlServerSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigSqlServerSourceConfigIncludeObjectsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigSqlServerSourceConfigChangeTablesArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamBackfillNoneArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"sql-server\")\n .databaseVersion(\"SQLSERVER_2019_STANDARD\")\n .region(\"us-central1\")\n .rootPassword(\"root-password\")\n .deletionProtection(\"true\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-custom-2-4096\")\n .ipConfiguration(DatabaseInstanceSettingsIpConfigurationArgs.builder()\n .authorizedNetworks( \n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.71.242.81\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.28.29\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.6.157\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.234.134\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.239.218\")\n .build())\n .build())\n .build())\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"user\")\n .instance(instance.name())\n .password(\"password\")\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .name(\"db\")\n .instance(instance.name())\n .build(), CustomResourceOptions.builder()\n .dependsOn(user)\n .build());\n\n var source = new ConnectionProfile(\"source\", ConnectionProfileArgs.builder()\n .displayName(\"SQL Server Source\")\n .location(\"us-central1\")\n .connectionProfileId(\"source-profile\")\n .sqlServerProfile(ConnectionProfileSqlServerProfileArgs.builder()\n .hostname(instance.publicIpAddress())\n .port(1433)\n .username(user.name())\n .password(user.password())\n .database(db.name())\n .build())\n .build());\n\n var destination = new ConnectionProfile(\"destination\", ConnectionProfileArgs.builder()\n .displayName(\"BigQuery Destination\")\n .location(\"us-central1\")\n .connectionProfileId(\"destination-profile\")\n .bigqueryProfile()\n .build());\n\n var default_ = new Stream(\"default\", StreamArgs.builder()\n .displayName(\"SQL Server to BigQuery\")\n .location(\"us-central1\")\n .streamId(\"stream\")\n .sourceConfig(StreamSourceConfigArgs.builder()\n .sourceConnectionProfile(source.id())\n .sqlServerSourceConfig(StreamSourceConfigSqlServerSourceConfigArgs.builder()\n .includeObjects(StreamSourceConfigSqlServerSourceConfigIncludeObjectsArgs.builder()\n .schemas(StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaArgs.builder()\n .schema(\"schema\")\n .tables(StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaTableArgs.builder()\n .table(\"table\")\n .build())\n .build())\n .build())\n .changeTables()\n .build())\n .build())\n .destinationConfig(StreamDestinationConfigArgs.builder()\n .destinationConnectionProfile(destination.id())\n .bigqueryDestinationConfig(StreamDestinationConfigBigqueryDestinationConfigArgs.builder()\n .dataFreshness(\"900s\")\n .sourceHierarchyDatasets(StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs.builder()\n .datasetTemplate(StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs.builder()\n .location(\"us-central1\")\n .build())\n .build())\n .build())\n .build())\n .backfillNone()\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: sql-server\n databaseVersion: SQLSERVER_2019_STANDARD\n region: us-central1\n rootPassword: root-password\n deletionProtection: 'true'\n settings:\n tier: db-custom-2-4096\n ipConfiguration:\n authorizedNetworks:\n - value: 34.71.242.81\n - value: 34.72.28.29\n - value: 34.67.6.157\n - value: 34.67.234.134\n - value: 34.72.239.218\n db:\n type: gcp:sql:Database\n properties:\n name: db\n instance: ${instance.name}\n options:\n dependson:\n - ${user}\n user:\n type: gcp:sql:User\n properties:\n name: user\n instance: ${instance.name}\n password: password\n source:\n type: gcp:datastream:ConnectionProfile\n properties:\n displayName: SQL Server Source\n location: us-central1\n connectionProfileId: source-profile\n sqlServerProfile:\n hostname: ${instance.publicIpAddress}\n port: 1433\n username: ${user.name}\n password: ${user.password}\n database: ${db.name}\n destination:\n type: gcp:datastream:ConnectionProfile\n properties:\n displayName: BigQuery Destination\n location: us-central1\n connectionProfileId: destination-profile\n bigqueryProfile: {}\n default:\n type: gcp:datastream:Stream\n properties:\n displayName: SQL Server to BigQuery\n location: us-central1\n streamId: stream\n sourceConfig:\n sourceConnectionProfile: ${source.id}\n sqlServerSourceConfig:\n includeObjects:\n schemas:\n - schema: schema\n tables:\n - table: table\n changeTables: {}\n destinationConfig:\n destinationConnectionProfile: ${destination.id}\n bigqueryDestinationConfig:\n dataFreshness: 900s\n sourceHierarchyDatasets:\n datasetTemplate:\n location: us-central1\n backfillNone: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Datastream Stream Postgresql Bigquery Dataset Id\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst postgres = new gcp.bigquery.Dataset(\"postgres\", {\n datasetId: \"postgres\",\n friendlyName: \"postgres\",\n description: \"Database of postgres\",\n location: \"us-central1\",\n});\nconst destinationConnectionProfile2 = new gcp.datastream.ConnectionProfile(\"destination_connection_profile2\", {\n displayName: \"Connection profile\",\n location: \"us-central1\",\n connectionProfileId: \"dest-profile\",\n bigqueryProfile: {},\n});\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"instance-name\",\n databaseVersion: \"MYSQL_8_0\",\n region: \"us-central1\",\n settings: {\n tier: \"db-f1-micro\",\n backupConfiguration: {\n enabled: true,\n binaryLogEnabled: true,\n },\n ipConfiguration: {\n authorizedNetworks: [\n {\n value: \"34.71.242.81\",\n },\n {\n value: \"34.72.28.29\",\n },\n {\n value: \"34.67.6.157\",\n },\n {\n value: \"34.67.234.134\",\n },\n {\n value: \"34.72.239.218\",\n },\n ],\n },\n },\n deletionProtection: false,\n});\nconst pwd = new random.RandomPassword(\"pwd\", {\n length: 16,\n special: false,\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"my-user\",\n instance: instance.name,\n host: \"%\",\n password: pwd.result,\n});\nconst sourceConnectionProfile = new gcp.datastream.ConnectionProfile(\"source_connection_profile\", {\n displayName: \"Source connection profile\",\n location: \"us-central1\",\n connectionProfileId: \"source-profile\",\n mysqlProfile: {\n hostname: instance.publicIpAddress,\n username: user.name,\n password: user.password,\n },\n});\nconst _default = new gcp.datastream.Stream(\"default\", {\n displayName: \"postgres to bigQuery\",\n location: \"us-central1\",\n streamId: \"postgres-bigquery\",\n sourceConfig: {\n sourceConnectionProfile: sourceConnectionProfile.id,\n mysqlSourceConfig: {},\n },\n destinationConfig: {\n destinationConnectionProfile: destinationConnectionProfile2.id,\n bigqueryDestinationConfig: {\n dataFreshness: \"900s\",\n singleTargetDataset: {\n datasetId: postgres.id,\n },\n },\n },\n backfillAll: {},\n});\nconst db = new gcp.sql.Database(\"db\", {\n instance: instance.name,\n name: \"db\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\npostgres = gcp.bigquery.Dataset(\"postgres\",\n dataset_id=\"postgres\",\n friendly_name=\"postgres\",\n description=\"Database of postgres\",\n location=\"us-central1\")\ndestination_connection_profile2 = gcp.datastream.ConnectionProfile(\"destination_connection_profile2\",\n display_name=\"Connection profile\",\n location=\"us-central1\",\n connection_profile_id=\"dest-profile\",\n bigquery_profile={})\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"instance-name\",\n database_version=\"MYSQL_8_0\",\n region=\"us-central1\",\n settings={\n \"tier\": \"db-f1-micro\",\n \"backup_configuration\": {\n \"enabled\": True,\n \"binary_log_enabled\": True,\n },\n \"ip_configuration\": {\n \"authorized_networks\": [\n {\n \"value\": \"34.71.242.81\",\n },\n {\n \"value\": \"34.72.28.29\",\n },\n {\n \"value\": \"34.67.6.157\",\n },\n {\n \"value\": \"34.67.234.134\",\n },\n {\n \"value\": \"34.72.239.218\",\n },\n ],\n },\n },\n deletion_protection=False)\npwd = random.RandomPassword(\"pwd\",\n length=16,\n special=False)\nuser = gcp.sql.User(\"user\",\n name=\"my-user\",\n instance=instance.name,\n host=\"%\",\n password=pwd.result)\nsource_connection_profile = gcp.datastream.ConnectionProfile(\"source_connection_profile\",\n display_name=\"Source connection profile\",\n location=\"us-central1\",\n connection_profile_id=\"source-profile\",\n mysql_profile={\n \"hostname\": instance.public_ip_address,\n \"username\": user.name,\n \"password\": user.password,\n })\ndefault = gcp.datastream.Stream(\"default\",\n display_name=\"postgres to bigQuery\",\n location=\"us-central1\",\n stream_id=\"postgres-bigquery\",\n source_config={\n \"source_connection_profile\": source_connection_profile.id,\n \"mysql_source_config\": {},\n },\n destination_config={\n \"destination_connection_profile\": destination_connection_profile2.id,\n \"bigquery_destination_config\": {\n \"data_freshness\": \"900s\",\n \"single_target_dataset\": {\n \"dataset_id\": postgres.id,\n },\n },\n },\n backfill_all={})\ndb = gcp.sql.Database(\"db\",\n instance=instance.name,\n name=\"db\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var postgres = new Gcp.BigQuery.Dataset(\"postgres\", new()\n {\n DatasetId = \"postgres\",\n FriendlyName = \"postgres\",\n Description = \"Database of postgres\",\n Location = \"us-central1\",\n });\n\n var destinationConnectionProfile2 = new Gcp.Datastream.ConnectionProfile(\"destination_connection_profile2\", new()\n {\n DisplayName = \"Connection profile\",\n Location = \"us-central1\",\n ConnectionProfileId = \"dest-profile\",\n BigqueryProfile = null,\n });\n\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"instance-name\",\n DatabaseVersion = \"MYSQL_8_0\",\n Region = \"us-central1\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n BackupConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsBackupConfigurationArgs\n {\n Enabled = true,\n BinaryLogEnabled = true,\n },\n IpConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationArgs\n {\n AuthorizedNetworks = new[]\n {\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.71.242.81\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.28.29\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.6.157\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.234.134\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.239.218\",\n },\n },\n },\n },\n DeletionProtection = false,\n });\n\n var pwd = new Random.RandomPassword(\"pwd\", new()\n {\n Length = 16,\n Special = false,\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"my-user\",\n Instance = instance.Name,\n Host = \"%\",\n Password = pwd.Result,\n });\n\n var sourceConnectionProfile = new Gcp.Datastream.ConnectionProfile(\"source_connection_profile\", new()\n {\n DisplayName = \"Source connection profile\",\n Location = \"us-central1\",\n ConnectionProfileId = \"source-profile\",\n MysqlProfile = new Gcp.Datastream.Inputs.ConnectionProfileMysqlProfileArgs\n {\n Hostname = instance.PublicIpAddress,\n Username = user.Name,\n Password = user.Password,\n },\n });\n\n var @default = new Gcp.Datastream.Stream(\"default\", new()\n {\n DisplayName = \"postgres to bigQuery\",\n Location = \"us-central1\",\n StreamId = \"postgres-bigquery\",\n SourceConfig = new Gcp.Datastream.Inputs.StreamSourceConfigArgs\n {\n SourceConnectionProfile = sourceConnectionProfile.Id,\n MysqlSourceConfig = null,\n },\n DestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigArgs\n {\n DestinationConnectionProfile = destinationConnectionProfile2.Id,\n BigqueryDestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigArgs\n {\n DataFreshness = \"900s\",\n SingleTargetDataset = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigSingleTargetDatasetArgs\n {\n DatasetId = postgres.Id,\n },\n },\n },\n BackfillAll = null,\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Instance = instance.Name,\n Name = \"db\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datastream\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi-random/sdk/v4/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpostgres, err := bigquery.NewDataset(ctx, \"postgres\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"postgres\"),\n\t\t\tFriendlyName: pulumi.String(\"postgres\"),\n\t\t\tDescription: pulumi.String(\"Database of postgres\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestinationConnectionProfile2, err := datastream.NewConnectionProfile(ctx, \"destination_connection_profile2\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"dest-profile\"),\n\t\t\tBigqueryProfile: nil,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"instance-name\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_8_0\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t\tBackupConfiguration: \u0026sql.DatabaseInstanceSettingsBackupConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tBinaryLogEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tIpConfiguration: \u0026sql.DatabaseInstanceSettingsIpConfigurationArgs{\n\t\t\t\t\tAuthorizedNetworks: sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArray{\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.71.242.81\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.28.29\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.6.157\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.234.134\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.239.218\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpwd, err := random.NewRandomPassword(ctx, \"pwd\", \u0026random.RandomPasswordArgs{\n\t\t\tLength: pulumi.Int(16),\n\t\t\tSpecial: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"my-user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tHost: pulumi.String(\"%\"),\n\t\t\tPassword: pwd.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceConnectionProfile, err := datastream.NewConnectionProfile(ctx, \"source_connection_profile\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Source connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"source-profile\"),\n\t\t\tMysqlProfile: \u0026datastream.ConnectionProfileMysqlProfileArgs{\n\t\t\t\tHostname: instance.PublicIpAddress,\n\t\t\t\tUsername: user.Name,\n\t\t\t\tPassword: user.Password,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datastream.NewStream(ctx, \"default\", \u0026datastream.StreamArgs{\n\t\t\tDisplayName: pulumi.String(\"postgres to bigQuery\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tStreamId: pulumi.String(\"postgres-bigquery\"),\n\t\t\tSourceConfig: \u0026datastream.StreamSourceConfigArgs{\n\t\t\t\tSourceConnectionProfile: sourceConnectionProfile.ID(),\n\t\t\t\tMysqlSourceConfig: nil,\n\t\t\t},\n\t\t\tDestinationConfig: \u0026datastream.StreamDestinationConfigArgs{\n\t\t\t\tDestinationConnectionProfile: destinationConnectionProfile2.ID(),\n\t\t\t\tBigqueryDestinationConfig: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigArgs{\n\t\t\t\t\tDataFreshness: pulumi.String(\"900s\"),\n\t\t\t\t\tSingleTargetDataset: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigSingleTargetDatasetArgs{\n\t\t\t\t\t\tDatasetId: postgres.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBackfillAll: nil,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tName: pulumi.String(\"db\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileBigqueryProfileArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsBackupConfigurationArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsIpConfigurationArgs;\nimport com.pulumi.random.RandomPassword;\nimport com.pulumi.random.RandomPasswordArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileMysqlProfileArgs;\nimport com.pulumi.gcp.datastream.Stream;\nimport com.pulumi.gcp.datastream.StreamArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigMysqlSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigSingleTargetDatasetArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamBackfillAllArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var postgres = new Dataset(\"postgres\", DatasetArgs.builder()\n .datasetId(\"postgres\")\n .friendlyName(\"postgres\")\n .description(\"Database of postgres\")\n .location(\"us-central1\")\n .build());\n\n var destinationConnectionProfile2 = new ConnectionProfile(\"destinationConnectionProfile2\", ConnectionProfileArgs.builder()\n .displayName(\"Connection profile\")\n .location(\"us-central1\")\n .connectionProfileId(\"dest-profile\")\n .bigqueryProfile()\n .build());\n\n var instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"instance-name\")\n .databaseVersion(\"MYSQL_8_0\")\n .region(\"us-central1\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .backupConfiguration(DatabaseInstanceSettingsBackupConfigurationArgs.builder()\n .enabled(true)\n .binaryLogEnabled(true)\n .build())\n .ipConfiguration(DatabaseInstanceSettingsIpConfigurationArgs.builder()\n .authorizedNetworks( \n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.71.242.81\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.28.29\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.6.157\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.234.134\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.239.218\")\n .build())\n .build())\n .build())\n .deletionProtection(false)\n .build());\n\n var pwd = new RandomPassword(\"pwd\", RandomPasswordArgs.builder()\n .length(16)\n .special(false)\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"my-user\")\n .instance(instance.name())\n .host(\"%\")\n .password(pwd.result())\n .build());\n\n var sourceConnectionProfile = new ConnectionProfile(\"sourceConnectionProfile\", ConnectionProfileArgs.builder()\n .displayName(\"Source connection profile\")\n .location(\"us-central1\")\n .connectionProfileId(\"source-profile\")\n .mysqlProfile(ConnectionProfileMysqlProfileArgs.builder()\n .hostname(instance.publicIpAddress())\n .username(user.name())\n .password(user.password())\n .build())\n .build());\n\n var default_ = new Stream(\"default\", StreamArgs.builder()\n .displayName(\"postgres to bigQuery\")\n .location(\"us-central1\")\n .streamId(\"postgres-bigquery\")\n .sourceConfig(StreamSourceConfigArgs.builder()\n .sourceConnectionProfile(sourceConnectionProfile.id())\n .mysqlSourceConfig()\n .build())\n .destinationConfig(StreamDestinationConfigArgs.builder()\n .destinationConnectionProfile(destinationConnectionProfile2.id())\n .bigqueryDestinationConfig(StreamDestinationConfigBigqueryDestinationConfigArgs.builder()\n .dataFreshness(\"900s\")\n .singleTargetDataset(StreamDestinationConfigBigqueryDestinationConfigSingleTargetDatasetArgs.builder()\n .datasetId(postgres.id())\n .build())\n .build())\n .build())\n .backfillAll()\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .instance(instance.name())\n .name(\"db\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n postgres:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: postgres\n friendlyName: postgres\n description: Database of postgres\n location: us-central1\n default:\n type: gcp:datastream:Stream\n properties:\n displayName: postgres to bigQuery\n location: us-central1\n streamId: postgres-bigquery\n sourceConfig:\n sourceConnectionProfile: ${sourceConnectionProfile.id}\n mysqlSourceConfig: {}\n destinationConfig:\n destinationConnectionProfile: ${destinationConnectionProfile2.id}\n bigqueryDestinationConfig:\n dataFreshness: 900s\n singleTargetDataset:\n datasetId: ${postgres.id}\n backfillAll: {}\n destinationConnectionProfile2:\n type: gcp:datastream:ConnectionProfile\n name: destination_connection_profile2\n properties:\n displayName: Connection profile\n location: us-central1\n connectionProfileId: dest-profile\n bigqueryProfile: {}\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: instance-name\n databaseVersion: MYSQL_8_0\n region: us-central1\n settings:\n tier: db-f1-micro\n backupConfiguration:\n enabled: true\n binaryLogEnabled: true\n ipConfiguration:\n authorizedNetworks:\n - value: 34.71.242.81\n - value: 34.72.28.29\n - value: 34.67.6.157\n - value: 34.67.234.134\n - value: 34.72.239.218\n deletionProtection: false\n db:\n type: gcp:sql:Database\n properties:\n instance: ${instance.name}\n name: db\n pwd:\n type: random:RandomPassword\n properties:\n length: 16\n special: false\n user:\n type: gcp:sql:User\n properties:\n name: my-user\n instance: ${instance.name}\n host: '%'\n password: ${pwd.result}\n sourceConnectionProfile:\n type: gcp:datastream:ConnectionProfile\n name: source_connection_profile\n properties:\n displayName: Source connection profile\n location: us-central1\n connectionProfileId: source-profile\n mysqlProfile:\n hostname: ${instance.publicIpAddress}\n username: ${user.name}\n password: ${user.password}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Datastream Stream Bigquery\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst project = gcp.organizations.getProject({});\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"my-instance\",\n databaseVersion: \"MYSQL_8_0\",\n region: \"us-central1\",\n settings: {\n tier: \"db-f1-micro\",\n backupConfiguration: {\n enabled: true,\n binaryLogEnabled: true,\n },\n ipConfiguration: {\n authorizedNetworks: [\n {\n value: \"34.71.242.81\",\n },\n {\n value: \"34.72.28.29\",\n },\n {\n value: \"34.67.6.157\",\n },\n {\n value: \"34.67.234.134\",\n },\n {\n value: \"34.72.239.218\",\n },\n ],\n },\n },\n deletionProtection: true,\n});\nconst db = new gcp.sql.Database(\"db\", {\n instance: instance.name,\n name: \"db\",\n});\nconst pwd = new random.RandomPassword(\"pwd\", {\n length: 16,\n special: false,\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"user\",\n instance: instance.name,\n host: \"%\",\n password: pwd.result,\n});\nconst sourceConnectionProfile = new gcp.datastream.ConnectionProfile(\"source_connection_profile\", {\n displayName: \"Source connection profile\",\n location: \"us-central1\",\n connectionProfileId: \"source-profile\",\n mysqlProfile: {\n hostname: instance.publicIpAddress,\n username: user.name,\n password: user.password,\n },\n});\nconst bqSa = gcp.bigquery.getDefaultServiceAccount({});\nconst bigqueryKeyUser = new gcp.kms.CryptoKeyIAMMember(\"bigquery_key_user\", {\n cryptoKeyId: \"bigquery-kms-name\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: bqSa.then(bqSa =\u003e `serviceAccount:${bqSa.email}`),\n});\nconst destinationConnectionProfile = new gcp.datastream.ConnectionProfile(\"destination_connection_profile\", {\n displayName: \"Connection profile\",\n location: \"us-central1\",\n connectionProfileId: \"destination-profile\",\n bigqueryProfile: {},\n});\nconst _default = new gcp.datastream.Stream(\"default\", {\n streamId: \"my-stream\",\n location: \"us-central1\",\n displayName: \"my stream\",\n sourceConfig: {\n sourceConnectionProfile: sourceConnectionProfile.id,\n mysqlSourceConfig: {},\n },\n destinationConfig: {\n destinationConnectionProfile: destinationConnectionProfile.id,\n bigqueryDestinationConfig: {\n sourceHierarchyDatasets: {\n datasetTemplate: {\n location: \"us-central1\",\n kmsKeyName: \"bigquery-kms-name\",\n },\n },\n },\n },\n backfillNone: {},\n}, {\n dependsOn: [bigqueryKeyUser],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\nproject = gcp.organizations.get_project()\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"my-instance\",\n database_version=\"MYSQL_8_0\",\n region=\"us-central1\",\n settings={\n \"tier\": \"db-f1-micro\",\n \"backup_configuration\": {\n \"enabled\": True,\n \"binary_log_enabled\": True,\n },\n \"ip_configuration\": {\n \"authorized_networks\": [\n {\n \"value\": \"34.71.242.81\",\n },\n {\n \"value\": \"34.72.28.29\",\n },\n {\n \"value\": \"34.67.6.157\",\n },\n {\n \"value\": \"34.67.234.134\",\n },\n {\n \"value\": \"34.72.239.218\",\n },\n ],\n },\n },\n deletion_protection=True)\ndb = gcp.sql.Database(\"db\",\n instance=instance.name,\n name=\"db\")\npwd = random.RandomPassword(\"pwd\",\n length=16,\n special=False)\nuser = gcp.sql.User(\"user\",\n name=\"user\",\n instance=instance.name,\n host=\"%\",\n password=pwd.result)\nsource_connection_profile = gcp.datastream.ConnectionProfile(\"source_connection_profile\",\n display_name=\"Source connection profile\",\n location=\"us-central1\",\n connection_profile_id=\"source-profile\",\n mysql_profile={\n \"hostname\": instance.public_ip_address,\n \"username\": user.name,\n \"password\": user.password,\n })\nbq_sa = gcp.bigquery.get_default_service_account()\nbigquery_key_user = gcp.kms.CryptoKeyIAMMember(\"bigquery_key_user\",\n crypto_key_id=\"bigquery-kms-name\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:{bq_sa.email}\")\ndestination_connection_profile = gcp.datastream.ConnectionProfile(\"destination_connection_profile\",\n display_name=\"Connection profile\",\n location=\"us-central1\",\n connection_profile_id=\"destination-profile\",\n bigquery_profile={})\ndefault = gcp.datastream.Stream(\"default\",\n stream_id=\"my-stream\",\n location=\"us-central1\",\n display_name=\"my stream\",\n source_config={\n \"source_connection_profile\": source_connection_profile.id,\n \"mysql_source_config\": {},\n },\n destination_config={\n \"destination_connection_profile\": destination_connection_profile.id,\n \"bigquery_destination_config\": {\n \"source_hierarchy_datasets\": {\n \"dataset_template\": {\n \"location\": \"us-central1\",\n \"kms_key_name\": \"bigquery-kms-name\",\n },\n },\n },\n },\n backfill_none={},\n opts = pulumi.ResourceOptions(depends_on=[bigquery_key_user]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"my-instance\",\n DatabaseVersion = \"MYSQL_8_0\",\n Region = \"us-central1\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n BackupConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsBackupConfigurationArgs\n {\n Enabled = true,\n BinaryLogEnabled = true,\n },\n IpConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationArgs\n {\n AuthorizedNetworks = new[]\n {\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.71.242.81\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.28.29\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.6.157\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.234.134\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.239.218\",\n },\n },\n },\n },\n DeletionProtection = true,\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Instance = instance.Name,\n Name = \"db\",\n });\n\n var pwd = new Random.RandomPassword(\"pwd\", new()\n {\n Length = 16,\n Special = false,\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"user\",\n Instance = instance.Name,\n Host = \"%\",\n Password = pwd.Result,\n });\n\n var sourceConnectionProfile = new Gcp.Datastream.ConnectionProfile(\"source_connection_profile\", new()\n {\n DisplayName = \"Source connection profile\",\n Location = \"us-central1\",\n ConnectionProfileId = \"source-profile\",\n MysqlProfile = new Gcp.Datastream.Inputs.ConnectionProfileMysqlProfileArgs\n {\n Hostname = instance.PublicIpAddress,\n Username = user.Name,\n Password = user.Password,\n },\n });\n\n var bqSa = Gcp.BigQuery.GetDefaultServiceAccount.Invoke();\n\n var bigqueryKeyUser = new Gcp.Kms.CryptoKeyIAMMember(\"bigquery_key_user\", new()\n {\n CryptoKeyId = \"bigquery-kms-name\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:{bqSa.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Email)}\",\n });\n\n var destinationConnectionProfile = new Gcp.Datastream.ConnectionProfile(\"destination_connection_profile\", new()\n {\n DisplayName = \"Connection profile\",\n Location = \"us-central1\",\n ConnectionProfileId = \"destination-profile\",\n BigqueryProfile = null,\n });\n\n var @default = new Gcp.Datastream.Stream(\"default\", new()\n {\n StreamId = \"my-stream\",\n Location = \"us-central1\",\n DisplayName = \"my stream\",\n SourceConfig = new Gcp.Datastream.Inputs.StreamSourceConfigArgs\n {\n SourceConnectionProfile = sourceConnectionProfile.Id,\n MysqlSourceConfig = null,\n },\n DestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigArgs\n {\n DestinationConnectionProfile = destinationConnectionProfile.Id,\n BigqueryDestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigArgs\n {\n SourceHierarchyDatasets = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs\n {\n DatasetTemplate = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs\n {\n Location = \"us-central1\",\n KmsKeyName = \"bigquery-kms-name\",\n },\n },\n },\n },\n BackfillNone = null,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n bigqueryKeyUser,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datastream\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi-random/sdk/v4/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_8_0\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t\tBackupConfiguration: \u0026sql.DatabaseInstanceSettingsBackupConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tBinaryLogEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tIpConfiguration: \u0026sql.DatabaseInstanceSettingsIpConfigurationArgs{\n\t\t\t\t\tAuthorizedNetworks: sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArray{\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.71.242.81\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.28.29\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.6.157\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.234.134\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.239.218\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tName: pulumi.String(\"db\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpwd, err := random.NewRandomPassword(ctx, \"pwd\", \u0026random.RandomPasswordArgs{\n\t\t\tLength: pulumi.Int(16),\n\t\t\tSpecial: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tHost: pulumi.String(\"%\"),\n\t\t\tPassword: pwd.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceConnectionProfile, err := datastream.NewConnectionProfile(ctx, \"source_connection_profile\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Source connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"source-profile\"),\n\t\t\tMysqlProfile: \u0026datastream.ConnectionProfileMysqlProfileArgs{\n\t\t\t\tHostname: instance.PublicIpAddress,\n\t\t\t\tUsername: user.Name,\n\t\t\t\tPassword: user.Password,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbqSa, err := bigquery.GetDefaultServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbigqueryKeyUser, err := kms.NewCryptoKeyIAMMember(ctx, \"bigquery_key_user\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"bigquery-kms-name\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:%v\", bqSa.Email),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestinationConnectionProfile, err := datastream.NewConnectionProfile(ctx, \"destination_connection_profile\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"destination-profile\"),\n\t\t\tBigqueryProfile: nil,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datastream.NewStream(ctx, \"default\", \u0026datastream.StreamArgs{\n\t\t\tStreamId: pulumi.String(\"my-stream\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"my stream\"),\n\t\t\tSourceConfig: \u0026datastream.StreamSourceConfigArgs{\n\t\t\t\tSourceConnectionProfile: sourceConnectionProfile.ID(),\n\t\t\t\tMysqlSourceConfig: nil,\n\t\t\t},\n\t\t\tDestinationConfig: \u0026datastream.StreamDestinationConfigArgs{\n\t\t\t\tDestinationConnectionProfile: destinationConnectionProfile.ID(),\n\t\t\t\tBigqueryDestinationConfig: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigArgs{\n\t\t\t\t\tSourceHierarchyDatasets: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs{\n\t\t\t\t\t\tDatasetTemplate: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\t\t\t\tKmsKeyName: pulumi.String(\"bigquery-kms-name\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBackfillNone: nil,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tbigqueryKeyUser,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsBackupConfigurationArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsIpConfigurationArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport com.pulumi.random.RandomPassword;\nimport com.pulumi.random.RandomPasswordArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileMysqlProfileArgs;\nimport com.pulumi.gcp.bigquery.BigqueryFunctions;\nimport com.pulumi.gcp.bigquery.inputs.GetDefaultServiceAccountArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileBigqueryProfileArgs;\nimport com.pulumi.gcp.datastream.Stream;\nimport com.pulumi.gcp.datastream.StreamArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigMysqlSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamBackfillNoneArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"my-instance\")\n .databaseVersion(\"MYSQL_8_0\")\n .region(\"us-central1\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .backupConfiguration(DatabaseInstanceSettingsBackupConfigurationArgs.builder()\n .enabled(true)\n .binaryLogEnabled(true)\n .build())\n .ipConfiguration(DatabaseInstanceSettingsIpConfigurationArgs.builder()\n .authorizedNetworks( \n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.71.242.81\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.28.29\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.6.157\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.234.134\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.239.218\")\n .build())\n .build())\n .build())\n .deletionProtection(true)\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .instance(instance.name())\n .name(\"db\")\n .build());\n\n var pwd = new RandomPassword(\"pwd\", RandomPasswordArgs.builder()\n .length(16)\n .special(false)\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"user\")\n .instance(instance.name())\n .host(\"%\")\n .password(pwd.result())\n .build());\n\n var sourceConnectionProfile = new ConnectionProfile(\"sourceConnectionProfile\", ConnectionProfileArgs.builder()\n .displayName(\"Source connection profile\")\n .location(\"us-central1\")\n .connectionProfileId(\"source-profile\")\n .mysqlProfile(ConnectionProfileMysqlProfileArgs.builder()\n .hostname(instance.publicIpAddress())\n .username(user.name())\n .password(user.password())\n .build())\n .build());\n\n final var bqSa = BigqueryFunctions.getDefaultServiceAccount();\n\n var bigqueryKeyUser = new CryptoKeyIAMMember(\"bigqueryKeyUser\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(\"bigquery-kms-name\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:%s\", bqSa.applyValue(getDefaultServiceAccountResult -\u003e getDefaultServiceAccountResult.email())))\n .build());\n\n var destinationConnectionProfile = new ConnectionProfile(\"destinationConnectionProfile\", ConnectionProfileArgs.builder()\n .displayName(\"Connection profile\")\n .location(\"us-central1\")\n .connectionProfileId(\"destination-profile\")\n .bigqueryProfile()\n .build());\n\n var default_ = new Stream(\"default\", StreamArgs.builder()\n .streamId(\"my-stream\")\n .location(\"us-central1\")\n .displayName(\"my stream\")\n .sourceConfig(StreamSourceConfigArgs.builder()\n .sourceConnectionProfile(sourceConnectionProfile.id())\n .mysqlSourceConfig()\n .build())\n .destinationConfig(StreamDestinationConfigArgs.builder()\n .destinationConnectionProfile(destinationConnectionProfile.id())\n .bigqueryDestinationConfig(StreamDestinationConfigBigqueryDestinationConfigArgs.builder()\n .sourceHierarchyDatasets(StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs.builder()\n .datasetTemplate(StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs.builder()\n .location(\"us-central1\")\n .kmsKeyName(\"bigquery-kms-name\")\n .build())\n .build())\n .build())\n .build())\n .backfillNone()\n .build(), CustomResourceOptions.builder()\n .dependsOn(bigqueryKeyUser)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: my-instance\n databaseVersion: MYSQL_8_0\n region: us-central1\n settings:\n tier: db-f1-micro\n backupConfiguration:\n enabled: true\n binaryLogEnabled: true\n ipConfiguration:\n authorizedNetworks:\n - value: 34.71.242.81\n - value: 34.72.28.29\n - value: 34.67.6.157\n - value: 34.67.234.134\n - value: 34.72.239.218\n deletionProtection: true\n db:\n type: gcp:sql:Database\n properties:\n instance: ${instance.name}\n name: db\n pwd:\n type: random:RandomPassword\n properties:\n length: 16\n special: false\n user:\n type: gcp:sql:User\n properties:\n name: user\n instance: ${instance.name}\n host: '%'\n password: ${pwd.result}\n sourceConnectionProfile:\n type: gcp:datastream:ConnectionProfile\n name: source_connection_profile\n properties:\n displayName: Source connection profile\n location: us-central1\n connectionProfileId: source-profile\n mysqlProfile:\n hostname: ${instance.publicIpAddress}\n username: ${user.name}\n password: ${user.password}\n bigqueryKeyUser:\n type: gcp:kms:CryptoKeyIAMMember\n name: bigquery_key_user\n properties:\n cryptoKeyId: bigquery-kms-name\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:${bqSa.email}\n destinationConnectionProfile:\n type: gcp:datastream:ConnectionProfile\n name: destination_connection_profile\n properties:\n displayName: Connection profile\n location: us-central1\n connectionProfileId: destination-profile\n bigqueryProfile: {}\n default:\n type: gcp:datastream:Stream\n properties:\n streamId: my-stream\n location: us-central1\n displayName: my stream\n sourceConfig:\n sourceConnectionProfile: ${sourceConnectionProfile.id}\n mysqlSourceConfig: {}\n destinationConfig:\n destinationConnectionProfile: ${destinationConnectionProfile.id}\n bigqueryDestinationConfig:\n sourceHierarchyDatasets:\n datasetTemplate:\n location: us-central1\n kmsKeyName: bigquery-kms-name\n backfillNone: {}\n options:\n dependson:\n - ${bigqueryKeyUser}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n bqSa:\n fn::invoke:\n Function: gcp:bigquery:getDefaultServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Datastream Stream Bigquery Append Only\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst project = gcp.organizations.getProject({});\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"my-instance\",\n databaseVersion: \"MYSQL_8_0\",\n region: \"us-central1\",\n settings: {\n tier: \"db-f1-micro\",\n backupConfiguration: {\n enabled: true,\n binaryLogEnabled: true,\n },\n ipConfiguration: {\n authorizedNetworks: [\n {\n value: \"34.71.242.81\",\n },\n {\n value: \"34.72.28.29\",\n },\n {\n value: \"34.67.6.157\",\n },\n {\n value: \"34.67.234.134\",\n },\n {\n value: \"34.72.239.218\",\n },\n ],\n },\n },\n deletionProtection: true,\n});\nconst db = new gcp.sql.Database(\"db\", {\n instance: instance.name,\n name: \"db\",\n});\nconst pwd = new random.RandomPassword(\"pwd\", {\n length: 16,\n special: false,\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"user\",\n instance: instance.name,\n host: \"%\",\n password: pwd.result,\n});\nconst sourceConnectionProfile = new gcp.datastream.ConnectionProfile(\"source_connection_profile\", {\n displayName: \"Source connection profile\",\n location: \"us-central1\",\n connectionProfileId: \"source-profile\",\n mysqlProfile: {\n hostname: instance.publicIpAddress,\n username: user.name,\n password: user.password,\n },\n});\nconst destinationConnectionProfile = new gcp.datastream.ConnectionProfile(\"destination_connection_profile\", {\n displayName: \"Connection profile\",\n location: \"us-central1\",\n connectionProfileId: \"destination-profile\",\n bigqueryProfile: {},\n});\nconst _default = new gcp.datastream.Stream(\"default\", {\n streamId: \"my-stream\",\n location: \"us-central1\",\n displayName: \"my stream\",\n sourceConfig: {\n sourceConnectionProfile: sourceConnectionProfile.id,\n mysqlSourceConfig: {},\n },\n destinationConfig: {\n destinationConnectionProfile: destinationConnectionProfile.id,\n bigqueryDestinationConfig: {\n sourceHierarchyDatasets: {\n datasetTemplate: {\n location: \"us-central1\",\n },\n },\n appendOnly: {},\n },\n },\n backfillNone: {},\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\nproject = gcp.organizations.get_project()\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"my-instance\",\n database_version=\"MYSQL_8_0\",\n region=\"us-central1\",\n settings={\n \"tier\": \"db-f1-micro\",\n \"backup_configuration\": {\n \"enabled\": True,\n \"binary_log_enabled\": True,\n },\n \"ip_configuration\": {\n \"authorized_networks\": [\n {\n \"value\": \"34.71.242.81\",\n },\n {\n \"value\": \"34.72.28.29\",\n },\n {\n \"value\": \"34.67.6.157\",\n },\n {\n \"value\": \"34.67.234.134\",\n },\n {\n \"value\": \"34.72.239.218\",\n },\n ],\n },\n },\n deletion_protection=True)\ndb = gcp.sql.Database(\"db\",\n instance=instance.name,\n name=\"db\")\npwd = random.RandomPassword(\"pwd\",\n length=16,\n special=False)\nuser = gcp.sql.User(\"user\",\n name=\"user\",\n instance=instance.name,\n host=\"%\",\n password=pwd.result)\nsource_connection_profile = gcp.datastream.ConnectionProfile(\"source_connection_profile\",\n display_name=\"Source connection profile\",\n location=\"us-central1\",\n connection_profile_id=\"source-profile\",\n mysql_profile={\n \"hostname\": instance.public_ip_address,\n \"username\": user.name,\n \"password\": user.password,\n })\ndestination_connection_profile = gcp.datastream.ConnectionProfile(\"destination_connection_profile\",\n display_name=\"Connection profile\",\n location=\"us-central1\",\n connection_profile_id=\"destination-profile\",\n bigquery_profile={})\ndefault = gcp.datastream.Stream(\"default\",\n stream_id=\"my-stream\",\n location=\"us-central1\",\n display_name=\"my stream\",\n source_config={\n \"source_connection_profile\": source_connection_profile.id,\n \"mysql_source_config\": {},\n },\n destination_config={\n \"destination_connection_profile\": destination_connection_profile.id,\n \"bigquery_destination_config\": {\n \"source_hierarchy_datasets\": {\n \"dataset_template\": {\n \"location\": \"us-central1\",\n },\n },\n \"append_only\": {},\n },\n },\n backfill_none={})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"my-instance\",\n DatabaseVersion = \"MYSQL_8_0\",\n Region = \"us-central1\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n BackupConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsBackupConfigurationArgs\n {\n Enabled = true,\n BinaryLogEnabled = true,\n },\n IpConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationArgs\n {\n AuthorizedNetworks = new[]\n {\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.71.242.81\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.28.29\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.6.157\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.234.134\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.239.218\",\n },\n },\n },\n },\n DeletionProtection = true,\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Instance = instance.Name,\n Name = \"db\",\n });\n\n var pwd = new Random.RandomPassword(\"pwd\", new()\n {\n Length = 16,\n Special = false,\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"user\",\n Instance = instance.Name,\n Host = \"%\",\n Password = pwd.Result,\n });\n\n var sourceConnectionProfile = new Gcp.Datastream.ConnectionProfile(\"source_connection_profile\", new()\n {\n DisplayName = \"Source connection profile\",\n Location = \"us-central1\",\n ConnectionProfileId = \"source-profile\",\n MysqlProfile = new Gcp.Datastream.Inputs.ConnectionProfileMysqlProfileArgs\n {\n Hostname = instance.PublicIpAddress,\n Username = user.Name,\n Password = user.Password,\n },\n });\n\n var destinationConnectionProfile = new Gcp.Datastream.ConnectionProfile(\"destination_connection_profile\", new()\n {\n DisplayName = \"Connection profile\",\n Location = \"us-central1\",\n ConnectionProfileId = \"destination-profile\",\n BigqueryProfile = null,\n });\n\n var @default = new Gcp.Datastream.Stream(\"default\", new()\n {\n StreamId = \"my-stream\",\n Location = \"us-central1\",\n DisplayName = \"my stream\",\n SourceConfig = new Gcp.Datastream.Inputs.StreamSourceConfigArgs\n {\n SourceConnectionProfile = sourceConnectionProfile.Id,\n MysqlSourceConfig = null,\n },\n DestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigArgs\n {\n DestinationConnectionProfile = destinationConnectionProfile.Id,\n BigqueryDestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigArgs\n {\n SourceHierarchyDatasets = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs\n {\n DatasetTemplate = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs\n {\n Location = \"us-central1\",\n },\n },\n AppendOnly = null,\n },\n },\n BackfillNone = null,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datastream\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi-random/sdk/v4/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_8_0\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t\tBackupConfiguration: \u0026sql.DatabaseInstanceSettingsBackupConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tBinaryLogEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tIpConfiguration: \u0026sql.DatabaseInstanceSettingsIpConfigurationArgs{\n\t\t\t\t\tAuthorizedNetworks: sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArray{\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.71.242.81\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.28.29\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.6.157\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.234.134\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.239.218\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tName: pulumi.String(\"db\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpwd, err := random.NewRandomPassword(ctx, \"pwd\", \u0026random.RandomPasswordArgs{\n\t\t\tLength: pulumi.Int(16),\n\t\t\tSpecial: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tHost: pulumi.String(\"%\"),\n\t\t\tPassword: pwd.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceConnectionProfile, err := datastream.NewConnectionProfile(ctx, \"source_connection_profile\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Source connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"source-profile\"),\n\t\t\tMysqlProfile: \u0026datastream.ConnectionProfileMysqlProfileArgs{\n\t\t\t\tHostname: instance.PublicIpAddress,\n\t\t\t\tUsername: user.Name,\n\t\t\t\tPassword: user.Password,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestinationConnectionProfile, err := datastream.NewConnectionProfile(ctx, \"destination_connection_profile\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"destination-profile\"),\n\t\t\tBigqueryProfile: nil,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datastream.NewStream(ctx, \"default\", \u0026datastream.StreamArgs{\n\t\t\tStreamId: pulumi.String(\"my-stream\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"my stream\"),\n\t\t\tSourceConfig: \u0026datastream.StreamSourceConfigArgs{\n\t\t\t\tSourceConnectionProfile: sourceConnectionProfile.ID(),\n\t\t\t\tMysqlSourceConfig: nil,\n\t\t\t},\n\t\t\tDestinationConfig: \u0026datastream.StreamDestinationConfigArgs{\n\t\t\t\tDestinationConnectionProfile: destinationConnectionProfile.ID(),\n\t\t\t\tBigqueryDestinationConfig: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigArgs{\n\t\t\t\t\tSourceHierarchyDatasets: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs{\n\t\t\t\t\t\tDatasetTemplate: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tAppendOnly: nil,\n\t\t\t\t},\n\t\t\t},\n\t\t\tBackfillNone: nil,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsBackupConfigurationArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsIpConfigurationArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport com.pulumi.random.RandomPassword;\nimport com.pulumi.random.RandomPasswordArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileMysqlProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileBigqueryProfileArgs;\nimport com.pulumi.gcp.datastream.Stream;\nimport com.pulumi.gcp.datastream.StreamArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigMysqlSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigAppendOnlyArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamBackfillNoneArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"my-instance\")\n .databaseVersion(\"MYSQL_8_0\")\n .region(\"us-central1\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .backupConfiguration(DatabaseInstanceSettingsBackupConfigurationArgs.builder()\n .enabled(true)\n .binaryLogEnabled(true)\n .build())\n .ipConfiguration(DatabaseInstanceSettingsIpConfigurationArgs.builder()\n .authorizedNetworks( \n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.71.242.81\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.28.29\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.6.157\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.234.134\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.239.218\")\n .build())\n .build())\n .build())\n .deletionProtection(true)\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .instance(instance.name())\n .name(\"db\")\n .build());\n\n var pwd = new RandomPassword(\"pwd\", RandomPasswordArgs.builder()\n .length(16)\n .special(false)\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"user\")\n .instance(instance.name())\n .host(\"%\")\n .password(pwd.result())\n .build());\n\n var sourceConnectionProfile = new ConnectionProfile(\"sourceConnectionProfile\", ConnectionProfileArgs.builder()\n .displayName(\"Source connection profile\")\n .location(\"us-central1\")\n .connectionProfileId(\"source-profile\")\n .mysqlProfile(ConnectionProfileMysqlProfileArgs.builder()\n .hostname(instance.publicIpAddress())\n .username(user.name())\n .password(user.password())\n .build())\n .build());\n\n var destinationConnectionProfile = new ConnectionProfile(\"destinationConnectionProfile\", ConnectionProfileArgs.builder()\n .displayName(\"Connection profile\")\n .location(\"us-central1\")\n .connectionProfileId(\"destination-profile\")\n .bigqueryProfile()\n .build());\n\n var default_ = new Stream(\"default\", StreamArgs.builder()\n .streamId(\"my-stream\")\n .location(\"us-central1\")\n .displayName(\"my stream\")\n .sourceConfig(StreamSourceConfigArgs.builder()\n .sourceConnectionProfile(sourceConnectionProfile.id())\n .mysqlSourceConfig()\n .build())\n .destinationConfig(StreamDestinationConfigArgs.builder()\n .destinationConnectionProfile(destinationConnectionProfile.id())\n .bigqueryDestinationConfig(StreamDestinationConfigBigqueryDestinationConfigArgs.builder()\n .sourceHierarchyDatasets(StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs.builder()\n .datasetTemplate(StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs.builder()\n .location(\"us-central1\")\n .build())\n .build())\n .appendOnly()\n .build())\n .build())\n .backfillNone()\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: my-instance\n databaseVersion: MYSQL_8_0\n region: us-central1\n settings:\n tier: db-f1-micro\n backupConfiguration:\n enabled: true\n binaryLogEnabled: true\n ipConfiguration:\n authorizedNetworks:\n - value: 34.71.242.81\n - value: 34.72.28.29\n - value: 34.67.6.157\n - value: 34.67.234.134\n - value: 34.72.239.218\n deletionProtection: true\n db:\n type: gcp:sql:Database\n properties:\n instance: ${instance.name}\n name: db\n pwd:\n type: random:RandomPassword\n properties:\n length: 16\n special: false\n user:\n type: gcp:sql:User\n properties:\n name: user\n instance: ${instance.name}\n host: '%'\n password: ${pwd.result}\n sourceConnectionProfile:\n type: gcp:datastream:ConnectionProfile\n name: source_connection_profile\n properties:\n displayName: Source connection profile\n location: us-central1\n connectionProfileId: source-profile\n mysqlProfile:\n hostname: ${instance.publicIpAddress}\n username: ${user.name}\n password: ${user.password}\n destinationConnectionProfile:\n type: gcp:datastream:ConnectionProfile\n name: destination_connection_profile\n properties:\n displayName: Connection profile\n location: us-central1\n connectionProfileId: destination-profile\n bigqueryProfile: {}\n default:\n type: gcp:datastream:Stream\n properties:\n streamId: my-stream\n location: us-central1\n displayName: my stream\n sourceConfig:\n sourceConnectionProfile: ${sourceConnectionProfile.id}\n mysqlSourceConfig: {}\n destinationConfig:\n destinationConnectionProfile: ${destinationConnectionProfile.id}\n bigqueryDestinationConfig:\n sourceHierarchyDatasets:\n datasetTemplate:\n location: us-central1\n appendOnly: {}\n backfillNone: {}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nStream can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/streams/{{stream_id}}`\n\n* `{{project}}/{{location}}/{{stream_id}}`\n\n* `{{location}}/{{stream_id}}`\n\nWhen using the `pulumi import` command, Stream can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:datastream/stream:Stream default projects/{{project}}/locations/{{location}}/streams/{{stream_id}}\n```\n\n```sh\n$ pulumi import gcp:datastream/stream:Stream default {{project}}/{{location}}/{{stream_id}}\n```\n\n```sh\n$ pulumi import gcp:datastream/stream:Stream default {{location}}/{{stream_id}}\n```\n\n", + "description": "A resource representing streaming data from a source to a destination.\n\n\nTo get more information about Stream, see:\n\n* [API documentation](https://cloud.google.com/datastream/docs/reference/rest/v1/projects.locations.streams)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/datastream/docs/create-a-stream)\n\n## Example Usage\n\n### Datastream Stream Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst project = gcp.organizations.getProject({});\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"my-instance\",\n databaseVersion: \"MYSQL_8_0\",\n region: \"us-central1\",\n settings: {\n tier: \"db-f1-micro\",\n backupConfiguration: {\n enabled: true,\n binaryLogEnabled: true,\n },\n ipConfiguration: {\n authorizedNetworks: [\n {\n value: \"34.71.242.81\",\n },\n {\n value: \"34.72.28.29\",\n },\n {\n value: \"34.67.6.157\",\n },\n {\n value: \"34.67.234.134\",\n },\n {\n value: \"34.72.239.218\",\n },\n ],\n },\n },\n deletionProtection: true,\n});\nconst db = new gcp.sql.Database(\"db\", {\n instance: instance.name,\n name: \"db\",\n});\nconst pwd = new random.RandomPassword(\"pwd\", {\n length: 16,\n special: false,\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"user\",\n instance: instance.name,\n host: \"%\",\n password: pwd.result,\n});\nconst sourceConnectionProfile = new gcp.datastream.ConnectionProfile(\"source_connection_profile\", {\n displayName: \"Source connection profile\",\n location: \"us-central1\",\n connectionProfileId: \"source-profile\",\n mysqlProfile: {\n hostname: instance.publicIpAddress,\n username: user.name,\n password: user.password,\n },\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"my-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst viewer = new gcp.storage.BucketIAMMember(\"viewer\", {\n bucket: bucket.name,\n role: \"roles/storage.objectViewer\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-datastream.iam.gserviceaccount.com`),\n});\nconst creator = new gcp.storage.BucketIAMMember(\"creator\", {\n bucket: bucket.name,\n role: \"roles/storage.objectCreator\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-datastream.iam.gserviceaccount.com`),\n});\nconst reader = new gcp.storage.BucketIAMMember(\"reader\", {\n bucket: bucket.name,\n role: \"roles/storage.legacyBucketReader\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-datastream.iam.gserviceaccount.com`),\n});\nconst keyUser = new gcp.kms.CryptoKeyIAMMember(\"key_user\", {\n cryptoKeyId: \"kms-name\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-datastream.iam.gserviceaccount.com`),\n});\nconst destinationConnectionProfile = new gcp.datastream.ConnectionProfile(\"destination_connection_profile\", {\n displayName: \"Connection profile\",\n location: \"us-central1\",\n connectionProfileId: \"destination-profile\",\n gcsProfile: {\n bucket: bucket.name,\n rootPath: \"/path\",\n },\n});\nconst _default = new gcp.datastream.Stream(\"default\", {\n streamId: \"my-stream\",\n desiredState: \"NOT_STARTED\",\n location: \"us-central1\",\n displayName: \"my stream\",\n labels: {\n key: \"value\",\n },\n sourceConfig: {\n sourceConnectionProfile: sourceConnectionProfile.id,\n mysqlSourceConfig: {\n includeObjects: {\n mysqlDatabases: [{\n database: \"my-database\",\n mysqlTables: [\n {\n table: \"includedTable\",\n mysqlColumns: [{\n column: \"includedColumn\",\n dataType: \"VARCHAR\",\n collation: \"utf8mb4\",\n primaryKey: false,\n nullable: false,\n ordinalPosition: 0,\n }],\n },\n {\n table: \"includedTable_2\",\n },\n ],\n }],\n },\n excludeObjects: {\n mysqlDatabases: [{\n database: \"my-database\",\n mysqlTables: [{\n table: \"excludedTable\",\n mysqlColumns: [{\n column: \"excludedColumn\",\n dataType: \"VARCHAR\",\n collation: \"utf8mb4\",\n primaryKey: false,\n nullable: false,\n ordinalPosition: 0,\n }],\n }],\n }],\n },\n maxConcurrentCdcTasks: 5,\n },\n },\n destinationConfig: {\n destinationConnectionProfile: destinationConnectionProfile.id,\n gcsDestinationConfig: {\n path: \"mydata\",\n fileRotationMb: 200,\n fileRotationInterval: \"60s\",\n jsonFileFormat: {\n schemaFileFormat: \"NO_SCHEMA_FILE\",\n compression: \"GZIP\",\n },\n },\n },\n backfillAll: {\n mysqlExcludedObjects: {\n mysqlDatabases: [{\n database: \"my-database\",\n mysqlTables: [{\n table: \"excludedTable\",\n mysqlColumns: [{\n column: \"excludedColumn\",\n dataType: \"VARCHAR\",\n collation: \"utf8mb4\",\n primaryKey: false,\n nullable: false,\n ordinalPosition: 0,\n }],\n }],\n }],\n },\n },\n customerManagedEncryptionKey: \"kms-name\",\n}, {\n dependsOn: [keyUser],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\nproject = gcp.organizations.get_project()\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"my-instance\",\n database_version=\"MYSQL_8_0\",\n region=\"us-central1\",\n settings={\n \"tier\": \"db-f1-micro\",\n \"backup_configuration\": {\n \"enabled\": True,\n \"binary_log_enabled\": True,\n },\n \"ip_configuration\": {\n \"authorized_networks\": [\n {\n \"value\": \"34.71.242.81\",\n },\n {\n \"value\": \"34.72.28.29\",\n },\n {\n \"value\": \"34.67.6.157\",\n },\n {\n \"value\": \"34.67.234.134\",\n },\n {\n \"value\": \"34.72.239.218\",\n },\n ],\n },\n },\n deletion_protection=True)\ndb = gcp.sql.Database(\"db\",\n instance=instance.name,\n name=\"db\")\npwd = random.RandomPassword(\"pwd\",\n length=16,\n special=False)\nuser = gcp.sql.User(\"user\",\n name=\"user\",\n instance=instance.name,\n host=\"%\",\n password=pwd.result)\nsource_connection_profile = gcp.datastream.ConnectionProfile(\"source_connection_profile\",\n display_name=\"Source connection profile\",\n location=\"us-central1\",\n connection_profile_id=\"source-profile\",\n mysql_profile={\n \"hostname\": instance.public_ip_address,\n \"username\": user.name,\n \"password\": user.password,\n })\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"my-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nviewer = gcp.storage.BucketIAMMember(\"viewer\",\n bucket=bucket.name,\n role=\"roles/storage.objectViewer\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-datastream.iam.gserviceaccount.com\")\ncreator = gcp.storage.BucketIAMMember(\"creator\",\n bucket=bucket.name,\n role=\"roles/storage.objectCreator\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-datastream.iam.gserviceaccount.com\")\nreader = gcp.storage.BucketIAMMember(\"reader\",\n bucket=bucket.name,\n role=\"roles/storage.legacyBucketReader\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-datastream.iam.gserviceaccount.com\")\nkey_user = gcp.kms.CryptoKeyIAMMember(\"key_user\",\n crypto_key_id=\"kms-name\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-datastream.iam.gserviceaccount.com\")\ndestination_connection_profile = gcp.datastream.ConnectionProfile(\"destination_connection_profile\",\n display_name=\"Connection profile\",\n location=\"us-central1\",\n connection_profile_id=\"destination-profile\",\n gcs_profile={\n \"bucket\": bucket.name,\n \"root_path\": \"/path\",\n })\ndefault = gcp.datastream.Stream(\"default\",\n stream_id=\"my-stream\",\n desired_state=\"NOT_STARTED\",\n location=\"us-central1\",\n display_name=\"my stream\",\n labels={\n \"key\": \"value\",\n },\n source_config={\n \"source_connection_profile\": source_connection_profile.id,\n \"mysql_source_config\": {\n \"include_objects\": {\n \"mysql_databases\": [{\n \"database\": \"my-database\",\n \"mysql_tables\": [\n {\n \"table\": \"includedTable\",\n \"mysql_columns\": [{\n \"column\": \"includedColumn\",\n \"data_type\": \"VARCHAR\",\n \"collation\": \"utf8mb4\",\n \"primary_key\": False,\n \"nullable\": False,\n \"ordinal_position\": 0,\n }],\n },\n {\n \"table\": \"includedTable_2\",\n },\n ],\n }],\n },\n \"exclude_objects\": {\n \"mysql_databases\": [{\n \"database\": \"my-database\",\n \"mysql_tables\": [{\n \"table\": \"excludedTable\",\n \"mysql_columns\": [{\n \"column\": \"excludedColumn\",\n \"data_type\": \"VARCHAR\",\n \"collation\": \"utf8mb4\",\n \"primary_key\": False,\n \"nullable\": False,\n \"ordinal_position\": 0,\n }],\n }],\n }],\n },\n \"max_concurrent_cdc_tasks\": 5,\n },\n },\n destination_config={\n \"destination_connection_profile\": destination_connection_profile.id,\n \"gcs_destination_config\": {\n \"path\": \"mydata\",\n \"file_rotation_mb\": 200,\n \"file_rotation_interval\": \"60s\",\n \"json_file_format\": {\n \"schema_file_format\": \"NO_SCHEMA_FILE\",\n \"compression\": \"GZIP\",\n },\n },\n },\n backfill_all={\n \"mysql_excluded_objects\": {\n \"mysql_databases\": [{\n \"database\": \"my-database\",\n \"mysql_tables\": [{\n \"table\": \"excludedTable\",\n \"mysql_columns\": [{\n \"column\": \"excludedColumn\",\n \"data_type\": \"VARCHAR\",\n \"collation\": \"utf8mb4\",\n \"primary_key\": False,\n \"nullable\": False,\n \"ordinal_position\": 0,\n }],\n }],\n }],\n },\n },\n customer_managed_encryption_key=\"kms-name\",\n opts = pulumi.ResourceOptions(depends_on=[key_user]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"my-instance\",\n DatabaseVersion = \"MYSQL_8_0\",\n Region = \"us-central1\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n BackupConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsBackupConfigurationArgs\n {\n Enabled = true,\n BinaryLogEnabled = true,\n },\n IpConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationArgs\n {\n AuthorizedNetworks = new[]\n {\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.71.242.81\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.28.29\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.6.157\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.234.134\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.239.218\",\n },\n },\n },\n },\n DeletionProtection = true,\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Instance = instance.Name,\n Name = \"db\",\n });\n\n var pwd = new Random.RandomPassword(\"pwd\", new()\n {\n Length = 16,\n Special = false,\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"user\",\n Instance = instance.Name,\n Host = \"%\",\n Password = pwd.Result,\n });\n\n var sourceConnectionProfile = new Gcp.Datastream.ConnectionProfile(\"source_connection_profile\", new()\n {\n DisplayName = \"Source connection profile\",\n Location = \"us-central1\",\n ConnectionProfileId = \"source-profile\",\n MysqlProfile = new Gcp.Datastream.Inputs.ConnectionProfileMysqlProfileArgs\n {\n Hostname = instance.PublicIpAddress,\n Username = user.Name,\n Password = user.Password,\n },\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = \"my-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var viewer = new Gcp.Storage.BucketIAMMember(\"viewer\", new()\n {\n Bucket = bucket.Name,\n Role = \"roles/storage.objectViewer\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-datastream.iam.gserviceaccount.com\",\n });\n\n var creator = new Gcp.Storage.BucketIAMMember(\"creator\", new()\n {\n Bucket = bucket.Name,\n Role = \"roles/storage.objectCreator\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-datastream.iam.gserviceaccount.com\",\n });\n\n var reader = new Gcp.Storage.BucketIAMMember(\"reader\", new()\n {\n Bucket = bucket.Name,\n Role = \"roles/storage.legacyBucketReader\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-datastream.iam.gserviceaccount.com\",\n });\n\n var keyUser = new Gcp.Kms.CryptoKeyIAMMember(\"key_user\", new()\n {\n CryptoKeyId = \"kms-name\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-datastream.iam.gserviceaccount.com\",\n });\n\n var destinationConnectionProfile = new Gcp.Datastream.ConnectionProfile(\"destination_connection_profile\", new()\n {\n DisplayName = \"Connection profile\",\n Location = \"us-central1\",\n ConnectionProfileId = \"destination-profile\",\n GcsProfile = new Gcp.Datastream.Inputs.ConnectionProfileGcsProfileArgs\n {\n Bucket = bucket.Name,\n RootPath = \"/path\",\n },\n });\n\n var @default = new Gcp.Datastream.Stream(\"default\", new()\n {\n StreamId = \"my-stream\",\n DesiredState = \"NOT_STARTED\",\n Location = \"us-central1\",\n DisplayName = \"my stream\",\n Labels = \n {\n { \"key\", \"value\" },\n },\n SourceConfig = new Gcp.Datastream.Inputs.StreamSourceConfigArgs\n {\n SourceConnectionProfile = sourceConnectionProfile.Id,\n MysqlSourceConfig = new Gcp.Datastream.Inputs.StreamSourceConfigMysqlSourceConfigArgs\n {\n IncludeObjects = new Gcp.Datastream.Inputs.StreamSourceConfigMysqlSourceConfigIncludeObjectsArgs\n {\n MysqlDatabases = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseArgs\n {\n Database = \"my-database\",\n MysqlTables = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseMysqlTableArgs\n {\n Table = \"includedTable\",\n MysqlColumns = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseMysqlTableMysqlColumnArgs\n {\n Column = \"includedColumn\",\n DataType = \"VARCHAR\",\n Collation = \"utf8mb4\",\n PrimaryKey = false,\n Nullable = false,\n OrdinalPosition = 0,\n },\n },\n },\n new Gcp.Datastream.Inputs.StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseMysqlTableArgs\n {\n Table = \"includedTable_2\",\n },\n },\n },\n },\n },\n ExcludeObjects = new Gcp.Datastream.Inputs.StreamSourceConfigMysqlSourceConfigExcludeObjectsArgs\n {\n MysqlDatabases = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseArgs\n {\n Database = \"my-database\",\n MysqlTables = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTableArgs\n {\n Table = \"excludedTable\",\n MysqlColumns = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTableMysqlColumnArgs\n {\n Column = \"excludedColumn\",\n DataType = \"VARCHAR\",\n Collation = \"utf8mb4\",\n PrimaryKey = false,\n Nullable = false,\n OrdinalPosition = 0,\n },\n },\n },\n },\n },\n },\n },\n MaxConcurrentCdcTasks = 5,\n },\n },\n DestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigArgs\n {\n DestinationConnectionProfile = destinationConnectionProfile.Id,\n GcsDestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigGcsDestinationConfigArgs\n {\n Path = \"mydata\",\n FileRotationMb = 200,\n FileRotationInterval = \"60s\",\n JsonFileFormat = new Gcp.Datastream.Inputs.StreamDestinationConfigGcsDestinationConfigJsonFileFormatArgs\n {\n SchemaFileFormat = \"NO_SCHEMA_FILE\",\n Compression = \"GZIP\",\n },\n },\n },\n BackfillAll = new Gcp.Datastream.Inputs.StreamBackfillAllArgs\n {\n MysqlExcludedObjects = new Gcp.Datastream.Inputs.StreamBackfillAllMysqlExcludedObjectsArgs\n {\n MysqlDatabases = new[]\n {\n new Gcp.Datastream.Inputs.StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseArgs\n {\n Database = \"my-database\",\n MysqlTables = new[]\n {\n new Gcp.Datastream.Inputs.StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseMysqlTableArgs\n {\n Table = \"excludedTable\",\n MysqlColumns = new[]\n {\n new Gcp.Datastream.Inputs.StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseMysqlTableMysqlColumnArgs\n {\n Column = \"excludedColumn\",\n DataType = \"VARCHAR\",\n Collation = \"utf8mb4\",\n PrimaryKey = false,\n Nullable = false,\n OrdinalPosition = 0,\n },\n },\n },\n },\n },\n },\n },\n },\n CustomerManagedEncryptionKey = \"kms-name\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n keyUser,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datastream\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi-random/sdk/v4/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_8_0\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t\tBackupConfiguration: \u0026sql.DatabaseInstanceSettingsBackupConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tBinaryLogEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tIpConfiguration: \u0026sql.DatabaseInstanceSettingsIpConfigurationArgs{\n\t\t\t\t\tAuthorizedNetworks: sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArray{\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.71.242.81\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.28.29\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.6.157\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.234.134\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.239.218\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tName: pulumi.String(\"db\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpwd, err := random.NewRandomPassword(ctx, \"pwd\", \u0026random.RandomPasswordArgs{\n\t\t\tLength: pulumi.Int(16),\n\t\t\tSpecial: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tHost: pulumi.String(\"%\"),\n\t\t\tPassword: pwd.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceConnectionProfile, err := datastream.NewConnectionProfile(ctx, \"source_connection_profile\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Source connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"source-profile\"),\n\t\t\tMysqlProfile: \u0026datastream.ConnectionProfileMysqlProfileArgs{\n\t\t\t\tHostname: instance.PublicIpAddress,\n\t\t\t\tUsername: user.Name,\n\t\t\t\tPassword: user.Password,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"my-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewBucketIAMMember(ctx, \"viewer\", \u0026storage.BucketIAMMemberArgs{\n\t\t\tBucket: bucket.Name,\n\t\t\tRole: pulumi.String(\"roles/storage.objectViewer\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-datastream.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewBucketIAMMember(ctx, \"creator\", \u0026storage.BucketIAMMemberArgs{\n\t\t\tBucket: bucket.Name,\n\t\t\tRole: pulumi.String(\"roles/storage.objectCreator\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-datastream.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewBucketIAMMember(ctx, \"reader\", \u0026storage.BucketIAMMemberArgs{\n\t\t\tBucket: bucket.Name,\n\t\t\tRole: pulumi.String(\"roles/storage.legacyBucketReader\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-datastream.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkeyUser, err := kms.NewCryptoKeyIAMMember(ctx, \"key_user\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"kms-name\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-datastream.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestinationConnectionProfile, err := datastream.NewConnectionProfile(ctx, \"destination_connection_profile\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"destination-profile\"),\n\t\t\tGcsProfile: \u0026datastream.ConnectionProfileGcsProfileArgs{\n\t\t\t\tBucket: bucket.Name,\n\t\t\t\tRootPath: pulumi.String(\"/path\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datastream.NewStream(ctx, \"default\", \u0026datastream.StreamArgs{\n\t\t\tStreamId: pulumi.String(\"my-stream\"),\n\t\t\tDesiredState: pulumi.String(\"NOT_STARTED\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"my stream\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"key\": pulumi.String(\"value\"),\n\t\t\t},\n\t\t\tSourceConfig: \u0026datastream.StreamSourceConfigArgs{\n\t\t\t\tSourceConnectionProfile: sourceConnectionProfile.ID(),\n\t\t\t\tMysqlSourceConfig: \u0026datastream.StreamSourceConfigMysqlSourceConfigArgs{\n\t\t\t\t\tIncludeObjects: \u0026datastream.StreamSourceConfigMysqlSourceConfigIncludeObjectsArgs{\n\t\t\t\t\t\tMysqlDatabases: datastream.StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseArray{\n\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseArgs{\n\t\t\t\t\t\t\t\tDatabase: pulumi.String(\"my-database\"),\n\t\t\t\t\t\t\t\tMysqlTables: datastream.StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseMysqlTableArray{\n\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseMysqlTableArgs{\n\t\t\t\t\t\t\t\t\t\tTable: pulumi.String(\"includedTable\"),\n\t\t\t\t\t\t\t\t\t\tMysqlColumns: datastream.StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseMysqlTableMysqlColumnArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseMysqlTableMysqlColumnArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tColumn: pulumi.String(\"includedColumn\"),\n\t\t\t\t\t\t\t\t\t\t\t\tDataType: pulumi.String(\"VARCHAR\"),\n\t\t\t\t\t\t\t\t\t\t\t\tCollation: pulumi.String(\"utf8mb4\"),\n\t\t\t\t\t\t\t\t\t\t\t\tPrimaryKey: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t\t\t\tNullable: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t\t\t\tOrdinalPosition: pulumi.Int(0),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseMysqlTableArgs{\n\t\t\t\t\t\t\t\t\t\tTable: pulumi.String(\"includedTable_2\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tExcludeObjects: \u0026datastream.StreamSourceConfigMysqlSourceConfigExcludeObjectsArgs{\n\t\t\t\t\t\tMysqlDatabases: datastream.StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseArray{\n\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseArgs{\n\t\t\t\t\t\t\t\tDatabase: pulumi.String(\"my-database\"),\n\t\t\t\t\t\t\t\tMysqlTables: datastream.StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTableArray{\n\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTableArgs{\n\t\t\t\t\t\t\t\t\t\tTable: pulumi.String(\"excludedTable\"),\n\t\t\t\t\t\t\t\t\t\tMysqlColumns: datastream.StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTableMysqlColumnArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTableMysqlColumnArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tColumn: pulumi.String(\"excludedColumn\"),\n\t\t\t\t\t\t\t\t\t\t\t\tDataType: pulumi.String(\"VARCHAR\"),\n\t\t\t\t\t\t\t\t\t\t\t\tCollation: pulumi.String(\"utf8mb4\"),\n\t\t\t\t\t\t\t\t\t\t\t\tPrimaryKey: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t\t\t\tNullable: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t\t\t\tOrdinalPosition: pulumi.Int(0),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tMaxConcurrentCdcTasks: pulumi.Int(5),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDestinationConfig: \u0026datastream.StreamDestinationConfigArgs{\n\t\t\t\tDestinationConnectionProfile: destinationConnectionProfile.ID(),\n\t\t\t\tGcsDestinationConfig: \u0026datastream.StreamDestinationConfigGcsDestinationConfigArgs{\n\t\t\t\t\tPath: pulumi.String(\"mydata\"),\n\t\t\t\t\tFileRotationMb: pulumi.Int(200),\n\t\t\t\t\tFileRotationInterval: pulumi.String(\"60s\"),\n\t\t\t\t\tJsonFileFormat: \u0026datastream.StreamDestinationConfigGcsDestinationConfigJsonFileFormatArgs{\n\t\t\t\t\t\tSchemaFileFormat: pulumi.String(\"NO_SCHEMA_FILE\"),\n\t\t\t\t\t\tCompression: pulumi.String(\"GZIP\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBackfillAll: \u0026datastream.StreamBackfillAllArgs{\n\t\t\t\tMysqlExcludedObjects: \u0026datastream.StreamBackfillAllMysqlExcludedObjectsArgs{\n\t\t\t\t\tMysqlDatabases: datastream.StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseArray{\n\t\t\t\t\t\t\u0026datastream.StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseArgs{\n\t\t\t\t\t\t\tDatabase: pulumi.String(\"my-database\"),\n\t\t\t\t\t\t\tMysqlTables: datastream.StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseMysqlTableArray{\n\t\t\t\t\t\t\t\t\u0026datastream.StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseMysqlTableArgs{\n\t\t\t\t\t\t\t\t\tTable: pulumi.String(\"excludedTable\"),\n\t\t\t\t\t\t\t\t\tMysqlColumns: datastream.StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseMysqlTableMysqlColumnArray{\n\t\t\t\t\t\t\t\t\t\t\u0026datastream.StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseMysqlTableMysqlColumnArgs{\n\t\t\t\t\t\t\t\t\t\t\tColumn: pulumi.String(\"excludedColumn\"),\n\t\t\t\t\t\t\t\t\t\t\tDataType: pulumi.String(\"VARCHAR\"),\n\t\t\t\t\t\t\t\t\t\t\tCollation: pulumi.String(\"utf8mb4\"),\n\t\t\t\t\t\t\t\t\t\t\tPrimaryKey: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t\t\tNullable: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t\t\tOrdinalPosition: pulumi.Int(0),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tCustomerManagedEncryptionKey: pulumi.String(\"kms-name\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tkeyUser,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsBackupConfigurationArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsIpConfigurationArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport com.pulumi.random.RandomPassword;\nimport com.pulumi.random.RandomPasswordArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileMysqlProfileArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketIAMMember;\nimport com.pulumi.gcp.storage.BucketIAMMemberArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileGcsProfileArgs;\nimport com.pulumi.gcp.datastream.Stream;\nimport com.pulumi.gcp.datastream.StreamArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigMysqlSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigMysqlSourceConfigIncludeObjectsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigMysqlSourceConfigExcludeObjectsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigGcsDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigGcsDestinationConfigJsonFileFormatArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamBackfillAllArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamBackfillAllMysqlExcludedObjectsArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"my-instance\")\n .databaseVersion(\"MYSQL_8_0\")\n .region(\"us-central1\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .backupConfiguration(DatabaseInstanceSettingsBackupConfigurationArgs.builder()\n .enabled(true)\n .binaryLogEnabled(true)\n .build())\n .ipConfiguration(DatabaseInstanceSettingsIpConfigurationArgs.builder()\n .authorizedNetworks( \n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.71.242.81\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.28.29\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.6.157\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.234.134\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.239.218\")\n .build())\n .build())\n .build())\n .deletionProtection(true)\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .instance(instance.name())\n .name(\"db\")\n .build());\n\n var pwd = new RandomPassword(\"pwd\", RandomPasswordArgs.builder()\n .length(16)\n .special(false)\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"user\")\n .instance(instance.name())\n .host(\"%\")\n .password(pwd.result())\n .build());\n\n var sourceConnectionProfile = new ConnectionProfile(\"sourceConnectionProfile\", ConnectionProfileArgs.builder()\n .displayName(\"Source connection profile\")\n .location(\"us-central1\")\n .connectionProfileId(\"source-profile\")\n .mysqlProfile(ConnectionProfileMysqlProfileArgs.builder()\n .hostname(instance.publicIpAddress())\n .username(user.name())\n .password(user.password())\n .build())\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(\"my-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var viewer = new BucketIAMMember(\"viewer\", BucketIAMMemberArgs.builder()\n .bucket(bucket.name())\n .role(\"roles/storage.objectViewer\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-datastream.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var creator = new BucketIAMMember(\"creator\", BucketIAMMemberArgs.builder()\n .bucket(bucket.name())\n .role(\"roles/storage.objectCreator\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-datastream.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var reader = new BucketIAMMember(\"reader\", BucketIAMMemberArgs.builder()\n .bucket(bucket.name())\n .role(\"roles/storage.legacyBucketReader\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-datastream.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var keyUser = new CryptoKeyIAMMember(\"keyUser\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(\"kms-name\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-datastream.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var destinationConnectionProfile = new ConnectionProfile(\"destinationConnectionProfile\", ConnectionProfileArgs.builder()\n .displayName(\"Connection profile\")\n .location(\"us-central1\")\n .connectionProfileId(\"destination-profile\")\n .gcsProfile(ConnectionProfileGcsProfileArgs.builder()\n .bucket(bucket.name())\n .rootPath(\"/path\")\n .build())\n .build());\n\n var default_ = new Stream(\"default\", StreamArgs.builder()\n .streamId(\"my-stream\")\n .desiredState(\"NOT_STARTED\")\n .location(\"us-central1\")\n .displayName(\"my stream\")\n .labels(Map.of(\"key\", \"value\"))\n .sourceConfig(StreamSourceConfigArgs.builder()\n .sourceConnectionProfile(sourceConnectionProfile.id())\n .mysqlSourceConfig(StreamSourceConfigMysqlSourceConfigArgs.builder()\n .includeObjects(StreamSourceConfigMysqlSourceConfigIncludeObjectsArgs.builder()\n .mysqlDatabases(StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseArgs.builder()\n .database(\"my-database\")\n .mysqlTables( \n StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseMysqlTableArgs.builder()\n .table(\"includedTable\")\n .mysqlColumns(StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseMysqlTableMysqlColumnArgs.builder()\n .column(\"includedColumn\")\n .dataType(\"VARCHAR\")\n .collation(\"utf8mb4\")\n .primaryKey(false)\n .nullable(false)\n .ordinalPosition(0)\n .build())\n .build(),\n StreamSourceConfigMysqlSourceConfigIncludeObjectsMysqlDatabaseMysqlTableArgs.builder()\n .table(\"includedTable_2\")\n .build())\n .build())\n .build())\n .excludeObjects(StreamSourceConfigMysqlSourceConfigExcludeObjectsArgs.builder()\n .mysqlDatabases(StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseArgs.builder()\n .database(\"my-database\")\n .mysqlTables(StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTableArgs.builder()\n .table(\"excludedTable\")\n .mysqlColumns(StreamSourceConfigMysqlSourceConfigExcludeObjectsMysqlDatabaseMysqlTableMysqlColumnArgs.builder()\n .column(\"excludedColumn\")\n .dataType(\"VARCHAR\")\n .collation(\"utf8mb4\")\n .primaryKey(false)\n .nullable(false)\n .ordinalPosition(0)\n .build())\n .build())\n .build())\n .build())\n .maxConcurrentCdcTasks(5)\n .build())\n .build())\n .destinationConfig(StreamDestinationConfigArgs.builder()\n .destinationConnectionProfile(destinationConnectionProfile.id())\n .gcsDestinationConfig(StreamDestinationConfigGcsDestinationConfigArgs.builder()\n .path(\"mydata\")\n .fileRotationMb(200)\n .fileRotationInterval(\"60s\")\n .jsonFileFormat(StreamDestinationConfigGcsDestinationConfigJsonFileFormatArgs.builder()\n .schemaFileFormat(\"NO_SCHEMA_FILE\")\n .compression(\"GZIP\")\n .build())\n .build())\n .build())\n .backfillAll(StreamBackfillAllArgs.builder()\n .mysqlExcludedObjects(StreamBackfillAllMysqlExcludedObjectsArgs.builder()\n .mysqlDatabases(StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseArgs.builder()\n .database(\"my-database\")\n .mysqlTables(StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseMysqlTableArgs.builder()\n .table(\"excludedTable\")\n .mysqlColumns(StreamBackfillAllMysqlExcludedObjectsMysqlDatabaseMysqlTableMysqlColumnArgs.builder()\n .column(\"excludedColumn\")\n .dataType(\"VARCHAR\")\n .collation(\"utf8mb4\")\n .primaryKey(false)\n .nullable(false)\n .ordinalPosition(0)\n .build())\n .build())\n .build())\n .build())\n .build())\n .customerManagedEncryptionKey(\"kms-name\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(keyUser)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: my-instance\n databaseVersion: MYSQL_8_0\n region: us-central1\n settings:\n tier: db-f1-micro\n backupConfiguration:\n enabled: true\n binaryLogEnabled: true\n ipConfiguration:\n authorizedNetworks:\n - value: 34.71.242.81\n - value: 34.72.28.29\n - value: 34.67.6.157\n - value: 34.67.234.134\n - value: 34.72.239.218\n deletionProtection: true\n db:\n type: gcp:sql:Database\n properties:\n instance: ${instance.name}\n name: db\n pwd:\n type: random:RandomPassword\n properties:\n length: 16\n special: false\n user:\n type: gcp:sql:User\n properties:\n name: user\n instance: ${instance.name}\n host: '%'\n password: ${pwd.result}\n sourceConnectionProfile:\n type: gcp:datastream:ConnectionProfile\n name: source_connection_profile\n properties:\n displayName: Source connection profile\n location: us-central1\n connectionProfileId: source-profile\n mysqlProfile:\n hostname: ${instance.publicIpAddress}\n username: ${user.name}\n password: ${user.password}\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: my-bucket\n location: US\n uniformBucketLevelAccess: true\n viewer:\n type: gcp:storage:BucketIAMMember\n properties:\n bucket: ${bucket.name}\n role: roles/storage.objectViewer\n member: serviceAccount:service-${project.number}@gcp-sa-datastream.iam.gserviceaccount.com\n creator:\n type: gcp:storage:BucketIAMMember\n properties:\n bucket: ${bucket.name}\n role: roles/storage.objectCreator\n member: serviceAccount:service-${project.number}@gcp-sa-datastream.iam.gserviceaccount.com\n reader:\n type: gcp:storage:BucketIAMMember\n properties:\n bucket: ${bucket.name}\n role: roles/storage.legacyBucketReader\n member: serviceAccount:service-${project.number}@gcp-sa-datastream.iam.gserviceaccount.com\n keyUser:\n type: gcp:kms:CryptoKeyIAMMember\n name: key_user\n properties:\n cryptoKeyId: kms-name\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-datastream.iam.gserviceaccount.com\n destinationConnectionProfile:\n type: gcp:datastream:ConnectionProfile\n name: destination_connection_profile\n properties:\n displayName: Connection profile\n location: us-central1\n connectionProfileId: destination-profile\n gcsProfile:\n bucket: ${bucket.name}\n rootPath: /path\n default:\n type: gcp:datastream:Stream\n properties:\n streamId: my-stream\n desiredState: NOT_STARTED\n location: us-central1\n displayName: my stream\n labels:\n key: value\n sourceConfig:\n sourceConnectionProfile: ${sourceConnectionProfile.id}\n mysqlSourceConfig:\n includeObjects:\n mysqlDatabases:\n - database: my-database\n mysqlTables:\n - table: includedTable\n mysqlColumns:\n - column: includedColumn\n dataType: VARCHAR\n collation: utf8mb4\n primaryKey: false\n nullable: false\n ordinalPosition: 0\n - table: includedTable_2\n excludeObjects:\n mysqlDatabases:\n - database: my-database\n mysqlTables:\n - table: excludedTable\n mysqlColumns:\n - column: excludedColumn\n dataType: VARCHAR\n collation: utf8mb4\n primaryKey: false\n nullable: false\n ordinalPosition: 0\n maxConcurrentCdcTasks: 5\n destinationConfig:\n destinationConnectionProfile: ${destinationConnectionProfile.id}\n gcsDestinationConfig:\n path: mydata\n fileRotationMb: 200\n fileRotationInterval: 60s\n jsonFileFormat:\n schemaFileFormat: NO_SCHEMA_FILE\n compression: GZIP\n backfillAll:\n mysqlExcludedObjects:\n mysqlDatabases:\n - database: my-database\n mysqlTables:\n - table: excludedTable\n mysqlColumns:\n - column: excludedColumn\n dataType: VARCHAR\n collation: utf8mb4\n primaryKey: false\n nullable: false\n ordinalPosition: 0\n customerManagedEncryptionKey: kms-name\n options:\n dependson:\n - ${keyUser}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Datastream Stream Postgresql\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst source = new gcp.datastream.ConnectionProfile(\"source\", {\n displayName: \"Postgresql Source\",\n location: \"us-central1\",\n connectionProfileId: \"source-profile\",\n postgresqlProfile: {\n hostname: \"hostname\",\n port: 3306,\n username: \"user\",\n password: \"pass\",\n database: \"postgres\",\n },\n});\nconst destination = new gcp.datastream.ConnectionProfile(\"destination\", {\n displayName: \"BigQuery Destination\",\n location: \"us-central1\",\n connectionProfileId: \"destination-profile\",\n bigqueryProfile: {},\n});\nconst _default = new gcp.datastream.Stream(\"default\", {\n displayName: \"Postgres to BigQuery\",\n location: \"us-central1\",\n streamId: \"my-stream\",\n desiredState: \"RUNNING\",\n sourceConfig: {\n sourceConnectionProfile: source.id,\n postgresqlSourceConfig: {\n maxConcurrentBackfillTasks: 12,\n publication: \"publication\",\n replicationSlot: \"replication_slot\",\n includeObjects: {\n postgresqlSchemas: [{\n schema: \"schema\",\n postgresqlTables: [{\n table: \"table\",\n postgresqlColumns: [{\n column: \"column\",\n }],\n }],\n }],\n },\n excludeObjects: {\n postgresqlSchemas: [{\n schema: \"schema\",\n postgresqlTables: [{\n table: \"table\",\n postgresqlColumns: [{\n column: \"column\",\n }],\n }],\n }],\n },\n },\n },\n destinationConfig: {\n destinationConnectionProfile: destination.id,\n bigqueryDestinationConfig: {\n dataFreshness: \"900s\",\n sourceHierarchyDatasets: {\n datasetTemplate: {\n location: \"us-central1\",\n },\n },\n },\n },\n backfillAll: {\n postgresqlExcludedObjects: {\n postgresqlSchemas: [{\n schema: \"schema\",\n postgresqlTables: [{\n table: \"table\",\n postgresqlColumns: [{\n column: \"column\",\n }],\n }],\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsource = gcp.datastream.ConnectionProfile(\"source\",\n display_name=\"Postgresql Source\",\n location=\"us-central1\",\n connection_profile_id=\"source-profile\",\n postgresql_profile={\n \"hostname\": \"hostname\",\n \"port\": 3306,\n \"username\": \"user\",\n \"password\": \"pass\",\n \"database\": \"postgres\",\n })\ndestination = gcp.datastream.ConnectionProfile(\"destination\",\n display_name=\"BigQuery Destination\",\n location=\"us-central1\",\n connection_profile_id=\"destination-profile\",\n bigquery_profile={})\ndefault = gcp.datastream.Stream(\"default\",\n display_name=\"Postgres to BigQuery\",\n location=\"us-central1\",\n stream_id=\"my-stream\",\n desired_state=\"RUNNING\",\n source_config={\n \"source_connection_profile\": source.id,\n \"postgresql_source_config\": {\n \"max_concurrent_backfill_tasks\": 12,\n \"publication\": \"publication\",\n \"replication_slot\": \"replication_slot\",\n \"include_objects\": {\n \"postgresql_schemas\": [{\n \"schema\": \"schema\",\n \"postgresql_tables\": [{\n \"table\": \"table\",\n \"postgresql_columns\": [{\n \"column\": \"column\",\n }],\n }],\n }],\n },\n \"exclude_objects\": {\n \"postgresql_schemas\": [{\n \"schema\": \"schema\",\n \"postgresql_tables\": [{\n \"table\": \"table\",\n \"postgresql_columns\": [{\n \"column\": \"column\",\n }],\n }],\n }],\n },\n },\n },\n destination_config={\n \"destination_connection_profile\": destination.id,\n \"bigquery_destination_config\": {\n \"data_freshness\": \"900s\",\n \"source_hierarchy_datasets\": {\n \"dataset_template\": {\n \"location\": \"us-central1\",\n },\n },\n },\n },\n backfill_all={\n \"postgresql_excluded_objects\": {\n \"postgresql_schemas\": [{\n \"schema\": \"schema\",\n \"postgresql_tables\": [{\n \"table\": \"table\",\n \"postgresql_columns\": [{\n \"column\": \"column\",\n }],\n }],\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var source = new Gcp.Datastream.ConnectionProfile(\"source\", new()\n {\n DisplayName = \"Postgresql Source\",\n Location = \"us-central1\",\n ConnectionProfileId = \"source-profile\",\n PostgresqlProfile = new Gcp.Datastream.Inputs.ConnectionProfilePostgresqlProfileArgs\n {\n Hostname = \"hostname\",\n Port = 3306,\n Username = \"user\",\n Password = \"pass\",\n Database = \"postgres\",\n },\n });\n\n var destination = new Gcp.Datastream.ConnectionProfile(\"destination\", new()\n {\n DisplayName = \"BigQuery Destination\",\n Location = \"us-central1\",\n ConnectionProfileId = \"destination-profile\",\n BigqueryProfile = null,\n });\n\n var @default = new Gcp.Datastream.Stream(\"default\", new()\n {\n DisplayName = \"Postgres to BigQuery\",\n Location = \"us-central1\",\n StreamId = \"my-stream\",\n DesiredState = \"RUNNING\",\n SourceConfig = new Gcp.Datastream.Inputs.StreamSourceConfigArgs\n {\n SourceConnectionProfile = source.Id,\n PostgresqlSourceConfig = new Gcp.Datastream.Inputs.StreamSourceConfigPostgresqlSourceConfigArgs\n {\n MaxConcurrentBackfillTasks = 12,\n Publication = \"publication\",\n ReplicationSlot = \"replication_slot\",\n IncludeObjects = new Gcp.Datastream.Inputs.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsArgs\n {\n PostgresqlSchemas = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaArgs\n {\n Schema = \"schema\",\n PostgresqlTables = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaPostgresqlTableArgs\n {\n Table = \"table\",\n PostgresqlColumns = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArgs\n {\n Column = \"column\",\n },\n },\n },\n },\n },\n },\n },\n ExcludeObjects = new Gcp.Datastream.Inputs.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsArgs\n {\n PostgresqlSchemas = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaArgs\n {\n Schema = \"schema\",\n PostgresqlTables = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaPostgresqlTableArgs\n {\n Table = \"table\",\n PostgresqlColumns = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArgs\n {\n Column = \"column\",\n },\n },\n },\n },\n },\n },\n },\n },\n },\n DestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigArgs\n {\n DestinationConnectionProfile = destination.Id,\n BigqueryDestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigArgs\n {\n DataFreshness = \"900s\",\n SourceHierarchyDatasets = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs\n {\n DatasetTemplate = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs\n {\n Location = \"us-central1\",\n },\n },\n },\n },\n BackfillAll = new Gcp.Datastream.Inputs.StreamBackfillAllArgs\n {\n PostgresqlExcludedObjects = new Gcp.Datastream.Inputs.StreamBackfillAllPostgresqlExcludedObjectsArgs\n {\n PostgresqlSchemas = new[]\n {\n new Gcp.Datastream.Inputs.StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaArgs\n {\n Schema = \"schema\",\n PostgresqlTables = new[]\n {\n new Gcp.Datastream.Inputs.StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaPostgresqlTableArgs\n {\n Table = \"table\",\n PostgresqlColumns = new[]\n {\n new Gcp.Datastream.Inputs.StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArgs\n {\n Column = \"column\",\n },\n },\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datastream\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsource, err := datastream.NewConnectionProfile(ctx, \"source\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Postgresql Source\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"source-profile\"),\n\t\t\tPostgresqlProfile: \u0026datastream.ConnectionProfilePostgresqlProfileArgs{\n\t\t\t\tHostname: pulumi.String(\"hostname\"),\n\t\t\t\tPort: pulumi.Int(3306),\n\t\t\t\tUsername: pulumi.String(\"user\"),\n\t\t\t\tPassword: pulumi.String(\"pass\"),\n\t\t\t\tDatabase: pulumi.String(\"postgres\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestination, err := datastream.NewConnectionProfile(ctx, \"destination\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"BigQuery Destination\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"destination-profile\"),\n\t\t\tBigqueryProfile: \u0026datastream.ConnectionProfileBigqueryProfileArgs{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datastream.NewStream(ctx, \"default\", \u0026datastream.StreamArgs{\n\t\t\tDisplayName: pulumi.String(\"Postgres to BigQuery\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tStreamId: pulumi.String(\"my-stream\"),\n\t\t\tDesiredState: pulumi.String(\"RUNNING\"),\n\t\t\tSourceConfig: \u0026datastream.StreamSourceConfigArgs{\n\t\t\t\tSourceConnectionProfile: source.ID(),\n\t\t\t\tPostgresqlSourceConfig: \u0026datastream.StreamSourceConfigPostgresqlSourceConfigArgs{\n\t\t\t\t\tMaxConcurrentBackfillTasks: pulumi.Int(12),\n\t\t\t\t\tPublication: pulumi.String(\"publication\"),\n\t\t\t\t\tReplicationSlot: pulumi.String(\"replication_slot\"),\n\t\t\t\t\tIncludeObjects: \u0026datastream.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsArgs{\n\t\t\t\t\t\tPostgresqlSchemas: datastream.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaArray{\n\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaArgs{\n\t\t\t\t\t\t\t\tSchema: pulumi.String(\"schema\"),\n\t\t\t\t\t\t\t\tPostgresqlTables: datastream.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaPostgresqlTableArray{\n\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaPostgresqlTableArgs{\n\t\t\t\t\t\t\t\t\t\tTable: pulumi.String(\"table\"),\n\t\t\t\t\t\t\t\t\t\tPostgresqlColumns: datastream.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tColumn: pulumi.String(\"column\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tExcludeObjects: \u0026datastream.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsArgs{\n\t\t\t\t\t\tPostgresqlSchemas: datastream.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaArray{\n\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaArgs{\n\t\t\t\t\t\t\t\tSchema: pulumi.String(\"schema\"),\n\t\t\t\t\t\t\t\tPostgresqlTables: datastream.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaPostgresqlTableArray{\n\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaPostgresqlTableArgs{\n\t\t\t\t\t\t\t\t\t\tTable: pulumi.String(\"table\"),\n\t\t\t\t\t\t\t\t\t\tPostgresqlColumns: datastream.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tColumn: pulumi.String(\"column\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDestinationConfig: \u0026datastream.StreamDestinationConfigArgs{\n\t\t\t\tDestinationConnectionProfile: destination.ID(),\n\t\t\t\tBigqueryDestinationConfig: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigArgs{\n\t\t\t\t\tDataFreshness: pulumi.String(\"900s\"),\n\t\t\t\t\tSourceHierarchyDatasets: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs{\n\t\t\t\t\t\tDatasetTemplate: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBackfillAll: \u0026datastream.StreamBackfillAllArgs{\n\t\t\t\tPostgresqlExcludedObjects: \u0026datastream.StreamBackfillAllPostgresqlExcludedObjectsArgs{\n\t\t\t\t\tPostgresqlSchemas: datastream.StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaArray{\n\t\t\t\t\t\t\u0026datastream.StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaArgs{\n\t\t\t\t\t\t\tSchema: pulumi.String(\"schema\"),\n\t\t\t\t\t\t\tPostgresqlTables: datastream.StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaPostgresqlTableArray{\n\t\t\t\t\t\t\t\t\u0026datastream.StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaPostgresqlTableArgs{\n\t\t\t\t\t\t\t\t\tTable: pulumi.String(\"table\"),\n\t\t\t\t\t\t\t\t\tPostgresqlColumns: datastream.StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArray{\n\t\t\t\t\t\t\t\t\t\t\u0026datastream.StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArgs{\n\t\t\t\t\t\t\t\t\t\t\tColumn: pulumi.String(\"column\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfilePostgresqlProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileBigqueryProfileArgs;\nimport com.pulumi.gcp.datastream.Stream;\nimport com.pulumi.gcp.datastream.StreamArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigPostgresqlSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigPostgresqlSourceConfigIncludeObjectsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigPostgresqlSourceConfigExcludeObjectsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamBackfillAllArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamBackfillAllPostgresqlExcludedObjectsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var source = new ConnectionProfile(\"source\", ConnectionProfileArgs.builder()\n .displayName(\"Postgresql Source\")\n .location(\"us-central1\")\n .connectionProfileId(\"source-profile\")\n .postgresqlProfile(ConnectionProfilePostgresqlProfileArgs.builder()\n .hostname(\"hostname\")\n .port(3306)\n .username(\"user\")\n .password(\"pass\")\n .database(\"postgres\")\n .build())\n .build());\n\n var destination = new ConnectionProfile(\"destination\", ConnectionProfileArgs.builder()\n .displayName(\"BigQuery Destination\")\n .location(\"us-central1\")\n .connectionProfileId(\"destination-profile\")\n .bigqueryProfile()\n .build());\n\n var default_ = new Stream(\"default\", StreamArgs.builder()\n .displayName(\"Postgres to BigQuery\")\n .location(\"us-central1\")\n .streamId(\"my-stream\")\n .desiredState(\"RUNNING\")\n .sourceConfig(StreamSourceConfigArgs.builder()\n .sourceConnectionProfile(source.id())\n .postgresqlSourceConfig(StreamSourceConfigPostgresqlSourceConfigArgs.builder()\n .maxConcurrentBackfillTasks(12)\n .publication(\"publication\")\n .replicationSlot(\"replication_slot\")\n .includeObjects(StreamSourceConfigPostgresqlSourceConfigIncludeObjectsArgs.builder()\n .postgresqlSchemas(StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaArgs.builder()\n .schema(\"schema\")\n .postgresqlTables(StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaPostgresqlTableArgs.builder()\n .table(\"table\")\n .postgresqlColumns(StreamSourceConfigPostgresqlSourceConfigIncludeObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArgs.builder()\n .column(\"column\")\n .build())\n .build())\n .build())\n .build())\n .excludeObjects(StreamSourceConfigPostgresqlSourceConfigExcludeObjectsArgs.builder()\n .postgresqlSchemas(StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaArgs.builder()\n .schema(\"schema\")\n .postgresqlTables(StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaPostgresqlTableArgs.builder()\n .table(\"table\")\n .postgresqlColumns(StreamSourceConfigPostgresqlSourceConfigExcludeObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArgs.builder()\n .column(\"column\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .build())\n .destinationConfig(StreamDestinationConfigArgs.builder()\n .destinationConnectionProfile(destination.id())\n .bigqueryDestinationConfig(StreamDestinationConfigBigqueryDestinationConfigArgs.builder()\n .dataFreshness(\"900s\")\n .sourceHierarchyDatasets(StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs.builder()\n .datasetTemplate(StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs.builder()\n .location(\"us-central1\")\n .build())\n .build())\n .build())\n .build())\n .backfillAll(StreamBackfillAllArgs.builder()\n .postgresqlExcludedObjects(StreamBackfillAllPostgresqlExcludedObjectsArgs.builder()\n .postgresqlSchemas(StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaArgs.builder()\n .schema(\"schema\")\n .postgresqlTables(StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaPostgresqlTableArgs.builder()\n .table(\"table\")\n .postgresqlColumns(StreamBackfillAllPostgresqlExcludedObjectsPostgresqlSchemaPostgresqlTablePostgresqlColumnArgs.builder()\n .column(\"column\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n source:\n type: gcp:datastream:ConnectionProfile\n properties:\n displayName: Postgresql Source\n location: us-central1\n connectionProfileId: source-profile\n postgresqlProfile:\n hostname: hostname\n port: 3306\n username: user\n password: pass\n database: postgres\n destination:\n type: gcp:datastream:ConnectionProfile\n properties:\n displayName: BigQuery Destination\n location: us-central1\n connectionProfileId: destination-profile\n bigqueryProfile: {}\n default:\n type: gcp:datastream:Stream\n properties:\n displayName: Postgres to BigQuery\n location: us-central1\n streamId: my-stream\n desiredState: RUNNING\n sourceConfig:\n sourceConnectionProfile: ${source.id}\n postgresqlSourceConfig:\n maxConcurrentBackfillTasks: 12\n publication: publication\n replicationSlot: replication_slot\n includeObjects:\n postgresqlSchemas:\n - schema: schema\n postgresqlTables:\n - table: table\n postgresqlColumns:\n - column: column\n excludeObjects:\n postgresqlSchemas:\n - schema: schema\n postgresqlTables:\n - table: table\n postgresqlColumns:\n - column: column\n destinationConfig:\n destinationConnectionProfile: ${destination.id}\n bigqueryDestinationConfig:\n dataFreshness: 900s\n sourceHierarchyDatasets:\n datasetTemplate:\n location: us-central1\n backfillAll:\n postgresqlExcludedObjects:\n postgresqlSchemas:\n - schema: schema\n postgresqlTables:\n - table: table\n postgresqlColumns:\n - column: column\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Datastream Stream Oracle\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst source = new gcp.datastream.ConnectionProfile(\"source\", {\n displayName: \"Oracle Source\",\n location: \"us-central1\",\n connectionProfileId: \"source-profile\",\n oracleProfile: {\n hostname: \"hostname\",\n port: 1521,\n username: \"user\",\n password: \"pass\",\n databaseService: \"ORCL\",\n },\n});\nconst destination = new gcp.datastream.ConnectionProfile(\"destination\", {\n displayName: \"BigQuery Destination\",\n location: \"us-central1\",\n connectionProfileId: \"destination-profile\",\n bigqueryProfile: {},\n});\nconst stream5 = new gcp.datastream.Stream(\"stream5\", {\n displayName: \"Oracle to BigQuery\",\n location: \"us-central1\",\n streamId: \"my-stream\",\n desiredState: \"RUNNING\",\n sourceConfig: {\n sourceConnectionProfile: source.id,\n oracleSourceConfig: {\n maxConcurrentCdcTasks: 8,\n maxConcurrentBackfillTasks: 12,\n includeObjects: {\n oracleSchemas: [{\n schema: \"schema\",\n oracleTables: [{\n table: \"table\",\n oracleColumns: [{\n column: \"column\",\n }],\n }],\n }],\n },\n excludeObjects: {\n oracleSchemas: [{\n schema: \"schema\",\n oracleTables: [{\n table: \"table\",\n oracleColumns: [{\n column: \"column\",\n }],\n }],\n }],\n },\n dropLargeObjects: {},\n },\n },\n destinationConfig: {\n destinationConnectionProfile: destination.id,\n bigqueryDestinationConfig: {\n dataFreshness: \"900s\",\n sourceHierarchyDatasets: {\n datasetTemplate: {\n location: \"us-central1\",\n },\n },\n },\n },\n backfillAll: {\n oracleExcludedObjects: {\n oracleSchemas: [{\n schema: \"schema\",\n oracleTables: [{\n table: \"table\",\n oracleColumns: [{\n column: \"column\",\n }],\n }],\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsource = gcp.datastream.ConnectionProfile(\"source\",\n display_name=\"Oracle Source\",\n location=\"us-central1\",\n connection_profile_id=\"source-profile\",\n oracle_profile={\n \"hostname\": \"hostname\",\n \"port\": 1521,\n \"username\": \"user\",\n \"password\": \"pass\",\n \"database_service\": \"ORCL\",\n })\ndestination = gcp.datastream.ConnectionProfile(\"destination\",\n display_name=\"BigQuery Destination\",\n location=\"us-central1\",\n connection_profile_id=\"destination-profile\",\n bigquery_profile={})\nstream5 = gcp.datastream.Stream(\"stream5\",\n display_name=\"Oracle to BigQuery\",\n location=\"us-central1\",\n stream_id=\"my-stream\",\n desired_state=\"RUNNING\",\n source_config={\n \"source_connection_profile\": source.id,\n \"oracle_source_config\": {\n \"max_concurrent_cdc_tasks\": 8,\n \"max_concurrent_backfill_tasks\": 12,\n \"include_objects\": {\n \"oracle_schemas\": [{\n \"schema\": \"schema\",\n \"oracle_tables\": [{\n \"table\": \"table\",\n \"oracle_columns\": [{\n \"column\": \"column\",\n }],\n }],\n }],\n },\n \"exclude_objects\": {\n \"oracle_schemas\": [{\n \"schema\": \"schema\",\n \"oracle_tables\": [{\n \"table\": \"table\",\n \"oracle_columns\": [{\n \"column\": \"column\",\n }],\n }],\n }],\n },\n \"drop_large_objects\": {},\n },\n },\n destination_config={\n \"destination_connection_profile\": destination.id,\n \"bigquery_destination_config\": {\n \"data_freshness\": \"900s\",\n \"source_hierarchy_datasets\": {\n \"dataset_template\": {\n \"location\": \"us-central1\",\n },\n },\n },\n },\n backfill_all={\n \"oracle_excluded_objects\": {\n \"oracle_schemas\": [{\n \"schema\": \"schema\",\n \"oracle_tables\": [{\n \"table\": \"table\",\n \"oracle_columns\": [{\n \"column\": \"column\",\n }],\n }],\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var source = new Gcp.Datastream.ConnectionProfile(\"source\", new()\n {\n DisplayName = \"Oracle Source\",\n Location = \"us-central1\",\n ConnectionProfileId = \"source-profile\",\n OracleProfile = new Gcp.Datastream.Inputs.ConnectionProfileOracleProfileArgs\n {\n Hostname = \"hostname\",\n Port = 1521,\n Username = \"user\",\n Password = \"pass\",\n DatabaseService = \"ORCL\",\n },\n });\n\n var destination = new Gcp.Datastream.ConnectionProfile(\"destination\", new()\n {\n DisplayName = \"BigQuery Destination\",\n Location = \"us-central1\",\n ConnectionProfileId = \"destination-profile\",\n BigqueryProfile = null,\n });\n\n var stream5 = new Gcp.Datastream.Stream(\"stream5\", new()\n {\n DisplayName = \"Oracle to BigQuery\",\n Location = \"us-central1\",\n StreamId = \"my-stream\",\n DesiredState = \"RUNNING\",\n SourceConfig = new Gcp.Datastream.Inputs.StreamSourceConfigArgs\n {\n SourceConnectionProfile = source.Id,\n OracleSourceConfig = new Gcp.Datastream.Inputs.StreamSourceConfigOracleSourceConfigArgs\n {\n MaxConcurrentCdcTasks = 8,\n MaxConcurrentBackfillTasks = 12,\n IncludeObjects = new Gcp.Datastream.Inputs.StreamSourceConfigOracleSourceConfigIncludeObjectsArgs\n {\n OracleSchemas = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaArgs\n {\n Schema = \"schema\",\n OracleTables = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaOracleTableArgs\n {\n Table = \"table\",\n OracleColumns = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaOracleTableOracleColumnArgs\n {\n Column = \"column\",\n },\n },\n },\n },\n },\n },\n },\n ExcludeObjects = new Gcp.Datastream.Inputs.StreamSourceConfigOracleSourceConfigExcludeObjectsArgs\n {\n OracleSchemas = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaArgs\n {\n Schema = \"schema\",\n OracleTables = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaOracleTableArgs\n {\n Table = \"table\",\n OracleColumns = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaOracleTableOracleColumnArgs\n {\n Column = \"column\",\n },\n },\n },\n },\n },\n },\n },\n DropLargeObjects = null,\n },\n },\n DestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigArgs\n {\n DestinationConnectionProfile = destination.Id,\n BigqueryDestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigArgs\n {\n DataFreshness = \"900s\",\n SourceHierarchyDatasets = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs\n {\n DatasetTemplate = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs\n {\n Location = \"us-central1\",\n },\n },\n },\n },\n BackfillAll = new Gcp.Datastream.Inputs.StreamBackfillAllArgs\n {\n OracleExcludedObjects = new Gcp.Datastream.Inputs.StreamBackfillAllOracleExcludedObjectsArgs\n {\n OracleSchemas = new[]\n {\n new Gcp.Datastream.Inputs.StreamBackfillAllOracleExcludedObjectsOracleSchemaArgs\n {\n Schema = \"schema\",\n OracleTables = new[]\n {\n new Gcp.Datastream.Inputs.StreamBackfillAllOracleExcludedObjectsOracleSchemaOracleTableArgs\n {\n Table = \"table\",\n OracleColumns = new[]\n {\n new Gcp.Datastream.Inputs.StreamBackfillAllOracleExcludedObjectsOracleSchemaOracleTableOracleColumnArgs\n {\n Column = \"column\",\n },\n },\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datastream\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsource, err := datastream.NewConnectionProfile(ctx, \"source\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Oracle Source\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"source-profile\"),\n\t\t\tOracleProfile: \u0026datastream.ConnectionProfileOracleProfileArgs{\n\t\t\t\tHostname: pulumi.String(\"hostname\"),\n\t\t\t\tPort: pulumi.Int(1521),\n\t\t\t\tUsername: pulumi.String(\"user\"),\n\t\t\t\tPassword: pulumi.String(\"pass\"),\n\t\t\t\tDatabaseService: pulumi.String(\"ORCL\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestination, err := datastream.NewConnectionProfile(ctx, \"destination\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"BigQuery Destination\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"destination-profile\"),\n\t\t\tBigqueryProfile: \u0026datastream.ConnectionProfileBigqueryProfileArgs{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datastream.NewStream(ctx, \"stream5\", \u0026datastream.StreamArgs{\n\t\t\tDisplayName: pulumi.String(\"Oracle to BigQuery\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tStreamId: pulumi.String(\"my-stream\"),\n\t\t\tDesiredState: pulumi.String(\"RUNNING\"),\n\t\t\tSourceConfig: \u0026datastream.StreamSourceConfigArgs{\n\t\t\t\tSourceConnectionProfile: source.ID(),\n\t\t\t\tOracleSourceConfig: \u0026datastream.StreamSourceConfigOracleSourceConfigArgs{\n\t\t\t\t\tMaxConcurrentCdcTasks: pulumi.Int(8),\n\t\t\t\t\tMaxConcurrentBackfillTasks: pulumi.Int(12),\n\t\t\t\t\tIncludeObjects: \u0026datastream.StreamSourceConfigOracleSourceConfigIncludeObjectsArgs{\n\t\t\t\t\t\tOracleSchemas: datastream.StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaArray{\n\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaArgs{\n\t\t\t\t\t\t\t\tSchema: pulumi.String(\"schema\"),\n\t\t\t\t\t\t\t\tOracleTables: datastream.StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaOracleTableArray{\n\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaOracleTableArgs{\n\t\t\t\t\t\t\t\t\t\tTable: pulumi.String(\"table\"),\n\t\t\t\t\t\t\t\t\t\tOracleColumns: datastream.StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaOracleTableOracleColumnArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaOracleTableOracleColumnArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tColumn: pulumi.String(\"column\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tExcludeObjects: \u0026datastream.StreamSourceConfigOracleSourceConfigExcludeObjectsArgs{\n\t\t\t\t\t\tOracleSchemas: datastream.StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaArray{\n\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaArgs{\n\t\t\t\t\t\t\t\tSchema: pulumi.String(\"schema\"),\n\t\t\t\t\t\t\t\tOracleTables: datastream.StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaOracleTableArray{\n\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaOracleTableArgs{\n\t\t\t\t\t\t\t\t\t\tTable: pulumi.String(\"table\"),\n\t\t\t\t\t\t\t\t\t\tOracleColumns: datastream.StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaOracleTableOracleColumnArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaOracleTableOracleColumnArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tColumn: pulumi.String(\"column\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tDropLargeObjects: \u0026datastream.StreamSourceConfigOracleSourceConfigDropLargeObjectsArgs{},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDestinationConfig: \u0026datastream.StreamDestinationConfigArgs{\n\t\t\t\tDestinationConnectionProfile: destination.ID(),\n\t\t\t\tBigqueryDestinationConfig: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigArgs{\n\t\t\t\t\tDataFreshness: pulumi.String(\"900s\"),\n\t\t\t\t\tSourceHierarchyDatasets: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs{\n\t\t\t\t\t\tDatasetTemplate: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBackfillAll: \u0026datastream.StreamBackfillAllArgs{\n\t\t\t\tOracleExcludedObjects: \u0026datastream.StreamBackfillAllOracleExcludedObjectsArgs{\n\t\t\t\t\tOracleSchemas: datastream.StreamBackfillAllOracleExcludedObjectsOracleSchemaArray{\n\t\t\t\t\t\t\u0026datastream.StreamBackfillAllOracleExcludedObjectsOracleSchemaArgs{\n\t\t\t\t\t\t\tSchema: pulumi.String(\"schema\"),\n\t\t\t\t\t\t\tOracleTables: datastream.StreamBackfillAllOracleExcludedObjectsOracleSchemaOracleTableArray{\n\t\t\t\t\t\t\t\t\u0026datastream.StreamBackfillAllOracleExcludedObjectsOracleSchemaOracleTableArgs{\n\t\t\t\t\t\t\t\t\tTable: pulumi.String(\"table\"),\n\t\t\t\t\t\t\t\t\tOracleColumns: datastream.StreamBackfillAllOracleExcludedObjectsOracleSchemaOracleTableOracleColumnArray{\n\t\t\t\t\t\t\t\t\t\t\u0026datastream.StreamBackfillAllOracleExcludedObjectsOracleSchemaOracleTableOracleColumnArgs{\n\t\t\t\t\t\t\t\t\t\t\tColumn: pulumi.String(\"column\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileOracleProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileBigqueryProfileArgs;\nimport com.pulumi.gcp.datastream.Stream;\nimport com.pulumi.gcp.datastream.StreamArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigOracleSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigOracleSourceConfigIncludeObjectsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigOracleSourceConfigExcludeObjectsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigOracleSourceConfigDropLargeObjectsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamBackfillAllArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamBackfillAllOracleExcludedObjectsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var source = new ConnectionProfile(\"source\", ConnectionProfileArgs.builder()\n .displayName(\"Oracle Source\")\n .location(\"us-central1\")\n .connectionProfileId(\"source-profile\")\n .oracleProfile(ConnectionProfileOracleProfileArgs.builder()\n .hostname(\"hostname\")\n .port(1521)\n .username(\"user\")\n .password(\"pass\")\n .databaseService(\"ORCL\")\n .build())\n .build());\n\n var destination = new ConnectionProfile(\"destination\", ConnectionProfileArgs.builder()\n .displayName(\"BigQuery Destination\")\n .location(\"us-central1\")\n .connectionProfileId(\"destination-profile\")\n .bigqueryProfile()\n .build());\n\n var stream5 = new Stream(\"stream5\", StreamArgs.builder()\n .displayName(\"Oracle to BigQuery\")\n .location(\"us-central1\")\n .streamId(\"my-stream\")\n .desiredState(\"RUNNING\")\n .sourceConfig(StreamSourceConfigArgs.builder()\n .sourceConnectionProfile(source.id())\n .oracleSourceConfig(StreamSourceConfigOracleSourceConfigArgs.builder()\n .maxConcurrentCdcTasks(8)\n .maxConcurrentBackfillTasks(12)\n .includeObjects(StreamSourceConfigOracleSourceConfigIncludeObjectsArgs.builder()\n .oracleSchemas(StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaArgs.builder()\n .schema(\"schema\")\n .oracleTables(StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaOracleTableArgs.builder()\n .table(\"table\")\n .oracleColumns(StreamSourceConfigOracleSourceConfigIncludeObjectsOracleSchemaOracleTableOracleColumnArgs.builder()\n .column(\"column\")\n .build())\n .build())\n .build())\n .build())\n .excludeObjects(StreamSourceConfigOracleSourceConfigExcludeObjectsArgs.builder()\n .oracleSchemas(StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaArgs.builder()\n .schema(\"schema\")\n .oracleTables(StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaOracleTableArgs.builder()\n .table(\"table\")\n .oracleColumns(StreamSourceConfigOracleSourceConfigExcludeObjectsOracleSchemaOracleTableOracleColumnArgs.builder()\n .column(\"column\")\n .build())\n .build())\n .build())\n .build())\n .dropLargeObjects()\n .build())\n .build())\n .destinationConfig(StreamDestinationConfigArgs.builder()\n .destinationConnectionProfile(destination.id())\n .bigqueryDestinationConfig(StreamDestinationConfigBigqueryDestinationConfigArgs.builder()\n .dataFreshness(\"900s\")\n .sourceHierarchyDatasets(StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs.builder()\n .datasetTemplate(StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs.builder()\n .location(\"us-central1\")\n .build())\n .build())\n .build())\n .build())\n .backfillAll(StreamBackfillAllArgs.builder()\n .oracleExcludedObjects(StreamBackfillAllOracleExcludedObjectsArgs.builder()\n .oracleSchemas(StreamBackfillAllOracleExcludedObjectsOracleSchemaArgs.builder()\n .schema(\"schema\")\n .oracleTables(StreamBackfillAllOracleExcludedObjectsOracleSchemaOracleTableArgs.builder()\n .table(\"table\")\n .oracleColumns(StreamBackfillAllOracleExcludedObjectsOracleSchemaOracleTableOracleColumnArgs.builder()\n .column(\"column\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n source:\n type: gcp:datastream:ConnectionProfile\n properties:\n displayName: Oracle Source\n location: us-central1\n connectionProfileId: source-profile\n oracleProfile:\n hostname: hostname\n port: 1521\n username: user\n password: pass\n databaseService: ORCL\n destination:\n type: gcp:datastream:ConnectionProfile\n properties:\n displayName: BigQuery Destination\n location: us-central1\n connectionProfileId: destination-profile\n bigqueryProfile: {}\n stream5:\n type: gcp:datastream:Stream\n properties:\n displayName: Oracle to BigQuery\n location: us-central1\n streamId: my-stream\n desiredState: RUNNING\n sourceConfig:\n sourceConnectionProfile: ${source.id}\n oracleSourceConfig:\n maxConcurrentCdcTasks: 8\n maxConcurrentBackfillTasks: 12\n includeObjects:\n oracleSchemas:\n - schema: schema\n oracleTables:\n - table: table\n oracleColumns:\n - column: column\n excludeObjects:\n oracleSchemas:\n - schema: schema\n oracleTables:\n - table: table\n oracleColumns:\n - column: column\n dropLargeObjects: {}\n destinationConfig:\n destinationConnectionProfile: ${destination.id}\n bigqueryDestinationConfig:\n dataFreshness: 900s\n sourceHierarchyDatasets:\n datasetTemplate:\n location: us-central1\n backfillAll:\n oracleExcludedObjects:\n oracleSchemas:\n - schema: schema\n oracleTables:\n - table: table\n oracleColumns:\n - column: column\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Datastream Stream Sql Server\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"sql-server\",\n databaseVersion: \"SQLSERVER_2019_STANDARD\",\n region: \"us-central1\",\n rootPassword: \"root-password\",\n deletionProtection: true,\n settings: {\n tier: \"db-custom-2-4096\",\n ipConfiguration: {\n authorizedNetworks: [\n {\n value: \"34.71.242.81\",\n },\n {\n value: \"34.72.28.29\",\n },\n {\n value: \"34.67.6.157\",\n },\n {\n value: \"34.67.234.134\",\n },\n {\n value: \"34.72.239.218\",\n },\n ],\n },\n },\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"user\",\n instance: instance.name,\n password: \"password\",\n});\nconst db = new gcp.sql.Database(\"db\", {\n name: \"db\",\n instance: instance.name,\n}, {\n dependsOn: [user],\n});\nconst source = new gcp.datastream.ConnectionProfile(\"source\", {\n displayName: \"SQL Server Source\",\n location: \"us-central1\",\n connectionProfileId: \"source-profile\",\n sqlServerProfile: {\n hostname: instance.publicIpAddress,\n port: 1433,\n username: user.name,\n password: user.password,\n database: db.name,\n },\n});\nconst destination = new gcp.datastream.ConnectionProfile(\"destination\", {\n displayName: \"BigQuery Destination\",\n location: \"us-central1\",\n connectionProfileId: \"destination-profile\",\n bigqueryProfile: {},\n});\nconst _default = new gcp.datastream.Stream(\"default\", {\n displayName: \"SQL Server to BigQuery\",\n location: \"us-central1\",\n streamId: \"stream\",\n sourceConfig: {\n sourceConnectionProfile: source.id,\n sqlServerSourceConfig: {\n includeObjects: {\n schemas: [{\n schema: \"schema\",\n tables: [{\n table: \"table\",\n }],\n }],\n },\n transactionLogs: {},\n },\n },\n destinationConfig: {\n destinationConnectionProfile: destination.id,\n bigqueryDestinationConfig: {\n dataFreshness: \"900s\",\n sourceHierarchyDatasets: {\n datasetTemplate: {\n location: \"us-central1\",\n },\n },\n },\n },\n backfillNone: {},\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"sql-server\",\n database_version=\"SQLSERVER_2019_STANDARD\",\n region=\"us-central1\",\n root_password=\"root-password\",\n deletion_protection=True,\n settings={\n \"tier\": \"db-custom-2-4096\",\n \"ip_configuration\": {\n \"authorized_networks\": [\n {\n \"value\": \"34.71.242.81\",\n },\n {\n \"value\": \"34.72.28.29\",\n },\n {\n \"value\": \"34.67.6.157\",\n },\n {\n \"value\": \"34.67.234.134\",\n },\n {\n \"value\": \"34.72.239.218\",\n },\n ],\n },\n })\nuser = gcp.sql.User(\"user\",\n name=\"user\",\n instance=instance.name,\n password=\"password\")\ndb = gcp.sql.Database(\"db\",\n name=\"db\",\n instance=instance.name,\n opts = pulumi.ResourceOptions(depends_on=[user]))\nsource = gcp.datastream.ConnectionProfile(\"source\",\n display_name=\"SQL Server Source\",\n location=\"us-central1\",\n connection_profile_id=\"source-profile\",\n sql_server_profile={\n \"hostname\": instance.public_ip_address,\n \"port\": 1433,\n \"username\": user.name,\n \"password\": user.password,\n \"database\": db.name,\n })\ndestination = gcp.datastream.ConnectionProfile(\"destination\",\n display_name=\"BigQuery Destination\",\n location=\"us-central1\",\n connection_profile_id=\"destination-profile\",\n bigquery_profile={})\ndefault = gcp.datastream.Stream(\"default\",\n display_name=\"SQL Server to BigQuery\",\n location=\"us-central1\",\n stream_id=\"stream\",\n source_config={\n \"source_connection_profile\": source.id,\n \"sql_server_source_config\": {\n \"include_objects\": {\n \"schemas\": [{\n \"schema\": \"schema\",\n \"tables\": [{\n \"table\": \"table\",\n }],\n }],\n },\n \"transaction_logs\": {},\n },\n },\n destination_config={\n \"destination_connection_profile\": destination.id,\n \"bigquery_destination_config\": {\n \"data_freshness\": \"900s\",\n \"source_hierarchy_datasets\": {\n \"dataset_template\": {\n \"location\": \"us-central1\",\n },\n },\n },\n },\n backfill_none={})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"sql-server\",\n DatabaseVersion = \"SQLSERVER_2019_STANDARD\",\n Region = \"us-central1\",\n RootPassword = \"root-password\",\n DeletionProtection = true,\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-custom-2-4096\",\n IpConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationArgs\n {\n AuthorizedNetworks = new[]\n {\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.71.242.81\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.28.29\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.6.157\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.234.134\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.239.218\",\n },\n },\n },\n },\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"user\",\n Instance = instance.Name,\n Password = \"password\",\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Name = \"db\",\n Instance = instance.Name,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n user,\n },\n });\n\n var source = new Gcp.Datastream.ConnectionProfile(\"source\", new()\n {\n DisplayName = \"SQL Server Source\",\n Location = \"us-central1\",\n ConnectionProfileId = \"source-profile\",\n SqlServerProfile = new Gcp.Datastream.Inputs.ConnectionProfileSqlServerProfileArgs\n {\n Hostname = instance.PublicIpAddress,\n Port = 1433,\n Username = user.Name,\n Password = user.Password,\n Database = db.Name,\n },\n });\n\n var destination = new Gcp.Datastream.ConnectionProfile(\"destination\", new()\n {\n DisplayName = \"BigQuery Destination\",\n Location = \"us-central1\",\n ConnectionProfileId = \"destination-profile\",\n BigqueryProfile = null,\n });\n\n var @default = new Gcp.Datastream.Stream(\"default\", new()\n {\n DisplayName = \"SQL Server to BigQuery\",\n Location = \"us-central1\",\n StreamId = \"stream\",\n SourceConfig = new Gcp.Datastream.Inputs.StreamSourceConfigArgs\n {\n SourceConnectionProfile = source.Id,\n SqlServerSourceConfig = new Gcp.Datastream.Inputs.StreamSourceConfigSqlServerSourceConfigArgs\n {\n IncludeObjects = new Gcp.Datastream.Inputs.StreamSourceConfigSqlServerSourceConfigIncludeObjectsArgs\n {\n Schemas = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaArgs\n {\n Schema = \"schema\",\n Tables = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaTableArgs\n {\n Table = \"table\",\n },\n },\n },\n },\n },\n TransactionLogs = null,\n },\n },\n DestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigArgs\n {\n DestinationConnectionProfile = destination.Id,\n BigqueryDestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigArgs\n {\n DataFreshness = \"900s\",\n SourceHierarchyDatasets = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs\n {\n DatasetTemplate = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs\n {\n Location = \"us-central1\",\n },\n },\n },\n },\n BackfillNone = null,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datastream\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"sql-server\"),\n\t\t\tDatabaseVersion: pulumi.String(\"SQLSERVER_2019_STANDARD\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tRootPassword: pulumi.String(\"root-password\"),\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-custom-2-4096\"),\n\t\t\t\tIpConfiguration: \u0026sql.DatabaseInstanceSettingsIpConfigurationArgs{\n\t\t\t\t\tAuthorizedNetworks: sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArray{\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.71.242.81\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.28.29\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.6.157\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.234.134\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.239.218\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tPassword: pulumi.String(\"password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdb, err := sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tName: pulumi.String(\"db\"),\n\t\t\tInstance: instance.Name,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tuser,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsource, err := datastream.NewConnectionProfile(ctx, \"source\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"SQL Server Source\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"source-profile\"),\n\t\t\tSqlServerProfile: \u0026datastream.ConnectionProfileSqlServerProfileArgs{\n\t\t\t\tHostname: instance.PublicIpAddress,\n\t\t\t\tPort: pulumi.Int(1433),\n\t\t\t\tUsername: user.Name,\n\t\t\t\tPassword: user.Password,\n\t\t\t\tDatabase: db.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestination, err := datastream.NewConnectionProfile(ctx, \"destination\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"BigQuery Destination\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"destination-profile\"),\n\t\t\tBigqueryProfile: \u0026datastream.ConnectionProfileBigqueryProfileArgs{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datastream.NewStream(ctx, \"default\", \u0026datastream.StreamArgs{\n\t\t\tDisplayName: pulumi.String(\"SQL Server to BigQuery\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tStreamId: pulumi.String(\"stream\"),\n\t\t\tSourceConfig: \u0026datastream.StreamSourceConfigArgs{\n\t\t\t\tSourceConnectionProfile: source.ID(),\n\t\t\t\tSqlServerSourceConfig: \u0026datastream.StreamSourceConfigSqlServerSourceConfigArgs{\n\t\t\t\t\tIncludeObjects: \u0026datastream.StreamSourceConfigSqlServerSourceConfigIncludeObjectsArgs{\n\t\t\t\t\t\tSchemas: datastream.StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaArray{\n\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaArgs{\n\t\t\t\t\t\t\t\tSchema: pulumi.String(\"schema\"),\n\t\t\t\t\t\t\t\tTables: datastream.StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaTableArray{\n\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaTableArgs{\n\t\t\t\t\t\t\t\t\t\tTable: pulumi.String(\"table\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tTransactionLogs: \u0026datastream.StreamSourceConfigSqlServerSourceConfigTransactionLogsArgs{},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDestinationConfig: \u0026datastream.StreamDestinationConfigArgs{\n\t\t\t\tDestinationConnectionProfile: destination.ID(),\n\t\t\t\tBigqueryDestinationConfig: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigArgs{\n\t\t\t\t\tDataFreshness: pulumi.String(\"900s\"),\n\t\t\t\t\tSourceHierarchyDatasets: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs{\n\t\t\t\t\t\tDatasetTemplate: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBackfillNone: \u0026datastream.StreamBackfillNoneArgs{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsIpConfigurationArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport com.pulumi.gcp.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileSqlServerProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileBigqueryProfileArgs;\nimport com.pulumi.gcp.datastream.Stream;\nimport com.pulumi.gcp.datastream.StreamArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigSqlServerSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigSqlServerSourceConfigIncludeObjectsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigSqlServerSourceConfigTransactionLogsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamBackfillNoneArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"sql-server\")\n .databaseVersion(\"SQLSERVER_2019_STANDARD\")\n .region(\"us-central1\")\n .rootPassword(\"root-password\")\n .deletionProtection(\"true\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-custom-2-4096\")\n .ipConfiguration(DatabaseInstanceSettingsIpConfigurationArgs.builder()\n .authorizedNetworks( \n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.71.242.81\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.28.29\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.6.157\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.234.134\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.239.218\")\n .build())\n .build())\n .build())\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"user\")\n .instance(instance.name())\n .password(\"password\")\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .name(\"db\")\n .instance(instance.name())\n .build(), CustomResourceOptions.builder()\n .dependsOn(user)\n .build());\n\n var source = new ConnectionProfile(\"source\", ConnectionProfileArgs.builder()\n .displayName(\"SQL Server Source\")\n .location(\"us-central1\")\n .connectionProfileId(\"source-profile\")\n .sqlServerProfile(ConnectionProfileSqlServerProfileArgs.builder()\n .hostname(instance.publicIpAddress())\n .port(1433)\n .username(user.name())\n .password(user.password())\n .database(db.name())\n .build())\n .build());\n\n var destination = new ConnectionProfile(\"destination\", ConnectionProfileArgs.builder()\n .displayName(\"BigQuery Destination\")\n .location(\"us-central1\")\n .connectionProfileId(\"destination-profile\")\n .bigqueryProfile()\n .build());\n\n var default_ = new Stream(\"default\", StreamArgs.builder()\n .displayName(\"SQL Server to BigQuery\")\n .location(\"us-central1\")\n .streamId(\"stream\")\n .sourceConfig(StreamSourceConfigArgs.builder()\n .sourceConnectionProfile(source.id())\n .sqlServerSourceConfig(StreamSourceConfigSqlServerSourceConfigArgs.builder()\n .includeObjects(StreamSourceConfigSqlServerSourceConfigIncludeObjectsArgs.builder()\n .schemas(StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaArgs.builder()\n .schema(\"schema\")\n .tables(StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaTableArgs.builder()\n .table(\"table\")\n .build())\n .build())\n .build())\n .transactionLogs()\n .build())\n .build())\n .destinationConfig(StreamDestinationConfigArgs.builder()\n .destinationConnectionProfile(destination.id())\n .bigqueryDestinationConfig(StreamDestinationConfigBigqueryDestinationConfigArgs.builder()\n .dataFreshness(\"900s\")\n .sourceHierarchyDatasets(StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs.builder()\n .datasetTemplate(StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs.builder()\n .location(\"us-central1\")\n .build())\n .build())\n .build())\n .build())\n .backfillNone()\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: sql-server\n databaseVersion: SQLSERVER_2019_STANDARD\n region: us-central1\n rootPassword: root-password\n deletionProtection: 'true'\n settings:\n tier: db-custom-2-4096\n ipConfiguration:\n authorizedNetworks:\n - value: 34.71.242.81\n - value: 34.72.28.29\n - value: 34.67.6.157\n - value: 34.67.234.134\n - value: 34.72.239.218\n db:\n type: gcp:sql:Database\n properties:\n name: db\n instance: ${instance.name}\n options:\n dependson:\n - ${user}\n user:\n type: gcp:sql:User\n properties:\n name: user\n instance: ${instance.name}\n password: password\n source:\n type: gcp:datastream:ConnectionProfile\n properties:\n displayName: SQL Server Source\n location: us-central1\n connectionProfileId: source-profile\n sqlServerProfile:\n hostname: ${instance.publicIpAddress}\n port: 1433\n username: ${user.name}\n password: ${user.password}\n database: ${db.name}\n destination:\n type: gcp:datastream:ConnectionProfile\n properties:\n displayName: BigQuery Destination\n location: us-central1\n connectionProfileId: destination-profile\n bigqueryProfile: {}\n default:\n type: gcp:datastream:Stream\n properties:\n displayName: SQL Server to BigQuery\n location: us-central1\n streamId: stream\n sourceConfig:\n sourceConnectionProfile: ${source.id}\n sqlServerSourceConfig:\n includeObjects:\n schemas:\n - schema: schema\n tables:\n - table: table\n transactionLogs: {}\n destinationConfig:\n destinationConnectionProfile: ${destination.id}\n bigqueryDestinationConfig:\n dataFreshness: 900s\n sourceHierarchyDatasets:\n datasetTemplate:\n location: us-central1\n backfillNone: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Datastream Stream Sql Server Change Tables\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"sql-server\",\n databaseVersion: \"SQLSERVER_2019_STANDARD\",\n region: \"us-central1\",\n rootPassword: \"root-password\",\n deletionProtection: true,\n settings: {\n tier: \"db-custom-2-4096\",\n ipConfiguration: {\n authorizedNetworks: [\n {\n value: \"34.71.242.81\",\n },\n {\n value: \"34.72.28.29\",\n },\n {\n value: \"34.67.6.157\",\n },\n {\n value: \"34.67.234.134\",\n },\n {\n value: \"34.72.239.218\",\n },\n ],\n },\n },\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"user\",\n instance: instance.name,\n password: \"password\",\n});\nconst db = new gcp.sql.Database(\"db\", {\n name: \"db\",\n instance: instance.name,\n}, {\n dependsOn: [user],\n});\nconst source = new gcp.datastream.ConnectionProfile(\"source\", {\n displayName: \"SQL Server Source\",\n location: \"us-central1\",\n connectionProfileId: \"source-profile\",\n sqlServerProfile: {\n hostname: instance.publicIpAddress,\n port: 1433,\n username: user.name,\n password: user.password,\n database: db.name,\n },\n});\nconst destination = new gcp.datastream.ConnectionProfile(\"destination\", {\n displayName: \"BigQuery Destination\",\n location: \"us-central1\",\n connectionProfileId: \"destination-profile\",\n bigqueryProfile: {},\n});\nconst _default = new gcp.datastream.Stream(\"default\", {\n displayName: \"SQL Server to BigQuery\",\n location: \"us-central1\",\n streamId: \"stream\",\n sourceConfig: {\n sourceConnectionProfile: source.id,\n sqlServerSourceConfig: {\n includeObjects: {\n schemas: [{\n schema: \"schema\",\n tables: [{\n table: \"table\",\n }],\n }],\n },\n changeTables: {},\n },\n },\n destinationConfig: {\n destinationConnectionProfile: destination.id,\n bigqueryDestinationConfig: {\n dataFreshness: \"900s\",\n sourceHierarchyDatasets: {\n datasetTemplate: {\n location: \"us-central1\",\n },\n },\n },\n },\n backfillNone: {},\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"sql-server\",\n database_version=\"SQLSERVER_2019_STANDARD\",\n region=\"us-central1\",\n root_password=\"root-password\",\n deletion_protection=True,\n settings={\n \"tier\": \"db-custom-2-4096\",\n \"ip_configuration\": {\n \"authorized_networks\": [\n {\n \"value\": \"34.71.242.81\",\n },\n {\n \"value\": \"34.72.28.29\",\n },\n {\n \"value\": \"34.67.6.157\",\n },\n {\n \"value\": \"34.67.234.134\",\n },\n {\n \"value\": \"34.72.239.218\",\n },\n ],\n },\n })\nuser = gcp.sql.User(\"user\",\n name=\"user\",\n instance=instance.name,\n password=\"password\")\ndb = gcp.sql.Database(\"db\",\n name=\"db\",\n instance=instance.name,\n opts = pulumi.ResourceOptions(depends_on=[user]))\nsource = gcp.datastream.ConnectionProfile(\"source\",\n display_name=\"SQL Server Source\",\n location=\"us-central1\",\n connection_profile_id=\"source-profile\",\n sql_server_profile={\n \"hostname\": instance.public_ip_address,\n \"port\": 1433,\n \"username\": user.name,\n \"password\": user.password,\n \"database\": db.name,\n })\ndestination = gcp.datastream.ConnectionProfile(\"destination\",\n display_name=\"BigQuery Destination\",\n location=\"us-central1\",\n connection_profile_id=\"destination-profile\",\n bigquery_profile={})\ndefault = gcp.datastream.Stream(\"default\",\n display_name=\"SQL Server to BigQuery\",\n location=\"us-central1\",\n stream_id=\"stream\",\n source_config={\n \"source_connection_profile\": source.id,\n \"sql_server_source_config\": {\n \"include_objects\": {\n \"schemas\": [{\n \"schema\": \"schema\",\n \"tables\": [{\n \"table\": \"table\",\n }],\n }],\n },\n \"change_tables\": {},\n },\n },\n destination_config={\n \"destination_connection_profile\": destination.id,\n \"bigquery_destination_config\": {\n \"data_freshness\": \"900s\",\n \"source_hierarchy_datasets\": {\n \"dataset_template\": {\n \"location\": \"us-central1\",\n },\n },\n },\n },\n backfill_none={})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"sql-server\",\n DatabaseVersion = \"SQLSERVER_2019_STANDARD\",\n Region = \"us-central1\",\n RootPassword = \"root-password\",\n DeletionProtection = true,\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-custom-2-4096\",\n IpConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationArgs\n {\n AuthorizedNetworks = new[]\n {\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.71.242.81\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.28.29\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.6.157\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.234.134\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.239.218\",\n },\n },\n },\n },\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"user\",\n Instance = instance.Name,\n Password = \"password\",\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Name = \"db\",\n Instance = instance.Name,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n user,\n },\n });\n\n var source = new Gcp.Datastream.ConnectionProfile(\"source\", new()\n {\n DisplayName = \"SQL Server Source\",\n Location = \"us-central1\",\n ConnectionProfileId = \"source-profile\",\n SqlServerProfile = new Gcp.Datastream.Inputs.ConnectionProfileSqlServerProfileArgs\n {\n Hostname = instance.PublicIpAddress,\n Port = 1433,\n Username = user.Name,\n Password = user.Password,\n Database = db.Name,\n },\n });\n\n var destination = new Gcp.Datastream.ConnectionProfile(\"destination\", new()\n {\n DisplayName = \"BigQuery Destination\",\n Location = \"us-central1\",\n ConnectionProfileId = \"destination-profile\",\n BigqueryProfile = null,\n });\n\n var @default = new Gcp.Datastream.Stream(\"default\", new()\n {\n DisplayName = \"SQL Server to BigQuery\",\n Location = \"us-central1\",\n StreamId = \"stream\",\n SourceConfig = new Gcp.Datastream.Inputs.StreamSourceConfigArgs\n {\n SourceConnectionProfile = source.Id,\n SqlServerSourceConfig = new Gcp.Datastream.Inputs.StreamSourceConfigSqlServerSourceConfigArgs\n {\n IncludeObjects = new Gcp.Datastream.Inputs.StreamSourceConfigSqlServerSourceConfigIncludeObjectsArgs\n {\n Schemas = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaArgs\n {\n Schema = \"schema\",\n Tables = new[]\n {\n new Gcp.Datastream.Inputs.StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaTableArgs\n {\n Table = \"table\",\n },\n },\n },\n },\n },\n ChangeTables = null,\n },\n },\n DestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigArgs\n {\n DestinationConnectionProfile = destination.Id,\n BigqueryDestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigArgs\n {\n DataFreshness = \"900s\",\n SourceHierarchyDatasets = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs\n {\n DatasetTemplate = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs\n {\n Location = \"us-central1\",\n },\n },\n },\n },\n BackfillNone = null,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datastream\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"sql-server\"),\n\t\t\tDatabaseVersion: pulumi.String(\"SQLSERVER_2019_STANDARD\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tRootPassword: pulumi.String(\"root-password\"),\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-custom-2-4096\"),\n\t\t\t\tIpConfiguration: \u0026sql.DatabaseInstanceSettingsIpConfigurationArgs{\n\t\t\t\t\tAuthorizedNetworks: sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArray{\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.71.242.81\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.28.29\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.6.157\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.234.134\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.239.218\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tPassword: pulumi.String(\"password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdb, err := sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tName: pulumi.String(\"db\"),\n\t\t\tInstance: instance.Name,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tuser,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsource, err := datastream.NewConnectionProfile(ctx, \"source\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"SQL Server Source\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"source-profile\"),\n\t\t\tSqlServerProfile: \u0026datastream.ConnectionProfileSqlServerProfileArgs{\n\t\t\t\tHostname: instance.PublicIpAddress,\n\t\t\t\tPort: pulumi.Int(1433),\n\t\t\t\tUsername: user.Name,\n\t\t\t\tPassword: user.Password,\n\t\t\t\tDatabase: db.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestination, err := datastream.NewConnectionProfile(ctx, \"destination\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"BigQuery Destination\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"destination-profile\"),\n\t\t\tBigqueryProfile: \u0026datastream.ConnectionProfileBigqueryProfileArgs{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datastream.NewStream(ctx, \"default\", \u0026datastream.StreamArgs{\n\t\t\tDisplayName: pulumi.String(\"SQL Server to BigQuery\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tStreamId: pulumi.String(\"stream\"),\n\t\t\tSourceConfig: \u0026datastream.StreamSourceConfigArgs{\n\t\t\t\tSourceConnectionProfile: source.ID(),\n\t\t\t\tSqlServerSourceConfig: \u0026datastream.StreamSourceConfigSqlServerSourceConfigArgs{\n\t\t\t\t\tIncludeObjects: \u0026datastream.StreamSourceConfigSqlServerSourceConfigIncludeObjectsArgs{\n\t\t\t\t\t\tSchemas: datastream.StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaArray{\n\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaArgs{\n\t\t\t\t\t\t\t\tSchema: pulumi.String(\"schema\"),\n\t\t\t\t\t\t\t\tTables: datastream.StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaTableArray{\n\t\t\t\t\t\t\t\t\t\u0026datastream.StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaTableArgs{\n\t\t\t\t\t\t\t\t\t\tTable: pulumi.String(\"table\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tChangeTables: \u0026datastream.StreamSourceConfigSqlServerSourceConfigChangeTablesArgs{},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDestinationConfig: \u0026datastream.StreamDestinationConfigArgs{\n\t\t\t\tDestinationConnectionProfile: destination.ID(),\n\t\t\t\tBigqueryDestinationConfig: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigArgs{\n\t\t\t\t\tDataFreshness: pulumi.String(\"900s\"),\n\t\t\t\t\tSourceHierarchyDatasets: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs{\n\t\t\t\t\t\tDatasetTemplate: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBackfillNone: \u0026datastream.StreamBackfillNoneArgs{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsIpConfigurationArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport com.pulumi.gcp.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileSqlServerProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileBigqueryProfileArgs;\nimport com.pulumi.gcp.datastream.Stream;\nimport com.pulumi.gcp.datastream.StreamArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigSqlServerSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigSqlServerSourceConfigIncludeObjectsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigSqlServerSourceConfigChangeTablesArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamBackfillNoneArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"sql-server\")\n .databaseVersion(\"SQLSERVER_2019_STANDARD\")\n .region(\"us-central1\")\n .rootPassword(\"root-password\")\n .deletionProtection(\"true\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-custom-2-4096\")\n .ipConfiguration(DatabaseInstanceSettingsIpConfigurationArgs.builder()\n .authorizedNetworks( \n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.71.242.81\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.28.29\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.6.157\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.234.134\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.239.218\")\n .build())\n .build())\n .build())\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"user\")\n .instance(instance.name())\n .password(\"password\")\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .name(\"db\")\n .instance(instance.name())\n .build(), CustomResourceOptions.builder()\n .dependsOn(user)\n .build());\n\n var source = new ConnectionProfile(\"source\", ConnectionProfileArgs.builder()\n .displayName(\"SQL Server Source\")\n .location(\"us-central1\")\n .connectionProfileId(\"source-profile\")\n .sqlServerProfile(ConnectionProfileSqlServerProfileArgs.builder()\n .hostname(instance.publicIpAddress())\n .port(1433)\n .username(user.name())\n .password(user.password())\n .database(db.name())\n .build())\n .build());\n\n var destination = new ConnectionProfile(\"destination\", ConnectionProfileArgs.builder()\n .displayName(\"BigQuery Destination\")\n .location(\"us-central1\")\n .connectionProfileId(\"destination-profile\")\n .bigqueryProfile()\n .build());\n\n var default_ = new Stream(\"default\", StreamArgs.builder()\n .displayName(\"SQL Server to BigQuery\")\n .location(\"us-central1\")\n .streamId(\"stream\")\n .sourceConfig(StreamSourceConfigArgs.builder()\n .sourceConnectionProfile(source.id())\n .sqlServerSourceConfig(StreamSourceConfigSqlServerSourceConfigArgs.builder()\n .includeObjects(StreamSourceConfigSqlServerSourceConfigIncludeObjectsArgs.builder()\n .schemas(StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaArgs.builder()\n .schema(\"schema\")\n .tables(StreamSourceConfigSqlServerSourceConfigIncludeObjectsSchemaTableArgs.builder()\n .table(\"table\")\n .build())\n .build())\n .build())\n .changeTables()\n .build())\n .build())\n .destinationConfig(StreamDestinationConfigArgs.builder()\n .destinationConnectionProfile(destination.id())\n .bigqueryDestinationConfig(StreamDestinationConfigBigqueryDestinationConfigArgs.builder()\n .dataFreshness(\"900s\")\n .sourceHierarchyDatasets(StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs.builder()\n .datasetTemplate(StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs.builder()\n .location(\"us-central1\")\n .build())\n .build())\n .build())\n .build())\n .backfillNone()\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: sql-server\n databaseVersion: SQLSERVER_2019_STANDARD\n region: us-central1\n rootPassword: root-password\n deletionProtection: 'true'\n settings:\n tier: db-custom-2-4096\n ipConfiguration:\n authorizedNetworks:\n - value: 34.71.242.81\n - value: 34.72.28.29\n - value: 34.67.6.157\n - value: 34.67.234.134\n - value: 34.72.239.218\n db:\n type: gcp:sql:Database\n properties:\n name: db\n instance: ${instance.name}\n options:\n dependson:\n - ${user}\n user:\n type: gcp:sql:User\n properties:\n name: user\n instance: ${instance.name}\n password: password\n source:\n type: gcp:datastream:ConnectionProfile\n properties:\n displayName: SQL Server Source\n location: us-central1\n connectionProfileId: source-profile\n sqlServerProfile:\n hostname: ${instance.publicIpAddress}\n port: 1433\n username: ${user.name}\n password: ${user.password}\n database: ${db.name}\n destination:\n type: gcp:datastream:ConnectionProfile\n properties:\n displayName: BigQuery Destination\n location: us-central1\n connectionProfileId: destination-profile\n bigqueryProfile: {}\n default:\n type: gcp:datastream:Stream\n properties:\n displayName: SQL Server to BigQuery\n location: us-central1\n streamId: stream\n sourceConfig:\n sourceConnectionProfile: ${source.id}\n sqlServerSourceConfig:\n includeObjects:\n schemas:\n - schema: schema\n tables:\n - table: table\n changeTables: {}\n destinationConfig:\n destinationConnectionProfile: ${destination.id}\n bigqueryDestinationConfig:\n dataFreshness: 900s\n sourceHierarchyDatasets:\n datasetTemplate:\n location: us-central1\n backfillNone: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Datastream Stream Postgresql Bigquery Dataset Id\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst postgres = new gcp.bigquery.Dataset(\"postgres\", {\n datasetId: \"postgres\",\n friendlyName: \"postgres\",\n description: \"Database of postgres\",\n location: \"us-central1\",\n});\nconst destinationConnectionProfile2 = new gcp.datastream.ConnectionProfile(\"destination_connection_profile2\", {\n displayName: \"Connection profile\",\n location: \"us-central1\",\n connectionProfileId: \"dest-profile\",\n bigqueryProfile: {},\n});\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"instance-name\",\n databaseVersion: \"MYSQL_8_0\",\n region: \"us-central1\",\n settings: {\n tier: \"db-f1-micro\",\n backupConfiguration: {\n enabled: true,\n binaryLogEnabled: true,\n },\n ipConfiguration: {\n authorizedNetworks: [\n {\n value: \"34.71.242.81\",\n },\n {\n value: \"34.72.28.29\",\n },\n {\n value: \"34.67.6.157\",\n },\n {\n value: \"34.67.234.134\",\n },\n {\n value: \"34.72.239.218\",\n },\n ],\n },\n },\n deletionProtection: false,\n});\nconst pwd = new random.RandomPassword(\"pwd\", {\n length: 16,\n special: false,\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"my-user\",\n instance: instance.name,\n host: \"%\",\n password: pwd.result,\n});\nconst sourceConnectionProfile = new gcp.datastream.ConnectionProfile(\"source_connection_profile\", {\n displayName: \"Source connection profile\",\n location: \"us-central1\",\n connectionProfileId: \"source-profile\",\n mysqlProfile: {\n hostname: instance.publicIpAddress,\n username: user.name,\n password: user.password,\n },\n});\nconst _default = new gcp.datastream.Stream(\"default\", {\n displayName: \"postgres to bigQuery\",\n location: \"us-central1\",\n streamId: \"postgres-bigquery\",\n sourceConfig: {\n sourceConnectionProfile: sourceConnectionProfile.id,\n mysqlSourceConfig: {},\n },\n destinationConfig: {\n destinationConnectionProfile: destinationConnectionProfile2.id,\n bigqueryDestinationConfig: {\n dataFreshness: \"900s\",\n singleTargetDataset: {\n datasetId: postgres.id,\n },\n },\n },\n backfillAll: {},\n});\nconst db = new gcp.sql.Database(\"db\", {\n instance: instance.name,\n name: \"db\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\npostgres = gcp.bigquery.Dataset(\"postgres\",\n dataset_id=\"postgres\",\n friendly_name=\"postgres\",\n description=\"Database of postgres\",\n location=\"us-central1\")\ndestination_connection_profile2 = gcp.datastream.ConnectionProfile(\"destination_connection_profile2\",\n display_name=\"Connection profile\",\n location=\"us-central1\",\n connection_profile_id=\"dest-profile\",\n bigquery_profile={})\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"instance-name\",\n database_version=\"MYSQL_8_0\",\n region=\"us-central1\",\n settings={\n \"tier\": \"db-f1-micro\",\n \"backup_configuration\": {\n \"enabled\": True,\n \"binary_log_enabled\": True,\n },\n \"ip_configuration\": {\n \"authorized_networks\": [\n {\n \"value\": \"34.71.242.81\",\n },\n {\n \"value\": \"34.72.28.29\",\n },\n {\n \"value\": \"34.67.6.157\",\n },\n {\n \"value\": \"34.67.234.134\",\n },\n {\n \"value\": \"34.72.239.218\",\n },\n ],\n },\n },\n deletion_protection=False)\npwd = random.RandomPassword(\"pwd\",\n length=16,\n special=False)\nuser = gcp.sql.User(\"user\",\n name=\"my-user\",\n instance=instance.name,\n host=\"%\",\n password=pwd.result)\nsource_connection_profile = gcp.datastream.ConnectionProfile(\"source_connection_profile\",\n display_name=\"Source connection profile\",\n location=\"us-central1\",\n connection_profile_id=\"source-profile\",\n mysql_profile={\n \"hostname\": instance.public_ip_address,\n \"username\": user.name,\n \"password\": user.password,\n })\ndefault = gcp.datastream.Stream(\"default\",\n display_name=\"postgres to bigQuery\",\n location=\"us-central1\",\n stream_id=\"postgres-bigquery\",\n source_config={\n \"source_connection_profile\": source_connection_profile.id,\n \"mysql_source_config\": {},\n },\n destination_config={\n \"destination_connection_profile\": destination_connection_profile2.id,\n \"bigquery_destination_config\": {\n \"data_freshness\": \"900s\",\n \"single_target_dataset\": {\n \"dataset_id\": postgres.id,\n },\n },\n },\n backfill_all={})\ndb = gcp.sql.Database(\"db\",\n instance=instance.name,\n name=\"db\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var postgres = new Gcp.BigQuery.Dataset(\"postgres\", new()\n {\n DatasetId = \"postgres\",\n FriendlyName = \"postgres\",\n Description = \"Database of postgres\",\n Location = \"us-central1\",\n });\n\n var destinationConnectionProfile2 = new Gcp.Datastream.ConnectionProfile(\"destination_connection_profile2\", new()\n {\n DisplayName = \"Connection profile\",\n Location = \"us-central1\",\n ConnectionProfileId = \"dest-profile\",\n BigqueryProfile = null,\n });\n\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"instance-name\",\n DatabaseVersion = \"MYSQL_8_0\",\n Region = \"us-central1\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n BackupConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsBackupConfigurationArgs\n {\n Enabled = true,\n BinaryLogEnabled = true,\n },\n IpConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationArgs\n {\n AuthorizedNetworks = new[]\n {\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.71.242.81\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.28.29\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.6.157\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.234.134\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.239.218\",\n },\n },\n },\n },\n DeletionProtection = false,\n });\n\n var pwd = new Random.RandomPassword(\"pwd\", new()\n {\n Length = 16,\n Special = false,\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"my-user\",\n Instance = instance.Name,\n Host = \"%\",\n Password = pwd.Result,\n });\n\n var sourceConnectionProfile = new Gcp.Datastream.ConnectionProfile(\"source_connection_profile\", new()\n {\n DisplayName = \"Source connection profile\",\n Location = \"us-central1\",\n ConnectionProfileId = \"source-profile\",\n MysqlProfile = new Gcp.Datastream.Inputs.ConnectionProfileMysqlProfileArgs\n {\n Hostname = instance.PublicIpAddress,\n Username = user.Name,\n Password = user.Password,\n },\n });\n\n var @default = new Gcp.Datastream.Stream(\"default\", new()\n {\n DisplayName = \"postgres to bigQuery\",\n Location = \"us-central1\",\n StreamId = \"postgres-bigquery\",\n SourceConfig = new Gcp.Datastream.Inputs.StreamSourceConfigArgs\n {\n SourceConnectionProfile = sourceConnectionProfile.Id,\n MysqlSourceConfig = null,\n },\n DestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigArgs\n {\n DestinationConnectionProfile = destinationConnectionProfile2.Id,\n BigqueryDestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigArgs\n {\n DataFreshness = \"900s\",\n SingleTargetDataset = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigSingleTargetDatasetArgs\n {\n DatasetId = postgres.Id,\n },\n },\n },\n BackfillAll = null,\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Instance = instance.Name,\n Name = \"db\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datastream\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi-random/sdk/v4/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpostgres, err := bigquery.NewDataset(ctx, \"postgres\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"postgres\"),\n\t\t\tFriendlyName: pulumi.String(\"postgres\"),\n\t\t\tDescription: pulumi.String(\"Database of postgres\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestinationConnectionProfile2, err := datastream.NewConnectionProfile(ctx, \"destination_connection_profile2\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"dest-profile\"),\n\t\t\tBigqueryProfile: \u0026datastream.ConnectionProfileBigqueryProfileArgs{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"instance-name\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_8_0\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t\tBackupConfiguration: \u0026sql.DatabaseInstanceSettingsBackupConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tBinaryLogEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tIpConfiguration: \u0026sql.DatabaseInstanceSettingsIpConfigurationArgs{\n\t\t\t\t\tAuthorizedNetworks: sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArray{\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.71.242.81\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.28.29\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.6.157\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.234.134\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.239.218\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpwd, err := random.NewRandomPassword(ctx, \"pwd\", \u0026random.RandomPasswordArgs{\n\t\t\tLength: pulumi.Int(16),\n\t\t\tSpecial: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"my-user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tHost: pulumi.String(\"%\"),\n\t\t\tPassword: pwd.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceConnectionProfile, err := datastream.NewConnectionProfile(ctx, \"source_connection_profile\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Source connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"source-profile\"),\n\t\t\tMysqlProfile: \u0026datastream.ConnectionProfileMysqlProfileArgs{\n\t\t\t\tHostname: instance.PublicIpAddress,\n\t\t\t\tUsername: user.Name,\n\t\t\t\tPassword: user.Password,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datastream.NewStream(ctx, \"default\", \u0026datastream.StreamArgs{\n\t\t\tDisplayName: pulumi.String(\"postgres to bigQuery\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tStreamId: pulumi.String(\"postgres-bigquery\"),\n\t\t\tSourceConfig: \u0026datastream.StreamSourceConfigArgs{\n\t\t\t\tSourceConnectionProfile: sourceConnectionProfile.ID(),\n\t\t\t\tMysqlSourceConfig: \u0026datastream.StreamSourceConfigMysqlSourceConfigArgs{},\n\t\t\t},\n\t\t\tDestinationConfig: \u0026datastream.StreamDestinationConfigArgs{\n\t\t\t\tDestinationConnectionProfile: destinationConnectionProfile2.ID(),\n\t\t\t\tBigqueryDestinationConfig: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigArgs{\n\t\t\t\t\tDataFreshness: pulumi.String(\"900s\"),\n\t\t\t\t\tSingleTargetDataset: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigSingleTargetDatasetArgs{\n\t\t\t\t\t\tDatasetId: postgres.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBackfillAll: \u0026datastream.StreamBackfillAllArgs{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tName: pulumi.String(\"db\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileBigqueryProfileArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsBackupConfigurationArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsIpConfigurationArgs;\nimport com.pulumi.random.RandomPassword;\nimport com.pulumi.random.RandomPasswordArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileMysqlProfileArgs;\nimport com.pulumi.gcp.datastream.Stream;\nimport com.pulumi.gcp.datastream.StreamArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigMysqlSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigSingleTargetDatasetArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamBackfillAllArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var postgres = new Dataset(\"postgres\", DatasetArgs.builder()\n .datasetId(\"postgres\")\n .friendlyName(\"postgres\")\n .description(\"Database of postgres\")\n .location(\"us-central1\")\n .build());\n\n var destinationConnectionProfile2 = new ConnectionProfile(\"destinationConnectionProfile2\", ConnectionProfileArgs.builder()\n .displayName(\"Connection profile\")\n .location(\"us-central1\")\n .connectionProfileId(\"dest-profile\")\n .bigqueryProfile()\n .build());\n\n var instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"instance-name\")\n .databaseVersion(\"MYSQL_8_0\")\n .region(\"us-central1\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .backupConfiguration(DatabaseInstanceSettingsBackupConfigurationArgs.builder()\n .enabled(true)\n .binaryLogEnabled(true)\n .build())\n .ipConfiguration(DatabaseInstanceSettingsIpConfigurationArgs.builder()\n .authorizedNetworks( \n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.71.242.81\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.28.29\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.6.157\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.234.134\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.239.218\")\n .build())\n .build())\n .build())\n .deletionProtection(false)\n .build());\n\n var pwd = new RandomPassword(\"pwd\", RandomPasswordArgs.builder()\n .length(16)\n .special(false)\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"my-user\")\n .instance(instance.name())\n .host(\"%\")\n .password(pwd.result())\n .build());\n\n var sourceConnectionProfile = new ConnectionProfile(\"sourceConnectionProfile\", ConnectionProfileArgs.builder()\n .displayName(\"Source connection profile\")\n .location(\"us-central1\")\n .connectionProfileId(\"source-profile\")\n .mysqlProfile(ConnectionProfileMysqlProfileArgs.builder()\n .hostname(instance.publicIpAddress())\n .username(user.name())\n .password(user.password())\n .build())\n .build());\n\n var default_ = new Stream(\"default\", StreamArgs.builder()\n .displayName(\"postgres to bigQuery\")\n .location(\"us-central1\")\n .streamId(\"postgres-bigquery\")\n .sourceConfig(StreamSourceConfigArgs.builder()\n .sourceConnectionProfile(sourceConnectionProfile.id())\n .mysqlSourceConfig()\n .build())\n .destinationConfig(StreamDestinationConfigArgs.builder()\n .destinationConnectionProfile(destinationConnectionProfile2.id())\n .bigqueryDestinationConfig(StreamDestinationConfigBigqueryDestinationConfigArgs.builder()\n .dataFreshness(\"900s\")\n .singleTargetDataset(StreamDestinationConfigBigqueryDestinationConfigSingleTargetDatasetArgs.builder()\n .datasetId(postgres.id())\n .build())\n .build())\n .build())\n .backfillAll()\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .instance(instance.name())\n .name(\"db\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n postgres:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: postgres\n friendlyName: postgres\n description: Database of postgres\n location: us-central1\n default:\n type: gcp:datastream:Stream\n properties:\n displayName: postgres to bigQuery\n location: us-central1\n streamId: postgres-bigquery\n sourceConfig:\n sourceConnectionProfile: ${sourceConnectionProfile.id}\n mysqlSourceConfig: {}\n destinationConfig:\n destinationConnectionProfile: ${destinationConnectionProfile2.id}\n bigqueryDestinationConfig:\n dataFreshness: 900s\n singleTargetDataset:\n datasetId: ${postgres.id}\n backfillAll: {}\n destinationConnectionProfile2:\n type: gcp:datastream:ConnectionProfile\n name: destination_connection_profile2\n properties:\n displayName: Connection profile\n location: us-central1\n connectionProfileId: dest-profile\n bigqueryProfile: {}\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: instance-name\n databaseVersion: MYSQL_8_0\n region: us-central1\n settings:\n tier: db-f1-micro\n backupConfiguration:\n enabled: true\n binaryLogEnabled: true\n ipConfiguration:\n authorizedNetworks:\n - value: 34.71.242.81\n - value: 34.72.28.29\n - value: 34.67.6.157\n - value: 34.67.234.134\n - value: 34.72.239.218\n deletionProtection: false\n db:\n type: gcp:sql:Database\n properties:\n instance: ${instance.name}\n name: db\n pwd:\n type: random:RandomPassword\n properties:\n length: 16\n special: false\n user:\n type: gcp:sql:User\n properties:\n name: my-user\n instance: ${instance.name}\n host: '%'\n password: ${pwd.result}\n sourceConnectionProfile:\n type: gcp:datastream:ConnectionProfile\n name: source_connection_profile\n properties:\n displayName: Source connection profile\n location: us-central1\n connectionProfileId: source-profile\n mysqlProfile:\n hostname: ${instance.publicIpAddress}\n username: ${user.name}\n password: ${user.password}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Datastream Stream Bigquery\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst project = gcp.organizations.getProject({});\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"my-instance\",\n databaseVersion: \"MYSQL_8_0\",\n region: \"us-central1\",\n settings: {\n tier: \"db-f1-micro\",\n backupConfiguration: {\n enabled: true,\n binaryLogEnabled: true,\n },\n ipConfiguration: {\n authorizedNetworks: [\n {\n value: \"34.71.242.81\",\n },\n {\n value: \"34.72.28.29\",\n },\n {\n value: \"34.67.6.157\",\n },\n {\n value: \"34.67.234.134\",\n },\n {\n value: \"34.72.239.218\",\n },\n ],\n },\n },\n deletionProtection: true,\n});\nconst db = new gcp.sql.Database(\"db\", {\n instance: instance.name,\n name: \"db\",\n});\nconst pwd = new random.RandomPassword(\"pwd\", {\n length: 16,\n special: false,\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"user\",\n instance: instance.name,\n host: \"%\",\n password: pwd.result,\n});\nconst sourceConnectionProfile = new gcp.datastream.ConnectionProfile(\"source_connection_profile\", {\n displayName: \"Source connection profile\",\n location: \"us-central1\",\n connectionProfileId: \"source-profile\",\n mysqlProfile: {\n hostname: instance.publicIpAddress,\n username: user.name,\n password: user.password,\n },\n});\nconst bqSa = gcp.bigquery.getDefaultServiceAccount({});\nconst bigqueryKeyUser = new gcp.kms.CryptoKeyIAMMember(\"bigquery_key_user\", {\n cryptoKeyId: \"bigquery-kms-name\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: bqSa.then(bqSa =\u003e `serviceAccount:${bqSa.email}`),\n});\nconst destinationConnectionProfile = new gcp.datastream.ConnectionProfile(\"destination_connection_profile\", {\n displayName: \"Connection profile\",\n location: \"us-central1\",\n connectionProfileId: \"destination-profile\",\n bigqueryProfile: {},\n});\nconst _default = new gcp.datastream.Stream(\"default\", {\n streamId: \"my-stream\",\n location: \"us-central1\",\n displayName: \"my stream\",\n sourceConfig: {\n sourceConnectionProfile: sourceConnectionProfile.id,\n mysqlSourceConfig: {},\n },\n destinationConfig: {\n destinationConnectionProfile: destinationConnectionProfile.id,\n bigqueryDestinationConfig: {\n sourceHierarchyDatasets: {\n datasetTemplate: {\n location: \"us-central1\",\n kmsKeyName: \"bigquery-kms-name\",\n },\n },\n },\n },\n backfillNone: {},\n}, {\n dependsOn: [bigqueryKeyUser],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\nproject = gcp.organizations.get_project()\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"my-instance\",\n database_version=\"MYSQL_8_0\",\n region=\"us-central1\",\n settings={\n \"tier\": \"db-f1-micro\",\n \"backup_configuration\": {\n \"enabled\": True,\n \"binary_log_enabled\": True,\n },\n \"ip_configuration\": {\n \"authorized_networks\": [\n {\n \"value\": \"34.71.242.81\",\n },\n {\n \"value\": \"34.72.28.29\",\n },\n {\n \"value\": \"34.67.6.157\",\n },\n {\n \"value\": \"34.67.234.134\",\n },\n {\n \"value\": \"34.72.239.218\",\n },\n ],\n },\n },\n deletion_protection=True)\ndb = gcp.sql.Database(\"db\",\n instance=instance.name,\n name=\"db\")\npwd = random.RandomPassword(\"pwd\",\n length=16,\n special=False)\nuser = gcp.sql.User(\"user\",\n name=\"user\",\n instance=instance.name,\n host=\"%\",\n password=pwd.result)\nsource_connection_profile = gcp.datastream.ConnectionProfile(\"source_connection_profile\",\n display_name=\"Source connection profile\",\n location=\"us-central1\",\n connection_profile_id=\"source-profile\",\n mysql_profile={\n \"hostname\": instance.public_ip_address,\n \"username\": user.name,\n \"password\": user.password,\n })\nbq_sa = gcp.bigquery.get_default_service_account()\nbigquery_key_user = gcp.kms.CryptoKeyIAMMember(\"bigquery_key_user\",\n crypto_key_id=\"bigquery-kms-name\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:{bq_sa.email}\")\ndestination_connection_profile = gcp.datastream.ConnectionProfile(\"destination_connection_profile\",\n display_name=\"Connection profile\",\n location=\"us-central1\",\n connection_profile_id=\"destination-profile\",\n bigquery_profile={})\ndefault = gcp.datastream.Stream(\"default\",\n stream_id=\"my-stream\",\n location=\"us-central1\",\n display_name=\"my stream\",\n source_config={\n \"source_connection_profile\": source_connection_profile.id,\n \"mysql_source_config\": {},\n },\n destination_config={\n \"destination_connection_profile\": destination_connection_profile.id,\n \"bigquery_destination_config\": {\n \"source_hierarchy_datasets\": {\n \"dataset_template\": {\n \"location\": \"us-central1\",\n \"kms_key_name\": \"bigquery-kms-name\",\n },\n },\n },\n },\n backfill_none={},\n opts = pulumi.ResourceOptions(depends_on=[bigquery_key_user]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"my-instance\",\n DatabaseVersion = \"MYSQL_8_0\",\n Region = \"us-central1\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n BackupConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsBackupConfigurationArgs\n {\n Enabled = true,\n BinaryLogEnabled = true,\n },\n IpConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationArgs\n {\n AuthorizedNetworks = new[]\n {\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.71.242.81\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.28.29\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.6.157\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.234.134\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.239.218\",\n },\n },\n },\n },\n DeletionProtection = true,\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Instance = instance.Name,\n Name = \"db\",\n });\n\n var pwd = new Random.RandomPassword(\"pwd\", new()\n {\n Length = 16,\n Special = false,\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"user\",\n Instance = instance.Name,\n Host = \"%\",\n Password = pwd.Result,\n });\n\n var sourceConnectionProfile = new Gcp.Datastream.ConnectionProfile(\"source_connection_profile\", new()\n {\n DisplayName = \"Source connection profile\",\n Location = \"us-central1\",\n ConnectionProfileId = \"source-profile\",\n MysqlProfile = new Gcp.Datastream.Inputs.ConnectionProfileMysqlProfileArgs\n {\n Hostname = instance.PublicIpAddress,\n Username = user.Name,\n Password = user.Password,\n },\n });\n\n var bqSa = Gcp.BigQuery.GetDefaultServiceAccount.Invoke();\n\n var bigqueryKeyUser = new Gcp.Kms.CryptoKeyIAMMember(\"bigquery_key_user\", new()\n {\n CryptoKeyId = \"bigquery-kms-name\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:{bqSa.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Email)}\",\n });\n\n var destinationConnectionProfile = new Gcp.Datastream.ConnectionProfile(\"destination_connection_profile\", new()\n {\n DisplayName = \"Connection profile\",\n Location = \"us-central1\",\n ConnectionProfileId = \"destination-profile\",\n BigqueryProfile = null,\n });\n\n var @default = new Gcp.Datastream.Stream(\"default\", new()\n {\n StreamId = \"my-stream\",\n Location = \"us-central1\",\n DisplayName = \"my stream\",\n SourceConfig = new Gcp.Datastream.Inputs.StreamSourceConfigArgs\n {\n SourceConnectionProfile = sourceConnectionProfile.Id,\n MysqlSourceConfig = null,\n },\n DestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigArgs\n {\n DestinationConnectionProfile = destinationConnectionProfile.Id,\n BigqueryDestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigArgs\n {\n SourceHierarchyDatasets = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs\n {\n DatasetTemplate = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs\n {\n Location = \"us-central1\",\n KmsKeyName = \"bigquery-kms-name\",\n },\n },\n },\n },\n BackfillNone = null,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n bigqueryKeyUser,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datastream\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi-random/sdk/v4/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_8_0\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t\tBackupConfiguration: \u0026sql.DatabaseInstanceSettingsBackupConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tBinaryLogEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tIpConfiguration: \u0026sql.DatabaseInstanceSettingsIpConfigurationArgs{\n\t\t\t\t\tAuthorizedNetworks: sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArray{\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.71.242.81\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.28.29\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.6.157\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.234.134\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.239.218\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tName: pulumi.String(\"db\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpwd, err := random.NewRandomPassword(ctx, \"pwd\", \u0026random.RandomPasswordArgs{\n\t\t\tLength: pulumi.Int(16),\n\t\t\tSpecial: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tHost: pulumi.String(\"%\"),\n\t\t\tPassword: pwd.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceConnectionProfile, err := datastream.NewConnectionProfile(ctx, \"source_connection_profile\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Source connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"source-profile\"),\n\t\t\tMysqlProfile: \u0026datastream.ConnectionProfileMysqlProfileArgs{\n\t\t\t\tHostname: instance.PublicIpAddress,\n\t\t\t\tUsername: user.Name,\n\t\t\t\tPassword: user.Password,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbqSa, err := bigquery.GetDefaultServiceAccount(ctx, \u0026bigquery.GetDefaultServiceAccountArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbigqueryKeyUser, err := kms.NewCryptoKeyIAMMember(ctx, \"bigquery_key_user\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"bigquery-kms-name\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:%v\", bqSa.Email),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestinationConnectionProfile, err := datastream.NewConnectionProfile(ctx, \"destination_connection_profile\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"destination-profile\"),\n\t\t\tBigqueryProfile: \u0026datastream.ConnectionProfileBigqueryProfileArgs{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datastream.NewStream(ctx, \"default\", \u0026datastream.StreamArgs{\n\t\t\tStreamId: pulumi.String(\"my-stream\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"my stream\"),\n\t\t\tSourceConfig: \u0026datastream.StreamSourceConfigArgs{\n\t\t\t\tSourceConnectionProfile: sourceConnectionProfile.ID(),\n\t\t\t\tMysqlSourceConfig: \u0026datastream.StreamSourceConfigMysqlSourceConfigArgs{},\n\t\t\t},\n\t\t\tDestinationConfig: \u0026datastream.StreamDestinationConfigArgs{\n\t\t\t\tDestinationConnectionProfile: destinationConnectionProfile.ID(),\n\t\t\t\tBigqueryDestinationConfig: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigArgs{\n\t\t\t\t\tSourceHierarchyDatasets: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs{\n\t\t\t\t\t\tDatasetTemplate: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\t\t\t\tKmsKeyName: pulumi.String(\"bigquery-kms-name\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBackfillNone: \u0026datastream.StreamBackfillNoneArgs{},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tbigqueryKeyUser,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsBackupConfigurationArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsIpConfigurationArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport com.pulumi.random.RandomPassword;\nimport com.pulumi.random.RandomPasswordArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileMysqlProfileArgs;\nimport com.pulumi.gcp.bigquery.BigqueryFunctions;\nimport com.pulumi.gcp.bigquery.inputs.GetDefaultServiceAccountArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileBigqueryProfileArgs;\nimport com.pulumi.gcp.datastream.Stream;\nimport com.pulumi.gcp.datastream.StreamArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigMysqlSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamBackfillNoneArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"my-instance\")\n .databaseVersion(\"MYSQL_8_0\")\n .region(\"us-central1\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .backupConfiguration(DatabaseInstanceSettingsBackupConfigurationArgs.builder()\n .enabled(true)\n .binaryLogEnabled(true)\n .build())\n .ipConfiguration(DatabaseInstanceSettingsIpConfigurationArgs.builder()\n .authorizedNetworks( \n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.71.242.81\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.28.29\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.6.157\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.234.134\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.239.218\")\n .build())\n .build())\n .build())\n .deletionProtection(true)\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .instance(instance.name())\n .name(\"db\")\n .build());\n\n var pwd = new RandomPassword(\"pwd\", RandomPasswordArgs.builder()\n .length(16)\n .special(false)\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"user\")\n .instance(instance.name())\n .host(\"%\")\n .password(pwd.result())\n .build());\n\n var sourceConnectionProfile = new ConnectionProfile(\"sourceConnectionProfile\", ConnectionProfileArgs.builder()\n .displayName(\"Source connection profile\")\n .location(\"us-central1\")\n .connectionProfileId(\"source-profile\")\n .mysqlProfile(ConnectionProfileMysqlProfileArgs.builder()\n .hostname(instance.publicIpAddress())\n .username(user.name())\n .password(user.password())\n .build())\n .build());\n\n final var bqSa = BigqueryFunctions.getDefaultServiceAccount();\n\n var bigqueryKeyUser = new CryptoKeyIAMMember(\"bigqueryKeyUser\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(\"bigquery-kms-name\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:%s\", bqSa.applyValue(getDefaultServiceAccountResult -\u003e getDefaultServiceAccountResult.email())))\n .build());\n\n var destinationConnectionProfile = new ConnectionProfile(\"destinationConnectionProfile\", ConnectionProfileArgs.builder()\n .displayName(\"Connection profile\")\n .location(\"us-central1\")\n .connectionProfileId(\"destination-profile\")\n .bigqueryProfile()\n .build());\n\n var default_ = new Stream(\"default\", StreamArgs.builder()\n .streamId(\"my-stream\")\n .location(\"us-central1\")\n .displayName(\"my stream\")\n .sourceConfig(StreamSourceConfigArgs.builder()\n .sourceConnectionProfile(sourceConnectionProfile.id())\n .mysqlSourceConfig()\n .build())\n .destinationConfig(StreamDestinationConfigArgs.builder()\n .destinationConnectionProfile(destinationConnectionProfile.id())\n .bigqueryDestinationConfig(StreamDestinationConfigBigqueryDestinationConfigArgs.builder()\n .sourceHierarchyDatasets(StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs.builder()\n .datasetTemplate(StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs.builder()\n .location(\"us-central1\")\n .kmsKeyName(\"bigquery-kms-name\")\n .build())\n .build())\n .build())\n .build())\n .backfillNone()\n .build(), CustomResourceOptions.builder()\n .dependsOn(bigqueryKeyUser)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: my-instance\n databaseVersion: MYSQL_8_0\n region: us-central1\n settings:\n tier: db-f1-micro\n backupConfiguration:\n enabled: true\n binaryLogEnabled: true\n ipConfiguration:\n authorizedNetworks:\n - value: 34.71.242.81\n - value: 34.72.28.29\n - value: 34.67.6.157\n - value: 34.67.234.134\n - value: 34.72.239.218\n deletionProtection: true\n db:\n type: gcp:sql:Database\n properties:\n instance: ${instance.name}\n name: db\n pwd:\n type: random:RandomPassword\n properties:\n length: 16\n special: false\n user:\n type: gcp:sql:User\n properties:\n name: user\n instance: ${instance.name}\n host: '%'\n password: ${pwd.result}\n sourceConnectionProfile:\n type: gcp:datastream:ConnectionProfile\n name: source_connection_profile\n properties:\n displayName: Source connection profile\n location: us-central1\n connectionProfileId: source-profile\n mysqlProfile:\n hostname: ${instance.publicIpAddress}\n username: ${user.name}\n password: ${user.password}\n bigqueryKeyUser:\n type: gcp:kms:CryptoKeyIAMMember\n name: bigquery_key_user\n properties:\n cryptoKeyId: bigquery-kms-name\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:${bqSa.email}\n destinationConnectionProfile:\n type: gcp:datastream:ConnectionProfile\n name: destination_connection_profile\n properties:\n displayName: Connection profile\n location: us-central1\n connectionProfileId: destination-profile\n bigqueryProfile: {}\n default:\n type: gcp:datastream:Stream\n properties:\n streamId: my-stream\n location: us-central1\n displayName: my stream\n sourceConfig:\n sourceConnectionProfile: ${sourceConnectionProfile.id}\n mysqlSourceConfig: {}\n destinationConfig:\n destinationConnectionProfile: ${destinationConnectionProfile.id}\n bigqueryDestinationConfig:\n sourceHierarchyDatasets:\n datasetTemplate:\n location: us-central1\n kmsKeyName: bigquery-kms-name\n backfillNone: {}\n options:\n dependson:\n - ${bigqueryKeyUser}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n bqSa:\n fn::invoke:\n Function: gcp:bigquery:getDefaultServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Datastream Stream Bigquery Append Only\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst project = gcp.organizations.getProject({});\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"my-instance\",\n databaseVersion: \"MYSQL_8_0\",\n region: \"us-central1\",\n settings: {\n tier: \"db-f1-micro\",\n backupConfiguration: {\n enabled: true,\n binaryLogEnabled: true,\n },\n ipConfiguration: {\n authorizedNetworks: [\n {\n value: \"34.71.242.81\",\n },\n {\n value: \"34.72.28.29\",\n },\n {\n value: \"34.67.6.157\",\n },\n {\n value: \"34.67.234.134\",\n },\n {\n value: \"34.72.239.218\",\n },\n ],\n },\n },\n deletionProtection: true,\n});\nconst db = new gcp.sql.Database(\"db\", {\n instance: instance.name,\n name: \"db\",\n});\nconst pwd = new random.RandomPassword(\"pwd\", {\n length: 16,\n special: false,\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"user\",\n instance: instance.name,\n host: \"%\",\n password: pwd.result,\n});\nconst sourceConnectionProfile = new gcp.datastream.ConnectionProfile(\"source_connection_profile\", {\n displayName: \"Source connection profile\",\n location: \"us-central1\",\n connectionProfileId: \"source-profile\",\n mysqlProfile: {\n hostname: instance.publicIpAddress,\n username: user.name,\n password: user.password,\n },\n});\nconst destinationConnectionProfile = new gcp.datastream.ConnectionProfile(\"destination_connection_profile\", {\n displayName: \"Connection profile\",\n location: \"us-central1\",\n connectionProfileId: \"destination-profile\",\n bigqueryProfile: {},\n});\nconst _default = new gcp.datastream.Stream(\"default\", {\n streamId: \"my-stream\",\n location: \"us-central1\",\n displayName: \"my stream\",\n sourceConfig: {\n sourceConnectionProfile: sourceConnectionProfile.id,\n mysqlSourceConfig: {},\n },\n destinationConfig: {\n destinationConnectionProfile: destinationConnectionProfile.id,\n bigqueryDestinationConfig: {\n sourceHierarchyDatasets: {\n datasetTemplate: {\n location: \"us-central1\",\n },\n },\n appendOnly: {},\n },\n },\n backfillNone: {},\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\nproject = gcp.organizations.get_project()\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"my-instance\",\n database_version=\"MYSQL_8_0\",\n region=\"us-central1\",\n settings={\n \"tier\": \"db-f1-micro\",\n \"backup_configuration\": {\n \"enabled\": True,\n \"binary_log_enabled\": True,\n },\n \"ip_configuration\": {\n \"authorized_networks\": [\n {\n \"value\": \"34.71.242.81\",\n },\n {\n \"value\": \"34.72.28.29\",\n },\n {\n \"value\": \"34.67.6.157\",\n },\n {\n \"value\": \"34.67.234.134\",\n },\n {\n \"value\": \"34.72.239.218\",\n },\n ],\n },\n },\n deletion_protection=True)\ndb = gcp.sql.Database(\"db\",\n instance=instance.name,\n name=\"db\")\npwd = random.RandomPassword(\"pwd\",\n length=16,\n special=False)\nuser = gcp.sql.User(\"user\",\n name=\"user\",\n instance=instance.name,\n host=\"%\",\n password=pwd.result)\nsource_connection_profile = gcp.datastream.ConnectionProfile(\"source_connection_profile\",\n display_name=\"Source connection profile\",\n location=\"us-central1\",\n connection_profile_id=\"source-profile\",\n mysql_profile={\n \"hostname\": instance.public_ip_address,\n \"username\": user.name,\n \"password\": user.password,\n })\ndestination_connection_profile = gcp.datastream.ConnectionProfile(\"destination_connection_profile\",\n display_name=\"Connection profile\",\n location=\"us-central1\",\n connection_profile_id=\"destination-profile\",\n bigquery_profile={})\ndefault = gcp.datastream.Stream(\"default\",\n stream_id=\"my-stream\",\n location=\"us-central1\",\n display_name=\"my stream\",\n source_config={\n \"source_connection_profile\": source_connection_profile.id,\n \"mysql_source_config\": {},\n },\n destination_config={\n \"destination_connection_profile\": destination_connection_profile.id,\n \"bigquery_destination_config\": {\n \"source_hierarchy_datasets\": {\n \"dataset_template\": {\n \"location\": \"us-central1\",\n },\n },\n \"append_only\": {},\n },\n },\n backfill_none={})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"my-instance\",\n DatabaseVersion = \"MYSQL_8_0\",\n Region = \"us-central1\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n BackupConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsBackupConfigurationArgs\n {\n Enabled = true,\n BinaryLogEnabled = true,\n },\n IpConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationArgs\n {\n AuthorizedNetworks = new[]\n {\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.71.242.81\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.28.29\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.6.157\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.234.134\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.239.218\",\n },\n },\n },\n },\n DeletionProtection = true,\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Instance = instance.Name,\n Name = \"db\",\n });\n\n var pwd = new Random.RandomPassword(\"pwd\", new()\n {\n Length = 16,\n Special = false,\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"user\",\n Instance = instance.Name,\n Host = \"%\",\n Password = pwd.Result,\n });\n\n var sourceConnectionProfile = new Gcp.Datastream.ConnectionProfile(\"source_connection_profile\", new()\n {\n DisplayName = \"Source connection profile\",\n Location = \"us-central1\",\n ConnectionProfileId = \"source-profile\",\n MysqlProfile = new Gcp.Datastream.Inputs.ConnectionProfileMysqlProfileArgs\n {\n Hostname = instance.PublicIpAddress,\n Username = user.Name,\n Password = user.Password,\n },\n });\n\n var destinationConnectionProfile = new Gcp.Datastream.ConnectionProfile(\"destination_connection_profile\", new()\n {\n DisplayName = \"Connection profile\",\n Location = \"us-central1\",\n ConnectionProfileId = \"destination-profile\",\n BigqueryProfile = null,\n });\n\n var @default = new Gcp.Datastream.Stream(\"default\", new()\n {\n StreamId = \"my-stream\",\n Location = \"us-central1\",\n DisplayName = \"my stream\",\n SourceConfig = new Gcp.Datastream.Inputs.StreamSourceConfigArgs\n {\n SourceConnectionProfile = sourceConnectionProfile.Id,\n MysqlSourceConfig = null,\n },\n DestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigArgs\n {\n DestinationConnectionProfile = destinationConnectionProfile.Id,\n BigqueryDestinationConfig = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigArgs\n {\n SourceHierarchyDatasets = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs\n {\n DatasetTemplate = new Gcp.Datastream.Inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs\n {\n Location = \"us-central1\",\n },\n },\n AppendOnly = null,\n },\n },\n BackfillNone = null,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datastream\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi-random/sdk/v4/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"MYSQL_8_0\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t\tBackupConfiguration: \u0026sql.DatabaseInstanceSettingsBackupConfigurationArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tBinaryLogEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tIpConfiguration: \u0026sql.DatabaseInstanceSettingsIpConfigurationArgs{\n\t\t\t\t\tAuthorizedNetworks: sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArray{\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.71.242.81\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.28.29\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.6.157\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.234.134\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.239.218\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tName: pulumi.String(\"db\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpwd, err := random.NewRandomPassword(ctx, \"pwd\", \u0026random.RandomPasswordArgs{\n\t\t\tLength: pulumi.Int(16),\n\t\t\tSpecial: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tHost: pulumi.String(\"%\"),\n\t\t\tPassword: pwd.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceConnectionProfile, err := datastream.NewConnectionProfile(ctx, \"source_connection_profile\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Source connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"source-profile\"),\n\t\t\tMysqlProfile: \u0026datastream.ConnectionProfileMysqlProfileArgs{\n\t\t\t\tHostname: instance.PublicIpAddress,\n\t\t\t\tUsername: user.Name,\n\t\t\t\tPassword: user.Password,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestinationConnectionProfile, err := datastream.NewConnectionProfile(ctx, \"destination_connection_profile\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"destination-profile\"),\n\t\t\tBigqueryProfile: \u0026datastream.ConnectionProfileBigqueryProfileArgs{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datastream.NewStream(ctx, \"default\", \u0026datastream.StreamArgs{\n\t\t\tStreamId: pulumi.String(\"my-stream\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"my stream\"),\n\t\t\tSourceConfig: \u0026datastream.StreamSourceConfigArgs{\n\t\t\t\tSourceConnectionProfile: sourceConnectionProfile.ID(),\n\t\t\t\tMysqlSourceConfig: \u0026datastream.StreamSourceConfigMysqlSourceConfigArgs{},\n\t\t\t},\n\t\t\tDestinationConfig: \u0026datastream.StreamDestinationConfigArgs{\n\t\t\t\tDestinationConnectionProfile: destinationConnectionProfile.ID(),\n\t\t\t\tBigqueryDestinationConfig: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigArgs{\n\t\t\t\t\tSourceHierarchyDatasets: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs{\n\t\t\t\t\t\tDatasetTemplate: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tAppendOnly: \u0026datastream.StreamDestinationConfigBigqueryDestinationConfigAppendOnlyArgs{},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBackfillNone: \u0026datastream.StreamBackfillNoneArgs{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsBackupConfigurationArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsIpConfigurationArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport com.pulumi.random.RandomPassword;\nimport com.pulumi.random.RandomPasswordArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileMysqlProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileBigqueryProfileArgs;\nimport com.pulumi.gcp.datastream.Stream;\nimport com.pulumi.gcp.datastream.StreamArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamSourceConfigMysqlSourceConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamDestinationConfigBigqueryDestinationConfigAppendOnlyArgs;\nimport com.pulumi.gcp.datastream.inputs.StreamBackfillNoneArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"my-instance\")\n .databaseVersion(\"MYSQL_8_0\")\n .region(\"us-central1\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .backupConfiguration(DatabaseInstanceSettingsBackupConfigurationArgs.builder()\n .enabled(true)\n .binaryLogEnabled(true)\n .build())\n .ipConfiguration(DatabaseInstanceSettingsIpConfigurationArgs.builder()\n .authorizedNetworks( \n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.71.242.81\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.28.29\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.6.157\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.234.134\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.239.218\")\n .build())\n .build())\n .build())\n .deletionProtection(true)\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .instance(instance.name())\n .name(\"db\")\n .build());\n\n var pwd = new RandomPassword(\"pwd\", RandomPasswordArgs.builder()\n .length(16)\n .special(false)\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"user\")\n .instance(instance.name())\n .host(\"%\")\n .password(pwd.result())\n .build());\n\n var sourceConnectionProfile = new ConnectionProfile(\"sourceConnectionProfile\", ConnectionProfileArgs.builder()\n .displayName(\"Source connection profile\")\n .location(\"us-central1\")\n .connectionProfileId(\"source-profile\")\n .mysqlProfile(ConnectionProfileMysqlProfileArgs.builder()\n .hostname(instance.publicIpAddress())\n .username(user.name())\n .password(user.password())\n .build())\n .build());\n\n var destinationConnectionProfile = new ConnectionProfile(\"destinationConnectionProfile\", ConnectionProfileArgs.builder()\n .displayName(\"Connection profile\")\n .location(\"us-central1\")\n .connectionProfileId(\"destination-profile\")\n .bigqueryProfile()\n .build());\n\n var default_ = new Stream(\"default\", StreamArgs.builder()\n .streamId(\"my-stream\")\n .location(\"us-central1\")\n .displayName(\"my stream\")\n .sourceConfig(StreamSourceConfigArgs.builder()\n .sourceConnectionProfile(sourceConnectionProfile.id())\n .mysqlSourceConfig()\n .build())\n .destinationConfig(StreamDestinationConfigArgs.builder()\n .destinationConnectionProfile(destinationConnectionProfile.id())\n .bigqueryDestinationConfig(StreamDestinationConfigBigqueryDestinationConfigArgs.builder()\n .sourceHierarchyDatasets(StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsArgs.builder()\n .datasetTemplate(StreamDestinationConfigBigqueryDestinationConfigSourceHierarchyDatasetsDatasetTemplateArgs.builder()\n .location(\"us-central1\")\n .build())\n .build())\n .appendOnly()\n .build())\n .build())\n .backfillNone()\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: my-instance\n databaseVersion: MYSQL_8_0\n region: us-central1\n settings:\n tier: db-f1-micro\n backupConfiguration:\n enabled: true\n binaryLogEnabled: true\n ipConfiguration:\n authorizedNetworks:\n - value: 34.71.242.81\n - value: 34.72.28.29\n - value: 34.67.6.157\n - value: 34.67.234.134\n - value: 34.72.239.218\n deletionProtection: true\n db:\n type: gcp:sql:Database\n properties:\n instance: ${instance.name}\n name: db\n pwd:\n type: random:RandomPassword\n properties:\n length: 16\n special: false\n user:\n type: gcp:sql:User\n properties:\n name: user\n instance: ${instance.name}\n host: '%'\n password: ${pwd.result}\n sourceConnectionProfile:\n type: gcp:datastream:ConnectionProfile\n name: source_connection_profile\n properties:\n displayName: Source connection profile\n location: us-central1\n connectionProfileId: source-profile\n mysqlProfile:\n hostname: ${instance.publicIpAddress}\n username: ${user.name}\n password: ${user.password}\n destinationConnectionProfile:\n type: gcp:datastream:ConnectionProfile\n name: destination_connection_profile\n properties:\n displayName: Connection profile\n location: us-central1\n connectionProfileId: destination-profile\n bigqueryProfile: {}\n default:\n type: gcp:datastream:Stream\n properties:\n streamId: my-stream\n location: us-central1\n displayName: my stream\n sourceConfig:\n sourceConnectionProfile: ${sourceConnectionProfile.id}\n mysqlSourceConfig: {}\n destinationConfig:\n destinationConnectionProfile: ${destinationConnectionProfile.id}\n bigqueryDestinationConfig:\n sourceHierarchyDatasets:\n datasetTemplate:\n location: us-central1\n appendOnly: {}\n backfillNone: {}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nStream can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/streams/{{stream_id}}`\n\n* `{{project}}/{{location}}/{{stream_id}}`\n\n* `{{location}}/{{stream_id}}`\n\nWhen using the `pulumi import` command, Stream can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:datastream/stream:Stream default projects/{{project}}/locations/{{location}}/streams/{{stream_id}}\n```\n\n```sh\n$ pulumi import gcp:datastream/stream:Stream default {{project}}/{{location}}/{{stream_id}}\n```\n\n```sh\n$ pulumi import gcp:datastream/stream:Stream default {{location}}/{{stream_id}}\n```\n\n", "properties": { "backfillAll": { "$ref": "#/types/gcp:datastream/StreamBackfillAll:StreamBackfillAll", @@ -189523,7 +189523,7 @@ } }, "gcp:developerconnect/connection:Connection": { - "description": "## Example Usage\n\n### Developer Connect Connection Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_connection = new gcp.developerconnect.Connection(\"my-connection\", {\n location: \"us-central1\",\n connectionId: \"tf-test-connection\",\n githubConfig: {\n githubApp: \"DEVELOPER_CONNECT\",\n authorizerCredential: {\n oauthTokenSecretVersion: \"projects/devconnect-terraform-creds/secrets/tf-test-do-not-change-github-oauthtoken-e0b9e7/versions/1\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_connection = gcp.developerconnect.Connection(\"my-connection\",\n location=\"us-central1\",\n connection_id=\"tf-test-connection\",\n github_config={\n \"github_app\": \"DEVELOPER_CONNECT\",\n \"authorizer_credential\": {\n \"oauth_token_secret_version\": \"projects/devconnect-terraform-creds/secrets/tf-test-do-not-change-github-oauthtoken-e0b9e7/versions/1\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_connection = new Gcp.DeveloperConnect.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n ConnectionId = \"tf-test-connection\",\n GithubConfig = new Gcp.DeveloperConnect.Inputs.ConnectionGithubConfigArgs\n {\n GithubApp = \"DEVELOPER_CONNECT\",\n AuthorizerCredential = new Gcp.DeveloperConnect.Inputs.ConnectionGithubConfigAuthorizerCredentialArgs\n {\n OauthTokenSecretVersion = \"projects/devconnect-terraform-creds/secrets/tf-test-do-not-change-github-oauthtoken-e0b9e7/versions/1\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/developerconnect\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := developerconnect.NewConnection(ctx, \"my-connection\", \u0026developerconnect.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionId: pulumi.String(\"tf-test-connection\"),\n\t\t\tGithubConfig: \u0026developerconnect.ConnectionGithubConfigArgs{\n\t\t\t\tGithubApp: pulumi.String(\"DEVELOPER_CONNECT\"),\n\t\t\t\tAuthorizerCredential: \u0026developerconnect.ConnectionGithubConfigAuthorizerCredentialArgs{\n\t\t\t\t\tOauthTokenSecretVersion: pulumi.String(\"projects/devconnect-terraform-creds/secrets/tf-test-do-not-change-github-oauthtoken-e0b9e7/versions/1\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.developerconnect.Connection;\nimport com.pulumi.gcp.developerconnect.ConnectionArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGithubConfigArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGithubConfigAuthorizerCredentialArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .connectionId(\"tf-test-connection\")\n .githubConfig(ConnectionGithubConfigArgs.builder()\n .githubApp(\"DEVELOPER_CONNECT\")\n .authorizerCredential(ConnectionGithubConfigAuthorizerCredentialArgs.builder()\n .oauthTokenSecretVersion(\"projects/devconnect-terraform-creds/secrets/tf-test-do-not-change-github-oauthtoken-e0b9e7/versions/1\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-connection:\n type: gcp:developerconnect:Connection\n properties:\n location: us-central1\n connectionId: tf-test-connection\n githubConfig:\n githubApp: DEVELOPER_CONNECT\n authorizerCredential:\n oauthTokenSecretVersion: projects/devconnect-terraform-creds/secrets/tf-test-do-not-change-github-oauthtoken-e0b9e7/versions/1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Developer Connect Connection Github Doc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst github_token_secret = new gcp.secretmanager.Secret(\"github-token-secret\", {\n secretId: \"github-token-secret\",\n replication: {\n auto: {},\n },\n});\nconst github_token_secret_version = new gcp.secretmanager.SecretVersion(\"github-token-secret-version\", {\n secret: github_token_secret.id,\n secretData: std.file({\n input: \"my-github-token.txt\",\n }).then(invoke =\u003e invoke.result),\n});\nconst p4sa-secretAccessor = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/secretmanager.secretAccessor\",\n members: [\"serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com\"],\n }],\n});\nconst policy = new gcp.secretmanager.SecretIamPolicy(\"policy\", {\n secretId: github_token_secret.secretId,\n policyData: p4sa_secretAccessor.then(p4sa_secretAccessor =\u003e p4sa_secretAccessor.policyData),\n});\nconst my_connection = new gcp.developerconnect.Connection(\"my-connection\", {\n location: \"us-central1\",\n connectionId: \"my-connection\",\n githubConfig: {\n githubApp: \"DEVELOPER_CONNECT\",\n appInstallationId: \"123123\",\n authorizerCredential: {\n oauthTokenSecretVersion: github_token_secret_version.id,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ngithub_token_secret = gcp.secretmanager.Secret(\"github-token-secret\",\n secret_id=\"github-token-secret\",\n replication={\n \"auto\": {},\n })\ngithub_token_secret_version = gcp.secretmanager.SecretVersion(\"github-token-secret-version\",\n secret=github_token_secret.id,\n secret_data=std.file(input=\"my-github-token.txt\").result)\np4sa_secret_accessor = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/secretmanager.secretAccessor\",\n \"members\": [\"serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com\"],\n}])\npolicy = gcp.secretmanager.SecretIamPolicy(\"policy\",\n secret_id=github_token_secret.secret_id,\n policy_data=p4sa_secret_accessor.policy_data)\nmy_connection = gcp.developerconnect.Connection(\"my-connection\",\n location=\"us-central1\",\n connection_id=\"my-connection\",\n github_config={\n \"github_app\": \"DEVELOPER_CONNECT\",\n \"app_installation_id\": \"123123\",\n \"authorizer_credential\": {\n \"oauth_token_secret_version\": github_token_secret_version.id,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var github_token_secret = new Gcp.SecretManager.Secret(\"github-token-secret\", new()\n {\n SecretId = \"github-token-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var github_token_secret_version = new Gcp.SecretManager.SecretVersion(\"github-token-secret-version\", new()\n {\n Secret = github_token_secret.Id,\n SecretData = Std.File.Invoke(new()\n {\n Input = \"my-github-token.txt\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var p4sa_secretAccessor = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/secretmanager.secretAccessor\",\n Members = new[]\n {\n \"serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com\",\n },\n },\n },\n });\n\n var policy = new Gcp.SecretManager.SecretIamPolicy(\"policy\", new()\n {\n SecretId = github_token_secret.SecretId,\n PolicyData = p4sa_secretAccessor.Apply(p4sa_secretAccessor =\u003e p4sa_secretAccessor.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData)),\n });\n\n var my_connection = new Gcp.DeveloperConnect.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n ConnectionId = \"my-connection\",\n GithubConfig = new Gcp.DeveloperConnect.Inputs.ConnectionGithubConfigArgs\n {\n GithubApp = \"DEVELOPER_CONNECT\",\n AppInstallationId = \"123123\",\n AuthorizerCredential = new Gcp.DeveloperConnect.Inputs.ConnectionGithubConfigAuthorizerCredentialArgs\n {\n OauthTokenSecretVersion = github_token_secret_version.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/developerconnect\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := secretmanager.NewSecret(ctx, \"github-token-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"github-token-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"my-github-token.txt\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"github-token-secret-version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: github_token_secret.ID(),\n\t\t\tSecretData: pulumi.String(invokeFile.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tp4sa_secretAccessor, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/secretmanager.secretAccessor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamPolicy(ctx, \"policy\", \u0026secretmanager.SecretIamPolicyArgs{\n\t\t\tSecretId: github_token_secret.SecretId,\n\t\t\tPolicyData: pulumi.String(p4sa_secretAccessor.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = developerconnect.NewConnection(ctx, \"my-connection\", \u0026developerconnect.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tGithubConfig: \u0026developerconnect.ConnectionGithubConfigArgs{\n\t\t\t\tGithubApp: pulumi.String(\"DEVELOPER_CONNECT\"),\n\t\t\t\tAppInstallationId: pulumi.String(\"123123\"),\n\t\t\t\tAuthorizerCredential: \u0026developerconnect.ConnectionGithubConfigAuthorizerCredentialArgs{\n\t\t\t\t\tOauthTokenSecretVersion: github_token_secret_version.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicy;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicyArgs;\nimport com.pulumi.gcp.developerconnect.Connection;\nimport com.pulumi.gcp.developerconnect.ConnectionArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGithubConfigArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGithubConfigAuthorizerCredentialArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var github_token_secret = new Secret(\"github-token-secret\", SecretArgs.builder()\n .secretId(\"github-token-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var github_token_secret_version = new SecretVersion(\"github-token-secret-version\", SecretVersionArgs.builder()\n .secret(github_token_secret.id())\n .secretData(StdFunctions.file(FileArgs.builder()\n .input(\"my-github-token.txt\")\n .build()).result())\n .build());\n\n final var p4sa-secretAccessor = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/secretmanager.secretAccessor\")\n .members(\"serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com\")\n .build())\n .build());\n\n var policy = new SecretIamPolicy(\"policy\", SecretIamPolicyArgs.builder()\n .secretId(github_token_secret.secretId())\n .policyData(p4sa_secretAccessor.policyData())\n .build());\n\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .connectionId(\"my-connection\")\n .githubConfig(ConnectionGithubConfigArgs.builder()\n .githubApp(\"DEVELOPER_CONNECT\")\n .appInstallationId(123123)\n .authorizerCredential(ConnectionGithubConfigAuthorizerCredentialArgs.builder()\n .oauthTokenSecretVersion(github_token_secret_version.id())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n github-token-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: github-token-secret\n replication:\n auto: {}\n github-token-secret-version:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"github-token-secret\"].id}\n secretData:\n fn::invoke:\n Function: std:file\n Arguments:\n input: my-github-token.txt\n Return: result\n policy:\n type: gcp:secretmanager:SecretIamPolicy\n properties:\n secretId: ${[\"github-token-secret\"].secretId}\n policyData: ${[\"p4sa-secretAccessor\"].policyData}\n my-connection:\n type: gcp:developerconnect:Connection\n properties:\n location: us-central1\n connectionId: my-connection\n githubConfig:\n githubApp: DEVELOPER_CONNECT\n appInstallationId: 123123\n authorizerCredential:\n oauthTokenSecretVersion: ${[\"github-token-secret-version\"].id}\nvariables:\n p4sa-secretAccessor:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/secretmanager.secretAccessor\n members:\n - serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nConnection can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/connections/{{connection_id}}`\n\n* `{{project}}/{{location}}/{{connection_id}}`\n\n* `{{location}}/{{connection_id}}`\n\nWhen using the `pulumi import` command, Connection can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:developerconnect/connection:Connection default projects/{{project}}/locations/{{location}}/connections/{{connection_id}}\n```\n\n```sh\n$ pulumi import gcp:developerconnect/connection:Connection default {{project}}/{{location}}/{{connection_id}}\n```\n\n```sh\n$ pulumi import gcp:developerconnect/connection:Connection default {{location}}/{{connection_id}}\n```\n\n", + "description": "## Example Usage\n\n### Developer Connect Connection Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_connection = new gcp.developerconnect.Connection(\"my-connection\", {\n location: \"us-central1\",\n connectionId: \"tf-test-connection\",\n githubConfig: {\n githubApp: \"DEVELOPER_CONNECT\",\n authorizerCredential: {\n oauthTokenSecretVersion: \"projects/devconnect-terraform-creds/secrets/tf-test-do-not-change-github-oauthtoken-e0b9e7/versions/1\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_connection = gcp.developerconnect.Connection(\"my-connection\",\n location=\"us-central1\",\n connection_id=\"tf-test-connection\",\n github_config={\n \"github_app\": \"DEVELOPER_CONNECT\",\n \"authorizer_credential\": {\n \"oauth_token_secret_version\": \"projects/devconnect-terraform-creds/secrets/tf-test-do-not-change-github-oauthtoken-e0b9e7/versions/1\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_connection = new Gcp.DeveloperConnect.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n ConnectionId = \"tf-test-connection\",\n GithubConfig = new Gcp.DeveloperConnect.Inputs.ConnectionGithubConfigArgs\n {\n GithubApp = \"DEVELOPER_CONNECT\",\n AuthorizerCredential = new Gcp.DeveloperConnect.Inputs.ConnectionGithubConfigAuthorizerCredentialArgs\n {\n OauthTokenSecretVersion = \"projects/devconnect-terraform-creds/secrets/tf-test-do-not-change-github-oauthtoken-e0b9e7/versions/1\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/developerconnect\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := developerconnect.NewConnection(ctx, \"my-connection\", \u0026developerconnect.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionId: pulumi.String(\"tf-test-connection\"),\n\t\t\tGithubConfig: \u0026developerconnect.ConnectionGithubConfigArgs{\n\t\t\t\tGithubApp: pulumi.String(\"DEVELOPER_CONNECT\"),\n\t\t\t\tAuthorizerCredential: \u0026developerconnect.ConnectionGithubConfigAuthorizerCredentialArgs{\n\t\t\t\t\tOauthTokenSecretVersion: pulumi.String(\"projects/devconnect-terraform-creds/secrets/tf-test-do-not-change-github-oauthtoken-e0b9e7/versions/1\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.developerconnect.Connection;\nimport com.pulumi.gcp.developerconnect.ConnectionArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGithubConfigArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGithubConfigAuthorizerCredentialArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .connectionId(\"tf-test-connection\")\n .githubConfig(ConnectionGithubConfigArgs.builder()\n .githubApp(\"DEVELOPER_CONNECT\")\n .authorizerCredential(ConnectionGithubConfigAuthorizerCredentialArgs.builder()\n .oauthTokenSecretVersion(\"projects/devconnect-terraform-creds/secrets/tf-test-do-not-change-github-oauthtoken-e0b9e7/versions/1\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-connection:\n type: gcp:developerconnect:Connection\n properties:\n location: us-central1\n connectionId: tf-test-connection\n githubConfig:\n githubApp: DEVELOPER_CONNECT\n authorizerCredential:\n oauthTokenSecretVersion: projects/devconnect-terraform-creds/secrets/tf-test-do-not-change-github-oauthtoken-e0b9e7/versions/1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Developer Connect Connection Github Doc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst github_token_secret = new gcp.secretmanager.Secret(\"github-token-secret\", {\n secretId: \"github-token-secret\",\n replication: {\n auto: {},\n },\n});\nconst github_token_secret_version = new gcp.secretmanager.SecretVersion(\"github-token-secret-version\", {\n secret: github_token_secret.id,\n secretData: std.file({\n input: \"my-github-token.txt\",\n }).then(invoke =\u003e invoke.result),\n});\nconst p4sa-secretAccessor = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/secretmanager.secretAccessor\",\n members: [\"serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com\"],\n }],\n});\nconst policy = new gcp.secretmanager.SecretIamPolicy(\"policy\", {\n secretId: github_token_secret.secretId,\n policyData: p4sa_secretAccessor.then(p4sa_secretAccessor =\u003e p4sa_secretAccessor.policyData),\n});\nconst my_connection = new gcp.developerconnect.Connection(\"my-connection\", {\n location: \"us-central1\",\n connectionId: \"my-connection\",\n githubConfig: {\n githubApp: \"DEVELOPER_CONNECT\",\n appInstallationId: \"123123\",\n authorizerCredential: {\n oauthTokenSecretVersion: github_token_secret_version.id,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ngithub_token_secret = gcp.secretmanager.Secret(\"github-token-secret\",\n secret_id=\"github-token-secret\",\n replication={\n \"auto\": {},\n })\ngithub_token_secret_version = gcp.secretmanager.SecretVersion(\"github-token-secret-version\",\n secret=github_token_secret.id,\n secret_data=std.file(input=\"my-github-token.txt\").result)\np4sa_secret_accessor = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/secretmanager.secretAccessor\",\n \"members\": [\"serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com\"],\n}])\npolicy = gcp.secretmanager.SecretIamPolicy(\"policy\",\n secret_id=github_token_secret.secret_id,\n policy_data=p4sa_secret_accessor.policy_data)\nmy_connection = gcp.developerconnect.Connection(\"my-connection\",\n location=\"us-central1\",\n connection_id=\"my-connection\",\n github_config={\n \"github_app\": \"DEVELOPER_CONNECT\",\n \"app_installation_id\": \"123123\",\n \"authorizer_credential\": {\n \"oauth_token_secret_version\": github_token_secret_version.id,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var github_token_secret = new Gcp.SecretManager.Secret(\"github-token-secret\", new()\n {\n SecretId = \"github-token-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var github_token_secret_version = new Gcp.SecretManager.SecretVersion(\"github-token-secret-version\", new()\n {\n Secret = github_token_secret.Id,\n SecretData = Std.File.Invoke(new()\n {\n Input = \"my-github-token.txt\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var p4sa_secretAccessor = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/secretmanager.secretAccessor\",\n Members = new[]\n {\n \"serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com\",\n },\n },\n },\n });\n\n var policy = new Gcp.SecretManager.SecretIamPolicy(\"policy\", new()\n {\n SecretId = github_token_secret.SecretId,\n PolicyData = p4sa_secretAccessor.Apply(p4sa_secretAccessor =\u003e p4sa_secretAccessor.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData)),\n });\n\n var my_connection = new Gcp.DeveloperConnect.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n ConnectionId = \"my-connection\",\n GithubConfig = new Gcp.DeveloperConnect.Inputs.ConnectionGithubConfigArgs\n {\n GithubApp = \"DEVELOPER_CONNECT\",\n AppInstallationId = \"123123\",\n AuthorizerCredential = new Gcp.DeveloperConnect.Inputs.ConnectionGithubConfigAuthorizerCredentialArgs\n {\n OauthTokenSecretVersion = github_token_secret_version.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/developerconnect\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := secretmanager.NewSecret(ctx, \"github-token-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"github-token-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: \u0026secretmanager.SecretReplicationAutoArgs{},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"my-github-token.txt\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"github-token-secret-version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: github_token_secret.ID(),\n\t\t\tSecretData: pulumi.String(invokeFile.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tp4sa_secretAccessor, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/secretmanager.secretAccessor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamPolicy(ctx, \"policy\", \u0026secretmanager.SecretIamPolicyArgs{\n\t\t\tSecretId: github_token_secret.SecretId,\n\t\t\tPolicyData: pulumi.String(p4sa_secretAccessor.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = developerconnect.NewConnection(ctx, \"my-connection\", \u0026developerconnect.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tGithubConfig: \u0026developerconnect.ConnectionGithubConfigArgs{\n\t\t\t\tGithubApp: pulumi.String(\"DEVELOPER_CONNECT\"),\n\t\t\t\tAppInstallationId: pulumi.String(\"123123\"),\n\t\t\t\tAuthorizerCredential: \u0026developerconnect.ConnectionGithubConfigAuthorizerCredentialArgs{\n\t\t\t\t\tOauthTokenSecretVersion: github_token_secret_version.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicy;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicyArgs;\nimport com.pulumi.gcp.developerconnect.Connection;\nimport com.pulumi.gcp.developerconnect.ConnectionArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGithubConfigArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGithubConfigAuthorizerCredentialArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var github_token_secret = new Secret(\"github-token-secret\", SecretArgs.builder()\n .secretId(\"github-token-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var github_token_secret_version = new SecretVersion(\"github-token-secret-version\", SecretVersionArgs.builder()\n .secret(github_token_secret.id())\n .secretData(StdFunctions.file(FileArgs.builder()\n .input(\"my-github-token.txt\")\n .build()).result())\n .build());\n\n final var p4sa-secretAccessor = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/secretmanager.secretAccessor\")\n .members(\"serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com\")\n .build())\n .build());\n\n var policy = new SecretIamPolicy(\"policy\", SecretIamPolicyArgs.builder()\n .secretId(github_token_secret.secretId())\n .policyData(p4sa_secretAccessor.policyData())\n .build());\n\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .connectionId(\"my-connection\")\n .githubConfig(ConnectionGithubConfigArgs.builder()\n .githubApp(\"DEVELOPER_CONNECT\")\n .appInstallationId(123123)\n .authorizerCredential(ConnectionGithubConfigAuthorizerCredentialArgs.builder()\n .oauthTokenSecretVersion(github_token_secret_version.id())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n github-token-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: github-token-secret\n replication:\n auto: {}\n github-token-secret-version:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"github-token-secret\"].id}\n secretData:\n fn::invoke:\n Function: std:file\n Arguments:\n input: my-github-token.txt\n Return: result\n policy:\n type: gcp:secretmanager:SecretIamPolicy\n properties:\n secretId: ${[\"github-token-secret\"].secretId}\n policyData: ${[\"p4sa-secretAccessor\"].policyData}\n my-connection:\n type: gcp:developerconnect:Connection\n properties:\n location: us-central1\n connectionId: my-connection\n githubConfig:\n githubApp: DEVELOPER_CONNECT\n appInstallationId: 123123\n authorizerCredential:\n oauthTokenSecretVersion: ${[\"github-token-secret-version\"].id}\nvariables:\n p4sa-secretAccessor:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/secretmanager.secretAccessor\n members:\n - serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nConnection can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/connections/{{connection_id}}`\n\n* `{{project}}/{{location}}/{{connection_id}}`\n\n* `{{location}}/{{connection_id}}`\n\nWhen using the `pulumi import` command, Connection can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:developerconnect/connection:Connection default projects/{{project}}/locations/{{location}}/connections/{{connection_id}}\n```\n\n```sh\n$ pulumi import gcp:developerconnect/connection:Connection default {{project}}/{{location}}/{{connection_id}}\n```\n\n```sh\n$ pulumi import gcp:developerconnect/connection:Connection default {{location}}/{{connection_id}}\n```\n\n", "properties": { "annotations": { "type": "object", @@ -190730,7 +190730,7 @@ } }, "gcp:diagflow/cxFlow:CxFlow": { - "description": "Flows represents the conversation flows when you build your chatbot agent.\n\n\nTo get more information about Flow, see:\n\n* [API documentation](https://cloud.google.com/dialogflow/cx/docs/reference/rest/v3/projects.locations.agents.flows)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dialogflow/cx/docs)\n\n## Example Usage\n\n### Dialogflowcx Flow Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst agent = new gcp.diagflow.CxAgent(\"agent\", {\n displayName: \"dialogflowcx-agent\",\n location: \"global\",\n defaultLanguageCode: \"en\",\n supportedLanguageCodes: [\n \"fr\",\n \"de\",\n \"es\",\n ],\n timeZone: \"America/New_York\",\n description: \"Example description.\",\n avatarUri: \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enableStackdriverLogging: true,\n enableSpellCorrection: true,\n speechToTextSettings: {\n enableSpeechAdaptation: true,\n },\n});\nconst basicFlow = new gcp.diagflow.CxFlow(\"basic_flow\", {\n parent: agent.id,\n displayName: \"MyFlow\",\n description: \"Test Flow\",\n nluSettings: {\n classificationThreshold: 0.3,\n modelType: \"MODEL_TYPE_STANDARD\",\n },\n eventHandlers: [\n {\n event: \"custom-event\",\n triggerFulfillment: {\n returnPartialResponses: false,\n messages: [{\n text: {\n texts: [\"I didn't get that. Can you say it again?\"],\n },\n }],\n },\n },\n {\n event: \"sys.no-match-default\",\n triggerFulfillment: {\n returnPartialResponses: false,\n messages: [{\n text: {\n texts: [\"Sorry, could you say that again?\"],\n },\n }],\n },\n },\n {\n event: \"sys.no-input-default\",\n triggerFulfillment: {\n returnPartialResponses: false,\n messages: [{\n text: {\n texts: [\"One more time?\"],\n },\n }],\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nagent = gcp.diagflow.CxAgent(\"agent\",\n display_name=\"dialogflowcx-agent\",\n location=\"global\",\n default_language_code=\"en\",\n supported_language_codes=[\n \"fr\",\n \"de\",\n \"es\",\n ],\n time_zone=\"America/New_York\",\n description=\"Example description.\",\n avatar_uri=\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enable_stackdriver_logging=True,\n enable_spell_correction=True,\n speech_to_text_settings={\n \"enable_speech_adaptation\": True,\n })\nbasic_flow = gcp.diagflow.CxFlow(\"basic_flow\",\n parent=agent.id,\n display_name=\"MyFlow\",\n description=\"Test Flow\",\n nlu_settings={\n \"classification_threshold\": 0.3,\n \"model_type\": \"MODEL_TYPE_STANDARD\",\n },\n event_handlers=[\n {\n \"event\": \"custom-event\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": False,\n \"messages\": [{\n \"text\": {\n \"texts\": [\"I didn't get that. Can you say it again?\"],\n },\n }],\n },\n },\n {\n \"event\": \"sys.no-match-default\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": False,\n \"messages\": [{\n \"text\": {\n \"texts\": [\"Sorry, could you say that again?\"],\n },\n }],\n },\n },\n {\n \"event\": \"sys.no-input-default\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": False,\n \"messages\": [{\n \"text\": {\n \"texts\": [\"One more time?\"],\n },\n }],\n },\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var agent = new Gcp.Diagflow.CxAgent(\"agent\", new()\n {\n DisplayName = \"dialogflowcx-agent\",\n Location = \"global\",\n DefaultLanguageCode = \"en\",\n SupportedLanguageCodes = new[]\n {\n \"fr\",\n \"de\",\n \"es\",\n },\n TimeZone = \"America/New_York\",\n Description = \"Example description.\",\n AvatarUri = \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n EnableStackdriverLogging = true,\n EnableSpellCorrection = true,\n SpeechToTextSettings = new Gcp.Diagflow.Inputs.CxAgentSpeechToTextSettingsArgs\n {\n EnableSpeechAdaptation = true,\n },\n });\n\n var basicFlow = new Gcp.Diagflow.CxFlow(\"basic_flow\", new()\n {\n Parent = agent.Id,\n DisplayName = \"MyFlow\",\n Description = \"Test Flow\",\n NluSettings = new Gcp.Diagflow.Inputs.CxFlowNluSettingsArgs\n {\n ClassificationThreshold = 0.3,\n ModelType = \"MODEL_TYPE_STANDARD\",\n },\n EventHandlers = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs\n {\n Event = \"custom-event\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = false,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"I didn't get that. Can you say it again?\",\n },\n },\n },\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs\n {\n Event = \"sys.no-match-default\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = false,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Sorry, could you say that again?\",\n },\n },\n },\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs\n {\n Event = \"sys.no-input-default\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = false,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"One more time?\",\n },\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/diagflow\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tagent, err := diagflow.NewCxAgent(ctx, \"agent\", \u0026diagflow.CxAgentArgs{\n\t\t\tDisplayName: pulumi.String(\"dialogflowcx-agent\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDefaultLanguageCode: pulumi.String(\"en\"),\n\t\t\tSupportedLanguageCodes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"fr\"),\n\t\t\t\tpulumi.String(\"de\"),\n\t\t\t\tpulumi.String(\"es\"),\n\t\t\t},\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tDescription: pulumi.String(\"Example description.\"),\n\t\t\tAvatarUri: pulumi.String(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableSpellCorrection: pulumi.Bool(true),\n\t\t\tSpeechToTextSettings: \u0026diagflow.CxAgentSpeechToTextSettingsArgs{\n\t\t\t\tEnableSpeechAdaptation: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = diagflow.NewCxFlow(ctx, \"basic_flow\", \u0026diagflow.CxFlowArgs{\n\t\t\tParent: agent.ID(),\n\t\t\tDisplayName: pulumi.String(\"MyFlow\"),\n\t\t\tDescription: pulumi.String(\"Test Flow\"),\n\t\t\tNluSettings: \u0026diagflow.CxFlowNluSettingsArgs{\n\t\t\t\tClassificationThreshold: pulumi.Float64(0.3),\n\t\t\t\tModelType: pulumi.String(\"MODEL_TYPE_STANDARD\"),\n\t\t\t},\n\t\t\tEventHandlers: diagflow.CxFlowEventHandlerArray{\n\t\t\t\t\u0026diagflow.CxFlowEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"custom-event\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(false),\n\t\t\t\t\t\tMessages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"I didn't get that. Can you say it again?\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026diagflow.CxFlowEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"sys.no-match-default\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(false),\n\t\t\t\t\t\tMessages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Sorry, could you say that again?\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026diagflow.CxFlowEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"sys.no-input-default\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(false),\n\t\t\t\t\t\tMessages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"One more time?\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.diagflow.CxAgent;\nimport com.pulumi.gcp.diagflow.CxAgentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxAgentSpeechToTextSettingsArgs;\nimport com.pulumi.gcp.diagflow.CxFlow;\nimport com.pulumi.gcp.diagflow.CxFlowArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowNluSettingsArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowEventHandlerArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowEventHandlerTriggerFulfillmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var agent = new CxAgent(\"agent\", CxAgentArgs.builder()\n .displayName(\"dialogflowcx-agent\")\n .location(\"global\")\n .defaultLanguageCode(\"en\")\n .supportedLanguageCodes( \n \"fr\",\n \"de\",\n \"es\")\n .timeZone(\"America/New_York\")\n .description(\"Example description.\")\n .avatarUri(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\")\n .enableStackdriverLogging(true)\n .enableSpellCorrection(true)\n .speechToTextSettings(CxAgentSpeechToTextSettingsArgs.builder()\n .enableSpeechAdaptation(true)\n .build())\n .build());\n\n var basicFlow = new CxFlow(\"basicFlow\", CxFlowArgs.builder()\n .parent(agent.id())\n .displayName(\"MyFlow\")\n .description(\"Test Flow\")\n .nluSettings(CxFlowNluSettingsArgs.builder()\n .classificationThreshold(0.3)\n .modelType(\"MODEL_TYPE_STANDARD\")\n .build())\n .eventHandlers( \n CxFlowEventHandlerArgs.builder()\n .event(\"custom-event\")\n .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(false)\n .messages(CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"I didn't get that. Can you say it again?\")\n .build())\n .build())\n .build())\n .build(),\n CxFlowEventHandlerArgs.builder()\n .event(\"sys.no-match-default\")\n .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(false)\n .messages(CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"Sorry, could you say that again?\")\n .build())\n .build())\n .build())\n .build(),\n CxFlowEventHandlerArgs.builder()\n .event(\"sys.no-input-default\")\n .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(false)\n .messages(CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"One more time?\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n agent:\n type: gcp:diagflow:CxAgent\n properties:\n displayName: dialogflowcx-agent\n location: global\n defaultLanguageCode: en\n supportedLanguageCodes:\n - fr\n - de\n - es\n timeZone: America/New_York\n description: Example description.\n avatarUri: https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\n enableStackdriverLogging: true\n enableSpellCorrection: true\n speechToTextSettings:\n enableSpeechAdaptation: true\n basicFlow:\n type: gcp:diagflow:CxFlow\n name: basic_flow\n properties:\n parent: ${agent.id}\n displayName: MyFlow\n description: Test Flow\n nluSettings:\n classificationThreshold: 0.3\n modelType: MODEL_TYPE_STANDARD\n eventHandlers:\n - event: custom-event\n triggerFulfillment:\n returnPartialResponses: false\n messages:\n - text:\n texts:\n - I didn't get that. Can you say it again?\n - event: sys.no-match-default\n triggerFulfillment:\n returnPartialResponses: false\n messages:\n - text:\n texts:\n - Sorry, could you say that again?\n - event: sys.no-input-default\n triggerFulfillment:\n returnPartialResponses: false\n messages:\n - text:\n texts:\n - One more time?\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dialogflowcx Flow Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst agent = new gcp.diagflow.CxAgent(\"agent\", {\n displayName: \"dialogflowcx-agent\",\n location: \"global\",\n defaultLanguageCode: \"en\",\n supportedLanguageCodes: [\n \"fr\",\n \"de\",\n \"es\",\n ],\n timeZone: \"America/New_York\",\n description: \"Example description.\",\n avatarUri: \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enableStackdriverLogging: true,\n enableSpellCorrection: true,\n speechToTextSettings: {\n enableSpeechAdaptation: true,\n },\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"dialogflowcx-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst basicFlow = new gcp.diagflow.CxFlow(\"basic_flow\", {\n parent: agent.id,\n displayName: \"MyFlow\",\n description: \"Test Flow\",\n nluSettings: {\n classificationThreshold: 0.3,\n modelType: \"MODEL_TYPE_STANDARD\",\n },\n eventHandlers: [\n {\n event: \"custom-event\",\n triggerFulfillment: {\n returnPartialResponses: false,\n messages: [{\n text: {\n texts: [\"I didn't get that. Can you say it again?\"],\n },\n }],\n },\n },\n {\n event: \"sys.no-match-default\",\n triggerFulfillment: {\n returnPartialResponses: false,\n messages: [{\n text: {\n texts: [\"Sorry, could you say that again?\"],\n },\n }],\n },\n },\n {\n event: \"sys.no-input-default\",\n triggerFulfillment: {\n returnPartialResponses: false,\n messages: [{\n text: {\n texts: [\"One more time?\"],\n },\n }],\n },\n },\n {\n event: \"another-event\",\n triggerFulfillment: {\n returnPartialResponses: true,\n messages: [\n {\n channel: \"some-channel\",\n text: {\n texts: [\"Some text\"],\n },\n },\n {\n payload: \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n conversationSuccess: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n outputAudioText: {\n text: \"some output text\",\n },\n },\n {\n outputAudioText: {\n ssml: \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n liveAgentHandoff: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n playAudio: {\n audioUri: \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n telephonyTransferCall: {\n phoneNumber: \"1-234-567-8901\",\n },\n },\n ],\n setParameterActions: [\n {\n parameter: \"some-param\",\n value: \"123.45\",\n },\n {\n parameter: \"another-param\",\n value: JSON.stringify(\"abc\"),\n },\n {\n parameter: \"other-param\",\n value: JSON.stringify([\"foo\"]),\n },\n ],\n conditionalCases: [{\n cases: JSON.stringify([\n {\n condition: \"$sys.func.RAND() \u003c 0.5\",\n caseContent: [\n {\n message: {\n text: {\n text: [\"First case\"],\n },\n },\n },\n {\n additionalCases: {\n cases: [{\n condition: \"$sys.func.RAND() \u003c 0.2\",\n caseContent: [{\n message: {\n text: {\n text: [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n caseContent: [{\n message: {\n text: {\n text: [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n },\n ],\n transitionRoutes: [{\n condition: \"true\",\n triggerFulfillment: {\n returnPartialResponses: true,\n messages: [\n {\n channel: \"some-channel\",\n text: {\n texts: [\"Some text\"],\n },\n },\n {\n payload: \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n conversationSuccess: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n outputAudioText: {\n text: \"some output text\",\n },\n },\n {\n outputAudioText: {\n ssml: \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n liveAgentHandoff: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n playAudio: {\n audioUri: \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n telephonyTransferCall: {\n phoneNumber: \"1-234-567-8901\",\n },\n },\n ],\n setParameterActions: [\n {\n parameter: \"some-param\",\n value: \"123.45\",\n },\n {\n parameter: \"another-param\",\n value: JSON.stringify(\"abc\"),\n },\n {\n parameter: \"other-param\",\n value: JSON.stringify([\"foo\"]),\n },\n ],\n conditionalCases: [{\n cases: JSON.stringify([\n {\n condition: \"$sys.func.RAND() \u003c 0.5\",\n caseContent: [\n {\n message: {\n text: {\n text: [\"First case\"],\n },\n },\n },\n {\n additionalCases: {\n cases: [{\n condition: \"$sys.func.RAND() \u003c 0.2\",\n caseContent: [{\n message: {\n text: {\n text: [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n caseContent: [{\n message: {\n text: {\n text: [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n targetFlow: agent.startFlow,\n }],\n advancedSettings: {\n audioExportGcsDestination: {\n uri: pulumi.interpolate`${bucket.url}/prefix-`,\n },\n dtmfSettings: {\n enabled: true,\n maxDigits: 1,\n finishDigit: \"#\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\nagent = gcp.diagflow.CxAgent(\"agent\",\n display_name=\"dialogflowcx-agent\",\n location=\"global\",\n default_language_code=\"en\",\n supported_language_codes=[\n \"fr\",\n \"de\",\n \"es\",\n ],\n time_zone=\"America/New_York\",\n description=\"Example description.\",\n avatar_uri=\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enable_stackdriver_logging=True,\n enable_spell_correction=True,\n speech_to_text_settings={\n \"enable_speech_adaptation\": True,\n })\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"dialogflowcx-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nbasic_flow = gcp.diagflow.CxFlow(\"basic_flow\",\n parent=agent.id,\n display_name=\"MyFlow\",\n description=\"Test Flow\",\n nlu_settings={\n \"classification_threshold\": 0.3,\n \"model_type\": \"MODEL_TYPE_STANDARD\",\n },\n event_handlers=[\n {\n \"event\": \"custom-event\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": False,\n \"messages\": [{\n \"text\": {\n \"texts\": [\"I didn't get that. Can you say it again?\"],\n },\n }],\n },\n },\n {\n \"event\": \"sys.no-match-default\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": False,\n \"messages\": [{\n \"text\": {\n \"texts\": [\"Sorry, could you say that again?\"],\n },\n }],\n },\n },\n {\n \"event\": \"sys.no-input-default\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": False,\n \"messages\": [{\n \"text\": {\n \"texts\": [\"One more time?\"],\n },\n }],\n },\n },\n {\n \"event\": \"another-event\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": True,\n \"messages\": [\n {\n \"channel\": \"some-channel\",\n \"text\": {\n \"texts\": [\"Some text\"],\n },\n },\n {\n \"payload\": \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n \"conversation_success\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"output_audio_text\": {\n \"text\": \"some output text\",\n },\n },\n {\n \"output_audio_text\": {\n \"ssml\": \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n \"live_agent_handoff\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"play_audio\": {\n \"audio_uri\": \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n \"telephony_transfer_call\": {\n \"phone_number\": \"1-234-567-8901\",\n },\n },\n ],\n \"set_parameter_actions\": [\n {\n \"parameter\": \"some-param\",\n \"value\": \"123.45\",\n },\n {\n \"parameter\": \"another-param\",\n \"value\": json.dumps(\"abc\"),\n },\n {\n \"parameter\": \"other-param\",\n \"value\": json.dumps([\"foo\"]),\n },\n ],\n \"conditional_cases\": [{\n \"cases\": json.dumps([\n {\n \"condition\": \"$sys.func.RAND() \u003c 0.5\",\n \"case_content\": [\n {\n \"message\": {\n \"text\": {\n \"text\": [\"First case\"],\n },\n },\n },\n {\n \"additionalCases\": {\n \"cases\": [{\n \"condition\": \"$sys.func.RAND() \u003c 0.2\",\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n },\n ],\n transition_routes=[{\n \"condition\": \"true\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": True,\n \"messages\": [\n {\n \"channel\": \"some-channel\",\n \"text\": {\n \"texts\": [\"Some text\"],\n },\n },\n {\n \"payload\": \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n \"conversation_success\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"output_audio_text\": {\n \"text\": \"some output text\",\n },\n },\n {\n \"output_audio_text\": {\n \"ssml\": \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n \"live_agent_handoff\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"play_audio\": {\n \"audio_uri\": \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n \"telephony_transfer_call\": {\n \"phone_number\": \"1-234-567-8901\",\n },\n },\n ],\n \"set_parameter_actions\": [\n {\n \"parameter\": \"some-param\",\n \"value\": \"123.45\",\n },\n {\n \"parameter\": \"another-param\",\n \"value\": json.dumps(\"abc\"),\n },\n {\n \"parameter\": \"other-param\",\n \"value\": json.dumps([\"foo\"]),\n },\n ],\n \"conditional_cases\": [{\n \"cases\": json.dumps([\n {\n \"condition\": \"$sys.func.RAND() \u003c 0.5\",\n \"case_content\": [\n {\n \"message\": {\n \"text\": {\n \"text\": [\"First case\"],\n },\n },\n },\n {\n \"additionalCases\": {\n \"cases\": [{\n \"condition\": \"$sys.func.RAND() \u003c 0.2\",\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n \"target_flow\": agent.start_flow,\n }],\n advanced_settings={\n \"audio_export_gcs_destination\": {\n \"uri\": bucket.url.apply(lambda url: f\"{url}/prefix-\"),\n },\n \"dtmf_settings\": {\n \"enabled\": True,\n \"max_digits\": 1,\n \"finish_digit\": \"#\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var agent = new Gcp.Diagflow.CxAgent(\"agent\", new()\n {\n DisplayName = \"dialogflowcx-agent\",\n Location = \"global\",\n DefaultLanguageCode = \"en\",\n SupportedLanguageCodes = new[]\n {\n \"fr\",\n \"de\",\n \"es\",\n },\n TimeZone = \"America/New_York\",\n Description = \"Example description.\",\n AvatarUri = \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n EnableStackdriverLogging = true,\n EnableSpellCorrection = true,\n SpeechToTextSettings = new Gcp.Diagflow.Inputs.CxAgentSpeechToTextSettingsArgs\n {\n EnableSpeechAdaptation = true,\n },\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = \"dialogflowcx-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var basicFlow = new Gcp.Diagflow.CxFlow(\"basic_flow\", new()\n {\n Parent = agent.Id,\n DisplayName = \"MyFlow\",\n Description = \"Test Flow\",\n NluSettings = new Gcp.Diagflow.Inputs.CxFlowNluSettingsArgs\n {\n ClassificationThreshold = 0.3,\n ModelType = \"MODEL_TYPE_STANDARD\",\n },\n EventHandlers = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs\n {\n Event = \"custom-event\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = false,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"I didn't get that. Can you say it again?\",\n },\n },\n },\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs\n {\n Event = \"sys.no-match-default\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = false,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Sorry, could you say that again?\",\n },\n },\n },\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs\n {\n Event = \"sys.no-input-default\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = false,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"One more time?\",\n },\n },\n },\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs\n {\n Event = \"another-event\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = true,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Channel = \"some-channel\",\n Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Some text\",\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Payload = @\" {\"\"some-key\"\": \"\"some-value\"\", \"\"other-key\"\": [\"\"other-value\"\"]}\n\",\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n ConversationSuccess = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageConversationSuccessArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Text = \"some output text\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Ssml = @\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\"\"characters\"\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n PlayAudio = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessagePlayAudioArgs\n {\n AudioUri = \"http://example.com/some-audio-file.mp3\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs\n {\n PhoneNumber = \"1-234-567-8901\",\n },\n },\n },\n SetParameterActions = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"some-param\",\n Value = \"123.45\",\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"another-param\",\n Value = JsonSerializer.Serialize(\"abc\"),\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"other-param\",\n Value = JsonSerializer.Serialize(new[]\n {\n \"foo\",\n }),\n },\n },\n ConditionalCases = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentConditionalCaseArgs\n {\n Cases = JsonSerializer.Serialize(new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.5\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"First case\",\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"additionalCases\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"cases\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.2\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Nested case\",\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Final case\",\n },\n },\n },\n },\n },\n },\n }),\n },\n },\n },\n },\n },\n TransitionRoutes = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteArgs\n {\n Condition = \"true\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentArgs\n {\n ReturnPartialResponses = true,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n Channel = \"some-channel\",\n Text = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Some text\",\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n Payload = @\" {\"\"some-key\"\": \"\"some-value\"\", \"\"other-key\"\": [\"\"other-value\"\"]}\n\",\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n ConversationSuccess = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Text = \"some output text\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Ssml = @\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\"\"characters\"\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n PlayAudio = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessagePlayAudioArgs\n {\n AudioUri = \"http://example.com/some-audio-file.mp3\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs\n {\n PhoneNumber = \"1-234-567-8901\",\n },\n },\n },\n SetParameterActions = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"some-param\",\n Value = \"123.45\",\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"another-param\",\n Value = JsonSerializer.Serialize(\"abc\"),\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"other-param\",\n Value = JsonSerializer.Serialize(new[]\n {\n \"foo\",\n }),\n },\n },\n ConditionalCases = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentConditionalCaseArgs\n {\n Cases = JsonSerializer.Serialize(new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.5\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"First case\",\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"additionalCases\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"cases\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.2\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Nested case\",\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Final case\",\n },\n },\n },\n },\n },\n },\n }),\n },\n },\n },\n TargetFlow = agent.StartFlow,\n },\n },\n AdvancedSettings = new Gcp.Diagflow.Inputs.CxFlowAdvancedSettingsArgs\n {\n AudioExportGcsDestination = new Gcp.Diagflow.Inputs.CxFlowAdvancedSettingsAudioExportGcsDestinationArgs\n {\n Uri = bucket.Url.Apply(url =\u003e $\"{url}/prefix-\"),\n },\n DtmfSettings = new Gcp.Diagflow.Inputs.CxFlowAdvancedSettingsDtmfSettingsArgs\n {\n Enabled = true,\n MaxDigits = 1,\n FinishDigit = \"#\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/diagflow\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tagent, err := diagflow.NewCxAgent(ctx, \"agent\", \u0026diagflow.CxAgentArgs{\n\t\t\tDisplayName: pulumi.String(\"dialogflowcx-agent\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDefaultLanguageCode: pulumi.String(\"en\"),\n\t\t\tSupportedLanguageCodes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"fr\"),\n\t\t\t\tpulumi.String(\"de\"),\n\t\t\t\tpulumi.String(\"es\"),\n\t\t\t},\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tDescription: pulumi.String(\"Example description.\"),\n\t\t\tAvatarUri: pulumi.String(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableSpellCorrection: pulumi.Bool(true),\n\t\t\tSpeechToTextSettings: \u0026diagflow.CxAgentSpeechToTextSettingsArgs{\n\t\t\t\tEnableSpeechAdaptation: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"dialogflowcx-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(\"abc\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\ttmpJSON1, err := json.Marshal([]string{\n\t\t\t\"foo\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson1 := string(tmpJSON1)\n\t\ttmpJSON2, err := json.Marshal([]interface{}{\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.5\",\n\t\t\t\t\"caseContent\": []interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"First case\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"additionalCases\": map[string]interface{}{\n\t\t\t\t\t\t\t\"cases\": []map[string]interface{}{\n\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.2\",\n\t\t\t\t\t\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Nested case\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"Final case\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson2 := string(tmpJSON2)\n\t\ttmpJSON3, err := json.Marshal(\"abc\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson3 := string(tmpJSON3)\n\t\ttmpJSON4, err := json.Marshal([]string{\n\t\t\t\"foo\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson4 := string(tmpJSON4)\n\t\ttmpJSON5, err := json.Marshal([]interface{}{\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.5\",\n\t\t\t\t\"caseContent\": []interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"First case\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"additionalCases\": map[string]interface{}{\n\t\t\t\t\t\t\t\"cases\": []map[string]interface{}{\n\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.2\",\n\t\t\t\t\t\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Nested case\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"Final case\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson5 := string(tmpJSON5)\n\t\t_, err = diagflow.NewCxFlow(ctx, \"basic_flow\", \u0026diagflow.CxFlowArgs{\n\t\t\tParent: agent.ID(),\n\t\t\tDisplayName: pulumi.String(\"MyFlow\"),\n\t\t\tDescription: pulumi.String(\"Test Flow\"),\n\t\t\tNluSettings: \u0026diagflow.CxFlowNluSettingsArgs{\n\t\t\t\tClassificationThreshold: pulumi.Float64(0.3),\n\t\t\t\tModelType: pulumi.String(\"MODEL_TYPE_STANDARD\"),\n\t\t\t},\n\t\t\tEventHandlers: diagflow.CxFlowEventHandlerArray{\n\t\t\t\t\u0026diagflow.CxFlowEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"custom-event\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(false),\n\t\t\t\t\t\tMessages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"I didn't get that. Can you say it again?\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026diagflow.CxFlowEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"sys.no-match-default\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(false),\n\t\t\t\t\t\tMessages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Sorry, could you say that again?\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026diagflow.CxFlowEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"sys.no-input-default\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(false),\n\t\t\t\t\t\tMessages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"One more time?\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026diagflow.CxFlowEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"another-event\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(true),\n\t\t\t\t\t\tMessages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tChannel: pulumi.String(\"some-channel\"),\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Some text\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPayload: pulumi.String(\" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tConversationSuccess: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageConversationSuccessArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tText: pulumi.String(\"some output text\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tSsml: pulumi.String(\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tLiveAgentHandoff: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPlayAudio: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessagePlayAudioArgs{\n\t\t\t\t\t\t\t\t\tAudioUri: pulumi.String(\"http://example.com/some-audio-file.mp3\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tTelephonyTransferCall: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs{\n\t\t\t\t\t\t\t\t\tPhoneNumber: pulumi.String(\"1-234-567-8901\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSetParameterActions: diagflow.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"some-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"123.45\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"another-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json0),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"other-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tConditionalCases: diagflow.CxFlowEventHandlerTriggerFulfillmentConditionalCaseArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentConditionalCaseArgs{\n\t\t\t\t\t\t\t\tCases: pulumi.String(json2),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTransitionRoutes: diagflow.CxFlowTransitionRouteArray{\n\t\t\t\t\u0026diagflow.CxFlowTransitionRouteArgs{\n\t\t\t\t\tCondition: pulumi.String(\"true\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(true),\n\t\t\t\t\t\tMessages: diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tChannel: pulumi.String(\"some-channel\"),\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Some text\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPayload: pulumi.String(\" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tConversationSuccess: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tText: pulumi.String(\"some output text\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tSsml: pulumi.String(\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tLiveAgentHandoff: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPlayAudio: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessagePlayAudioArgs{\n\t\t\t\t\t\t\t\t\tAudioUri: pulumi.String(\"http://example.com/some-audio-file.mp3\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tTelephonyTransferCall: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs{\n\t\t\t\t\t\t\t\t\tPhoneNumber: pulumi.String(\"1-234-567-8901\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSetParameterActions: diagflow.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"some-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"123.45\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"another-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json3),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"other-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json4),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tConditionalCases: diagflow.CxFlowTransitionRouteTriggerFulfillmentConditionalCaseArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentConditionalCaseArgs{\n\t\t\t\t\t\t\t\tCases: pulumi.String(json5),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tTargetFlow: agent.StartFlow,\n\t\t\t\t},\n\t\t\t},\n\t\t\tAdvancedSettings: \u0026diagflow.CxFlowAdvancedSettingsArgs{\n\t\t\t\tAudioExportGcsDestination: \u0026diagflow.CxFlowAdvancedSettingsAudioExportGcsDestinationArgs{\n\t\t\t\t\tUri: bucket.Url.ApplyT(func(url string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"%v/prefix-\", url), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t\tDtmfSettings: \u0026diagflow.CxFlowAdvancedSettingsDtmfSettingsArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tMaxDigits: pulumi.Int(1),\n\t\t\t\t\tFinishDigit: pulumi.String(\"#\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.diagflow.CxAgent;\nimport com.pulumi.gcp.diagflow.CxAgentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxAgentSpeechToTextSettingsArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.diagflow.CxFlow;\nimport com.pulumi.gcp.diagflow.CxFlowArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowNluSettingsArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowEventHandlerArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowEventHandlerTriggerFulfillmentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowTransitionRouteArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowTransitionRouteTriggerFulfillmentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowAdvancedSettingsArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowAdvancedSettingsAudioExportGcsDestinationArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowAdvancedSettingsDtmfSettingsArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var agent = new CxAgent(\"agent\", CxAgentArgs.builder()\n .displayName(\"dialogflowcx-agent\")\n .location(\"global\")\n .defaultLanguageCode(\"en\")\n .supportedLanguageCodes( \n \"fr\",\n \"de\",\n \"es\")\n .timeZone(\"America/New_York\")\n .description(\"Example description.\")\n .avatarUri(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\")\n .enableStackdriverLogging(true)\n .enableSpellCorrection(true)\n .speechToTextSettings(CxAgentSpeechToTextSettingsArgs.builder()\n .enableSpeechAdaptation(true)\n .build())\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(\"dialogflowcx-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var basicFlow = new CxFlow(\"basicFlow\", CxFlowArgs.builder()\n .parent(agent.id())\n .displayName(\"MyFlow\")\n .description(\"Test Flow\")\n .nluSettings(CxFlowNluSettingsArgs.builder()\n .classificationThreshold(0.3)\n .modelType(\"MODEL_TYPE_STANDARD\")\n .build())\n .eventHandlers( \n CxFlowEventHandlerArgs.builder()\n .event(\"custom-event\")\n .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(false)\n .messages(CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"I didn't get that. Can you say it again?\")\n .build())\n .build())\n .build())\n .build(),\n CxFlowEventHandlerArgs.builder()\n .event(\"sys.no-match-default\")\n .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(false)\n .messages(CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"Sorry, could you say that again?\")\n .build())\n .build())\n .build())\n .build(),\n CxFlowEventHandlerArgs.builder()\n .event(\"sys.no-input-default\")\n .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(false)\n .messages(CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"One more time?\")\n .build())\n .build())\n .build())\n .build(),\n CxFlowEventHandlerArgs.builder()\n .event(\"another-event\")\n .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(true)\n .messages( \n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .channel(\"some-channel\")\n .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"Some text\")\n .build())\n .build(),\n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .payload(\"\"\"\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n \"\"\")\n .build(),\n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .conversationSuccess(CxFlowEventHandlerTriggerFulfillmentMessageConversationSuccessArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .text(\"some output text\")\n .build())\n .build(),\n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .ssml(\"\"\"\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n \"\"\")\n .build())\n .build(),\n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .liveAgentHandoff(CxFlowEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .playAudio(CxFlowEventHandlerTriggerFulfillmentMessagePlayAudioArgs.builder()\n .audioUri(\"http://example.com/some-audio-file.mp3\")\n .build())\n .build(),\n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .telephonyTransferCall(CxFlowEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs.builder()\n .phoneNumber(\"1-234-567-8901\")\n .build())\n .build())\n .setParameterActions( \n CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"some-param\")\n .value(\"123.45\")\n .build(),\n CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"another-param\")\n .value(serializeJson(\n \"abc\"))\n .build(),\n CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"other-param\")\n .value(serializeJson(\n jsonArray(\"foo\")))\n .build())\n .conditionalCases(CxFlowEventHandlerTriggerFulfillmentConditionalCaseArgs.builder()\n .cases(serializeJson(\n jsonArray(\n jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.5\"),\n jsonProperty(\"caseContent\", jsonArray(\n jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"First case\"))\n ))\n ))\n ), \n jsonObject(\n jsonProperty(\"additionalCases\", jsonObject(\n jsonProperty(\"cases\", jsonArray(jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.2\"),\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Nested case\"))\n ))\n ))\n )))\n )))\n ))\n )\n ))\n ), \n jsonObject(\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Final case\"))\n ))\n ))\n )))\n )\n )))\n .build())\n .build())\n .build())\n .transitionRoutes(CxFlowTransitionRouteArgs.builder()\n .condition(\"true\")\n .triggerFulfillment(CxFlowTransitionRouteTriggerFulfillmentArgs.builder()\n .returnPartialResponses(true)\n .messages( \n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .channel(\"some-channel\")\n .text(CxFlowTransitionRouteTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"Some text\")\n .build())\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .payload(\"\"\"\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n \"\"\")\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .conversationSuccess(CxFlowTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .text(\"some output text\")\n .build())\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .ssml(\"\"\"\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n \"\"\")\n .build())\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .liveAgentHandoff(CxFlowTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .playAudio(CxFlowTransitionRouteTriggerFulfillmentMessagePlayAudioArgs.builder()\n .audioUri(\"http://example.com/some-audio-file.mp3\")\n .build())\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .telephonyTransferCall(CxFlowTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs.builder()\n .phoneNumber(\"1-234-567-8901\")\n .build())\n .build())\n .setParameterActions( \n CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"some-param\")\n .value(\"123.45\")\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"another-param\")\n .value(serializeJson(\n \"abc\"))\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"other-param\")\n .value(serializeJson(\n jsonArray(\"foo\")))\n .build())\n .conditionalCases(CxFlowTransitionRouteTriggerFulfillmentConditionalCaseArgs.builder()\n .cases(serializeJson(\n jsonArray(\n jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.5\"),\n jsonProperty(\"caseContent\", jsonArray(\n jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"First case\"))\n ))\n ))\n ), \n jsonObject(\n jsonProperty(\"additionalCases\", jsonObject(\n jsonProperty(\"cases\", jsonArray(jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.2\"),\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Nested case\"))\n ))\n ))\n )))\n )))\n ))\n )\n ))\n ), \n jsonObject(\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Final case\"))\n ))\n ))\n )))\n )\n )))\n .build())\n .build())\n .targetFlow(agent.startFlow())\n .build())\n .advancedSettings(CxFlowAdvancedSettingsArgs.builder()\n .audioExportGcsDestination(CxFlowAdvancedSettingsAudioExportGcsDestinationArgs.builder()\n .uri(bucket.url().applyValue(url -\u003e String.format(\"%s/prefix-\", url)))\n .build())\n .dtmfSettings(CxFlowAdvancedSettingsDtmfSettingsArgs.builder()\n .enabled(true)\n .maxDigits(1)\n .finishDigit(\"#\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n agent:\n type: gcp:diagflow:CxAgent\n properties:\n displayName: dialogflowcx-agent\n location: global\n defaultLanguageCode: en\n supportedLanguageCodes:\n - fr\n - de\n - es\n timeZone: America/New_York\n description: Example description.\n avatarUri: https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\n enableStackdriverLogging: true\n enableSpellCorrection: true\n speechToTextSettings:\n enableSpeechAdaptation: true\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: dialogflowcx-bucket\n location: US\n uniformBucketLevelAccess: true\n basicFlow:\n type: gcp:diagflow:CxFlow\n name: basic_flow\n properties:\n parent: ${agent.id}\n displayName: MyFlow\n description: Test Flow\n nluSettings:\n classificationThreshold: 0.3\n modelType: MODEL_TYPE_STANDARD\n eventHandlers:\n - event: custom-event\n triggerFulfillment:\n returnPartialResponses: false\n messages:\n - text:\n texts:\n - I didn't get that. Can you say it again?\n - event: sys.no-match-default\n triggerFulfillment:\n returnPartialResponses: false\n messages:\n - text:\n texts:\n - Sorry, could you say that again?\n - event: sys.no-input-default\n triggerFulfillment:\n returnPartialResponses: false\n messages:\n - text:\n texts:\n - One more time?\n - event: another-event\n triggerFulfillment:\n returnPartialResponses: true\n messages:\n - channel: some-channel\n text:\n texts:\n - Some text\n - payload: |2\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n - conversationSuccess:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - outputAudioText:\n text: some output text\n - outputAudioText:\n ssml: |2\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n - liveAgentHandoff:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - playAudio:\n audioUri: http://example.com/some-audio-file.mp3\n - telephonyTransferCall:\n phoneNumber: 1-234-567-8901\n setParameterActions:\n - parameter: some-param\n value: '123.45'\n - parameter: another-param\n value:\n fn::toJSON: abc\n - parameter: other-param\n value:\n fn::toJSON:\n - foo\n conditionalCases:\n - cases:\n fn::toJSON:\n - condition: $sys.func.RAND() \u003c 0.5\n caseContent:\n - message:\n text:\n text:\n - First case\n - additionalCases:\n cases:\n - condition: $sys.func.RAND() \u003c 0.2\n caseContent:\n - message:\n text:\n text:\n - Nested case\n - caseContent:\n - message:\n text:\n text:\n - Final case\n transitionRoutes:\n - condition: 'true'\n triggerFulfillment:\n returnPartialResponses: true\n messages:\n - channel: some-channel\n text:\n texts:\n - Some text\n - payload: |2\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n - conversationSuccess:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - outputAudioText:\n text: some output text\n - outputAudioText:\n ssml: |2\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n - liveAgentHandoff:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - playAudio:\n audioUri: http://example.com/some-audio-file.mp3\n - telephonyTransferCall:\n phoneNumber: 1-234-567-8901\n setParameterActions:\n - parameter: some-param\n value: '123.45'\n - parameter: another-param\n value:\n fn::toJSON: abc\n - parameter: other-param\n value:\n fn::toJSON:\n - foo\n conditionalCases:\n - cases:\n fn::toJSON:\n - condition: $sys.func.RAND() \u003c 0.5\n caseContent:\n - message:\n text:\n text:\n - First case\n - additionalCases:\n cases:\n - condition: $sys.func.RAND() \u003c 0.2\n caseContent:\n - message:\n text:\n text:\n - Nested case\n - caseContent:\n - message:\n text:\n text:\n - Final case\n targetFlow: ${agent.startFlow}\n advancedSettings:\n audioExportGcsDestination:\n uri: ${bucket.url}/prefix-\n dtmfSettings:\n enabled: true\n maxDigits: 1\n finishDigit: '#'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFlow can be imported using any of these accepted formats:\n\n* `{{parent}}/flows/{{name}}`\n\n* `{{parent}}/{{name}}`\n\nWhen using the `pulumi import` command, Flow can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:diagflow/cxFlow:CxFlow default {{parent}}/flows/{{name}}\n```\n\n```sh\n$ pulumi import gcp:diagflow/cxFlow:CxFlow default {{parent}}/{{name}}\n```\n\n", + "description": "Flows represents the conversation flows when you build your chatbot agent.\n\n\nTo get more information about Flow, see:\n\n* [API documentation](https://cloud.google.com/dialogflow/cx/docs/reference/rest/v3/projects.locations.agents.flows)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dialogflow/cx/docs)\n\n## Example Usage\n\n### Dialogflowcx Flow Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst agent = new gcp.diagflow.CxAgent(\"agent\", {\n displayName: \"dialogflowcx-agent\",\n location: \"global\",\n defaultLanguageCode: \"en\",\n supportedLanguageCodes: [\n \"fr\",\n \"de\",\n \"es\",\n ],\n timeZone: \"America/New_York\",\n description: \"Example description.\",\n avatarUri: \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enableStackdriverLogging: true,\n enableSpellCorrection: true,\n speechToTextSettings: {\n enableSpeechAdaptation: true,\n },\n});\nconst basicFlow = new gcp.diagflow.CxFlow(\"basic_flow\", {\n parent: agent.id,\n displayName: \"MyFlow\",\n description: \"Test Flow\",\n nluSettings: {\n classificationThreshold: 0.3,\n modelType: \"MODEL_TYPE_STANDARD\",\n },\n eventHandlers: [\n {\n event: \"custom-event\",\n triggerFulfillment: {\n returnPartialResponses: false,\n messages: [{\n text: {\n texts: [\"I didn't get that. Can you say it again?\"],\n },\n }],\n },\n },\n {\n event: \"sys.no-match-default\",\n triggerFulfillment: {\n returnPartialResponses: false,\n messages: [{\n text: {\n texts: [\"Sorry, could you say that again?\"],\n },\n }],\n },\n },\n {\n event: \"sys.no-input-default\",\n triggerFulfillment: {\n returnPartialResponses: false,\n messages: [{\n text: {\n texts: [\"One more time?\"],\n },\n }],\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nagent = gcp.diagflow.CxAgent(\"agent\",\n display_name=\"dialogflowcx-agent\",\n location=\"global\",\n default_language_code=\"en\",\n supported_language_codes=[\n \"fr\",\n \"de\",\n \"es\",\n ],\n time_zone=\"America/New_York\",\n description=\"Example description.\",\n avatar_uri=\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enable_stackdriver_logging=True,\n enable_spell_correction=True,\n speech_to_text_settings={\n \"enable_speech_adaptation\": True,\n })\nbasic_flow = gcp.diagflow.CxFlow(\"basic_flow\",\n parent=agent.id,\n display_name=\"MyFlow\",\n description=\"Test Flow\",\n nlu_settings={\n \"classification_threshold\": 0.3,\n \"model_type\": \"MODEL_TYPE_STANDARD\",\n },\n event_handlers=[\n {\n \"event\": \"custom-event\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": False,\n \"messages\": [{\n \"text\": {\n \"texts\": [\"I didn't get that. Can you say it again?\"],\n },\n }],\n },\n },\n {\n \"event\": \"sys.no-match-default\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": False,\n \"messages\": [{\n \"text\": {\n \"texts\": [\"Sorry, could you say that again?\"],\n },\n }],\n },\n },\n {\n \"event\": \"sys.no-input-default\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": False,\n \"messages\": [{\n \"text\": {\n \"texts\": [\"One more time?\"],\n },\n }],\n },\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var agent = new Gcp.Diagflow.CxAgent(\"agent\", new()\n {\n DisplayName = \"dialogflowcx-agent\",\n Location = \"global\",\n DefaultLanguageCode = \"en\",\n SupportedLanguageCodes = new[]\n {\n \"fr\",\n \"de\",\n \"es\",\n },\n TimeZone = \"America/New_York\",\n Description = \"Example description.\",\n AvatarUri = \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n EnableStackdriverLogging = true,\n EnableSpellCorrection = true,\n SpeechToTextSettings = new Gcp.Diagflow.Inputs.CxAgentSpeechToTextSettingsArgs\n {\n EnableSpeechAdaptation = true,\n },\n });\n\n var basicFlow = new Gcp.Diagflow.CxFlow(\"basic_flow\", new()\n {\n Parent = agent.Id,\n DisplayName = \"MyFlow\",\n Description = \"Test Flow\",\n NluSettings = new Gcp.Diagflow.Inputs.CxFlowNluSettingsArgs\n {\n ClassificationThreshold = 0.3,\n ModelType = \"MODEL_TYPE_STANDARD\",\n },\n EventHandlers = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs\n {\n Event = \"custom-event\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = false,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"I didn't get that. Can you say it again?\",\n },\n },\n },\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs\n {\n Event = \"sys.no-match-default\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = false,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Sorry, could you say that again?\",\n },\n },\n },\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs\n {\n Event = \"sys.no-input-default\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = false,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"One more time?\",\n },\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/diagflow\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tagent, err := diagflow.NewCxAgent(ctx, \"agent\", \u0026diagflow.CxAgentArgs{\n\t\t\tDisplayName: pulumi.String(\"dialogflowcx-agent\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDefaultLanguageCode: pulumi.String(\"en\"),\n\t\t\tSupportedLanguageCodes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"fr\"),\n\t\t\t\tpulumi.String(\"de\"),\n\t\t\t\tpulumi.String(\"es\"),\n\t\t\t},\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tDescription: pulumi.String(\"Example description.\"),\n\t\t\tAvatarUri: pulumi.String(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableSpellCorrection: pulumi.Bool(true),\n\t\t\tSpeechToTextSettings: \u0026diagflow.CxAgentSpeechToTextSettingsArgs{\n\t\t\t\tEnableSpeechAdaptation: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = diagflow.NewCxFlow(ctx, \"basic_flow\", \u0026diagflow.CxFlowArgs{\n\t\t\tParent: agent.ID(),\n\t\t\tDisplayName: pulumi.String(\"MyFlow\"),\n\t\t\tDescription: pulumi.String(\"Test Flow\"),\n\t\t\tNluSettings: \u0026diagflow.CxFlowNluSettingsArgs{\n\t\t\t\tClassificationThreshold: pulumi.Float64(0.3),\n\t\t\t\tModelType: pulumi.String(\"MODEL_TYPE_STANDARD\"),\n\t\t\t},\n\t\t\tEventHandlers: diagflow.CxFlowEventHandlerArray{\n\t\t\t\t\u0026diagflow.CxFlowEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"custom-event\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(false),\n\t\t\t\t\t\tMessages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"I didn't get that. Can you say it again?\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026diagflow.CxFlowEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"sys.no-match-default\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(false),\n\t\t\t\t\t\tMessages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Sorry, could you say that again?\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026diagflow.CxFlowEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"sys.no-input-default\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(false),\n\t\t\t\t\t\tMessages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"One more time?\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.diagflow.CxAgent;\nimport com.pulumi.gcp.diagflow.CxAgentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxAgentSpeechToTextSettingsArgs;\nimport com.pulumi.gcp.diagflow.CxFlow;\nimport com.pulumi.gcp.diagflow.CxFlowArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowNluSettingsArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowEventHandlerArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowEventHandlerTriggerFulfillmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var agent = new CxAgent(\"agent\", CxAgentArgs.builder()\n .displayName(\"dialogflowcx-agent\")\n .location(\"global\")\n .defaultLanguageCode(\"en\")\n .supportedLanguageCodes( \n \"fr\",\n \"de\",\n \"es\")\n .timeZone(\"America/New_York\")\n .description(\"Example description.\")\n .avatarUri(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\")\n .enableStackdriverLogging(true)\n .enableSpellCorrection(true)\n .speechToTextSettings(CxAgentSpeechToTextSettingsArgs.builder()\n .enableSpeechAdaptation(true)\n .build())\n .build());\n\n var basicFlow = new CxFlow(\"basicFlow\", CxFlowArgs.builder()\n .parent(agent.id())\n .displayName(\"MyFlow\")\n .description(\"Test Flow\")\n .nluSettings(CxFlowNluSettingsArgs.builder()\n .classificationThreshold(0.3)\n .modelType(\"MODEL_TYPE_STANDARD\")\n .build())\n .eventHandlers( \n CxFlowEventHandlerArgs.builder()\n .event(\"custom-event\")\n .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(false)\n .messages(CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"I didn't get that. Can you say it again?\")\n .build())\n .build())\n .build())\n .build(),\n CxFlowEventHandlerArgs.builder()\n .event(\"sys.no-match-default\")\n .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(false)\n .messages(CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"Sorry, could you say that again?\")\n .build())\n .build())\n .build())\n .build(),\n CxFlowEventHandlerArgs.builder()\n .event(\"sys.no-input-default\")\n .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(false)\n .messages(CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"One more time?\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n agent:\n type: gcp:diagflow:CxAgent\n properties:\n displayName: dialogflowcx-agent\n location: global\n defaultLanguageCode: en\n supportedLanguageCodes:\n - fr\n - de\n - es\n timeZone: America/New_York\n description: Example description.\n avatarUri: https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\n enableStackdriverLogging: true\n enableSpellCorrection: true\n speechToTextSettings:\n enableSpeechAdaptation: true\n basicFlow:\n type: gcp:diagflow:CxFlow\n name: basic_flow\n properties:\n parent: ${agent.id}\n displayName: MyFlow\n description: Test Flow\n nluSettings:\n classificationThreshold: 0.3\n modelType: MODEL_TYPE_STANDARD\n eventHandlers:\n - event: custom-event\n triggerFulfillment:\n returnPartialResponses: false\n messages:\n - text:\n texts:\n - I didn't get that. Can you say it again?\n - event: sys.no-match-default\n triggerFulfillment:\n returnPartialResponses: false\n messages:\n - text:\n texts:\n - Sorry, could you say that again?\n - event: sys.no-input-default\n triggerFulfillment:\n returnPartialResponses: false\n messages:\n - text:\n texts:\n - One more time?\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dialogflowcx Flow Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst agent = new gcp.diagflow.CxAgent(\"agent\", {\n displayName: \"dialogflowcx-agent\",\n location: \"global\",\n defaultLanguageCode: \"en\",\n supportedLanguageCodes: [\n \"fr\",\n \"de\",\n \"es\",\n ],\n timeZone: \"America/New_York\",\n description: \"Example description.\",\n avatarUri: \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enableStackdriverLogging: true,\n enableSpellCorrection: true,\n speechToTextSettings: {\n enableSpeechAdaptation: true,\n },\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"dialogflowcx-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst basicFlow = new gcp.diagflow.CxFlow(\"basic_flow\", {\n parent: agent.id,\n displayName: \"MyFlow\",\n description: \"Test Flow\",\n nluSettings: {\n classificationThreshold: 0.3,\n modelType: \"MODEL_TYPE_STANDARD\",\n },\n eventHandlers: [\n {\n event: \"custom-event\",\n triggerFulfillment: {\n returnPartialResponses: false,\n messages: [{\n text: {\n texts: [\"I didn't get that. Can you say it again?\"],\n },\n }],\n },\n },\n {\n event: \"sys.no-match-default\",\n triggerFulfillment: {\n returnPartialResponses: false,\n messages: [{\n text: {\n texts: [\"Sorry, could you say that again?\"],\n },\n }],\n },\n },\n {\n event: \"sys.no-input-default\",\n triggerFulfillment: {\n returnPartialResponses: false,\n messages: [{\n text: {\n texts: [\"One more time?\"],\n },\n }],\n },\n },\n {\n event: \"another-event\",\n triggerFulfillment: {\n returnPartialResponses: true,\n messages: [\n {\n channel: \"some-channel\",\n text: {\n texts: [\"Some text\"],\n },\n },\n {\n payload: \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n conversationSuccess: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n outputAudioText: {\n text: \"some output text\",\n },\n },\n {\n outputAudioText: {\n ssml: \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n liveAgentHandoff: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n playAudio: {\n audioUri: \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n telephonyTransferCall: {\n phoneNumber: \"1-234-567-8901\",\n },\n },\n ],\n setParameterActions: [\n {\n parameter: \"some-param\",\n value: \"123.45\",\n },\n {\n parameter: \"another-param\",\n value: JSON.stringify(\"abc\"),\n },\n {\n parameter: \"other-param\",\n value: JSON.stringify([\"foo\"]),\n },\n ],\n conditionalCases: [{\n cases: JSON.stringify([\n {\n condition: \"$sys.func.RAND() \u003c 0.5\",\n caseContent: [\n {\n message: {\n text: {\n text: [\"First case\"],\n },\n },\n },\n {\n additionalCases: {\n cases: [{\n condition: \"$sys.func.RAND() \u003c 0.2\",\n caseContent: [{\n message: {\n text: {\n text: [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n caseContent: [{\n message: {\n text: {\n text: [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n },\n ],\n transitionRoutes: [{\n condition: \"true\",\n triggerFulfillment: {\n returnPartialResponses: true,\n messages: [\n {\n channel: \"some-channel\",\n text: {\n texts: [\"Some text\"],\n },\n },\n {\n payload: \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n conversationSuccess: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n outputAudioText: {\n text: \"some output text\",\n },\n },\n {\n outputAudioText: {\n ssml: \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n liveAgentHandoff: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n playAudio: {\n audioUri: \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n telephonyTransferCall: {\n phoneNumber: \"1-234-567-8901\",\n },\n },\n ],\n setParameterActions: [\n {\n parameter: \"some-param\",\n value: \"123.45\",\n },\n {\n parameter: \"another-param\",\n value: JSON.stringify(\"abc\"),\n },\n {\n parameter: \"other-param\",\n value: JSON.stringify([\"foo\"]),\n },\n ],\n conditionalCases: [{\n cases: JSON.stringify([\n {\n condition: \"$sys.func.RAND() \u003c 0.5\",\n caseContent: [\n {\n message: {\n text: {\n text: [\"First case\"],\n },\n },\n },\n {\n additionalCases: {\n cases: [{\n condition: \"$sys.func.RAND() \u003c 0.2\",\n caseContent: [{\n message: {\n text: {\n text: [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n caseContent: [{\n message: {\n text: {\n text: [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n targetFlow: agent.startFlow,\n }],\n advancedSettings: {\n audioExportGcsDestination: {\n uri: pulumi.interpolate`${bucket.url}/prefix-`,\n },\n dtmfSettings: {\n enabled: true,\n maxDigits: 1,\n finishDigit: \"#\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\nagent = gcp.diagflow.CxAgent(\"agent\",\n display_name=\"dialogflowcx-agent\",\n location=\"global\",\n default_language_code=\"en\",\n supported_language_codes=[\n \"fr\",\n \"de\",\n \"es\",\n ],\n time_zone=\"America/New_York\",\n description=\"Example description.\",\n avatar_uri=\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enable_stackdriver_logging=True,\n enable_spell_correction=True,\n speech_to_text_settings={\n \"enable_speech_adaptation\": True,\n })\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"dialogflowcx-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nbasic_flow = gcp.diagflow.CxFlow(\"basic_flow\",\n parent=agent.id,\n display_name=\"MyFlow\",\n description=\"Test Flow\",\n nlu_settings={\n \"classification_threshold\": 0.3,\n \"model_type\": \"MODEL_TYPE_STANDARD\",\n },\n event_handlers=[\n {\n \"event\": \"custom-event\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": False,\n \"messages\": [{\n \"text\": {\n \"texts\": [\"I didn't get that. Can you say it again?\"],\n },\n }],\n },\n },\n {\n \"event\": \"sys.no-match-default\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": False,\n \"messages\": [{\n \"text\": {\n \"texts\": [\"Sorry, could you say that again?\"],\n },\n }],\n },\n },\n {\n \"event\": \"sys.no-input-default\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": False,\n \"messages\": [{\n \"text\": {\n \"texts\": [\"One more time?\"],\n },\n }],\n },\n },\n {\n \"event\": \"another-event\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": True,\n \"messages\": [\n {\n \"channel\": \"some-channel\",\n \"text\": {\n \"texts\": [\"Some text\"],\n },\n },\n {\n \"payload\": \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n \"conversation_success\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"output_audio_text\": {\n \"text\": \"some output text\",\n },\n },\n {\n \"output_audio_text\": {\n \"ssml\": \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n \"live_agent_handoff\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"play_audio\": {\n \"audio_uri\": \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n \"telephony_transfer_call\": {\n \"phone_number\": \"1-234-567-8901\",\n },\n },\n ],\n \"set_parameter_actions\": [\n {\n \"parameter\": \"some-param\",\n \"value\": \"123.45\",\n },\n {\n \"parameter\": \"another-param\",\n \"value\": json.dumps(\"abc\"),\n },\n {\n \"parameter\": \"other-param\",\n \"value\": json.dumps([\"foo\"]),\n },\n ],\n \"conditional_cases\": [{\n \"cases\": json.dumps([\n {\n \"condition\": \"$sys.func.RAND() \u003c 0.5\",\n \"caseContent\": [\n {\n \"message\": {\n \"text\": {\n \"text\": [\"First case\"],\n },\n },\n },\n {\n \"additionalCases\": {\n \"cases\": [{\n \"condition\": \"$sys.func.RAND() \u003c 0.2\",\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n },\n ],\n transition_routes=[{\n \"condition\": \"true\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": True,\n \"messages\": [\n {\n \"channel\": \"some-channel\",\n \"text\": {\n \"texts\": [\"Some text\"],\n },\n },\n {\n \"payload\": \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n \"conversation_success\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"output_audio_text\": {\n \"text\": \"some output text\",\n },\n },\n {\n \"output_audio_text\": {\n \"ssml\": \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n \"live_agent_handoff\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"play_audio\": {\n \"audio_uri\": \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n \"telephony_transfer_call\": {\n \"phone_number\": \"1-234-567-8901\",\n },\n },\n ],\n \"set_parameter_actions\": [\n {\n \"parameter\": \"some-param\",\n \"value\": \"123.45\",\n },\n {\n \"parameter\": \"another-param\",\n \"value\": json.dumps(\"abc\"),\n },\n {\n \"parameter\": \"other-param\",\n \"value\": json.dumps([\"foo\"]),\n },\n ],\n \"conditional_cases\": [{\n \"cases\": json.dumps([\n {\n \"condition\": \"$sys.func.RAND() \u003c 0.5\",\n \"caseContent\": [\n {\n \"message\": {\n \"text\": {\n \"text\": [\"First case\"],\n },\n },\n },\n {\n \"additionalCases\": {\n \"cases\": [{\n \"condition\": \"$sys.func.RAND() \u003c 0.2\",\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n \"target_flow\": agent.start_flow,\n }],\n advanced_settings={\n \"audio_export_gcs_destination\": {\n \"uri\": bucket.url.apply(lambda url: f\"{url}/prefix-\"),\n },\n \"dtmf_settings\": {\n \"enabled\": True,\n \"max_digits\": 1,\n \"finish_digit\": \"#\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var agent = new Gcp.Diagflow.CxAgent(\"agent\", new()\n {\n DisplayName = \"dialogflowcx-agent\",\n Location = \"global\",\n DefaultLanguageCode = \"en\",\n SupportedLanguageCodes = new[]\n {\n \"fr\",\n \"de\",\n \"es\",\n },\n TimeZone = \"America/New_York\",\n Description = \"Example description.\",\n AvatarUri = \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n EnableStackdriverLogging = true,\n EnableSpellCorrection = true,\n SpeechToTextSettings = new Gcp.Diagflow.Inputs.CxAgentSpeechToTextSettingsArgs\n {\n EnableSpeechAdaptation = true,\n },\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = \"dialogflowcx-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var basicFlow = new Gcp.Diagflow.CxFlow(\"basic_flow\", new()\n {\n Parent = agent.Id,\n DisplayName = \"MyFlow\",\n Description = \"Test Flow\",\n NluSettings = new Gcp.Diagflow.Inputs.CxFlowNluSettingsArgs\n {\n ClassificationThreshold = 0.3,\n ModelType = \"MODEL_TYPE_STANDARD\",\n },\n EventHandlers = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs\n {\n Event = \"custom-event\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = false,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"I didn't get that. Can you say it again?\",\n },\n },\n },\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs\n {\n Event = \"sys.no-match-default\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = false,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Sorry, could you say that again?\",\n },\n },\n },\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs\n {\n Event = \"sys.no-input-default\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = false,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"One more time?\",\n },\n },\n },\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerArgs\n {\n Event = \"another-event\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = true,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Channel = \"some-channel\",\n Text = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Some text\",\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n Payload = @\" {\"\"some-key\"\": \"\"some-value\"\", \"\"other-key\"\": [\"\"other-value\"\"]}\n\",\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n ConversationSuccess = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageConversationSuccessArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Text = \"some output text\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Ssml = @\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\"\"characters\"\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n PlayAudio = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessagePlayAudioArgs\n {\n AudioUri = \"http://example.com/some-audio-file.mp3\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageArgs\n {\n TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs\n {\n PhoneNumber = \"1-234-567-8901\",\n },\n },\n },\n SetParameterActions = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"some-param\",\n Value = \"123.45\",\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"another-param\",\n Value = JsonSerializer.Serialize(\"abc\"),\n },\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"other-param\",\n Value = JsonSerializer.Serialize(new[]\n {\n \"foo\",\n }),\n },\n },\n ConditionalCases = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowEventHandlerTriggerFulfillmentConditionalCaseArgs\n {\n Cases = JsonSerializer.Serialize(new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.5\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"First case\",\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"additionalCases\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"cases\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.2\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Nested case\",\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Final case\",\n },\n },\n },\n },\n },\n },\n }),\n },\n },\n },\n },\n },\n TransitionRoutes = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteArgs\n {\n Condition = \"true\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentArgs\n {\n ReturnPartialResponses = true,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n Channel = \"some-channel\",\n Text = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Some text\",\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n Payload = @\" {\"\"some-key\"\": \"\"some-value\"\", \"\"other-key\"\": [\"\"other-value\"\"]}\n\",\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n ConversationSuccess = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Text = \"some output text\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Ssml = @\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\"\"characters\"\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n PlayAudio = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessagePlayAudioArgs\n {\n AudioUri = \"http://example.com/some-audio-file.mp3\",\n },\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageArgs\n {\n TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs\n {\n PhoneNumber = \"1-234-567-8901\",\n },\n },\n },\n SetParameterActions = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"some-param\",\n Value = \"123.45\",\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"another-param\",\n Value = JsonSerializer.Serialize(\"abc\"),\n },\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"other-param\",\n Value = JsonSerializer.Serialize(new[]\n {\n \"foo\",\n }),\n },\n },\n ConditionalCases = new[]\n {\n new Gcp.Diagflow.Inputs.CxFlowTransitionRouteTriggerFulfillmentConditionalCaseArgs\n {\n Cases = JsonSerializer.Serialize(new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.5\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"First case\",\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"additionalCases\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"cases\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.2\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Nested case\",\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Final case\",\n },\n },\n },\n },\n },\n },\n }),\n },\n },\n },\n TargetFlow = agent.StartFlow,\n },\n },\n AdvancedSettings = new Gcp.Diagflow.Inputs.CxFlowAdvancedSettingsArgs\n {\n AudioExportGcsDestination = new Gcp.Diagflow.Inputs.CxFlowAdvancedSettingsAudioExportGcsDestinationArgs\n {\n Uri = bucket.Url.Apply(url =\u003e $\"{url}/prefix-\"),\n },\n DtmfSettings = new Gcp.Diagflow.Inputs.CxFlowAdvancedSettingsDtmfSettingsArgs\n {\n Enabled = true,\n MaxDigits = 1,\n FinishDigit = \"#\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/diagflow\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tagent, err := diagflow.NewCxAgent(ctx, \"agent\", \u0026diagflow.CxAgentArgs{\n\t\t\tDisplayName: pulumi.String(\"dialogflowcx-agent\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDefaultLanguageCode: pulumi.String(\"en\"),\n\t\t\tSupportedLanguageCodes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"fr\"),\n\t\t\t\tpulumi.String(\"de\"),\n\t\t\t\tpulumi.String(\"es\"),\n\t\t\t},\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tDescription: pulumi.String(\"Example description.\"),\n\t\t\tAvatarUri: pulumi.String(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableSpellCorrection: pulumi.Bool(true),\n\t\t\tSpeechToTextSettings: \u0026diagflow.CxAgentSpeechToTextSettingsArgs{\n\t\t\t\tEnableSpeechAdaptation: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"dialogflowcx-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(\"abc\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\ttmpJSON1, err := json.Marshal([]string{\n\t\t\t\"foo\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson1 := string(tmpJSON1)\n\t\ttmpJSON2, err := json.Marshal([]interface{}{\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.5\",\n\t\t\t\t\"caseContent\": []interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"First case\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"additionalCases\": map[string]interface{}{\n\t\t\t\t\t\t\t\"cases\": []map[string]interface{}{\n\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.2\",\n\t\t\t\t\t\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Nested case\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"Final case\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson2 := string(tmpJSON2)\n\t\ttmpJSON3, err := json.Marshal(\"abc\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson3 := string(tmpJSON3)\n\t\ttmpJSON4, err := json.Marshal([]string{\n\t\t\t\"foo\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson4 := string(tmpJSON4)\n\t\ttmpJSON5, err := json.Marshal([]interface{}{\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.5\",\n\t\t\t\t\"caseContent\": []interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"First case\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"additionalCases\": map[string]interface{}{\n\t\t\t\t\t\t\t\"cases\": []map[string]interface{}{\n\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.2\",\n\t\t\t\t\t\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Nested case\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"Final case\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson5 := string(tmpJSON5)\n\t\t_, err = diagflow.NewCxFlow(ctx, \"basic_flow\", \u0026diagflow.CxFlowArgs{\n\t\t\tParent: agent.ID(),\n\t\t\tDisplayName: pulumi.String(\"MyFlow\"),\n\t\t\tDescription: pulumi.String(\"Test Flow\"),\n\t\t\tNluSettings: \u0026diagflow.CxFlowNluSettingsArgs{\n\t\t\t\tClassificationThreshold: pulumi.Float64(0.3),\n\t\t\t\tModelType: pulumi.String(\"MODEL_TYPE_STANDARD\"),\n\t\t\t},\n\t\t\tEventHandlers: diagflow.CxFlowEventHandlerArray{\n\t\t\t\t\u0026diagflow.CxFlowEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"custom-event\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(false),\n\t\t\t\t\t\tMessages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"I didn't get that. Can you say it again?\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026diagflow.CxFlowEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"sys.no-match-default\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(false),\n\t\t\t\t\t\tMessages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Sorry, could you say that again?\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026diagflow.CxFlowEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"sys.no-input-default\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(false),\n\t\t\t\t\t\tMessages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"One more time?\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026diagflow.CxFlowEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"another-event\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(true),\n\t\t\t\t\t\tMessages: diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tChannel: pulumi.String(\"some-channel\"),\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Some text\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPayload: pulumi.String(\" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tConversationSuccess: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageConversationSuccessArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tText: pulumi.String(\"some output text\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tSsml: pulumi.String(\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tLiveAgentHandoff: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPlayAudio: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessagePlayAudioArgs{\n\t\t\t\t\t\t\t\t\tAudioUri: pulumi.String(\"http://example.com/some-audio-file.mp3\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tTelephonyTransferCall: \u0026diagflow.CxFlowEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs{\n\t\t\t\t\t\t\t\t\tPhoneNumber: pulumi.String(\"1-234-567-8901\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSetParameterActions: diagflow.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"some-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"123.45\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"another-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json0),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"other-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tConditionalCases: diagflow.CxFlowEventHandlerTriggerFulfillmentConditionalCaseArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowEventHandlerTriggerFulfillmentConditionalCaseArgs{\n\t\t\t\t\t\t\t\tCases: pulumi.String(json2),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTransitionRoutes: diagflow.CxFlowTransitionRouteArray{\n\t\t\t\t\u0026diagflow.CxFlowTransitionRouteArgs{\n\t\t\t\t\tCondition: pulumi.String(\"true\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(true),\n\t\t\t\t\t\tMessages: diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tChannel: pulumi.String(\"some-channel\"),\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Some text\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPayload: pulumi.String(\" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tConversationSuccess: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tText: pulumi.String(\"some output text\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tSsml: pulumi.String(\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tLiveAgentHandoff: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPlayAudio: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessagePlayAudioArgs{\n\t\t\t\t\t\t\t\t\tAudioUri: pulumi.String(\"http://example.com/some-audio-file.mp3\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tTelephonyTransferCall: \u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs{\n\t\t\t\t\t\t\t\t\tPhoneNumber: pulumi.String(\"1-234-567-8901\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSetParameterActions: diagflow.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"some-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"123.45\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"another-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json3),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"other-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json4),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tConditionalCases: diagflow.CxFlowTransitionRouteTriggerFulfillmentConditionalCaseArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxFlowTransitionRouteTriggerFulfillmentConditionalCaseArgs{\n\t\t\t\t\t\t\t\tCases: pulumi.String(json5),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tTargetFlow: agent.StartFlow,\n\t\t\t\t},\n\t\t\t},\n\t\t\tAdvancedSettings: \u0026diagflow.CxFlowAdvancedSettingsArgs{\n\t\t\t\tAudioExportGcsDestination: \u0026diagflow.CxFlowAdvancedSettingsAudioExportGcsDestinationArgs{\n\t\t\t\t\tUri: bucket.Url.ApplyT(func(url string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"%v/prefix-\", url), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t\tDtmfSettings: \u0026diagflow.CxFlowAdvancedSettingsDtmfSettingsArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tMaxDigits: pulumi.Int(1),\n\t\t\t\t\tFinishDigit: pulumi.String(\"#\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.diagflow.CxAgent;\nimport com.pulumi.gcp.diagflow.CxAgentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxAgentSpeechToTextSettingsArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.diagflow.CxFlow;\nimport com.pulumi.gcp.diagflow.CxFlowArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowNluSettingsArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowEventHandlerArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowEventHandlerTriggerFulfillmentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowTransitionRouteArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowTransitionRouteTriggerFulfillmentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowAdvancedSettingsArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowAdvancedSettingsAudioExportGcsDestinationArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxFlowAdvancedSettingsDtmfSettingsArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var agent = new CxAgent(\"agent\", CxAgentArgs.builder()\n .displayName(\"dialogflowcx-agent\")\n .location(\"global\")\n .defaultLanguageCode(\"en\")\n .supportedLanguageCodes( \n \"fr\",\n \"de\",\n \"es\")\n .timeZone(\"America/New_York\")\n .description(\"Example description.\")\n .avatarUri(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\")\n .enableStackdriverLogging(true)\n .enableSpellCorrection(true)\n .speechToTextSettings(CxAgentSpeechToTextSettingsArgs.builder()\n .enableSpeechAdaptation(true)\n .build())\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(\"dialogflowcx-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var basicFlow = new CxFlow(\"basicFlow\", CxFlowArgs.builder()\n .parent(agent.id())\n .displayName(\"MyFlow\")\n .description(\"Test Flow\")\n .nluSettings(CxFlowNluSettingsArgs.builder()\n .classificationThreshold(0.3)\n .modelType(\"MODEL_TYPE_STANDARD\")\n .build())\n .eventHandlers( \n CxFlowEventHandlerArgs.builder()\n .event(\"custom-event\")\n .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(false)\n .messages(CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"I didn't get that. Can you say it again?\")\n .build())\n .build())\n .build())\n .build(),\n CxFlowEventHandlerArgs.builder()\n .event(\"sys.no-match-default\")\n .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(false)\n .messages(CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"Sorry, could you say that again?\")\n .build())\n .build())\n .build())\n .build(),\n CxFlowEventHandlerArgs.builder()\n .event(\"sys.no-input-default\")\n .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(false)\n .messages(CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"One more time?\")\n .build())\n .build())\n .build())\n .build(),\n CxFlowEventHandlerArgs.builder()\n .event(\"another-event\")\n .triggerFulfillment(CxFlowEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(true)\n .messages( \n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .channel(\"some-channel\")\n .text(CxFlowEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"Some text\")\n .build())\n .build(),\n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .payload(\"\"\"\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n \"\"\")\n .build(),\n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .conversationSuccess(CxFlowEventHandlerTriggerFulfillmentMessageConversationSuccessArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .text(\"some output text\")\n .build())\n .build(),\n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxFlowEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .ssml(\"\"\"\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n \"\"\")\n .build())\n .build(),\n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .liveAgentHandoff(CxFlowEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .playAudio(CxFlowEventHandlerTriggerFulfillmentMessagePlayAudioArgs.builder()\n .audioUri(\"http://example.com/some-audio-file.mp3\")\n .build())\n .build(),\n CxFlowEventHandlerTriggerFulfillmentMessageArgs.builder()\n .telephonyTransferCall(CxFlowEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs.builder()\n .phoneNumber(\"1-234-567-8901\")\n .build())\n .build())\n .setParameterActions( \n CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"some-param\")\n .value(\"123.45\")\n .build(),\n CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"another-param\")\n .value(serializeJson(\n \"abc\"))\n .build(),\n CxFlowEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"other-param\")\n .value(serializeJson(\n jsonArray(\"foo\")))\n .build())\n .conditionalCases(CxFlowEventHandlerTriggerFulfillmentConditionalCaseArgs.builder()\n .cases(serializeJson(\n jsonArray(\n jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.5\"),\n jsonProperty(\"caseContent\", jsonArray(\n jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"First case\"))\n ))\n ))\n ), \n jsonObject(\n jsonProperty(\"additionalCases\", jsonObject(\n jsonProperty(\"cases\", jsonArray(jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.2\"),\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Nested case\"))\n ))\n ))\n )))\n )))\n ))\n )\n ))\n ), \n jsonObject(\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Final case\"))\n ))\n ))\n )))\n )\n )))\n .build())\n .build())\n .build())\n .transitionRoutes(CxFlowTransitionRouteArgs.builder()\n .condition(\"true\")\n .triggerFulfillment(CxFlowTransitionRouteTriggerFulfillmentArgs.builder()\n .returnPartialResponses(true)\n .messages( \n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .channel(\"some-channel\")\n .text(CxFlowTransitionRouteTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"Some text\")\n .build())\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .payload(\"\"\"\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n \"\"\")\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .conversationSuccess(CxFlowTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .text(\"some output text\")\n .build())\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxFlowTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .ssml(\"\"\"\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n \"\"\")\n .build())\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .liveAgentHandoff(CxFlowTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .playAudio(CxFlowTransitionRouteTriggerFulfillmentMessagePlayAudioArgs.builder()\n .audioUri(\"http://example.com/some-audio-file.mp3\")\n .build())\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .telephonyTransferCall(CxFlowTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs.builder()\n .phoneNumber(\"1-234-567-8901\")\n .build())\n .build())\n .setParameterActions( \n CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"some-param\")\n .value(\"123.45\")\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"another-param\")\n .value(serializeJson(\n \"abc\"))\n .build(),\n CxFlowTransitionRouteTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"other-param\")\n .value(serializeJson(\n jsonArray(\"foo\")))\n .build())\n .conditionalCases(CxFlowTransitionRouteTriggerFulfillmentConditionalCaseArgs.builder()\n .cases(serializeJson(\n jsonArray(\n jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.5\"),\n jsonProperty(\"caseContent\", jsonArray(\n jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"First case\"))\n ))\n ))\n ), \n jsonObject(\n jsonProperty(\"additionalCases\", jsonObject(\n jsonProperty(\"cases\", jsonArray(jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.2\"),\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Nested case\"))\n ))\n ))\n )))\n )))\n ))\n )\n ))\n ), \n jsonObject(\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Final case\"))\n ))\n ))\n )))\n )\n )))\n .build())\n .build())\n .targetFlow(agent.startFlow())\n .build())\n .advancedSettings(CxFlowAdvancedSettingsArgs.builder()\n .audioExportGcsDestination(CxFlowAdvancedSettingsAudioExportGcsDestinationArgs.builder()\n .uri(bucket.url().applyValue(url -\u003e String.format(\"%s/prefix-\", url)))\n .build())\n .dtmfSettings(CxFlowAdvancedSettingsDtmfSettingsArgs.builder()\n .enabled(true)\n .maxDigits(1)\n .finishDigit(\"#\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n agent:\n type: gcp:diagflow:CxAgent\n properties:\n displayName: dialogflowcx-agent\n location: global\n defaultLanguageCode: en\n supportedLanguageCodes:\n - fr\n - de\n - es\n timeZone: America/New_York\n description: Example description.\n avatarUri: https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\n enableStackdriverLogging: true\n enableSpellCorrection: true\n speechToTextSettings:\n enableSpeechAdaptation: true\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: dialogflowcx-bucket\n location: US\n uniformBucketLevelAccess: true\n basicFlow:\n type: gcp:diagflow:CxFlow\n name: basic_flow\n properties:\n parent: ${agent.id}\n displayName: MyFlow\n description: Test Flow\n nluSettings:\n classificationThreshold: 0.3\n modelType: MODEL_TYPE_STANDARD\n eventHandlers:\n - event: custom-event\n triggerFulfillment:\n returnPartialResponses: false\n messages:\n - text:\n texts:\n - I didn't get that. Can you say it again?\n - event: sys.no-match-default\n triggerFulfillment:\n returnPartialResponses: false\n messages:\n - text:\n texts:\n - Sorry, could you say that again?\n - event: sys.no-input-default\n triggerFulfillment:\n returnPartialResponses: false\n messages:\n - text:\n texts:\n - One more time?\n - event: another-event\n triggerFulfillment:\n returnPartialResponses: true\n messages:\n - channel: some-channel\n text:\n texts:\n - Some text\n - payload: |2\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n - conversationSuccess:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - outputAudioText:\n text: some output text\n - outputAudioText:\n ssml: |2\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n - liveAgentHandoff:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - playAudio:\n audioUri: http://example.com/some-audio-file.mp3\n - telephonyTransferCall:\n phoneNumber: 1-234-567-8901\n setParameterActions:\n - parameter: some-param\n value: '123.45'\n - parameter: another-param\n value:\n fn::toJSON: abc\n - parameter: other-param\n value:\n fn::toJSON:\n - foo\n conditionalCases:\n - cases:\n fn::toJSON:\n - condition: $sys.func.RAND() \u003c 0.5\n caseContent:\n - message:\n text:\n text:\n - First case\n - additionalCases:\n cases:\n - condition: $sys.func.RAND() \u003c 0.2\n caseContent:\n - message:\n text:\n text:\n - Nested case\n - caseContent:\n - message:\n text:\n text:\n - Final case\n transitionRoutes:\n - condition: 'true'\n triggerFulfillment:\n returnPartialResponses: true\n messages:\n - channel: some-channel\n text:\n texts:\n - Some text\n - payload: |2\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n - conversationSuccess:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - outputAudioText:\n text: some output text\n - outputAudioText:\n ssml: |2\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n - liveAgentHandoff:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - playAudio:\n audioUri: http://example.com/some-audio-file.mp3\n - telephonyTransferCall:\n phoneNumber: 1-234-567-8901\n setParameterActions:\n - parameter: some-param\n value: '123.45'\n - parameter: another-param\n value:\n fn::toJSON: abc\n - parameter: other-param\n value:\n fn::toJSON:\n - foo\n conditionalCases:\n - cases:\n fn::toJSON:\n - condition: $sys.func.RAND() \u003c 0.5\n caseContent:\n - message:\n text:\n text:\n - First case\n - additionalCases:\n cases:\n - condition: $sys.func.RAND() \u003c 0.2\n caseContent:\n - message:\n text:\n text:\n - Nested case\n - caseContent:\n - message:\n text:\n text:\n - Final case\n targetFlow: ${agent.startFlow}\n advancedSettings:\n audioExportGcsDestination:\n uri: ${bucket.url}/prefix-\n dtmfSettings:\n enabled: true\n maxDigits: 1\n finishDigit: '#'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFlow can be imported using any of these accepted formats:\n\n* `{{parent}}/flows/{{name}}`\n\n* `{{parent}}/{{name}}`\n\nWhen using the `pulumi import` command, Flow can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:diagflow/cxFlow:CxFlow default {{parent}}/flows/{{name}}\n```\n\n```sh\n$ pulumi import gcp:diagflow/cxFlow:CxFlow default {{parent}}/{{name}}\n```\n\n", "properties": { "advancedSettings": { "$ref": "#/types/gcp:diagflow/CxFlowAdvancedSettings:CxFlowAdvancedSettings", @@ -191141,7 +191141,7 @@ } }, "gcp:diagflow/cxPage:CxPage": { - "description": "A Dialogflow CX conversation (session) can be described and visualized as a state machine. The states of a CX session are represented by pages.\n\n\nTo get more information about Page, see:\n\n* [API documentation](https://cloud.google.com/dialogflow/cx/docs/reference/rest/v3/projects.locations.agents.flows.pages)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dialogflow/cx/docs)\n\n## Example Usage\n\n### Dialogflowcx Page Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst agent = new gcp.diagflow.CxAgent(\"agent\", {\n displayName: \"dialogflowcx-agent\",\n location: \"global\",\n defaultLanguageCode: \"en\",\n supportedLanguageCodes: [\n \"fr\",\n \"de\",\n \"es\",\n ],\n timeZone: \"America/New_York\",\n description: \"Example description.\",\n avatarUri: \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enableStackdriverLogging: true,\n enableSpellCorrection: true,\n speechToTextSettings: {\n enableSpeechAdaptation: true,\n },\n});\nconst myPage2 = new gcp.diagflow.CxPage(\"my_page2\", {\n parent: agent.startFlow,\n displayName: \"MyPage2\",\n});\nconst myWebhook = new gcp.diagflow.CxWebhook(\"my_webhook\", {\n parent: agent.id,\n displayName: \"MyWebhook\",\n genericWebService: {\n uri: \"https://example.com\",\n },\n});\nconst basicPage = new gcp.diagflow.CxPage(\"basic_page\", {\n parent: agent.startFlow,\n displayName: \"MyPage\",\n entryFulfillment: {\n messages: [\n {\n channel: \"some-channel\",\n text: {\n texts: [\"Welcome to page\"],\n },\n },\n {\n payload: \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n conversationSuccess: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n outputAudioText: {\n text: \"some output text\",\n },\n },\n {\n outputAudioText: {\n ssml: \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n liveAgentHandoff: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n playAudio: {\n audioUri: \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n telephonyTransferCall: {\n phoneNumber: \"1-234-567-8901\",\n },\n },\n ],\n setParameterActions: [\n {\n parameter: \"some-param\",\n value: \"123.45\",\n },\n {\n parameter: \"another-param\",\n value: JSON.stringify(\"abc\"),\n },\n {\n parameter: \"other-param\",\n value: JSON.stringify([\"foo\"]),\n },\n ],\n conditionalCases: [{\n cases: JSON.stringify([\n {\n condition: \"$sys.func.RAND() \u003c 0.5\",\n caseContent: [\n {\n message: {\n text: {\n text: [\"First case\"],\n },\n },\n },\n {\n additionalCases: {\n cases: [{\n condition: \"$sys.func.RAND() \u003c 0.2\",\n caseContent: [{\n message: {\n text: {\n text: [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n caseContent: [{\n message: {\n text: {\n text: [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n eventHandlers: [{\n event: \"some-event\",\n triggerFulfillment: {\n returnPartialResponses: true,\n messages: [\n {\n channel: \"some-channel\",\n text: {\n texts: [\"Some text\"],\n },\n },\n {\n payload: \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n conversationSuccess: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n outputAudioText: {\n text: \"some output text\",\n },\n },\n {\n outputAudioText: {\n ssml: \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n liveAgentHandoff: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n playAudio: {\n audioUri: \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n telephonyTransferCall: {\n phoneNumber: \"1-234-567-8901\",\n },\n },\n ],\n setParameterActions: [\n {\n parameter: \"some-param\",\n value: \"123.45\",\n },\n {\n parameter: \"another-param\",\n value: JSON.stringify(\"abc\"),\n },\n {\n parameter: \"other-param\",\n value: JSON.stringify([\"foo\"]),\n },\n ],\n conditionalCases: [{\n cases: JSON.stringify([\n {\n condition: \"$sys.func.RAND() \u003c 0.5\",\n caseContent: [\n {\n message: {\n text: {\n text: [\"First case\"],\n },\n },\n },\n {\n additionalCases: {\n cases: [{\n condition: \"$sys.func.RAND() \u003c 0.2\",\n caseContent: [{\n message: {\n text: {\n text: [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n caseContent: [{\n message: {\n text: {\n text: [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n }],\n form: {\n parameters: [{\n displayName: \"param1\",\n entityType: \"projects/-/locations/-/agents/-/entityTypes/sys.date\",\n defaultValue: JSON.stringify(\"2000-01-01\"),\n fillBehavior: {\n initialPromptFulfillment: {\n messages: [\n {\n channel: \"some-channel\",\n text: {\n texts: [\"Please provide param1\"],\n },\n },\n {\n payload: \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n conversationSuccess: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n outputAudioText: {\n text: \"some output text\",\n },\n },\n {\n outputAudioText: {\n ssml: \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n liveAgentHandoff: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n playAudio: {\n audioUri: \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n telephonyTransferCall: {\n phoneNumber: \"1-234-567-8901\",\n },\n },\n ],\n setParameterActions: [\n {\n parameter: \"some-param\",\n value: \"123.45\",\n },\n {\n parameter: \"another-param\",\n value: JSON.stringify(\"abc\"),\n },\n {\n parameter: \"other-param\",\n value: JSON.stringify([\"foo\"]),\n },\n ],\n conditionalCases: [{\n cases: JSON.stringify([\n {\n condition: \"$sys.func.RAND() \u003c 0.5\",\n caseContent: [\n {\n message: {\n text: {\n text: [\"First case\"],\n },\n },\n },\n {\n additionalCases: {\n cases: [{\n condition: \"$sys.func.RAND() \u003c 0.2\",\n caseContent: [{\n message: {\n text: {\n text: [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n caseContent: [{\n message: {\n text: {\n text: [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n repromptEventHandlers: [\n {\n event: \"sys.no-match-1\",\n triggerFulfillment: {\n returnPartialResponses: true,\n webhook: myWebhook.id,\n tag: \"some-tag\",\n messages: [\n {\n channel: \"some-channel\",\n text: {\n texts: [\"Please provide param1\"],\n },\n },\n {\n payload: \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n conversationSuccess: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n outputAudioText: {\n text: \"some output text\",\n },\n },\n {\n outputAudioText: {\n ssml: \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n liveAgentHandoff: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n playAudio: {\n audioUri: \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n telephonyTransferCall: {\n phoneNumber: \"1-234-567-8901\",\n },\n },\n ],\n setParameterActions: [\n {\n parameter: \"some-param\",\n value: \"123.45\",\n },\n {\n parameter: \"another-param\",\n value: JSON.stringify(\"abc\"),\n },\n {\n parameter: \"other-param\",\n value: JSON.stringify([\"foo\"]),\n },\n ],\n conditionalCases: [{\n cases: JSON.stringify([\n {\n condition: \"$sys.func.RAND() \u003c 0.5\",\n caseContent: [\n {\n message: {\n text: {\n text: [\"First case\"],\n },\n },\n },\n {\n additionalCases: {\n cases: [{\n condition: \"$sys.func.RAND() \u003c 0.2\",\n caseContent: [{\n message: {\n text: {\n text: [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n caseContent: [{\n message: {\n text: {\n text: [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n },\n {\n event: \"sys.no-match-2\",\n targetFlow: agent.startFlow,\n },\n {\n event: \"sys.no-match-3\",\n targetPage: myPage2.id,\n },\n ],\n },\n required: true,\n redact: true,\n advancedSettings: {\n dtmfSettings: {\n enabled: true,\n maxDigits: 1,\n finishDigit: \"#\",\n },\n },\n }],\n },\n transitionRoutes: [{\n condition: \"$page.params.status = 'FINAL'\",\n triggerFulfillment: {\n messages: [\n {\n channel: \"some-channel\",\n text: {\n texts: [\"information completed, navigating to page 2\"],\n },\n },\n {\n payload: \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n conversationSuccess: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n outputAudioText: {\n text: \"some output text\",\n },\n },\n {\n outputAudioText: {\n ssml: \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n liveAgentHandoff: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n playAudio: {\n audioUri: \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n telephonyTransferCall: {\n phoneNumber: \"1-234-567-8901\",\n },\n },\n ],\n setParameterActions: [\n {\n parameter: \"some-param\",\n value: \"123.45\",\n },\n {\n parameter: \"another-param\",\n value: JSON.stringify(\"abc\"),\n },\n {\n parameter: \"other-param\",\n value: JSON.stringify([\"foo\"]),\n },\n ],\n conditionalCases: [{\n cases: JSON.stringify([\n {\n condition: \"$sys.func.RAND() \u003c 0.5\",\n caseContent: [\n {\n message: {\n text: {\n text: [\"First case\"],\n },\n },\n },\n {\n additionalCases: {\n cases: [{\n condition: \"$sys.func.RAND() \u003c 0.2\",\n caseContent: [{\n message: {\n text: {\n text: [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n caseContent: [{\n message: {\n text: {\n text: [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n targetPage: myPage2.id,\n }],\n advancedSettings: {\n dtmfSettings: {\n enabled: true,\n maxDigits: 1,\n finishDigit: \"#\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\nagent = gcp.diagflow.CxAgent(\"agent\",\n display_name=\"dialogflowcx-agent\",\n location=\"global\",\n default_language_code=\"en\",\n supported_language_codes=[\n \"fr\",\n \"de\",\n \"es\",\n ],\n time_zone=\"America/New_York\",\n description=\"Example description.\",\n avatar_uri=\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enable_stackdriver_logging=True,\n enable_spell_correction=True,\n speech_to_text_settings={\n \"enable_speech_adaptation\": True,\n })\nmy_page2 = gcp.diagflow.CxPage(\"my_page2\",\n parent=agent.start_flow,\n display_name=\"MyPage2\")\nmy_webhook = gcp.diagflow.CxWebhook(\"my_webhook\",\n parent=agent.id,\n display_name=\"MyWebhook\",\n generic_web_service={\n \"uri\": \"https://example.com\",\n })\nbasic_page = gcp.diagflow.CxPage(\"basic_page\",\n parent=agent.start_flow,\n display_name=\"MyPage\",\n entry_fulfillment={\n \"messages\": [\n {\n \"channel\": \"some-channel\",\n \"text\": {\n \"texts\": [\"Welcome to page\"],\n },\n },\n {\n \"payload\": \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n \"conversation_success\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"output_audio_text\": {\n \"text\": \"some output text\",\n },\n },\n {\n \"output_audio_text\": {\n \"ssml\": \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n \"live_agent_handoff\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"play_audio\": {\n \"audio_uri\": \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n \"telephony_transfer_call\": {\n \"phone_number\": \"1-234-567-8901\",\n },\n },\n ],\n \"set_parameter_actions\": [\n {\n \"parameter\": \"some-param\",\n \"value\": \"123.45\",\n },\n {\n \"parameter\": \"another-param\",\n \"value\": json.dumps(\"abc\"),\n },\n {\n \"parameter\": \"other-param\",\n \"value\": json.dumps([\"foo\"]),\n },\n ],\n \"conditional_cases\": [{\n \"cases\": json.dumps([\n {\n \"condition\": \"$sys.func.RAND() \u003c 0.5\",\n \"case_content\": [\n {\n \"message\": {\n \"text\": {\n \"text\": [\"First case\"],\n },\n },\n },\n {\n \"additionalCases\": {\n \"cases\": [{\n \"condition\": \"$sys.func.RAND() \u003c 0.2\",\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n event_handlers=[{\n \"event\": \"some-event\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": True,\n \"messages\": [\n {\n \"channel\": \"some-channel\",\n \"text\": {\n \"texts\": [\"Some text\"],\n },\n },\n {\n \"payload\": \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n \"conversation_success\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"output_audio_text\": {\n \"text\": \"some output text\",\n },\n },\n {\n \"output_audio_text\": {\n \"ssml\": \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n \"live_agent_handoff\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"play_audio\": {\n \"audio_uri\": \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n \"telephony_transfer_call\": {\n \"phone_number\": \"1-234-567-8901\",\n },\n },\n ],\n \"set_parameter_actions\": [\n {\n \"parameter\": \"some-param\",\n \"value\": \"123.45\",\n },\n {\n \"parameter\": \"another-param\",\n \"value\": json.dumps(\"abc\"),\n },\n {\n \"parameter\": \"other-param\",\n \"value\": json.dumps([\"foo\"]),\n },\n ],\n \"conditional_cases\": [{\n \"cases\": json.dumps([\n {\n \"condition\": \"$sys.func.RAND() \u003c 0.5\",\n \"case_content\": [\n {\n \"message\": {\n \"text\": {\n \"text\": [\"First case\"],\n },\n },\n },\n {\n \"additionalCases\": {\n \"cases\": [{\n \"condition\": \"$sys.func.RAND() \u003c 0.2\",\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n }],\n form={\n \"parameters\": [{\n \"display_name\": \"param1\",\n \"entity_type\": \"projects/-/locations/-/agents/-/entityTypes/sys.date\",\n \"default_value\": json.dumps(\"2000-01-01\"),\n \"fill_behavior\": {\n \"initial_prompt_fulfillment\": {\n \"messages\": [\n {\n \"channel\": \"some-channel\",\n \"text\": {\n \"texts\": [\"Please provide param1\"],\n },\n },\n {\n \"payload\": \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n \"conversation_success\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"output_audio_text\": {\n \"text\": \"some output text\",\n },\n },\n {\n \"output_audio_text\": {\n \"ssml\": \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n \"live_agent_handoff\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"play_audio\": {\n \"audio_uri\": \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n \"telephony_transfer_call\": {\n \"phone_number\": \"1-234-567-8901\",\n },\n },\n ],\n \"set_parameter_actions\": [\n {\n \"parameter\": \"some-param\",\n \"value\": \"123.45\",\n },\n {\n \"parameter\": \"another-param\",\n \"value\": json.dumps(\"abc\"),\n },\n {\n \"parameter\": \"other-param\",\n \"value\": json.dumps([\"foo\"]),\n },\n ],\n \"conditional_cases\": [{\n \"cases\": json.dumps([\n {\n \"condition\": \"$sys.func.RAND() \u003c 0.5\",\n \"case_content\": [\n {\n \"message\": {\n \"text\": {\n \"text\": [\"First case\"],\n },\n },\n },\n {\n \"additionalCases\": {\n \"cases\": [{\n \"condition\": \"$sys.func.RAND() \u003c 0.2\",\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n \"reprompt_event_handlers\": [\n {\n \"event\": \"sys.no-match-1\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": True,\n \"webhook\": my_webhook.id,\n \"tag\": \"some-tag\",\n \"messages\": [\n {\n \"channel\": \"some-channel\",\n \"text\": {\n \"texts\": [\"Please provide param1\"],\n },\n },\n {\n \"payload\": \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n \"conversation_success\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"output_audio_text\": {\n \"text\": \"some output text\",\n },\n },\n {\n \"output_audio_text\": {\n \"ssml\": \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n \"live_agent_handoff\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"play_audio\": {\n \"audio_uri\": \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n \"telephony_transfer_call\": {\n \"phone_number\": \"1-234-567-8901\",\n },\n },\n ],\n \"set_parameter_actions\": [\n {\n \"parameter\": \"some-param\",\n \"value\": \"123.45\",\n },\n {\n \"parameter\": \"another-param\",\n \"value\": json.dumps(\"abc\"),\n },\n {\n \"parameter\": \"other-param\",\n \"value\": json.dumps([\"foo\"]),\n },\n ],\n \"conditional_cases\": [{\n \"cases\": json.dumps([\n {\n \"condition\": \"$sys.func.RAND() \u003c 0.5\",\n \"case_content\": [\n {\n \"message\": {\n \"text\": {\n \"text\": [\"First case\"],\n },\n },\n },\n {\n \"additionalCases\": {\n \"cases\": [{\n \"condition\": \"$sys.func.RAND() \u003c 0.2\",\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n },\n {\n \"event\": \"sys.no-match-2\",\n \"target_flow\": agent.start_flow,\n },\n {\n \"event\": \"sys.no-match-3\",\n \"target_page\": my_page2.id,\n },\n ],\n },\n \"required\": True,\n \"redact\": True,\n \"advanced_settings\": {\n \"dtmf_settings\": {\n \"enabled\": True,\n \"max_digits\": 1,\n \"finish_digit\": \"#\",\n },\n },\n }],\n },\n transition_routes=[{\n \"condition\": \"$page.params.status = 'FINAL'\",\n \"trigger_fulfillment\": {\n \"messages\": [\n {\n \"channel\": \"some-channel\",\n \"text\": {\n \"texts\": [\"information completed, navigating to page 2\"],\n },\n },\n {\n \"payload\": \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n \"conversation_success\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"output_audio_text\": {\n \"text\": \"some output text\",\n },\n },\n {\n \"output_audio_text\": {\n \"ssml\": \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n \"live_agent_handoff\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"play_audio\": {\n \"audio_uri\": \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n \"telephony_transfer_call\": {\n \"phone_number\": \"1-234-567-8901\",\n },\n },\n ],\n \"set_parameter_actions\": [\n {\n \"parameter\": \"some-param\",\n \"value\": \"123.45\",\n },\n {\n \"parameter\": \"another-param\",\n \"value\": json.dumps(\"abc\"),\n },\n {\n \"parameter\": \"other-param\",\n \"value\": json.dumps([\"foo\"]),\n },\n ],\n \"conditional_cases\": [{\n \"cases\": json.dumps([\n {\n \"condition\": \"$sys.func.RAND() \u003c 0.5\",\n \"case_content\": [\n {\n \"message\": {\n \"text\": {\n \"text\": [\"First case\"],\n },\n },\n },\n {\n \"additionalCases\": {\n \"cases\": [{\n \"condition\": \"$sys.func.RAND() \u003c 0.2\",\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n \"target_page\": my_page2.id,\n }],\n advanced_settings={\n \"dtmf_settings\": {\n \"enabled\": True,\n \"max_digits\": 1,\n \"finish_digit\": \"#\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var agent = new Gcp.Diagflow.CxAgent(\"agent\", new()\n {\n DisplayName = \"dialogflowcx-agent\",\n Location = \"global\",\n DefaultLanguageCode = \"en\",\n SupportedLanguageCodes = new[]\n {\n \"fr\",\n \"de\",\n \"es\",\n },\n TimeZone = \"America/New_York\",\n Description = \"Example description.\",\n AvatarUri = \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n EnableStackdriverLogging = true,\n EnableSpellCorrection = true,\n SpeechToTextSettings = new Gcp.Diagflow.Inputs.CxAgentSpeechToTextSettingsArgs\n {\n EnableSpeechAdaptation = true,\n },\n });\n\n var myPage2 = new Gcp.Diagflow.CxPage(\"my_page2\", new()\n {\n Parent = agent.StartFlow,\n DisplayName = \"MyPage2\",\n });\n\n var myWebhook = new Gcp.Diagflow.CxWebhook(\"my_webhook\", new()\n {\n Parent = agent.Id,\n DisplayName = \"MyWebhook\",\n GenericWebService = new Gcp.Diagflow.Inputs.CxWebhookGenericWebServiceArgs\n {\n Uri = \"https://example.com\",\n },\n });\n\n var basicPage = new Gcp.Diagflow.CxPage(\"basic_page\", new()\n {\n Parent = agent.StartFlow,\n DisplayName = \"MyPage\",\n EntryFulfillment = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentArgs\n {\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n Channel = \"some-channel\",\n Text = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Welcome to page\",\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n Payload = @\" {\"\"some-key\"\": \"\"some-value\"\", \"\"other-key\"\": [\"\"other-value\"\"]}\n\",\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n ConversationSuccess = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageConversationSuccessArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageOutputAudioTextArgs\n {\n Text = \"some output text\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageOutputAudioTextArgs\n {\n Ssml = @\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\"\"characters\"\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageLiveAgentHandoffArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n PlayAudio = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessagePlayAudioArgs\n {\n AudioUri = \"http://example.com/some-audio-file.mp3\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageTelephonyTransferCallArgs\n {\n PhoneNumber = \"1-234-567-8901\",\n },\n },\n },\n SetParameterActions = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentSetParameterActionArgs\n {\n Parameter = \"some-param\",\n Value = \"123.45\",\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentSetParameterActionArgs\n {\n Parameter = \"another-param\",\n Value = JsonSerializer.Serialize(\"abc\"),\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentSetParameterActionArgs\n {\n Parameter = \"other-param\",\n Value = JsonSerializer.Serialize(new[]\n {\n \"foo\",\n }),\n },\n },\n ConditionalCases = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentConditionalCaseArgs\n {\n Cases = JsonSerializer.Serialize(new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.5\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"First case\",\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"additionalCases\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"cases\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.2\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Nested case\",\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Final case\",\n },\n },\n },\n },\n },\n },\n }),\n },\n },\n },\n EventHandlers = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageEventHandlerArgs\n {\n Event = \"some-event\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = true,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n Channel = \"some-channel\",\n Text = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Some text\",\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n Payload = @\" {\"\"some-key\"\": \"\"some-value\"\", \"\"other-key\"\": [\"\"other-value\"\"]}\n\",\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n ConversationSuccess = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageConversationSuccessArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Text = \"some output text\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Ssml = @\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\"\"characters\"\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n PlayAudio = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessagePlayAudioArgs\n {\n AudioUri = \"http://example.com/some-audio-file.mp3\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs\n {\n PhoneNumber = \"1-234-567-8901\",\n },\n },\n },\n SetParameterActions = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"some-param\",\n Value = \"123.45\",\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"another-param\",\n Value = JsonSerializer.Serialize(\"abc\"),\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"other-param\",\n Value = JsonSerializer.Serialize(new[]\n {\n \"foo\",\n }),\n },\n },\n ConditionalCases = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentConditionalCaseArgs\n {\n Cases = JsonSerializer.Serialize(new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.5\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"First case\",\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"additionalCases\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"cases\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.2\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Nested case\",\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Final case\",\n },\n },\n },\n },\n },\n },\n }),\n },\n },\n },\n },\n },\n Form = new Gcp.Diagflow.Inputs.CxPageFormArgs\n {\n Parameters = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterArgs\n {\n DisplayName = \"param1\",\n EntityType = \"projects/-/locations/-/agents/-/entityTypes/sys.date\",\n DefaultValue = JsonSerializer.Serialize(\"2000-01-01\"),\n FillBehavior = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorArgs\n {\n InitialPromptFulfillment = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentArgs\n {\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n Channel = \"some-channel\",\n Text = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Please provide param1\",\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n Payload = @\" {\"\"some-key\"\": \"\"some-value\"\", \"\"other-key\"\": [\"\"other-value\"\"]}\n\",\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n ConversationSuccess = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageConversationSuccessArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageOutputAudioTextArgs\n {\n Text = \"some output text\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageOutputAudioTextArgs\n {\n Ssml = @\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\"\"characters\"\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageLiveAgentHandoffArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n PlayAudio = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessagePlayAudioArgs\n {\n AudioUri = \"http://example.com/some-audio-file.mp3\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageTelephonyTransferCallArgs\n {\n PhoneNumber = \"1-234-567-8901\",\n },\n },\n },\n SetParameterActions = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs\n {\n Parameter = \"some-param\",\n Value = \"123.45\",\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs\n {\n Parameter = \"another-param\",\n Value = JsonSerializer.Serialize(\"abc\"),\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs\n {\n Parameter = \"other-param\",\n Value = JsonSerializer.Serialize(new[]\n {\n \"foo\",\n }),\n },\n },\n ConditionalCases = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentConditionalCaseArgs\n {\n Cases = JsonSerializer.Serialize(new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.5\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"First case\",\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"additionalCases\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"cases\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.2\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Nested case\",\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Final case\",\n },\n },\n },\n },\n },\n },\n }),\n },\n },\n },\n RepromptEventHandlers = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerArgs\n {\n Event = \"sys.no-match-1\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = true,\n Webhook = myWebhook.Id,\n Tag = \"some-tag\",\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n Channel = \"some-channel\",\n Text = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Please provide param1\",\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n Payload = @\" {\"\"some-key\"\": \"\"some-value\"\", \"\"other-key\"\": [\"\"other-value\"\"]}\n\",\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n ConversationSuccess = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageConversationSuccessArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Text = \"some output text\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Ssml = @\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\"\"characters\"\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n PlayAudio = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessagePlayAudioArgs\n {\n AudioUri = \"http://example.com/some-audio-file.mp3\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs\n {\n PhoneNumber = \"1-234-567-8901\",\n },\n },\n },\n SetParameterActions = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"some-param\",\n Value = \"123.45\",\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"another-param\",\n Value = JsonSerializer.Serialize(\"abc\"),\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"other-param\",\n Value = JsonSerializer.Serialize(new[]\n {\n \"foo\",\n }),\n },\n },\n ConditionalCases = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentConditionalCaseArgs\n {\n Cases = JsonSerializer.Serialize(new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.5\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"First case\",\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"additionalCases\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"cases\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.2\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Nested case\",\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Final case\",\n },\n },\n },\n },\n },\n },\n }),\n },\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerArgs\n {\n Event = \"sys.no-match-2\",\n TargetFlow = agent.StartFlow,\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerArgs\n {\n Event = \"sys.no-match-3\",\n TargetPage = myPage2.Id,\n },\n },\n },\n Required = true,\n Redact = true,\n AdvancedSettings = new Gcp.Diagflow.Inputs.CxPageFormParameterAdvancedSettingsArgs\n {\n DtmfSettings = new Gcp.Diagflow.Inputs.CxPageFormParameterAdvancedSettingsDtmfSettingsArgs\n {\n Enabled = true,\n MaxDigits = 1,\n FinishDigit = \"#\",\n },\n },\n },\n },\n },\n TransitionRoutes = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteArgs\n {\n Condition = \"$page.params.status = 'FINAL'\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentArgs\n {\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n Channel = \"some-channel\",\n Text = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"information completed, navigating to page 2\",\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n Payload = @\" {\"\"some-key\"\": \"\"some-value\"\", \"\"other-key\"\": [\"\"other-value\"\"]}\n\",\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n ConversationSuccess = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Text = \"some output text\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Ssml = @\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\"\"characters\"\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n PlayAudio = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessagePlayAudioArgs\n {\n AudioUri = \"http://example.com/some-audio-file.mp3\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs\n {\n PhoneNumber = \"1-234-567-8901\",\n },\n },\n },\n SetParameterActions = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"some-param\",\n Value = \"123.45\",\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"another-param\",\n Value = JsonSerializer.Serialize(\"abc\"),\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"other-param\",\n Value = JsonSerializer.Serialize(new[]\n {\n \"foo\",\n }),\n },\n },\n ConditionalCases = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentConditionalCaseArgs\n {\n Cases = JsonSerializer.Serialize(new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.5\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"First case\",\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"additionalCases\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"cases\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.2\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Nested case\",\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Final case\",\n },\n },\n },\n },\n },\n },\n }),\n },\n },\n },\n TargetPage = myPage2.Id,\n },\n },\n AdvancedSettings = new Gcp.Diagflow.Inputs.CxPageAdvancedSettingsArgs\n {\n DtmfSettings = new Gcp.Diagflow.Inputs.CxPageAdvancedSettingsDtmfSettingsArgs\n {\n Enabled = true,\n MaxDigits = 1,\n FinishDigit = \"#\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/diagflow\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tagent, err := diagflow.NewCxAgent(ctx, \"agent\", \u0026diagflow.CxAgentArgs{\n\t\t\tDisplayName: pulumi.String(\"dialogflowcx-agent\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDefaultLanguageCode: pulumi.String(\"en\"),\n\t\t\tSupportedLanguageCodes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"fr\"),\n\t\t\t\tpulumi.String(\"de\"),\n\t\t\t\tpulumi.String(\"es\"),\n\t\t\t},\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tDescription: pulumi.String(\"Example description.\"),\n\t\t\tAvatarUri: pulumi.String(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableSpellCorrection: pulumi.Bool(true),\n\t\t\tSpeechToTextSettings: \u0026diagflow.CxAgentSpeechToTextSettingsArgs{\n\t\t\t\tEnableSpeechAdaptation: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyPage2, err := diagflow.NewCxPage(ctx, \"my_page2\", \u0026diagflow.CxPageArgs{\n\t\t\tParent: agent.StartFlow,\n\t\t\tDisplayName: pulumi.String(\"MyPage2\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyWebhook, err := diagflow.NewCxWebhook(ctx, \"my_webhook\", \u0026diagflow.CxWebhookArgs{\n\t\t\tParent: agent.ID(),\n\t\t\tDisplayName: pulumi.String(\"MyWebhook\"),\n\t\t\tGenericWebService: \u0026diagflow.CxWebhookGenericWebServiceArgs{\n\t\t\t\tUri: pulumi.String(\"https://example.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(\"abc\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\ttmpJSON1, err := json.Marshal([]string{\n\t\t\t\"foo\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson1 := string(tmpJSON1)\n\t\ttmpJSON2, err := json.Marshal([]interface{}{\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.5\",\n\t\t\t\t\"caseContent\": []interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"First case\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"additionalCases\": map[string]interface{}{\n\t\t\t\t\t\t\t\"cases\": []map[string]interface{}{\n\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.2\",\n\t\t\t\t\t\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Nested case\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"Final case\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson2 := string(tmpJSON2)\n\t\ttmpJSON3, err := json.Marshal(\"abc\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson3 := string(tmpJSON3)\n\t\ttmpJSON4, err := json.Marshal([]string{\n\t\t\t\"foo\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson4 := string(tmpJSON4)\n\t\ttmpJSON5, err := json.Marshal([]interface{}{\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.5\",\n\t\t\t\t\"caseContent\": []interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"First case\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"additionalCases\": map[string]interface{}{\n\t\t\t\t\t\t\t\"cases\": []map[string]interface{}{\n\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.2\",\n\t\t\t\t\t\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Nested case\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"Final case\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson5 := string(tmpJSON5)\n\t\ttmpJSON6, err := json.Marshal(\"2000-01-01\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson6 := string(tmpJSON6)\n\t\ttmpJSON7, err := json.Marshal(\"abc\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson7 := string(tmpJSON7)\n\t\ttmpJSON8, err := json.Marshal([]string{\n\t\t\t\"foo\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson8 := string(tmpJSON8)\n\t\ttmpJSON9, err := json.Marshal([]interface{}{\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.5\",\n\t\t\t\t\"caseContent\": []interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"First case\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"additionalCases\": map[string]interface{}{\n\t\t\t\t\t\t\t\"cases\": []map[string]interface{}{\n\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.2\",\n\t\t\t\t\t\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Nested case\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"Final case\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson9 := string(tmpJSON9)\n\t\ttmpJSON10, err := json.Marshal(\"abc\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson10 := string(tmpJSON10)\n\t\ttmpJSON11, err := json.Marshal([]string{\n\t\t\t\"foo\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson11 := string(tmpJSON11)\n\t\ttmpJSON12, err := json.Marshal([]interface{}{\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.5\",\n\t\t\t\t\"caseContent\": []interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"First case\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"additionalCases\": map[string]interface{}{\n\t\t\t\t\t\t\t\"cases\": []map[string]interface{}{\n\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.2\",\n\t\t\t\t\t\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Nested case\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"Final case\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson12 := string(tmpJSON12)\n\t\ttmpJSON13, err := json.Marshal(\"abc\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson13 := string(tmpJSON13)\n\t\ttmpJSON14, err := json.Marshal([]string{\n\t\t\t\"foo\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson14 := string(tmpJSON14)\n\t\ttmpJSON15, err := json.Marshal([]interface{}{\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.5\",\n\t\t\t\t\"caseContent\": []interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"First case\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"additionalCases\": map[string]interface{}{\n\t\t\t\t\t\t\t\"cases\": []map[string]interface{}{\n\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.2\",\n\t\t\t\t\t\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Nested case\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"Final case\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson15 := string(tmpJSON15)\n\t\t_, err = diagflow.NewCxPage(ctx, \"basic_page\", \u0026diagflow.CxPageArgs{\n\t\t\tParent: agent.StartFlow,\n\t\t\tDisplayName: pulumi.String(\"MyPage\"),\n\t\t\tEntryFulfillment: \u0026diagflow.CxPageEntryFulfillmentArgs{\n\t\t\t\tMessages: diagflow.CxPageEntryFulfillmentMessageArray{\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tChannel: pulumi.String(\"some-channel\"),\n\t\t\t\t\t\tText: \u0026diagflow.CxPageEntryFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"Welcome to page\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tPayload: pulumi.String(\" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tConversationSuccess: \u0026diagflow.CxPageEntryFulfillmentMessageConversationSuccessArgs{\n\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageEntryFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\tText: pulumi.String(\"some output text\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageEntryFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\tSsml: pulumi.String(\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tLiveAgentHandoff: \u0026diagflow.CxPageEntryFulfillmentMessageLiveAgentHandoffArgs{\n\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tPlayAudio: \u0026diagflow.CxPageEntryFulfillmentMessagePlayAudioArgs{\n\t\t\t\t\t\t\tAudioUri: pulumi.String(\"http://example.com/some-audio-file.mp3\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tTelephonyTransferCall: \u0026diagflow.CxPageEntryFulfillmentMessageTelephonyTransferCallArgs{\n\t\t\t\t\t\t\tPhoneNumber: pulumi.String(\"1-234-567-8901\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSetParameterActions: diagflow.CxPageEntryFulfillmentSetParameterActionArray{\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\tParameter: pulumi.String(\"some-param\"),\n\t\t\t\t\t\tValue: pulumi.String(\"123.45\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\tParameter: pulumi.String(\"another-param\"),\n\t\t\t\t\t\tValue: pulumi.String(json0),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\tParameter: pulumi.String(\"other-param\"),\n\t\t\t\t\t\tValue: pulumi.String(json1),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tConditionalCases: diagflow.CxPageEntryFulfillmentConditionalCaseArray{\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentConditionalCaseArgs{\n\t\t\t\t\t\tCases: pulumi.String(json2),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEventHandlers: diagflow.CxPageEventHandlerArray{\n\t\t\t\t\u0026diagflow.CxPageEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"some-event\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(true),\n\t\t\t\t\t\tMessages: diagflow.CxPageEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tChannel: pulumi.String(\"some-channel\"),\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Some text\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPayload: pulumi.String(\" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tConversationSuccess: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageConversationSuccessArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tText: pulumi.String(\"some output text\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tSsml: pulumi.String(\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tLiveAgentHandoff: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPlayAudio: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessagePlayAudioArgs{\n\t\t\t\t\t\t\t\t\tAudioUri: pulumi.String(\"http://example.com/some-audio-file.mp3\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tTelephonyTransferCall: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs{\n\t\t\t\t\t\t\t\t\tPhoneNumber: pulumi.String(\"1-234-567-8901\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSetParameterActions: diagflow.CxPageEventHandlerTriggerFulfillmentSetParameterActionArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"some-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"123.45\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"another-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json3),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"other-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json4),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tConditionalCases: diagflow.CxPageEventHandlerTriggerFulfillmentConditionalCaseArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentConditionalCaseArgs{\n\t\t\t\t\t\t\t\tCases: pulumi.String(json5),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tForm: \u0026diagflow.CxPageFormArgs{\n\t\t\t\tParameters: diagflow.CxPageFormParameterArray{\n\t\t\t\t\t\u0026diagflow.CxPageFormParameterArgs{\n\t\t\t\t\t\tDisplayName: pulumi.String(\"param1\"),\n\t\t\t\t\t\tEntityType: pulumi.String(\"projects/-/locations/-/agents/-/entityTypes/sys.date\"),\n\t\t\t\t\t\tDefaultValue: pulumi.String(json6),\n\t\t\t\t\t\tFillBehavior: \u0026diagflow.CxPageFormParameterFillBehaviorArgs{\n\t\t\t\t\t\t\tInitialPromptFulfillment: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentArgs{\n\t\t\t\t\t\t\t\tMessages: diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArray{\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tChannel: pulumi.String(\"some-channel\"),\n\t\t\t\t\t\t\t\t\t\tText: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Please provide param1\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tPayload: pulumi.String(\" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tConversationSuccess: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageConversationSuccessArgs{\n\t\t\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\t\t\tText: pulumi.String(\"some output text\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\t\t\tSsml: pulumi.String(\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tLiveAgentHandoff: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageLiveAgentHandoffArgs{\n\t\t\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tPlayAudio: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessagePlayAudioArgs{\n\t\t\t\t\t\t\t\t\t\t\tAudioUri: pulumi.String(\"http://example.com/some-audio-file.mp3\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tTelephonyTransferCall: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageTelephonyTransferCallArgs{\n\t\t\t\t\t\t\t\t\t\t\tPhoneNumber: pulumi.String(\"1-234-567-8901\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tSetParameterActions: diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArray{\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\t\t\tParameter: pulumi.String(\"some-param\"),\n\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"123.45\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\t\t\tParameter: pulumi.String(\"another-param\"),\n\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(json7),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\t\t\tParameter: pulumi.String(\"other-param\"),\n\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(json8),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tConditionalCases: diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentConditionalCaseArray{\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentConditionalCaseArgs{\n\t\t\t\t\t\t\t\t\t\tCases: pulumi.String(json9),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRepromptEventHandlers: diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerArray{\n\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerArgs{\n\t\t\t\t\t\t\t\t\tEvent: pulumi.String(\"sys.no-match-1\"),\n\t\t\t\t\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\tWebhook: myWebhook.ID(),\n\t\t\t\t\t\t\t\t\t\tTag: pulumi.String(\"some-tag\"),\n\t\t\t\t\t\t\t\t\t\tMessages: diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tChannel: pulumi.String(\"some-channel\"),\n\t\t\t\t\t\t\t\t\t\t\t\tText: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Please provide param1\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tPayload: pulumi.String(\" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tConversationSuccess: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageConversationSuccessArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tText: pulumi.String(\"some output text\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tSsml: pulumi.String(\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tLiveAgentHandoff: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tPlayAudio: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessagePlayAudioArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tAudioUri: pulumi.String(\"http://example.com/some-audio-file.mp3\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tTelephonyTransferCall: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tPhoneNumber: pulumi.String(\"1-234-567-8901\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tSetParameterActions: diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tParameter: pulumi.String(\"some-param\"),\n\t\t\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"123.45\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tParameter: pulumi.String(\"another-param\"),\n\t\t\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(json10),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tParameter: pulumi.String(\"other-param\"),\n\t\t\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(json11),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tConditionalCases: diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentConditionalCaseArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentConditionalCaseArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tCases: pulumi.String(json12),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerArgs{\n\t\t\t\t\t\t\t\t\tEvent: pulumi.String(\"sys.no-match-2\"),\n\t\t\t\t\t\t\t\t\tTargetFlow: agent.StartFlow,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerArgs{\n\t\t\t\t\t\t\t\t\tEvent: pulumi.String(\"sys.no-match-3\"),\n\t\t\t\t\t\t\t\t\tTargetPage: myPage2.ID(),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRequired: pulumi.Bool(true),\n\t\t\t\t\t\tRedact: pulumi.Bool(true),\n\t\t\t\t\t\tAdvancedSettings: \u0026diagflow.CxPageFormParameterAdvancedSettingsArgs{\n\t\t\t\t\t\t\tDtmfSettings: \u0026diagflow.CxPageFormParameterAdvancedSettingsDtmfSettingsArgs{\n\t\t\t\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\t\t\t\tMaxDigits: pulumi.Int(1),\n\t\t\t\t\t\t\t\tFinishDigit: pulumi.String(\"#\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTransitionRoutes: diagflow.CxPageTransitionRouteArray{\n\t\t\t\t\u0026diagflow.CxPageTransitionRouteArgs{\n\t\t\t\t\tCondition: pulumi.String(\"$page.params.status = 'FINAL'\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentArgs{\n\t\t\t\t\t\tMessages: diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tChannel: pulumi.String(\"some-channel\"),\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"information completed, navigating to page 2\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPayload: pulumi.String(\" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tConversationSuccess: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tText: pulumi.String(\"some output text\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tSsml: pulumi.String(\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tLiveAgentHandoff: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPlayAudio: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessagePlayAudioArgs{\n\t\t\t\t\t\t\t\t\tAudioUri: pulumi.String(\"http://example.com/some-audio-file.mp3\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tTelephonyTransferCall: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs{\n\t\t\t\t\t\t\t\t\tPhoneNumber: pulumi.String(\"1-234-567-8901\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSetParameterActions: diagflow.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"some-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"123.45\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"another-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json13),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"other-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json14),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tConditionalCases: diagflow.CxPageTransitionRouteTriggerFulfillmentConditionalCaseArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentConditionalCaseArgs{\n\t\t\t\t\t\t\t\tCases: pulumi.String(json15),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tTargetPage: myPage2.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAdvancedSettings: \u0026diagflow.CxPageAdvancedSettingsArgs{\n\t\t\t\tDtmfSettings: \u0026diagflow.CxPageAdvancedSettingsDtmfSettingsArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tMaxDigits: pulumi.Int(1),\n\t\t\t\t\tFinishDigit: pulumi.String(\"#\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.diagflow.CxAgent;\nimport com.pulumi.gcp.diagflow.CxAgentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxAgentSpeechToTextSettingsArgs;\nimport com.pulumi.gcp.diagflow.CxPage;\nimport com.pulumi.gcp.diagflow.CxPageArgs;\nimport com.pulumi.gcp.diagflow.CxWebhook;\nimport com.pulumi.gcp.diagflow.CxWebhookArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxWebhookGenericWebServiceArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageEntryFulfillmentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageEventHandlerArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageEventHandlerTriggerFulfillmentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageFormArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageTransitionRouteArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageTransitionRouteTriggerFulfillmentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageAdvancedSettingsArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageAdvancedSettingsDtmfSettingsArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var agent = new CxAgent(\"agent\", CxAgentArgs.builder()\n .displayName(\"dialogflowcx-agent\")\n .location(\"global\")\n .defaultLanguageCode(\"en\")\n .supportedLanguageCodes( \n \"fr\",\n \"de\",\n \"es\")\n .timeZone(\"America/New_York\")\n .description(\"Example description.\")\n .avatarUri(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\")\n .enableStackdriverLogging(true)\n .enableSpellCorrection(true)\n .speechToTextSettings(CxAgentSpeechToTextSettingsArgs.builder()\n .enableSpeechAdaptation(true)\n .build())\n .build());\n\n var myPage2 = new CxPage(\"myPage2\", CxPageArgs.builder()\n .parent(agent.startFlow())\n .displayName(\"MyPage2\")\n .build());\n\n var myWebhook = new CxWebhook(\"myWebhook\", CxWebhookArgs.builder()\n .parent(agent.id())\n .displayName(\"MyWebhook\")\n .genericWebService(CxWebhookGenericWebServiceArgs.builder()\n .uri(\"https://example.com\")\n .build())\n .build());\n\n var basicPage = new CxPage(\"basicPage\", CxPageArgs.builder()\n .parent(agent.startFlow())\n .displayName(\"MyPage\")\n .entryFulfillment(CxPageEntryFulfillmentArgs.builder()\n .messages( \n CxPageEntryFulfillmentMessageArgs.builder()\n .channel(\"some-channel\")\n .text(CxPageEntryFulfillmentMessageTextArgs.builder()\n .texts(\"Welcome to page\")\n .build())\n .build(),\n CxPageEntryFulfillmentMessageArgs.builder()\n .payload(\"\"\"\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n \"\"\")\n .build(),\n CxPageEntryFulfillmentMessageArgs.builder()\n .conversationSuccess(CxPageEntryFulfillmentMessageConversationSuccessArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageEntryFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageEntryFulfillmentMessageOutputAudioTextArgs.builder()\n .text(\"some output text\")\n .build())\n .build(),\n CxPageEntryFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageEntryFulfillmentMessageOutputAudioTextArgs.builder()\n .ssml(\"\"\"\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n \"\"\")\n .build())\n .build(),\n CxPageEntryFulfillmentMessageArgs.builder()\n .liveAgentHandoff(CxPageEntryFulfillmentMessageLiveAgentHandoffArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageEntryFulfillmentMessageArgs.builder()\n .playAudio(CxPageEntryFulfillmentMessagePlayAudioArgs.builder()\n .audioUri(\"http://example.com/some-audio-file.mp3\")\n .build())\n .build(),\n CxPageEntryFulfillmentMessageArgs.builder()\n .telephonyTransferCall(CxPageEntryFulfillmentMessageTelephonyTransferCallArgs.builder()\n .phoneNumber(\"1-234-567-8901\")\n .build())\n .build())\n .setParameterActions( \n CxPageEntryFulfillmentSetParameterActionArgs.builder()\n .parameter(\"some-param\")\n .value(\"123.45\")\n .build(),\n CxPageEntryFulfillmentSetParameterActionArgs.builder()\n .parameter(\"another-param\")\n .value(serializeJson(\n \"abc\"))\n .build(),\n CxPageEntryFulfillmentSetParameterActionArgs.builder()\n .parameter(\"other-param\")\n .value(serializeJson(\n jsonArray(\"foo\")))\n .build())\n .conditionalCases(CxPageEntryFulfillmentConditionalCaseArgs.builder()\n .cases(serializeJson(\n jsonArray(\n jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.5\"),\n jsonProperty(\"caseContent\", jsonArray(\n jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"First case\"))\n ))\n ))\n ), \n jsonObject(\n jsonProperty(\"additionalCases\", jsonObject(\n jsonProperty(\"cases\", jsonArray(jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.2\"),\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Nested case\"))\n ))\n ))\n )))\n )))\n ))\n )\n ))\n ), \n jsonObject(\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Final case\"))\n ))\n ))\n )))\n )\n )))\n .build())\n .build())\n .eventHandlers(CxPageEventHandlerArgs.builder()\n .event(\"some-event\")\n .triggerFulfillment(CxPageEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(true)\n .messages( \n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .channel(\"some-channel\")\n .text(CxPageEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"Some text\")\n .build())\n .build(),\n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .payload(\"\"\"\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n \"\"\")\n .build(),\n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .conversationSuccess(CxPageEventHandlerTriggerFulfillmentMessageConversationSuccessArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .text(\"some output text\")\n .build())\n .build(),\n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .ssml(\"\"\"\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n \"\"\")\n .build())\n .build(),\n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .liveAgentHandoff(CxPageEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .playAudio(CxPageEventHandlerTriggerFulfillmentMessagePlayAudioArgs.builder()\n .audioUri(\"http://example.com/some-audio-file.mp3\")\n .build())\n .build(),\n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .telephonyTransferCall(CxPageEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs.builder()\n .phoneNumber(\"1-234-567-8901\")\n .build())\n .build())\n .setParameterActions( \n CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"some-param\")\n .value(\"123.45\")\n .build(),\n CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"another-param\")\n .value(serializeJson(\n \"abc\"))\n .build(),\n CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"other-param\")\n .value(serializeJson(\n jsonArray(\"foo\")))\n .build())\n .conditionalCases(CxPageEventHandlerTriggerFulfillmentConditionalCaseArgs.builder()\n .cases(serializeJson(\n jsonArray(\n jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.5\"),\n jsonProperty(\"caseContent\", jsonArray(\n jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"First case\"))\n ))\n ))\n ), \n jsonObject(\n jsonProperty(\"additionalCases\", jsonObject(\n jsonProperty(\"cases\", jsonArray(jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.2\"),\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Nested case\"))\n ))\n ))\n )))\n )))\n ))\n )\n ))\n ), \n jsonObject(\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Final case\"))\n ))\n ))\n )))\n )\n )))\n .build())\n .build())\n .build())\n .form(CxPageFormArgs.builder()\n .parameters(CxPageFormParameterArgs.builder()\n .displayName(\"param1\")\n .entityType(\"projects/-/locations/-/agents/-/entityTypes/sys.date\")\n .defaultValue(serializeJson(\n \"2000-01-01\"))\n .fillBehavior(CxPageFormParameterFillBehaviorArgs.builder()\n .initialPromptFulfillment(CxPageFormParameterFillBehaviorInitialPromptFulfillmentArgs.builder()\n .messages( \n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .channel(\"some-channel\")\n .text(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageTextArgs.builder()\n .texts(\"Please provide param1\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .payload(\"\"\"\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n \"\"\")\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .conversationSuccess(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageConversationSuccessArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageOutputAudioTextArgs.builder()\n .text(\"some output text\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageOutputAudioTextArgs.builder()\n .ssml(\"\"\"\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n \"\"\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .liveAgentHandoff(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageLiveAgentHandoffArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .playAudio(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessagePlayAudioArgs.builder()\n .audioUri(\"http://example.com/some-audio-file.mp3\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .telephonyTransferCall(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageTelephonyTransferCallArgs.builder()\n .phoneNumber(\"1-234-567-8901\")\n .build())\n .build())\n .setParameterActions( \n CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs.builder()\n .parameter(\"some-param\")\n .value(\"123.45\")\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs.builder()\n .parameter(\"another-param\")\n .value(serializeJson(\n \"abc\"))\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs.builder()\n .parameter(\"other-param\")\n .value(serializeJson(\n jsonArray(\"foo\")))\n .build())\n .conditionalCases(CxPageFormParameterFillBehaviorInitialPromptFulfillmentConditionalCaseArgs.builder()\n .cases(serializeJson(\n jsonArray(\n jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.5\"),\n jsonProperty(\"caseContent\", jsonArray(\n jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"First case\"))\n ))\n ))\n ), \n jsonObject(\n jsonProperty(\"additionalCases\", jsonObject(\n jsonProperty(\"cases\", jsonArray(jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.2\"),\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Nested case\"))\n ))\n ))\n )))\n )))\n ))\n )\n ))\n ), \n jsonObject(\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Final case\"))\n ))\n ))\n )))\n )\n )))\n .build())\n .build())\n .repromptEventHandlers( \n CxPageFormParameterFillBehaviorRepromptEventHandlerArgs.builder()\n .event(\"sys.no-match-1\")\n .triggerFulfillment(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(true)\n .webhook(myWebhook.id())\n .tag(\"some-tag\")\n .messages( \n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .channel(\"some-channel\")\n .text(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"Please provide param1\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .payload(\"\"\"\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n \"\"\")\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .conversationSuccess(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageConversationSuccessArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .text(\"some output text\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .ssml(\"\"\"\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n \"\"\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .liveAgentHandoff(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .playAudio(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessagePlayAudioArgs.builder()\n .audioUri(\"http://example.com/some-audio-file.mp3\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .telephonyTransferCall(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs.builder()\n .phoneNumber(\"1-234-567-8901\")\n .build())\n .build())\n .setParameterActions( \n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"some-param\")\n .value(\"123.45\")\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"another-param\")\n .value(serializeJson(\n \"abc\"))\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"other-param\")\n .value(serializeJson(\n jsonArray(\"foo\")))\n .build())\n .conditionalCases(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentConditionalCaseArgs.builder()\n .cases(serializeJson(\n jsonArray(\n jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.5\"),\n jsonProperty(\"caseContent\", jsonArray(\n jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"First case\"))\n ))\n ))\n ), \n jsonObject(\n jsonProperty(\"additionalCases\", jsonObject(\n jsonProperty(\"cases\", jsonArray(jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.2\"),\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Nested case\"))\n ))\n ))\n )))\n )))\n ))\n )\n ))\n ), \n jsonObject(\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Final case\"))\n ))\n ))\n )))\n )\n )))\n .build())\n .build())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerArgs.builder()\n .event(\"sys.no-match-2\")\n .targetFlow(agent.startFlow())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerArgs.builder()\n .event(\"sys.no-match-3\")\n .targetPage(myPage2.id())\n .build())\n .build())\n .required(\"true\")\n .redact(\"true\")\n .advancedSettings(CxPageFormParameterAdvancedSettingsArgs.builder()\n .dtmfSettings(CxPageFormParameterAdvancedSettingsDtmfSettingsArgs.builder()\n .enabled(true)\n .maxDigits(1)\n .finishDigit(\"#\")\n .build())\n .build())\n .build())\n .build())\n .transitionRoutes(CxPageTransitionRouteArgs.builder()\n .condition(\"$page.params.status = 'FINAL'\")\n .triggerFulfillment(CxPageTransitionRouteTriggerFulfillmentArgs.builder()\n .messages( \n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .channel(\"some-channel\")\n .text(CxPageTransitionRouteTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"information completed, navigating to page 2\")\n .build())\n .build(),\n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .payload(\"\"\"\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n \"\"\")\n .build(),\n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .conversationSuccess(CxPageTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .text(\"some output text\")\n .build())\n .build(),\n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .ssml(\"\"\"\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n \"\"\")\n .build())\n .build(),\n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .liveAgentHandoff(CxPageTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .playAudio(CxPageTransitionRouteTriggerFulfillmentMessagePlayAudioArgs.builder()\n .audioUri(\"http://example.com/some-audio-file.mp3\")\n .build())\n .build(),\n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .telephonyTransferCall(CxPageTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs.builder()\n .phoneNumber(\"1-234-567-8901\")\n .build())\n .build())\n .setParameterActions( \n CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"some-param\")\n .value(\"123.45\")\n .build(),\n CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"another-param\")\n .value(serializeJson(\n \"abc\"))\n .build(),\n CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"other-param\")\n .value(serializeJson(\n jsonArray(\"foo\")))\n .build())\n .conditionalCases(CxPageTransitionRouteTriggerFulfillmentConditionalCaseArgs.builder()\n .cases(serializeJson(\n jsonArray(\n jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.5\"),\n jsonProperty(\"caseContent\", jsonArray(\n jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"First case\"))\n ))\n ))\n ), \n jsonObject(\n jsonProperty(\"additionalCases\", jsonObject(\n jsonProperty(\"cases\", jsonArray(jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.2\"),\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Nested case\"))\n ))\n ))\n )))\n )))\n ))\n )\n ))\n ), \n jsonObject(\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Final case\"))\n ))\n ))\n )))\n )\n )))\n .build())\n .build())\n .targetPage(myPage2.id())\n .build())\n .advancedSettings(CxPageAdvancedSettingsArgs.builder()\n .dtmfSettings(CxPageAdvancedSettingsDtmfSettingsArgs.builder()\n .enabled(true)\n .maxDigits(1)\n .finishDigit(\"#\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n agent:\n type: gcp:diagflow:CxAgent\n properties:\n displayName: dialogflowcx-agent\n location: global\n defaultLanguageCode: en\n supportedLanguageCodes:\n - fr\n - de\n - es\n timeZone: America/New_York\n description: Example description.\n avatarUri: https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\n enableStackdriverLogging: true\n enableSpellCorrection: true\n speechToTextSettings:\n enableSpeechAdaptation: true\n basicPage:\n type: gcp:diagflow:CxPage\n name: basic_page\n properties:\n parent: ${agent.startFlow}\n displayName: MyPage\n entryFulfillment:\n messages:\n - channel: some-channel\n text:\n texts:\n - Welcome to page\n - payload: |2\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n - conversationSuccess:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - outputAudioText:\n text: some output text\n - outputAudioText:\n ssml: |2\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n - liveAgentHandoff:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - playAudio:\n audioUri: http://example.com/some-audio-file.mp3\n - telephonyTransferCall:\n phoneNumber: 1-234-567-8901\n setParameterActions:\n - parameter: some-param\n value: '123.45'\n - parameter: another-param\n value:\n fn::toJSON: abc\n - parameter: other-param\n value:\n fn::toJSON:\n - foo\n conditionalCases:\n - cases:\n fn::toJSON:\n - condition: $sys.func.RAND() \u003c 0.5\n caseContent:\n - message:\n text:\n text:\n - First case\n - additionalCases:\n cases:\n - condition: $sys.func.RAND() \u003c 0.2\n caseContent:\n - message:\n text:\n text:\n - Nested case\n - caseContent:\n - message:\n text:\n text:\n - Final case\n eventHandlers:\n - event: some-event\n triggerFulfillment:\n returnPartialResponses: true\n messages:\n - channel: some-channel\n text:\n texts:\n - Some text\n - payload: |2\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n - conversationSuccess:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - outputAudioText:\n text: some output text\n - outputAudioText:\n ssml: |2\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n - liveAgentHandoff:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - playAudio:\n audioUri: http://example.com/some-audio-file.mp3\n - telephonyTransferCall:\n phoneNumber: 1-234-567-8901\n setParameterActions:\n - parameter: some-param\n value: '123.45'\n - parameter: another-param\n value:\n fn::toJSON: abc\n - parameter: other-param\n value:\n fn::toJSON:\n - foo\n conditionalCases:\n - cases:\n fn::toJSON:\n - condition: $sys.func.RAND() \u003c 0.5\n caseContent:\n - message:\n text:\n text:\n - First case\n - additionalCases:\n cases:\n - condition: $sys.func.RAND() \u003c 0.2\n caseContent:\n - message:\n text:\n text:\n - Nested case\n - caseContent:\n - message:\n text:\n text:\n - Final case\n form:\n parameters:\n - displayName: param1\n entityType: projects/-/locations/-/agents/-/entityTypes/sys.date\n defaultValue:\n fn::toJSON: 2000-01-01\n fillBehavior:\n initialPromptFulfillment:\n messages:\n - channel: some-channel\n text:\n texts:\n - Please provide param1\n - payload: |2\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n - conversationSuccess:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - outputAudioText:\n text: some output text\n - outputAudioText:\n ssml: |2\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n - liveAgentHandoff:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - playAudio:\n audioUri: http://example.com/some-audio-file.mp3\n - telephonyTransferCall:\n phoneNumber: 1-234-567-8901\n setParameterActions:\n - parameter: some-param\n value: '123.45'\n - parameter: another-param\n value:\n fn::toJSON: abc\n - parameter: other-param\n value:\n fn::toJSON:\n - foo\n conditionalCases:\n - cases:\n fn::toJSON:\n - condition: $sys.func.RAND() \u003c 0.5\n caseContent:\n - message:\n text:\n text:\n - First case\n - additionalCases:\n cases:\n - condition: $sys.func.RAND() \u003c 0.2\n caseContent:\n - message:\n text:\n text:\n - Nested case\n - caseContent:\n - message:\n text:\n text:\n - Final case\n repromptEventHandlers:\n - event: sys.no-match-1\n triggerFulfillment:\n returnPartialResponses: true\n webhook: ${myWebhook.id}\n tag: some-tag\n messages:\n - channel: some-channel\n text:\n texts:\n - Please provide param1\n - payload: |2\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n - conversationSuccess:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - outputAudioText:\n text: some output text\n - outputAudioText:\n ssml: |2\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n - liveAgentHandoff:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - playAudio:\n audioUri: http://example.com/some-audio-file.mp3\n - telephonyTransferCall:\n phoneNumber: 1-234-567-8901\n setParameterActions:\n - parameter: some-param\n value: '123.45'\n - parameter: another-param\n value:\n fn::toJSON: abc\n - parameter: other-param\n value:\n fn::toJSON:\n - foo\n conditionalCases:\n - cases:\n fn::toJSON:\n - condition: $sys.func.RAND() \u003c 0.5\n caseContent:\n - message:\n text:\n text:\n - First case\n - additionalCases:\n cases:\n - condition: $sys.func.RAND() \u003c 0.2\n caseContent:\n - message:\n text:\n text:\n - Nested case\n - caseContent:\n - message:\n text:\n text:\n - Final case\n - event: sys.no-match-2\n targetFlow: ${agent.startFlow}\n - event: sys.no-match-3\n targetPage: ${myPage2.id}\n required: 'true'\n redact: 'true'\n advancedSettings:\n dtmfSettings:\n enabled: true\n maxDigits: 1\n finishDigit: '#'\n transitionRoutes:\n - condition: $page.params.status = 'FINAL'\n triggerFulfillment:\n messages:\n - channel: some-channel\n text:\n texts:\n - information completed, navigating to page 2\n - payload: |2\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n - conversationSuccess:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - outputAudioText:\n text: some output text\n - outputAudioText:\n ssml: |2\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n - liveAgentHandoff:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - playAudio:\n audioUri: http://example.com/some-audio-file.mp3\n - telephonyTransferCall:\n phoneNumber: 1-234-567-8901\n setParameterActions:\n - parameter: some-param\n value: '123.45'\n - parameter: another-param\n value:\n fn::toJSON: abc\n - parameter: other-param\n value:\n fn::toJSON:\n - foo\n conditionalCases:\n - cases:\n fn::toJSON:\n - condition: $sys.func.RAND() \u003c 0.5\n caseContent:\n - message:\n text:\n text:\n - First case\n - additionalCases:\n cases:\n - condition: $sys.func.RAND() \u003c 0.2\n caseContent:\n - message:\n text:\n text:\n - Nested case\n - caseContent:\n - message:\n text:\n text:\n - Final case\n targetPage: ${myPage2.id}\n advancedSettings:\n dtmfSettings:\n enabled: true\n maxDigits: 1\n finishDigit: '#'\n myPage2:\n type: gcp:diagflow:CxPage\n name: my_page2\n properties:\n parent: ${agent.startFlow}\n displayName: MyPage2\n myWebhook:\n type: gcp:diagflow:CxWebhook\n name: my_webhook\n properties:\n parent: ${agent.id}\n displayName: MyWebhook\n genericWebService:\n uri: https://example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPage can be imported using any of these accepted formats:\n\n* `{{parent}}/pages/{{name}}`\n\n* `{{parent}}/{{name}}`\n\nWhen using the `pulumi import` command, Page can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:diagflow/cxPage:CxPage default {{parent}}/pages/{{name}}\n```\n\n```sh\n$ pulumi import gcp:diagflow/cxPage:CxPage default {{parent}}/{{name}}\n```\n\n", + "description": "A Dialogflow CX conversation (session) can be described and visualized as a state machine. The states of a CX session are represented by pages.\n\n\nTo get more information about Page, see:\n\n* [API documentation](https://cloud.google.com/dialogflow/cx/docs/reference/rest/v3/projects.locations.agents.flows.pages)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/dialogflow/cx/docs)\n\n## Example Usage\n\n### Dialogflowcx Page Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst agent = new gcp.diagflow.CxAgent(\"agent\", {\n displayName: \"dialogflowcx-agent\",\n location: \"global\",\n defaultLanguageCode: \"en\",\n supportedLanguageCodes: [\n \"fr\",\n \"de\",\n \"es\",\n ],\n timeZone: \"America/New_York\",\n description: \"Example description.\",\n avatarUri: \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enableStackdriverLogging: true,\n enableSpellCorrection: true,\n speechToTextSettings: {\n enableSpeechAdaptation: true,\n },\n});\nconst myPage2 = new gcp.diagflow.CxPage(\"my_page2\", {\n parent: agent.startFlow,\n displayName: \"MyPage2\",\n});\nconst myWebhook = new gcp.diagflow.CxWebhook(\"my_webhook\", {\n parent: agent.id,\n displayName: \"MyWebhook\",\n genericWebService: {\n uri: \"https://example.com\",\n },\n});\nconst basicPage = new gcp.diagflow.CxPage(\"basic_page\", {\n parent: agent.startFlow,\n displayName: \"MyPage\",\n entryFulfillment: {\n messages: [\n {\n channel: \"some-channel\",\n text: {\n texts: [\"Welcome to page\"],\n },\n },\n {\n payload: \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n conversationSuccess: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n outputAudioText: {\n text: \"some output text\",\n },\n },\n {\n outputAudioText: {\n ssml: \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n liveAgentHandoff: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n playAudio: {\n audioUri: \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n telephonyTransferCall: {\n phoneNumber: \"1-234-567-8901\",\n },\n },\n ],\n setParameterActions: [\n {\n parameter: \"some-param\",\n value: \"123.45\",\n },\n {\n parameter: \"another-param\",\n value: JSON.stringify(\"abc\"),\n },\n {\n parameter: \"other-param\",\n value: JSON.stringify([\"foo\"]),\n },\n ],\n conditionalCases: [{\n cases: JSON.stringify([\n {\n condition: \"$sys.func.RAND() \u003c 0.5\",\n caseContent: [\n {\n message: {\n text: {\n text: [\"First case\"],\n },\n },\n },\n {\n additionalCases: {\n cases: [{\n condition: \"$sys.func.RAND() \u003c 0.2\",\n caseContent: [{\n message: {\n text: {\n text: [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n caseContent: [{\n message: {\n text: {\n text: [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n eventHandlers: [{\n event: \"some-event\",\n triggerFulfillment: {\n returnPartialResponses: true,\n messages: [\n {\n channel: \"some-channel\",\n text: {\n texts: [\"Some text\"],\n },\n },\n {\n payload: \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n conversationSuccess: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n outputAudioText: {\n text: \"some output text\",\n },\n },\n {\n outputAudioText: {\n ssml: \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n liveAgentHandoff: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n playAudio: {\n audioUri: \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n telephonyTransferCall: {\n phoneNumber: \"1-234-567-8901\",\n },\n },\n ],\n setParameterActions: [\n {\n parameter: \"some-param\",\n value: \"123.45\",\n },\n {\n parameter: \"another-param\",\n value: JSON.stringify(\"abc\"),\n },\n {\n parameter: \"other-param\",\n value: JSON.stringify([\"foo\"]),\n },\n ],\n conditionalCases: [{\n cases: JSON.stringify([\n {\n condition: \"$sys.func.RAND() \u003c 0.5\",\n caseContent: [\n {\n message: {\n text: {\n text: [\"First case\"],\n },\n },\n },\n {\n additionalCases: {\n cases: [{\n condition: \"$sys.func.RAND() \u003c 0.2\",\n caseContent: [{\n message: {\n text: {\n text: [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n caseContent: [{\n message: {\n text: {\n text: [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n }],\n form: {\n parameters: [{\n displayName: \"param1\",\n entityType: \"projects/-/locations/-/agents/-/entityTypes/sys.date\",\n defaultValue: JSON.stringify(\"2000-01-01\"),\n fillBehavior: {\n initialPromptFulfillment: {\n messages: [\n {\n channel: \"some-channel\",\n text: {\n texts: [\"Please provide param1\"],\n },\n },\n {\n payload: \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n conversationSuccess: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n outputAudioText: {\n text: \"some output text\",\n },\n },\n {\n outputAudioText: {\n ssml: \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n liveAgentHandoff: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n playAudio: {\n audioUri: \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n telephonyTransferCall: {\n phoneNumber: \"1-234-567-8901\",\n },\n },\n ],\n setParameterActions: [\n {\n parameter: \"some-param\",\n value: \"123.45\",\n },\n {\n parameter: \"another-param\",\n value: JSON.stringify(\"abc\"),\n },\n {\n parameter: \"other-param\",\n value: JSON.stringify([\"foo\"]),\n },\n ],\n conditionalCases: [{\n cases: JSON.stringify([\n {\n condition: \"$sys.func.RAND() \u003c 0.5\",\n caseContent: [\n {\n message: {\n text: {\n text: [\"First case\"],\n },\n },\n },\n {\n additionalCases: {\n cases: [{\n condition: \"$sys.func.RAND() \u003c 0.2\",\n caseContent: [{\n message: {\n text: {\n text: [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n caseContent: [{\n message: {\n text: {\n text: [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n repromptEventHandlers: [\n {\n event: \"sys.no-match-1\",\n triggerFulfillment: {\n returnPartialResponses: true,\n webhook: myWebhook.id,\n tag: \"some-tag\",\n messages: [\n {\n channel: \"some-channel\",\n text: {\n texts: [\"Please provide param1\"],\n },\n },\n {\n payload: \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n conversationSuccess: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n outputAudioText: {\n text: \"some output text\",\n },\n },\n {\n outputAudioText: {\n ssml: \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n liveAgentHandoff: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n playAudio: {\n audioUri: \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n telephonyTransferCall: {\n phoneNumber: \"1-234-567-8901\",\n },\n },\n ],\n setParameterActions: [\n {\n parameter: \"some-param\",\n value: \"123.45\",\n },\n {\n parameter: \"another-param\",\n value: JSON.stringify(\"abc\"),\n },\n {\n parameter: \"other-param\",\n value: JSON.stringify([\"foo\"]),\n },\n ],\n conditionalCases: [{\n cases: JSON.stringify([\n {\n condition: \"$sys.func.RAND() \u003c 0.5\",\n caseContent: [\n {\n message: {\n text: {\n text: [\"First case\"],\n },\n },\n },\n {\n additionalCases: {\n cases: [{\n condition: \"$sys.func.RAND() \u003c 0.2\",\n caseContent: [{\n message: {\n text: {\n text: [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n caseContent: [{\n message: {\n text: {\n text: [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n },\n {\n event: \"sys.no-match-2\",\n targetFlow: agent.startFlow,\n },\n {\n event: \"sys.no-match-3\",\n targetPage: myPage2.id,\n },\n ],\n },\n required: true,\n redact: true,\n advancedSettings: {\n dtmfSettings: {\n enabled: true,\n maxDigits: 1,\n finishDigit: \"#\",\n },\n },\n }],\n },\n transitionRoutes: [{\n condition: \"$page.params.status = 'FINAL'\",\n triggerFulfillment: {\n messages: [\n {\n channel: \"some-channel\",\n text: {\n texts: [\"information completed, navigating to page 2\"],\n },\n },\n {\n payload: \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n conversationSuccess: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n outputAudioText: {\n text: \"some output text\",\n },\n },\n {\n outputAudioText: {\n ssml: \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n liveAgentHandoff: {\n metadata: \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n playAudio: {\n audioUri: \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n telephonyTransferCall: {\n phoneNumber: \"1-234-567-8901\",\n },\n },\n ],\n setParameterActions: [\n {\n parameter: \"some-param\",\n value: \"123.45\",\n },\n {\n parameter: \"another-param\",\n value: JSON.stringify(\"abc\"),\n },\n {\n parameter: \"other-param\",\n value: JSON.stringify([\"foo\"]),\n },\n ],\n conditionalCases: [{\n cases: JSON.stringify([\n {\n condition: \"$sys.func.RAND() \u003c 0.5\",\n caseContent: [\n {\n message: {\n text: {\n text: [\"First case\"],\n },\n },\n },\n {\n additionalCases: {\n cases: [{\n condition: \"$sys.func.RAND() \u003c 0.2\",\n caseContent: [{\n message: {\n text: {\n text: [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n caseContent: [{\n message: {\n text: {\n text: [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n targetPage: myPage2.id,\n }],\n advancedSettings: {\n dtmfSettings: {\n enabled: true,\n maxDigits: 1,\n finishDigit: \"#\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\nagent = gcp.diagflow.CxAgent(\"agent\",\n display_name=\"dialogflowcx-agent\",\n location=\"global\",\n default_language_code=\"en\",\n supported_language_codes=[\n \"fr\",\n \"de\",\n \"es\",\n ],\n time_zone=\"America/New_York\",\n description=\"Example description.\",\n avatar_uri=\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n enable_stackdriver_logging=True,\n enable_spell_correction=True,\n speech_to_text_settings={\n \"enable_speech_adaptation\": True,\n })\nmy_page2 = gcp.diagflow.CxPage(\"my_page2\",\n parent=agent.start_flow,\n display_name=\"MyPage2\")\nmy_webhook = gcp.diagflow.CxWebhook(\"my_webhook\",\n parent=agent.id,\n display_name=\"MyWebhook\",\n generic_web_service={\n \"uri\": \"https://example.com\",\n })\nbasic_page = gcp.diagflow.CxPage(\"basic_page\",\n parent=agent.start_flow,\n display_name=\"MyPage\",\n entry_fulfillment={\n \"messages\": [\n {\n \"channel\": \"some-channel\",\n \"text\": {\n \"texts\": [\"Welcome to page\"],\n },\n },\n {\n \"payload\": \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n \"conversation_success\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"output_audio_text\": {\n \"text\": \"some output text\",\n },\n },\n {\n \"output_audio_text\": {\n \"ssml\": \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n \"live_agent_handoff\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"play_audio\": {\n \"audio_uri\": \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n \"telephony_transfer_call\": {\n \"phone_number\": \"1-234-567-8901\",\n },\n },\n ],\n \"set_parameter_actions\": [\n {\n \"parameter\": \"some-param\",\n \"value\": \"123.45\",\n },\n {\n \"parameter\": \"another-param\",\n \"value\": json.dumps(\"abc\"),\n },\n {\n \"parameter\": \"other-param\",\n \"value\": json.dumps([\"foo\"]),\n },\n ],\n \"conditional_cases\": [{\n \"cases\": json.dumps([\n {\n \"condition\": \"$sys.func.RAND() \u003c 0.5\",\n \"caseContent\": [\n {\n \"message\": {\n \"text\": {\n \"text\": [\"First case\"],\n },\n },\n },\n {\n \"additionalCases\": {\n \"cases\": [{\n \"condition\": \"$sys.func.RAND() \u003c 0.2\",\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n event_handlers=[{\n \"event\": \"some-event\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": True,\n \"messages\": [\n {\n \"channel\": \"some-channel\",\n \"text\": {\n \"texts\": [\"Some text\"],\n },\n },\n {\n \"payload\": \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n \"conversation_success\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"output_audio_text\": {\n \"text\": \"some output text\",\n },\n },\n {\n \"output_audio_text\": {\n \"ssml\": \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n \"live_agent_handoff\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"play_audio\": {\n \"audio_uri\": \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n \"telephony_transfer_call\": {\n \"phone_number\": \"1-234-567-8901\",\n },\n },\n ],\n \"set_parameter_actions\": [\n {\n \"parameter\": \"some-param\",\n \"value\": \"123.45\",\n },\n {\n \"parameter\": \"another-param\",\n \"value\": json.dumps(\"abc\"),\n },\n {\n \"parameter\": \"other-param\",\n \"value\": json.dumps([\"foo\"]),\n },\n ],\n \"conditional_cases\": [{\n \"cases\": json.dumps([\n {\n \"condition\": \"$sys.func.RAND() \u003c 0.5\",\n \"caseContent\": [\n {\n \"message\": {\n \"text\": {\n \"text\": [\"First case\"],\n },\n },\n },\n {\n \"additionalCases\": {\n \"cases\": [{\n \"condition\": \"$sys.func.RAND() \u003c 0.2\",\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n }],\n form={\n \"parameters\": [{\n \"display_name\": \"param1\",\n \"entity_type\": \"projects/-/locations/-/agents/-/entityTypes/sys.date\",\n \"default_value\": json.dumps(\"2000-01-01\"),\n \"fill_behavior\": {\n \"initial_prompt_fulfillment\": {\n \"messages\": [\n {\n \"channel\": \"some-channel\",\n \"text\": {\n \"texts\": [\"Please provide param1\"],\n },\n },\n {\n \"payload\": \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n \"conversation_success\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"output_audio_text\": {\n \"text\": \"some output text\",\n },\n },\n {\n \"output_audio_text\": {\n \"ssml\": \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n \"live_agent_handoff\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"play_audio\": {\n \"audio_uri\": \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n \"telephony_transfer_call\": {\n \"phone_number\": \"1-234-567-8901\",\n },\n },\n ],\n \"set_parameter_actions\": [\n {\n \"parameter\": \"some-param\",\n \"value\": \"123.45\",\n },\n {\n \"parameter\": \"another-param\",\n \"value\": json.dumps(\"abc\"),\n },\n {\n \"parameter\": \"other-param\",\n \"value\": json.dumps([\"foo\"]),\n },\n ],\n \"conditional_cases\": [{\n \"cases\": json.dumps([\n {\n \"condition\": \"$sys.func.RAND() \u003c 0.5\",\n \"caseContent\": [\n {\n \"message\": {\n \"text\": {\n \"text\": [\"First case\"],\n },\n },\n },\n {\n \"additionalCases\": {\n \"cases\": [{\n \"condition\": \"$sys.func.RAND() \u003c 0.2\",\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n \"reprompt_event_handlers\": [\n {\n \"event\": \"sys.no-match-1\",\n \"trigger_fulfillment\": {\n \"return_partial_responses\": True,\n \"webhook\": my_webhook.id,\n \"tag\": \"some-tag\",\n \"messages\": [\n {\n \"channel\": \"some-channel\",\n \"text\": {\n \"texts\": [\"Please provide param1\"],\n },\n },\n {\n \"payload\": \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n \"conversation_success\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"output_audio_text\": {\n \"text\": \"some output text\",\n },\n },\n {\n \"output_audio_text\": {\n \"ssml\": \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n \"live_agent_handoff\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"play_audio\": {\n \"audio_uri\": \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n \"telephony_transfer_call\": {\n \"phone_number\": \"1-234-567-8901\",\n },\n },\n ],\n \"set_parameter_actions\": [\n {\n \"parameter\": \"some-param\",\n \"value\": \"123.45\",\n },\n {\n \"parameter\": \"another-param\",\n \"value\": json.dumps(\"abc\"),\n },\n {\n \"parameter\": \"other-param\",\n \"value\": json.dumps([\"foo\"]),\n },\n ],\n \"conditional_cases\": [{\n \"cases\": json.dumps([\n {\n \"condition\": \"$sys.func.RAND() \u003c 0.5\",\n \"caseContent\": [\n {\n \"message\": {\n \"text\": {\n \"text\": [\"First case\"],\n },\n },\n },\n {\n \"additionalCases\": {\n \"cases\": [{\n \"condition\": \"$sys.func.RAND() \u003c 0.2\",\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n },\n {\n \"event\": \"sys.no-match-2\",\n \"target_flow\": agent.start_flow,\n },\n {\n \"event\": \"sys.no-match-3\",\n \"target_page\": my_page2.id,\n },\n ],\n },\n \"required\": True,\n \"redact\": True,\n \"advanced_settings\": {\n \"dtmf_settings\": {\n \"enabled\": True,\n \"max_digits\": 1,\n \"finish_digit\": \"#\",\n },\n },\n }],\n },\n transition_routes=[{\n \"condition\": \"$page.params.status = 'FINAL'\",\n \"trigger_fulfillment\": {\n \"messages\": [\n {\n \"channel\": \"some-channel\",\n \"text\": {\n \"texts\": [\"information completed, navigating to page 2\"],\n },\n },\n {\n \"payload\": \" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\",\n },\n {\n \"conversation_success\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"output_audio_text\": {\n \"text\": \"some output text\",\n },\n },\n {\n \"output_audio_text\": {\n \"ssml\": \" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\",\n },\n },\n {\n \"live_agent_handoff\": {\n \"metadata\": \" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\",\n },\n },\n {\n \"play_audio\": {\n \"audio_uri\": \"http://example.com/some-audio-file.mp3\",\n },\n },\n {\n \"telephony_transfer_call\": {\n \"phone_number\": \"1-234-567-8901\",\n },\n },\n ],\n \"set_parameter_actions\": [\n {\n \"parameter\": \"some-param\",\n \"value\": \"123.45\",\n },\n {\n \"parameter\": \"another-param\",\n \"value\": json.dumps(\"abc\"),\n },\n {\n \"parameter\": \"other-param\",\n \"value\": json.dumps([\"foo\"]),\n },\n ],\n \"conditional_cases\": [{\n \"cases\": json.dumps([\n {\n \"condition\": \"$sys.func.RAND() \u003c 0.5\",\n \"caseContent\": [\n {\n \"message\": {\n \"text\": {\n \"text\": [\"First case\"],\n },\n },\n },\n {\n \"additionalCases\": {\n \"cases\": [{\n \"condition\": \"$sys.func.RAND() \u003c 0.2\",\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Nested case\"],\n },\n },\n }],\n }],\n },\n },\n ],\n },\n {\n \"caseContent\": [{\n \"message\": {\n \"text\": {\n \"text\": [\"Final case\"],\n },\n },\n }],\n },\n ]),\n }],\n },\n \"target_page\": my_page2.id,\n }],\n advanced_settings={\n \"dtmf_settings\": {\n \"enabled\": True,\n \"max_digits\": 1,\n \"finish_digit\": \"#\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var agent = new Gcp.Diagflow.CxAgent(\"agent\", new()\n {\n DisplayName = \"dialogflowcx-agent\",\n Location = \"global\",\n DefaultLanguageCode = \"en\",\n SupportedLanguageCodes = new[]\n {\n \"fr\",\n \"de\",\n \"es\",\n },\n TimeZone = \"America/New_York\",\n Description = \"Example description.\",\n AvatarUri = \"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\",\n EnableStackdriverLogging = true,\n EnableSpellCorrection = true,\n SpeechToTextSettings = new Gcp.Diagflow.Inputs.CxAgentSpeechToTextSettingsArgs\n {\n EnableSpeechAdaptation = true,\n },\n });\n\n var myPage2 = new Gcp.Diagflow.CxPage(\"my_page2\", new()\n {\n Parent = agent.StartFlow,\n DisplayName = \"MyPage2\",\n });\n\n var myWebhook = new Gcp.Diagflow.CxWebhook(\"my_webhook\", new()\n {\n Parent = agent.Id,\n DisplayName = \"MyWebhook\",\n GenericWebService = new Gcp.Diagflow.Inputs.CxWebhookGenericWebServiceArgs\n {\n Uri = \"https://example.com\",\n },\n });\n\n var basicPage = new Gcp.Diagflow.CxPage(\"basic_page\", new()\n {\n Parent = agent.StartFlow,\n DisplayName = \"MyPage\",\n EntryFulfillment = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentArgs\n {\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n Channel = \"some-channel\",\n Text = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Welcome to page\",\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n Payload = @\" {\"\"some-key\"\": \"\"some-value\"\", \"\"other-key\"\": [\"\"other-value\"\"]}\n\",\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n ConversationSuccess = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageConversationSuccessArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageOutputAudioTextArgs\n {\n Text = \"some output text\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageOutputAudioTextArgs\n {\n Ssml = @\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\"\"characters\"\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageLiveAgentHandoffArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n PlayAudio = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessagePlayAudioArgs\n {\n AudioUri = \"http://example.com/some-audio-file.mp3\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageArgs\n {\n TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentMessageTelephonyTransferCallArgs\n {\n PhoneNumber = \"1-234-567-8901\",\n },\n },\n },\n SetParameterActions = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentSetParameterActionArgs\n {\n Parameter = \"some-param\",\n Value = \"123.45\",\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentSetParameterActionArgs\n {\n Parameter = \"another-param\",\n Value = JsonSerializer.Serialize(\"abc\"),\n },\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentSetParameterActionArgs\n {\n Parameter = \"other-param\",\n Value = JsonSerializer.Serialize(new[]\n {\n \"foo\",\n }),\n },\n },\n ConditionalCases = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageEntryFulfillmentConditionalCaseArgs\n {\n Cases = JsonSerializer.Serialize(new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.5\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"First case\",\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"additionalCases\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"cases\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.2\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Nested case\",\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Final case\",\n },\n },\n },\n },\n },\n },\n }),\n },\n },\n },\n EventHandlers = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageEventHandlerArgs\n {\n Event = \"some-event\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = true,\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n Channel = \"some-channel\",\n Text = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Some text\",\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n Payload = @\" {\"\"some-key\"\": \"\"some-value\"\", \"\"other-key\"\": [\"\"other-value\"\"]}\n\",\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n ConversationSuccess = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageConversationSuccessArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Text = \"some output text\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Ssml = @\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\"\"characters\"\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n PlayAudio = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessagePlayAudioArgs\n {\n AudioUri = \"http://example.com/some-audio-file.mp3\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageArgs\n {\n TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs\n {\n PhoneNumber = \"1-234-567-8901\",\n },\n },\n },\n SetParameterActions = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"some-param\",\n Value = \"123.45\",\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"another-param\",\n Value = JsonSerializer.Serialize(\"abc\"),\n },\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"other-param\",\n Value = JsonSerializer.Serialize(new[]\n {\n \"foo\",\n }),\n },\n },\n ConditionalCases = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageEventHandlerTriggerFulfillmentConditionalCaseArgs\n {\n Cases = JsonSerializer.Serialize(new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.5\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"First case\",\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"additionalCases\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"cases\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.2\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Nested case\",\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Final case\",\n },\n },\n },\n },\n },\n },\n }),\n },\n },\n },\n },\n },\n Form = new Gcp.Diagflow.Inputs.CxPageFormArgs\n {\n Parameters = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterArgs\n {\n DisplayName = \"param1\",\n EntityType = \"projects/-/locations/-/agents/-/entityTypes/sys.date\",\n DefaultValue = JsonSerializer.Serialize(\"2000-01-01\"),\n FillBehavior = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorArgs\n {\n InitialPromptFulfillment = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentArgs\n {\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n Channel = \"some-channel\",\n Text = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Please provide param1\",\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n Payload = @\" {\"\"some-key\"\": \"\"some-value\"\", \"\"other-key\"\": [\"\"other-value\"\"]}\n\",\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n ConversationSuccess = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageConversationSuccessArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageOutputAudioTextArgs\n {\n Text = \"some output text\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageOutputAudioTextArgs\n {\n Ssml = @\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\"\"characters\"\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageLiveAgentHandoffArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n PlayAudio = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessagePlayAudioArgs\n {\n AudioUri = \"http://example.com/some-audio-file.mp3\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs\n {\n TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageTelephonyTransferCallArgs\n {\n PhoneNumber = \"1-234-567-8901\",\n },\n },\n },\n SetParameterActions = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs\n {\n Parameter = \"some-param\",\n Value = \"123.45\",\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs\n {\n Parameter = \"another-param\",\n Value = JsonSerializer.Serialize(\"abc\"),\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs\n {\n Parameter = \"other-param\",\n Value = JsonSerializer.Serialize(new[]\n {\n \"foo\",\n }),\n },\n },\n ConditionalCases = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorInitialPromptFulfillmentConditionalCaseArgs\n {\n Cases = JsonSerializer.Serialize(new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.5\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"First case\",\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"additionalCases\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"cases\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.2\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Nested case\",\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Final case\",\n },\n },\n },\n },\n },\n },\n }),\n },\n },\n },\n RepromptEventHandlers = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerArgs\n {\n Event = \"sys.no-match-1\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentArgs\n {\n ReturnPartialResponses = true,\n Webhook = myWebhook.Id,\n Tag = \"some-tag\",\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n Channel = \"some-channel\",\n Text = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"Please provide param1\",\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n Payload = @\" {\"\"some-key\"\": \"\"some-value\"\", \"\"other-key\"\": [\"\"other-value\"\"]}\n\",\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n ConversationSuccess = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageConversationSuccessArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Text = \"some output text\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Ssml = @\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\"\"characters\"\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n PlayAudio = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessagePlayAudioArgs\n {\n AudioUri = \"http://example.com/some-audio-file.mp3\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs\n {\n TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs\n {\n PhoneNumber = \"1-234-567-8901\",\n },\n },\n },\n SetParameterActions = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"some-param\",\n Value = \"123.45\",\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"another-param\",\n Value = JsonSerializer.Serialize(\"abc\"),\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"other-param\",\n Value = JsonSerializer.Serialize(new[]\n {\n \"foo\",\n }),\n },\n },\n ConditionalCases = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentConditionalCaseArgs\n {\n Cases = JsonSerializer.Serialize(new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.5\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"First case\",\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"additionalCases\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"cases\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.2\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Nested case\",\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Final case\",\n },\n },\n },\n },\n },\n },\n }),\n },\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerArgs\n {\n Event = \"sys.no-match-2\",\n TargetFlow = agent.StartFlow,\n },\n new Gcp.Diagflow.Inputs.CxPageFormParameterFillBehaviorRepromptEventHandlerArgs\n {\n Event = \"sys.no-match-3\",\n TargetPage = myPage2.Id,\n },\n },\n },\n Required = true,\n Redact = true,\n AdvancedSettings = new Gcp.Diagflow.Inputs.CxPageFormParameterAdvancedSettingsArgs\n {\n DtmfSettings = new Gcp.Diagflow.Inputs.CxPageFormParameterAdvancedSettingsDtmfSettingsArgs\n {\n Enabled = true,\n MaxDigits = 1,\n FinishDigit = \"#\",\n },\n },\n },\n },\n },\n TransitionRoutes = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteArgs\n {\n Condition = \"$page.params.status = 'FINAL'\",\n TriggerFulfillment = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentArgs\n {\n Messages = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n Channel = \"some-channel\",\n Text = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageTextArgs\n {\n Texts = new[]\n {\n \"information completed, navigating to page 2\",\n },\n },\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n Payload = @\" {\"\"some-key\"\": \"\"some-value\"\", \"\"other-key\"\": [\"\"other-value\"\"]}\n\",\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n ConversationSuccess = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Text = \"some output text\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n OutputAudioText = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs\n {\n Ssml = @\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\"\"characters\"\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n LiveAgentHandoff = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs\n {\n Metadata = @\" {\"\"some-metadata-key\"\": \"\"some-value\"\", \"\"other-metadata-key\"\": 1234}\n\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n PlayAudio = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessagePlayAudioArgs\n {\n AudioUri = \"http://example.com/some-audio-file.mp3\",\n },\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageArgs\n {\n TelephonyTransferCall = new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs\n {\n PhoneNumber = \"1-234-567-8901\",\n },\n },\n },\n SetParameterActions = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"some-param\",\n Value = \"123.45\",\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"another-param\",\n Value = JsonSerializer.Serialize(\"abc\"),\n },\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs\n {\n Parameter = \"other-param\",\n Value = JsonSerializer.Serialize(new[]\n {\n \"foo\",\n }),\n },\n },\n ConditionalCases = new[]\n {\n new Gcp.Diagflow.Inputs.CxPageTransitionRouteTriggerFulfillmentConditionalCaseArgs\n {\n Cases = JsonSerializer.Serialize(new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.5\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"First case\",\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"additionalCases\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"cases\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"condition\"] = \"$sys.func.RAND() \u003c 0.2\",\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Nested case\",\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n new Dictionary\u003cstring, object?\u003e\n {\n [\"caseContent\"] = new[]\n {\n new Dictionary\u003cstring, object?\u003e\n {\n [\"message\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new Dictionary\u003cstring, object?\u003e\n {\n [\"text\"] = new[]\n {\n \"Final case\",\n },\n },\n },\n },\n },\n },\n }),\n },\n },\n },\n TargetPage = myPage2.Id,\n },\n },\n AdvancedSettings = new Gcp.Diagflow.Inputs.CxPageAdvancedSettingsArgs\n {\n DtmfSettings = new Gcp.Diagflow.Inputs.CxPageAdvancedSettingsDtmfSettingsArgs\n {\n Enabled = true,\n MaxDigits = 1,\n FinishDigit = \"#\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/diagflow\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tagent, err := diagflow.NewCxAgent(ctx, \"agent\", \u0026diagflow.CxAgentArgs{\n\t\t\tDisplayName: pulumi.String(\"dialogflowcx-agent\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDefaultLanguageCode: pulumi.String(\"en\"),\n\t\t\tSupportedLanguageCodes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"fr\"),\n\t\t\t\tpulumi.String(\"de\"),\n\t\t\t\tpulumi.String(\"es\"),\n\t\t\t},\n\t\t\tTimeZone: pulumi.String(\"America/New_York\"),\n\t\t\tDescription: pulumi.String(\"Example description.\"),\n\t\t\tAvatarUri: pulumi.String(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableSpellCorrection: pulumi.Bool(true),\n\t\t\tSpeechToTextSettings: \u0026diagflow.CxAgentSpeechToTextSettingsArgs{\n\t\t\t\tEnableSpeechAdaptation: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyPage2, err := diagflow.NewCxPage(ctx, \"my_page2\", \u0026diagflow.CxPageArgs{\n\t\t\tParent: agent.StartFlow,\n\t\t\tDisplayName: pulumi.String(\"MyPage2\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyWebhook, err := diagflow.NewCxWebhook(ctx, \"my_webhook\", \u0026diagflow.CxWebhookArgs{\n\t\t\tParent: agent.ID(),\n\t\t\tDisplayName: pulumi.String(\"MyWebhook\"),\n\t\t\tGenericWebService: \u0026diagflow.CxWebhookGenericWebServiceArgs{\n\t\t\t\tUri: pulumi.String(\"https://example.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttmpJSON0, err := json.Marshal(\"abc\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\ttmpJSON1, err := json.Marshal([]string{\n\t\t\t\"foo\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson1 := string(tmpJSON1)\n\t\ttmpJSON2, err := json.Marshal([]interface{}{\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.5\",\n\t\t\t\t\"caseContent\": []interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"First case\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"additionalCases\": map[string]interface{}{\n\t\t\t\t\t\t\t\"cases\": []map[string]interface{}{\n\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.2\",\n\t\t\t\t\t\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Nested case\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"Final case\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson2 := string(tmpJSON2)\n\t\ttmpJSON3, err := json.Marshal(\"abc\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson3 := string(tmpJSON3)\n\t\ttmpJSON4, err := json.Marshal([]string{\n\t\t\t\"foo\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson4 := string(tmpJSON4)\n\t\ttmpJSON5, err := json.Marshal([]interface{}{\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.5\",\n\t\t\t\t\"caseContent\": []interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"First case\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"additionalCases\": map[string]interface{}{\n\t\t\t\t\t\t\t\"cases\": []map[string]interface{}{\n\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.2\",\n\t\t\t\t\t\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Nested case\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"Final case\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson5 := string(tmpJSON5)\n\t\ttmpJSON6, err := json.Marshal(\"2000-01-01\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson6 := string(tmpJSON6)\n\t\ttmpJSON7, err := json.Marshal(\"abc\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson7 := string(tmpJSON7)\n\t\ttmpJSON8, err := json.Marshal([]string{\n\t\t\t\"foo\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson8 := string(tmpJSON8)\n\t\ttmpJSON9, err := json.Marshal([]interface{}{\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.5\",\n\t\t\t\t\"caseContent\": []interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"First case\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"additionalCases\": map[string]interface{}{\n\t\t\t\t\t\t\t\"cases\": []map[string]interface{}{\n\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.2\",\n\t\t\t\t\t\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Nested case\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"Final case\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson9 := string(tmpJSON9)\n\t\ttmpJSON10, err := json.Marshal(\"abc\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson10 := string(tmpJSON10)\n\t\ttmpJSON11, err := json.Marshal([]string{\n\t\t\t\"foo\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson11 := string(tmpJSON11)\n\t\ttmpJSON12, err := json.Marshal([]interface{}{\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.5\",\n\t\t\t\t\"caseContent\": []interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"First case\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"additionalCases\": map[string]interface{}{\n\t\t\t\t\t\t\t\"cases\": []map[string]interface{}{\n\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.2\",\n\t\t\t\t\t\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Nested case\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"Final case\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson12 := string(tmpJSON12)\n\t\ttmpJSON13, err := json.Marshal(\"abc\")\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson13 := string(tmpJSON13)\n\t\ttmpJSON14, err := json.Marshal([]string{\n\t\t\t\"foo\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson14 := string(tmpJSON14)\n\t\ttmpJSON15, err := json.Marshal([]interface{}{\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.5\",\n\t\t\t\t\"caseContent\": []interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"First case\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"additionalCases\": map[string]interface{}{\n\t\t\t\t\t\t\t\"cases\": []map[string]interface{}{\n\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\"condition\": \"$sys.func.RAND() \u003c 0.2\",\n\t\t\t\t\t\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"Nested case\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tmap[string]interface{}{\n\t\t\t\t\"caseContent\": []map[string]interface{}{\n\t\t\t\t\tmap[string]interface{}{\n\t\t\t\t\t\t\"message\": map[string]interface{}{\n\t\t\t\t\t\t\t\"text\": map[string]interface{}{\n\t\t\t\t\t\t\t\t\"text\": []string{\n\t\t\t\t\t\t\t\t\t\"Final case\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson15 := string(tmpJSON15)\n\t\t_, err = diagflow.NewCxPage(ctx, \"basic_page\", \u0026diagflow.CxPageArgs{\n\t\t\tParent: agent.StartFlow,\n\t\t\tDisplayName: pulumi.String(\"MyPage\"),\n\t\t\tEntryFulfillment: \u0026diagflow.CxPageEntryFulfillmentArgs{\n\t\t\t\tMessages: diagflow.CxPageEntryFulfillmentMessageArray{\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tChannel: pulumi.String(\"some-channel\"),\n\t\t\t\t\t\tText: \u0026diagflow.CxPageEntryFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"Welcome to page\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tPayload: pulumi.String(\" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tConversationSuccess: \u0026diagflow.CxPageEntryFulfillmentMessageConversationSuccessArgs{\n\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageEntryFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\tText: pulumi.String(\"some output text\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageEntryFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\tSsml: pulumi.String(\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tLiveAgentHandoff: \u0026diagflow.CxPageEntryFulfillmentMessageLiveAgentHandoffArgs{\n\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tPlayAudio: \u0026diagflow.CxPageEntryFulfillmentMessagePlayAudioArgs{\n\t\t\t\t\t\t\tAudioUri: pulumi.String(\"http://example.com/some-audio-file.mp3\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentMessageArgs{\n\t\t\t\t\t\tTelephonyTransferCall: \u0026diagflow.CxPageEntryFulfillmentMessageTelephonyTransferCallArgs{\n\t\t\t\t\t\t\tPhoneNumber: pulumi.String(\"1-234-567-8901\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSetParameterActions: diagflow.CxPageEntryFulfillmentSetParameterActionArray{\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\tParameter: pulumi.String(\"some-param\"),\n\t\t\t\t\t\tValue: pulumi.String(\"123.45\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\tParameter: pulumi.String(\"another-param\"),\n\t\t\t\t\t\tValue: pulumi.String(json0),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\tParameter: pulumi.String(\"other-param\"),\n\t\t\t\t\t\tValue: pulumi.String(json1),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tConditionalCases: diagflow.CxPageEntryFulfillmentConditionalCaseArray{\n\t\t\t\t\t\u0026diagflow.CxPageEntryFulfillmentConditionalCaseArgs{\n\t\t\t\t\t\tCases: pulumi.String(json2),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEventHandlers: diagflow.CxPageEventHandlerArray{\n\t\t\t\t\u0026diagflow.CxPageEventHandlerArgs{\n\t\t\t\t\tEvent: pulumi.String(\"some-event\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(true),\n\t\t\t\t\t\tMessages: diagflow.CxPageEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tChannel: pulumi.String(\"some-channel\"),\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Some text\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPayload: pulumi.String(\" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tConversationSuccess: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageConversationSuccessArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tText: pulumi.String(\"some output text\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tSsml: pulumi.String(\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tLiveAgentHandoff: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPlayAudio: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessagePlayAudioArgs{\n\t\t\t\t\t\t\t\t\tAudioUri: pulumi.String(\"http://example.com/some-audio-file.mp3\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tTelephonyTransferCall: \u0026diagflow.CxPageEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs{\n\t\t\t\t\t\t\t\t\tPhoneNumber: pulumi.String(\"1-234-567-8901\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSetParameterActions: diagflow.CxPageEventHandlerTriggerFulfillmentSetParameterActionArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"some-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"123.45\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"another-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json3),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"other-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json4),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tConditionalCases: diagflow.CxPageEventHandlerTriggerFulfillmentConditionalCaseArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxPageEventHandlerTriggerFulfillmentConditionalCaseArgs{\n\t\t\t\t\t\t\t\tCases: pulumi.String(json5),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tForm: \u0026diagflow.CxPageFormArgs{\n\t\t\t\tParameters: diagflow.CxPageFormParameterArray{\n\t\t\t\t\t\u0026diagflow.CxPageFormParameterArgs{\n\t\t\t\t\t\tDisplayName: pulumi.String(\"param1\"),\n\t\t\t\t\t\tEntityType: pulumi.String(\"projects/-/locations/-/agents/-/entityTypes/sys.date\"),\n\t\t\t\t\t\tDefaultValue: pulumi.String(json6),\n\t\t\t\t\t\tFillBehavior: \u0026diagflow.CxPageFormParameterFillBehaviorArgs{\n\t\t\t\t\t\t\tInitialPromptFulfillment: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentArgs{\n\t\t\t\t\t\t\t\tMessages: diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArray{\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tChannel: pulumi.String(\"some-channel\"),\n\t\t\t\t\t\t\t\t\t\tText: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Please provide param1\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tPayload: pulumi.String(\" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tConversationSuccess: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageConversationSuccessArgs{\n\t\t\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\t\t\tText: pulumi.String(\"some output text\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\t\t\tSsml: pulumi.String(\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tLiveAgentHandoff: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageLiveAgentHandoffArgs{\n\t\t\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tPlayAudio: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessagePlayAudioArgs{\n\t\t\t\t\t\t\t\t\t\t\tAudioUri: pulumi.String(\"http://example.com/some-audio-file.mp3\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\tTelephonyTransferCall: \u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageTelephonyTransferCallArgs{\n\t\t\t\t\t\t\t\t\t\t\tPhoneNumber: pulumi.String(\"1-234-567-8901\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tSetParameterActions: diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArray{\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\t\t\tParameter: pulumi.String(\"some-param\"),\n\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"123.45\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\t\t\tParameter: pulumi.String(\"another-param\"),\n\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(json7),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\t\t\tParameter: pulumi.String(\"other-param\"),\n\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(json8),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tConditionalCases: diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentConditionalCaseArray{\n\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorInitialPromptFulfillmentConditionalCaseArgs{\n\t\t\t\t\t\t\t\t\t\tCases: pulumi.String(json9),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRepromptEventHandlers: diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerArray{\n\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerArgs{\n\t\t\t\t\t\t\t\t\tEvent: pulumi.String(\"sys.no-match-1\"),\n\t\t\t\t\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentArgs{\n\t\t\t\t\t\t\t\t\t\tReturnPartialResponses: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\tWebhook: myWebhook.ID(),\n\t\t\t\t\t\t\t\t\t\tTag: pulumi.String(\"some-tag\"),\n\t\t\t\t\t\t\t\t\t\tMessages: diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tChannel: pulumi.String(\"some-channel\"),\n\t\t\t\t\t\t\t\t\t\t\t\tText: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Please provide param1\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tPayload: pulumi.String(\" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tConversationSuccess: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageConversationSuccessArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tText: pulumi.String(\"some output text\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tSsml: pulumi.String(\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tLiveAgentHandoff: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tPlayAudio: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessagePlayAudioArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tAudioUri: pulumi.String(\"http://example.com/some-audio-file.mp3\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tTelephonyTransferCall: \u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tPhoneNumber: pulumi.String(\"1-234-567-8901\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tSetParameterActions: diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tParameter: pulumi.String(\"some-param\"),\n\t\t\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"123.45\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tParameter: pulumi.String(\"another-param\"),\n\t\t\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(json10),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tParameter: pulumi.String(\"other-param\"),\n\t\t\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(json11),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tConditionalCases: diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentConditionalCaseArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentConditionalCaseArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tCases: pulumi.String(json12),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerArgs{\n\t\t\t\t\t\t\t\t\tEvent: pulumi.String(\"sys.no-match-2\"),\n\t\t\t\t\t\t\t\t\tTargetFlow: agent.StartFlow,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026diagflow.CxPageFormParameterFillBehaviorRepromptEventHandlerArgs{\n\t\t\t\t\t\t\t\t\tEvent: pulumi.String(\"sys.no-match-3\"),\n\t\t\t\t\t\t\t\t\tTargetPage: myPage2.ID(),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRequired: pulumi.Bool(true),\n\t\t\t\t\t\tRedact: pulumi.Bool(true),\n\t\t\t\t\t\tAdvancedSettings: \u0026diagflow.CxPageFormParameterAdvancedSettingsArgs{\n\t\t\t\t\t\t\tDtmfSettings: \u0026diagflow.CxPageFormParameterAdvancedSettingsDtmfSettingsArgs{\n\t\t\t\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\t\t\t\tMaxDigits: pulumi.Int(1),\n\t\t\t\t\t\t\t\tFinishDigit: pulumi.String(\"#\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTransitionRoutes: diagflow.CxPageTransitionRouteArray{\n\t\t\t\t\u0026diagflow.CxPageTransitionRouteArgs{\n\t\t\t\t\tCondition: pulumi.String(\"$page.params.status = 'FINAL'\"),\n\t\t\t\t\tTriggerFulfillment: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentArgs{\n\t\t\t\t\t\tMessages: diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tChannel: pulumi.String(\"some-channel\"),\n\t\t\t\t\t\t\t\tText: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageTextArgs{\n\t\t\t\t\t\t\t\t\tTexts: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"information completed, navigating to page 2\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPayload: pulumi.String(\" {\\\"some-key\\\": \\\"some-value\\\", \\\"other-key\\\": [\\\"other-value\\\"]}\\n\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tConversationSuccess: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tText: pulumi.String(\"some output text\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tOutputAudioText: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs{\n\t\t\t\t\t\t\t\t\tSsml: pulumi.String(\" \u003cspeak\u003eSome example \u003csay-as interpret-as=\\\"characters\\\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tLiveAgentHandoff: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs{\n\t\t\t\t\t\t\t\t\tMetadata: pulumi.String(\" {\\\"some-metadata-key\\\": \\\"some-value\\\", \\\"other-metadata-key\\\": 1234}\\n\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tPlayAudio: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessagePlayAudioArgs{\n\t\t\t\t\t\t\t\t\tAudioUri: pulumi.String(\"http://example.com/some-audio-file.mp3\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageArgs{\n\t\t\t\t\t\t\t\tTelephonyTransferCall: \u0026diagflow.CxPageTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs{\n\t\t\t\t\t\t\t\t\tPhoneNumber: pulumi.String(\"1-234-567-8901\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSetParameterActions: diagflow.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"some-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"123.45\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"another-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json13),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs{\n\t\t\t\t\t\t\t\tParameter: pulumi.String(\"other-param\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(json14),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tConditionalCases: diagflow.CxPageTransitionRouteTriggerFulfillmentConditionalCaseArray{\n\t\t\t\t\t\t\t\u0026diagflow.CxPageTransitionRouteTriggerFulfillmentConditionalCaseArgs{\n\t\t\t\t\t\t\t\tCases: pulumi.String(json15),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tTargetPage: myPage2.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAdvancedSettings: \u0026diagflow.CxPageAdvancedSettingsArgs{\n\t\t\t\tDtmfSettings: \u0026diagflow.CxPageAdvancedSettingsDtmfSettingsArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tMaxDigits: pulumi.Int(1),\n\t\t\t\t\tFinishDigit: pulumi.String(\"#\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.diagflow.CxAgent;\nimport com.pulumi.gcp.diagflow.CxAgentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxAgentSpeechToTextSettingsArgs;\nimport com.pulumi.gcp.diagflow.CxPage;\nimport com.pulumi.gcp.diagflow.CxPageArgs;\nimport com.pulumi.gcp.diagflow.CxWebhook;\nimport com.pulumi.gcp.diagflow.CxWebhookArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxWebhookGenericWebServiceArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageEntryFulfillmentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageEventHandlerArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageEventHandlerTriggerFulfillmentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageFormArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageTransitionRouteArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageTransitionRouteTriggerFulfillmentArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageAdvancedSettingsArgs;\nimport com.pulumi.gcp.diagflow.inputs.CxPageAdvancedSettingsDtmfSettingsArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var agent = new CxAgent(\"agent\", CxAgentArgs.builder()\n .displayName(\"dialogflowcx-agent\")\n .location(\"global\")\n .defaultLanguageCode(\"en\")\n .supportedLanguageCodes( \n \"fr\",\n \"de\",\n \"es\")\n .timeZone(\"America/New_York\")\n .description(\"Example description.\")\n .avatarUri(\"https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\")\n .enableStackdriverLogging(true)\n .enableSpellCorrection(true)\n .speechToTextSettings(CxAgentSpeechToTextSettingsArgs.builder()\n .enableSpeechAdaptation(true)\n .build())\n .build());\n\n var myPage2 = new CxPage(\"myPage2\", CxPageArgs.builder()\n .parent(agent.startFlow())\n .displayName(\"MyPage2\")\n .build());\n\n var myWebhook = new CxWebhook(\"myWebhook\", CxWebhookArgs.builder()\n .parent(agent.id())\n .displayName(\"MyWebhook\")\n .genericWebService(CxWebhookGenericWebServiceArgs.builder()\n .uri(\"https://example.com\")\n .build())\n .build());\n\n var basicPage = new CxPage(\"basicPage\", CxPageArgs.builder()\n .parent(agent.startFlow())\n .displayName(\"MyPage\")\n .entryFulfillment(CxPageEntryFulfillmentArgs.builder()\n .messages( \n CxPageEntryFulfillmentMessageArgs.builder()\n .channel(\"some-channel\")\n .text(CxPageEntryFulfillmentMessageTextArgs.builder()\n .texts(\"Welcome to page\")\n .build())\n .build(),\n CxPageEntryFulfillmentMessageArgs.builder()\n .payload(\"\"\"\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n \"\"\")\n .build(),\n CxPageEntryFulfillmentMessageArgs.builder()\n .conversationSuccess(CxPageEntryFulfillmentMessageConversationSuccessArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageEntryFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageEntryFulfillmentMessageOutputAudioTextArgs.builder()\n .text(\"some output text\")\n .build())\n .build(),\n CxPageEntryFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageEntryFulfillmentMessageOutputAudioTextArgs.builder()\n .ssml(\"\"\"\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n \"\"\")\n .build())\n .build(),\n CxPageEntryFulfillmentMessageArgs.builder()\n .liveAgentHandoff(CxPageEntryFulfillmentMessageLiveAgentHandoffArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageEntryFulfillmentMessageArgs.builder()\n .playAudio(CxPageEntryFulfillmentMessagePlayAudioArgs.builder()\n .audioUri(\"http://example.com/some-audio-file.mp3\")\n .build())\n .build(),\n CxPageEntryFulfillmentMessageArgs.builder()\n .telephonyTransferCall(CxPageEntryFulfillmentMessageTelephonyTransferCallArgs.builder()\n .phoneNumber(\"1-234-567-8901\")\n .build())\n .build())\n .setParameterActions( \n CxPageEntryFulfillmentSetParameterActionArgs.builder()\n .parameter(\"some-param\")\n .value(\"123.45\")\n .build(),\n CxPageEntryFulfillmentSetParameterActionArgs.builder()\n .parameter(\"another-param\")\n .value(serializeJson(\n \"abc\"))\n .build(),\n CxPageEntryFulfillmentSetParameterActionArgs.builder()\n .parameter(\"other-param\")\n .value(serializeJson(\n jsonArray(\"foo\")))\n .build())\n .conditionalCases(CxPageEntryFulfillmentConditionalCaseArgs.builder()\n .cases(serializeJson(\n jsonArray(\n jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.5\"),\n jsonProperty(\"caseContent\", jsonArray(\n jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"First case\"))\n ))\n ))\n ), \n jsonObject(\n jsonProperty(\"additionalCases\", jsonObject(\n jsonProperty(\"cases\", jsonArray(jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.2\"),\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Nested case\"))\n ))\n ))\n )))\n )))\n ))\n )\n ))\n ), \n jsonObject(\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Final case\"))\n ))\n ))\n )))\n )\n )))\n .build())\n .build())\n .eventHandlers(CxPageEventHandlerArgs.builder()\n .event(\"some-event\")\n .triggerFulfillment(CxPageEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(true)\n .messages( \n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .channel(\"some-channel\")\n .text(CxPageEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"Some text\")\n .build())\n .build(),\n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .payload(\"\"\"\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n \"\"\")\n .build(),\n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .conversationSuccess(CxPageEventHandlerTriggerFulfillmentMessageConversationSuccessArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .text(\"some output text\")\n .build())\n .build(),\n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .ssml(\"\"\"\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n \"\"\")\n .build())\n .build(),\n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .liveAgentHandoff(CxPageEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .playAudio(CxPageEventHandlerTriggerFulfillmentMessagePlayAudioArgs.builder()\n .audioUri(\"http://example.com/some-audio-file.mp3\")\n .build())\n .build(),\n CxPageEventHandlerTriggerFulfillmentMessageArgs.builder()\n .telephonyTransferCall(CxPageEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs.builder()\n .phoneNumber(\"1-234-567-8901\")\n .build())\n .build())\n .setParameterActions( \n CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"some-param\")\n .value(\"123.45\")\n .build(),\n CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"another-param\")\n .value(serializeJson(\n \"abc\"))\n .build(),\n CxPageEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"other-param\")\n .value(serializeJson(\n jsonArray(\"foo\")))\n .build())\n .conditionalCases(CxPageEventHandlerTriggerFulfillmentConditionalCaseArgs.builder()\n .cases(serializeJson(\n jsonArray(\n jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.5\"),\n jsonProperty(\"caseContent\", jsonArray(\n jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"First case\"))\n ))\n ))\n ), \n jsonObject(\n jsonProperty(\"additionalCases\", jsonObject(\n jsonProperty(\"cases\", jsonArray(jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.2\"),\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Nested case\"))\n ))\n ))\n )))\n )))\n ))\n )\n ))\n ), \n jsonObject(\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Final case\"))\n ))\n ))\n )))\n )\n )))\n .build())\n .build())\n .build())\n .form(CxPageFormArgs.builder()\n .parameters(CxPageFormParameterArgs.builder()\n .displayName(\"param1\")\n .entityType(\"projects/-/locations/-/agents/-/entityTypes/sys.date\")\n .defaultValue(serializeJson(\n \"2000-01-01\"))\n .fillBehavior(CxPageFormParameterFillBehaviorArgs.builder()\n .initialPromptFulfillment(CxPageFormParameterFillBehaviorInitialPromptFulfillmentArgs.builder()\n .messages( \n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .channel(\"some-channel\")\n .text(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageTextArgs.builder()\n .texts(\"Please provide param1\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .payload(\"\"\"\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n \"\"\")\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .conversationSuccess(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageConversationSuccessArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageOutputAudioTextArgs.builder()\n .text(\"some output text\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageOutputAudioTextArgs.builder()\n .ssml(\"\"\"\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n \"\"\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .liveAgentHandoff(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageLiveAgentHandoffArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .playAudio(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessagePlayAudioArgs.builder()\n .audioUri(\"http://example.com/some-audio-file.mp3\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageArgs.builder()\n .telephonyTransferCall(CxPageFormParameterFillBehaviorInitialPromptFulfillmentMessageTelephonyTransferCallArgs.builder()\n .phoneNumber(\"1-234-567-8901\")\n .build())\n .build())\n .setParameterActions( \n CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs.builder()\n .parameter(\"some-param\")\n .value(\"123.45\")\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs.builder()\n .parameter(\"another-param\")\n .value(serializeJson(\n \"abc\"))\n .build(),\n CxPageFormParameterFillBehaviorInitialPromptFulfillmentSetParameterActionArgs.builder()\n .parameter(\"other-param\")\n .value(serializeJson(\n jsonArray(\"foo\")))\n .build())\n .conditionalCases(CxPageFormParameterFillBehaviorInitialPromptFulfillmentConditionalCaseArgs.builder()\n .cases(serializeJson(\n jsonArray(\n jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.5\"),\n jsonProperty(\"caseContent\", jsonArray(\n jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"First case\"))\n ))\n ))\n ), \n jsonObject(\n jsonProperty(\"additionalCases\", jsonObject(\n jsonProperty(\"cases\", jsonArray(jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.2\"),\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Nested case\"))\n ))\n ))\n )))\n )))\n ))\n )\n ))\n ), \n jsonObject(\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Final case\"))\n ))\n ))\n )))\n )\n )))\n .build())\n .build())\n .repromptEventHandlers( \n CxPageFormParameterFillBehaviorRepromptEventHandlerArgs.builder()\n .event(\"sys.no-match-1\")\n .triggerFulfillment(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentArgs.builder()\n .returnPartialResponses(true)\n .webhook(myWebhook.id())\n .tag(\"some-tag\")\n .messages( \n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .channel(\"some-channel\")\n .text(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"Please provide param1\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .payload(\"\"\"\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n \"\"\")\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .conversationSuccess(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageConversationSuccessArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .text(\"some output text\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .ssml(\"\"\"\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n \"\"\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .liveAgentHandoff(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageLiveAgentHandoffArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .playAudio(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessagePlayAudioArgs.builder()\n .audioUri(\"http://example.com/some-audio-file.mp3\")\n .build())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageArgs.builder()\n .telephonyTransferCall(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentMessageTelephonyTransferCallArgs.builder()\n .phoneNumber(\"1-234-567-8901\")\n .build())\n .build())\n .setParameterActions( \n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"some-param\")\n .value(\"123.45\")\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"another-param\")\n .value(serializeJson(\n \"abc\"))\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"other-param\")\n .value(serializeJson(\n jsonArray(\"foo\")))\n .build())\n .conditionalCases(CxPageFormParameterFillBehaviorRepromptEventHandlerTriggerFulfillmentConditionalCaseArgs.builder()\n .cases(serializeJson(\n jsonArray(\n jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.5\"),\n jsonProperty(\"caseContent\", jsonArray(\n jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"First case\"))\n ))\n ))\n ), \n jsonObject(\n jsonProperty(\"additionalCases\", jsonObject(\n jsonProperty(\"cases\", jsonArray(jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.2\"),\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Nested case\"))\n ))\n ))\n )))\n )))\n ))\n )\n ))\n ), \n jsonObject(\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Final case\"))\n ))\n ))\n )))\n )\n )))\n .build())\n .build())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerArgs.builder()\n .event(\"sys.no-match-2\")\n .targetFlow(agent.startFlow())\n .build(),\n CxPageFormParameterFillBehaviorRepromptEventHandlerArgs.builder()\n .event(\"sys.no-match-3\")\n .targetPage(myPage2.id())\n .build())\n .build())\n .required(\"true\")\n .redact(\"true\")\n .advancedSettings(CxPageFormParameterAdvancedSettingsArgs.builder()\n .dtmfSettings(CxPageFormParameterAdvancedSettingsDtmfSettingsArgs.builder()\n .enabled(true)\n .maxDigits(1)\n .finishDigit(\"#\")\n .build())\n .build())\n .build())\n .build())\n .transitionRoutes(CxPageTransitionRouteArgs.builder()\n .condition(\"$page.params.status = 'FINAL'\")\n .triggerFulfillment(CxPageTransitionRouteTriggerFulfillmentArgs.builder()\n .messages( \n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .channel(\"some-channel\")\n .text(CxPageTransitionRouteTriggerFulfillmentMessageTextArgs.builder()\n .texts(\"information completed, navigating to page 2\")\n .build())\n .build(),\n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .payload(\"\"\"\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n \"\"\")\n .build(),\n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .conversationSuccess(CxPageTransitionRouteTriggerFulfillmentMessageConversationSuccessArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .text(\"some output text\")\n .build())\n .build(),\n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .outputAudioText(CxPageTransitionRouteTriggerFulfillmentMessageOutputAudioTextArgs.builder()\n .ssml(\"\"\"\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n \"\"\")\n .build())\n .build(),\n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .liveAgentHandoff(CxPageTransitionRouteTriggerFulfillmentMessageLiveAgentHandoffArgs.builder()\n .metadata(\"\"\"\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n \"\"\")\n .build())\n .build(),\n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .playAudio(CxPageTransitionRouteTriggerFulfillmentMessagePlayAudioArgs.builder()\n .audioUri(\"http://example.com/some-audio-file.mp3\")\n .build())\n .build(),\n CxPageTransitionRouteTriggerFulfillmentMessageArgs.builder()\n .telephonyTransferCall(CxPageTransitionRouteTriggerFulfillmentMessageTelephonyTransferCallArgs.builder()\n .phoneNumber(\"1-234-567-8901\")\n .build())\n .build())\n .setParameterActions( \n CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"some-param\")\n .value(\"123.45\")\n .build(),\n CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"another-param\")\n .value(serializeJson(\n \"abc\"))\n .build(),\n CxPageTransitionRouteTriggerFulfillmentSetParameterActionArgs.builder()\n .parameter(\"other-param\")\n .value(serializeJson(\n jsonArray(\"foo\")))\n .build())\n .conditionalCases(CxPageTransitionRouteTriggerFulfillmentConditionalCaseArgs.builder()\n .cases(serializeJson(\n jsonArray(\n jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.5\"),\n jsonProperty(\"caseContent\", jsonArray(\n jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"First case\"))\n ))\n ))\n ), \n jsonObject(\n jsonProperty(\"additionalCases\", jsonObject(\n jsonProperty(\"cases\", jsonArray(jsonObject(\n jsonProperty(\"condition\", \"$sys.func.RAND() \u003c 0.2\"),\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Nested case\"))\n ))\n ))\n )))\n )))\n ))\n )\n ))\n ), \n jsonObject(\n jsonProperty(\"caseContent\", jsonArray(jsonObject(\n jsonProperty(\"message\", jsonObject(\n jsonProperty(\"text\", jsonObject(\n jsonProperty(\"text\", jsonArray(\"Final case\"))\n ))\n ))\n )))\n )\n )))\n .build())\n .build())\n .targetPage(myPage2.id())\n .build())\n .advancedSettings(CxPageAdvancedSettingsArgs.builder()\n .dtmfSettings(CxPageAdvancedSettingsDtmfSettingsArgs.builder()\n .enabled(true)\n .maxDigits(1)\n .finishDigit(\"#\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n agent:\n type: gcp:diagflow:CxAgent\n properties:\n displayName: dialogflowcx-agent\n location: global\n defaultLanguageCode: en\n supportedLanguageCodes:\n - fr\n - de\n - es\n timeZone: America/New_York\n description: Example description.\n avatarUri: https://cloud.google.com/_static/images/cloud/icons/favicons/onecloud/super_cloud.png\n enableStackdriverLogging: true\n enableSpellCorrection: true\n speechToTextSettings:\n enableSpeechAdaptation: true\n basicPage:\n type: gcp:diagflow:CxPage\n name: basic_page\n properties:\n parent: ${agent.startFlow}\n displayName: MyPage\n entryFulfillment:\n messages:\n - channel: some-channel\n text:\n texts:\n - Welcome to page\n - payload: |2\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n - conversationSuccess:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - outputAudioText:\n text: some output text\n - outputAudioText:\n ssml: |2\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n - liveAgentHandoff:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - playAudio:\n audioUri: http://example.com/some-audio-file.mp3\n - telephonyTransferCall:\n phoneNumber: 1-234-567-8901\n setParameterActions:\n - parameter: some-param\n value: '123.45'\n - parameter: another-param\n value:\n fn::toJSON: abc\n - parameter: other-param\n value:\n fn::toJSON:\n - foo\n conditionalCases:\n - cases:\n fn::toJSON:\n - condition: $sys.func.RAND() \u003c 0.5\n caseContent:\n - message:\n text:\n text:\n - First case\n - additionalCases:\n cases:\n - condition: $sys.func.RAND() \u003c 0.2\n caseContent:\n - message:\n text:\n text:\n - Nested case\n - caseContent:\n - message:\n text:\n text:\n - Final case\n eventHandlers:\n - event: some-event\n triggerFulfillment:\n returnPartialResponses: true\n messages:\n - channel: some-channel\n text:\n texts:\n - Some text\n - payload: |2\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n - conversationSuccess:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - outputAudioText:\n text: some output text\n - outputAudioText:\n ssml: |2\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n - liveAgentHandoff:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - playAudio:\n audioUri: http://example.com/some-audio-file.mp3\n - telephonyTransferCall:\n phoneNumber: 1-234-567-8901\n setParameterActions:\n - parameter: some-param\n value: '123.45'\n - parameter: another-param\n value:\n fn::toJSON: abc\n - parameter: other-param\n value:\n fn::toJSON:\n - foo\n conditionalCases:\n - cases:\n fn::toJSON:\n - condition: $sys.func.RAND() \u003c 0.5\n caseContent:\n - message:\n text:\n text:\n - First case\n - additionalCases:\n cases:\n - condition: $sys.func.RAND() \u003c 0.2\n caseContent:\n - message:\n text:\n text:\n - Nested case\n - caseContent:\n - message:\n text:\n text:\n - Final case\n form:\n parameters:\n - displayName: param1\n entityType: projects/-/locations/-/agents/-/entityTypes/sys.date\n defaultValue:\n fn::toJSON: 2000-01-01\n fillBehavior:\n initialPromptFulfillment:\n messages:\n - channel: some-channel\n text:\n texts:\n - Please provide param1\n - payload: |2\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n - conversationSuccess:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - outputAudioText:\n text: some output text\n - outputAudioText:\n ssml: |2\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n - liveAgentHandoff:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - playAudio:\n audioUri: http://example.com/some-audio-file.mp3\n - telephonyTransferCall:\n phoneNumber: 1-234-567-8901\n setParameterActions:\n - parameter: some-param\n value: '123.45'\n - parameter: another-param\n value:\n fn::toJSON: abc\n - parameter: other-param\n value:\n fn::toJSON:\n - foo\n conditionalCases:\n - cases:\n fn::toJSON:\n - condition: $sys.func.RAND() \u003c 0.5\n caseContent:\n - message:\n text:\n text:\n - First case\n - additionalCases:\n cases:\n - condition: $sys.func.RAND() \u003c 0.2\n caseContent:\n - message:\n text:\n text:\n - Nested case\n - caseContent:\n - message:\n text:\n text:\n - Final case\n repromptEventHandlers:\n - event: sys.no-match-1\n triggerFulfillment:\n returnPartialResponses: true\n webhook: ${myWebhook.id}\n tag: some-tag\n messages:\n - channel: some-channel\n text:\n texts:\n - Please provide param1\n - payload: |2\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n - conversationSuccess:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - outputAudioText:\n text: some output text\n - outputAudioText:\n ssml: |2\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n - liveAgentHandoff:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - playAudio:\n audioUri: http://example.com/some-audio-file.mp3\n - telephonyTransferCall:\n phoneNumber: 1-234-567-8901\n setParameterActions:\n - parameter: some-param\n value: '123.45'\n - parameter: another-param\n value:\n fn::toJSON: abc\n - parameter: other-param\n value:\n fn::toJSON:\n - foo\n conditionalCases:\n - cases:\n fn::toJSON:\n - condition: $sys.func.RAND() \u003c 0.5\n caseContent:\n - message:\n text:\n text:\n - First case\n - additionalCases:\n cases:\n - condition: $sys.func.RAND() \u003c 0.2\n caseContent:\n - message:\n text:\n text:\n - Nested case\n - caseContent:\n - message:\n text:\n text:\n - Final case\n - event: sys.no-match-2\n targetFlow: ${agent.startFlow}\n - event: sys.no-match-3\n targetPage: ${myPage2.id}\n required: 'true'\n redact: 'true'\n advancedSettings:\n dtmfSettings:\n enabled: true\n maxDigits: 1\n finishDigit: '#'\n transitionRoutes:\n - condition: $page.params.status = 'FINAL'\n triggerFulfillment:\n messages:\n - channel: some-channel\n text:\n texts:\n - information completed, navigating to page 2\n - payload: |2\n {\"some-key\": \"some-value\", \"other-key\": [\"other-value\"]}\n - conversationSuccess:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - outputAudioText:\n text: some output text\n - outputAudioText:\n ssml: |2\n \u003cspeak\u003eSome example \u003csay-as interpret-as=\"characters\"\u003eSSML XML\u003c/say-as\u003e\u003c/speak\u003e\n - liveAgentHandoff:\n metadata: |2\n {\"some-metadata-key\": \"some-value\", \"other-metadata-key\": 1234}\n - playAudio:\n audioUri: http://example.com/some-audio-file.mp3\n - telephonyTransferCall:\n phoneNumber: 1-234-567-8901\n setParameterActions:\n - parameter: some-param\n value: '123.45'\n - parameter: another-param\n value:\n fn::toJSON: abc\n - parameter: other-param\n value:\n fn::toJSON:\n - foo\n conditionalCases:\n - cases:\n fn::toJSON:\n - condition: $sys.func.RAND() \u003c 0.5\n caseContent:\n - message:\n text:\n text:\n - First case\n - additionalCases:\n cases:\n - condition: $sys.func.RAND() \u003c 0.2\n caseContent:\n - message:\n text:\n text:\n - Nested case\n - caseContent:\n - message:\n text:\n text:\n - Final case\n targetPage: ${myPage2.id}\n advancedSettings:\n dtmfSettings:\n enabled: true\n maxDigits: 1\n finishDigit: '#'\n myPage2:\n type: gcp:diagflow:CxPage\n name: my_page2\n properties:\n parent: ${agent.startFlow}\n displayName: MyPage2\n myWebhook:\n type: gcp:diagflow:CxWebhook\n name: my_webhook\n properties:\n parent: ${agent.id}\n displayName: MyWebhook\n genericWebService:\n uri: https://example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPage can be imported using any of these accepted formats:\n\n* `{{parent}}/pages/{{name}}`\n\n* `{{parent}}/{{name}}`\n\nWhen using the `pulumi import` command, Page can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:diagflow/cxPage:CxPage default {{parent}}/pages/{{name}}\n```\n\n```sh\n$ pulumi import gcp:diagflow/cxPage:CxPage default {{parent}}/{{name}}\n```\n\n", "properties": { "advancedSettings": { "$ref": "#/types/gcp:diagflow/CxPageAdvancedSettings:CxPageAdvancedSettings", @@ -192525,7 +192525,7 @@ } }, "gcp:discoveryengine/dataStore:DataStore": { - "description": "Data store is a collection of websites and documents used to find answers for\nend-user's questions in Discovery Engine (a.k.a. Vertex AI Search and\nConversation).\n\n\nTo get more information about DataStore, see:\n\n* [API documentation](https://cloud.google.com/generative-ai-app-builder/docs/reference/rest/v1/projects.locations.collections.dataStores)\n* How-to Guides\n * [Create a search data store](https://cloud.google.com/generative-ai-app-builder/docs/create-data-store-es)\n\n## Example Usage\n\n### Discoveryengine Datastore Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.discoveryengine.DataStore(\"basic\", {\n location: \"global\",\n dataStoreId: \"data-store-id\",\n displayName: \"tf-test-structured-datastore\",\n industryVertical: \"GENERIC\",\n contentConfig: \"NO_CONTENT\",\n solutionTypes: [\"SOLUTION_TYPE_SEARCH\"],\n createAdvancedSiteSearch: false,\n skipDefaultSchemaCreation: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.discoveryengine.DataStore(\"basic\",\n location=\"global\",\n data_store_id=\"data-store-id\",\n display_name=\"tf-test-structured-datastore\",\n industry_vertical=\"GENERIC\",\n content_config=\"NO_CONTENT\",\n solution_types=[\"SOLUTION_TYPE_SEARCH\"],\n create_advanced_site_search=False,\n skip_default_schema_creation=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basic = new Gcp.DiscoveryEngine.DataStore(\"basic\", new()\n {\n Location = \"global\",\n DataStoreId = \"data-store-id\",\n DisplayName = \"tf-test-structured-datastore\",\n IndustryVertical = \"GENERIC\",\n ContentConfig = \"NO_CONTENT\",\n SolutionTypes = new[]\n {\n \"SOLUTION_TYPE_SEARCH\",\n },\n CreateAdvancedSiteSearch = false,\n SkipDefaultSchemaCreation = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/discoveryengine\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := discoveryengine.NewDataStore(ctx, \"basic\", \u0026discoveryengine.DataStoreArgs{\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDataStoreId: pulumi.String(\"data-store-id\"),\n\t\t\tDisplayName: pulumi.String(\"tf-test-structured-datastore\"),\n\t\t\tIndustryVertical: pulumi.String(\"GENERIC\"),\n\t\t\tContentConfig: pulumi.String(\"NO_CONTENT\"),\n\t\t\tSolutionTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"SOLUTION_TYPE_SEARCH\"),\n\t\t\t},\n\t\t\tCreateAdvancedSiteSearch: pulumi.Bool(false),\n\t\t\tSkipDefaultSchemaCreation: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.discoveryengine.DataStore;\nimport com.pulumi.gcp.discoveryengine.DataStoreArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basic = new DataStore(\"basic\", DataStoreArgs.builder()\n .location(\"global\")\n .dataStoreId(\"data-store-id\")\n .displayName(\"tf-test-structured-datastore\")\n .industryVertical(\"GENERIC\")\n .contentConfig(\"NO_CONTENT\")\n .solutionTypes(\"SOLUTION_TYPE_SEARCH\")\n .createAdvancedSiteSearch(false)\n .skipDefaultSchemaCreation(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:discoveryengine:DataStore\n properties:\n location: global\n dataStoreId: data-store-id\n displayName: tf-test-structured-datastore\n industryVertical: GENERIC\n contentConfig: NO_CONTENT\n solutionTypes:\n - SOLUTION_TYPE_SEARCH\n createAdvancedSiteSearch: false\n skipDefaultSchemaCreation: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Discoveryengine Datastore Document Processing Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst documentProcessingConfig = new gcp.discoveryengine.DataStore(\"document_processing_config\", {\n location: \"global\",\n dataStoreId: \"data-store-id\",\n displayName: \"tf-test-structured-datastore\",\n industryVertical: \"GENERIC\",\n contentConfig: \"NO_CONTENT\",\n solutionTypes: [\"SOLUTION_TYPE_SEARCH\"],\n createAdvancedSiteSearch: false,\n documentProcessingConfig: {\n defaultParsingConfig: {\n digitalParsingConfig: {},\n },\n parsingConfigOverrides: [{\n fileType: \"pdf\",\n ocrParsingConfig: {\n useNativeText: true,\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndocument_processing_config = gcp.discoveryengine.DataStore(\"document_processing_config\",\n location=\"global\",\n data_store_id=\"data-store-id\",\n display_name=\"tf-test-structured-datastore\",\n industry_vertical=\"GENERIC\",\n content_config=\"NO_CONTENT\",\n solution_types=[\"SOLUTION_TYPE_SEARCH\"],\n create_advanced_site_search=False,\n document_processing_config={\n \"default_parsing_config\": {\n \"digital_parsing_config\": {},\n },\n \"parsing_config_overrides\": [{\n \"file_type\": \"pdf\",\n \"ocr_parsing_config\": {\n \"use_native_text\": True,\n },\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var documentProcessingConfig = new Gcp.DiscoveryEngine.DataStore(\"document_processing_config\", new()\n {\n Location = \"global\",\n DataStoreId = \"data-store-id\",\n DisplayName = \"tf-test-structured-datastore\",\n IndustryVertical = \"GENERIC\",\n ContentConfig = \"NO_CONTENT\",\n SolutionTypes = new[]\n {\n \"SOLUTION_TYPE_SEARCH\",\n },\n CreateAdvancedSiteSearch = false,\n DocumentProcessingConfig = new Gcp.DiscoveryEngine.Inputs.DataStoreDocumentProcessingConfigArgs\n {\n DefaultParsingConfig = new Gcp.DiscoveryEngine.Inputs.DataStoreDocumentProcessingConfigDefaultParsingConfigArgs\n {\n DigitalParsingConfig = null,\n },\n ParsingConfigOverrides = new[]\n {\n new Gcp.DiscoveryEngine.Inputs.DataStoreDocumentProcessingConfigParsingConfigOverrideArgs\n {\n FileType = \"pdf\",\n OcrParsingConfig = new Gcp.DiscoveryEngine.Inputs.DataStoreDocumentProcessingConfigParsingConfigOverrideOcrParsingConfigArgs\n {\n UseNativeText = true,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/discoveryengine\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := discoveryengine.NewDataStore(ctx, \"document_processing_config\", \u0026discoveryengine.DataStoreArgs{\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDataStoreId: pulumi.String(\"data-store-id\"),\n\t\t\tDisplayName: pulumi.String(\"tf-test-structured-datastore\"),\n\t\t\tIndustryVertical: pulumi.String(\"GENERIC\"),\n\t\t\tContentConfig: pulumi.String(\"NO_CONTENT\"),\n\t\t\tSolutionTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"SOLUTION_TYPE_SEARCH\"),\n\t\t\t},\n\t\t\tCreateAdvancedSiteSearch: pulumi.Bool(false),\n\t\t\tDocumentProcessingConfig: \u0026discoveryengine.DataStoreDocumentProcessingConfigArgs{\n\t\t\t\tDefaultParsingConfig: \u0026discoveryengine.DataStoreDocumentProcessingConfigDefaultParsingConfigArgs{\n\t\t\t\t\tDigitalParsingConfig: nil,\n\t\t\t\t},\n\t\t\t\tParsingConfigOverrides: discoveryengine.DataStoreDocumentProcessingConfigParsingConfigOverrideArray{\n\t\t\t\t\t\u0026discoveryengine.DataStoreDocumentProcessingConfigParsingConfigOverrideArgs{\n\t\t\t\t\t\tFileType: pulumi.String(\"pdf\"),\n\t\t\t\t\t\tOcrParsingConfig: \u0026discoveryengine.DataStoreDocumentProcessingConfigParsingConfigOverrideOcrParsingConfigArgs{\n\t\t\t\t\t\t\tUseNativeText: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.discoveryengine.DataStore;\nimport com.pulumi.gcp.discoveryengine.DataStoreArgs;\nimport com.pulumi.gcp.discoveryengine.inputs.DataStoreDocumentProcessingConfigArgs;\nimport com.pulumi.gcp.discoveryengine.inputs.DataStoreDocumentProcessingConfigDefaultParsingConfigArgs;\nimport com.pulumi.gcp.discoveryengine.inputs.DataStoreDocumentProcessingConfigDefaultParsingConfigDigitalParsingConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var documentProcessingConfig = new DataStore(\"documentProcessingConfig\", DataStoreArgs.builder()\n .location(\"global\")\n .dataStoreId(\"data-store-id\")\n .displayName(\"tf-test-structured-datastore\")\n .industryVertical(\"GENERIC\")\n .contentConfig(\"NO_CONTENT\")\n .solutionTypes(\"SOLUTION_TYPE_SEARCH\")\n .createAdvancedSiteSearch(false)\n .documentProcessingConfig(DataStoreDocumentProcessingConfigArgs.builder()\n .defaultParsingConfig(DataStoreDocumentProcessingConfigDefaultParsingConfigArgs.builder()\n .digitalParsingConfig()\n .build())\n .parsingConfigOverrides(DataStoreDocumentProcessingConfigParsingConfigOverrideArgs.builder()\n .fileType(\"pdf\")\n .ocrParsingConfig(DataStoreDocumentProcessingConfigParsingConfigOverrideOcrParsingConfigArgs.builder()\n .useNativeText(true)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n documentProcessingConfig:\n type: gcp:discoveryengine:DataStore\n name: document_processing_config\n properties:\n location: global\n dataStoreId: data-store-id\n displayName: tf-test-structured-datastore\n industryVertical: GENERIC\n contentConfig: NO_CONTENT\n solutionTypes:\n - SOLUTION_TYPE_SEARCH\n createAdvancedSiteSearch: false\n documentProcessingConfig:\n defaultParsingConfig:\n digitalParsingConfig: {}\n parsingConfigOverrides:\n - fileType: pdf\n ocrParsingConfig:\n useNativeText: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDataStore can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/collections/default_collection/dataStores/{{data_store_id}}`\n\n* `{{project}}/{{location}}/{{data_store_id}}`\n\n* `{{location}}/{{data_store_id}}`\n\nWhen using the `pulumi import` command, DataStore can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:discoveryengine/dataStore:DataStore default projects/{{project}}/locations/{{location}}/collections/default_collection/dataStores/{{data_store_id}}\n```\n\n```sh\n$ pulumi import gcp:discoveryengine/dataStore:DataStore default {{project}}/{{location}}/{{data_store_id}}\n```\n\n```sh\n$ pulumi import gcp:discoveryengine/dataStore:DataStore default {{location}}/{{data_store_id}}\n```\n\n", + "description": "Data store is a collection of websites and documents used to find answers for\nend-user's questions in Discovery Engine (a.k.a. Vertex AI Search and\nConversation).\n\n\nTo get more information about DataStore, see:\n\n* [API documentation](https://cloud.google.com/generative-ai-app-builder/docs/reference/rest/v1/projects.locations.collections.dataStores)\n* How-to Guides\n * [Create a search data store](https://cloud.google.com/generative-ai-app-builder/docs/create-data-store-es)\n\n## Example Usage\n\n### Discoveryengine Datastore Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.discoveryengine.DataStore(\"basic\", {\n location: \"global\",\n dataStoreId: \"data-store-id\",\n displayName: \"tf-test-structured-datastore\",\n industryVertical: \"GENERIC\",\n contentConfig: \"NO_CONTENT\",\n solutionTypes: [\"SOLUTION_TYPE_SEARCH\"],\n createAdvancedSiteSearch: false,\n skipDefaultSchemaCreation: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.discoveryengine.DataStore(\"basic\",\n location=\"global\",\n data_store_id=\"data-store-id\",\n display_name=\"tf-test-structured-datastore\",\n industry_vertical=\"GENERIC\",\n content_config=\"NO_CONTENT\",\n solution_types=[\"SOLUTION_TYPE_SEARCH\"],\n create_advanced_site_search=False,\n skip_default_schema_creation=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basic = new Gcp.DiscoveryEngine.DataStore(\"basic\", new()\n {\n Location = \"global\",\n DataStoreId = \"data-store-id\",\n DisplayName = \"tf-test-structured-datastore\",\n IndustryVertical = \"GENERIC\",\n ContentConfig = \"NO_CONTENT\",\n SolutionTypes = new[]\n {\n \"SOLUTION_TYPE_SEARCH\",\n },\n CreateAdvancedSiteSearch = false,\n SkipDefaultSchemaCreation = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/discoveryengine\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := discoveryengine.NewDataStore(ctx, \"basic\", \u0026discoveryengine.DataStoreArgs{\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDataStoreId: pulumi.String(\"data-store-id\"),\n\t\t\tDisplayName: pulumi.String(\"tf-test-structured-datastore\"),\n\t\t\tIndustryVertical: pulumi.String(\"GENERIC\"),\n\t\t\tContentConfig: pulumi.String(\"NO_CONTENT\"),\n\t\t\tSolutionTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"SOLUTION_TYPE_SEARCH\"),\n\t\t\t},\n\t\t\tCreateAdvancedSiteSearch: pulumi.Bool(false),\n\t\t\tSkipDefaultSchemaCreation: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.discoveryengine.DataStore;\nimport com.pulumi.gcp.discoveryengine.DataStoreArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basic = new DataStore(\"basic\", DataStoreArgs.builder()\n .location(\"global\")\n .dataStoreId(\"data-store-id\")\n .displayName(\"tf-test-structured-datastore\")\n .industryVertical(\"GENERIC\")\n .contentConfig(\"NO_CONTENT\")\n .solutionTypes(\"SOLUTION_TYPE_SEARCH\")\n .createAdvancedSiteSearch(false)\n .skipDefaultSchemaCreation(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:discoveryengine:DataStore\n properties:\n location: global\n dataStoreId: data-store-id\n displayName: tf-test-structured-datastore\n industryVertical: GENERIC\n contentConfig: NO_CONTENT\n solutionTypes:\n - SOLUTION_TYPE_SEARCH\n createAdvancedSiteSearch: false\n skipDefaultSchemaCreation: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Discoveryengine Datastore Document Processing Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst documentProcessingConfig = new gcp.discoveryengine.DataStore(\"document_processing_config\", {\n location: \"global\",\n dataStoreId: \"data-store-id\",\n displayName: \"tf-test-structured-datastore\",\n industryVertical: \"GENERIC\",\n contentConfig: \"NO_CONTENT\",\n solutionTypes: [\"SOLUTION_TYPE_SEARCH\"],\n createAdvancedSiteSearch: false,\n documentProcessingConfig: {\n defaultParsingConfig: {\n digitalParsingConfig: {},\n },\n parsingConfigOverrides: [{\n fileType: \"pdf\",\n ocrParsingConfig: {\n useNativeText: true,\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndocument_processing_config = gcp.discoveryengine.DataStore(\"document_processing_config\",\n location=\"global\",\n data_store_id=\"data-store-id\",\n display_name=\"tf-test-structured-datastore\",\n industry_vertical=\"GENERIC\",\n content_config=\"NO_CONTENT\",\n solution_types=[\"SOLUTION_TYPE_SEARCH\"],\n create_advanced_site_search=False,\n document_processing_config={\n \"default_parsing_config\": {\n \"digital_parsing_config\": {},\n },\n \"parsing_config_overrides\": [{\n \"file_type\": \"pdf\",\n \"ocr_parsing_config\": {\n \"use_native_text\": True,\n },\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var documentProcessingConfig = new Gcp.DiscoveryEngine.DataStore(\"document_processing_config\", new()\n {\n Location = \"global\",\n DataStoreId = \"data-store-id\",\n DisplayName = \"tf-test-structured-datastore\",\n IndustryVertical = \"GENERIC\",\n ContentConfig = \"NO_CONTENT\",\n SolutionTypes = new[]\n {\n \"SOLUTION_TYPE_SEARCH\",\n },\n CreateAdvancedSiteSearch = false,\n DocumentProcessingConfig = new Gcp.DiscoveryEngine.Inputs.DataStoreDocumentProcessingConfigArgs\n {\n DefaultParsingConfig = new Gcp.DiscoveryEngine.Inputs.DataStoreDocumentProcessingConfigDefaultParsingConfigArgs\n {\n DigitalParsingConfig = null,\n },\n ParsingConfigOverrides = new[]\n {\n new Gcp.DiscoveryEngine.Inputs.DataStoreDocumentProcessingConfigParsingConfigOverrideArgs\n {\n FileType = \"pdf\",\n OcrParsingConfig = new Gcp.DiscoveryEngine.Inputs.DataStoreDocumentProcessingConfigParsingConfigOverrideOcrParsingConfigArgs\n {\n UseNativeText = true,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/discoveryengine\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := discoveryengine.NewDataStore(ctx, \"document_processing_config\", \u0026discoveryengine.DataStoreArgs{\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDataStoreId: pulumi.String(\"data-store-id\"),\n\t\t\tDisplayName: pulumi.String(\"tf-test-structured-datastore\"),\n\t\t\tIndustryVertical: pulumi.String(\"GENERIC\"),\n\t\t\tContentConfig: pulumi.String(\"NO_CONTENT\"),\n\t\t\tSolutionTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"SOLUTION_TYPE_SEARCH\"),\n\t\t\t},\n\t\t\tCreateAdvancedSiteSearch: pulumi.Bool(false),\n\t\t\tDocumentProcessingConfig: \u0026discoveryengine.DataStoreDocumentProcessingConfigArgs{\n\t\t\t\tDefaultParsingConfig: \u0026discoveryengine.DataStoreDocumentProcessingConfigDefaultParsingConfigArgs{\n\t\t\t\t\tDigitalParsingConfig: \u0026discoveryengine.DataStoreDocumentProcessingConfigDefaultParsingConfigDigitalParsingConfigArgs{},\n\t\t\t\t},\n\t\t\t\tParsingConfigOverrides: discoveryengine.DataStoreDocumentProcessingConfigParsingConfigOverrideArray{\n\t\t\t\t\t\u0026discoveryengine.DataStoreDocumentProcessingConfigParsingConfigOverrideArgs{\n\t\t\t\t\t\tFileType: pulumi.String(\"pdf\"),\n\t\t\t\t\t\tOcrParsingConfig: \u0026discoveryengine.DataStoreDocumentProcessingConfigParsingConfigOverrideOcrParsingConfigArgs{\n\t\t\t\t\t\t\tUseNativeText: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.discoveryengine.DataStore;\nimport com.pulumi.gcp.discoveryengine.DataStoreArgs;\nimport com.pulumi.gcp.discoveryengine.inputs.DataStoreDocumentProcessingConfigArgs;\nimport com.pulumi.gcp.discoveryengine.inputs.DataStoreDocumentProcessingConfigDefaultParsingConfigArgs;\nimport com.pulumi.gcp.discoveryengine.inputs.DataStoreDocumentProcessingConfigDefaultParsingConfigDigitalParsingConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var documentProcessingConfig = new DataStore(\"documentProcessingConfig\", DataStoreArgs.builder()\n .location(\"global\")\n .dataStoreId(\"data-store-id\")\n .displayName(\"tf-test-structured-datastore\")\n .industryVertical(\"GENERIC\")\n .contentConfig(\"NO_CONTENT\")\n .solutionTypes(\"SOLUTION_TYPE_SEARCH\")\n .createAdvancedSiteSearch(false)\n .documentProcessingConfig(DataStoreDocumentProcessingConfigArgs.builder()\n .defaultParsingConfig(DataStoreDocumentProcessingConfigDefaultParsingConfigArgs.builder()\n .digitalParsingConfig()\n .build())\n .parsingConfigOverrides(DataStoreDocumentProcessingConfigParsingConfigOverrideArgs.builder()\n .fileType(\"pdf\")\n .ocrParsingConfig(DataStoreDocumentProcessingConfigParsingConfigOverrideOcrParsingConfigArgs.builder()\n .useNativeText(true)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n documentProcessingConfig:\n type: gcp:discoveryengine:DataStore\n name: document_processing_config\n properties:\n location: global\n dataStoreId: data-store-id\n displayName: tf-test-structured-datastore\n industryVertical: GENERIC\n contentConfig: NO_CONTENT\n solutionTypes:\n - SOLUTION_TYPE_SEARCH\n createAdvancedSiteSearch: false\n documentProcessingConfig:\n defaultParsingConfig:\n digitalParsingConfig: {}\n parsingConfigOverrides:\n - fileType: pdf\n ocrParsingConfig:\n useNativeText: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDataStore can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/collections/default_collection/dataStores/{{data_store_id}}`\n\n* `{{project}}/{{location}}/{{data_store_id}}`\n\n* `{{location}}/{{data_store_id}}`\n\nWhen using the `pulumi import` command, DataStore can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:discoveryengine/dataStore:DataStore default projects/{{project}}/locations/{{location}}/collections/default_collection/dataStores/{{data_store_id}}\n```\n\n```sh\n$ pulumi import gcp:discoveryengine/dataStore:DataStore default {{project}}/{{location}}/{{data_store_id}}\n```\n\n```sh\n$ pulumi import gcp:discoveryengine/dataStore:DataStore default {{location}}/{{data_store_id}}\n```\n\n", "properties": { "contentConfig": { "type": "string", @@ -192826,7 +192826,7 @@ } }, "gcp:discoveryengine/searchEngine:SearchEngine": { - "description": "Vertex AI Search and Conversation can be used to create a search engine or a chat application by connecting it with a datastore\n\n\nTo get more information about SearchEngine, see:\n\n* [API documentation](https://cloud.google.com/generative-ai-app-builder/docs/reference/rest/v1/projects.locations.collections.engines)\n* How-to Guides\n * [Create a Search Engine](https://cloud.google.com/generative-ai-app-builder/docs/create-engine-es)\n\n## Example Usage\n\n### Discoveryengine Searchengine Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.discoveryengine.DataStore(\"basic\", {\n location: \"global\",\n dataStoreId: \"example-datastore-id\",\n displayName: \"tf-test-structured-datastore\",\n industryVertical: \"GENERIC\",\n contentConfig: \"NO_CONTENT\",\n solutionTypes: [\"SOLUTION_TYPE_SEARCH\"],\n createAdvancedSiteSearch: false,\n});\nconst basicSearchEngine = new gcp.discoveryengine.SearchEngine(\"basic\", {\n engineId: \"example-engine-id\",\n collectionId: \"default_collection\",\n location: basic.location,\n displayName: \"Example Display Name\",\n dataStoreIds: [basic.dataStoreId],\n searchEngineConfig: {},\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.discoveryengine.DataStore(\"basic\",\n location=\"global\",\n data_store_id=\"example-datastore-id\",\n display_name=\"tf-test-structured-datastore\",\n industry_vertical=\"GENERIC\",\n content_config=\"NO_CONTENT\",\n solution_types=[\"SOLUTION_TYPE_SEARCH\"],\n create_advanced_site_search=False)\nbasic_search_engine = gcp.discoveryengine.SearchEngine(\"basic\",\n engine_id=\"example-engine-id\",\n collection_id=\"default_collection\",\n location=basic.location,\n display_name=\"Example Display Name\",\n data_store_ids=[basic.data_store_id],\n search_engine_config={})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basic = new Gcp.DiscoveryEngine.DataStore(\"basic\", new()\n {\n Location = \"global\",\n DataStoreId = \"example-datastore-id\",\n DisplayName = \"tf-test-structured-datastore\",\n IndustryVertical = \"GENERIC\",\n ContentConfig = \"NO_CONTENT\",\n SolutionTypes = new[]\n {\n \"SOLUTION_TYPE_SEARCH\",\n },\n CreateAdvancedSiteSearch = false,\n });\n\n var basicSearchEngine = new Gcp.DiscoveryEngine.SearchEngine(\"basic\", new()\n {\n EngineId = \"example-engine-id\",\n CollectionId = \"default_collection\",\n Location = basic.Location,\n DisplayName = \"Example Display Name\",\n DataStoreIds = new[]\n {\n basic.DataStoreId,\n },\n SearchEngineConfig = null,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/discoveryengine\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbasic, err := discoveryengine.NewDataStore(ctx, \"basic\", \u0026discoveryengine.DataStoreArgs{\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDataStoreId: pulumi.String(\"example-datastore-id\"),\n\t\t\tDisplayName: pulumi.String(\"tf-test-structured-datastore\"),\n\t\t\tIndustryVertical: pulumi.String(\"GENERIC\"),\n\t\t\tContentConfig: pulumi.String(\"NO_CONTENT\"),\n\t\t\tSolutionTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"SOLUTION_TYPE_SEARCH\"),\n\t\t\t},\n\t\t\tCreateAdvancedSiteSearch: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = discoveryengine.NewSearchEngine(ctx, \"basic\", \u0026discoveryengine.SearchEngineArgs{\n\t\t\tEngineId: pulumi.String(\"example-engine-id\"),\n\t\t\tCollectionId: pulumi.String(\"default_collection\"),\n\t\t\tLocation: basic.Location,\n\t\t\tDisplayName: pulumi.String(\"Example Display Name\"),\n\t\t\tDataStoreIds: pulumi.StringArray{\n\t\t\t\tbasic.DataStoreId,\n\t\t\t},\n\t\t\tSearchEngineConfig: nil,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.discoveryengine.DataStore;\nimport com.pulumi.gcp.discoveryengine.DataStoreArgs;\nimport com.pulumi.gcp.discoveryengine.SearchEngine;\nimport com.pulumi.gcp.discoveryengine.SearchEngineArgs;\nimport com.pulumi.gcp.discoveryengine.inputs.SearchEngineSearchEngineConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basic = new DataStore(\"basic\", DataStoreArgs.builder()\n .location(\"global\")\n .dataStoreId(\"example-datastore-id\")\n .displayName(\"tf-test-structured-datastore\")\n .industryVertical(\"GENERIC\")\n .contentConfig(\"NO_CONTENT\")\n .solutionTypes(\"SOLUTION_TYPE_SEARCH\")\n .createAdvancedSiteSearch(false)\n .build());\n\n var basicSearchEngine = new SearchEngine(\"basicSearchEngine\", SearchEngineArgs.builder()\n .engineId(\"example-engine-id\")\n .collectionId(\"default_collection\")\n .location(basic.location())\n .displayName(\"Example Display Name\")\n .dataStoreIds(basic.dataStoreId())\n .searchEngineConfig()\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:discoveryengine:DataStore\n properties:\n location: global\n dataStoreId: example-datastore-id\n displayName: tf-test-structured-datastore\n industryVertical: GENERIC\n contentConfig: NO_CONTENT\n solutionTypes:\n - SOLUTION_TYPE_SEARCH\n createAdvancedSiteSearch: false\n basicSearchEngine:\n type: gcp:discoveryengine:SearchEngine\n name: basic\n properties:\n engineId: example-engine-id\n collectionId: default_collection\n location: ${basic.location}\n displayName: Example Display Name\n dataStoreIds:\n - ${basic.dataStoreId}\n searchEngineConfig: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSearchEngine can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/collections/{{collection_id}}/engines/{{engine_id}}`\n\n* `{{project}}/{{location}}/{{collection_id}}/{{engine_id}}`\n\n* `{{location}}/{{collection_id}}/{{engine_id}}`\n\nWhen using the `pulumi import` command, SearchEngine can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:discoveryengine/searchEngine:SearchEngine default projects/{{project}}/locations/{{location}}/collections/{{collection_id}}/engines/{{engine_id}}\n```\n\n```sh\n$ pulumi import gcp:discoveryengine/searchEngine:SearchEngine default {{project}}/{{location}}/{{collection_id}}/{{engine_id}}\n```\n\n```sh\n$ pulumi import gcp:discoveryengine/searchEngine:SearchEngine default {{location}}/{{collection_id}}/{{engine_id}}\n```\n\n", + "description": "Vertex AI Search and Conversation can be used to create a search engine or a chat application by connecting it with a datastore\n\n\nTo get more information about SearchEngine, see:\n\n* [API documentation](https://cloud.google.com/generative-ai-app-builder/docs/reference/rest/v1/projects.locations.collections.engines)\n* How-to Guides\n * [Create a Search Engine](https://cloud.google.com/generative-ai-app-builder/docs/create-engine-es)\n\n## Example Usage\n\n### Discoveryengine Searchengine Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.discoveryengine.DataStore(\"basic\", {\n location: \"global\",\n dataStoreId: \"example-datastore-id\",\n displayName: \"tf-test-structured-datastore\",\n industryVertical: \"GENERIC\",\n contentConfig: \"NO_CONTENT\",\n solutionTypes: [\"SOLUTION_TYPE_SEARCH\"],\n createAdvancedSiteSearch: false,\n});\nconst basicSearchEngine = new gcp.discoveryengine.SearchEngine(\"basic\", {\n engineId: \"example-engine-id\",\n collectionId: \"default_collection\",\n location: basic.location,\n displayName: \"Example Display Name\",\n dataStoreIds: [basic.dataStoreId],\n searchEngineConfig: {},\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.discoveryengine.DataStore(\"basic\",\n location=\"global\",\n data_store_id=\"example-datastore-id\",\n display_name=\"tf-test-structured-datastore\",\n industry_vertical=\"GENERIC\",\n content_config=\"NO_CONTENT\",\n solution_types=[\"SOLUTION_TYPE_SEARCH\"],\n create_advanced_site_search=False)\nbasic_search_engine = gcp.discoveryengine.SearchEngine(\"basic\",\n engine_id=\"example-engine-id\",\n collection_id=\"default_collection\",\n location=basic.location,\n display_name=\"Example Display Name\",\n data_store_ids=[basic.data_store_id],\n search_engine_config={})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basic = new Gcp.DiscoveryEngine.DataStore(\"basic\", new()\n {\n Location = \"global\",\n DataStoreId = \"example-datastore-id\",\n DisplayName = \"tf-test-structured-datastore\",\n IndustryVertical = \"GENERIC\",\n ContentConfig = \"NO_CONTENT\",\n SolutionTypes = new[]\n {\n \"SOLUTION_TYPE_SEARCH\",\n },\n CreateAdvancedSiteSearch = false,\n });\n\n var basicSearchEngine = new Gcp.DiscoveryEngine.SearchEngine(\"basic\", new()\n {\n EngineId = \"example-engine-id\",\n CollectionId = \"default_collection\",\n Location = basic.Location,\n DisplayName = \"Example Display Name\",\n DataStoreIds = new[]\n {\n basic.DataStoreId,\n },\n SearchEngineConfig = null,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/discoveryengine\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbasic, err := discoveryengine.NewDataStore(ctx, \"basic\", \u0026discoveryengine.DataStoreArgs{\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDataStoreId: pulumi.String(\"example-datastore-id\"),\n\t\t\tDisplayName: pulumi.String(\"tf-test-structured-datastore\"),\n\t\t\tIndustryVertical: pulumi.String(\"GENERIC\"),\n\t\t\tContentConfig: pulumi.String(\"NO_CONTENT\"),\n\t\t\tSolutionTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"SOLUTION_TYPE_SEARCH\"),\n\t\t\t},\n\t\t\tCreateAdvancedSiteSearch: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = discoveryengine.NewSearchEngine(ctx, \"basic\", \u0026discoveryengine.SearchEngineArgs{\n\t\t\tEngineId: pulumi.String(\"example-engine-id\"),\n\t\t\tCollectionId: pulumi.String(\"default_collection\"),\n\t\t\tLocation: basic.Location,\n\t\t\tDisplayName: pulumi.String(\"Example Display Name\"),\n\t\t\tDataStoreIds: pulumi.StringArray{\n\t\t\t\tbasic.DataStoreId,\n\t\t\t},\n\t\t\tSearchEngineConfig: \u0026discoveryengine.SearchEngineSearchEngineConfigArgs{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.discoveryengine.DataStore;\nimport com.pulumi.gcp.discoveryengine.DataStoreArgs;\nimport com.pulumi.gcp.discoveryengine.SearchEngine;\nimport com.pulumi.gcp.discoveryengine.SearchEngineArgs;\nimport com.pulumi.gcp.discoveryengine.inputs.SearchEngineSearchEngineConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basic = new DataStore(\"basic\", DataStoreArgs.builder()\n .location(\"global\")\n .dataStoreId(\"example-datastore-id\")\n .displayName(\"tf-test-structured-datastore\")\n .industryVertical(\"GENERIC\")\n .contentConfig(\"NO_CONTENT\")\n .solutionTypes(\"SOLUTION_TYPE_SEARCH\")\n .createAdvancedSiteSearch(false)\n .build());\n\n var basicSearchEngine = new SearchEngine(\"basicSearchEngine\", SearchEngineArgs.builder()\n .engineId(\"example-engine-id\")\n .collectionId(\"default_collection\")\n .location(basic.location())\n .displayName(\"Example Display Name\")\n .dataStoreIds(basic.dataStoreId())\n .searchEngineConfig()\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:discoveryengine:DataStore\n properties:\n location: global\n dataStoreId: example-datastore-id\n displayName: tf-test-structured-datastore\n industryVertical: GENERIC\n contentConfig: NO_CONTENT\n solutionTypes:\n - SOLUTION_TYPE_SEARCH\n createAdvancedSiteSearch: false\n basicSearchEngine:\n type: gcp:discoveryengine:SearchEngine\n name: basic\n properties:\n engineId: example-engine-id\n collectionId: default_collection\n location: ${basic.location}\n displayName: Example Display Name\n dataStoreIds:\n - ${basic.dataStoreId}\n searchEngineConfig: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSearchEngine can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/collections/{{collection_id}}/engines/{{engine_id}}`\n\n* `{{project}}/{{location}}/{{collection_id}}/{{engine_id}}`\n\n* `{{location}}/{{collection_id}}/{{engine_id}}`\n\nWhen using the `pulumi import` command, SearchEngine can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:discoveryengine/searchEngine:SearchEngine default projects/{{project}}/locations/{{location}}/collections/{{collection_id}}/engines/{{engine_id}}\n```\n\n```sh\n$ pulumi import gcp:discoveryengine/searchEngine:SearchEngine default {{project}}/{{location}}/{{collection_id}}/{{engine_id}}\n```\n\n```sh\n$ pulumi import gcp:discoveryengine/searchEngine:SearchEngine default {{location}}/{{collection_id}}/{{engine_id}}\n```\n\n", "properties": { "collectionId": { "type": "string", @@ -193481,7 +193481,7 @@ } }, "gcp:dns/managedZone:ManagedZone": { - "description": "A zone is a subtree of the DNS namespace under one administrative\nresponsibility. A ManagedZone is a resource that represents a DNS zone\nhosted by the Cloud DNS service.\n\n\nTo get more information about ManagedZone, see:\n\n* [API documentation](https://cloud.google.com/dns/api/v1/managedZones)\n* How-to Guides\n * [Managing Zones](https://cloud.google.com/dns/zones/)\n\n## Example Usage\n\n### Dns Managed Zone Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example_zone = new gcp.dns.ManagedZone(\"example-zone\", {\n name: \"example-zone\",\n dnsName: \"my-domain.com.\",\n description: \"Example DNS zone\",\n labels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample_zone = gcp.dns.ManagedZone(\"example-zone\",\n name=\"example-zone\",\n dns_name=\"my-domain.com.\",\n description=\"Example DNS zone\",\n labels={\n \"foo\": \"bar\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example_zone = new Gcp.Dns.ManagedZone(\"example-zone\", new()\n {\n Name = \"example-zone\",\n DnsName = \"my-domain.com.\",\n Description = \"Example DNS zone\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewManagedZone(ctx, \"example-zone\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"example-zone\"),\n\t\t\tDnsName: pulumi.String(\"my-domain.com.\"),\n\t\t\tDescription: pulumi.String(\"Example DNS zone\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example_zone = new ManagedZone(\"example-zone\", ManagedZoneArgs.builder()\n .name(\"example-zone\")\n .dnsName(\"my-domain.com.\")\n .description(\"Example DNS zone\")\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-zone:\n type: gcp:dns:ManagedZone\n properties:\n name: example-zone\n dnsName: my-domain.com.\n description: Example DNS zone\n labels:\n foo: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dns Managed Zone Private\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network_1 = new gcp.compute.Network(\"network-1\", {\n name: \"network-1\",\n autoCreateSubnetworks: false,\n});\nconst network_2 = new gcp.compute.Network(\"network-2\", {\n name: \"network-2\",\n autoCreateSubnetworks: false,\n});\nconst private_zone = new gcp.dns.ManagedZone(\"private-zone\", {\n name: \"private-zone\",\n dnsName: \"private.example.com.\",\n description: \"Example private DNS zone\",\n labels: {\n foo: \"bar\",\n },\n visibility: \"private\",\n privateVisibilityConfig: {\n networks: [\n {\n networkUrl: network_1.id,\n },\n {\n networkUrl: network_2.id,\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork_1 = gcp.compute.Network(\"network-1\",\n name=\"network-1\",\n auto_create_subnetworks=False)\nnetwork_2 = gcp.compute.Network(\"network-2\",\n name=\"network-2\",\n auto_create_subnetworks=False)\nprivate_zone = gcp.dns.ManagedZone(\"private-zone\",\n name=\"private-zone\",\n dns_name=\"private.example.com.\",\n description=\"Example private DNS zone\",\n labels={\n \"foo\": \"bar\",\n },\n visibility=\"private\",\n private_visibility_config={\n \"networks\": [\n {\n \"network_url\": network_1.id,\n },\n {\n \"network_url\": network_2.id,\n },\n ],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network_1 = new Gcp.Compute.Network(\"network-1\", new()\n {\n Name = \"network-1\",\n AutoCreateSubnetworks = false,\n });\n\n var network_2 = new Gcp.Compute.Network(\"network-2\", new()\n {\n Name = \"network-2\",\n AutoCreateSubnetworks = false,\n });\n\n var private_zone = new Gcp.Dns.ManagedZone(\"private-zone\", new()\n {\n Name = \"private-zone\",\n DnsName = \"private.example.com.\",\n Description = \"Example private DNS zone\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Visibility = \"private\",\n PrivateVisibilityConfig = new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigArgs\n {\n Networks = new[]\n {\n new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigNetworkArgs\n {\n NetworkUrl = network_1.Id,\n },\n new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigNetworkArgs\n {\n NetworkUrl = network_2.Id,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewNetwork(ctx, \"network-1\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network-1\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetwork(ctx, \"network-2\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network-2\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewManagedZone(ctx, \"private-zone\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"private-zone\"),\n\t\t\tDnsName: pulumi.String(\"private.example.com.\"),\n\t\t\tDescription: pulumi.String(\"Example private DNS zone\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tVisibility: pulumi.String(\"private\"),\n\t\t\tPrivateVisibilityConfig: \u0026dns.ManagedZonePrivateVisibilityConfigArgs{\n\t\t\t\tNetworks: dns.ManagedZonePrivateVisibilityConfigNetworkArray{\n\t\t\t\t\t\u0026dns.ManagedZonePrivateVisibilityConfigNetworkArgs{\n\t\t\t\t\t\tNetworkUrl: network_1.ID(),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dns.ManagedZonePrivateVisibilityConfigNetworkArgs{\n\t\t\t\t\t\tNetworkUrl: network_2.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZonePrivateVisibilityConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network_1 = new Network(\"network-1\", NetworkArgs.builder()\n .name(\"network-1\")\n .autoCreateSubnetworks(false)\n .build());\n\n var network_2 = new Network(\"network-2\", NetworkArgs.builder()\n .name(\"network-2\")\n .autoCreateSubnetworks(false)\n .build());\n\n var private_zone = new ManagedZone(\"private-zone\", ManagedZoneArgs.builder()\n .name(\"private-zone\")\n .dnsName(\"private.example.com.\")\n .description(\"Example private DNS zone\")\n .labels(Map.of(\"foo\", \"bar\"))\n .visibility(\"private\")\n .privateVisibilityConfig(ManagedZonePrivateVisibilityConfigArgs.builder()\n .networks( \n ManagedZonePrivateVisibilityConfigNetworkArgs.builder()\n .networkUrl(network_1.id())\n .build(),\n ManagedZonePrivateVisibilityConfigNetworkArgs.builder()\n .networkUrl(network_2.id())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n private-zone:\n type: gcp:dns:ManagedZone\n properties:\n name: private-zone\n dnsName: private.example.com.\n description: Example private DNS zone\n labels:\n foo: bar\n visibility: private\n privateVisibilityConfig:\n networks:\n - networkUrl: ${[\"network-1\"].id}\n - networkUrl: ${[\"network-2\"].id}\n network-1:\n type: gcp:compute:Network\n properties:\n name: network-1\n autoCreateSubnetworks: false\n network-2:\n type: gcp:compute:Network\n properties:\n name: network-2\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dns Managed Zone Private Forwarding\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network_1 = new gcp.compute.Network(\"network-1\", {\n name: \"network-1\",\n autoCreateSubnetworks: false,\n});\nconst network_2 = new gcp.compute.Network(\"network-2\", {\n name: \"network-2\",\n autoCreateSubnetworks: false,\n});\nconst private_zone = new gcp.dns.ManagedZone(\"private-zone\", {\n name: \"private-zone\",\n dnsName: \"private.example.com.\",\n description: \"Example private DNS zone\",\n labels: {\n foo: \"bar\",\n },\n visibility: \"private\",\n privateVisibilityConfig: {\n networks: [\n {\n networkUrl: network_1.id,\n },\n {\n networkUrl: network_2.id,\n },\n ],\n },\n forwardingConfig: {\n targetNameServers: [\n {\n ipv4Address: \"172.16.1.10\",\n },\n {\n ipv4Address: \"172.16.1.20\",\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork_1 = gcp.compute.Network(\"network-1\",\n name=\"network-1\",\n auto_create_subnetworks=False)\nnetwork_2 = gcp.compute.Network(\"network-2\",\n name=\"network-2\",\n auto_create_subnetworks=False)\nprivate_zone = gcp.dns.ManagedZone(\"private-zone\",\n name=\"private-zone\",\n dns_name=\"private.example.com.\",\n description=\"Example private DNS zone\",\n labels={\n \"foo\": \"bar\",\n },\n visibility=\"private\",\n private_visibility_config={\n \"networks\": [\n {\n \"network_url\": network_1.id,\n },\n {\n \"network_url\": network_2.id,\n },\n ],\n },\n forwarding_config={\n \"target_name_servers\": [\n {\n \"ipv4_address\": \"172.16.1.10\",\n },\n {\n \"ipv4_address\": \"172.16.1.20\",\n },\n ],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network_1 = new Gcp.Compute.Network(\"network-1\", new()\n {\n Name = \"network-1\",\n AutoCreateSubnetworks = false,\n });\n\n var network_2 = new Gcp.Compute.Network(\"network-2\", new()\n {\n Name = \"network-2\",\n AutoCreateSubnetworks = false,\n });\n\n var private_zone = new Gcp.Dns.ManagedZone(\"private-zone\", new()\n {\n Name = \"private-zone\",\n DnsName = \"private.example.com.\",\n Description = \"Example private DNS zone\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Visibility = \"private\",\n PrivateVisibilityConfig = new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigArgs\n {\n Networks = new[]\n {\n new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigNetworkArgs\n {\n NetworkUrl = network_1.Id,\n },\n new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigNetworkArgs\n {\n NetworkUrl = network_2.Id,\n },\n },\n },\n ForwardingConfig = new Gcp.Dns.Inputs.ManagedZoneForwardingConfigArgs\n {\n TargetNameServers = new[]\n {\n new Gcp.Dns.Inputs.ManagedZoneForwardingConfigTargetNameServerArgs\n {\n Ipv4Address = \"172.16.1.10\",\n },\n new Gcp.Dns.Inputs.ManagedZoneForwardingConfigTargetNameServerArgs\n {\n Ipv4Address = \"172.16.1.20\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewNetwork(ctx, \"network-1\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network-1\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetwork(ctx, \"network-2\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network-2\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewManagedZone(ctx, \"private-zone\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"private-zone\"),\n\t\t\tDnsName: pulumi.String(\"private.example.com.\"),\n\t\t\tDescription: pulumi.String(\"Example private DNS zone\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tVisibility: pulumi.String(\"private\"),\n\t\t\tPrivateVisibilityConfig: \u0026dns.ManagedZonePrivateVisibilityConfigArgs{\n\t\t\t\tNetworks: dns.ManagedZonePrivateVisibilityConfigNetworkArray{\n\t\t\t\t\t\u0026dns.ManagedZonePrivateVisibilityConfigNetworkArgs{\n\t\t\t\t\t\tNetworkUrl: network_1.ID(),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dns.ManagedZonePrivateVisibilityConfigNetworkArgs{\n\t\t\t\t\t\tNetworkUrl: network_2.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tForwardingConfig: \u0026dns.ManagedZoneForwardingConfigArgs{\n\t\t\t\tTargetNameServers: dns.ManagedZoneForwardingConfigTargetNameServerArray{\n\t\t\t\t\t\u0026dns.ManagedZoneForwardingConfigTargetNameServerArgs{\n\t\t\t\t\t\tIpv4Address: pulumi.String(\"172.16.1.10\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dns.ManagedZoneForwardingConfigTargetNameServerArgs{\n\t\t\t\t\t\tIpv4Address: pulumi.String(\"172.16.1.20\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZonePrivateVisibilityConfigArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZoneForwardingConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network_1 = new Network(\"network-1\", NetworkArgs.builder()\n .name(\"network-1\")\n .autoCreateSubnetworks(false)\n .build());\n\n var network_2 = new Network(\"network-2\", NetworkArgs.builder()\n .name(\"network-2\")\n .autoCreateSubnetworks(false)\n .build());\n\n var private_zone = new ManagedZone(\"private-zone\", ManagedZoneArgs.builder()\n .name(\"private-zone\")\n .dnsName(\"private.example.com.\")\n .description(\"Example private DNS zone\")\n .labels(Map.of(\"foo\", \"bar\"))\n .visibility(\"private\")\n .privateVisibilityConfig(ManagedZonePrivateVisibilityConfigArgs.builder()\n .networks( \n ManagedZonePrivateVisibilityConfigNetworkArgs.builder()\n .networkUrl(network_1.id())\n .build(),\n ManagedZonePrivateVisibilityConfigNetworkArgs.builder()\n .networkUrl(network_2.id())\n .build())\n .build())\n .forwardingConfig(ManagedZoneForwardingConfigArgs.builder()\n .targetNameServers( \n ManagedZoneForwardingConfigTargetNameServerArgs.builder()\n .ipv4Address(\"172.16.1.10\")\n .build(),\n ManagedZoneForwardingConfigTargetNameServerArgs.builder()\n .ipv4Address(\"172.16.1.20\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n private-zone:\n type: gcp:dns:ManagedZone\n properties:\n name: private-zone\n dnsName: private.example.com.\n description: Example private DNS zone\n labels:\n foo: bar\n visibility: private\n privateVisibilityConfig:\n networks:\n - networkUrl: ${[\"network-1\"].id}\n - networkUrl: ${[\"network-2\"].id}\n forwardingConfig:\n targetNameServers:\n - ipv4Address: 172.16.1.10\n - ipv4Address: 172.16.1.20\n network-1:\n type: gcp:compute:Network\n properties:\n name: network-1\n autoCreateSubnetworks: false\n network-2:\n type: gcp:compute:Network\n properties:\n name: network-2\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dns Managed Zone Private Gke\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network_1 = new gcp.compute.Network(\"network-1\", {\n name: \"network-1\",\n autoCreateSubnetworks: false,\n});\nconst subnetwork_1 = new gcp.compute.Subnetwork(\"subnetwork-1\", {\n name: network_1.name,\n network: network_1.name,\n ipCidrRange: \"10.0.36.0/24\",\n region: \"us-central1\",\n privateIpGoogleAccess: true,\n secondaryIpRanges: [\n {\n rangeName: \"pod\",\n ipCidrRange: \"10.0.0.0/19\",\n },\n {\n rangeName: \"svc\",\n ipCidrRange: \"10.0.32.0/22\",\n },\n ],\n});\nconst cluster_1 = new gcp.container.Cluster(\"cluster-1\", {\n name: \"cluster-1\",\n location: \"us-central1-c\",\n initialNodeCount: 1,\n networkingMode: \"VPC_NATIVE\",\n defaultSnatStatus: {\n disabled: true,\n },\n network: network_1.name,\n subnetwork: subnetwork_1.name,\n privateClusterConfig: {\n enablePrivateEndpoint: true,\n enablePrivateNodes: true,\n masterIpv4CidrBlock: \"10.42.0.0/28\",\n masterGlobalAccessConfig: {\n enabled: true,\n },\n },\n masterAuthorizedNetworksConfig: {},\n ipAllocationPolicy: {\n clusterSecondaryRangeName: subnetwork_1.secondaryIpRanges.apply(secondaryIpRanges =\u003e secondaryIpRanges[0].rangeName),\n servicesSecondaryRangeName: subnetwork_1.secondaryIpRanges.apply(secondaryIpRanges =\u003e secondaryIpRanges[1].rangeName),\n },\n deletionProtection: true,\n});\nconst private_zone_gke = new gcp.dns.ManagedZone(\"private-zone-gke\", {\n name: \"private-zone\",\n dnsName: \"private.example.com.\",\n description: \"Example private DNS zone\",\n labels: {\n foo: \"bar\",\n },\n visibility: \"private\",\n privateVisibilityConfig: {\n gkeClusters: [{\n gkeClusterName: cluster_1.id,\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork_1 = gcp.compute.Network(\"network-1\",\n name=\"network-1\",\n auto_create_subnetworks=False)\nsubnetwork_1 = gcp.compute.Subnetwork(\"subnetwork-1\",\n name=network_1.name,\n network=network_1.name,\n ip_cidr_range=\"10.0.36.0/24\",\n region=\"us-central1\",\n private_ip_google_access=True,\n secondary_ip_ranges=[\n {\n \"range_name\": \"pod\",\n \"ip_cidr_range\": \"10.0.0.0/19\",\n },\n {\n \"range_name\": \"svc\",\n \"ip_cidr_range\": \"10.0.32.0/22\",\n },\n ])\ncluster_1 = gcp.container.Cluster(\"cluster-1\",\n name=\"cluster-1\",\n location=\"us-central1-c\",\n initial_node_count=1,\n networking_mode=\"VPC_NATIVE\",\n default_snat_status={\n \"disabled\": True,\n },\n network=network_1.name,\n subnetwork=subnetwork_1.name,\n private_cluster_config={\n \"enable_private_endpoint\": True,\n \"enable_private_nodes\": True,\n \"master_ipv4_cidr_block\": \"10.42.0.0/28\",\n \"master_global_access_config\": {\n \"enabled\": True,\n },\n },\n master_authorized_networks_config={},\n ip_allocation_policy={\n \"cluster_secondary_range_name\": subnetwork_1.secondary_ip_ranges[0].range_name,\n \"services_secondary_range_name\": subnetwork_1.secondary_ip_ranges[1].range_name,\n },\n deletion_protection=True)\nprivate_zone_gke = gcp.dns.ManagedZone(\"private-zone-gke\",\n name=\"private-zone\",\n dns_name=\"private.example.com.\",\n description=\"Example private DNS zone\",\n labels={\n \"foo\": \"bar\",\n },\n visibility=\"private\",\n private_visibility_config={\n \"gke_clusters\": [{\n \"gke_cluster_name\": cluster_1.id,\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network_1 = new Gcp.Compute.Network(\"network-1\", new()\n {\n Name = \"network-1\",\n AutoCreateSubnetworks = false,\n });\n\n var subnetwork_1 = new Gcp.Compute.Subnetwork(\"subnetwork-1\", new()\n {\n Name = network_1.Name,\n Network = network_1.Name,\n IpCidrRange = \"10.0.36.0/24\",\n Region = \"us-central1\",\n PrivateIpGoogleAccess = true,\n SecondaryIpRanges = new[]\n {\n new Gcp.Compute.Inputs.SubnetworkSecondaryIpRangeArgs\n {\n RangeName = \"pod\",\n IpCidrRange = \"10.0.0.0/19\",\n },\n new Gcp.Compute.Inputs.SubnetworkSecondaryIpRangeArgs\n {\n RangeName = \"svc\",\n IpCidrRange = \"10.0.32.0/22\",\n },\n },\n });\n\n var cluster_1 = new Gcp.Container.Cluster(\"cluster-1\", new()\n {\n Name = \"cluster-1\",\n Location = \"us-central1-c\",\n InitialNodeCount = 1,\n NetworkingMode = \"VPC_NATIVE\",\n DefaultSnatStatus = new Gcp.Container.Inputs.ClusterDefaultSnatStatusArgs\n {\n Disabled = true,\n },\n Network = network_1.Name,\n Subnetwork = subnetwork_1.Name,\n PrivateClusterConfig = new Gcp.Container.Inputs.ClusterPrivateClusterConfigArgs\n {\n EnablePrivateEndpoint = true,\n EnablePrivateNodes = true,\n MasterIpv4CidrBlock = \"10.42.0.0/28\",\n MasterGlobalAccessConfig = new Gcp.Container.Inputs.ClusterPrivateClusterConfigMasterGlobalAccessConfigArgs\n {\n Enabled = true,\n },\n },\n MasterAuthorizedNetworksConfig = null,\n IpAllocationPolicy = new Gcp.Container.Inputs.ClusterIpAllocationPolicyArgs\n {\n ClusterSecondaryRangeName = subnetwork_1.SecondaryIpRanges.Apply(secondaryIpRanges =\u003e secondaryIpRanges[0].RangeName),\n ServicesSecondaryRangeName = subnetwork_1.SecondaryIpRanges.Apply(secondaryIpRanges =\u003e secondaryIpRanges[1].RangeName),\n },\n DeletionProtection = true,\n });\n\n var private_zone_gke = new Gcp.Dns.ManagedZone(\"private-zone-gke\", new()\n {\n Name = \"private-zone\",\n DnsName = \"private.example.com.\",\n Description = \"Example private DNS zone\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Visibility = \"private\",\n PrivateVisibilityConfig = new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigArgs\n {\n GkeClusters = new[]\n {\n new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigGkeClusterArgs\n {\n GkeClusterName = cluster_1.Id,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\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.NewNetwork(ctx, \"network-1\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network-1\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSubnetwork(ctx, \"subnetwork-1\", \u0026compute.SubnetworkArgs{\n\t\t\tName: network_1.Name,\n\t\t\tNetwork: network_1.Name,\n\t\t\tIpCidrRange: pulumi.String(\"10.0.36.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPrivateIpGoogleAccess: pulumi.Bool(true),\n\t\t\tSecondaryIpRanges: compute.SubnetworkSecondaryIpRangeArray{\n\t\t\t\t\u0026compute.SubnetworkSecondaryIpRangeArgs{\n\t\t\t\t\tRangeName: pulumi.String(\"pod\"),\n\t\t\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/19\"),\n\t\t\t\t},\n\t\t\t\t\u0026compute.SubnetworkSecondaryIpRangeArgs{\n\t\t\t\t\tRangeName: pulumi.String(\"svc\"),\n\t\t\t\t\tIpCidrRange: pulumi.String(\"10.0.32.0/22\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewCluster(ctx, \"cluster-1\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"cluster-1\"),\n\t\t\tLocation: pulumi.String(\"us-central1-c\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tNetworkingMode: pulumi.String(\"VPC_NATIVE\"),\n\t\t\tDefaultSnatStatus: \u0026container.ClusterDefaultSnatStatusArgs{\n\t\t\t\tDisabled: pulumi.Bool(true),\n\t\t\t},\n\t\t\tNetwork: network_1.Name,\n\t\t\tSubnetwork: subnetwork_1.Name,\n\t\t\tPrivateClusterConfig: \u0026container.ClusterPrivateClusterConfigArgs{\n\t\t\t\tEnablePrivateEndpoint: pulumi.Bool(true),\n\t\t\t\tEnablePrivateNodes: pulumi.Bool(true),\n\t\t\t\tMasterIpv4CidrBlock: pulumi.String(\"10.42.0.0/28\"),\n\t\t\t\tMasterGlobalAccessConfig: \u0026container.ClusterPrivateClusterConfigMasterGlobalAccessConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMasterAuthorizedNetworksConfig: nil,\n\t\t\tIpAllocationPolicy: \u0026container.ClusterIpAllocationPolicyArgs{\n\t\t\t\tClusterSecondaryRangeName: subnetwork_1.SecondaryIpRanges.ApplyT(func(secondaryIpRanges []compute.SubnetworkSecondaryIpRange) (*string, error) {\n\t\t\t\t\treturn \u0026secondaryIpRanges[0].RangeName, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tServicesSecondaryRangeName: subnetwork_1.SecondaryIpRanges.ApplyT(func(secondaryIpRanges []compute.SubnetworkSecondaryIpRange) (*string, error) {\n\t\t\t\t\treturn \u0026secondaryIpRanges[1].RangeName, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewManagedZone(ctx, \"private-zone-gke\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"private-zone\"),\n\t\t\tDnsName: pulumi.String(\"private.example.com.\"),\n\t\t\tDescription: pulumi.String(\"Example private DNS zone\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tVisibility: pulumi.String(\"private\"),\n\t\t\tPrivateVisibilityConfig: \u0026dns.ManagedZonePrivateVisibilityConfigArgs{\n\t\t\t\tGkeClusters: dns.ManagedZonePrivateVisibilityConfigGkeClusterArray{\n\t\t\t\t\t\u0026dns.ManagedZonePrivateVisibilityConfigGkeClusterArgs{\n\t\t\t\t\t\tGkeClusterName: cluster_1.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.inputs.SubnetworkSecondaryIpRangeArgs;\nimport com.pulumi.gcp.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterDefaultSnatStatusArgs;\nimport com.pulumi.gcp.container.inputs.ClusterPrivateClusterConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterPrivateClusterConfigMasterGlobalAccessConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterMasterAuthorizedNetworksConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterIpAllocationPolicyArgs;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZonePrivateVisibilityConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network_1 = new Network(\"network-1\", NetworkArgs.builder()\n .name(\"network-1\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnetwork_1 = new Subnetwork(\"subnetwork-1\", SubnetworkArgs.builder()\n .name(network_1.name())\n .network(network_1.name())\n .ipCidrRange(\"10.0.36.0/24\")\n .region(\"us-central1\")\n .privateIpGoogleAccess(true)\n .secondaryIpRanges( \n SubnetworkSecondaryIpRangeArgs.builder()\n .rangeName(\"pod\")\n .ipCidrRange(\"10.0.0.0/19\")\n .build(),\n SubnetworkSecondaryIpRangeArgs.builder()\n .rangeName(\"svc\")\n .ipCidrRange(\"10.0.32.0/22\")\n .build())\n .build());\n\n var cluster_1 = new Cluster(\"cluster-1\", ClusterArgs.builder()\n .name(\"cluster-1\")\n .location(\"us-central1-c\")\n .initialNodeCount(1)\n .networkingMode(\"VPC_NATIVE\")\n .defaultSnatStatus(ClusterDefaultSnatStatusArgs.builder()\n .disabled(true)\n .build())\n .network(network_1.name())\n .subnetwork(subnetwork_1.name())\n .privateClusterConfig(ClusterPrivateClusterConfigArgs.builder()\n .enablePrivateEndpoint(true)\n .enablePrivateNodes(true)\n .masterIpv4CidrBlock(\"10.42.0.0/28\")\n .masterGlobalAccessConfig(ClusterPrivateClusterConfigMasterGlobalAccessConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .masterAuthorizedNetworksConfig()\n .ipAllocationPolicy(ClusterIpAllocationPolicyArgs.builder()\n .clusterSecondaryRangeName(subnetwork_1.secondaryIpRanges().applyValue(secondaryIpRanges -\u003e secondaryIpRanges[0].rangeName()))\n .servicesSecondaryRangeName(subnetwork_1.secondaryIpRanges().applyValue(secondaryIpRanges -\u003e secondaryIpRanges[1].rangeName()))\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var private_zone_gke = new ManagedZone(\"private-zone-gke\", ManagedZoneArgs.builder()\n .name(\"private-zone\")\n .dnsName(\"private.example.com.\")\n .description(\"Example private DNS zone\")\n .labels(Map.of(\"foo\", \"bar\"))\n .visibility(\"private\")\n .privateVisibilityConfig(ManagedZonePrivateVisibilityConfigArgs.builder()\n .gkeClusters(ManagedZonePrivateVisibilityConfigGkeClusterArgs.builder()\n .gkeClusterName(cluster_1.id())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n private-zone-gke:\n type: gcp:dns:ManagedZone\n properties:\n name: private-zone\n dnsName: private.example.com.\n description: Example private DNS zone\n labels:\n foo: bar\n visibility: private\n privateVisibilityConfig:\n gkeClusters:\n - gkeClusterName: ${[\"cluster-1\"].id}\n network-1:\n type: gcp:compute:Network\n properties:\n name: network-1\n autoCreateSubnetworks: false\n subnetwork-1:\n type: gcp:compute:Subnetwork\n properties:\n name: ${[\"network-1\"].name}\n network: ${[\"network-1\"].name}\n ipCidrRange: 10.0.36.0/24\n region: us-central1\n privateIpGoogleAccess: true\n secondaryIpRanges:\n - rangeName: pod\n ipCidrRange: 10.0.0.0/19\n - rangeName: svc\n ipCidrRange: 10.0.32.0/22\n cluster-1:\n type: gcp:container:Cluster\n properties:\n name: cluster-1\n location: us-central1-c\n initialNodeCount: 1\n networkingMode: VPC_NATIVE\n defaultSnatStatus:\n disabled: true\n network: ${[\"network-1\"].name}\n subnetwork: ${[\"subnetwork-1\"].name}\n privateClusterConfig:\n enablePrivateEndpoint: true\n enablePrivateNodes: true\n masterIpv4CidrBlock: 10.42.0.0/28\n masterGlobalAccessConfig:\n enabled: true\n masterAuthorizedNetworksConfig: {}\n ipAllocationPolicy:\n clusterSecondaryRangeName: ${[\"subnetwork-1\"].secondaryIpRanges[0].rangeName}\n servicesSecondaryRangeName: ${[\"subnetwork-1\"].secondaryIpRanges[1].rangeName}\n deletionProtection: 'true'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dns Managed Zone Private Peering\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network_source = new gcp.compute.Network(\"network-source\", {\n name: \"network-source\",\n autoCreateSubnetworks: false,\n});\nconst network_target = new gcp.compute.Network(\"network-target\", {\n name: \"network-target\",\n autoCreateSubnetworks: false,\n});\nconst peering_zone = new gcp.dns.ManagedZone(\"peering-zone\", {\n name: \"peering-zone\",\n dnsName: \"peering.example.com.\",\n description: \"Example private DNS peering zone\",\n visibility: \"private\",\n privateVisibilityConfig: {\n networks: [{\n networkUrl: network_source.id,\n }],\n },\n peeringConfig: {\n targetNetwork: {\n networkUrl: network_target.id,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork_source = gcp.compute.Network(\"network-source\",\n name=\"network-source\",\n auto_create_subnetworks=False)\nnetwork_target = gcp.compute.Network(\"network-target\",\n name=\"network-target\",\n auto_create_subnetworks=False)\npeering_zone = gcp.dns.ManagedZone(\"peering-zone\",\n name=\"peering-zone\",\n dns_name=\"peering.example.com.\",\n description=\"Example private DNS peering zone\",\n visibility=\"private\",\n private_visibility_config={\n \"networks\": [{\n \"network_url\": network_source.id,\n }],\n },\n peering_config={\n \"target_network\": {\n \"network_url\": network_target.id,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network_source = new Gcp.Compute.Network(\"network-source\", new()\n {\n Name = \"network-source\",\n AutoCreateSubnetworks = false,\n });\n\n var network_target = new Gcp.Compute.Network(\"network-target\", new()\n {\n Name = \"network-target\",\n AutoCreateSubnetworks = false,\n });\n\n var peering_zone = new Gcp.Dns.ManagedZone(\"peering-zone\", new()\n {\n Name = \"peering-zone\",\n DnsName = \"peering.example.com.\",\n Description = \"Example private DNS peering zone\",\n Visibility = \"private\",\n PrivateVisibilityConfig = new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigArgs\n {\n Networks = new[]\n {\n new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigNetworkArgs\n {\n NetworkUrl = network_source.Id,\n },\n },\n },\n PeeringConfig = new Gcp.Dns.Inputs.ManagedZonePeeringConfigArgs\n {\n TargetNetwork = new Gcp.Dns.Inputs.ManagedZonePeeringConfigTargetNetworkArgs\n {\n NetworkUrl = network_target.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewNetwork(ctx, \"network-source\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network-source\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetwork(ctx, \"network-target\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network-target\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewManagedZone(ctx, \"peering-zone\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"peering-zone\"),\n\t\t\tDnsName: pulumi.String(\"peering.example.com.\"),\n\t\t\tDescription: pulumi.String(\"Example private DNS peering zone\"),\n\t\t\tVisibility: pulumi.String(\"private\"),\n\t\t\tPrivateVisibilityConfig: \u0026dns.ManagedZonePrivateVisibilityConfigArgs{\n\t\t\t\tNetworks: dns.ManagedZonePrivateVisibilityConfigNetworkArray{\n\t\t\t\t\t\u0026dns.ManagedZonePrivateVisibilityConfigNetworkArgs{\n\t\t\t\t\t\tNetworkUrl: network_source.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tPeeringConfig: \u0026dns.ManagedZonePeeringConfigArgs{\n\t\t\t\tTargetNetwork: \u0026dns.ManagedZonePeeringConfigTargetNetworkArgs{\n\t\t\t\t\tNetworkUrl: network_target.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZonePrivateVisibilityConfigArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZonePeeringConfigArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZonePeeringConfigTargetNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network_source = new Network(\"network-source\", NetworkArgs.builder()\n .name(\"network-source\")\n .autoCreateSubnetworks(false)\n .build());\n\n var network_target = new Network(\"network-target\", NetworkArgs.builder()\n .name(\"network-target\")\n .autoCreateSubnetworks(false)\n .build());\n\n var peering_zone = new ManagedZone(\"peering-zone\", ManagedZoneArgs.builder()\n .name(\"peering-zone\")\n .dnsName(\"peering.example.com.\")\n .description(\"Example private DNS peering zone\")\n .visibility(\"private\")\n .privateVisibilityConfig(ManagedZonePrivateVisibilityConfigArgs.builder()\n .networks(ManagedZonePrivateVisibilityConfigNetworkArgs.builder()\n .networkUrl(network_source.id())\n .build())\n .build())\n .peeringConfig(ManagedZonePeeringConfigArgs.builder()\n .targetNetwork(ManagedZonePeeringConfigTargetNetworkArgs.builder()\n .networkUrl(network_target.id())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n peering-zone:\n type: gcp:dns:ManagedZone\n properties:\n name: peering-zone\n dnsName: peering.example.com.\n description: Example private DNS peering zone\n visibility: private\n privateVisibilityConfig:\n networks:\n - networkUrl: ${[\"network-source\"].id}\n peeringConfig:\n targetNetwork:\n networkUrl: ${[\"network-target\"].id}\n network-source:\n type: gcp:compute:Network\n properties:\n name: network-source\n autoCreateSubnetworks: false\n network-target:\n type: gcp:compute:Network\n properties:\n name: network-target\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dns Managed Zone Service Directory\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.servicedirectory.Namespace(\"example\", {\n namespaceId: \"example\",\n location: \"us-central1\",\n});\nconst sd_zone = new gcp.dns.ManagedZone(\"sd-zone\", {\n name: \"peering-zone\",\n dnsName: \"services.example.com.\",\n description: \"Example private DNS Service Directory zone\",\n visibility: \"private\",\n serviceDirectoryConfig: {\n namespace: {\n namespaceUrl: example.id,\n },\n },\n});\nconst network = new gcp.compute.Network(\"network\", {\n name: \"network\",\n autoCreateSubnetworks: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.servicedirectory.Namespace(\"example\",\n namespace_id=\"example\",\n location=\"us-central1\")\nsd_zone = gcp.dns.ManagedZone(\"sd-zone\",\n name=\"peering-zone\",\n dns_name=\"services.example.com.\",\n description=\"Example private DNS Service Directory zone\",\n visibility=\"private\",\n service_directory_config={\n \"namespace\": {\n \"namespace_url\": example.id,\n },\n })\nnetwork = gcp.compute.Network(\"network\",\n name=\"network\",\n auto_create_subnetworks=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.ServiceDirectory.Namespace(\"example\", new()\n {\n NamespaceId = \"example\",\n Location = \"us-central1\",\n });\n\n var sd_zone = new Gcp.Dns.ManagedZone(\"sd-zone\", new()\n {\n Name = \"peering-zone\",\n DnsName = \"services.example.com.\",\n Description = \"Example private DNS Service Directory zone\",\n Visibility = \"private\",\n ServiceDirectoryConfig = new Gcp.Dns.Inputs.ManagedZoneServiceDirectoryConfigArgs\n {\n Namespace = new Gcp.Dns.Inputs.ManagedZoneServiceDirectoryConfigNamespaceArgs\n {\n NamespaceUrl = example.Id,\n },\n },\n });\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"network\",\n AutoCreateSubnetworks = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicedirectory\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := servicedirectory.NewNamespace(ctx, \"example\", \u0026servicedirectory.NamespaceArgs{\n\t\t\tNamespaceId: pulumi.String(\"example\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewManagedZone(ctx, \"sd-zone\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"peering-zone\"),\n\t\t\tDnsName: pulumi.String(\"services.example.com.\"),\n\t\t\tDescription: pulumi.String(\"Example private DNS Service Directory zone\"),\n\t\t\tVisibility: pulumi.String(\"private\"),\n\t\t\tServiceDirectoryConfig: \u0026dns.ManagedZoneServiceDirectoryConfigArgs{\n\t\t\t\tNamespace: \u0026dns.ManagedZoneServiceDirectoryConfigNamespaceArgs{\n\t\t\t\t\tNamespaceUrl: example.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.servicedirectory.Namespace;\nimport com.pulumi.gcp.servicedirectory.NamespaceArgs;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZoneServiceDirectoryConfigArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZoneServiceDirectoryConfigNamespaceArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Namespace(\"example\", NamespaceArgs.builder()\n .namespaceId(\"example\")\n .location(\"us-central1\")\n .build());\n\n var sd_zone = new ManagedZone(\"sd-zone\", ManagedZoneArgs.builder()\n .name(\"peering-zone\")\n .dnsName(\"services.example.com.\")\n .description(\"Example private DNS Service Directory zone\")\n .visibility(\"private\")\n .serviceDirectoryConfig(ManagedZoneServiceDirectoryConfigArgs.builder()\n .namespace(ManagedZoneServiceDirectoryConfigNamespaceArgs.builder()\n .namespaceUrl(example.id())\n .build())\n .build())\n .build());\n\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"network\")\n .autoCreateSubnetworks(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sd-zone:\n type: gcp:dns:ManagedZone\n properties:\n name: peering-zone\n dnsName: services.example.com.\n description: Example private DNS Service Directory zone\n visibility: private\n serviceDirectoryConfig:\n namespace:\n namespaceUrl: ${example.id}\n example:\n type: gcp:servicedirectory:Namespace\n properties:\n namespaceId: example\n location: us-central1\n network:\n type: gcp:compute:Network\n properties:\n name: network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dns Managed Zone Cloud Logging\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cloud_logging_enabled_zone = new gcp.dns.ManagedZone(\"cloud-logging-enabled-zone\", {\n name: \"cloud-logging-enabled-zone\",\n dnsName: \"services.example.com.\",\n description: \"Example cloud logging enabled DNS zone\",\n labels: {\n foo: \"bar\",\n },\n cloudLoggingConfig: {\n enableLogging: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncloud_logging_enabled_zone = gcp.dns.ManagedZone(\"cloud-logging-enabled-zone\",\n name=\"cloud-logging-enabled-zone\",\n dns_name=\"services.example.com.\",\n description=\"Example cloud logging enabled DNS zone\",\n labels={\n \"foo\": \"bar\",\n },\n cloud_logging_config={\n \"enable_logging\": True,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cloud_logging_enabled_zone = new Gcp.Dns.ManagedZone(\"cloud-logging-enabled-zone\", new()\n {\n Name = \"cloud-logging-enabled-zone\",\n DnsName = \"services.example.com.\",\n Description = \"Example cloud logging enabled DNS zone\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n CloudLoggingConfig = new Gcp.Dns.Inputs.ManagedZoneCloudLoggingConfigArgs\n {\n EnableLogging = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewManagedZone(ctx, \"cloud-logging-enabled-zone\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"cloud-logging-enabled-zone\"),\n\t\t\tDnsName: pulumi.String(\"services.example.com.\"),\n\t\t\tDescription: pulumi.String(\"Example cloud logging enabled DNS zone\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tCloudLoggingConfig: \u0026dns.ManagedZoneCloudLoggingConfigArgs{\n\t\t\t\tEnableLogging: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZoneCloudLoggingConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cloud_logging_enabled_zone = new ManagedZone(\"cloud-logging-enabled-zone\", ManagedZoneArgs.builder()\n .name(\"cloud-logging-enabled-zone\")\n .dnsName(\"services.example.com.\")\n .description(\"Example cloud logging enabled DNS zone\")\n .labels(Map.of(\"foo\", \"bar\"))\n .cloudLoggingConfig(ManagedZoneCloudLoggingConfigArgs.builder()\n .enableLogging(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cloud-logging-enabled-zone:\n type: gcp:dns:ManagedZone\n properties:\n name: cloud-logging-enabled-zone\n dnsName: services.example.com.\n description: Example cloud logging enabled DNS zone\n labels:\n foo: bar\n cloudLoggingConfig:\n enableLogging: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nManagedZone can be imported using any of these accepted formats:\n\n* `projects/{{project}}/managedZones/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, ManagedZone can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dns/managedZone:ManagedZone default projects/{{project}}/managedZones/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dns/managedZone:ManagedZone default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dns/managedZone:ManagedZone default {{name}}\n```\n\n", + "description": "A zone is a subtree of the DNS namespace under one administrative\nresponsibility. A ManagedZone is a resource that represents a DNS zone\nhosted by the Cloud DNS service.\n\n\nTo get more information about ManagedZone, see:\n\n* [API documentation](https://cloud.google.com/dns/api/v1/managedZones)\n* How-to Guides\n * [Managing Zones](https://cloud.google.com/dns/zones/)\n\n## Example Usage\n\n### Dns Managed Zone Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example_zone = new gcp.dns.ManagedZone(\"example-zone\", {\n name: \"example-zone\",\n dnsName: \"my-domain.com.\",\n description: \"Example DNS zone\",\n labels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample_zone = gcp.dns.ManagedZone(\"example-zone\",\n name=\"example-zone\",\n dns_name=\"my-domain.com.\",\n description=\"Example DNS zone\",\n labels={\n \"foo\": \"bar\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example_zone = new Gcp.Dns.ManagedZone(\"example-zone\", new()\n {\n Name = \"example-zone\",\n DnsName = \"my-domain.com.\",\n Description = \"Example DNS zone\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewManagedZone(ctx, \"example-zone\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"example-zone\"),\n\t\t\tDnsName: pulumi.String(\"my-domain.com.\"),\n\t\t\tDescription: pulumi.String(\"Example DNS zone\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example_zone = new ManagedZone(\"example-zone\", ManagedZoneArgs.builder()\n .name(\"example-zone\")\n .dnsName(\"my-domain.com.\")\n .description(\"Example DNS zone\")\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-zone:\n type: gcp:dns:ManagedZone\n properties:\n name: example-zone\n dnsName: my-domain.com.\n description: Example DNS zone\n labels:\n foo: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dns Managed Zone Private\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network_1 = new gcp.compute.Network(\"network-1\", {\n name: \"network-1\",\n autoCreateSubnetworks: false,\n});\nconst network_2 = new gcp.compute.Network(\"network-2\", {\n name: \"network-2\",\n autoCreateSubnetworks: false,\n});\nconst private_zone = new gcp.dns.ManagedZone(\"private-zone\", {\n name: \"private-zone\",\n dnsName: \"private.example.com.\",\n description: \"Example private DNS zone\",\n labels: {\n foo: \"bar\",\n },\n visibility: \"private\",\n privateVisibilityConfig: {\n networks: [\n {\n networkUrl: network_1.id,\n },\n {\n networkUrl: network_2.id,\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork_1 = gcp.compute.Network(\"network-1\",\n name=\"network-1\",\n auto_create_subnetworks=False)\nnetwork_2 = gcp.compute.Network(\"network-2\",\n name=\"network-2\",\n auto_create_subnetworks=False)\nprivate_zone = gcp.dns.ManagedZone(\"private-zone\",\n name=\"private-zone\",\n dns_name=\"private.example.com.\",\n description=\"Example private DNS zone\",\n labels={\n \"foo\": \"bar\",\n },\n visibility=\"private\",\n private_visibility_config={\n \"networks\": [\n {\n \"network_url\": network_1.id,\n },\n {\n \"network_url\": network_2.id,\n },\n ],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network_1 = new Gcp.Compute.Network(\"network-1\", new()\n {\n Name = \"network-1\",\n AutoCreateSubnetworks = false,\n });\n\n var network_2 = new Gcp.Compute.Network(\"network-2\", new()\n {\n Name = \"network-2\",\n AutoCreateSubnetworks = false,\n });\n\n var private_zone = new Gcp.Dns.ManagedZone(\"private-zone\", new()\n {\n Name = \"private-zone\",\n DnsName = \"private.example.com.\",\n Description = \"Example private DNS zone\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Visibility = \"private\",\n PrivateVisibilityConfig = new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigArgs\n {\n Networks = new[]\n {\n new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigNetworkArgs\n {\n NetworkUrl = network_1.Id,\n },\n new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigNetworkArgs\n {\n NetworkUrl = network_2.Id,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewNetwork(ctx, \"network-1\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network-1\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetwork(ctx, \"network-2\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network-2\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewManagedZone(ctx, \"private-zone\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"private-zone\"),\n\t\t\tDnsName: pulumi.String(\"private.example.com.\"),\n\t\t\tDescription: pulumi.String(\"Example private DNS zone\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tVisibility: pulumi.String(\"private\"),\n\t\t\tPrivateVisibilityConfig: \u0026dns.ManagedZonePrivateVisibilityConfigArgs{\n\t\t\t\tNetworks: dns.ManagedZonePrivateVisibilityConfigNetworkArray{\n\t\t\t\t\t\u0026dns.ManagedZonePrivateVisibilityConfigNetworkArgs{\n\t\t\t\t\t\tNetworkUrl: network_1.ID(),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dns.ManagedZonePrivateVisibilityConfigNetworkArgs{\n\t\t\t\t\t\tNetworkUrl: network_2.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZonePrivateVisibilityConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network_1 = new Network(\"network-1\", NetworkArgs.builder()\n .name(\"network-1\")\n .autoCreateSubnetworks(false)\n .build());\n\n var network_2 = new Network(\"network-2\", NetworkArgs.builder()\n .name(\"network-2\")\n .autoCreateSubnetworks(false)\n .build());\n\n var private_zone = new ManagedZone(\"private-zone\", ManagedZoneArgs.builder()\n .name(\"private-zone\")\n .dnsName(\"private.example.com.\")\n .description(\"Example private DNS zone\")\n .labels(Map.of(\"foo\", \"bar\"))\n .visibility(\"private\")\n .privateVisibilityConfig(ManagedZonePrivateVisibilityConfigArgs.builder()\n .networks( \n ManagedZonePrivateVisibilityConfigNetworkArgs.builder()\n .networkUrl(network_1.id())\n .build(),\n ManagedZonePrivateVisibilityConfigNetworkArgs.builder()\n .networkUrl(network_2.id())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n private-zone:\n type: gcp:dns:ManagedZone\n properties:\n name: private-zone\n dnsName: private.example.com.\n description: Example private DNS zone\n labels:\n foo: bar\n visibility: private\n privateVisibilityConfig:\n networks:\n - networkUrl: ${[\"network-1\"].id}\n - networkUrl: ${[\"network-2\"].id}\n network-1:\n type: gcp:compute:Network\n properties:\n name: network-1\n autoCreateSubnetworks: false\n network-2:\n type: gcp:compute:Network\n properties:\n name: network-2\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dns Managed Zone Private Forwarding\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network_1 = new gcp.compute.Network(\"network-1\", {\n name: \"network-1\",\n autoCreateSubnetworks: false,\n});\nconst network_2 = new gcp.compute.Network(\"network-2\", {\n name: \"network-2\",\n autoCreateSubnetworks: false,\n});\nconst private_zone = new gcp.dns.ManagedZone(\"private-zone\", {\n name: \"private-zone\",\n dnsName: \"private.example.com.\",\n description: \"Example private DNS zone\",\n labels: {\n foo: \"bar\",\n },\n visibility: \"private\",\n privateVisibilityConfig: {\n networks: [\n {\n networkUrl: network_1.id,\n },\n {\n networkUrl: network_2.id,\n },\n ],\n },\n forwardingConfig: {\n targetNameServers: [\n {\n ipv4Address: \"172.16.1.10\",\n },\n {\n ipv4Address: \"172.16.1.20\",\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork_1 = gcp.compute.Network(\"network-1\",\n name=\"network-1\",\n auto_create_subnetworks=False)\nnetwork_2 = gcp.compute.Network(\"network-2\",\n name=\"network-2\",\n auto_create_subnetworks=False)\nprivate_zone = gcp.dns.ManagedZone(\"private-zone\",\n name=\"private-zone\",\n dns_name=\"private.example.com.\",\n description=\"Example private DNS zone\",\n labels={\n \"foo\": \"bar\",\n },\n visibility=\"private\",\n private_visibility_config={\n \"networks\": [\n {\n \"network_url\": network_1.id,\n },\n {\n \"network_url\": network_2.id,\n },\n ],\n },\n forwarding_config={\n \"target_name_servers\": [\n {\n \"ipv4_address\": \"172.16.1.10\",\n },\n {\n \"ipv4_address\": \"172.16.1.20\",\n },\n ],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network_1 = new Gcp.Compute.Network(\"network-1\", new()\n {\n Name = \"network-1\",\n AutoCreateSubnetworks = false,\n });\n\n var network_2 = new Gcp.Compute.Network(\"network-2\", new()\n {\n Name = \"network-2\",\n AutoCreateSubnetworks = false,\n });\n\n var private_zone = new Gcp.Dns.ManagedZone(\"private-zone\", new()\n {\n Name = \"private-zone\",\n DnsName = \"private.example.com.\",\n Description = \"Example private DNS zone\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Visibility = \"private\",\n PrivateVisibilityConfig = new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigArgs\n {\n Networks = new[]\n {\n new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigNetworkArgs\n {\n NetworkUrl = network_1.Id,\n },\n new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigNetworkArgs\n {\n NetworkUrl = network_2.Id,\n },\n },\n },\n ForwardingConfig = new Gcp.Dns.Inputs.ManagedZoneForwardingConfigArgs\n {\n TargetNameServers = new[]\n {\n new Gcp.Dns.Inputs.ManagedZoneForwardingConfigTargetNameServerArgs\n {\n Ipv4Address = \"172.16.1.10\",\n },\n new Gcp.Dns.Inputs.ManagedZoneForwardingConfigTargetNameServerArgs\n {\n Ipv4Address = \"172.16.1.20\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewNetwork(ctx, \"network-1\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network-1\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetwork(ctx, \"network-2\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network-2\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewManagedZone(ctx, \"private-zone\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"private-zone\"),\n\t\t\tDnsName: pulumi.String(\"private.example.com.\"),\n\t\t\tDescription: pulumi.String(\"Example private DNS zone\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tVisibility: pulumi.String(\"private\"),\n\t\t\tPrivateVisibilityConfig: \u0026dns.ManagedZonePrivateVisibilityConfigArgs{\n\t\t\t\tNetworks: dns.ManagedZonePrivateVisibilityConfigNetworkArray{\n\t\t\t\t\t\u0026dns.ManagedZonePrivateVisibilityConfigNetworkArgs{\n\t\t\t\t\t\tNetworkUrl: network_1.ID(),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dns.ManagedZonePrivateVisibilityConfigNetworkArgs{\n\t\t\t\t\t\tNetworkUrl: network_2.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tForwardingConfig: \u0026dns.ManagedZoneForwardingConfigArgs{\n\t\t\t\tTargetNameServers: dns.ManagedZoneForwardingConfigTargetNameServerArray{\n\t\t\t\t\t\u0026dns.ManagedZoneForwardingConfigTargetNameServerArgs{\n\t\t\t\t\t\tIpv4Address: pulumi.String(\"172.16.1.10\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dns.ManagedZoneForwardingConfigTargetNameServerArgs{\n\t\t\t\t\t\tIpv4Address: pulumi.String(\"172.16.1.20\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZonePrivateVisibilityConfigArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZoneForwardingConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network_1 = new Network(\"network-1\", NetworkArgs.builder()\n .name(\"network-1\")\n .autoCreateSubnetworks(false)\n .build());\n\n var network_2 = new Network(\"network-2\", NetworkArgs.builder()\n .name(\"network-2\")\n .autoCreateSubnetworks(false)\n .build());\n\n var private_zone = new ManagedZone(\"private-zone\", ManagedZoneArgs.builder()\n .name(\"private-zone\")\n .dnsName(\"private.example.com.\")\n .description(\"Example private DNS zone\")\n .labels(Map.of(\"foo\", \"bar\"))\n .visibility(\"private\")\n .privateVisibilityConfig(ManagedZonePrivateVisibilityConfigArgs.builder()\n .networks( \n ManagedZonePrivateVisibilityConfigNetworkArgs.builder()\n .networkUrl(network_1.id())\n .build(),\n ManagedZonePrivateVisibilityConfigNetworkArgs.builder()\n .networkUrl(network_2.id())\n .build())\n .build())\n .forwardingConfig(ManagedZoneForwardingConfigArgs.builder()\n .targetNameServers( \n ManagedZoneForwardingConfigTargetNameServerArgs.builder()\n .ipv4Address(\"172.16.1.10\")\n .build(),\n ManagedZoneForwardingConfigTargetNameServerArgs.builder()\n .ipv4Address(\"172.16.1.20\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n private-zone:\n type: gcp:dns:ManagedZone\n properties:\n name: private-zone\n dnsName: private.example.com.\n description: Example private DNS zone\n labels:\n foo: bar\n visibility: private\n privateVisibilityConfig:\n networks:\n - networkUrl: ${[\"network-1\"].id}\n - networkUrl: ${[\"network-2\"].id}\n forwardingConfig:\n targetNameServers:\n - ipv4Address: 172.16.1.10\n - ipv4Address: 172.16.1.20\n network-1:\n type: gcp:compute:Network\n properties:\n name: network-1\n autoCreateSubnetworks: false\n network-2:\n type: gcp:compute:Network\n properties:\n name: network-2\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dns Managed Zone Private Gke\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network_1 = new gcp.compute.Network(\"network-1\", {\n name: \"network-1\",\n autoCreateSubnetworks: false,\n});\nconst subnetwork_1 = new gcp.compute.Subnetwork(\"subnetwork-1\", {\n name: network_1.name,\n network: network_1.name,\n ipCidrRange: \"10.0.36.0/24\",\n region: \"us-central1\",\n privateIpGoogleAccess: true,\n secondaryIpRanges: [\n {\n rangeName: \"pod\",\n ipCidrRange: \"10.0.0.0/19\",\n },\n {\n rangeName: \"svc\",\n ipCidrRange: \"10.0.32.0/22\",\n },\n ],\n});\nconst cluster_1 = new gcp.container.Cluster(\"cluster-1\", {\n name: \"cluster-1\",\n location: \"us-central1-c\",\n initialNodeCount: 1,\n networkingMode: \"VPC_NATIVE\",\n defaultSnatStatus: {\n disabled: true,\n },\n network: network_1.name,\n subnetwork: subnetwork_1.name,\n privateClusterConfig: {\n enablePrivateEndpoint: true,\n enablePrivateNodes: true,\n masterIpv4CidrBlock: \"10.42.0.0/28\",\n masterGlobalAccessConfig: {\n enabled: true,\n },\n },\n masterAuthorizedNetworksConfig: {},\n ipAllocationPolicy: {\n clusterSecondaryRangeName: subnetwork_1.secondaryIpRanges.apply(secondaryIpRanges =\u003e secondaryIpRanges[0].rangeName),\n servicesSecondaryRangeName: subnetwork_1.secondaryIpRanges.apply(secondaryIpRanges =\u003e secondaryIpRanges[1].rangeName),\n },\n deletionProtection: true,\n});\nconst private_zone_gke = new gcp.dns.ManagedZone(\"private-zone-gke\", {\n name: \"private-zone\",\n dnsName: \"private.example.com.\",\n description: \"Example private DNS zone\",\n labels: {\n foo: \"bar\",\n },\n visibility: \"private\",\n privateVisibilityConfig: {\n gkeClusters: [{\n gkeClusterName: cluster_1.id,\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork_1 = gcp.compute.Network(\"network-1\",\n name=\"network-1\",\n auto_create_subnetworks=False)\nsubnetwork_1 = gcp.compute.Subnetwork(\"subnetwork-1\",\n name=network_1.name,\n network=network_1.name,\n ip_cidr_range=\"10.0.36.0/24\",\n region=\"us-central1\",\n private_ip_google_access=True,\n secondary_ip_ranges=[\n {\n \"range_name\": \"pod\",\n \"ip_cidr_range\": \"10.0.0.0/19\",\n },\n {\n \"range_name\": \"svc\",\n \"ip_cidr_range\": \"10.0.32.0/22\",\n },\n ])\ncluster_1 = gcp.container.Cluster(\"cluster-1\",\n name=\"cluster-1\",\n location=\"us-central1-c\",\n initial_node_count=1,\n networking_mode=\"VPC_NATIVE\",\n default_snat_status={\n \"disabled\": True,\n },\n network=network_1.name,\n subnetwork=subnetwork_1.name,\n private_cluster_config={\n \"enable_private_endpoint\": True,\n \"enable_private_nodes\": True,\n \"master_ipv4_cidr_block\": \"10.42.0.0/28\",\n \"master_global_access_config\": {\n \"enabled\": True,\n },\n },\n master_authorized_networks_config={},\n ip_allocation_policy={\n \"cluster_secondary_range_name\": subnetwork_1.secondary_ip_ranges[0].range_name,\n \"services_secondary_range_name\": subnetwork_1.secondary_ip_ranges[1].range_name,\n },\n deletion_protection=True)\nprivate_zone_gke = gcp.dns.ManagedZone(\"private-zone-gke\",\n name=\"private-zone\",\n dns_name=\"private.example.com.\",\n description=\"Example private DNS zone\",\n labels={\n \"foo\": \"bar\",\n },\n visibility=\"private\",\n private_visibility_config={\n \"gke_clusters\": [{\n \"gke_cluster_name\": cluster_1.id,\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network_1 = new Gcp.Compute.Network(\"network-1\", new()\n {\n Name = \"network-1\",\n AutoCreateSubnetworks = false,\n });\n\n var subnetwork_1 = new Gcp.Compute.Subnetwork(\"subnetwork-1\", new()\n {\n Name = network_1.Name,\n Network = network_1.Name,\n IpCidrRange = \"10.0.36.0/24\",\n Region = \"us-central1\",\n PrivateIpGoogleAccess = true,\n SecondaryIpRanges = new[]\n {\n new Gcp.Compute.Inputs.SubnetworkSecondaryIpRangeArgs\n {\n RangeName = \"pod\",\n IpCidrRange = \"10.0.0.0/19\",\n },\n new Gcp.Compute.Inputs.SubnetworkSecondaryIpRangeArgs\n {\n RangeName = \"svc\",\n IpCidrRange = \"10.0.32.0/22\",\n },\n },\n });\n\n var cluster_1 = new Gcp.Container.Cluster(\"cluster-1\", new()\n {\n Name = \"cluster-1\",\n Location = \"us-central1-c\",\n InitialNodeCount = 1,\n NetworkingMode = \"VPC_NATIVE\",\n DefaultSnatStatus = new Gcp.Container.Inputs.ClusterDefaultSnatStatusArgs\n {\n Disabled = true,\n },\n Network = network_1.Name,\n Subnetwork = subnetwork_1.Name,\n PrivateClusterConfig = new Gcp.Container.Inputs.ClusterPrivateClusterConfigArgs\n {\n EnablePrivateEndpoint = true,\n EnablePrivateNodes = true,\n MasterIpv4CidrBlock = \"10.42.0.0/28\",\n MasterGlobalAccessConfig = new Gcp.Container.Inputs.ClusterPrivateClusterConfigMasterGlobalAccessConfigArgs\n {\n Enabled = true,\n },\n },\n MasterAuthorizedNetworksConfig = null,\n IpAllocationPolicy = new Gcp.Container.Inputs.ClusterIpAllocationPolicyArgs\n {\n ClusterSecondaryRangeName = subnetwork_1.SecondaryIpRanges.Apply(secondaryIpRanges =\u003e secondaryIpRanges[0].RangeName),\n ServicesSecondaryRangeName = subnetwork_1.SecondaryIpRanges.Apply(secondaryIpRanges =\u003e secondaryIpRanges[1].RangeName),\n },\n DeletionProtection = true,\n });\n\n var private_zone_gke = new Gcp.Dns.ManagedZone(\"private-zone-gke\", new()\n {\n Name = \"private-zone\",\n DnsName = \"private.example.com.\",\n Description = \"Example private DNS zone\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Visibility = \"private\",\n PrivateVisibilityConfig = new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigArgs\n {\n GkeClusters = new[]\n {\n new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigGkeClusterArgs\n {\n GkeClusterName = cluster_1.Id,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\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.NewNetwork(ctx, \"network-1\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network-1\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSubnetwork(ctx, \"subnetwork-1\", \u0026compute.SubnetworkArgs{\n\t\t\tName: network_1.Name,\n\t\t\tNetwork: network_1.Name,\n\t\t\tIpCidrRange: pulumi.String(\"10.0.36.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPrivateIpGoogleAccess: pulumi.Bool(true),\n\t\t\tSecondaryIpRanges: compute.SubnetworkSecondaryIpRangeArray{\n\t\t\t\t\u0026compute.SubnetworkSecondaryIpRangeArgs{\n\t\t\t\t\tRangeName: pulumi.String(\"pod\"),\n\t\t\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/19\"),\n\t\t\t\t},\n\t\t\t\t\u0026compute.SubnetworkSecondaryIpRangeArgs{\n\t\t\t\t\tRangeName: pulumi.String(\"svc\"),\n\t\t\t\t\tIpCidrRange: pulumi.String(\"10.0.32.0/22\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewCluster(ctx, \"cluster-1\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"cluster-1\"),\n\t\t\tLocation: pulumi.String(\"us-central1-c\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tNetworkingMode: pulumi.String(\"VPC_NATIVE\"),\n\t\t\tDefaultSnatStatus: \u0026container.ClusterDefaultSnatStatusArgs{\n\t\t\t\tDisabled: pulumi.Bool(true),\n\t\t\t},\n\t\t\tNetwork: network_1.Name,\n\t\t\tSubnetwork: subnetwork_1.Name,\n\t\t\tPrivateClusterConfig: \u0026container.ClusterPrivateClusterConfigArgs{\n\t\t\t\tEnablePrivateEndpoint: pulumi.Bool(true),\n\t\t\t\tEnablePrivateNodes: pulumi.Bool(true),\n\t\t\t\tMasterIpv4CidrBlock: pulumi.String(\"10.42.0.0/28\"),\n\t\t\t\tMasterGlobalAccessConfig: \u0026container.ClusterPrivateClusterConfigMasterGlobalAccessConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMasterAuthorizedNetworksConfig: \u0026container.ClusterMasterAuthorizedNetworksConfigArgs{},\n\t\t\tIpAllocationPolicy: \u0026container.ClusterIpAllocationPolicyArgs{\n\t\t\t\tClusterSecondaryRangeName: subnetwork_1.SecondaryIpRanges.ApplyT(func(secondaryIpRanges []compute.SubnetworkSecondaryIpRange) (*string, error) {\n\t\t\t\t\treturn \u0026secondaryIpRanges[0].RangeName, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tServicesSecondaryRangeName: subnetwork_1.SecondaryIpRanges.ApplyT(func(secondaryIpRanges []compute.SubnetworkSecondaryIpRange) (*string, error) {\n\t\t\t\t\treturn \u0026secondaryIpRanges[1].RangeName, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewManagedZone(ctx, \"private-zone-gke\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"private-zone\"),\n\t\t\tDnsName: pulumi.String(\"private.example.com.\"),\n\t\t\tDescription: pulumi.String(\"Example private DNS zone\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tVisibility: pulumi.String(\"private\"),\n\t\t\tPrivateVisibilityConfig: \u0026dns.ManagedZonePrivateVisibilityConfigArgs{\n\t\t\t\tGkeClusters: dns.ManagedZonePrivateVisibilityConfigGkeClusterArray{\n\t\t\t\t\t\u0026dns.ManagedZonePrivateVisibilityConfigGkeClusterArgs{\n\t\t\t\t\t\tGkeClusterName: cluster_1.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.inputs.SubnetworkSecondaryIpRangeArgs;\nimport com.pulumi.gcp.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterDefaultSnatStatusArgs;\nimport com.pulumi.gcp.container.inputs.ClusterPrivateClusterConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterPrivateClusterConfigMasterGlobalAccessConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterMasterAuthorizedNetworksConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterIpAllocationPolicyArgs;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZonePrivateVisibilityConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network_1 = new Network(\"network-1\", NetworkArgs.builder()\n .name(\"network-1\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnetwork_1 = new Subnetwork(\"subnetwork-1\", SubnetworkArgs.builder()\n .name(network_1.name())\n .network(network_1.name())\n .ipCidrRange(\"10.0.36.0/24\")\n .region(\"us-central1\")\n .privateIpGoogleAccess(true)\n .secondaryIpRanges( \n SubnetworkSecondaryIpRangeArgs.builder()\n .rangeName(\"pod\")\n .ipCidrRange(\"10.0.0.0/19\")\n .build(),\n SubnetworkSecondaryIpRangeArgs.builder()\n .rangeName(\"svc\")\n .ipCidrRange(\"10.0.32.0/22\")\n .build())\n .build());\n\n var cluster_1 = new Cluster(\"cluster-1\", ClusterArgs.builder()\n .name(\"cluster-1\")\n .location(\"us-central1-c\")\n .initialNodeCount(1)\n .networkingMode(\"VPC_NATIVE\")\n .defaultSnatStatus(ClusterDefaultSnatStatusArgs.builder()\n .disabled(true)\n .build())\n .network(network_1.name())\n .subnetwork(subnetwork_1.name())\n .privateClusterConfig(ClusterPrivateClusterConfigArgs.builder()\n .enablePrivateEndpoint(true)\n .enablePrivateNodes(true)\n .masterIpv4CidrBlock(\"10.42.0.0/28\")\n .masterGlobalAccessConfig(ClusterPrivateClusterConfigMasterGlobalAccessConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .masterAuthorizedNetworksConfig()\n .ipAllocationPolicy(ClusterIpAllocationPolicyArgs.builder()\n .clusterSecondaryRangeName(subnetwork_1.secondaryIpRanges().applyValue(secondaryIpRanges -\u003e secondaryIpRanges[0].rangeName()))\n .servicesSecondaryRangeName(subnetwork_1.secondaryIpRanges().applyValue(secondaryIpRanges -\u003e secondaryIpRanges[1].rangeName()))\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var private_zone_gke = new ManagedZone(\"private-zone-gke\", ManagedZoneArgs.builder()\n .name(\"private-zone\")\n .dnsName(\"private.example.com.\")\n .description(\"Example private DNS zone\")\n .labels(Map.of(\"foo\", \"bar\"))\n .visibility(\"private\")\n .privateVisibilityConfig(ManagedZonePrivateVisibilityConfigArgs.builder()\n .gkeClusters(ManagedZonePrivateVisibilityConfigGkeClusterArgs.builder()\n .gkeClusterName(cluster_1.id())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n private-zone-gke:\n type: gcp:dns:ManagedZone\n properties:\n name: private-zone\n dnsName: private.example.com.\n description: Example private DNS zone\n labels:\n foo: bar\n visibility: private\n privateVisibilityConfig:\n gkeClusters:\n - gkeClusterName: ${[\"cluster-1\"].id}\n network-1:\n type: gcp:compute:Network\n properties:\n name: network-1\n autoCreateSubnetworks: false\n subnetwork-1:\n type: gcp:compute:Subnetwork\n properties:\n name: ${[\"network-1\"].name}\n network: ${[\"network-1\"].name}\n ipCidrRange: 10.0.36.0/24\n region: us-central1\n privateIpGoogleAccess: true\n secondaryIpRanges:\n - rangeName: pod\n ipCidrRange: 10.0.0.0/19\n - rangeName: svc\n ipCidrRange: 10.0.32.0/22\n cluster-1:\n type: gcp:container:Cluster\n properties:\n name: cluster-1\n location: us-central1-c\n initialNodeCount: 1\n networkingMode: VPC_NATIVE\n defaultSnatStatus:\n disabled: true\n network: ${[\"network-1\"].name}\n subnetwork: ${[\"subnetwork-1\"].name}\n privateClusterConfig:\n enablePrivateEndpoint: true\n enablePrivateNodes: true\n masterIpv4CidrBlock: 10.42.0.0/28\n masterGlobalAccessConfig:\n enabled: true\n masterAuthorizedNetworksConfig: {}\n ipAllocationPolicy:\n clusterSecondaryRangeName: ${[\"subnetwork-1\"].secondaryIpRanges[0].rangeName}\n servicesSecondaryRangeName: ${[\"subnetwork-1\"].secondaryIpRanges[1].rangeName}\n deletionProtection: 'true'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dns Managed Zone Private Peering\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network_source = new gcp.compute.Network(\"network-source\", {\n name: \"network-source\",\n autoCreateSubnetworks: false,\n});\nconst network_target = new gcp.compute.Network(\"network-target\", {\n name: \"network-target\",\n autoCreateSubnetworks: false,\n});\nconst peering_zone = new gcp.dns.ManagedZone(\"peering-zone\", {\n name: \"peering-zone\",\n dnsName: \"peering.example.com.\",\n description: \"Example private DNS peering zone\",\n visibility: \"private\",\n privateVisibilityConfig: {\n networks: [{\n networkUrl: network_source.id,\n }],\n },\n peeringConfig: {\n targetNetwork: {\n networkUrl: network_target.id,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork_source = gcp.compute.Network(\"network-source\",\n name=\"network-source\",\n auto_create_subnetworks=False)\nnetwork_target = gcp.compute.Network(\"network-target\",\n name=\"network-target\",\n auto_create_subnetworks=False)\npeering_zone = gcp.dns.ManagedZone(\"peering-zone\",\n name=\"peering-zone\",\n dns_name=\"peering.example.com.\",\n description=\"Example private DNS peering zone\",\n visibility=\"private\",\n private_visibility_config={\n \"networks\": [{\n \"network_url\": network_source.id,\n }],\n },\n peering_config={\n \"target_network\": {\n \"network_url\": network_target.id,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network_source = new Gcp.Compute.Network(\"network-source\", new()\n {\n Name = \"network-source\",\n AutoCreateSubnetworks = false,\n });\n\n var network_target = new Gcp.Compute.Network(\"network-target\", new()\n {\n Name = \"network-target\",\n AutoCreateSubnetworks = false,\n });\n\n var peering_zone = new Gcp.Dns.ManagedZone(\"peering-zone\", new()\n {\n Name = \"peering-zone\",\n DnsName = \"peering.example.com.\",\n Description = \"Example private DNS peering zone\",\n Visibility = \"private\",\n PrivateVisibilityConfig = new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigArgs\n {\n Networks = new[]\n {\n new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigNetworkArgs\n {\n NetworkUrl = network_source.Id,\n },\n },\n },\n PeeringConfig = new Gcp.Dns.Inputs.ManagedZonePeeringConfigArgs\n {\n TargetNetwork = new Gcp.Dns.Inputs.ManagedZonePeeringConfigTargetNetworkArgs\n {\n NetworkUrl = network_target.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewNetwork(ctx, \"network-source\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network-source\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetwork(ctx, \"network-target\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network-target\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewManagedZone(ctx, \"peering-zone\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"peering-zone\"),\n\t\t\tDnsName: pulumi.String(\"peering.example.com.\"),\n\t\t\tDescription: pulumi.String(\"Example private DNS peering zone\"),\n\t\t\tVisibility: pulumi.String(\"private\"),\n\t\t\tPrivateVisibilityConfig: \u0026dns.ManagedZonePrivateVisibilityConfigArgs{\n\t\t\t\tNetworks: dns.ManagedZonePrivateVisibilityConfigNetworkArray{\n\t\t\t\t\t\u0026dns.ManagedZonePrivateVisibilityConfigNetworkArgs{\n\t\t\t\t\t\tNetworkUrl: network_source.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tPeeringConfig: \u0026dns.ManagedZonePeeringConfigArgs{\n\t\t\t\tTargetNetwork: \u0026dns.ManagedZonePeeringConfigTargetNetworkArgs{\n\t\t\t\t\tNetworkUrl: network_target.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZonePrivateVisibilityConfigArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZonePeeringConfigArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZonePeeringConfigTargetNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network_source = new Network(\"network-source\", NetworkArgs.builder()\n .name(\"network-source\")\n .autoCreateSubnetworks(false)\n .build());\n\n var network_target = new Network(\"network-target\", NetworkArgs.builder()\n .name(\"network-target\")\n .autoCreateSubnetworks(false)\n .build());\n\n var peering_zone = new ManagedZone(\"peering-zone\", ManagedZoneArgs.builder()\n .name(\"peering-zone\")\n .dnsName(\"peering.example.com.\")\n .description(\"Example private DNS peering zone\")\n .visibility(\"private\")\n .privateVisibilityConfig(ManagedZonePrivateVisibilityConfigArgs.builder()\n .networks(ManagedZonePrivateVisibilityConfigNetworkArgs.builder()\n .networkUrl(network_source.id())\n .build())\n .build())\n .peeringConfig(ManagedZonePeeringConfigArgs.builder()\n .targetNetwork(ManagedZonePeeringConfigTargetNetworkArgs.builder()\n .networkUrl(network_target.id())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n peering-zone:\n type: gcp:dns:ManagedZone\n properties:\n name: peering-zone\n dnsName: peering.example.com.\n description: Example private DNS peering zone\n visibility: private\n privateVisibilityConfig:\n networks:\n - networkUrl: ${[\"network-source\"].id}\n peeringConfig:\n targetNetwork:\n networkUrl: ${[\"network-target\"].id}\n network-source:\n type: gcp:compute:Network\n properties:\n name: network-source\n autoCreateSubnetworks: false\n network-target:\n type: gcp:compute:Network\n properties:\n name: network-target\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dns Managed Zone Service Directory\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.servicedirectory.Namespace(\"example\", {\n namespaceId: \"example\",\n location: \"us-central1\",\n});\nconst sd_zone = new gcp.dns.ManagedZone(\"sd-zone\", {\n name: \"peering-zone\",\n dnsName: \"services.example.com.\",\n description: \"Example private DNS Service Directory zone\",\n visibility: \"private\",\n serviceDirectoryConfig: {\n namespace: {\n namespaceUrl: example.id,\n },\n },\n});\nconst network = new gcp.compute.Network(\"network\", {\n name: \"network\",\n autoCreateSubnetworks: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.servicedirectory.Namespace(\"example\",\n namespace_id=\"example\",\n location=\"us-central1\")\nsd_zone = gcp.dns.ManagedZone(\"sd-zone\",\n name=\"peering-zone\",\n dns_name=\"services.example.com.\",\n description=\"Example private DNS Service Directory zone\",\n visibility=\"private\",\n service_directory_config={\n \"namespace\": {\n \"namespace_url\": example.id,\n },\n })\nnetwork = gcp.compute.Network(\"network\",\n name=\"network\",\n auto_create_subnetworks=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.ServiceDirectory.Namespace(\"example\", new()\n {\n NamespaceId = \"example\",\n Location = \"us-central1\",\n });\n\n var sd_zone = new Gcp.Dns.ManagedZone(\"sd-zone\", new()\n {\n Name = \"peering-zone\",\n DnsName = \"services.example.com.\",\n Description = \"Example private DNS Service Directory zone\",\n Visibility = \"private\",\n ServiceDirectoryConfig = new Gcp.Dns.Inputs.ManagedZoneServiceDirectoryConfigArgs\n {\n Namespace = new Gcp.Dns.Inputs.ManagedZoneServiceDirectoryConfigNamespaceArgs\n {\n NamespaceUrl = example.Id,\n },\n },\n });\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"network\",\n AutoCreateSubnetworks = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicedirectory\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := servicedirectory.NewNamespace(ctx, \"example\", \u0026servicedirectory.NamespaceArgs{\n\t\t\tNamespaceId: pulumi.String(\"example\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewManagedZone(ctx, \"sd-zone\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"peering-zone\"),\n\t\t\tDnsName: pulumi.String(\"services.example.com.\"),\n\t\t\tDescription: pulumi.String(\"Example private DNS Service Directory zone\"),\n\t\t\tVisibility: pulumi.String(\"private\"),\n\t\t\tServiceDirectoryConfig: \u0026dns.ManagedZoneServiceDirectoryConfigArgs{\n\t\t\t\tNamespace: \u0026dns.ManagedZoneServiceDirectoryConfigNamespaceArgs{\n\t\t\t\t\tNamespaceUrl: example.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.servicedirectory.Namespace;\nimport com.pulumi.gcp.servicedirectory.NamespaceArgs;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZoneServiceDirectoryConfigArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZoneServiceDirectoryConfigNamespaceArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Namespace(\"example\", NamespaceArgs.builder()\n .namespaceId(\"example\")\n .location(\"us-central1\")\n .build());\n\n var sd_zone = new ManagedZone(\"sd-zone\", ManagedZoneArgs.builder()\n .name(\"peering-zone\")\n .dnsName(\"services.example.com.\")\n .description(\"Example private DNS Service Directory zone\")\n .visibility(\"private\")\n .serviceDirectoryConfig(ManagedZoneServiceDirectoryConfigArgs.builder()\n .namespace(ManagedZoneServiceDirectoryConfigNamespaceArgs.builder()\n .namespaceUrl(example.id())\n .build())\n .build())\n .build());\n\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"network\")\n .autoCreateSubnetworks(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sd-zone:\n type: gcp:dns:ManagedZone\n properties:\n name: peering-zone\n dnsName: services.example.com.\n description: Example private DNS Service Directory zone\n visibility: private\n serviceDirectoryConfig:\n namespace:\n namespaceUrl: ${example.id}\n example:\n type: gcp:servicedirectory:Namespace\n properties:\n namespaceId: example\n location: us-central1\n network:\n type: gcp:compute:Network\n properties:\n name: network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Dns Managed Zone Cloud Logging\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cloud_logging_enabled_zone = new gcp.dns.ManagedZone(\"cloud-logging-enabled-zone\", {\n name: \"cloud-logging-enabled-zone\",\n dnsName: \"services.example.com.\",\n description: \"Example cloud logging enabled DNS zone\",\n labels: {\n foo: \"bar\",\n },\n cloudLoggingConfig: {\n enableLogging: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncloud_logging_enabled_zone = gcp.dns.ManagedZone(\"cloud-logging-enabled-zone\",\n name=\"cloud-logging-enabled-zone\",\n dns_name=\"services.example.com.\",\n description=\"Example cloud logging enabled DNS zone\",\n labels={\n \"foo\": \"bar\",\n },\n cloud_logging_config={\n \"enable_logging\": True,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cloud_logging_enabled_zone = new Gcp.Dns.ManagedZone(\"cloud-logging-enabled-zone\", new()\n {\n Name = \"cloud-logging-enabled-zone\",\n DnsName = \"services.example.com.\",\n Description = \"Example cloud logging enabled DNS zone\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n CloudLoggingConfig = new Gcp.Dns.Inputs.ManagedZoneCloudLoggingConfigArgs\n {\n EnableLogging = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewManagedZone(ctx, \"cloud-logging-enabled-zone\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"cloud-logging-enabled-zone\"),\n\t\t\tDnsName: pulumi.String(\"services.example.com.\"),\n\t\t\tDescription: pulumi.String(\"Example cloud logging enabled DNS zone\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tCloudLoggingConfig: \u0026dns.ManagedZoneCloudLoggingConfigArgs{\n\t\t\t\tEnableLogging: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZoneCloudLoggingConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cloud_logging_enabled_zone = new ManagedZone(\"cloud-logging-enabled-zone\", ManagedZoneArgs.builder()\n .name(\"cloud-logging-enabled-zone\")\n .dnsName(\"services.example.com.\")\n .description(\"Example cloud logging enabled DNS zone\")\n .labels(Map.of(\"foo\", \"bar\"))\n .cloudLoggingConfig(ManagedZoneCloudLoggingConfigArgs.builder()\n .enableLogging(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cloud-logging-enabled-zone:\n type: gcp:dns:ManagedZone\n properties:\n name: cloud-logging-enabled-zone\n dnsName: services.example.com.\n description: Example cloud logging enabled DNS zone\n labels:\n foo: bar\n cloudLoggingConfig:\n enableLogging: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nManagedZone can be imported using any of these accepted formats:\n\n* `projects/{{project}}/managedZones/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, ManagedZone can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dns/managedZone:ManagedZone default projects/{{project}}/managedZones/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dns/managedZone:ManagedZone default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dns/managedZone:ManagedZone default {{name}}\n```\n\n", "properties": { "cloudLoggingConfig": { "$ref": "#/types/gcp:dns/ManagedZoneCloudLoggingConfig:ManagedZoneCloudLoggingConfig", @@ -193878,7 +193878,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\tnil,\n\t\t\t\t\t},\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"frontend\"),\n\t\t\tMachineType: pulumi.String(\"g1-small\"),\n\t\t\tZone: pulumi.String(\"us-central1-b\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(\"debian-cloud/debian-11\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprod, err := dns.NewManagedZone(ctx, \"prod\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"prod-zone\"),\n\t\t\tDnsName: pulumi.String(\"prod.mydomain.com.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"frontend\", \u0026dns.RecordSetArgs{\n\t\t\tName: prod.DnsName.ApplyT(func(dnsName string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"frontend.%v\", dnsName), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tManagedZone: prod.Name,\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tpulumi.String(frontendInstance.NetworkInterfaces.ApplyT(func(networkInterfaces []compute.InstanceNetworkInterface) (*string, error) {\n\t\t\t\t\treturn \u0026networkInterfaces[0].AccessConfigs[0].NatIp, nil\n\t\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var frontendInstance = new Instance(\"frontendInstance\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .network(\"default\")\n .build())\n .name(\"frontend\")\n .machineType(\"g1-small\")\n .zone(\"us-central1-b\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(\"debian-cloud/debian-11\")\n .build())\n .build())\n .build());\n\n var prod = new ManagedZone(\"prod\", ManagedZoneArgs.builder()\n .name(\"prod-zone\")\n .dnsName(\"prod.mydomain.com.\")\n .build());\n\n var frontend = new RecordSet(\"frontend\", RecordSetArgs.builder()\n .name(prod.dnsName().applyValue(dnsName -\u003e String.format(\"frontend.%s\", dnsName)))\n .type(\"A\")\n .ttl(300)\n .managedZone(prod.name())\n .rrdatas(frontendInstance.networkInterfaces().applyValue(networkInterfaces -\u003e networkInterfaces[0].accessConfigs()[0].natIp()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n frontend:\n type: gcp:dns:RecordSet\n properties:\n name: frontend.${prod.dnsName}\n type: A\n ttl: 300\n managedZone: ${prod.name}\n rrdatas:\n - ${frontendInstance.networkInterfaces[0].accessConfigs[0].natIp}\n frontendInstance:\n type: gcp:compute:Instance\n name: frontend\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n network: default\n name: frontend\n machineType: g1-small\n zone: us-central1-b\n bootDisk:\n initializeParams:\n image: debian-cloud/debian-11\n prod:\n type: gcp:dns:ManagedZone\n properties:\n name: prod-zone\n dnsName: prod.mydomain.com.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Adding an A record\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst prod = new gcp.dns.ManagedZone(\"prod\", {\n name: \"prod-zone\",\n dnsName: \"prod.mydomain.com.\",\n});\nconst a = new gcp.dns.RecordSet(\"a\", {\n name: pulumi.interpolate`backend.${prod.dnsName}`,\n managedZone: prod.name,\n type: \"A\",\n ttl: 300,\n rrdatas: [\"8.8.8.8\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprod = gcp.dns.ManagedZone(\"prod\",\n name=\"prod-zone\",\n dns_name=\"prod.mydomain.com.\")\na = gcp.dns.RecordSet(\"a\",\n name=prod.dns_name.apply(lambda dns_name: f\"backend.{dns_name}\"),\n managed_zone=prod.name,\n type=\"A\",\n ttl=300,\n rrdatas=[\"8.8.8.8\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var prod = new Gcp.Dns.ManagedZone(\"prod\", new()\n {\n Name = \"prod-zone\",\n DnsName = \"prod.mydomain.com.\",\n });\n\n var a = new Gcp.Dns.RecordSet(\"a\", new()\n {\n Name = prod.DnsName.Apply(dnsName =\u003e $\"backend.{dnsName}\"),\n ManagedZone = prod.Name,\n Type = \"A\",\n Ttl = 300,\n Rrdatas = new[]\n {\n \"8.8.8.8\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/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## 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", @@ -193998,7 +193998,7 @@ } }, "gcp:dns/responsePolicy:ResponsePolicy": { - "description": "A Response Policy is a collection of selectors that apply to queries\nmade against one or more Virtual Private Cloud networks.\n\n\n\n## Example Usage\n\n### Dns Response Policy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network_1 = new gcp.compute.Network(\"network-1\", {\n name: \"network-1\",\n autoCreateSubnetworks: false,\n});\nconst network_2 = new gcp.compute.Network(\"network-2\", {\n name: \"network-2\",\n autoCreateSubnetworks: false,\n});\nconst subnetwork_1 = new gcp.compute.Subnetwork(\"subnetwork-1\", {\n name: network_1.name,\n network: network_1.name,\n ipCidrRange: \"10.0.36.0/24\",\n region: \"us-central1\",\n privateIpGoogleAccess: true,\n secondaryIpRanges: [\n {\n rangeName: \"pod\",\n ipCidrRange: \"10.0.0.0/19\",\n },\n {\n rangeName: \"svc\",\n ipCidrRange: \"10.0.32.0/22\",\n },\n ],\n});\nconst cluster_1 = new gcp.container.Cluster(\"cluster-1\", {\n name: \"cluster-1\",\n location: \"us-central1-c\",\n initialNodeCount: 1,\n networkingMode: \"VPC_NATIVE\",\n defaultSnatStatus: {\n disabled: true,\n },\n network: network_1.name,\n subnetwork: subnetwork_1.name,\n privateClusterConfig: {\n enablePrivateEndpoint: true,\n enablePrivateNodes: true,\n masterIpv4CidrBlock: \"10.42.0.0/28\",\n masterGlobalAccessConfig: {\n enabled: true,\n },\n },\n masterAuthorizedNetworksConfig: {},\n ipAllocationPolicy: {\n clusterSecondaryRangeName: subnetwork_1.secondaryIpRanges.apply(secondaryIpRanges =\u003e secondaryIpRanges[0].rangeName),\n servicesSecondaryRangeName: subnetwork_1.secondaryIpRanges.apply(secondaryIpRanges =\u003e secondaryIpRanges[1].rangeName),\n },\n deletionProtection: true,\n});\nconst example_response_policy = new gcp.dns.ResponsePolicy(\"example-response-policy\", {\n responsePolicyName: \"example-response-policy\",\n networks: [\n {\n networkUrl: network_1.id,\n },\n {\n networkUrl: network_2.id,\n },\n ],\n gkeClusters: [{\n gkeClusterName: cluster_1.id,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork_1 = gcp.compute.Network(\"network-1\",\n name=\"network-1\",\n auto_create_subnetworks=False)\nnetwork_2 = gcp.compute.Network(\"network-2\",\n name=\"network-2\",\n auto_create_subnetworks=False)\nsubnetwork_1 = gcp.compute.Subnetwork(\"subnetwork-1\",\n name=network_1.name,\n network=network_1.name,\n ip_cidr_range=\"10.0.36.0/24\",\n region=\"us-central1\",\n private_ip_google_access=True,\n secondary_ip_ranges=[\n {\n \"range_name\": \"pod\",\n \"ip_cidr_range\": \"10.0.0.0/19\",\n },\n {\n \"range_name\": \"svc\",\n \"ip_cidr_range\": \"10.0.32.0/22\",\n },\n ])\ncluster_1 = gcp.container.Cluster(\"cluster-1\",\n name=\"cluster-1\",\n location=\"us-central1-c\",\n initial_node_count=1,\n networking_mode=\"VPC_NATIVE\",\n default_snat_status={\n \"disabled\": True,\n },\n network=network_1.name,\n subnetwork=subnetwork_1.name,\n private_cluster_config={\n \"enable_private_endpoint\": True,\n \"enable_private_nodes\": True,\n \"master_ipv4_cidr_block\": \"10.42.0.0/28\",\n \"master_global_access_config\": {\n \"enabled\": True,\n },\n },\n master_authorized_networks_config={},\n ip_allocation_policy={\n \"cluster_secondary_range_name\": subnetwork_1.secondary_ip_ranges[0].range_name,\n \"services_secondary_range_name\": subnetwork_1.secondary_ip_ranges[1].range_name,\n },\n deletion_protection=True)\nexample_response_policy = gcp.dns.ResponsePolicy(\"example-response-policy\",\n response_policy_name=\"example-response-policy\",\n networks=[\n {\n \"network_url\": network_1.id,\n },\n {\n \"network_url\": network_2.id,\n },\n ],\n gke_clusters=[{\n \"gke_cluster_name\": cluster_1.id,\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network_1 = new Gcp.Compute.Network(\"network-1\", new()\n {\n Name = \"network-1\",\n AutoCreateSubnetworks = false,\n });\n\n var network_2 = new Gcp.Compute.Network(\"network-2\", new()\n {\n Name = \"network-2\",\n AutoCreateSubnetworks = false,\n });\n\n var subnetwork_1 = new Gcp.Compute.Subnetwork(\"subnetwork-1\", new()\n {\n Name = network_1.Name,\n Network = network_1.Name,\n IpCidrRange = \"10.0.36.0/24\",\n Region = \"us-central1\",\n PrivateIpGoogleAccess = true,\n SecondaryIpRanges = new[]\n {\n new Gcp.Compute.Inputs.SubnetworkSecondaryIpRangeArgs\n {\n RangeName = \"pod\",\n IpCidrRange = \"10.0.0.0/19\",\n },\n new Gcp.Compute.Inputs.SubnetworkSecondaryIpRangeArgs\n {\n RangeName = \"svc\",\n IpCidrRange = \"10.0.32.0/22\",\n },\n },\n });\n\n var cluster_1 = new Gcp.Container.Cluster(\"cluster-1\", new()\n {\n Name = \"cluster-1\",\n Location = \"us-central1-c\",\n InitialNodeCount = 1,\n NetworkingMode = \"VPC_NATIVE\",\n DefaultSnatStatus = new Gcp.Container.Inputs.ClusterDefaultSnatStatusArgs\n {\n Disabled = true,\n },\n Network = network_1.Name,\n Subnetwork = subnetwork_1.Name,\n PrivateClusterConfig = new Gcp.Container.Inputs.ClusterPrivateClusterConfigArgs\n {\n EnablePrivateEndpoint = true,\n EnablePrivateNodes = true,\n MasterIpv4CidrBlock = \"10.42.0.0/28\",\n MasterGlobalAccessConfig = new Gcp.Container.Inputs.ClusterPrivateClusterConfigMasterGlobalAccessConfigArgs\n {\n Enabled = true,\n },\n },\n MasterAuthorizedNetworksConfig = null,\n IpAllocationPolicy = new Gcp.Container.Inputs.ClusterIpAllocationPolicyArgs\n {\n ClusterSecondaryRangeName = subnetwork_1.SecondaryIpRanges.Apply(secondaryIpRanges =\u003e secondaryIpRanges[0].RangeName),\n ServicesSecondaryRangeName = subnetwork_1.SecondaryIpRanges.Apply(secondaryIpRanges =\u003e secondaryIpRanges[1].RangeName),\n },\n DeletionProtection = true,\n });\n\n var example_response_policy = new Gcp.Dns.ResponsePolicy(\"example-response-policy\", new()\n {\n ResponsePolicyName = \"example-response-policy\",\n Networks = new[]\n {\n new Gcp.Dns.Inputs.ResponsePolicyNetworkArgs\n {\n NetworkUrl = network_1.Id,\n },\n new Gcp.Dns.Inputs.ResponsePolicyNetworkArgs\n {\n NetworkUrl = network_2.Id,\n },\n },\n GkeClusters = new[]\n {\n new Gcp.Dns.Inputs.ResponsePolicyGkeClusterArgs\n {\n GkeClusterName = cluster_1.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\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.NewNetwork(ctx, \"network-1\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network-1\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetwork(ctx, \"network-2\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network-2\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSubnetwork(ctx, \"subnetwork-1\", \u0026compute.SubnetworkArgs{\n\t\t\tName: network_1.Name,\n\t\t\tNetwork: network_1.Name,\n\t\t\tIpCidrRange: pulumi.String(\"10.0.36.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPrivateIpGoogleAccess: pulumi.Bool(true),\n\t\t\tSecondaryIpRanges: compute.SubnetworkSecondaryIpRangeArray{\n\t\t\t\t\u0026compute.SubnetworkSecondaryIpRangeArgs{\n\t\t\t\t\tRangeName: pulumi.String(\"pod\"),\n\t\t\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/19\"),\n\t\t\t\t},\n\t\t\t\t\u0026compute.SubnetworkSecondaryIpRangeArgs{\n\t\t\t\t\tRangeName: pulumi.String(\"svc\"),\n\t\t\t\t\tIpCidrRange: pulumi.String(\"10.0.32.0/22\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewCluster(ctx, \"cluster-1\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"cluster-1\"),\n\t\t\tLocation: pulumi.String(\"us-central1-c\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tNetworkingMode: pulumi.String(\"VPC_NATIVE\"),\n\t\t\tDefaultSnatStatus: \u0026container.ClusterDefaultSnatStatusArgs{\n\t\t\t\tDisabled: pulumi.Bool(true),\n\t\t\t},\n\t\t\tNetwork: network_1.Name,\n\t\t\tSubnetwork: subnetwork_1.Name,\n\t\t\tPrivateClusterConfig: \u0026container.ClusterPrivateClusterConfigArgs{\n\t\t\t\tEnablePrivateEndpoint: pulumi.Bool(true),\n\t\t\t\tEnablePrivateNodes: pulumi.Bool(true),\n\t\t\t\tMasterIpv4CidrBlock: pulumi.String(\"10.42.0.0/28\"),\n\t\t\t\tMasterGlobalAccessConfig: \u0026container.ClusterPrivateClusterConfigMasterGlobalAccessConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMasterAuthorizedNetworksConfig: nil,\n\t\t\tIpAllocationPolicy: \u0026container.ClusterIpAllocationPolicyArgs{\n\t\t\t\tClusterSecondaryRangeName: subnetwork_1.SecondaryIpRanges.ApplyT(func(secondaryIpRanges []compute.SubnetworkSecondaryIpRange) (*string, error) {\n\t\t\t\t\treturn \u0026secondaryIpRanges[0].RangeName, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tServicesSecondaryRangeName: subnetwork_1.SecondaryIpRanges.ApplyT(func(secondaryIpRanges []compute.SubnetworkSecondaryIpRange) (*string, error) {\n\t\t\t\t\treturn \u0026secondaryIpRanges[1].RangeName, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewResponsePolicy(ctx, \"example-response-policy\", \u0026dns.ResponsePolicyArgs{\n\t\t\tResponsePolicyName: pulumi.String(\"example-response-policy\"),\n\t\t\tNetworks: dns.ResponsePolicyNetworkArray{\n\t\t\t\t\u0026dns.ResponsePolicyNetworkArgs{\n\t\t\t\t\tNetworkUrl: network_1.ID(),\n\t\t\t\t},\n\t\t\t\t\u0026dns.ResponsePolicyNetworkArgs{\n\t\t\t\t\tNetworkUrl: network_2.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tGkeClusters: dns.ResponsePolicyGkeClusterArray{\n\t\t\t\t\u0026dns.ResponsePolicyGkeClusterArgs{\n\t\t\t\t\tGkeClusterName: cluster_1.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.inputs.SubnetworkSecondaryIpRangeArgs;\nimport com.pulumi.gcp.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterDefaultSnatStatusArgs;\nimport com.pulumi.gcp.container.inputs.ClusterPrivateClusterConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterPrivateClusterConfigMasterGlobalAccessConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterMasterAuthorizedNetworksConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterIpAllocationPolicyArgs;\nimport com.pulumi.gcp.dns.ResponsePolicy;\nimport com.pulumi.gcp.dns.ResponsePolicyArgs;\nimport com.pulumi.gcp.dns.inputs.ResponsePolicyNetworkArgs;\nimport com.pulumi.gcp.dns.inputs.ResponsePolicyGkeClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network_1 = new Network(\"network-1\", NetworkArgs.builder()\n .name(\"network-1\")\n .autoCreateSubnetworks(false)\n .build());\n\n var network_2 = new Network(\"network-2\", NetworkArgs.builder()\n .name(\"network-2\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnetwork_1 = new Subnetwork(\"subnetwork-1\", SubnetworkArgs.builder()\n .name(network_1.name())\n .network(network_1.name())\n .ipCidrRange(\"10.0.36.0/24\")\n .region(\"us-central1\")\n .privateIpGoogleAccess(true)\n .secondaryIpRanges( \n SubnetworkSecondaryIpRangeArgs.builder()\n .rangeName(\"pod\")\n .ipCidrRange(\"10.0.0.0/19\")\n .build(),\n SubnetworkSecondaryIpRangeArgs.builder()\n .rangeName(\"svc\")\n .ipCidrRange(\"10.0.32.0/22\")\n .build())\n .build());\n\n var cluster_1 = new Cluster(\"cluster-1\", ClusterArgs.builder()\n .name(\"cluster-1\")\n .location(\"us-central1-c\")\n .initialNodeCount(1)\n .networkingMode(\"VPC_NATIVE\")\n .defaultSnatStatus(ClusterDefaultSnatStatusArgs.builder()\n .disabled(true)\n .build())\n .network(network_1.name())\n .subnetwork(subnetwork_1.name())\n .privateClusterConfig(ClusterPrivateClusterConfigArgs.builder()\n .enablePrivateEndpoint(true)\n .enablePrivateNodes(true)\n .masterIpv4CidrBlock(\"10.42.0.0/28\")\n .masterGlobalAccessConfig(ClusterPrivateClusterConfigMasterGlobalAccessConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .masterAuthorizedNetworksConfig()\n .ipAllocationPolicy(ClusterIpAllocationPolicyArgs.builder()\n .clusterSecondaryRangeName(subnetwork_1.secondaryIpRanges().applyValue(secondaryIpRanges -\u003e secondaryIpRanges[0].rangeName()))\n .servicesSecondaryRangeName(subnetwork_1.secondaryIpRanges().applyValue(secondaryIpRanges -\u003e secondaryIpRanges[1].rangeName()))\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var example_response_policy = new ResponsePolicy(\"example-response-policy\", ResponsePolicyArgs.builder()\n .responsePolicyName(\"example-response-policy\")\n .networks( \n ResponsePolicyNetworkArgs.builder()\n .networkUrl(network_1.id())\n .build(),\n ResponsePolicyNetworkArgs.builder()\n .networkUrl(network_2.id())\n .build())\n .gkeClusters(ResponsePolicyGkeClusterArgs.builder()\n .gkeClusterName(cluster_1.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network-1:\n type: gcp:compute:Network\n properties:\n name: network-1\n autoCreateSubnetworks: false\n network-2:\n type: gcp:compute:Network\n properties:\n name: network-2\n autoCreateSubnetworks: false\n subnetwork-1:\n type: gcp:compute:Subnetwork\n properties:\n name: ${[\"network-1\"].name}\n network: ${[\"network-1\"].name}\n ipCidrRange: 10.0.36.0/24\n region: us-central1\n privateIpGoogleAccess: true\n secondaryIpRanges:\n - rangeName: pod\n ipCidrRange: 10.0.0.0/19\n - rangeName: svc\n ipCidrRange: 10.0.32.0/22\n cluster-1:\n type: gcp:container:Cluster\n properties:\n name: cluster-1\n location: us-central1-c\n initialNodeCount: 1\n networkingMode: VPC_NATIVE\n defaultSnatStatus:\n disabled: true\n network: ${[\"network-1\"].name}\n subnetwork: ${[\"subnetwork-1\"].name}\n privateClusterConfig:\n enablePrivateEndpoint: true\n enablePrivateNodes: true\n masterIpv4CidrBlock: 10.42.0.0/28\n masterGlobalAccessConfig:\n enabled: true\n masterAuthorizedNetworksConfig: {}\n ipAllocationPolicy:\n clusterSecondaryRangeName: ${[\"subnetwork-1\"].secondaryIpRanges[0].rangeName}\n servicesSecondaryRangeName: ${[\"subnetwork-1\"].secondaryIpRanges[1].rangeName}\n deletionProtection: 'true'\n example-response-policy:\n type: gcp:dns:ResponsePolicy\n properties:\n responsePolicyName: example-response-policy\n networks:\n - networkUrl: ${[\"network-1\"].id}\n - networkUrl: ${[\"network-2\"].id}\n gkeClusters:\n - gkeClusterName: ${[\"cluster-1\"].id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nResponsePolicy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/responsePolicies/{{response_policy_name}}`\n\n* `{{project}}/{{response_policy_name}}`\n\n* `{{response_policy_name}}`\n\nWhen using the `pulumi import` command, ResponsePolicy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dns/responsePolicy:ResponsePolicy default projects/{{project}}/responsePolicies/{{response_policy_name}}\n```\n\n```sh\n$ pulumi import gcp:dns/responsePolicy:ResponsePolicy default {{project}}/{{response_policy_name}}\n```\n\n```sh\n$ pulumi import gcp:dns/responsePolicy:ResponsePolicy default {{response_policy_name}}\n```\n\n", + "description": "A Response Policy is a collection of selectors that apply to queries\nmade against one or more Virtual Private Cloud networks.\n\n\n\n## Example Usage\n\n### Dns Response Policy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network_1 = new gcp.compute.Network(\"network-1\", {\n name: \"network-1\",\n autoCreateSubnetworks: false,\n});\nconst network_2 = new gcp.compute.Network(\"network-2\", {\n name: \"network-2\",\n autoCreateSubnetworks: false,\n});\nconst subnetwork_1 = new gcp.compute.Subnetwork(\"subnetwork-1\", {\n name: network_1.name,\n network: network_1.name,\n ipCidrRange: \"10.0.36.0/24\",\n region: \"us-central1\",\n privateIpGoogleAccess: true,\n secondaryIpRanges: [\n {\n rangeName: \"pod\",\n ipCidrRange: \"10.0.0.0/19\",\n },\n {\n rangeName: \"svc\",\n ipCidrRange: \"10.0.32.0/22\",\n },\n ],\n});\nconst cluster_1 = new gcp.container.Cluster(\"cluster-1\", {\n name: \"cluster-1\",\n location: \"us-central1-c\",\n initialNodeCount: 1,\n networkingMode: \"VPC_NATIVE\",\n defaultSnatStatus: {\n disabled: true,\n },\n network: network_1.name,\n subnetwork: subnetwork_1.name,\n privateClusterConfig: {\n enablePrivateEndpoint: true,\n enablePrivateNodes: true,\n masterIpv4CidrBlock: \"10.42.0.0/28\",\n masterGlobalAccessConfig: {\n enabled: true,\n },\n },\n masterAuthorizedNetworksConfig: {},\n ipAllocationPolicy: {\n clusterSecondaryRangeName: subnetwork_1.secondaryIpRanges.apply(secondaryIpRanges =\u003e secondaryIpRanges[0].rangeName),\n servicesSecondaryRangeName: subnetwork_1.secondaryIpRanges.apply(secondaryIpRanges =\u003e secondaryIpRanges[1].rangeName),\n },\n deletionProtection: true,\n});\nconst example_response_policy = new gcp.dns.ResponsePolicy(\"example-response-policy\", {\n responsePolicyName: \"example-response-policy\",\n networks: [\n {\n networkUrl: network_1.id,\n },\n {\n networkUrl: network_2.id,\n },\n ],\n gkeClusters: [{\n gkeClusterName: cluster_1.id,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork_1 = gcp.compute.Network(\"network-1\",\n name=\"network-1\",\n auto_create_subnetworks=False)\nnetwork_2 = gcp.compute.Network(\"network-2\",\n name=\"network-2\",\n auto_create_subnetworks=False)\nsubnetwork_1 = gcp.compute.Subnetwork(\"subnetwork-1\",\n name=network_1.name,\n network=network_1.name,\n ip_cidr_range=\"10.0.36.0/24\",\n region=\"us-central1\",\n private_ip_google_access=True,\n secondary_ip_ranges=[\n {\n \"range_name\": \"pod\",\n \"ip_cidr_range\": \"10.0.0.0/19\",\n },\n {\n \"range_name\": \"svc\",\n \"ip_cidr_range\": \"10.0.32.0/22\",\n },\n ])\ncluster_1 = gcp.container.Cluster(\"cluster-1\",\n name=\"cluster-1\",\n location=\"us-central1-c\",\n initial_node_count=1,\n networking_mode=\"VPC_NATIVE\",\n default_snat_status={\n \"disabled\": True,\n },\n network=network_1.name,\n subnetwork=subnetwork_1.name,\n private_cluster_config={\n \"enable_private_endpoint\": True,\n \"enable_private_nodes\": True,\n \"master_ipv4_cidr_block\": \"10.42.0.0/28\",\n \"master_global_access_config\": {\n \"enabled\": True,\n },\n },\n master_authorized_networks_config={},\n ip_allocation_policy={\n \"cluster_secondary_range_name\": subnetwork_1.secondary_ip_ranges[0].range_name,\n \"services_secondary_range_name\": subnetwork_1.secondary_ip_ranges[1].range_name,\n },\n deletion_protection=True)\nexample_response_policy = gcp.dns.ResponsePolicy(\"example-response-policy\",\n response_policy_name=\"example-response-policy\",\n networks=[\n {\n \"network_url\": network_1.id,\n },\n {\n \"network_url\": network_2.id,\n },\n ],\n gke_clusters=[{\n \"gke_cluster_name\": cluster_1.id,\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network_1 = new Gcp.Compute.Network(\"network-1\", new()\n {\n Name = \"network-1\",\n AutoCreateSubnetworks = false,\n });\n\n var network_2 = new Gcp.Compute.Network(\"network-2\", new()\n {\n Name = \"network-2\",\n AutoCreateSubnetworks = false,\n });\n\n var subnetwork_1 = new Gcp.Compute.Subnetwork(\"subnetwork-1\", new()\n {\n Name = network_1.Name,\n Network = network_1.Name,\n IpCidrRange = \"10.0.36.0/24\",\n Region = \"us-central1\",\n PrivateIpGoogleAccess = true,\n SecondaryIpRanges = new[]\n {\n new Gcp.Compute.Inputs.SubnetworkSecondaryIpRangeArgs\n {\n RangeName = \"pod\",\n IpCidrRange = \"10.0.0.0/19\",\n },\n new Gcp.Compute.Inputs.SubnetworkSecondaryIpRangeArgs\n {\n RangeName = \"svc\",\n IpCidrRange = \"10.0.32.0/22\",\n },\n },\n });\n\n var cluster_1 = new Gcp.Container.Cluster(\"cluster-1\", new()\n {\n Name = \"cluster-1\",\n Location = \"us-central1-c\",\n InitialNodeCount = 1,\n NetworkingMode = \"VPC_NATIVE\",\n DefaultSnatStatus = new Gcp.Container.Inputs.ClusterDefaultSnatStatusArgs\n {\n Disabled = true,\n },\n Network = network_1.Name,\n Subnetwork = subnetwork_1.Name,\n PrivateClusterConfig = new Gcp.Container.Inputs.ClusterPrivateClusterConfigArgs\n {\n EnablePrivateEndpoint = true,\n EnablePrivateNodes = true,\n MasterIpv4CidrBlock = \"10.42.0.0/28\",\n MasterGlobalAccessConfig = new Gcp.Container.Inputs.ClusterPrivateClusterConfigMasterGlobalAccessConfigArgs\n {\n Enabled = true,\n },\n },\n MasterAuthorizedNetworksConfig = null,\n IpAllocationPolicy = new Gcp.Container.Inputs.ClusterIpAllocationPolicyArgs\n {\n ClusterSecondaryRangeName = subnetwork_1.SecondaryIpRanges.Apply(secondaryIpRanges =\u003e secondaryIpRanges[0].RangeName),\n ServicesSecondaryRangeName = subnetwork_1.SecondaryIpRanges.Apply(secondaryIpRanges =\u003e secondaryIpRanges[1].RangeName),\n },\n DeletionProtection = true,\n });\n\n var example_response_policy = new Gcp.Dns.ResponsePolicy(\"example-response-policy\", new()\n {\n ResponsePolicyName = \"example-response-policy\",\n Networks = new[]\n {\n new Gcp.Dns.Inputs.ResponsePolicyNetworkArgs\n {\n NetworkUrl = network_1.Id,\n },\n new Gcp.Dns.Inputs.ResponsePolicyNetworkArgs\n {\n NetworkUrl = network_2.Id,\n },\n },\n GkeClusters = new[]\n {\n new Gcp.Dns.Inputs.ResponsePolicyGkeClusterArgs\n {\n GkeClusterName = cluster_1.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\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.NewNetwork(ctx, \"network-1\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network-1\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetwork(ctx, \"network-2\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network-2\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSubnetwork(ctx, \"subnetwork-1\", \u0026compute.SubnetworkArgs{\n\t\t\tName: network_1.Name,\n\t\t\tNetwork: network_1.Name,\n\t\t\tIpCidrRange: pulumi.String(\"10.0.36.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPrivateIpGoogleAccess: pulumi.Bool(true),\n\t\t\tSecondaryIpRanges: compute.SubnetworkSecondaryIpRangeArray{\n\t\t\t\t\u0026compute.SubnetworkSecondaryIpRangeArgs{\n\t\t\t\t\tRangeName: pulumi.String(\"pod\"),\n\t\t\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/19\"),\n\t\t\t\t},\n\t\t\t\t\u0026compute.SubnetworkSecondaryIpRangeArgs{\n\t\t\t\t\tRangeName: pulumi.String(\"svc\"),\n\t\t\t\t\tIpCidrRange: pulumi.String(\"10.0.32.0/22\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewCluster(ctx, \"cluster-1\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"cluster-1\"),\n\t\t\tLocation: pulumi.String(\"us-central1-c\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tNetworkingMode: pulumi.String(\"VPC_NATIVE\"),\n\t\t\tDefaultSnatStatus: \u0026container.ClusterDefaultSnatStatusArgs{\n\t\t\t\tDisabled: pulumi.Bool(true),\n\t\t\t},\n\t\t\tNetwork: network_1.Name,\n\t\t\tSubnetwork: subnetwork_1.Name,\n\t\t\tPrivateClusterConfig: \u0026container.ClusterPrivateClusterConfigArgs{\n\t\t\t\tEnablePrivateEndpoint: pulumi.Bool(true),\n\t\t\t\tEnablePrivateNodes: pulumi.Bool(true),\n\t\t\t\tMasterIpv4CidrBlock: pulumi.String(\"10.42.0.0/28\"),\n\t\t\t\tMasterGlobalAccessConfig: \u0026container.ClusterPrivateClusterConfigMasterGlobalAccessConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMasterAuthorizedNetworksConfig: \u0026container.ClusterMasterAuthorizedNetworksConfigArgs{},\n\t\t\tIpAllocationPolicy: \u0026container.ClusterIpAllocationPolicyArgs{\n\t\t\t\tClusterSecondaryRangeName: subnetwork_1.SecondaryIpRanges.ApplyT(func(secondaryIpRanges []compute.SubnetworkSecondaryIpRange) (*string, error) {\n\t\t\t\t\treturn \u0026secondaryIpRanges[0].RangeName, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\tServicesSecondaryRangeName: subnetwork_1.SecondaryIpRanges.ApplyT(func(secondaryIpRanges []compute.SubnetworkSecondaryIpRange) (*string, error) {\n\t\t\t\t\treturn \u0026secondaryIpRanges[1].RangeName, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewResponsePolicy(ctx, \"example-response-policy\", \u0026dns.ResponsePolicyArgs{\n\t\t\tResponsePolicyName: pulumi.String(\"example-response-policy\"),\n\t\t\tNetworks: dns.ResponsePolicyNetworkArray{\n\t\t\t\t\u0026dns.ResponsePolicyNetworkArgs{\n\t\t\t\t\tNetworkUrl: network_1.ID(),\n\t\t\t\t},\n\t\t\t\t\u0026dns.ResponsePolicyNetworkArgs{\n\t\t\t\t\tNetworkUrl: network_2.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tGkeClusters: dns.ResponsePolicyGkeClusterArray{\n\t\t\t\t\u0026dns.ResponsePolicyGkeClusterArgs{\n\t\t\t\t\tGkeClusterName: cluster_1.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.inputs.SubnetworkSecondaryIpRangeArgs;\nimport com.pulumi.gcp.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterDefaultSnatStatusArgs;\nimport com.pulumi.gcp.container.inputs.ClusterPrivateClusterConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterPrivateClusterConfigMasterGlobalAccessConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterMasterAuthorizedNetworksConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterIpAllocationPolicyArgs;\nimport com.pulumi.gcp.dns.ResponsePolicy;\nimport com.pulumi.gcp.dns.ResponsePolicyArgs;\nimport com.pulumi.gcp.dns.inputs.ResponsePolicyNetworkArgs;\nimport com.pulumi.gcp.dns.inputs.ResponsePolicyGkeClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network_1 = new Network(\"network-1\", NetworkArgs.builder()\n .name(\"network-1\")\n .autoCreateSubnetworks(false)\n .build());\n\n var network_2 = new Network(\"network-2\", NetworkArgs.builder()\n .name(\"network-2\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnetwork_1 = new Subnetwork(\"subnetwork-1\", SubnetworkArgs.builder()\n .name(network_1.name())\n .network(network_1.name())\n .ipCidrRange(\"10.0.36.0/24\")\n .region(\"us-central1\")\n .privateIpGoogleAccess(true)\n .secondaryIpRanges( \n SubnetworkSecondaryIpRangeArgs.builder()\n .rangeName(\"pod\")\n .ipCidrRange(\"10.0.0.0/19\")\n .build(),\n SubnetworkSecondaryIpRangeArgs.builder()\n .rangeName(\"svc\")\n .ipCidrRange(\"10.0.32.0/22\")\n .build())\n .build());\n\n var cluster_1 = new Cluster(\"cluster-1\", ClusterArgs.builder()\n .name(\"cluster-1\")\n .location(\"us-central1-c\")\n .initialNodeCount(1)\n .networkingMode(\"VPC_NATIVE\")\n .defaultSnatStatus(ClusterDefaultSnatStatusArgs.builder()\n .disabled(true)\n .build())\n .network(network_1.name())\n .subnetwork(subnetwork_1.name())\n .privateClusterConfig(ClusterPrivateClusterConfigArgs.builder()\n .enablePrivateEndpoint(true)\n .enablePrivateNodes(true)\n .masterIpv4CidrBlock(\"10.42.0.0/28\")\n .masterGlobalAccessConfig(ClusterPrivateClusterConfigMasterGlobalAccessConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .masterAuthorizedNetworksConfig()\n .ipAllocationPolicy(ClusterIpAllocationPolicyArgs.builder()\n .clusterSecondaryRangeName(subnetwork_1.secondaryIpRanges().applyValue(secondaryIpRanges -\u003e secondaryIpRanges[0].rangeName()))\n .servicesSecondaryRangeName(subnetwork_1.secondaryIpRanges().applyValue(secondaryIpRanges -\u003e secondaryIpRanges[1].rangeName()))\n .build())\n .deletionProtection(\"true\")\n .build());\n\n var example_response_policy = new ResponsePolicy(\"example-response-policy\", ResponsePolicyArgs.builder()\n .responsePolicyName(\"example-response-policy\")\n .networks( \n ResponsePolicyNetworkArgs.builder()\n .networkUrl(network_1.id())\n .build(),\n ResponsePolicyNetworkArgs.builder()\n .networkUrl(network_2.id())\n .build())\n .gkeClusters(ResponsePolicyGkeClusterArgs.builder()\n .gkeClusterName(cluster_1.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network-1:\n type: gcp:compute:Network\n properties:\n name: network-1\n autoCreateSubnetworks: false\n network-2:\n type: gcp:compute:Network\n properties:\n name: network-2\n autoCreateSubnetworks: false\n subnetwork-1:\n type: gcp:compute:Subnetwork\n properties:\n name: ${[\"network-1\"].name}\n network: ${[\"network-1\"].name}\n ipCidrRange: 10.0.36.0/24\n region: us-central1\n privateIpGoogleAccess: true\n secondaryIpRanges:\n - rangeName: pod\n ipCidrRange: 10.0.0.0/19\n - rangeName: svc\n ipCidrRange: 10.0.32.0/22\n cluster-1:\n type: gcp:container:Cluster\n properties:\n name: cluster-1\n location: us-central1-c\n initialNodeCount: 1\n networkingMode: VPC_NATIVE\n defaultSnatStatus:\n disabled: true\n network: ${[\"network-1\"].name}\n subnetwork: ${[\"subnetwork-1\"].name}\n privateClusterConfig:\n enablePrivateEndpoint: true\n enablePrivateNodes: true\n masterIpv4CidrBlock: 10.42.0.0/28\n masterGlobalAccessConfig:\n enabled: true\n masterAuthorizedNetworksConfig: {}\n ipAllocationPolicy:\n clusterSecondaryRangeName: ${[\"subnetwork-1\"].secondaryIpRanges[0].rangeName}\n servicesSecondaryRangeName: ${[\"subnetwork-1\"].secondaryIpRanges[1].rangeName}\n deletionProtection: 'true'\n example-response-policy:\n type: gcp:dns:ResponsePolicy\n properties:\n responsePolicyName: example-response-policy\n networks:\n - networkUrl: ${[\"network-1\"].id}\n - networkUrl: ${[\"network-2\"].id}\n gkeClusters:\n - gkeClusterName: ${[\"cluster-1\"].id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nResponsePolicy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/responsePolicies/{{response_policy_name}}`\n\n* `{{project}}/{{response_policy_name}}`\n\n* `{{response_policy_name}}`\n\nWhen using the `pulumi import` command, ResponsePolicy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dns/responsePolicy:ResponsePolicy default projects/{{project}}/responsePolicies/{{response_policy_name}}\n```\n\n```sh\n$ pulumi import gcp:dns/responsePolicy:ResponsePolicy default {{project}}/{{response_policy_name}}\n```\n\n```sh\n$ pulumi import gcp:dns/responsePolicy:ResponsePolicy default {{response_policy_name}}\n```\n\n", "properties": { "description": { "type": "string", @@ -194200,7 +194200,7 @@ } }, "gcp:edgecontainer/cluster:Cluster": { - "description": "Cluster contains information about a Google Distributed Cloud Edge Kubernetes cluster.\n\n\nTo get more information about Cluster, see:\n\n* [API documentation](https://cloud.google.com/distributed-cloud/edge/latest/docs/reference/container/rest/v1/projects.locations.clusters)\n* How-to Guides\n * [Create and manage clusters](https://cloud.google.com/distributed-cloud/edge/latest/docs/clusters)\n\n\n\n## Example Usage\n\n### Edgecontainer Cluster\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst _default = new gcp.edgecontainer.Cluster(\"default\", {\n name: \"basic-cluster\",\n location: \"us-central1\",\n authorization: {\n adminUsers: {\n username: \"admin@hashicorptest.com\",\n },\n },\n networking: {\n clusterIpv4CidrBlocks: [\"10.0.0.0/16\"],\n servicesIpv4CidrBlocks: [\"10.1.0.0/16\"],\n },\n fleet: {\n project: project.then(project =\u003e `projects/${project.number}`),\n },\n labels: {\n my_key: \"my_val\",\n other_key: \"other_val\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ndefault = gcp.edgecontainer.Cluster(\"default\",\n name=\"basic-cluster\",\n location=\"us-central1\",\n authorization={\n \"admin_users\": {\n \"username\": \"admin@hashicorptest.com\",\n },\n },\n networking={\n \"cluster_ipv4_cidr_blocks\": [\"10.0.0.0/16\"],\n \"services_ipv4_cidr_blocks\": [\"10.1.0.0/16\"],\n },\n fleet={\n \"project\": f\"projects/{project.number}\",\n },\n labels={\n \"my_key\": \"my_val\",\n \"other_key\": \"other_val\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var @default = new Gcp.EdgeContainer.Cluster(\"default\", new()\n {\n Name = \"basic-cluster\",\n Location = \"us-central1\",\n Authorization = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationArgs\n {\n AdminUsers = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationAdminUsersArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n Networking = new Gcp.EdgeContainer.Inputs.ClusterNetworkingArgs\n {\n ClusterIpv4CidrBlocks = new[]\n {\n \"10.0.0.0/16\",\n },\n ServicesIpv4CidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n },\n Fleet = new Gcp.EdgeContainer.Inputs.ClusterFleetArgs\n {\n Project = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n Labels = \n {\n { \"my_key\", \"my_val\" },\n { \"other_key\", \"other_val\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/edgecontainer\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = edgecontainer.NewCluster(ctx, \"default\", \u0026edgecontainer.ClusterArgs{\n\t\t\tName: pulumi.String(\"basic-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tAuthorization: \u0026edgecontainer.ClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: \u0026edgecontainer.ClusterAuthorizationAdminUsersArgs{\n\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworking: \u0026edgecontainer.ClusterNetworkingArgs{\n\t\t\t\tClusterIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.0.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServicesIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFleet: \u0026edgecontainer.ClusterFleetArgs{\n\t\t\t\tProject: pulumi.Sprintf(\"projects/%v\", project.Number),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_key\": pulumi.String(\"my_val\"),\n\t\t\t\t\"other_key\": pulumi.String(\"other_val\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.edgecontainer.Cluster;\nimport com.pulumi.gcp.edgecontainer.ClusterArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationAdminUsersArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterNetworkingArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterFleetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var default_ = new Cluster(\"default\", ClusterArgs.builder()\n .name(\"basic-cluster\")\n .location(\"us-central1\")\n .authorization(ClusterAuthorizationArgs.builder()\n .adminUsers(ClusterAuthorizationAdminUsersArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .networking(ClusterNetworkingArgs.builder()\n .clusterIpv4CidrBlocks(\"10.0.0.0/16\")\n .servicesIpv4CidrBlocks(\"10.1.0.0/16\")\n .build())\n .fleet(ClusterFleetArgs.builder()\n .project(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .labels(Map.ofEntries(\n Map.entry(\"my_key\", \"my_val\"),\n Map.entry(\"other_key\", \"other_val\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:edgecontainer:Cluster\n properties:\n name: basic-cluster\n location: us-central1\n authorization:\n adminUsers:\n username: admin@hashicorptest.com\n networking:\n clusterIpv4CidrBlocks:\n - 10.0.0.0/16\n servicesIpv4CidrBlocks:\n - 10.1.0.0/16\n fleet:\n project: projects/${project.number}\n labels:\n my_key: my_val\n other_key: other_val\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Edgecontainer Cluster With Maintenance Window\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst _default = new gcp.edgecontainer.Cluster(\"default\", {\n name: \"cluster-with-maintenance\",\n location: \"us-central1\",\n authorization: {\n adminUsers: {\n username: \"admin@hashicorptest.com\",\n },\n },\n networking: {\n clusterIpv4CidrBlocks: [\"10.0.0.0/16\"],\n servicesIpv4CidrBlocks: [\"10.1.0.0/16\"],\n },\n fleet: {\n project: project.then(project =\u003e `projects/${project.number}`),\n },\n maintenancePolicy: {\n window: {\n recurringWindow: {\n window: {\n startTime: \"2023-01-01T08:00:00Z\",\n endTime: \"2023-01-01T17:00:00Z\",\n },\n recurrence: \"FREQ=WEEKLY;BYDAY=SA\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ndefault = gcp.edgecontainer.Cluster(\"default\",\n name=\"cluster-with-maintenance\",\n location=\"us-central1\",\n authorization={\n \"admin_users\": {\n \"username\": \"admin@hashicorptest.com\",\n },\n },\n networking={\n \"cluster_ipv4_cidr_blocks\": [\"10.0.0.0/16\"],\n \"services_ipv4_cidr_blocks\": [\"10.1.0.0/16\"],\n },\n fleet={\n \"project\": f\"projects/{project.number}\",\n },\n maintenance_policy={\n \"window\": {\n \"recurring_window\": {\n \"window\": {\n \"start_time\": \"2023-01-01T08:00:00Z\",\n \"end_time\": \"2023-01-01T17:00:00Z\",\n },\n \"recurrence\": \"FREQ=WEEKLY;BYDAY=SA\",\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var @default = new Gcp.EdgeContainer.Cluster(\"default\", new()\n {\n Name = \"cluster-with-maintenance\",\n Location = \"us-central1\",\n Authorization = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationArgs\n {\n AdminUsers = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationAdminUsersArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n Networking = new Gcp.EdgeContainer.Inputs.ClusterNetworkingArgs\n {\n ClusterIpv4CidrBlocks = new[]\n {\n \"10.0.0.0/16\",\n },\n ServicesIpv4CidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n },\n Fleet = new Gcp.EdgeContainer.Inputs.ClusterFleetArgs\n {\n Project = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n MaintenancePolicy = new Gcp.EdgeContainer.Inputs.ClusterMaintenancePolicyArgs\n {\n Window = new Gcp.EdgeContainer.Inputs.ClusterMaintenancePolicyWindowArgs\n {\n RecurringWindow = new Gcp.EdgeContainer.Inputs.ClusterMaintenancePolicyWindowRecurringWindowArgs\n {\n Window = new Gcp.EdgeContainer.Inputs.ClusterMaintenancePolicyWindowRecurringWindowWindowArgs\n {\n StartTime = \"2023-01-01T08:00:00Z\",\n EndTime = \"2023-01-01T17:00:00Z\",\n },\n Recurrence = \"FREQ=WEEKLY;BYDAY=SA\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/edgecontainer\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = edgecontainer.NewCluster(ctx, \"default\", \u0026edgecontainer.ClusterArgs{\n\t\t\tName: pulumi.String(\"cluster-with-maintenance\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tAuthorization: \u0026edgecontainer.ClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: \u0026edgecontainer.ClusterAuthorizationAdminUsersArgs{\n\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworking: \u0026edgecontainer.ClusterNetworkingArgs{\n\t\t\t\tClusterIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.0.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServicesIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFleet: \u0026edgecontainer.ClusterFleetArgs{\n\t\t\t\tProject: pulumi.Sprintf(\"projects/%v\", project.Number),\n\t\t\t},\n\t\t\tMaintenancePolicy: \u0026edgecontainer.ClusterMaintenancePolicyArgs{\n\t\t\t\tWindow: \u0026edgecontainer.ClusterMaintenancePolicyWindowArgs{\n\t\t\t\t\tRecurringWindow: \u0026edgecontainer.ClusterMaintenancePolicyWindowRecurringWindowArgs{\n\t\t\t\t\t\tWindow: \u0026edgecontainer.ClusterMaintenancePolicyWindowRecurringWindowWindowArgs{\n\t\t\t\t\t\t\tStartTime: pulumi.String(\"2023-01-01T08:00:00Z\"),\n\t\t\t\t\t\t\tEndTime: pulumi.String(\"2023-01-01T17:00:00Z\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRecurrence: pulumi.String(\"FREQ=WEEKLY;BYDAY=SA\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.edgecontainer.Cluster;\nimport com.pulumi.gcp.edgecontainer.ClusterArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationAdminUsersArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterNetworkingArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterFleetArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterMaintenancePolicyArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterMaintenancePolicyWindowArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterMaintenancePolicyWindowRecurringWindowArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterMaintenancePolicyWindowRecurringWindowWindowArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var default_ = new Cluster(\"default\", ClusterArgs.builder()\n .name(\"cluster-with-maintenance\")\n .location(\"us-central1\")\n .authorization(ClusterAuthorizationArgs.builder()\n .adminUsers(ClusterAuthorizationAdminUsersArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .networking(ClusterNetworkingArgs.builder()\n .clusterIpv4CidrBlocks(\"10.0.0.0/16\")\n .servicesIpv4CidrBlocks(\"10.1.0.0/16\")\n .build())\n .fleet(ClusterFleetArgs.builder()\n .project(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .maintenancePolicy(ClusterMaintenancePolicyArgs.builder()\n .window(ClusterMaintenancePolicyWindowArgs.builder()\n .recurringWindow(ClusterMaintenancePolicyWindowRecurringWindowArgs.builder()\n .window(ClusterMaintenancePolicyWindowRecurringWindowWindowArgs.builder()\n .startTime(\"2023-01-01T08:00:00Z\")\n .endTime(\"2023-01-01T17:00:00Z\")\n .build())\n .recurrence(\"FREQ=WEEKLY;BYDAY=SA\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:edgecontainer:Cluster\n properties:\n name: cluster-with-maintenance\n location: us-central1\n authorization:\n adminUsers:\n username: admin@hashicorptest.com\n networking:\n clusterIpv4CidrBlocks:\n - 10.0.0.0/16\n servicesIpv4CidrBlocks:\n - 10.1.0.0/16\n fleet:\n project: projects/${project.number}\n maintenancePolicy:\n window:\n recurringWindow:\n window:\n startTime: 2023-01-01T08:00:00Z\n endTime: 2023-01-01T17:00:00Z\n recurrence: FREQ=WEEKLY;BYDAY=SA\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Edgecontainer Local Control Plane Cluster\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst _default = new gcp.edgecontainer.Cluster(\"default\", {\n name: \"local-control-plane-cluster\",\n location: \"us-central1\",\n authorization: {\n adminUsers: {\n username: \"admin@hashicorptest.com\",\n },\n },\n networking: {\n clusterIpv4CidrBlocks: [\"10.0.0.0/16\"],\n servicesIpv4CidrBlocks: [\"10.1.0.0/16\"],\n },\n fleet: {\n project: project.then(project =\u003e `projects/${project.number}`),\n },\n externalLoadBalancerIpv4AddressPools: [\"10.100.0.0-10.100.0.10\"],\n controlPlane: {\n local: {\n nodeLocation: \"us-central1-edge-example-edgesite\",\n nodeCount: 1,\n machineFilter: \"machine-name\",\n sharedDeploymentPolicy: \"ALLOWED\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ndefault = gcp.edgecontainer.Cluster(\"default\",\n name=\"local-control-plane-cluster\",\n location=\"us-central1\",\n authorization={\n \"admin_users\": {\n \"username\": \"admin@hashicorptest.com\",\n },\n },\n networking={\n \"cluster_ipv4_cidr_blocks\": [\"10.0.0.0/16\"],\n \"services_ipv4_cidr_blocks\": [\"10.1.0.0/16\"],\n },\n fleet={\n \"project\": f\"projects/{project.number}\",\n },\n external_load_balancer_ipv4_address_pools=[\"10.100.0.0-10.100.0.10\"],\n control_plane={\n \"local\": {\n \"node_location\": \"us-central1-edge-example-edgesite\",\n \"node_count\": 1,\n \"machine_filter\": \"machine-name\",\n \"shared_deployment_policy\": \"ALLOWED\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var @default = new Gcp.EdgeContainer.Cluster(\"default\", new()\n {\n Name = \"local-control-plane-cluster\",\n Location = \"us-central1\",\n Authorization = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationArgs\n {\n AdminUsers = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationAdminUsersArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n Networking = new Gcp.EdgeContainer.Inputs.ClusterNetworkingArgs\n {\n ClusterIpv4CidrBlocks = new[]\n {\n \"10.0.0.0/16\",\n },\n ServicesIpv4CidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n },\n Fleet = new Gcp.EdgeContainer.Inputs.ClusterFleetArgs\n {\n Project = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n ExternalLoadBalancerIpv4AddressPools = new[]\n {\n \"10.100.0.0-10.100.0.10\",\n },\n ControlPlane = new Gcp.EdgeContainer.Inputs.ClusterControlPlaneArgs\n {\n Local = new Gcp.EdgeContainer.Inputs.ClusterControlPlaneLocalArgs\n {\n NodeLocation = \"us-central1-edge-example-edgesite\",\n NodeCount = 1,\n MachineFilter = \"machine-name\",\n SharedDeploymentPolicy = \"ALLOWED\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/edgecontainer\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = edgecontainer.NewCluster(ctx, \"default\", \u0026edgecontainer.ClusterArgs{\n\t\t\tName: pulumi.String(\"local-control-plane-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tAuthorization: \u0026edgecontainer.ClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: \u0026edgecontainer.ClusterAuthorizationAdminUsersArgs{\n\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworking: \u0026edgecontainer.ClusterNetworkingArgs{\n\t\t\t\tClusterIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.0.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServicesIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFleet: \u0026edgecontainer.ClusterFleetArgs{\n\t\t\t\tProject: pulumi.Sprintf(\"projects/%v\", project.Number),\n\t\t\t},\n\t\t\tExternalLoadBalancerIpv4AddressPools: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.100.0.0-10.100.0.10\"),\n\t\t\t},\n\t\t\tControlPlane: \u0026edgecontainer.ClusterControlPlaneArgs{\n\t\t\t\tLocal: \u0026edgecontainer.ClusterControlPlaneLocalArgs{\n\t\t\t\t\tNodeLocation: pulumi.String(\"us-central1-edge-example-edgesite\"),\n\t\t\t\t\tNodeCount: pulumi.Int(1),\n\t\t\t\t\tMachineFilter: pulumi.String(\"machine-name\"),\n\t\t\t\t\tSharedDeploymentPolicy: pulumi.String(\"ALLOWED\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.edgecontainer.Cluster;\nimport com.pulumi.gcp.edgecontainer.ClusterArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationAdminUsersArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterNetworkingArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterFleetArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterControlPlaneArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterControlPlaneLocalArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var default_ = new Cluster(\"default\", ClusterArgs.builder()\n .name(\"local-control-plane-cluster\")\n .location(\"us-central1\")\n .authorization(ClusterAuthorizationArgs.builder()\n .adminUsers(ClusterAuthorizationAdminUsersArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .networking(ClusterNetworkingArgs.builder()\n .clusterIpv4CidrBlocks(\"10.0.0.0/16\")\n .servicesIpv4CidrBlocks(\"10.1.0.0/16\")\n .build())\n .fleet(ClusterFleetArgs.builder()\n .project(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .externalLoadBalancerIpv4AddressPools(\"10.100.0.0-10.100.0.10\")\n .controlPlane(ClusterControlPlaneArgs.builder()\n .local(ClusterControlPlaneLocalArgs.builder()\n .nodeLocation(\"us-central1-edge-example-edgesite\")\n .nodeCount(1)\n .machineFilter(\"machine-name\")\n .sharedDeploymentPolicy(\"ALLOWED\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:edgecontainer:Cluster\n properties:\n name: local-control-plane-cluster\n location: us-central1\n authorization:\n adminUsers:\n username: admin@hashicorptest.com\n networking:\n clusterIpv4CidrBlocks:\n - 10.0.0.0/16\n servicesIpv4CidrBlocks:\n - 10.1.0.0/16\n fleet:\n project: projects/${project.number}\n externalLoadBalancerIpv4AddressPools:\n - 10.100.0.0-10.100.0.10\n controlPlane:\n local:\n nodeLocation: us-central1-edge-example-edgesite\n nodeCount: 1\n machineFilter: machine-name\n sharedDeploymentPolicy: ALLOWED\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCluster can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/clusters/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Cluster can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:edgecontainer/cluster:Cluster default projects/{{project}}/locations/{{location}}/clusters/{{name}}\n```\n\n```sh\n$ pulumi import gcp:edgecontainer/cluster:Cluster default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:edgecontainer/cluster:Cluster default {{location}}/{{name}}\n```\n\n", + "description": "Cluster contains information about a Google Distributed Cloud Edge Kubernetes cluster.\n\n\nTo get more information about Cluster, see:\n\n* [API documentation](https://cloud.google.com/distributed-cloud/edge/latest/docs/reference/container/rest/v1/projects.locations.clusters)\n* How-to Guides\n * [Create and manage clusters](https://cloud.google.com/distributed-cloud/edge/latest/docs/clusters)\n\n\n\n## Example Usage\n\n### Edgecontainer Cluster\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst _default = new gcp.edgecontainer.Cluster(\"default\", {\n name: \"basic-cluster\",\n location: \"us-central1\",\n authorization: {\n adminUsers: {\n username: \"admin@hashicorptest.com\",\n },\n },\n networking: {\n clusterIpv4CidrBlocks: [\"10.0.0.0/16\"],\n servicesIpv4CidrBlocks: [\"10.1.0.0/16\"],\n },\n fleet: {\n project: project.then(project =\u003e `projects/${project.number}`),\n },\n labels: {\n my_key: \"my_val\",\n other_key: \"other_val\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ndefault = gcp.edgecontainer.Cluster(\"default\",\n name=\"basic-cluster\",\n location=\"us-central1\",\n authorization={\n \"admin_users\": {\n \"username\": \"admin@hashicorptest.com\",\n },\n },\n networking={\n \"cluster_ipv4_cidr_blocks\": [\"10.0.0.0/16\"],\n \"services_ipv4_cidr_blocks\": [\"10.1.0.0/16\"],\n },\n fleet={\n \"project\": f\"projects/{project.number}\",\n },\n labels={\n \"my_key\": \"my_val\",\n \"other_key\": \"other_val\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var @default = new Gcp.EdgeContainer.Cluster(\"default\", new()\n {\n Name = \"basic-cluster\",\n Location = \"us-central1\",\n Authorization = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationArgs\n {\n AdminUsers = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationAdminUsersArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n Networking = new Gcp.EdgeContainer.Inputs.ClusterNetworkingArgs\n {\n ClusterIpv4CidrBlocks = new[]\n {\n \"10.0.0.0/16\",\n },\n ServicesIpv4CidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n },\n Fleet = new Gcp.EdgeContainer.Inputs.ClusterFleetArgs\n {\n Project = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n Labels = \n {\n { \"my_key\", \"my_val\" },\n { \"other_key\", \"other_val\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/edgecontainer\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = edgecontainer.NewCluster(ctx, \"default\", \u0026edgecontainer.ClusterArgs{\n\t\t\tName: pulumi.String(\"basic-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tAuthorization: \u0026edgecontainer.ClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: \u0026edgecontainer.ClusterAuthorizationAdminUsersArgs{\n\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworking: \u0026edgecontainer.ClusterNetworkingArgs{\n\t\t\t\tClusterIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.0.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServicesIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFleet: \u0026edgecontainer.ClusterFleetArgs{\n\t\t\t\tProject: pulumi.Sprintf(\"projects/%v\", project.Number),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_key\": pulumi.String(\"my_val\"),\n\t\t\t\t\"other_key\": pulumi.String(\"other_val\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.edgecontainer.Cluster;\nimport com.pulumi.gcp.edgecontainer.ClusterArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationAdminUsersArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterNetworkingArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterFleetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var default_ = new Cluster(\"default\", ClusterArgs.builder()\n .name(\"basic-cluster\")\n .location(\"us-central1\")\n .authorization(ClusterAuthorizationArgs.builder()\n .adminUsers(ClusterAuthorizationAdminUsersArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .networking(ClusterNetworkingArgs.builder()\n .clusterIpv4CidrBlocks(\"10.0.0.0/16\")\n .servicesIpv4CidrBlocks(\"10.1.0.0/16\")\n .build())\n .fleet(ClusterFleetArgs.builder()\n .project(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .labels(Map.ofEntries(\n Map.entry(\"my_key\", \"my_val\"),\n Map.entry(\"other_key\", \"other_val\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:edgecontainer:Cluster\n properties:\n name: basic-cluster\n location: us-central1\n authorization:\n adminUsers:\n username: admin@hashicorptest.com\n networking:\n clusterIpv4CidrBlocks:\n - 10.0.0.0/16\n servicesIpv4CidrBlocks:\n - 10.1.0.0/16\n fleet:\n project: projects/${project.number}\n labels:\n my_key: my_val\n other_key: other_val\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Edgecontainer Cluster With Maintenance Window\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst _default = new gcp.edgecontainer.Cluster(\"default\", {\n name: \"cluster-with-maintenance\",\n location: \"us-central1\",\n authorization: {\n adminUsers: {\n username: \"admin@hashicorptest.com\",\n },\n },\n networking: {\n clusterIpv4CidrBlocks: [\"10.0.0.0/16\"],\n servicesIpv4CidrBlocks: [\"10.1.0.0/16\"],\n },\n fleet: {\n project: project.then(project =\u003e `projects/${project.number}`),\n },\n maintenancePolicy: {\n window: {\n recurringWindow: {\n window: {\n startTime: \"2023-01-01T08:00:00Z\",\n endTime: \"2023-01-01T17:00:00Z\",\n },\n recurrence: \"FREQ=WEEKLY;BYDAY=SA\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ndefault = gcp.edgecontainer.Cluster(\"default\",\n name=\"cluster-with-maintenance\",\n location=\"us-central1\",\n authorization={\n \"admin_users\": {\n \"username\": \"admin@hashicorptest.com\",\n },\n },\n networking={\n \"cluster_ipv4_cidr_blocks\": [\"10.0.0.0/16\"],\n \"services_ipv4_cidr_blocks\": [\"10.1.0.0/16\"],\n },\n fleet={\n \"project\": f\"projects/{project.number}\",\n },\n maintenance_policy={\n \"window\": {\n \"recurring_window\": {\n \"window\": {\n \"start_time\": \"2023-01-01T08:00:00Z\",\n \"end_time\": \"2023-01-01T17:00:00Z\",\n },\n \"recurrence\": \"FREQ=WEEKLY;BYDAY=SA\",\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var @default = new Gcp.EdgeContainer.Cluster(\"default\", new()\n {\n Name = \"cluster-with-maintenance\",\n Location = \"us-central1\",\n Authorization = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationArgs\n {\n AdminUsers = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationAdminUsersArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n Networking = new Gcp.EdgeContainer.Inputs.ClusterNetworkingArgs\n {\n ClusterIpv4CidrBlocks = new[]\n {\n \"10.0.0.0/16\",\n },\n ServicesIpv4CidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n },\n Fleet = new Gcp.EdgeContainer.Inputs.ClusterFleetArgs\n {\n Project = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n MaintenancePolicy = new Gcp.EdgeContainer.Inputs.ClusterMaintenancePolicyArgs\n {\n Window = new Gcp.EdgeContainer.Inputs.ClusterMaintenancePolicyWindowArgs\n {\n RecurringWindow = new Gcp.EdgeContainer.Inputs.ClusterMaintenancePolicyWindowRecurringWindowArgs\n {\n Window = new Gcp.EdgeContainer.Inputs.ClusterMaintenancePolicyWindowRecurringWindowWindowArgs\n {\n StartTime = \"2023-01-01T08:00:00Z\",\n EndTime = \"2023-01-01T17:00:00Z\",\n },\n Recurrence = \"FREQ=WEEKLY;BYDAY=SA\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/edgecontainer\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = edgecontainer.NewCluster(ctx, \"default\", \u0026edgecontainer.ClusterArgs{\n\t\t\tName: pulumi.String(\"cluster-with-maintenance\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tAuthorization: \u0026edgecontainer.ClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: \u0026edgecontainer.ClusterAuthorizationAdminUsersArgs{\n\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworking: \u0026edgecontainer.ClusterNetworkingArgs{\n\t\t\t\tClusterIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.0.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServicesIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFleet: \u0026edgecontainer.ClusterFleetArgs{\n\t\t\t\tProject: pulumi.Sprintf(\"projects/%v\", project.Number),\n\t\t\t},\n\t\t\tMaintenancePolicy: \u0026edgecontainer.ClusterMaintenancePolicyArgs{\n\t\t\t\tWindow: \u0026edgecontainer.ClusterMaintenancePolicyWindowArgs{\n\t\t\t\t\tRecurringWindow: \u0026edgecontainer.ClusterMaintenancePolicyWindowRecurringWindowArgs{\n\t\t\t\t\t\tWindow: \u0026edgecontainer.ClusterMaintenancePolicyWindowRecurringWindowWindowArgs{\n\t\t\t\t\t\t\tStartTime: pulumi.String(\"2023-01-01T08:00:00Z\"),\n\t\t\t\t\t\t\tEndTime: pulumi.String(\"2023-01-01T17:00:00Z\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRecurrence: pulumi.String(\"FREQ=WEEKLY;BYDAY=SA\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.edgecontainer.Cluster;\nimport com.pulumi.gcp.edgecontainer.ClusterArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationAdminUsersArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterNetworkingArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterFleetArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterMaintenancePolicyArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterMaintenancePolicyWindowArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterMaintenancePolicyWindowRecurringWindowArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterMaintenancePolicyWindowRecurringWindowWindowArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var default_ = new Cluster(\"default\", ClusterArgs.builder()\n .name(\"cluster-with-maintenance\")\n .location(\"us-central1\")\n .authorization(ClusterAuthorizationArgs.builder()\n .adminUsers(ClusterAuthorizationAdminUsersArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .networking(ClusterNetworkingArgs.builder()\n .clusterIpv4CidrBlocks(\"10.0.0.0/16\")\n .servicesIpv4CidrBlocks(\"10.1.0.0/16\")\n .build())\n .fleet(ClusterFleetArgs.builder()\n .project(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .maintenancePolicy(ClusterMaintenancePolicyArgs.builder()\n .window(ClusterMaintenancePolicyWindowArgs.builder()\n .recurringWindow(ClusterMaintenancePolicyWindowRecurringWindowArgs.builder()\n .window(ClusterMaintenancePolicyWindowRecurringWindowWindowArgs.builder()\n .startTime(\"2023-01-01T08:00:00Z\")\n .endTime(\"2023-01-01T17:00:00Z\")\n .build())\n .recurrence(\"FREQ=WEEKLY;BYDAY=SA\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:edgecontainer:Cluster\n properties:\n name: cluster-with-maintenance\n location: us-central1\n authorization:\n adminUsers:\n username: admin@hashicorptest.com\n networking:\n clusterIpv4CidrBlocks:\n - 10.0.0.0/16\n servicesIpv4CidrBlocks:\n - 10.1.0.0/16\n fleet:\n project: projects/${project.number}\n maintenancePolicy:\n window:\n recurringWindow:\n window:\n startTime: 2023-01-01T08:00:00Z\n endTime: 2023-01-01T17:00:00Z\n recurrence: FREQ=WEEKLY;BYDAY=SA\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Edgecontainer Local Control Plane Cluster\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst _default = new gcp.edgecontainer.Cluster(\"default\", {\n name: \"local-control-plane-cluster\",\n location: \"us-central1\",\n authorization: {\n adminUsers: {\n username: \"admin@hashicorptest.com\",\n },\n },\n networking: {\n clusterIpv4CidrBlocks: [\"10.0.0.0/16\"],\n servicesIpv4CidrBlocks: [\"10.1.0.0/16\"],\n },\n fleet: {\n project: project.then(project =\u003e `projects/${project.number}`),\n },\n externalLoadBalancerIpv4AddressPools: [\"10.100.0.0-10.100.0.10\"],\n controlPlane: {\n local: {\n nodeLocation: \"us-central1-edge-example-edgesite\",\n nodeCount: 1,\n machineFilter: \"machine-name\",\n sharedDeploymentPolicy: \"ALLOWED\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ndefault = gcp.edgecontainer.Cluster(\"default\",\n name=\"local-control-plane-cluster\",\n location=\"us-central1\",\n authorization={\n \"admin_users\": {\n \"username\": \"admin@hashicorptest.com\",\n },\n },\n networking={\n \"cluster_ipv4_cidr_blocks\": [\"10.0.0.0/16\"],\n \"services_ipv4_cidr_blocks\": [\"10.1.0.0/16\"],\n },\n fleet={\n \"project\": f\"projects/{project.number}\",\n },\n external_load_balancer_ipv4_address_pools=[\"10.100.0.0-10.100.0.10\"],\n control_plane={\n \"local\": {\n \"node_location\": \"us-central1-edge-example-edgesite\",\n \"node_count\": 1,\n \"machine_filter\": \"machine-name\",\n \"shared_deployment_policy\": \"ALLOWED\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var @default = new Gcp.EdgeContainer.Cluster(\"default\", new()\n {\n Name = \"local-control-plane-cluster\",\n Location = \"us-central1\",\n Authorization = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationArgs\n {\n AdminUsers = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationAdminUsersArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n Networking = new Gcp.EdgeContainer.Inputs.ClusterNetworkingArgs\n {\n ClusterIpv4CidrBlocks = new[]\n {\n \"10.0.0.0/16\",\n },\n ServicesIpv4CidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n },\n Fleet = new Gcp.EdgeContainer.Inputs.ClusterFleetArgs\n {\n Project = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n ExternalLoadBalancerIpv4AddressPools = new[]\n {\n \"10.100.0.0-10.100.0.10\",\n },\n ControlPlane = new Gcp.EdgeContainer.Inputs.ClusterControlPlaneArgs\n {\n Local = new Gcp.EdgeContainer.Inputs.ClusterControlPlaneLocalArgs\n {\n NodeLocation = \"us-central1-edge-example-edgesite\",\n NodeCount = 1,\n MachineFilter = \"machine-name\",\n SharedDeploymentPolicy = \"ALLOWED\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/edgecontainer\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = edgecontainer.NewCluster(ctx, \"default\", \u0026edgecontainer.ClusterArgs{\n\t\t\tName: pulumi.String(\"local-control-plane-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tAuthorization: \u0026edgecontainer.ClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: \u0026edgecontainer.ClusterAuthorizationAdminUsersArgs{\n\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworking: \u0026edgecontainer.ClusterNetworkingArgs{\n\t\t\t\tClusterIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.0.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServicesIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFleet: \u0026edgecontainer.ClusterFleetArgs{\n\t\t\t\tProject: pulumi.Sprintf(\"projects/%v\", project.Number),\n\t\t\t},\n\t\t\tExternalLoadBalancerIpv4AddressPools: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.100.0.0-10.100.0.10\"),\n\t\t\t},\n\t\t\tControlPlane: \u0026edgecontainer.ClusterControlPlaneArgs{\n\t\t\t\tLocal: \u0026edgecontainer.ClusterControlPlaneLocalArgs{\n\t\t\t\t\tNodeLocation: pulumi.String(\"us-central1-edge-example-edgesite\"),\n\t\t\t\t\tNodeCount: pulumi.Int(1),\n\t\t\t\t\tMachineFilter: pulumi.String(\"machine-name\"),\n\t\t\t\t\tSharedDeploymentPolicy: pulumi.String(\"ALLOWED\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.edgecontainer.Cluster;\nimport com.pulumi.gcp.edgecontainer.ClusterArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationAdminUsersArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterNetworkingArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterFleetArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterControlPlaneArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterControlPlaneLocalArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var default_ = new Cluster(\"default\", ClusterArgs.builder()\n .name(\"local-control-plane-cluster\")\n .location(\"us-central1\")\n .authorization(ClusterAuthorizationArgs.builder()\n .adminUsers(ClusterAuthorizationAdminUsersArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .networking(ClusterNetworkingArgs.builder()\n .clusterIpv4CidrBlocks(\"10.0.0.0/16\")\n .servicesIpv4CidrBlocks(\"10.1.0.0/16\")\n .build())\n .fleet(ClusterFleetArgs.builder()\n .project(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .externalLoadBalancerIpv4AddressPools(\"10.100.0.0-10.100.0.10\")\n .controlPlane(ClusterControlPlaneArgs.builder()\n .local(ClusterControlPlaneLocalArgs.builder()\n .nodeLocation(\"us-central1-edge-example-edgesite\")\n .nodeCount(1)\n .machineFilter(\"machine-name\")\n .sharedDeploymentPolicy(\"ALLOWED\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:edgecontainer:Cluster\n properties:\n name: local-control-plane-cluster\n location: us-central1\n authorization:\n adminUsers:\n username: admin@hashicorptest.com\n networking:\n clusterIpv4CidrBlocks:\n - 10.0.0.0/16\n servicesIpv4CidrBlocks:\n - 10.1.0.0/16\n fleet:\n project: projects/${project.number}\n externalLoadBalancerIpv4AddressPools:\n - 10.100.0.0-10.100.0.10\n controlPlane:\n local:\n nodeLocation: us-central1-edge-example-edgesite\n nodeCount: 1\n machineFilter: machine-name\n sharedDeploymentPolicy: ALLOWED\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCluster can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/clusters/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Cluster can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:edgecontainer/cluster:Cluster default projects/{{project}}/locations/{{location}}/clusters/{{name}}\n```\n\n```sh\n$ pulumi import gcp:edgecontainer/cluster:Cluster default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:edgecontainer/cluster:Cluster default {{location}}/{{name}}\n```\n\n", "properties": { "authorization": { "$ref": "#/types/gcp:edgecontainer/ClusterAuthorization:ClusterAuthorization", @@ -194562,7 +194562,7 @@ } }, "gcp:edgecontainer/nodePool:NodePool": { - "description": "\"A set of Kubernetes nodes in a cluster with common configuration and specification.\"\n\n\nTo get more information about NodePool, see:\n\n* [API documentation](https://cloud.google.com/distributed-cloud/edge/latest/docs/reference/container/rest/v1/projects.locations.clusters.nodePools)\n* How-to Guides\n * [Google Distributed Cloud Edge](https://cloud.google.com/distributed-cloud/edge/latest/docs)\n\n## Example Usage\n\n### Edgecontainer Node Pool\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst cluster = new gcp.edgecontainer.Cluster(\"cluster\", {\n name: \"default\",\n location: \"us-central1\",\n authorization: {\n adminUsers: {\n username: \"admin@hashicorptest.com\",\n },\n },\n networking: {\n clusterIpv4CidrBlocks: [\"10.0.0.0/16\"],\n servicesIpv4CidrBlocks: [\"10.1.0.0/16\"],\n },\n fleet: {\n project: project.then(project =\u003e `projects/${project.number}`),\n },\n});\nconst _default = new gcp.edgecontainer.NodePool(\"default\", {\n name: \"nodepool-1\",\n cluster: cluster.name,\n location: \"us-central1\",\n nodeLocation: \"us-central1-edge-example-edgesite\",\n nodeCount: 3,\n labels: {\n my_key: \"my_val\",\n other_key: \"other_val\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ncluster = gcp.edgecontainer.Cluster(\"cluster\",\n name=\"default\",\n location=\"us-central1\",\n authorization={\n \"admin_users\": {\n \"username\": \"admin@hashicorptest.com\",\n },\n },\n networking={\n \"cluster_ipv4_cidr_blocks\": [\"10.0.0.0/16\"],\n \"services_ipv4_cidr_blocks\": [\"10.1.0.0/16\"],\n },\n fleet={\n \"project\": f\"projects/{project.number}\",\n })\ndefault = gcp.edgecontainer.NodePool(\"default\",\n name=\"nodepool-1\",\n cluster=cluster.name,\n location=\"us-central1\",\n node_location=\"us-central1-edge-example-edgesite\",\n node_count=3,\n labels={\n \"my_key\": \"my_val\",\n \"other_key\": \"other_val\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cluster = new Gcp.EdgeContainer.Cluster(\"cluster\", new()\n {\n Name = \"default\",\n Location = \"us-central1\",\n Authorization = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationArgs\n {\n AdminUsers = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationAdminUsersArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n Networking = new Gcp.EdgeContainer.Inputs.ClusterNetworkingArgs\n {\n ClusterIpv4CidrBlocks = new[]\n {\n \"10.0.0.0/16\",\n },\n ServicesIpv4CidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n },\n Fleet = new Gcp.EdgeContainer.Inputs.ClusterFleetArgs\n {\n Project = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n });\n\n var @default = new Gcp.EdgeContainer.NodePool(\"default\", new()\n {\n Name = \"nodepool-1\",\n Cluster = cluster.Name,\n Location = \"us-central1\",\n NodeLocation = \"us-central1-edge-example-edgesite\",\n NodeCount = 3,\n Labels = \n {\n { \"my_key\", \"my_val\" },\n { \"other_key\", \"other_val\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/edgecontainer\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcluster, err := edgecontainer.NewCluster(ctx, \"cluster\", \u0026edgecontainer.ClusterArgs{\n\t\t\tName: pulumi.String(\"default\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tAuthorization: \u0026edgecontainer.ClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: \u0026edgecontainer.ClusterAuthorizationAdminUsersArgs{\n\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworking: \u0026edgecontainer.ClusterNetworkingArgs{\n\t\t\t\tClusterIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.0.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServicesIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFleet: \u0026edgecontainer.ClusterFleetArgs{\n\t\t\t\tProject: pulumi.Sprintf(\"projects/%v\", project.Number),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = edgecontainer.NewNodePool(ctx, \"default\", \u0026edgecontainer.NodePoolArgs{\n\t\t\tName: pulumi.String(\"nodepool-1\"),\n\t\t\tCluster: cluster.Name,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNodeLocation: pulumi.String(\"us-central1-edge-example-edgesite\"),\n\t\t\tNodeCount: pulumi.Int(3),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_key\": pulumi.String(\"my_val\"),\n\t\t\t\t\"other_key\": pulumi.String(\"other_val\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.edgecontainer.Cluster;\nimport com.pulumi.gcp.edgecontainer.ClusterArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationAdminUsersArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterNetworkingArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterFleetArgs;\nimport com.pulumi.gcp.edgecontainer.NodePool;\nimport com.pulumi.gcp.edgecontainer.NodePoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n .name(\"default\")\n .location(\"us-central1\")\n .authorization(ClusterAuthorizationArgs.builder()\n .adminUsers(ClusterAuthorizationAdminUsersArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .networking(ClusterNetworkingArgs.builder()\n .clusterIpv4CidrBlocks(\"10.0.0.0/16\")\n .servicesIpv4CidrBlocks(\"10.1.0.0/16\")\n .build())\n .fleet(ClusterFleetArgs.builder()\n .project(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .build());\n\n var default_ = new NodePool(\"default\", NodePoolArgs.builder()\n .name(\"nodepool-1\")\n .cluster(cluster.name())\n .location(\"us-central1\")\n .nodeLocation(\"us-central1-edge-example-edgesite\")\n .nodeCount(3)\n .labels(Map.ofEntries(\n Map.entry(\"my_key\", \"my_val\"),\n Map.entry(\"other_key\", \"other_val\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster:\n type: gcp:edgecontainer:Cluster\n properties:\n name: default\n location: us-central1\n authorization:\n adminUsers:\n username: admin@hashicorptest.com\n networking:\n clusterIpv4CidrBlocks:\n - 10.0.0.0/16\n servicesIpv4CidrBlocks:\n - 10.1.0.0/16\n fleet:\n project: projects/${project.number}\n default:\n type: gcp:edgecontainer:NodePool\n properties:\n name: nodepool-1\n cluster: ${cluster.name}\n location: us-central1\n nodeLocation: us-central1-edge-example-edgesite\n nodeCount: 3\n labels:\n my_key: my_val\n other_key: other_val\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Edgecontainer Node Pool With Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst cluster = new gcp.edgecontainer.Cluster(\"cluster\", {\n name: \"default\",\n location: \"us-central1\",\n authorization: {\n adminUsers: {\n username: \"admin@hashicorptest.com\",\n },\n },\n networking: {\n clusterIpv4CidrBlocks: [\"10.0.0.0/16\"],\n servicesIpv4CidrBlocks: [\"10.1.0.0/16\"],\n },\n fleet: {\n project: project.then(project =\u003e `projects/${project.number}`),\n },\n});\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"keyring\",\n location: \"us-central1\",\n});\nconst cryptoKeyCryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"key\",\n keyRing: keyRing.id,\n});\nconst cryptoKey = new gcp.kms.CryptoKeyIAMMember(\"crypto_key\", {\n cryptoKeyId: cryptoKeyCryptoKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-edgecontainer.iam.gserviceaccount.com`),\n});\nconst _default = new gcp.edgecontainer.NodePool(\"default\", {\n name: \"nodepool-1\",\n cluster: cluster.name,\n location: \"us-central1\",\n nodeLocation: \"us-central1-edge-example-edgesite\",\n nodeCount: 3,\n localDiskEncryption: {\n kmsKey: cryptoKeyCryptoKey.id,\n },\n}, {\n dependsOn: [cryptoKey],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ncluster = gcp.edgecontainer.Cluster(\"cluster\",\n name=\"default\",\n location=\"us-central1\",\n authorization={\n \"admin_users\": {\n \"username\": \"admin@hashicorptest.com\",\n },\n },\n networking={\n \"cluster_ipv4_cidr_blocks\": [\"10.0.0.0/16\"],\n \"services_ipv4_cidr_blocks\": [\"10.1.0.0/16\"],\n },\n fleet={\n \"project\": f\"projects/{project.number}\",\n })\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"keyring\",\n location=\"us-central1\")\ncrypto_key_crypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"key\",\n key_ring=key_ring.id)\ncrypto_key = gcp.kms.CryptoKeyIAMMember(\"crypto_key\",\n crypto_key_id=crypto_key_crypto_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-edgecontainer.iam.gserviceaccount.com\")\ndefault = gcp.edgecontainer.NodePool(\"default\",\n name=\"nodepool-1\",\n cluster=cluster.name,\n location=\"us-central1\",\n node_location=\"us-central1-edge-example-edgesite\",\n node_count=3,\n local_disk_encryption={\n \"kms_key\": crypto_key_crypto_key.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[crypto_key]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cluster = new Gcp.EdgeContainer.Cluster(\"cluster\", new()\n {\n Name = \"default\",\n Location = \"us-central1\",\n Authorization = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationArgs\n {\n AdminUsers = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationAdminUsersArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n Networking = new Gcp.EdgeContainer.Inputs.ClusterNetworkingArgs\n {\n ClusterIpv4CidrBlocks = new[]\n {\n \"10.0.0.0/16\",\n },\n ServicesIpv4CidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n },\n Fleet = new Gcp.EdgeContainer.Inputs.ClusterFleetArgs\n {\n Project = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n });\n\n var keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"keyring\",\n Location = \"us-central1\",\n });\n\n var cryptoKeyCryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"key\",\n KeyRing = keyRing.Id,\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key\", new()\n {\n CryptoKeyId = cryptoKeyCryptoKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-edgecontainer.iam.gserviceaccount.com\",\n });\n\n var @default = new Gcp.EdgeContainer.NodePool(\"default\", new()\n {\n Name = \"nodepool-1\",\n Cluster = cluster.Name,\n Location = \"us-central1\",\n NodeLocation = \"us-central1-edge-example-edgesite\",\n NodeCount = 3,\n LocalDiskEncryption = new Gcp.EdgeContainer.Inputs.NodePoolLocalDiskEncryptionArgs\n {\n KmsKey = cryptoKeyCryptoKey.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cryptoKey,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/edgecontainer\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcluster, err := edgecontainer.NewCluster(ctx, \"cluster\", \u0026edgecontainer.ClusterArgs{\n\t\t\tName: pulumi.String(\"default\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tAuthorization: \u0026edgecontainer.ClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: \u0026edgecontainer.ClusterAuthorizationAdminUsersArgs{\n\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworking: \u0026edgecontainer.ClusterNetworkingArgs{\n\t\t\t\tClusterIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.0.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServicesIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFleet: \u0026edgecontainer.ClusterFleetArgs{\n\t\t\t\tProject: pulumi.Sprintf(\"projects/%v\", project.Number),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"keyring\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKeyCryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKey, err := kms.NewCryptoKeyIAMMember(ctx, \"crypto_key\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: cryptoKeyCryptoKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-edgecontainer.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = edgecontainer.NewNodePool(ctx, \"default\", \u0026edgecontainer.NodePoolArgs{\n\t\t\tName: pulumi.String(\"nodepool-1\"),\n\t\t\tCluster: cluster.Name,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNodeLocation: pulumi.String(\"us-central1-edge-example-edgesite\"),\n\t\t\tNodeCount: pulumi.Int(3),\n\t\t\tLocalDiskEncryption: \u0026edgecontainer.NodePoolLocalDiskEncryptionArgs{\n\t\t\t\tKmsKey: cryptoKeyCryptoKey.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcryptoKey,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.edgecontainer.Cluster;\nimport com.pulumi.gcp.edgecontainer.ClusterArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationAdminUsersArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterNetworkingArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterFleetArgs;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.edgecontainer.NodePool;\nimport com.pulumi.gcp.edgecontainer.NodePoolArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.NodePoolLocalDiskEncryptionArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n .name(\"default\")\n .location(\"us-central1\")\n .authorization(ClusterAuthorizationArgs.builder()\n .adminUsers(ClusterAuthorizationAdminUsersArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .networking(ClusterNetworkingArgs.builder()\n .clusterIpv4CidrBlocks(\"10.0.0.0/16\")\n .servicesIpv4CidrBlocks(\"10.1.0.0/16\")\n .build())\n .fleet(ClusterFleetArgs.builder()\n .project(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .build());\n\n var keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"keyring\")\n .location(\"us-central1\")\n .build());\n\n var cryptoKeyCryptoKey = new CryptoKey(\"cryptoKeyCryptoKey\", CryptoKeyArgs.builder()\n .name(\"key\")\n .keyRing(keyRing.id())\n .build());\n\n var cryptoKey = new CryptoKeyIAMMember(\"cryptoKey\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(cryptoKeyCryptoKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-edgecontainer.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var default_ = new NodePool(\"default\", NodePoolArgs.builder()\n .name(\"nodepool-1\")\n .cluster(cluster.name())\n .location(\"us-central1\")\n .nodeLocation(\"us-central1-edge-example-edgesite\")\n .nodeCount(3)\n .localDiskEncryption(NodePoolLocalDiskEncryptionArgs.builder()\n .kmsKey(cryptoKeyCryptoKey.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(cryptoKey)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster:\n type: gcp:edgecontainer:Cluster\n properties:\n name: default\n location: us-central1\n authorization:\n adminUsers:\n username: admin@hashicorptest.com\n networking:\n clusterIpv4CidrBlocks:\n - 10.0.0.0/16\n servicesIpv4CidrBlocks:\n - 10.1.0.0/16\n fleet:\n project: projects/${project.number}\n cryptoKey:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key\n properties:\n cryptoKeyId: ${cryptoKeyCryptoKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-edgecontainer.iam.gserviceaccount.com\n cryptoKeyCryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: key\n keyRing: ${keyRing.id}\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: keyring\n location: us-central1\n default:\n type: gcp:edgecontainer:NodePool\n properties:\n name: nodepool-1\n cluster: ${cluster.name}\n location: us-central1\n nodeLocation: us-central1-edge-example-edgesite\n nodeCount: 3\n localDiskEncryption:\n kmsKey: ${cryptoKeyCryptoKey.id}\n options:\n dependson:\n - ${cryptoKey}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Edgecontainer Local Control Plane Node Pool\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst _default = new gcp.edgecontainer.Cluster(\"default\", {\n name: \"\",\n location: \"us-central1\",\n authorization: {\n adminUsers: {\n username: \"admin@hashicorptest.com\",\n },\n },\n networking: {\n clusterIpv4CidrBlocks: [\"10.0.0.0/16\"],\n servicesIpv4CidrBlocks: [\"10.1.0.0/16\"],\n },\n fleet: {\n project: project.then(project =\u003e `projects/${project.number}`),\n },\n externalLoadBalancerIpv4AddressPools: [\"10.100.0.0-10.100.0.10\"],\n controlPlane: {\n local: {\n nodeLocation: \"us-central1-edge-example-edgesite\",\n nodeCount: 1,\n machineFilter: \"machine-name\",\n sharedDeploymentPolicy: \"ALLOWED\",\n },\n },\n});\nconst defaultNodePool = new gcp.edgecontainer.NodePool(\"default\", {\n name: \"nodepool-1\",\n cluster: cluster.name,\n location: \"us-central1\",\n nodeLocation: \"us-central1-edge-example-edgesite\",\n nodeCount: 3,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ndefault = gcp.edgecontainer.Cluster(\"default\",\n name=\"\",\n location=\"us-central1\",\n authorization={\n \"admin_users\": {\n \"username\": \"admin@hashicorptest.com\",\n },\n },\n networking={\n \"cluster_ipv4_cidr_blocks\": [\"10.0.0.0/16\"],\n \"services_ipv4_cidr_blocks\": [\"10.1.0.0/16\"],\n },\n fleet={\n \"project\": f\"projects/{project.number}\",\n },\n external_load_balancer_ipv4_address_pools=[\"10.100.0.0-10.100.0.10\"],\n control_plane={\n \"local\": {\n \"node_location\": \"us-central1-edge-example-edgesite\",\n \"node_count\": 1,\n \"machine_filter\": \"machine-name\",\n \"shared_deployment_policy\": \"ALLOWED\",\n },\n })\ndefault_node_pool = gcp.edgecontainer.NodePool(\"default\",\n name=\"nodepool-1\",\n cluster=cluster[\"name\"],\n location=\"us-central1\",\n node_location=\"us-central1-edge-example-edgesite\",\n node_count=3)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var @default = new Gcp.EdgeContainer.Cluster(\"default\", new()\n {\n Name = \"\",\n Location = \"us-central1\",\n Authorization = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationArgs\n {\n AdminUsers = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationAdminUsersArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n Networking = new Gcp.EdgeContainer.Inputs.ClusterNetworkingArgs\n {\n ClusterIpv4CidrBlocks = new[]\n {\n \"10.0.0.0/16\",\n },\n ServicesIpv4CidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n },\n Fleet = new Gcp.EdgeContainer.Inputs.ClusterFleetArgs\n {\n Project = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n ExternalLoadBalancerIpv4AddressPools = new[]\n {\n \"10.100.0.0-10.100.0.10\",\n },\n ControlPlane = new Gcp.EdgeContainer.Inputs.ClusterControlPlaneArgs\n {\n Local = new Gcp.EdgeContainer.Inputs.ClusterControlPlaneLocalArgs\n {\n NodeLocation = \"us-central1-edge-example-edgesite\",\n NodeCount = 1,\n MachineFilter = \"machine-name\",\n SharedDeploymentPolicy = \"ALLOWED\",\n },\n },\n });\n\n var defaultNodePool = new Gcp.EdgeContainer.NodePool(\"default\", new()\n {\n Name = \"nodepool-1\",\n Cluster = cluster.Name,\n Location = \"us-central1\",\n NodeLocation = \"us-central1-edge-example-edgesite\",\n NodeCount = 3,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/edgecontainer\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = edgecontainer.NewCluster(ctx, \"default\", \u0026edgecontainer.ClusterArgs{\n\t\t\tName: pulumi.String(\"\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tAuthorization: \u0026edgecontainer.ClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: \u0026edgecontainer.ClusterAuthorizationAdminUsersArgs{\n\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworking: \u0026edgecontainer.ClusterNetworkingArgs{\n\t\t\t\tClusterIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.0.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServicesIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFleet: \u0026edgecontainer.ClusterFleetArgs{\n\t\t\t\tProject: pulumi.Sprintf(\"projects/%v\", project.Number),\n\t\t\t},\n\t\t\tExternalLoadBalancerIpv4AddressPools: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.100.0.0-10.100.0.10\"),\n\t\t\t},\n\t\t\tControlPlane: \u0026edgecontainer.ClusterControlPlaneArgs{\n\t\t\t\tLocal: \u0026edgecontainer.ClusterControlPlaneLocalArgs{\n\t\t\t\t\tNodeLocation: pulumi.String(\"us-central1-edge-example-edgesite\"),\n\t\t\t\t\tNodeCount: pulumi.Int(1),\n\t\t\t\t\tMachineFilter: pulumi.String(\"machine-name\"),\n\t\t\t\t\tSharedDeploymentPolicy: pulumi.String(\"ALLOWED\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = edgecontainer.NewNodePool(ctx, \"default\", \u0026edgecontainer.NodePoolArgs{\n\t\t\tName: pulumi.String(\"nodepool-1\"),\n\t\t\tCluster: pulumi.Any(cluster.Name),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNodeLocation: pulumi.String(\"us-central1-edge-example-edgesite\"),\n\t\t\tNodeCount: pulumi.Int(3),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.edgecontainer.Cluster;\nimport com.pulumi.gcp.edgecontainer.ClusterArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationAdminUsersArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterNetworkingArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterFleetArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterControlPlaneArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterControlPlaneLocalArgs;\nimport com.pulumi.gcp.edgecontainer.NodePool;\nimport com.pulumi.gcp.edgecontainer.NodePoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var default_ = new Cluster(\"default\", ClusterArgs.builder()\n .name(\"\")\n .location(\"us-central1\")\n .authorization(ClusterAuthorizationArgs.builder()\n .adminUsers(ClusterAuthorizationAdminUsersArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .networking(ClusterNetworkingArgs.builder()\n .clusterIpv4CidrBlocks(\"10.0.0.0/16\")\n .servicesIpv4CidrBlocks(\"10.1.0.0/16\")\n .build())\n .fleet(ClusterFleetArgs.builder()\n .project(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .externalLoadBalancerIpv4AddressPools(\"10.100.0.0-10.100.0.10\")\n .controlPlane(ClusterControlPlaneArgs.builder()\n .local(ClusterControlPlaneLocalArgs.builder()\n .nodeLocation(\"us-central1-edge-example-edgesite\")\n .nodeCount(1)\n .machineFilter(\"machine-name\")\n .sharedDeploymentPolicy(\"ALLOWED\")\n .build())\n .build())\n .build());\n\n var defaultNodePool = new NodePool(\"defaultNodePool\", NodePoolArgs.builder()\n .name(\"nodepool-1\")\n .cluster(cluster.name())\n .location(\"us-central1\")\n .nodeLocation(\"us-central1-edge-example-edgesite\")\n .nodeCount(3)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:edgecontainer:Cluster\n properties:\n name:\n location: us-central1\n authorization:\n adminUsers:\n username: admin@hashicorptest.com\n networking:\n clusterIpv4CidrBlocks:\n - 10.0.0.0/16\n servicesIpv4CidrBlocks:\n - 10.1.0.0/16\n fleet:\n project: projects/${project.number}\n externalLoadBalancerIpv4AddressPools:\n - 10.100.0.0-10.100.0.10\n controlPlane:\n local:\n nodeLocation: us-central1-edge-example-edgesite\n nodeCount: 1\n machineFilter: machine-name\n sharedDeploymentPolicy: ALLOWED\n defaultNodePool:\n type: gcp:edgecontainer:NodePool\n name: default\n properties:\n name: nodepool-1\n cluster: ${cluster.name}\n location: us-central1\n nodeLocation: us-central1-edge-example-edgesite\n nodeCount: 3\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNodePool can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/clusters/{{cluster}}/nodePools/{{name}}`\n\n* `{{project}}/{{location}}/{{cluster}}/{{name}}`\n\n* `{{location}}/{{cluster}}/{{name}}`\n\nWhen using the `pulumi import` command, NodePool can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:edgecontainer/nodePool:NodePool default projects/{{project}}/locations/{{location}}/clusters/{{cluster}}/nodePools/{{name}}\n```\n\n```sh\n$ pulumi import gcp:edgecontainer/nodePool:NodePool default {{project}}/{{location}}/{{cluster}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:edgecontainer/nodePool:NodePool default {{location}}/{{cluster}}/{{name}}\n```\n\n", + "description": "\"A set of Kubernetes nodes in a cluster with common configuration and specification.\"\n\n\nTo get more information about NodePool, see:\n\n* [API documentation](https://cloud.google.com/distributed-cloud/edge/latest/docs/reference/container/rest/v1/projects.locations.clusters.nodePools)\n* How-to Guides\n * [Google Distributed Cloud Edge](https://cloud.google.com/distributed-cloud/edge/latest/docs)\n\n## Example Usage\n\n### Edgecontainer Node Pool\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst cluster = new gcp.edgecontainer.Cluster(\"cluster\", {\n name: \"default\",\n location: \"us-central1\",\n authorization: {\n adminUsers: {\n username: \"admin@hashicorptest.com\",\n },\n },\n networking: {\n clusterIpv4CidrBlocks: [\"10.0.0.0/16\"],\n servicesIpv4CidrBlocks: [\"10.1.0.0/16\"],\n },\n fleet: {\n project: project.then(project =\u003e `projects/${project.number}`),\n },\n});\nconst _default = new gcp.edgecontainer.NodePool(\"default\", {\n name: \"nodepool-1\",\n cluster: cluster.name,\n location: \"us-central1\",\n nodeLocation: \"us-central1-edge-example-edgesite\",\n nodeCount: 3,\n labels: {\n my_key: \"my_val\",\n other_key: \"other_val\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ncluster = gcp.edgecontainer.Cluster(\"cluster\",\n name=\"default\",\n location=\"us-central1\",\n authorization={\n \"admin_users\": {\n \"username\": \"admin@hashicorptest.com\",\n },\n },\n networking={\n \"cluster_ipv4_cidr_blocks\": [\"10.0.0.0/16\"],\n \"services_ipv4_cidr_blocks\": [\"10.1.0.0/16\"],\n },\n fleet={\n \"project\": f\"projects/{project.number}\",\n })\ndefault = gcp.edgecontainer.NodePool(\"default\",\n name=\"nodepool-1\",\n cluster=cluster.name,\n location=\"us-central1\",\n node_location=\"us-central1-edge-example-edgesite\",\n node_count=3,\n labels={\n \"my_key\": \"my_val\",\n \"other_key\": \"other_val\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cluster = new Gcp.EdgeContainer.Cluster(\"cluster\", new()\n {\n Name = \"default\",\n Location = \"us-central1\",\n Authorization = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationArgs\n {\n AdminUsers = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationAdminUsersArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n Networking = new Gcp.EdgeContainer.Inputs.ClusterNetworkingArgs\n {\n ClusterIpv4CidrBlocks = new[]\n {\n \"10.0.0.0/16\",\n },\n ServicesIpv4CidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n },\n Fleet = new Gcp.EdgeContainer.Inputs.ClusterFleetArgs\n {\n Project = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n });\n\n var @default = new Gcp.EdgeContainer.NodePool(\"default\", new()\n {\n Name = \"nodepool-1\",\n Cluster = cluster.Name,\n Location = \"us-central1\",\n NodeLocation = \"us-central1-edge-example-edgesite\",\n NodeCount = 3,\n Labels = \n {\n { \"my_key\", \"my_val\" },\n { \"other_key\", \"other_val\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/edgecontainer\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcluster, err := edgecontainer.NewCluster(ctx, \"cluster\", \u0026edgecontainer.ClusterArgs{\n\t\t\tName: pulumi.String(\"default\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tAuthorization: \u0026edgecontainer.ClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: \u0026edgecontainer.ClusterAuthorizationAdminUsersArgs{\n\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworking: \u0026edgecontainer.ClusterNetworkingArgs{\n\t\t\t\tClusterIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.0.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServicesIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFleet: \u0026edgecontainer.ClusterFleetArgs{\n\t\t\t\tProject: pulumi.Sprintf(\"projects/%v\", project.Number),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = edgecontainer.NewNodePool(ctx, \"default\", \u0026edgecontainer.NodePoolArgs{\n\t\t\tName: pulumi.String(\"nodepool-1\"),\n\t\t\tCluster: cluster.Name,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNodeLocation: pulumi.String(\"us-central1-edge-example-edgesite\"),\n\t\t\tNodeCount: pulumi.Int(3),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_key\": pulumi.String(\"my_val\"),\n\t\t\t\t\"other_key\": pulumi.String(\"other_val\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.edgecontainer.Cluster;\nimport com.pulumi.gcp.edgecontainer.ClusterArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationAdminUsersArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterNetworkingArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterFleetArgs;\nimport com.pulumi.gcp.edgecontainer.NodePool;\nimport com.pulumi.gcp.edgecontainer.NodePoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n .name(\"default\")\n .location(\"us-central1\")\n .authorization(ClusterAuthorizationArgs.builder()\n .adminUsers(ClusterAuthorizationAdminUsersArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .networking(ClusterNetworkingArgs.builder()\n .clusterIpv4CidrBlocks(\"10.0.0.0/16\")\n .servicesIpv4CidrBlocks(\"10.1.0.0/16\")\n .build())\n .fleet(ClusterFleetArgs.builder()\n .project(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .build());\n\n var default_ = new NodePool(\"default\", NodePoolArgs.builder()\n .name(\"nodepool-1\")\n .cluster(cluster.name())\n .location(\"us-central1\")\n .nodeLocation(\"us-central1-edge-example-edgesite\")\n .nodeCount(3)\n .labels(Map.ofEntries(\n Map.entry(\"my_key\", \"my_val\"),\n Map.entry(\"other_key\", \"other_val\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster:\n type: gcp:edgecontainer:Cluster\n properties:\n name: default\n location: us-central1\n authorization:\n adminUsers:\n username: admin@hashicorptest.com\n networking:\n clusterIpv4CidrBlocks:\n - 10.0.0.0/16\n servicesIpv4CidrBlocks:\n - 10.1.0.0/16\n fleet:\n project: projects/${project.number}\n default:\n type: gcp:edgecontainer:NodePool\n properties:\n name: nodepool-1\n cluster: ${cluster.name}\n location: us-central1\n nodeLocation: us-central1-edge-example-edgesite\n nodeCount: 3\n labels:\n my_key: my_val\n other_key: other_val\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Edgecontainer Node Pool With Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst cluster = new gcp.edgecontainer.Cluster(\"cluster\", {\n name: \"default\",\n location: \"us-central1\",\n authorization: {\n adminUsers: {\n username: \"admin@hashicorptest.com\",\n },\n },\n networking: {\n clusterIpv4CidrBlocks: [\"10.0.0.0/16\"],\n servicesIpv4CidrBlocks: [\"10.1.0.0/16\"],\n },\n fleet: {\n project: project.then(project =\u003e `projects/${project.number}`),\n },\n});\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"keyring\",\n location: \"us-central1\",\n});\nconst cryptoKeyCryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"key\",\n keyRing: keyRing.id,\n});\nconst cryptoKey = new gcp.kms.CryptoKeyIAMMember(\"crypto_key\", {\n cryptoKeyId: cryptoKeyCryptoKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-edgecontainer.iam.gserviceaccount.com`),\n});\nconst _default = new gcp.edgecontainer.NodePool(\"default\", {\n name: \"nodepool-1\",\n cluster: cluster.name,\n location: \"us-central1\",\n nodeLocation: \"us-central1-edge-example-edgesite\",\n nodeCount: 3,\n localDiskEncryption: {\n kmsKey: cryptoKeyCryptoKey.id,\n },\n}, {\n dependsOn: [cryptoKey],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ncluster = gcp.edgecontainer.Cluster(\"cluster\",\n name=\"default\",\n location=\"us-central1\",\n authorization={\n \"admin_users\": {\n \"username\": \"admin@hashicorptest.com\",\n },\n },\n networking={\n \"cluster_ipv4_cidr_blocks\": [\"10.0.0.0/16\"],\n \"services_ipv4_cidr_blocks\": [\"10.1.0.0/16\"],\n },\n fleet={\n \"project\": f\"projects/{project.number}\",\n })\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"keyring\",\n location=\"us-central1\")\ncrypto_key_crypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"key\",\n key_ring=key_ring.id)\ncrypto_key = gcp.kms.CryptoKeyIAMMember(\"crypto_key\",\n crypto_key_id=crypto_key_crypto_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-edgecontainer.iam.gserviceaccount.com\")\ndefault = gcp.edgecontainer.NodePool(\"default\",\n name=\"nodepool-1\",\n cluster=cluster.name,\n location=\"us-central1\",\n node_location=\"us-central1-edge-example-edgesite\",\n node_count=3,\n local_disk_encryption={\n \"kms_key\": crypto_key_crypto_key.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[crypto_key]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cluster = new Gcp.EdgeContainer.Cluster(\"cluster\", new()\n {\n Name = \"default\",\n Location = \"us-central1\",\n Authorization = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationArgs\n {\n AdminUsers = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationAdminUsersArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n Networking = new Gcp.EdgeContainer.Inputs.ClusterNetworkingArgs\n {\n ClusterIpv4CidrBlocks = new[]\n {\n \"10.0.0.0/16\",\n },\n ServicesIpv4CidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n },\n Fleet = new Gcp.EdgeContainer.Inputs.ClusterFleetArgs\n {\n Project = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n });\n\n var keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"keyring\",\n Location = \"us-central1\",\n });\n\n var cryptoKeyCryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"key\",\n KeyRing = keyRing.Id,\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key\", new()\n {\n CryptoKeyId = cryptoKeyCryptoKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-edgecontainer.iam.gserviceaccount.com\",\n });\n\n var @default = new Gcp.EdgeContainer.NodePool(\"default\", new()\n {\n Name = \"nodepool-1\",\n Cluster = cluster.Name,\n Location = \"us-central1\",\n NodeLocation = \"us-central1-edge-example-edgesite\",\n NodeCount = 3,\n LocalDiskEncryption = new Gcp.EdgeContainer.Inputs.NodePoolLocalDiskEncryptionArgs\n {\n KmsKey = cryptoKeyCryptoKey.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cryptoKey,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/edgecontainer\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcluster, err := edgecontainer.NewCluster(ctx, \"cluster\", \u0026edgecontainer.ClusterArgs{\n\t\t\tName: pulumi.String(\"default\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tAuthorization: \u0026edgecontainer.ClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: \u0026edgecontainer.ClusterAuthorizationAdminUsersArgs{\n\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworking: \u0026edgecontainer.ClusterNetworkingArgs{\n\t\t\t\tClusterIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.0.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServicesIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFleet: \u0026edgecontainer.ClusterFleetArgs{\n\t\t\t\tProject: pulumi.Sprintf(\"projects/%v\", project.Number),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"keyring\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKeyCryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKey, err := kms.NewCryptoKeyIAMMember(ctx, \"crypto_key\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: cryptoKeyCryptoKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-edgecontainer.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = edgecontainer.NewNodePool(ctx, \"default\", \u0026edgecontainer.NodePoolArgs{\n\t\t\tName: pulumi.String(\"nodepool-1\"),\n\t\t\tCluster: cluster.Name,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNodeLocation: pulumi.String(\"us-central1-edge-example-edgesite\"),\n\t\t\tNodeCount: pulumi.Int(3),\n\t\t\tLocalDiskEncryption: \u0026edgecontainer.NodePoolLocalDiskEncryptionArgs{\n\t\t\t\tKmsKey: cryptoKeyCryptoKey.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcryptoKey,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.edgecontainer.Cluster;\nimport com.pulumi.gcp.edgecontainer.ClusterArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationAdminUsersArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterNetworkingArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterFleetArgs;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.edgecontainer.NodePool;\nimport com.pulumi.gcp.edgecontainer.NodePoolArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.NodePoolLocalDiskEncryptionArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n .name(\"default\")\n .location(\"us-central1\")\n .authorization(ClusterAuthorizationArgs.builder()\n .adminUsers(ClusterAuthorizationAdminUsersArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .networking(ClusterNetworkingArgs.builder()\n .clusterIpv4CidrBlocks(\"10.0.0.0/16\")\n .servicesIpv4CidrBlocks(\"10.1.0.0/16\")\n .build())\n .fleet(ClusterFleetArgs.builder()\n .project(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .build());\n\n var keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"keyring\")\n .location(\"us-central1\")\n .build());\n\n var cryptoKeyCryptoKey = new CryptoKey(\"cryptoKeyCryptoKey\", CryptoKeyArgs.builder()\n .name(\"key\")\n .keyRing(keyRing.id())\n .build());\n\n var cryptoKey = new CryptoKeyIAMMember(\"cryptoKey\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(cryptoKeyCryptoKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-edgecontainer.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var default_ = new NodePool(\"default\", NodePoolArgs.builder()\n .name(\"nodepool-1\")\n .cluster(cluster.name())\n .location(\"us-central1\")\n .nodeLocation(\"us-central1-edge-example-edgesite\")\n .nodeCount(3)\n .localDiskEncryption(NodePoolLocalDiskEncryptionArgs.builder()\n .kmsKey(cryptoKeyCryptoKey.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(cryptoKey)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster:\n type: gcp:edgecontainer:Cluster\n properties:\n name: default\n location: us-central1\n authorization:\n adminUsers:\n username: admin@hashicorptest.com\n networking:\n clusterIpv4CidrBlocks:\n - 10.0.0.0/16\n servicesIpv4CidrBlocks:\n - 10.1.0.0/16\n fleet:\n project: projects/${project.number}\n cryptoKey:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key\n properties:\n cryptoKeyId: ${cryptoKeyCryptoKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-edgecontainer.iam.gserviceaccount.com\n cryptoKeyCryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: key\n keyRing: ${keyRing.id}\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: keyring\n location: us-central1\n default:\n type: gcp:edgecontainer:NodePool\n properties:\n name: nodepool-1\n cluster: ${cluster.name}\n location: us-central1\n nodeLocation: us-central1-edge-example-edgesite\n nodeCount: 3\n localDiskEncryption:\n kmsKey: ${cryptoKeyCryptoKey.id}\n options:\n dependson:\n - ${cryptoKey}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Edgecontainer Local Control Plane Node Pool\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst _default = new gcp.edgecontainer.Cluster(\"default\", {\n name: \"\",\n location: \"us-central1\",\n authorization: {\n adminUsers: {\n username: \"admin@hashicorptest.com\",\n },\n },\n networking: {\n clusterIpv4CidrBlocks: [\"10.0.0.0/16\"],\n servicesIpv4CidrBlocks: [\"10.1.0.0/16\"],\n },\n fleet: {\n project: project.then(project =\u003e `projects/${project.number}`),\n },\n externalLoadBalancerIpv4AddressPools: [\"10.100.0.0-10.100.0.10\"],\n controlPlane: {\n local: {\n nodeLocation: \"us-central1-edge-example-edgesite\",\n nodeCount: 1,\n machineFilter: \"machine-name\",\n sharedDeploymentPolicy: \"ALLOWED\",\n },\n },\n});\nconst defaultNodePool = new gcp.edgecontainer.NodePool(\"default\", {\n name: \"nodepool-1\",\n cluster: cluster.name,\n location: \"us-central1\",\n nodeLocation: \"us-central1-edge-example-edgesite\",\n nodeCount: 3,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ndefault = gcp.edgecontainer.Cluster(\"default\",\n name=\"\",\n location=\"us-central1\",\n authorization={\n \"admin_users\": {\n \"username\": \"admin@hashicorptest.com\",\n },\n },\n networking={\n \"cluster_ipv4_cidr_blocks\": [\"10.0.0.0/16\"],\n \"services_ipv4_cidr_blocks\": [\"10.1.0.0/16\"],\n },\n fleet={\n \"project\": f\"projects/{project.number}\",\n },\n external_load_balancer_ipv4_address_pools=[\"10.100.0.0-10.100.0.10\"],\n control_plane={\n \"local\": {\n \"node_location\": \"us-central1-edge-example-edgesite\",\n \"node_count\": 1,\n \"machine_filter\": \"machine-name\",\n \"shared_deployment_policy\": \"ALLOWED\",\n },\n })\ndefault_node_pool = gcp.edgecontainer.NodePool(\"default\",\n name=\"nodepool-1\",\n cluster=cluster[\"name\"],\n location=\"us-central1\",\n node_location=\"us-central1-edge-example-edgesite\",\n node_count=3)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var @default = new Gcp.EdgeContainer.Cluster(\"default\", new()\n {\n Name = \"\",\n Location = \"us-central1\",\n Authorization = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationArgs\n {\n AdminUsers = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationAdminUsersArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n Networking = new Gcp.EdgeContainer.Inputs.ClusterNetworkingArgs\n {\n ClusterIpv4CidrBlocks = new[]\n {\n \"10.0.0.0/16\",\n },\n ServicesIpv4CidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n },\n Fleet = new Gcp.EdgeContainer.Inputs.ClusterFleetArgs\n {\n Project = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n ExternalLoadBalancerIpv4AddressPools = new[]\n {\n \"10.100.0.0-10.100.0.10\",\n },\n ControlPlane = new Gcp.EdgeContainer.Inputs.ClusterControlPlaneArgs\n {\n Local = new Gcp.EdgeContainer.Inputs.ClusterControlPlaneLocalArgs\n {\n NodeLocation = \"us-central1-edge-example-edgesite\",\n NodeCount = 1,\n MachineFilter = \"machine-name\",\n SharedDeploymentPolicy = \"ALLOWED\",\n },\n },\n });\n\n var defaultNodePool = new Gcp.EdgeContainer.NodePool(\"default\", new()\n {\n Name = \"nodepool-1\",\n Cluster = cluster.Name,\n Location = \"us-central1\",\n NodeLocation = \"us-central1-edge-example-edgesite\",\n NodeCount = 3,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/edgecontainer\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = edgecontainer.NewCluster(ctx, \"default\", \u0026edgecontainer.ClusterArgs{\n\t\t\tName: pulumi.String(\"\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tAuthorization: \u0026edgecontainer.ClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: \u0026edgecontainer.ClusterAuthorizationAdminUsersArgs{\n\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworking: \u0026edgecontainer.ClusterNetworkingArgs{\n\t\t\t\tClusterIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.0.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServicesIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFleet: \u0026edgecontainer.ClusterFleetArgs{\n\t\t\t\tProject: pulumi.Sprintf(\"projects/%v\", project.Number),\n\t\t\t},\n\t\t\tExternalLoadBalancerIpv4AddressPools: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.100.0.0-10.100.0.10\"),\n\t\t\t},\n\t\t\tControlPlane: \u0026edgecontainer.ClusterControlPlaneArgs{\n\t\t\t\tLocal: \u0026edgecontainer.ClusterControlPlaneLocalArgs{\n\t\t\t\t\tNodeLocation: pulumi.String(\"us-central1-edge-example-edgesite\"),\n\t\t\t\t\tNodeCount: pulumi.Int(1),\n\t\t\t\t\tMachineFilter: pulumi.String(\"machine-name\"),\n\t\t\t\t\tSharedDeploymentPolicy: pulumi.String(\"ALLOWED\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = edgecontainer.NewNodePool(ctx, \"default\", \u0026edgecontainer.NodePoolArgs{\n\t\t\tName: pulumi.String(\"nodepool-1\"),\n\t\t\tCluster: pulumi.Any(cluster.Name),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNodeLocation: pulumi.String(\"us-central1-edge-example-edgesite\"),\n\t\t\tNodeCount: pulumi.Int(3),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.edgecontainer.Cluster;\nimport com.pulumi.gcp.edgecontainer.ClusterArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationAdminUsersArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterNetworkingArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterFleetArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterControlPlaneArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterControlPlaneLocalArgs;\nimport com.pulumi.gcp.edgecontainer.NodePool;\nimport com.pulumi.gcp.edgecontainer.NodePoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var default_ = new Cluster(\"default\", ClusterArgs.builder()\n .name(\"\")\n .location(\"us-central1\")\n .authorization(ClusterAuthorizationArgs.builder()\n .adminUsers(ClusterAuthorizationAdminUsersArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .networking(ClusterNetworkingArgs.builder()\n .clusterIpv4CidrBlocks(\"10.0.0.0/16\")\n .servicesIpv4CidrBlocks(\"10.1.0.0/16\")\n .build())\n .fleet(ClusterFleetArgs.builder()\n .project(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .externalLoadBalancerIpv4AddressPools(\"10.100.0.0-10.100.0.10\")\n .controlPlane(ClusterControlPlaneArgs.builder()\n .local(ClusterControlPlaneLocalArgs.builder()\n .nodeLocation(\"us-central1-edge-example-edgesite\")\n .nodeCount(1)\n .machineFilter(\"machine-name\")\n .sharedDeploymentPolicy(\"ALLOWED\")\n .build())\n .build())\n .build());\n\n var defaultNodePool = new NodePool(\"defaultNodePool\", NodePoolArgs.builder()\n .name(\"nodepool-1\")\n .cluster(cluster.name())\n .location(\"us-central1\")\n .nodeLocation(\"us-central1-edge-example-edgesite\")\n .nodeCount(3)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:edgecontainer:Cluster\n properties:\n name:\n location: us-central1\n authorization:\n adminUsers:\n username: admin@hashicorptest.com\n networking:\n clusterIpv4CidrBlocks:\n - 10.0.0.0/16\n servicesIpv4CidrBlocks:\n - 10.1.0.0/16\n fleet:\n project: projects/${project.number}\n externalLoadBalancerIpv4AddressPools:\n - 10.100.0.0-10.100.0.10\n controlPlane:\n local:\n nodeLocation: us-central1-edge-example-edgesite\n nodeCount: 1\n machineFilter: machine-name\n sharedDeploymentPolicy: ALLOWED\n defaultNodePool:\n type: gcp:edgecontainer:NodePool\n name: default\n properties:\n name: nodepool-1\n cluster: ${cluster.name}\n location: us-central1\n nodeLocation: us-central1-edge-example-edgesite\n nodeCount: 3\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNodePool can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/clusters/{{cluster}}/nodePools/{{name}}`\n\n* `{{project}}/{{location}}/{{cluster}}/{{name}}`\n\n* `{{location}}/{{cluster}}/{{name}}`\n\nWhen using the `pulumi import` command, NodePool can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:edgecontainer/nodePool:NodePool default projects/{{project}}/locations/{{location}}/clusters/{{cluster}}/nodePools/{{name}}\n```\n\n```sh\n$ pulumi import gcp:edgecontainer/nodePool:NodePool default {{project}}/{{location}}/{{cluster}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:edgecontainer/nodePool:NodePool default {{location}}/{{cluster}}/{{name}}\n```\n\n", "properties": { "cluster": { "type": "string", @@ -194791,7 +194791,7 @@ } }, "gcp:edgecontainer/vpnConnection:VpnConnection": { - "description": "A VPN connection\n\n\nTo get more information about VpnConnection, see:\n\n* [API documentation](https://cloud.google.com/distributed-cloud/edge/latest/docs/reference/container/rest/v1/projects.locations.vpnConnections)\n* How-to Guides\n * [Google Distributed Cloud Edge](https://cloud.google.com/distributed-cloud/edge/latest/docs)\n\n## Example Usage\n\n### Edgecontainer Vpn Connection\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst cluster = new gcp.edgecontainer.Cluster(\"cluster\", {\n name: \"default\",\n location: \"us-central1\",\n authorization: {\n adminUsers: {\n username: \"admin@hashicorptest.com\",\n },\n },\n networking: {\n clusterIpv4CidrBlocks: [\"10.0.0.0/16\"],\n servicesIpv4CidrBlocks: [\"10.1.0.0/16\"],\n },\n fleet: {\n project: project.then(project =\u003e `projects/${project.number}`),\n },\n});\nconst nodePool = new gcp.edgecontainer.NodePool(\"node_pool\", {\n name: \"nodepool-1\",\n cluster: cluster.name,\n location: \"us-central1\",\n nodeLocation: \"us-central1-edge-example-edgesite\",\n nodeCount: 3,\n});\nconst vpc = new gcp.compute.Network(\"vpc\", {name: \"example-vpc\"});\nconst _default = new gcp.edgecontainer.VpnConnection(\"default\", {\n name: \"vpn-connection-1\",\n location: \"us-central1\",\n cluster: pulumi.all([project, cluster.name]).apply(([project, name]) =\u003e `projects/${project.number}/locations/us-east1/clusters/${name}`),\n vpc: vpc.name,\n enableHighAvailability: true,\n labels: {\n my_key: \"my_val\",\n other_key: \"other_val\",\n },\n}, {\n dependsOn: [nodePool],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ncluster = gcp.edgecontainer.Cluster(\"cluster\",\n name=\"default\",\n location=\"us-central1\",\n authorization={\n \"admin_users\": {\n \"username\": \"admin@hashicorptest.com\",\n },\n },\n networking={\n \"cluster_ipv4_cidr_blocks\": [\"10.0.0.0/16\"],\n \"services_ipv4_cidr_blocks\": [\"10.1.0.0/16\"],\n },\n fleet={\n \"project\": f\"projects/{project.number}\",\n })\nnode_pool = gcp.edgecontainer.NodePool(\"node_pool\",\n name=\"nodepool-1\",\n cluster=cluster.name,\n location=\"us-central1\",\n node_location=\"us-central1-edge-example-edgesite\",\n node_count=3)\nvpc = gcp.compute.Network(\"vpc\", name=\"example-vpc\")\ndefault = gcp.edgecontainer.VpnConnection(\"default\",\n name=\"vpn-connection-1\",\n location=\"us-central1\",\n cluster=cluster.name.apply(lambda name: f\"projects/{project.number}/locations/us-east1/clusters/{name}\"),\n vpc=vpc.name,\n enable_high_availability=True,\n labels={\n \"my_key\": \"my_val\",\n \"other_key\": \"other_val\",\n },\n opts = pulumi.ResourceOptions(depends_on=[node_pool]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cluster = new Gcp.EdgeContainer.Cluster(\"cluster\", new()\n {\n Name = \"default\",\n Location = \"us-central1\",\n Authorization = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationArgs\n {\n AdminUsers = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationAdminUsersArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n Networking = new Gcp.EdgeContainer.Inputs.ClusterNetworkingArgs\n {\n ClusterIpv4CidrBlocks = new[]\n {\n \"10.0.0.0/16\",\n },\n ServicesIpv4CidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n },\n Fleet = new Gcp.EdgeContainer.Inputs.ClusterFleetArgs\n {\n Project = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n });\n\n var nodePool = new Gcp.EdgeContainer.NodePool(\"node_pool\", new()\n {\n Name = \"nodepool-1\",\n Cluster = cluster.Name,\n Location = \"us-central1\",\n NodeLocation = \"us-central1-edge-example-edgesite\",\n NodeCount = 3,\n });\n\n var vpc = new Gcp.Compute.Network(\"vpc\", new()\n {\n Name = \"example-vpc\",\n });\n\n var @default = new Gcp.EdgeContainer.VpnConnection(\"default\", new()\n {\n Name = \"vpn-connection-1\",\n Location = \"us-central1\",\n Cluster = Output.Tuple(project, cluster.Name).Apply(values =\u003e\n {\n var project = values.Item1;\n var name = values.Item2;\n return $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/locations/us-east1/clusters/{name}\";\n }),\n Vpc = vpc.Name,\n EnableHighAvailability = true,\n Labels = \n {\n { \"my_key\", \"my_val\" },\n { \"other_key\", \"other_val\" },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n nodePool,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/edgecontainer\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcluster, err := edgecontainer.NewCluster(ctx, \"cluster\", \u0026edgecontainer.ClusterArgs{\n\t\t\tName: pulumi.String(\"default\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tAuthorization: \u0026edgecontainer.ClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: \u0026edgecontainer.ClusterAuthorizationAdminUsersArgs{\n\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworking: \u0026edgecontainer.ClusterNetworkingArgs{\n\t\t\t\tClusterIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.0.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServicesIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFleet: \u0026edgecontainer.ClusterFleetArgs{\n\t\t\t\tProject: pulumi.Sprintf(\"projects/%v\", project.Number),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnodePool, err := edgecontainer.NewNodePool(ctx, \"node_pool\", \u0026edgecontainer.NodePoolArgs{\n\t\t\tName: pulumi.String(\"nodepool-1\"),\n\t\t\tCluster: cluster.Name,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNodeLocation: pulumi.String(\"us-central1-edge-example-edgesite\"),\n\t\t\tNodeCount: pulumi.Int(3),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvpc, err := compute.NewNetwork(ctx, \"vpc\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"example-vpc\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = edgecontainer.NewVpnConnection(ctx, \"default\", \u0026edgecontainer.VpnConnectionArgs{\n\t\t\tName: pulumi.String(\"vpn-connection-1\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tCluster: cluster.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/%v/locations/us-east1/clusters/%v\", project.Number, name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tVpc: vpc.Name,\n\t\t\tEnableHighAvailability: pulumi.Bool(true),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_key\": pulumi.String(\"my_val\"),\n\t\t\t\t\"other_key\": pulumi.String(\"other_val\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tnodePool,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.edgecontainer.Cluster;\nimport com.pulumi.gcp.edgecontainer.ClusterArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationAdminUsersArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterNetworkingArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterFleetArgs;\nimport com.pulumi.gcp.edgecontainer.NodePool;\nimport com.pulumi.gcp.edgecontainer.NodePoolArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.edgecontainer.VpnConnection;\nimport com.pulumi.gcp.edgecontainer.VpnConnectionArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n .name(\"default\")\n .location(\"us-central1\")\n .authorization(ClusterAuthorizationArgs.builder()\n .adminUsers(ClusterAuthorizationAdminUsersArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .networking(ClusterNetworkingArgs.builder()\n .clusterIpv4CidrBlocks(\"10.0.0.0/16\")\n .servicesIpv4CidrBlocks(\"10.1.0.0/16\")\n .build())\n .fleet(ClusterFleetArgs.builder()\n .project(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .build());\n\n var nodePool = new NodePool(\"nodePool\", NodePoolArgs.builder()\n .name(\"nodepool-1\")\n .cluster(cluster.name())\n .location(\"us-central1\")\n .nodeLocation(\"us-central1-edge-example-edgesite\")\n .nodeCount(3)\n .build());\n\n var vpc = new Network(\"vpc\", NetworkArgs.builder()\n .name(\"example-vpc\")\n .build());\n\n var default_ = new VpnConnection(\"default\", VpnConnectionArgs.builder()\n .name(\"vpn-connection-1\")\n .location(\"us-central1\")\n .cluster(cluster.name().applyValue(name -\u003e String.format(\"projects/%s/locations/us-east1/clusters/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number()),name)))\n .vpc(vpc.name())\n .enableHighAvailability(true)\n .labels(Map.ofEntries(\n Map.entry(\"my_key\", \"my_val\"),\n Map.entry(\"other_key\", \"other_val\")\n ))\n .build(), CustomResourceOptions.builder()\n .dependsOn(nodePool)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster:\n type: gcp:edgecontainer:Cluster\n properties:\n name: default\n location: us-central1\n authorization:\n adminUsers:\n username: admin@hashicorptest.com\n networking:\n clusterIpv4CidrBlocks:\n - 10.0.0.0/16\n servicesIpv4CidrBlocks:\n - 10.1.0.0/16\n fleet:\n project: projects/${project.number}\n nodePool:\n type: gcp:edgecontainer:NodePool\n name: node_pool\n properties:\n name: nodepool-1\n cluster: ${cluster.name}\n location: us-central1\n nodeLocation: us-central1-edge-example-edgesite\n nodeCount: 3\n default:\n type: gcp:edgecontainer:VpnConnection\n properties:\n name: vpn-connection-1\n location: us-central1\n cluster: projects/${project.number}/locations/us-east1/clusters/${cluster.name}\n vpc: ${vpc.name}\n enableHighAvailability: true\n labels:\n my_key: my_val\n other_key: other_val\n options:\n dependson:\n - ${nodePool}\n vpc:\n type: gcp:compute:Network\n properties:\n name: example-vpc\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVpnConnection can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/vpnConnections/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, VpnConnection can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:edgecontainer/vpnConnection:VpnConnection default projects/{{project}}/locations/{{location}}/vpnConnections/{{name}}\n```\n\n```sh\n$ pulumi import gcp:edgecontainer/vpnConnection:VpnConnection default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:edgecontainer/vpnConnection:VpnConnection default {{location}}/{{name}}\n```\n\n", + "description": "A VPN connection\n\n\nTo get more information about VpnConnection, see:\n\n* [API documentation](https://cloud.google.com/distributed-cloud/edge/latest/docs/reference/container/rest/v1/projects.locations.vpnConnections)\n* How-to Guides\n * [Google Distributed Cloud Edge](https://cloud.google.com/distributed-cloud/edge/latest/docs)\n\n## Example Usage\n\n### Edgecontainer Vpn Connection\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst cluster = new gcp.edgecontainer.Cluster(\"cluster\", {\n name: \"default\",\n location: \"us-central1\",\n authorization: {\n adminUsers: {\n username: \"admin@hashicorptest.com\",\n },\n },\n networking: {\n clusterIpv4CidrBlocks: [\"10.0.0.0/16\"],\n servicesIpv4CidrBlocks: [\"10.1.0.0/16\"],\n },\n fleet: {\n project: project.then(project =\u003e `projects/${project.number}`),\n },\n});\nconst nodePool = new gcp.edgecontainer.NodePool(\"node_pool\", {\n name: \"nodepool-1\",\n cluster: cluster.name,\n location: \"us-central1\",\n nodeLocation: \"us-central1-edge-example-edgesite\",\n nodeCount: 3,\n});\nconst vpc = new gcp.compute.Network(\"vpc\", {name: \"example-vpc\"});\nconst _default = new gcp.edgecontainer.VpnConnection(\"default\", {\n name: \"vpn-connection-1\",\n location: \"us-central1\",\n cluster: pulumi.all([project, cluster.name]).apply(([project, name]) =\u003e `projects/${project.number}/locations/us-east1/clusters/${name}`),\n vpc: vpc.name,\n enableHighAvailability: true,\n labels: {\n my_key: \"my_val\",\n other_key: \"other_val\",\n },\n}, {\n dependsOn: [nodePool],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ncluster = gcp.edgecontainer.Cluster(\"cluster\",\n name=\"default\",\n location=\"us-central1\",\n authorization={\n \"admin_users\": {\n \"username\": \"admin@hashicorptest.com\",\n },\n },\n networking={\n \"cluster_ipv4_cidr_blocks\": [\"10.0.0.0/16\"],\n \"services_ipv4_cidr_blocks\": [\"10.1.0.0/16\"],\n },\n fleet={\n \"project\": f\"projects/{project.number}\",\n })\nnode_pool = gcp.edgecontainer.NodePool(\"node_pool\",\n name=\"nodepool-1\",\n cluster=cluster.name,\n location=\"us-central1\",\n node_location=\"us-central1-edge-example-edgesite\",\n node_count=3)\nvpc = gcp.compute.Network(\"vpc\", name=\"example-vpc\")\ndefault = gcp.edgecontainer.VpnConnection(\"default\",\n name=\"vpn-connection-1\",\n location=\"us-central1\",\n cluster=cluster.name.apply(lambda name: f\"projects/{project.number}/locations/us-east1/clusters/{name}\"),\n vpc=vpc.name,\n enable_high_availability=True,\n labels={\n \"my_key\": \"my_val\",\n \"other_key\": \"other_val\",\n },\n opts = pulumi.ResourceOptions(depends_on=[node_pool]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cluster = new Gcp.EdgeContainer.Cluster(\"cluster\", new()\n {\n Name = \"default\",\n Location = \"us-central1\",\n Authorization = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationArgs\n {\n AdminUsers = new Gcp.EdgeContainer.Inputs.ClusterAuthorizationAdminUsersArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n Networking = new Gcp.EdgeContainer.Inputs.ClusterNetworkingArgs\n {\n ClusterIpv4CidrBlocks = new[]\n {\n \"10.0.0.0/16\",\n },\n ServicesIpv4CidrBlocks = new[]\n {\n \"10.1.0.0/16\",\n },\n },\n Fleet = new Gcp.EdgeContainer.Inputs.ClusterFleetArgs\n {\n Project = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}\",\n },\n });\n\n var nodePool = new Gcp.EdgeContainer.NodePool(\"node_pool\", new()\n {\n Name = \"nodepool-1\",\n Cluster = cluster.Name,\n Location = \"us-central1\",\n NodeLocation = \"us-central1-edge-example-edgesite\",\n NodeCount = 3,\n });\n\n var vpc = new Gcp.Compute.Network(\"vpc\", new()\n {\n Name = \"example-vpc\",\n });\n\n var @default = new Gcp.EdgeContainer.VpnConnection(\"default\", new()\n {\n Name = \"vpn-connection-1\",\n Location = \"us-central1\",\n Cluster = Output.Tuple(project, cluster.Name).Apply(values =\u003e\n {\n var project = values.Item1;\n var name = values.Item2;\n return $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/locations/us-east1/clusters/{name}\";\n }),\n Vpc = vpc.Name,\n EnableHighAvailability = true,\n Labels = \n {\n { \"my_key\", \"my_val\" },\n { \"other_key\", \"other_val\" },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n nodePool,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/edgecontainer\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcluster, err := edgecontainer.NewCluster(ctx, \"cluster\", \u0026edgecontainer.ClusterArgs{\n\t\t\tName: pulumi.String(\"default\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tAuthorization: \u0026edgecontainer.ClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: \u0026edgecontainer.ClusterAuthorizationAdminUsersArgs{\n\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworking: \u0026edgecontainer.ClusterNetworkingArgs{\n\t\t\t\tClusterIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.0.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tServicesIpv4CidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.1.0.0/16\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFleet: \u0026edgecontainer.ClusterFleetArgs{\n\t\t\t\tProject: pulumi.Sprintf(\"projects/%v\", project.Number),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnodePool, err := edgecontainer.NewNodePool(ctx, \"node_pool\", \u0026edgecontainer.NodePoolArgs{\n\t\t\tName: pulumi.String(\"nodepool-1\"),\n\t\t\tCluster: cluster.Name,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tNodeLocation: pulumi.String(\"us-central1-edge-example-edgesite\"),\n\t\t\tNodeCount: pulumi.Int(3),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvpc, err := compute.NewNetwork(ctx, \"vpc\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"example-vpc\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = edgecontainer.NewVpnConnection(ctx, \"default\", \u0026edgecontainer.VpnConnectionArgs{\n\t\t\tName: pulumi.String(\"vpn-connection-1\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tCluster: cluster.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/%v/locations/us-east1/clusters/%v\", project.Number, name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tVpc: vpc.Name,\n\t\t\tEnableHighAvailability: pulumi.Bool(true),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_key\": pulumi.String(\"my_val\"),\n\t\t\t\t\"other_key\": pulumi.String(\"other_val\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tnodePool,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.edgecontainer.Cluster;\nimport com.pulumi.gcp.edgecontainer.ClusterArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterAuthorizationAdminUsersArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterNetworkingArgs;\nimport com.pulumi.gcp.edgecontainer.inputs.ClusterFleetArgs;\nimport com.pulumi.gcp.edgecontainer.NodePool;\nimport com.pulumi.gcp.edgecontainer.NodePoolArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.edgecontainer.VpnConnection;\nimport com.pulumi.gcp.edgecontainer.VpnConnectionArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n .name(\"default\")\n .location(\"us-central1\")\n .authorization(ClusterAuthorizationArgs.builder()\n .adminUsers(ClusterAuthorizationAdminUsersArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .networking(ClusterNetworkingArgs.builder()\n .clusterIpv4CidrBlocks(\"10.0.0.0/16\")\n .servicesIpv4CidrBlocks(\"10.1.0.0/16\")\n .build())\n .fleet(ClusterFleetArgs.builder()\n .project(String.format(\"projects/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .build());\n\n var nodePool = new NodePool(\"nodePool\", NodePoolArgs.builder()\n .name(\"nodepool-1\")\n .cluster(cluster.name())\n .location(\"us-central1\")\n .nodeLocation(\"us-central1-edge-example-edgesite\")\n .nodeCount(3)\n .build());\n\n var vpc = new Network(\"vpc\", NetworkArgs.builder()\n .name(\"example-vpc\")\n .build());\n\n var default_ = new VpnConnection(\"default\", VpnConnectionArgs.builder()\n .name(\"vpn-connection-1\")\n .location(\"us-central1\")\n .cluster(cluster.name().applyValue(name -\u003e String.format(\"projects/%s/locations/us-east1/clusters/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number()),name)))\n .vpc(vpc.name())\n .enableHighAvailability(true)\n .labels(Map.ofEntries(\n Map.entry(\"my_key\", \"my_val\"),\n Map.entry(\"other_key\", \"other_val\")\n ))\n .build(), CustomResourceOptions.builder()\n .dependsOn(nodePool)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster:\n type: gcp:edgecontainer:Cluster\n properties:\n name: default\n location: us-central1\n authorization:\n adminUsers:\n username: admin@hashicorptest.com\n networking:\n clusterIpv4CidrBlocks:\n - 10.0.0.0/16\n servicesIpv4CidrBlocks:\n - 10.1.0.0/16\n fleet:\n project: projects/${project.number}\n nodePool:\n type: gcp:edgecontainer:NodePool\n name: node_pool\n properties:\n name: nodepool-1\n cluster: ${cluster.name}\n location: us-central1\n nodeLocation: us-central1-edge-example-edgesite\n nodeCount: 3\n default:\n type: gcp:edgecontainer:VpnConnection\n properties:\n name: vpn-connection-1\n location: us-central1\n cluster: projects/${project.number}/locations/us-east1/clusters/${cluster.name}\n vpc: ${vpc.name}\n enableHighAvailability: true\n labels:\n my_key: my_val\n other_key: other_val\n options:\n dependson:\n - ${nodePool}\n vpc:\n type: gcp:compute:Network\n properties:\n name: example-vpc\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVpnConnection can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/vpnConnections/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, VpnConnection can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:edgecontainer/vpnConnection:VpnConnection default projects/{{project}}/locations/{{location}}/vpnConnections/{{name}}\n```\n\n```sh\n$ pulumi import gcp:edgecontainer/vpnConnection:VpnConnection default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:edgecontainer/vpnConnection:VpnConnection default {{location}}/{{name}}\n```\n\n", "properties": { "cluster": { "type": "string", @@ -196099,7 +196099,7 @@ } }, "gcp:essentialcontacts/contact:Contact": { - "description": "A contact that will receive notifications from Google Cloud.\n\n\nTo get more information about Contact, see:\n\n* [API documentation](https://cloud.google.com/resource-manager/docs/reference/essentialcontacts/rest/v1/projects.contacts)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/resource-manager/docs/managing-notification-contacts)\n\n\u003e **Warning:** If you are using User ADCs (Application Default Credentials) with this resource,\nyou must specify a `billing_project` and set `user_project_override` to true\nin the provider configuration. Otherwise the Essential Contacts API will return a 403 error.\nYour account must have the `serviceusage.services.use` permission on the\n`billing_project` you defined.\n\n## Example Usage\n\n### Essential Contact\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst contact = new gcp.essentialcontacts.Contact(\"contact\", {\n parent: project.then(project =\u003e project.id),\n email: \"foo@bar.com\",\n languageTag: \"en-GB\",\n notificationCategorySubscriptions: [\"ALL\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ncontact = gcp.essentialcontacts.Contact(\"contact\",\n parent=project.id,\n email=\"foo@bar.com\",\n language_tag=\"en-GB\",\n notification_category_subscriptions=[\"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 project = Gcp.Organizations.GetProject.Invoke();\n\n var contact = new Gcp.EssentialContacts.Contact(\"contact\", new()\n {\n Parent = project.Apply(getProjectResult =\u003e getProjectResult.Id),\n Email = \"foo@bar.com\",\n LanguageTag = \"en-GB\",\n NotificationCategorySubscriptions = new[]\n {\n \"ALL\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/essentialcontacts\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = essentialcontacts.NewContact(ctx, \"contact\", \u0026essentialcontacts.ContactArgs{\n\t\t\tParent: pulumi.String(project.Id),\n\t\t\tEmail: pulumi.String(\"foo@bar.com\"),\n\t\t\tLanguageTag: pulumi.String(\"en-GB\"),\n\t\t\tNotificationCategorySubscriptions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.essentialcontacts.Contact;\nimport com.pulumi.gcp.essentialcontacts.ContactArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var contact = new Contact(\"contact\", ContactArgs.builder()\n .parent(project.applyValue(getProjectResult -\u003e getProjectResult.id()))\n .email(\"foo@bar.com\")\n .languageTag(\"en-GB\")\n .notificationCategorySubscriptions(\"ALL\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n contact:\n type: gcp:essentialcontacts:Contact\n properties:\n parent: ${project.id}\n email: foo@bar.com\n languageTag: en-GB\n notificationCategorySubscriptions:\n - ALL\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nContact can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Contact can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:essentialcontacts/contact:Contact default {{name}}\n```\n\n", + "description": "A contact that will receive notifications from Google Cloud.\n\n\nTo get more information about Contact, see:\n\n* [API documentation](https://cloud.google.com/resource-manager/docs/reference/essentialcontacts/rest/v1/projects.contacts)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/resource-manager/docs/managing-notification-contacts)\n\n\u003e **Warning:** If you are using User ADCs (Application Default Credentials) with this resource,\nyou must specify a `billing_project` and set `user_project_override` to true\nin the provider configuration. Otherwise the Essential Contacts API will return a 403 error.\nYour account must have the `serviceusage.services.use` permission on the\n`billing_project` you defined.\n\n## Example Usage\n\n### Essential Contact\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst contact = new gcp.essentialcontacts.Contact(\"contact\", {\n parent: project.then(project =\u003e project.id),\n email: \"foo@bar.com\",\n languageTag: \"en-GB\",\n notificationCategorySubscriptions: [\"ALL\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ncontact = gcp.essentialcontacts.Contact(\"contact\",\n parent=project.id,\n email=\"foo@bar.com\",\n language_tag=\"en-GB\",\n notification_category_subscriptions=[\"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 project = Gcp.Organizations.GetProject.Invoke();\n\n var contact = new Gcp.EssentialContacts.Contact(\"contact\", new()\n {\n Parent = project.Apply(getProjectResult =\u003e getProjectResult.Id),\n Email = \"foo@bar.com\",\n LanguageTag = \"en-GB\",\n NotificationCategorySubscriptions = new[]\n {\n \"ALL\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/essentialcontacts\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = essentialcontacts.NewContact(ctx, \"contact\", \u0026essentialcontacts.ContactArgs{\n\t\t\tParent: pulumi.String(project.Id),\n\t\t\tEmail: pulumi.String(\"foo@bar.com\"),\n\t\t\tLanguageTag: pulumi.String(\"en-GB\"),\n\t\t\tNotificationCategorySubscriptions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.essentialcontacts.Contact;\nimport com.pulumi.gcp.essentialcontacts.ContactArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var contact = new Contact(\"contact\", ContactArgs.builder()\n .parent(project.applyValue(getProjectResult -\u003e getProjectResult.id()))\n .email(\"foo@bar.com\")\n .languageTag(\"en-GB\")\n .notificationCategorySubscriptions(\"ALL\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n contact:\n type: gcp:essentialcontacts:Contact\n properties:\n parent: ${project.id}\n email: foo@bar.com\n languageTag: en-GB\n notificationCategorySubscriptions:\n - ALL\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nContact can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Contact can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:essentialcontacts/contact:Contact default {{name}}\n```\n\n", "properties": { "email": { "type": "string", @@ -196346,7 +196346,7 @@ } }, "gcp:essentialcontacts/documentAiWarehouseDocumentSchema:DocumentAiWarehouseDocumentSchema": { - "description": "A document schema is used to define document structure.\n\n\nTo get more information about DocumentSchema, see:\n\n* [API documentation](https://cloud.google.com/document-warehouse/docs/reference/rest/v1/projects.locations.documentSchemas)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/document-warehouse/docs/manage-document-schemas)\n\n## Example Usage\n\n### Document Ai Warehouse Document Schema Text\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst exampleText = new gcp.essentialcontacts.DocumentAiWarehouseDocumentSchema(\"example_text\", {\n projectNumber: project.then(project =\u003e project.number),\n displayName: \"test-property-text\",\n location: \"us\",\n documentIsFolder: false,\n propertyDefinitions: [{\n name: \"prop3\",\n displayName: \"propdisp3\",\n isRepeatable: false,\n isFilterable: true,\n isSearchable: true,\n isMetadata: false,\n isRequired: false,\n retrievalImportance: \"HIGHEST\",\n schemaSources: [{\n name: \"dummy_source\",\n processorType: \"dummy_processor\",\n }],\n textTypeOptions: {},\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample_text = gcp.essentialcontacts.DocumentAiWarehouseDocumentSchema(\"example_text\",\n project_number=project.number,\n display_name=\"test-property-text\",\n location=\"us\",\n document_is_folder=False,\n property_definitions=[{\n \"name\": \"prop3\",\n \"display_name\": \"propdisp3\",\n \"is_repeatable\": False,\n \"is_filterable\": True,\n \"is_searchable\": True,\n \"is_metadata\": False,\n \"is_required\": False,\n \"retrieval_importance\": \"HIGHEST\",\n \"schema_sources\": [{\n \"name\": \"dummy_source\",\n \"processor_type\": \"dummy_processor\",\n }],\n \"text_type_options\": {},\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var exampleText = new Gcp.EssentialContacts.DocumentAiWarehouseDocumentSchema(\"example_text\", new()\n {\n ProjectNumber = project.Apply(getProjectResult =\u003e getProjectResult.Number),\n DisplayName = \"test-property-text\",\n Location = \"us\",\n DocumentIsFolder = false,\n PropertyDefinitions = new[]\n {\n new Gcp.EssentialContacts.Inputs.DocumentAiWarehouseDocumentSchemaPropertyDefinitionArgs\n {\n Name = \"prop3\",\n DisplayName = \"propdisp3\",\n IsRepeatable = false,\n IsFilterable = true,\n IsSearchable = true,\n IsMetadata = false,\n IsRequired = false,\n RetrievalImportance = \"HIGHEST\",\n SchemaSources = new[]\n {\n new Gcp.EssentialContacts.Inputs.DocumentAiWarehouseDocumentSchemaPropertyDefinitionSchemaSourceArgs\n {\n Name = \"dummy_source\",\n ProcessorType = \"dummy_processor\",\n },\n },\n TextTypeOptions = null,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/essentialcontacts\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = essentialcontacts.NewDocumentAiWarehouseDocumentSchema(ctx, \"example_text\", \u0026essentialcontacts.DocumentAiWarehouseDocumentSchemaArgs{\n\t\t\tProjectNumber: pulumi.String(project.Number),\n\t\t\tDisplayName: pulumi.String(\"test-property-text\"),\n\t\t\tLocation: pulumi.String(\"us\"),\n\t\t\tDocumentIsFolder: pulumi.Bool(false),\n\t\t\tPropertyDefinitions: essentialcontacts.DocumentAiWarehouseDocumentSchemaPropertyDefinitionArray{\n\t\t\t\t\u0026essentialcontacts.DocumentAiWarehouseDocumentSchemaPropertyDefinitionArgs{\n\t\t\t\t\tName: pulumi.String(\"prop3\"),\n\t\t\t\t\tDisplayName: pulumi.String(\"propdisp3\"),\n\t\t\t\t\tIsRepeatable: pulumi.Bool(false),\n\t\t\t\t\tIsFilterable: pulumi.Bool(true),\n\t\t\t\t\tIsSearchable: pulumi.Bool(true),\n\t\t\t\t\tIsMetadata: pulumi.Bool(false),\n\t\t\t\t\tIsRequired: pulumi.Bool(false),\n\t\t\t\t\tRetrievalImportance: pulumi.String(\"HIGHEST\"),\n\t\t\t\t\tSchemaSources: essentialcontacts.DocumentAiWarehouseDocumentSchemaPropertyDefinitionSchemaSourceArray{\n\t\t\t\t\t\t\u0026essentialcontacts.DocumentAiWarehouseDocumentSchemaPropertyDefinitionSchemaSourceArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"dummy_source\"),\n\t\t\t\t\t\t\tProcessorType: pulumi.String(\"dummy_processor\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tTextTypeOptions: nil,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.essentialcontacts.DocumentAiWarehouseDocumentSchema;\nimport com.pulumi.gcp.essentialcontacts.DocumentAiWarehouseDocumentSchemaArgs;\nimport com.pulumi.gcp.essentialcontacts.inputs.DocumentAiWarehouseDocumentSchemaPropertyDefinitionArgs;\nimport com.pulumi.gcp.essentialcontacts.inputs.DocumentAiWarehouseDocumentSchemaPropertyDefinitionTextTypeOptionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var exampleText = new DocumentAiWarehouseDocumentSchema(\"exampleText\", DocumentAiWarehouseDocumentSchemaArgs.builder()\n .projectNumber(project.applyValue(getProjectResult -\u003e getProjectResult.number()))\n .displayName(\"test-property-text\")\n .location(\"us\")\n .documentIsFolder(false)\n .propertyDefinitions(DocumentAiWarehouseDocumentSchemaPropertyDefinitionArgs.builder()\n .name(\"prop3\")\n .displayName(\"propdisp3\")\n .isRepeatable(false)\n .isFilterable(true)\n .isSearchable(true)\n .isMetadata(false)\n .isRequired(false)\n .retrievalImportance(\"HIGHEST\")\n .schemaSources(DocumentAiWarehouseDocumentSchemaPropertyDefinitionSchemaSourceArgs.builder()\n .name(\"dummy_source\")\n .processorType(\"dummy_processor\")\n .build())\n .textTypeOptions()\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleText:\n type: gcp:essentialcontacts:DocumentAiWarehouseDocumentSchema\n name: example_text\n properties:\n projectNumber: ${project.number}\n displayName: test-property-text\n location: us\n documentIsFolder: false\n propertyDefinitions:\n - name: prop3\n displayName: propdisp3\n isRepeatable: false\n isFilterable: true\n isSearchable: true\n isMetadata: false\n isRequired: false\n retrievalImportance: HIGHEST\n schemaSources:\n - name: dummy_source\n processorType: dummy_processor\n textTypeOptions: {}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDocumentSchema can be imported using any of these accepted formats:\n\n* `projects/{{project_number}}/locations/{{location}}/documentSchemas/{{name}}`\n\n* `{{project_number}}/{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, DocumentSchema can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:essentialcontacts/documentAiWarehouseDocumentSchema:DocumentAiWarehouseDocumentSchema default projects/{{project_number}}/locations/{{location}}/documentSchemas/{{name}}\n```\n\n```sh\n$ pulumi import gcp:essentialcontacts/documentAiWarehouseDocumentSchema:DocumentAiWarehouseDocumentSchema default {{project_number}}/{{location}}/{{name}}\n```\n\n", + "description": "A document schema is used to define document structure.\n\n\nTo get more information about DocumentSchema, see:\n\n* [API documentation](https://cloud.google.com/document-warehouse/docs/reference/rest/v1/projects.locations.documentSchemas)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/document-warehouse/docs/manage-document-schemas)\n\n## Example Usage\n\n### Document Ai Warehouse Document Schema Text\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst exampleText = new gcp.essentialcontacts.DocumentAiWarehouseDocumentSchema(\"example_text\", {\n projectNumber: project.then(project =\u003e project.number),\n displayName: \"test-property-text\",\n location: \"us\",\n documentIsFolder: false,\n propertyDefinitions: [{\n name: \"prop3\",\n displayName: \"propdisp3\",\n isRepeatable: false,\n isFilterable: true,\n isSearchable: true,\n isMetadata: false,\n isRequired: false,\n retrievalImportance: \"HIGHEST\",\n schemaSources: [{\n name: \"dummy_source\",\n processorType: \"dummy_processor\",\n }],\n textTypeOptions: {},\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample_text = gcp.essentialcontacts.DocumentAiWarehouseDocumentSchema(\"example_text\",\n project_number=project.number,\n display_name=\"test-property-text\",\n location=\"us\",\n document_is_folder=False,\n property_definitions=[{\n \"name\": \"prop3\",\n \"display_name\": \"propdisp3\",\n \"is_repeatable\": False,\n \"is_filterable\": True,\n \"is_searchable\": True,\n \"is_metadata\": False,\n \"is_required\": False,\n \"retrieval_importance\": \"HIGHEST\",\n \"schema_sources\": [{\n \"name\": \"dummy_source\",\n \"processor_type\": \"dummy_processor\",\n }],\n \"text_type_options\": {},\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var exampleText = new Gcp.EssentialContacts.DocumentAiWarehouseDocumentSchema(\"example_text\", new()\n {\n ProjectNumber = project.Apply(getProjectResult =\u003e getProjectResult.Number),\n DisplayName = \"test-property-text\",\n Location = \"us\",\n DocumentIsFolder = false,\n PropertyDefinitions = new[]\n {\n new Gcp.EssentialContacts.Inputs.DocumentAiWarehouseDocumentSchemaPropertyDefinitionArgs\n {\n Name = \"prop3\",\n DisplayName = \"propdisp3\",\n IsRepeatable = false,\n IsFilterable = true,\n IsSearchable = true,\n IsMetadata = false,\n IsRequired = false,\n RetrievalImportance = \"HIGHEST\",\n SchemaSources = new[]\n {\n new Gcp.EssentialContacts.Inputs.DocumentAiWarehouseDocumentSchemaPropertyDefinitionSchemaSourceArgs\n {\n Name = \"dummy_source\",\n ProcessorType = \"dummy_processor\",\n },\n },\n TextTypeOptions = null,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/essentialcontacts\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = essentialcontacts.NewDocumentAiWarehouseDocumentSchema(ctx, \"example_text\", \u0026essentialcontacts.DocumentAiWarehouseDocumentSchemaArgs{\n\t\t\tProjectNumber: pulumi.String(project.Number),\n\t\t\tDisplayName: pulumi.String(\"test-property-text\"),\n\t\t\tLocation: pulumi.String(\"us\"),\n\t\t\tDocumentIsFolder: pulumi.Bool(false),\n\t\t\tPropertyDefinitions: essentialcontacts.DocumentAiWarehouseDocumentSchemaPropertyDefinitionArray{\n\t\t\t\t\u0026essentialcontacts.DocumentAiWarehouseDocumentSchemaPropertyDefinitionArgs{\n\t\t\t\t\tName: pulumi.String(\"prop3\"),\n\t\t\t\t\tDisplayName: pulumi.String(\"propdisp3\"),\n\t\t\t\t\tIsRepeatable: pulumi.Bool(false),\n\t\t\t\t\tIsFilterable: pulumi.Bool(true),\n\t\t\t\t\tIsSearchable: pulumi.Bool(true),\n\t\t\t\t\tIsMetadata: pulumi.Bool(false),\n\t\t\t\t\tIsRequired: pulumi.Bool(false),\n\t\t\t\t\tRetrievalImportance: pulumi.String(\"HIGHEST\"),\n\t\t\t\t\tSchemaSources: essentialcontacts.DocumentAiWarehouseDocumentSchemaPropertyDefinitionSchemaSourceArray{\n\t\t\t\t\t\t\u0026essentialcontacts.DocumentAiWarehouseDocumentSchemaPropertyDefinitionSchemaSourceArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"dummy_source\"),\n\t\t\t\t\t\t\tProcessorType: pulumi.String(\"dummy_processor\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tTextTypeOptions: \u0026essentialcontacts.DocumentAiWarehouseDocumentSchemaPropertyDefinitionTextTypeOptionsArgs{},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.essentialcontacts.DocumentAiWarehouseDocumentSchema;\nimport com.pulumi.gcp.essentialcontacts.DocumentAiWarehouseDocumentSchemaArgs;\nimport com.pulumi.gcp.essentialcontacts.inputs.DocumentAiWarehouseDocumentSchemaPropertyDefinitionArgs;\nimport com.pulumi.gcp.essentialcontacts.inputs.DocumentAiWarehouseDocumentSchemaPropertyDefinitionTextTypeOptionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var exampleText = new DocumentAiWarehouseDocumentSchema(\"exampleText\", DocumentAiWarehouseDocumentSchemaArgs.builder()\n .projectNumber(project.applyValue(getProjectResult -\u003e getProjectResult.number()))\n .displayName(\"test-property-text\")\n .location(\"us\")\n .documentIsFolder(false)\n .propertyDefinitions(DocumentAiWarehouseDocumentSchemaPropertyDefinitionArgs.builder()\n .name(\"prop3\")\n .displayName(\"propdisp3\")\n .isRepeatable(false)\n .isFilterable(true)\n .isSearchable(true)\n .isMetadata(false)\n .isRequired(false)\n .retrievalImportance(\"HIGHEST\")\n .schemaSources(DocumentAiWarehouseDocumentSchemaPropertyDefinitionSchemaSourceArgs.builder()\n .name(\"dummy_source\")\n .processorType(\"dummy_processor\")\n .build())\n .textTypeOptions()\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleText:\n type: gcp:essentialcontacts:DocumentAiWarehouseDocumentSchema\n name: example_text\n properties:\n projectNumber: ${project.number}\n displayName: test-property-text\n location: us\n documentIsFolder: false\n propertyDefinitions:\n - name: prop3\n displayName: propdisp3\n isRepeatable: false\n isFilterable: true\n isSearchable: true\n isMetadata: false\n isRequired: false\n retrievalImportance: HIGHEST\n schemaSources:\n - name: dummy_source\n processorType: dummy_processor\n textTypeOptions: {}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDocumentSchema can be imported using any of these accepted formats:\n\n* `projects/{{project_number}}/locations/{{location}}/documentSchemas/{{name}}`\n\n* `{{project_number}}/{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, DocumentSchema can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:essentialcontacts/documentAiWarehouseDocumentSchema:DocumentAiWarehouseDocumentSchema default projects/{{project_number}}/locations/{{location}}/documentSchemas/{{name}}\n```\n\n```sh\n$ pulumi import gcp:essentialcontacts/documentAiWarehouseDocumentSchema:DocumentAiWarehouseDocumentSchema default {{project_number}}/{{location}}/{{name}}\n```\n\n", "properties": { "displayName": { "type": "string", @@ -196459,7 +196459,7 @@ } }, "gcp:essentialcontacts/documentAiWarehouseLocation:DocumentAiWarehouseLocation": { - "description": "A location is used to initialize a project.\n\n\nTo get more information about Location, see:\n\n* [API documentation](https://cloud.google.com/document-warehouse/docs/reference/rest/v1/projects.locations)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/document-warehouse/docs/overview)\n\n## Example Usage\n\n### Document Ai Warehouse Location\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example = new gcp.essentialcontacts.DocumentAiWarehouseLocation(\"example\", {\n location: \"us\",\n projectNumber: project.then(project =\u003e project.number),\n accessControlMode: \"ACL_MODE_DOCUMENT_LEVEL_ACCESS_CONTROL_GCI\",\n databaseType: \"DB_INFRA_SPANNER\",\n kmsKey: \"dummy_key\",\n documentCreatorDefaultRole: \"DOCUMENT_ADMIN\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample = gcp.essentialcontacts.DocumentAiWarehouseLocation(\"example\",\n location=\"us\",\n project_number=project.number,\n access_control_mode=\"ACL_MODE_DOCUMENT_LEVEL_ACCESS_CONTROL_GCI\",\n database_type=\"DB_INFRA_SPANNER\",\n kms_key=\"dummy_key\",\n document_creator_default_role=\"DOCUMENT_ADMIN\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var example = new Gcp.EssentialContacts.DocumentAiWarehouseLocation(\"example\", new()\n {\n Location = \"us\",\n ProjectNumber = project.Apply(getProjectResult =\u003e getProjectResult.Number),\n AccessControlMode = \"ACL_MODE_DOCUMENT_LEVEL_ACCESS_CONTROL_GCI\",\n DatabaseType = \"DB_INFRA_SPANNER\",\n KmsKey = \"dummy_key\",\n DocumentCreatorDefaultRole = \"DOCUMENT_ADMIN\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/essentialcontacts\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = essentialcontacts.NewDocumentAiWarehouseLocation(ctx, \"example\", \u0026essentialcontacts.DocumentAiWarehouseLocationArgs{\n\t\t\tLocation: pulumi.String(\"us\"),\n\t\t\tProjectNumber: pulumi.String(project.Number),\n\t\t\tAccessControlMode: pulumi.String(\"ACL_MODE_DOCUMENT_LEVEL_ACCESS_CONTROL_GCI\"),\n\t\t\tDatabaseType: pulumi.String(\"DB_INFRA_SPANNER\"),\n\t\t\tKmsKey: pulumi.String(\"dummy_key\"),\n\t\t\tDocumentCreatorDefaultRole: pulumi.String(\"DOCUMENT_ADMIN\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.essentialcontacts.DocumentAiWarehouseLocation;\nimport com.pulumi.gcp.essentialcontacts.DocumentAiWarehouseLocationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var example = new DocumentAiWarehouseLocation(\"example\", DocumentAiWarehouseLocationArgs.builder()\n .location(\"us\")\n .projectNumber(project.applyValue(getProjectResult -\u003e getProjectResult.number()))\n .accessControlMode(\"ACL_MODE_DOCUMENT_LEVEL_ACCESS_CONTROL_GCI\")\n .databaseType(\"DB_INFRA_SPANNER\")\n .kmsKey(\"dummy_key\")\n .documentCreatorDefaultRole(\"DOCUMENT_ADMIN\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:essentialcontacts:DocumentAiWarehouseLocation\n properties:\n location: us\n projectNumber: ${project.number}\n accessControlMode: ACL_MODE_DOCUMENT_LEVEL_ACCESS_CONTROL_GCI\n databaseType: DB_INFRA_SPANNER\n kmsKey: dummy_key\n documentCreatorDefaultRole: DOCUMENT_ADMIN\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource does not support import.\n\n", + "description": "A location is used to initialize a project.\n\n\nTo get more information about Location, see:\n\n* [API documentation](https://cloud.google.com/document-warehouse/docs/reference/rest/v1/projects.locations)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/document-warehouse/docs/overview)\n\n## Example Usage\n\n### Document Ai Warehouse Location\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example = new gcp.essentialcontacts.DocumentAiWarehouseLocation(\"example\", {\n location: \"us\",\n projectNumber: project.then(project =\u003e project.number),\n accessControlMode: \"ACL_MODE_DOCUMENT_LEVEL_ACCESS_CONTROL_GCI\",\n databaseType: \"DB_INFRA_SPANNER\",\n kmsKey: \"dummy_key\",\n documentCreatorDefaultRole: \"DOCUMENT_ADMIN\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample = gcp.essentialcontacts.DocumentAiWarehouseLocation(\"example\",\n location=\"us\",\n project_number=project.number,\n access_control_mode=\"ACL_MODE_DOCUMENT_LEVEL_ACCESS_CONTROL_GCI\",\n database_type=\"DB_INFRA_SPANNER\",\n kms_key=\"dummy_key\",\n document_creator_default_role=\"DOCUMENT_ADMIN\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var example = new Gcp.EssentialContacts.DocumentAiWarehouseLocation(\"example\", new()\n {\n Location = \"us\",\n ProjectNumber = project.Apply(getProjectResult =\u003e getProjectResult.Number),\n AccessControlMode = \"ACL_MODE_DOCUMENT_LEVEL_ACCESS_CONTROL_GCI\",\n DatabaseType = \"DB_INFRA_SPANNER\",\n KmsKey = \"dummy_key\",\n DocumentCreatorDefaultRole = \"DOCUMENT_ADMIN\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/essentialcontacts\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = essentialcontacts.NewDocumentAiWarehouseLocation(ctx, \"example\", \u0026essentialcontacts.DocumentAiWarehouseLocationArgs{\n\t\t\tLocation: pulumi.String(\"us\"),\n\t\t\tProjectNumber: pulumi.String(project.Number),\n\t\t\tAccessControlMode: pulumi.String(\"ACL_MODE_DOCUMENT_LEVEL_ACCESS_CONTROL_GCI\"),\n\t\t\tDatabaseType: pulumi.String(\"DB_INFRA_SPANNER\"),\n\t\t\tKmsKey: pulumi.String(\"dummy_key\"),\n\t\t\tDocumentCreatorDefaultRole: pulumi.String(\"DOCUMENT_ADMIN\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.essentialcontacts.DocumentAiWarehouseLocation;\nimport com.pulumi.gcp.essentialcontacts.DocumentAiWarehouseLocationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var example = new DocumentAiWarehouseLocation(\"example\", DocumentAiWarehouseLocationArgs.builder()\n .location(\"us\")\n .projectNumber(project.applyValue(getProjectResult -\u003e getProjectResult.number()))\n .accessControlMode(\"ACL_MODE_DOCUMENT_LEVEL_ACCESS_CONTROL_GCI\")\n .databaseType(\"DB_INFRA_SPANNER\")\n .kmsKey(\"dummy_key\")\n .documentCreatorDefaultRole(\"DOCUMENT_ADMIN\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:essentialcontacts:DocumentAiWarehouseLocation\n properties:\n location: us\n projectNumber: ${project.number}\n accessControlMode: ACL_MODE_DOCUMENT_LEVEL_ACCESS_CONTROL_GCI\n databaseType: DB_INFRA_SPANNER\n kmsKey: dummy_key\n documentCreatorDefaultRole: DOCUMENT_ADMIN\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource does not support import.\n\n", "properties": { "accessControlMode": { "type": "string", @@ -198700,7 +198700,7 @@ } }, "gcp:firebase/extensionsInstance:ExtensionsInstance": { - "description": "## Example Usage\n\n### Firebase Extentions Instance Resize Image\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst images = new gcp.storage.Bucket(\"images\", {\n project: \"my-project-name\",\n name: \"bucket-id\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n forceDestroy: true,\n});\nconst resizeImage = new gcp.firebase.ExtensionsInstance(\"resize_image\", {\n project: \"my-project-name\",\n instanceId: \"storage-resize-images\",\n config: {\n extensionRef: \"firebase/storage-resize-images\",\n extensionVersion: \"0.2.2\",\n params: {\n DELETE_ORIGINAL_FILE: \"false\",\n MAKE_PUBLIC: \"false\",\n IMAGE_TYPE: \"false\",\n IS_ANIMATED: \"true\",\n FUNCTION_MEMORY: \"1024\",\n DO_BACKFILL: \"false\",\n IMG_SIZES: \"200x200\",\n IMG_BUCKET: images.name,\n },\n systemParams: {\n \"firebaseextensions.v1beta.function/location\": \"\",\n \"firebaseextensions.v1beta.function/maxInstances\": \"3000\",\n \"firebaseextensions.v1beta.function/minInstances\": \"0\",\n \"firebaseextensions.v1beta.function/vpcConnectorEgressSettings\": \"VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED\",\n },\n allowedEventTypes: [\"firebase.extensions.storage-resize-images.v1.onCompletion\"],\n eventarcChannel: \"projects/my-project-name/locations//channels/firebase\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nimages = gcp.storage.Bucket(\"images\",\n project=\"my-project-name\",\n name=\"bucket-id\",\n location=\"US\",\n uniform_bucket_level_access=True,\n force_destroy=True)\nresize_image = gcp.firebase.ExtensionsInstance(\"resize_image\",\n project=\"my-project-name\",\n instance_id=\"storage-resize-images\",\n config={\n \"extension_ref\": \"firebase/storage-resize-images\",\n \"extension_version\": \"0.2.2\",\n \"params\": {\n \"delet_e__origina_l__file\": \"false\",\n \"mak_e__public\": \"false\",\n \"imag_e__type\": \"false\",\n \"i_s__animated\": \"true\",\n \"functio_n__memory\": \"1024\",\n \"d_o__backfill\": \"false\",\n \"im_g__sizes\": \"200x200\",\n \"im_g__bucket\": images.name,\n },\n \"system_params\": {\n \"firebaseextensions_v1beta_function_location\": \"\",\n \"firebaseextensions_v1beta_function_max_instances\": \"3000\",\n \"firebaseextensions_v1beta_function_min_instances\": \"0\",\n \"firebaseextensions_v1beta_function_vpc_connector_egress_settings\": \"VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED\",\n },\n \"allowed_event_types\": [\"firebase.extensions.storage-resize-images.v1.onCompletion\"],\n \"eventarc_channel\": \"projects/my-project-name/locations//channels/firebase\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var images = new Gcp.Storage.Bucket(\"images\", new()\n {\n Project = \"my-project-name\",\n Name = \"bucket-id\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n ForceDestroy = true,\n });\n\n var resizeImage = new Gcp.Firebase.ExtensionsInstance(\"resize_image\", new()\n {\n Project = \"my-project-name\",\n InstanceId = \"storage-resize-images\",\n Config = new Gcp.Firebase.Inputs.ExtensionsInstanceConfigArgs\n {\n ExtensionRef = \"firebase/storage-resize-images\",\n ExtensionVersion = \"0.2.2\",\n Params = \n {\n { \"DELETE_ORIGINAL_FILE\", \"false\" },\n { \"MAKE_PUBLIC\", \"false\" },\n { \"IMAGE_TYPE\", \"false\" },\n { \"IS_ANIMATED\", \"true\" },\n { \"FUNCTION_MEMORY\", \"1024\" },\n { \"DO_BACKFILL\", \"false\" },\n { \"IMG_SIZES\", \"200x200\" },\n { \"IMG_BUCKET\", images.Name },\n },\n SystemParams = \n {\n { \"firebaseextensions.v1beta.function/location\", \"\" },\n { \"firebaseextensions.v1beta.function/maxInstances\", \"3000\" },\n { \"firebaseextensions.v1beta.function/minInstances\", \"0\" },\n { \"firebaseextensions.v1beta.function/vpcConnectorEgressSettings\", \"VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED\" },\n },\n AllowedEventTypes = new[]\n {\n \"firebase.extensions.storage-resize-images.v1.onCompletion\",\n },\n EventarcChannel = \"projects/my-project-name/locations//channels/firebase\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firebase\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\timages, err := storage.NewBucket(ctx, \"images\", \u0026storage.BucketArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"bucket-id\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t\tForceDestroy: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewExtensionsInstance(ctx, \"resize_image\", \u0026firebase.ExtensionsInstanceArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tInstanceId: pulumi.String(\"storage-resize-images\"),\n\t\t\tConfig: \u0026firebase.ExtensionsInstanceConfigArgs{\n\t\t\t\tExtensionRef: pulumi.String(\"firebase/storage-resize-images\"),\n\t\t\t\tExtensionVersion: pulumi.String(\"0.2.2\"),\n\t\t\t\tParams: pulumi.StringMap{\n\t\t\t\t\t\"DELETE_ORIGINAL_FILE\": pulumi.String(\"false\"),\n\t\t\t\t\t\"MAKE_PUBLIC\": pulumi.String(\"false\"),\n\t\t\t\t\t\"IMAGE_TYPE\": pulumi.String(\"false\"),\n\t\t\t\t\t\"IS_ANIMATED\": pulumi.String(\"true\"),\n\t\t\t\t\t\"FUNCTION_MEMORY\": pulumi.String(\"1024\"),\n\t\t\t\t\t\"DO_BACKFILL\": pulumi.String(\"false\"),\n\t\t\t\t\t\"IMG_SIZES\": pulumi.String(\"200x200\"),\n\t\t\t\t\t\"IMG_BUCKET\": images.Name,\n\t\t\t\t},\n\t\t\t\tSystemParams: pulumi.StringMap{\n\t\t\t\t\t\"firebaseextensions.v1beta.function/location\": pulumi.String(\"\"),\n\t\t\t\t\t\"firebaseextensions.v1beta.function/maxInstances\": pulumi.String(\"3000\"),\n\t\t\t\t\t\"firebaseextensions.v1beta.function/minInstances\": pulumi.String(\"0\"),\n\t\t\t\t\t\"firebaseextensions.v1beta.function/vpcConnectorEgressSettings\": pulumi.String(\"VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED\"),\n\t\t\t\t},\n\t\t\t\tAllowedEventTypes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"firebase.extensions.storage-resize-images.v1.onCompletion\"),\n\t\t\t\t},\n\t\t\t\tEventarcChannel: pulumi.String(\"projects/my-project-name/locations//channels/firebase\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.firebase.ExtensionsInstance;\nimport com.pulumi.gcp.firebase.ExtensionsInstanceArgs;\nimport com.pulumi.gcp.firebase.inputs.ExtensionsInstanceConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var images = new Bucket(\"images\", BucketArgs.builder()\n .project(\"my-project-name\")\n .name(\"bucket-id\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .forceDestroy(true)\n .build());\n\n var resizeImage = new ExtensionsInstance(\"resizeImage\", ExtensionsInstanceArgs.builder()\n .project(\"my-project-name\")\n .instanceId(\"storage-resize-images\")\n .config(ExtensionsInstanceConfigArgs.builder()\n .extensionRef(\"firebase/storage-resize-images\")\n .extensionVersion(\"0.2.2\")\n .params(Map.ofEntries(\n Map.entry(\"DELETE_ORIGINAL_FILE\", false),\n Map.entry(\"MAKE_PUBLIC\", false),\n Map.entry(\"IMAGE_TYPE\", false),\n Map.entry(\"IS_ANIMATED\", true),\n Map.entry(\"FUNCTION_MEMORY\", 1024),\n Map.entry(\"DO_BACKFILL\", false),\n Map.entry(\"IMG_SIZES\", \"200x200\"),\n Map.entry(\"IMG_BUCKET\", images.name())\n ))\n .systemParams(Map.ofEntries(\n Map.entry(\"firebaseextensions.v1beta.function/location\", \"\"),\n Map.entry(\"firebaseextensions.v1beta.function/maxInstances\", 3000),\n Map.entry(\"firebaseextensions.v1beta.function/minInstances\", 0),\n Map.entry(\"firebaseextensions.v1beta.function/vpcConnectorEgressSettings\", \"VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED\")\n ))\n .allowedEventTypes(\"firebase.extensions.storage-resize-images.v1.onCompletion\")\n .eventarcChannel(\"projects/my-project-name/locations//channels/firebase\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n images:\n type: gcp:storage:Bucket\n properties:\n project: my-project-name\n name: bucket-id\n location: US\n uniformBucketLevelAccess: true # Delete all objects when the bucket is deleted\n forceDestroy: true\n resizeImage:\n type: gcp:firebase:ExtensionsInstance\n name: resize_image\n properties:\n project: my-project-name\n instanceId: storage-resize-images\n config:\n extensionRef: firebase/storage-resize-images\n extensionVersion: 0.2.2\n params:\n DELETE_ORIGINAL_FILE: false\n MAKE_PUBLIC: false\n IMAGE_TYPE: false\n IS_ANIMATED: true\n FUNCTION_MEMORY: 1024\n DO_BACKFILL: false\n IMG_SIZES: 200x200\n IMG_BUCKET: ${images.name}\n systemParams:\n firebaseextensions.v1beta.function/location:\n firebaseextensions.v1beta.function/maxInstances: 3000\n firebaseextensions.v1beta.function/minInstances: 0\n firebaseextensions.v1beta.function/vpcConnectorEgressSettings: VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED\n allowedEventTypes:\n - firebase.extensions.storage-resize-images.v1.onCompletion\n eventarcChannel: projects/my-project-name/locations//channels/firebase\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/instances/{{instance_id}}`\n\n* `{{project}}/{{instance_id}}`\n\n* `{{instance_id}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firebase/extensionsInstance:ExtensionsInstance default projects/{{project}}/instances/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/extensionsInstance:ExtensionsInstance default {{project}}/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/extensionsInstance:ExtensionsInstance default {{instance_id}}\n```\n\n", + "description": "## Example Usage\n\n### Firebase Extentions Instance Resize Image\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst images = new gcp.storage.Bucket(\"images\", {\n project: \"my-project-name\",\n name: \"bucket-id\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n forceDestroy: true,\n});\nconst resizeImage = new gcp.firebase.ExtensionsInstance(\"resize_image\", {\n project: \"my-project-name\",\n instanceId: \"storage-resize-images\",\n config: {\n extensionRef: \"firebase/storage-resize-images\",\n extensionVersion: \"0.2.2\",\n params: {\n DELETE_ORIGINAL_FILE: \"false\",\n MAKE_PUBLIC: \"false\",\n IMAGE_TYPE: \"false\",\n IS_ANIMATED: \"true\",\n FUNCTION_MEMORY: \"1024\",\n DO_BACKFILL: \"false\",\n IMG_SIZES: \"200x200\",\n IMG_BUCKET: images.name,\n },\n systemParams: {\n \"firebaseextensions.v1beta.function/location\": \"\",\n \"firebaseextensions.v1beta.function/maxInstances\": \"3000\",\n \"firebaseextensions.v1beta.function/minInstances\": \"0\",\n \"firebaseextensions.v1beta.function/vpcConnectorEgressSettings\": \"VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED\",\n },\n allowedEventTypes: [\"firebase.extensions.storage-resize-images.v1.onCompletion\"],\n eventarcChannel: \"projects/my-project-name/locations//channels/firebase\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nimages = gcp.storage.Bucket(\"images\",\n project=\"my-project-name\",\n name=\"bucket-id\",\n location=\"US\",\n uniform_bucket_level_access=True,\n force_destroy=True)\nresize_image = gcp.firebase.ExtensionsInstance(\"resize_image\",\n project=\"my-project-name\",\n instance_id=\"storage-resize-images\",\n config={\n \"extension_ref\": \"firebase/storage-resize-images\",\n \"extension_version\": \"0.2.2\",\n \"params\": {\n \"DELETE_ORIGINAL_FILE\": \"false\",\n \"MAKE_PUBLIC\": \"false\",\n \"IMAGE_TYPE\": \"false\",\n \"IS_ANIMATED\": \"true\",\n \"FUNCTION_MEMORY\": \"1024\",\n \"DO_BACKFILL\": \"false\",\n \"IMG_SIZES\": \"200x200\",\n \"IMG_BUCKET\": images.name,\n },\n \"system_params\": {\n \"firebaseextensions.v1beta.function/location\": \"\",\n \"firebaseextensions.v1beta.function/maxInstances\": \"3000\",\n \"firebaseextensions.v1beta.function/minInstances\": \"0\",\n \"firebaseextensions.v1beta.function/vpcConnectorEgressSettings\": \"VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED\",\n },\n \"allowed_event_types\": [\"firebase.extensions.storage-resize-images.v1.onCompletion\"],\n \"eventarc_channel\": \"projects/my-project-name/locations//channels/firebase\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var images = new Gcp.Storage.Bucket(\"images\", new()\n {\n Project = \"my-project-name\",\n Name = \"bucket-id\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n ForceDestroy = true,\n });\n\n var resizeImage = new Gcp.Firebase.ExtensionsInstance(\"resize_image\", new()\n {\n Project = \"my-project-name\",\n InstanceId = \"storage-resize-images\",\n Config = new Gcp.Firebase.Inputs.ExtensionsInstanceConfigArgs\n {\n ExtensionRef = \"firebase/storage-resize-images\",\n ExtensionVersion = \"0.2.2\",\n Params = \n {\n { \"DELETE_ORIGINAL_FILE\", \"false\" },\n { \"MAKE_PUBLIC\", \"false\" },\n { \"IMAGE_TYPE\", \"false\" },\n { \"IS_ANIMATED\", \"true\" },\n { \"FUNCTION_MEMORY\", \"1024\" },\n { \"DO_BACKFILL\", \"false\" },\n { \"IMG_SIZES\", \"200x200\" },\n { \"IMG_BUCKET\", images.Name },\n },\n SystemParams = \n {\n { \"firebaseextensions.v1beta.function/location\", \"\" },\n { \"firebaseextensions.v1beta.function/maxInstances\", \"3000\" },\n { \"firebaseextensions.v1beta.function/minInstances\", \"0\" },\n { \"firebaseextensions.v1beta.function/vpcConnectorEgressSettings\", \"VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED\" },\n },\n AllowedEventTypes = new[]\n {\n \"firebase.extensions.storage-resize-images.v1.onCompletion\",\n },\n EventarcChannel = \"projects/my-project-name/locations//channels/firebase\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firebase\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\timages, err := storage.NewBucket(ctx, \"images\", \u0026storage.BucketArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"bucket-id\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t\tForceDestroy: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewExtensionsInstance(ctx, \"resize_image\", \u0026firebase.ExtensionsInstanceArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tInstanceId: pulumi.String(\"storage-resize-images\"),\n\t\t\tConfig: \u0026firebase.ExtensionsInstanceConfigArgs{\n\t\t\t\tExtensionRef: pulumi.String(\"firebase/storage-resize-images\"),\n\t\t\t\tExtensionVersion: pulumi.String(\"0.2.2\"),\n\t\t\t\tParams: pulumi.StringMap{\n\t\t\t\t\t\"DELETE_ORIGINAL_FILE\": pulumi.String(\"false\"),\n\t\t\t\t\t\"MAKE_PUBLIC\": pulumi.String(\"false\"),\n\t\t\t\t\t\"IMAGE_TYPE\": pulumi.String(\"false\"),\n\t\t\t\t\t\"IS_ANIMATED\": pulumi.String(\"true\"),\n\t\t\t\t\t\"FUNCTION_MEMORY\": pulumi.String(\"1024\"),\n\t\t\t\t\t\"DO_BACKFILL\": pulumi.String(\"false\"),\n\t\t\t\t\t\"IMG_SIZES\": pulumi.String(\"200x200\"),\n\t\t\t\t\t\"IMG_BUCKET\": images.Name,\n\t\t\t\t},\n\t\t\t\tSystemParams: pulumi.StringMap{\n\t\t\t\t\t\"firebaseextensions.v1beta.function/location\": pulumi.String(\"\"),\n\t\t\t\t\t\"firebaseextensions.v1beta.function/maxInstances\": pulumi.String(\"3000\"),\n\t\t\t\t\t\"firebaseextensions.v1beta.function/minInstances\": pulumi.String(\"0\"),\n\t\t\t\t\t\"firebaseextensions.v1beta.function/vpcConnectorEgressSettings\": pulumi.String(\"VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED\"),\n\t\t\t\t},\n\t\t\t\tAllowedEventTypes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"firebase.extensions.storage-resize-images.v1.onCompletion\"),\n\t\t\t\t},\n\t\t\t\tEventarcChannel: pulumi.String(\"projects/my-project-name/locations//channels/firebase\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.firebase.ExtensionsInstance;\nimport com.pulumi.gcp.firebase.ExtensionsInstanceArgs;\nimport com.pulumi.gcp.firebase.inputs.ExtensionsInstanceConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var images = new Bucket(\"images\", BucketArgs.builder()\n .project(\"my-project-name\")\n .name(\"bucket-id\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .forceDestroy(true)\n .build());\n\n var resizeImage = new ExtensionsInstance(\"resizeImage\", ExtensionsInstanceArgs.builder()\n .project(\"my-project-name\")\n .instanceId(\"storage-resize-images\")\n .config(ExtensionsInstanceConfigArgs.builder()\n .extensionRef(\"firebase/storage-resize-images\")\n .extensionVersion(\"0.2.2\")\n .params(Map.ofEntries(\n Map.entry(\"DELETE_ORIGINAL_FILE\", false),\n Map.entry(\"MAKE_PUBLIC\", false),\n Map.entry(\"IMAGE_TYPE\", false),\n Map.entry(\"IS_ANIMATED\", true),\n Map.entry(\"FUNCTION_MEMORY\", 1024),\n Map.entry(\"DO_BACKFILL\", false),\n Map.entry(\"IMG_SIZES\", \"200x200\"),\n Map.entry(\"IMG_BUCKET\", images.name())\n ))\n .systemParams(Map.ofEntries(\n Map.entry(\"firebaseextensions.v1beta.function/location\", \"\"),\n Map.entry(\"firebaseextensions.v1beta.function/maxInstances\", 3000),\n Map.entry(\"firebaseextensions.v1beta.function/minInstances\", 0),\n Map.entry(\"firebaseextensions.v1beta.function/vpcConnectorEgressSettings\", \"VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED\")\n ))\n .allowedEventTypes(\"firebase.extensions.storage-resize-images.v1.onCompletion\")\n .eventarcChannel(\"projects/my-project-name/locations//channels/firebase\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n images:\n type: gcp:storage:Bucket\n properties:\n project: my-project-name\n name: bucket-id\n location: US\n uniformBucketLevelAccess: true # Delete all objects when the bucket is deleted\n forceDestroy: true\n resizeImage:\n type: gcp:firebase:ExtensionsInstance\n name: resize_image\n properties:\n project: my-project-name\n instanceId: storage-resize-images\n config:\n extensionRef: firebase/storage-resize-images\n extensionVersion: 0.2.2\n params:\n DELETE_ORIGINAL_FILE: false\n MAKE_PUBLIC: false\n IMAGE_TYPE: false\n IS_ANIMATED: true\n FUNCTION_MEMORY: 1024\n DO_BACKFILL: false\n IMG_SIZES: 200x200\n IMG_BUCKET: ${images.name}\n systemParams:\n firebaseextensions.v1beta.function/location:\n firebaseextensions.v1beta.function/maxInstances: 3000\n firebaseextensions.v1beta.function/minInstances: 0\n firebaseextensions.v1beta.function/vpcConnectorEgressSettings: VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED\n allowedEventTypes:\n - firebase.extensions.storage-resize-images.v1.onCompletion\n eventarcChannel: projects/my-project-name/locations//channels/firebase\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/instances/{{instance_id}}`\n\n* `{{project}}/{{instance_id}}`\n\n* `{{instance_id}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firebase/extensionsInstance:ExtensionsInstance default projects/{{project}}/instances/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/extensionsInstance:ExtensionsInstance default {{project}}/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/extensionsInstance:ExtensionsInstance default {{instance_id}}\n```\n\n", "properties": { "config": { "$ref": "#/types/gcp:firebase/ExtensionsInstanceConfig:ExtensionsInstanceConfig", @@ -199875,7 +199875,7 @@ } }, "gcp:firestore/backupSchedule:BackupSchedule": { - "description": "A backup schedule for a Cloud Firestore Database.\nThis resource is owned by the database it is backing up, and is deleted along with the database.\nThe actual backups are not though.\n\n\nTo get more information about BackupSchedule, see:\n\n* [API documentation](https://cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.backupSchedules)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/firestore/docs/backups)\n\n\u003e **Warning:** This resource creates a Firestore Backup Schedule on a project that already has\na Firestore database.\nThis resource is owned by the database it is backing up, and is deleted along\nwith the database. The actual backups are not though.\n\n## Example Usage\n\n### Firestore Backup Schedule Daily\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst database = new gcp.firestore.Database(\"database\", {\n project: \"my-project-name\",\n name: \"database-id\",\n locationId: \"nam5\",\n type: \"FIRESTORE_NATIVE\",\n deleteProtectionState: \"DELETE_PROTECTION_ENABLED\",\n deletionPolicy: \"DELETE\",\n});\nconst daily_backup = new gcp.firestore.BackupSchedule(\"daily-backup\", {\n project: \"my-project-name\",\n database: database.name,\n retention: \"8467200s\",\n dailyRecurrence: {},\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndatabase = gcp.firestore.Database(\"database\",\n project=\"my-project-name\",\n name=\"database-id\",\n location_id=\"nam5\",\n type=\"FIRESTORE_NATIVE\",\n delete_protection_state=\"DELETE_PROTECTION_ENABLED\",\n deletion_policy=\"DELETE\")\ndaily_backup = gcp.firestore.BackupSchedule(\"daily-backup\",\n project=\"my-project-name\",\n database=database.name,\n retention=\"8467200s\",\n daily_recurrence={})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var database = new Gcp.Firestore.Database(\"database\", new()\n {\n Project = \"my-project-name\",\n Name = \"database-id\",\n LocationId = \"nam5\",\n Type = \"FIRESTORE_NATIVE\",\n DeleteProtectionState = \"DELETE_PROTECTION_ENABLED\",\n DeletionPolicy = \"DELETE\",\n });\n\n var daily_backup = new Gcp.Firestore.BackupSchedule(\"daily-backup\", new()\n {\n Project = \"my-project-name\",\n Database = database.Name,\n Retention = \"8467200s\",\n DailyRecurrence = null,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firestore\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdatabase, err := firestore.NewDatabase(ctx, \"database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"database-id\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"FIRESTORE_NATIVE\"),\n\t\t\tDeleteProtectionState: pulumi.String(\"DELETE_PROTECTION_ENABLED\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firestore.NewBackupSchedule(ctx, \"daily-backup\", \u0026firestore.BackupScheduleArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDatabase: database.Name,\n\t\t\tRetention: pulumi.String(\"8467200s\"),\n\t\t\tDailyRecurrence: nil,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\nimport com.pulumi.gcp.firestore.BackupSchedule;\nimport com.pulumi.gcp.firestore.BackupScheduleArgs;\nimport com.pulumi.gcp.firestore.inputs.BackupScheduleDailyRecurrenceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var database = new Database(\"database\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"database-id\")\n .locationId(\"nam5\")\n .type(\"FIRESTORE_NATIVE\")\n .deleteProtectionState(\"DELETE_PROTECTION_ENABLED\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n var daily_backup = new BackupSchedule(\"daily-backup\", BackupScheduleArgs.builder()\n .project(\"my-project-name\")\n .database(database.name())\n .retention(\"8467200s\")\n .dailyRecurrence()\n .build());\n\n }\n}\n```\n```yaml\nresources:\n database:\n type: gcp:firestore:Database\n properties:\n project: my-project-name\n name: database-id\n locationId: nam5\n type: FIRESTORE_NATIVE\n deleteProtectionState: DELETE_PROTECTION_ENABLED\n deletionPolicy: DELETE\n daily-backup:\n type: gcp:firestore:BackupSchedule\n properties:\n project: my-project-name\n database: ${database.name}\n retention: 8467200s\n dailyRecurrence: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firestore Backup Schedule Weekly\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst database = new gcp.firestore.Database(\"database\", {\n project: \"my-project-name\",\n name: \"database-id\",\n locationId: \"nam5\",\n type: \"FIRESTORE_NATIVE\",\n deleteProtectionState: \"DELETE_PROTECTION_ENABLED\",\n deletionPolicy: \"DELETE\",\n});\nconst weekly_backup = new gcp.firestore.BackupSchedule(\"weekly-backup\", {\n project: \"my-project-name\",\n database: database.name,\n retention: \"8467200s\",\n weeklyRecurrence: {\n day: \"SUNDAY\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndatabase = gcp.firestore.Database(\"database\",\n project=\"my-project-name\",\n name=\"database-id\",\n location_id=\"nam5\",\n type=\"FIRESTORE_NATIVE\",\n delete_protection_state=\"DELETE_PROTECTION_ENABLED\",\n deletion_policy=\"DELETE\")\nweekly_backup = gcp.firestore.BackupSchedule(\"weekly-backup\",\n project=\"my-project-name\",\n database=database.name,\n retention=\"8467200s\",\n weekly_recurrence={\n \"day\": \"SUNDAY\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var database = new Gcp.Firestore.Database(\"database\", new()\n {\n Project = \"my-project-name\",\n Name = \"database-id\",\n LocationId = \"nam5\",\n Type = \"FIRESTORE_NATIVE\",\n DeleteProtectionState = \"DELETE_PROTECTION_ENABLED\",\n DeletionPolicy = \"DELETE\",\n });\n\n var weekly_backup = new Gcp.Firestore.BackupSchedule(\"weekly-backup\", new()\n {\n Project = \"my-project-name\",\n Database = database.Name,\n Retention = \"8467200s\",\n WeeklyRecurrence = new Gcp.Firestore.Inputs.BackupScheduleWeeklyRecurrenceArgs\n {\n Day = \"SUNDAY\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firestore\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdatabase, err := firestore.NewDatabase(ctx, \"database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"database-id\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"FIRESTORE_NATIVE\"),\n\t\t\tDeleteProtectionState: pulumi.String(\"DELETE_PROTECTION_ENABLED\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firestore.NewBackupSchedule(ctx, \"weekly-backup\", \u0026firestore.BackupScheduleArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDatabase: database.Name,\n\t\t\tRetention: pulumi.String(\"8467200s\"),\n\t\t\tWeeklyRecurrence: \u0026firestore.BackupScheduleWeeklyRecurrenceArgs{\n\t\t\t\tDay: pulumi.String(\"SUNDAY\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\nimport com.pulumi.gcp.firestore.BackupSchedule;\nimport com.pulumi.gcp.firestore.BackupScheduleArgs;\nimport com.pulumi.gcp.firestore.inputs.BackupScheduleWeeklyRecurrenceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var database = new Database(\"database\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"database-id\")\n .locationId(\"nam5\")\n .type(\"FIRESTORE_NATIVE\")\n .deleteProtectionState(\"DELETE_PROTECTION_ENABLED\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n var weekly_backup = new BackupSchedule(\"weekly-backup\", BackupScheduleArgs.builder()\n .project(\"my-project-name\")\n .database(database.name())\n .retention(\"8467200s\")\n .weeklyRecurrence(BackupScheduleWeeklyRecurrenceArgs.builder()\n .day(\"SUNDAY\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n database:\n type: gcp:firestore:Database\n properties:\n project: my-project-name\n name: database-id\n locationId: nam5\n type: FIRESTORE_NATIVE\n deleteProtectionState: DELETE_PROTECTION_ENABLED\n deletionPolicy: DELETE\n weekly-backup:\n type: gcp:firestore:BackupSchedule\n properties:\n project: my-project-name\n database: ${database.name}\n retention: 8467200s\n weeklyRecurrence:\n day: SUNDAY\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBackupSchedule can be imported using any of these accepted formats:\n\n* `projects/{{project}}/databases/{{database}}/backupSchedules/{{name}}`\n\n* `{{project}}/{{database}}/{{name}}`\n\n* `{{database}}/{{name}}`\n\nWhen using the `pulumi import` command, BackupSchedule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firestore/backupSchedule:BackupSchedule default projects/{{project}}/databases/{{database}}/backupSchedules/{{name}}\n```\n\n```sh\n$ pulumi import gcp:firestore/backupSchedule:BackupSchedule default {{project}}/{{database}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:firestore/backupSchedule:BackupSchedule default {{database}}/{{name}}\n```\n\n", + "description": "A backup schedule for a Cloud Firestore Database.\nThis resource is owned by the database it is backing up, and is deleted along with the database.\nThe actual backups are not though.\n\n\nTo get more information about BackupSchedule, see:\n\n* [API documentation](https://cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.backupSchedules)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/firestore/docs/backups)\n\n\u003e **Warning:** This resource creates a Firestore Backup Schedule on a project that already has\na Firestore database.\nThis resource is owned by the database it is backing up, and is deleted along\nwith the database. The actual backups are not though.\n\n## Example Usage\n\n### Firestore Backup Schedule Daily\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst database = new gcp.firestore.Database(\"database\", {\n project: \"my-project-name\",\n name: \"database-id\",\n locationId: \"nam5\",\n type: \"FIRESTORE_NATIVE\",\n deleteProtectionState: \"DELETE_PROTECTION_ENABLED\",\n deletionPolicy: \"DELETE\",\n});\nconst daily_backup = new gcp.firestore.BackupSchedule(\"daily-backup\", {\n project: \"my-project-name\",\n database: database.name,\n retention: \"8467200s\",\n dailyRecurrence: {},\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndatabase = gcp.firestore.Database(\"database\",\n project=\"my-project-name\",\n name=\"database-id\",\n location_id=\"nam5\",\n type=\"FIRESTORE_NATIVE\",\n delete_protection_state=\"DELETE_PROTECTION_ENABLED\",\n deletion_policy=\"DELETE\")\ndaily_backup = gcp.firestore.BackupSchedule(\"daily-backup\",\n project=\"my-project-name\",\n database=database.name,\n retention=\"8467200s\",\n daily_recurrence={})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var database = new Gcp.Firestore.Database(\"database\", new()\n {\n Project = \"my-project-name\",\n Name = \"database-id\",\n LocationId = \"nam5\",\n Type = \"FIRESTORE_NATIVE\",\n DeleteProtectionState = \"DELETE_PROTECTION_ENABLED\",\n DeletionPolicy = \"DELETE\",\n });\n\n var daily_backup = new Gcp.Firestore.BackupSchedule(\"daily-backup\", new()\n {\n Project = \"my-project-name\",\n Database = database.Name,\n Retention = \"8467200s\",\n DailyRecurrence = null,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firestore\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdatabase, err := firestore.NewDatabase(ctx, \"database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"database-id\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"FIRESTORE_NATIVE\"),\n\t\t\tDeleteProtectionState: pulumi.String(\"DELETE_PROTECTION_ENABLED\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firestore.NewBackupSchedule(ctx, \"daily-backup\", \u0026firestore.BackupScheduleArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDatabase: database.Name,\n\t\t\tRetention: pulumi.String(\"8467200s\"),\n\t\t\tDailyRecurrence: \u0026firestore.BackupScheduleDailyRecurrenceArgs{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\nimport com.pulumi.gcp.firestore.BackupSchedule;\nimport com.pulumi.gcp.firestore.BackupScheduleArgs;\nimport com.pulumi.gcp.firestore.inputs.BackupScheduleDailyRecurrenceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var database = new Database(\"database\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"database-id\")\n .locationId(\"nam5\")\n .type(\"FIRESTORE_NATIVE\")\n .deleteProtectionState(\"DELETE_PROTECTION_ENABLED\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n var daily_backup = new BackupSchedule(\"daily-backup\", BackupScheduleArgs.builder()\n .project(\"my-project-name\")\n .database(database.name())\n .retention(\"8467200s\")\n .dailyRecurrence()\n .build());\n\n }\n}\n```\n```yaml\nresources:\n database:\n type: gcp:firestore:Database\n properties:\n project: my-project-name\n name: database-id\n locationId: nam5\n type: FIRESTORE_NATIVE\n deleteProtectionState: DELETE_PROTECTION_ENABLED\n deletionPolicy: DELETE\n daily-backup:\n type: gcp:firestore:BackupSchedule\n properties:\n project: my-project-name\n database: ${database.name}\n retention: 8467200s\n dailyRecurrence: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firestore Backup Schedule Weekly\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst database = new gcp.firestore.Database(\"database\", {\n project: \"my-project-name\",\n name: \"database-id\",\n locationId: \"nam5\",\n type: \"FIRESTORE_NATIVE\",\n deleteProtectionState: \"DELETE_PROTECTION_ENABLED\",\n deletionPolicy: \"DELETE\",\n});\nconst weekly_backup = new gcp.firestore.BackupSchedule(\"weekly-backup\", {\n project: \"my-project-name\",\n database: database.name,\n retention: \"8467200s\",\n weeklyRecurrence: {\n day: \"SUNDAY\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndatabase = gcp.firestore.Database(\"database\",\n project=\"my-project-name\",\n name=\"database-id\",\n location_id=\"nam5\",\n type=\"FIRESTORE_NATIVE\",\n delete_protection_state=\"DELETE_PROTECTION_ENABLED\",\n deletion_policy=\"DELETE\")\nweekly_backup = gcp.firestore.BackupSchedule(\"weekly-backup\",\n project=\"my-project-name\",\n database=database.name,\n retention=\"8467200s\",\n weekly_recurrence={\n \"day\": \"SUNDAY\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var database = new Gcp.Firestore.Database(\"database\", new()\n {\n Project = \"my-project-name\",\n Name = \"database-id\",\n LocationId = \"nam5\",\n Type = \"FIRESTORE_NATIVE\",\n DeleteProtectionState = \"DELETE_PROTECTION_ENABLED\",\n DeletionPolicy = \"DELETE\",\n });\n\n var weekly_backup = new Gcp.Firestore.BackupSchedule(\"weekly-backup\", new()\n {\n Project = \"my-project-name\",\n Database = database.Name,\n Retention = \"8467200s\",\n WeeklyRecurrence = new Gcp.Firestore.Inputs.BackupScheduleWeeklyRecurrenceArgs\n {\n Day = \"SUNDAY\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firestore\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdatabase, err := firestore.NewDatabase(ctx, \"database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"database-id\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"FIRESTORE_NATIVE\"),\n\t\t\tDeleteProtectionState: pulumi.String(\"DELETE_PROTECTION_ENABLED\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firestore.NewBackupSchedule(ctx, \"weekly-backup\", \u0026firestore.BackupScheduleArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDatabase: database.Name,\n\t\t\tRetention: pulumi.String(\"8467200s\"),\n\t\t\tWeeklyRecurrence: \u0026firestore.BackupScheduleWeeklyRecurrenceArgs{\n\t\t\t\tDay: pulumi.String(\"SUNDAY\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\nimport com.pulumi.gcp.firestore.BackupSchedule;\nimport com.pulumi.gcp.firestore.BackupScheduleArgs;\nimport com.pulumi.gcp.firestore.inputs.BackupScheduleWeeklyRecurrenceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var database = new Database(\"database\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"database-id\")\n .locationId(\"nam5\")\n .type(\"FIRESTORE_NATIVE\")\n .deleteProtectionState(\"DELETE_PROTECTION_ENABLED\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n var weekly_backup = new BackupSchedule(\"weekly-backup\", BackupScheduleArgs.builder()\n .project(\"my-project-name\")\n .database(database.name())\n .retention(\"8467200s\")\n .weeklyRecurrence(BackupScheduleWeeklyRecurrenceArgs.builder()\n .day(\"SUNDAY\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n database:\n type: gcp:firestore:Database\n properties:\n project: my-project-name\n name: database-id\n locationId: nam5\n type: FIRESTORE_NATIVE\n deleteProtectionState: DELETE_PROTECTION_ENABLED\n deletionPolicy: DELETE\n weekly-backup:\n type: gcp:firestore:BackupSchedule\n properties:\n project: my-project-name\n database: ${database.name}\n retention: 8467200s\n weeklyRecurrence:\n day: SUNDAY\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBackupSchedule can be imported using any of these accepted formats:\n\n* `projects/{{project}}/databases/{{database}}/backupSchedules/{{name}}`\n\n* `{{project}}/{{database}}/{{name}}`\n\n* `{{database}}/{{name}}`\n\nWhen using the `pulumi import` command, BackupSchedule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firestore/backupSchedule:BackupSchedule default projects/{{project}}/databases/{{database}}/backupSchedules/{{name}}\n```\n\n```sh\n$ pulumi import gcp:firestore/backupSchedule:BackupSchedule default {{project}}/{{database}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:firestore/backupSchedule:BackupSchedule default {{database}}/{{name}}\n```\n\n", "properties": { "dailyRecurrence": { "$ref": "#/types/gcp:firestore/BackupScheduleDailyRecurrence:BackupScheduleDailyRecurrence", @@ -199972,7 +199972,7 @@ } }, "gcp:firestore/database:Database": { - "description": "A Cloud Firestore Database.\n\nIf you wish to use Firestore with App Engine, use the\n`gcp.appengine.Application`\nresource instead. If you were previously using the `gcp.appengine.Application` resource exclusively for managing a Firestore database\nand would like to use the `gcp.firestore.Database` resource instead, please follow the instructions\n[here](https://cloud.google.com/firestore/docs/app-engine-requirement).\n\n\nTo get more information about Database, see:\n\n* [API documentation](https://cloud.google.com/firestore/docs/reference/rest/v1/projects.databases)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/firestore/docs/)\n\n## Example Usage\n\n### Firestore Default Database\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst database = new gcp.firestore.Database(\"database\", {\n project: \"my-project-name\",\n name: \"(default)\",\n locationId: \"nam5\",\n type: \"FIRESTORE_NATIVE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndatabase = gcp.firestore.Database(\"database\",\n project=\"my-project-name\",\n name=\"(default)\",\n location_id=\"nam5\",\n type=\"FIRESTORE_NATIVE\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var database = new Gcp.Firestore.Database(\"database\", new()\n {\n Project = \"my-project-name\",\n Name = \"(default)\",\n LocationId = \"nam5\",\n Type = \"FIRESTORE_NATIVE\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firestore\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := firestore.NewDatabase(ctx, \"database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"(default)\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"FIRESTORE_NATIVE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var database = new Database(\"database\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"(default)\")\n .locationId(\"nam5\")\n .type(\"FIRESTORE_NATIVE\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n database:\n type: gcp:firestore:Database\n properties:\n project: my-project-name\n name: (default)\n locationId: nam5\n type: FIRESTORE_NATIVE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firestore Database\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst database = new gcp.firestore.Database(\"database\", {\n project: \"my-project-name\",\n name: \"database-id\",\n locationId: \"nam5\",\n type: \"FIRESTORE_NATIVE\",\n concurrencyMode: \"OPTIMISTIC\",\n appEngineIntegrationMode: \"DISABLED\",\n pointInTimeRecoveryEnablement: \"POINT_IN_TIME_RECOVERY_ENABLED\",\n deleteProtectionState: \"DELETE_PROTECTION_ENABLED\",\n deletionPolicy: \"DELETE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndatabase = gcp.firestore.Database(\"database\",\n project=\"my-project-name\",\n name=\"database-id\",\n location_id=\"nam5\",\n type=\"FIRESTORE_NATIVE\",\n concurrency_mode=\"OPTIMISTIC\",\n app_engine_integration_mode=\"DISABLED\",\n point_in_time_recovery_enablement=\"POINT_IN_TIME_RECOVERY_ENABLED\",\n delete_protection_state=\"DELETE_PROTECTION_ENABLED\",\n deletion_policy=\"DELETE\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var database = new Gcp.Firestore.Database(\"database\", new()\n {\n Project = \"my-project-name\",\n Name = \"database-id\",\n LocationId = \"nam5\",\n Type = \"FIRESTORE_NATIVE\",\n ConcurrencyMode = \"OPTIMISTIC\",\n AppEngineIntegrationMode = \"DISABLED\",\n PointInTimeRecoveryEnablement = \"POINT_IN_TIME_RECOVERY_ENABLED\",\n DeleteProtectionState = \"DELETE_PROTECTION_ENABLED\",\n DeletionPolicy = \"DELETE\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firestore\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := firestore.NewDatabase(ctx, \"database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"database-id\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"FIRESTORE_NATIVE\"),\n\t\t\tConcurrencyMode: pulumi.String(\"OPTIMISTIC\"),\n\t\t\tAppEngineIntegrationMode: pulumi.String(\"DISABLED\"),\n\t\t\tPointInTimeRecoveryEnablement: pulumi.String(\"POINT_IN_TIME_RECOVERY_ENABLED\"),\n\t\t\tDeleteProtectionState: pulumi.String(\"DELETE_PROTECTION_ENABLED\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var database = new Database(\"database\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"database-id\")\n .locationId(\"nam5\")\n .type(\"FIRESTORE_NATIVE\")\n .concurrencyMode(\"OPTIMISTIC\")\n .appEngineIntegrationMode(\"DISABLED\")\n .pointInTimeRecoveryEnablement(\"POINT_IN_TIME_RECOVERY_ENABLED\")\n .deleteProtectionState(\"DELETE_PROTECTION_ENABLED\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n database:\n type: gcp:firestore:Database\n properties:\n project: my-project-name\n name: database-id\n locationId: nam5\n type: FIRESTORE_NATIVE\n concurrencyMode: OPTIMISTIC\n appEngineIntegrationMode: DISABLED\n pointInTimeRecoveryEnablement: POINT_IN_TIME_RECOVERY_ENABLED\n deleteProtectionState: DELETE_PROTECTION_ENABLED\n deletionPolicy: DELETE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firestore Cmek Database\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"kms-key-ring\",\n location: \"us\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"kms-key\",\n keyRing: keyRing.id,\n purpose: \"ENCRYPT_DECRYPT\",\n});\nconst firestoreCmekKeyuser = new gcp.kms.CryptoKeyIAMBinding(\"firestore_cmek_keyuser\", {\n cryptoKeyId: cryptoKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members: [project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-firestore.iam.gserviceaccount.com`)],\n});\nconst database = new gcp.firestore.Database(\"database\", {\n project: \"my-project-name\",\n name: \"cmek-database-id\",\n locationId: \"nam5\",\n type: \"FIRESTORE_NATIVE\",\n concurrencyMode: \"OPTIMISTIC\",\n appEngineIntegrationMode: \"DISABLED\",\n pointInTimeRecoveryEnablement: \"POINT_IN_TIME_RECOVERY_ENABLED\",\n deleteProtectionState: \"DELETE_PROTECTION_ENABLED\",\n deletionPolicy: \"DELETE\",\n cmekConfig: {\n kmsKeyName: cryptoKey.id,\n },\n}, {\n dependsOn: [firestoreCmekKeyuser],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"kms-key-ring\",\n location=\"us\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"kms-key\",\n key_ring=key_ring.id,\n purpose=\"ENCRYPT_DECRYPT\")\nfirestore_cmek_keyuser = gcp.kms.CryptoKeyIAMBinding(\"firestore_cmek_keyuser\",\n crypto_key_id=crypto_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members=[f\"serviceAccount:service-{project.number}@gcp-sa-firestore.iam.gserviceaccount.com\"])\ndatabase = gcp.firestore.Database(\"database\",\n project=\"my-project-name\",\n name=\"cmek-database-id\",\n location_id=\"nam5\",\n type=\"FIRESTORE_NATIVE\",\n concurrency_mode=\"OPTIMISTIC\",\n app_engine_integration_mode=\"DISABLED\",\n point_in_time_recovery_enablement=\"POINT_IN_TIME_RECOVERY_ENABLED\",\n delete_protection_state=\"DELETE_PROTECTION_ENABLED\",\n deletion_policy=\"DELETE\",\n cmek_config={\n \"kms_key_name\": crypto_key.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[firestore_cmek_keyuser]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"kms-key-ring\",\n Location = \"us\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"kms-key\",\n KeyRing = keyRing.Id,\n Purpose = \"ENCRYPT_DECRYPT\",\n });\n\n var firestoreCmekKeyuser = new Gcp.Kms.CryptoKeyIAMBinding(\"firestore_cmek_keyuser\", new()\n {\n CryptoKeyId = cryptoKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Members = new[]\n {\n $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-firestore.iam.gserviceaccount.com\",\n },\n });\n\n var database = new Gcp.Firestore.Database(\"database\", new()\n {\n Project = \"my-project-name\",\n Name = \"cmek-database-id\",\n LocationId = \"nam5\",\n Type = \"FIRESTORE_NATIVE\",\n ConcurrencyMode = \"OPTIMISTIC\",\n AppEngineIntegrationMode = \"DISABLED\",\n PointInTimeRecoveryEnablement = \"POINT_IN_TIME_RECOVERY_ENABLED\",\n DeleteProtectionState = \"DELETE_PROTECTION_ENABLED\",\n DeletionPolicy = \"DELETE\",\n CmekConfig = new Gcp.Firestore.Inputs.DatabaseCmekConfigArgs\n {\n KmsKeyName = cryptoKey.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n firestoreCmekKeyuser,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firestore\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"kms-key-ring\"),\n\t\t\tLocation: pulumi.String(\"us\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"kms-key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t\tPurpose: pulumi.String(\"ENCRYPT_DECRYPT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfirestoreCmekKeyuser, err := kms.NewCryptoKeyIAMBinding(ctx, \"firestore_cmek_keyuser\", \u0026kms.CryptoKeyIAMBindingArgs{\n\t\t\tCryptoKeyId: cryptoKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-firestore.iam.gserviceaccount.com\", project.Number),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firestore.NewDatabase(ctx, \"database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"cmek-database-id\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"FIRESTORE_NATIVE\"),\n\t\t\tConcurrencyMode: pulumi.String(\"OPTIMISTIC\"),\n\t\t\tAppEngineIntegrationMode: pulumi.String(\"DISABLED\"),\n\t\t\tPointInTimeRecoveryEnablement: pulumi.String(\"POINT_IN_TIME_RECOVERY_ENABLED\"),\n\t\t\tDeleteProtectionState: pulumi.String(\"DELETE_PROTECTION_ENABLED\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t\tCmekConfig: \u0026firestore.DatabaseCmekConfigArgs{\n\t\t\t\tKmsKeyName: cryptoKey.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfirestoreCmekKeyuser,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBinding;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBindingArgs;\nimport com.pulumi.gcp.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\nimport com.pulumi.gcp.firestore.inputs.DatabaseCmekConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"kms-key-ring\")\n .location(\"us\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"kms-key\")\n .keyRing(keyRing.id())\n .purpose(\"ENCRYPT_DECRYPT\")\n .build());\n\n var firestoreCmekKeyuser = new CryptoKeyIAMBinding(\"firestoreCmekKeyuser\", CryptoKeyIAMBindingArgs.builder()\n .cryptoKeyId(cryptoKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .members(String.format(\"serviceAccount:service-%s@gcp-sa-firestore.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var database = new Database(\"database\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"cmek-database-id\")\n .locationId(\"nam5\")\n .type(\"FIRESTORE_NATIVE\")\n .concurrencyMode(\"OPTIMISTIC\")\n .appEngineIntegrationMode(\"DISABLED\")\n .pointInTimeRecoveryEnablement(\"POINT_IN_TIME_RECOVERY_ENABLED\")\n .deleteProtectionState(\"DELETE_PROTECTION_ENABLED\")\n .deletionPolicy(\"DELETE\")\n .cmekConfig(DatabaseCmekConfigArgs.builder()\n .kmsKeyName(cryptoKey.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(firestoreCmekKeyuser)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n database:\n type: gcp:firestore:Database\n properties:\n project: my-project-name\n name: cmek-database-id\n locationId: nam5\n type: FIRESTORE_NATIVE\n concurrencyMode: OPTIMISTIC\n appEngineIntegrationMode: DISABLED\n pointInTimeRecoveryEnablement: POINT_IN_TIME_RECOVERY_ENABLED\n deleteProtectionState: DELETE_PROTECTION_ENABLED\n deletionPolicy: DELETE\n cmekConfig:\n kmsKeyName: ${cryptoKey.id}\n options:\n dependson:\n - ${firestoreCmekKeyuser}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: kms-key\n keyRing: ${keyRing.id}\n purpose: ENCRYPT_DECRYPT\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: kms-key-ring\n location: us\n firestoreCmekKeyuser:\n type: gcp:kms:CryptoKeyIAMBinding\n name: firestore_cmek_keyuser\n properties:\n cryptoKeyId: ${cryptoKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n members:\n - serviceAccount:service-${project.number}@gcp-sa-firestore.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firestore Default Database In Datastore Mode\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst datastoreModeDatabase = new gcp.firestore.Database(\"datastore_mode_database\", {\n project: \"my-project-name\",\n name: \"(default)\",\n locationId: \"nam5\",\n type: \"DATASTORE_MODE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndatastore_mode_database = gcp.firestore.Database(\"datastore_mode_database\",\n project=\"my-project-name\",\n name=\"(default)\",\n location_id=\"nam5\",\n type=\"DATASTORE_MODE\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var datastoreModeDatabase = new Gcp.Firestore.Database(\"datastore_mode_database\", new()\n {\n Project = \"my-project-name\",\n Name = \"(default)\",\n LocationId = \"nam5\",\n Type = \"DATASTORE_MODE\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firestore\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := firestore.NewDatabase(ctx, \"datastore_mode_database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"(default)\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"DATASTORE_MODE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var datastoreModeDatabase = new Database(\"datastoreModeDatabase\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"(default)\")\n .locationId(\"nam5\")\n .type(\"DATASTORE_MODE\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n datastoreModeDatabase:\n type: gcp:firestore:Database\n name: datastore_mode_database\n properties:\n project: my-project-name\n name: (default)\n locationId: nam5\n type: DATASTORE_MODE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firestore Database In Datastore Mode\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst datastoreModeDatabase = new gcp.firestore.Database(\"datastore_mode_database\", {\n project: \"my-project-name\",\n name: \"database-id\",\n locationId: \"nam5\",\n type: \"DATASTORE_MODE\",\n concurrencyMode: \"OPTIMISTIC\",\n appEngineIntegrationMode: \"DISABLED\",\n pointInTimeRecoveryEnablement: \"POINT_IN_TIME_RECOVERY_ENABLED\",\n deleteProtectionState: \"DELETE_PROTECTION_ENABLED\",\n deletionPolicy: \"DELETE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndatastore_mode_database = gcp.firestore.Database(\"datastore_mode_database\",\n project=\"my-project-name\",\n name=\"database-id\",\n location_id=\"nam5\",\n type=\"DATASTORE_MODE\",\n concurrency_mode=\"OPTIMISTIC\",\n app_engine_integration_mode=\"DISABLED\",\n point_in_time_recovery_enablement=\"POINT_IN_TIME_RECOVERY_ENABLED\",\n delete_protection_state=\"DELETE_PROTECTION_ENABLED\",\n deletion_policy=\"DELETE\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var datastoreModeDatabase = new Gcp.Firestore.Database(\"datastore_mode_database\", new()\n {\n Project = \"my-project-name\",\n Name = \"database-id\",\n LocationId = \"nam5\",\n Type = \"DATASTORE_MODE\",\n ConcurrencyMode = \"OPTIMISTIC\",\n AppEngineIntegrationMode = \"DISABLED\",\n PointInTimeRecoveryEnablement = \"POINT_IN_TIME_RECOVERY_ENABLED\",\n DeleteProtectionState = \"DELETE_PROTECTION_ENABLED\",\n DeletionPolicy = \"DELETE\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firestore\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := firestore.NewDatabase(ctx, \"datastore_mode_database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"database-id\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"DATASTORE_MODE\"),\n\t\t\tConcurrencyMode: pulumi.String(\"OPTIMISTIC\"),\n\t\t\tAppEngineIntegrationMode: pulumi.String(\"DISABLED\"),\n\t\t\tPointInTimeRecoveryEnablement: pulumi.String(\"POINT_IN_TIME_RECOVERY_ENABLED\"),\n\t\t\tDeleteProtectionState: pulumi.String(\"DELETE_PROTECTION_ENABLED\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var datastoreModeDatabase = new Database(\"datastoreModeDatabase\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"database-id\")\n .locationId(\"nam5\")\n .type(\"DATASTORE_MODE\")\n .concurrencyMode(\"OPTIMISTIC\")\n .appEngineIntegrationMode(\"DISABLED\")\n .pointInTimeRecoveryEnablement(\"POINT_IN_TIME_RECOVERY_ENABLED\")\n .deleteProtectionState(\"DELETE_PROTECTION_ENABLED\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n datastoreModeDatabase:\n type: gcp:firestore:Database\n name: datastore_mode_database\n properties:\n project: my-project-name\n name: database-id\n locationId: nam5\n type: DATASTORE_MODE\n concurrencyMode: OPTIMISTIC\n appEngineIntegrationMode: DISABLED\n pointInTimeRecoveryEnablement: POINT_IN_TIME_RECOVERY_ENABLED\n deleteProtectionState: DELETE_PROTECTION_ENABLED\n deletionPolicy: DELETE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firestore Cmek Database In Datastore Mode\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"kms-key-ring\",\n location: \"us\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"kms-key\",\n keyRing: keyRing.id,\n purpose: \"ENCRYPT_DECRYPT\",\n});\nconst firestoreCmekKeyuser = new gcp.kms.CryptoKeyIAMBinding(\"firestore_cmek_keyuser\", {\n cryptoKeyId: cryptoKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members: [project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-firestore.iam.gserviceaccount.com`)],\n});\nconst database = new gcp.firestore.Database(\"database\", {\n project: \"my-project-name\",\n name: \"cmek-database-id\",\n locationId: \"nam5\",\n type: \"DATASTORE_MODE\",\n concurrencyMode: \"OPTIMISTIC\",\n appEngineIntegrationMode: \"DISABLED\",\n pointInTimeRecoveryEnablement: \"POINT_IN_TIME_RECOVERY_ENABLED\",\n deleteProtectionState: \"DELETE_PROTECTION_ENABLED\",\n deletionPolicy: \"DELETE\",\n cmekConfig: {\n kmsKeyName: cryptoKey.id,\n },\n}, {\n dependsOn: [firestoreCmekKeyuser],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"kms-key-ring\",\n location=\"us\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"kms-key\",\n key_ring=key_ring.id,\n purpose=\"ENCRYPT_DECRYPT\")\nfirestore_cmek_keyuser = gcp.kms.CryptoKeyIAMBinding(\"firestore_cmek_keyuser\",\n crypto_key_id=crypto_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members=[f\"serviceAccount:service-{project.number}@gcp-sa-firestore.iam.gserviceaccount.com\"])\ndatabase = gcp.firestore.Database(\"database\",\n project=\"my-project-name\",\n name=\"cmek-database-id\",\n location_id=\"nam5\",\n type=\"DATASTORE_MODE\",\n concurrency_mode=\"OPTIMISTIC\",\n app_engine_integration_mode=\"DISABLED\",\n point_in_time_recovery_enablement=\"POINT_IN_TIME_RECOVERY_ENABLED\",\n delete_protection_state=\"DELETE_PROTECTION_ENABLED\",\n deletion_policy=\"DELETE\",\n cmek_config={\n \"kms_key_name\": crypto_key.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[firestore_cmek_keyuser]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"kms-key-ring\",\n Location = \"us\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"kms-key\",\n KeyRing = keyRing.Id,\n Purpose = \"ENCRYPT_DECRYPT\",\n });\n\n var firestoreCmekKeyuser = new Gcp.Kms.CryptoKeyIAMBinding(\"firestore_cmek_keyuser\", new()\n {\n CryptoKeyId = cryptoKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Members = new[]\n {\n $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-firestore.iam.gserviceaccount.com\",\n },\n });\n\n var database = new Gcp.Firestore.Database(\"database\", new()\n {\n Project = \"my-project-name\",\n Name = \"cmek-database-id\",\n LocationId = \"nam5\",\n Type = \"DATASTORE_MODE\",\n ConcurrencyMode = \"OPTIMISTIC\",\n AppEngineIntegrationMode = \"DISABLED\",\n PointInTimeRecoveryEnablement = \"POINT_IN_TIME_RECOVERY_ENABLED\",\n DeleteProtectionState = \"DELETE_PROTECTION_ENABLED\",\n DeletionPolicy = \"DELETE\",\n CmekConfig = new Gcp.Firestore.Inputs.DatabaseCmekConfigArgs\n {\n KmsKeyName = cryptoKey.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n firestoreCmekKeyuser,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firestore\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"kms-key-ring\"),\n\t\t\tLocation: pulumi.String(\"us\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"kms-key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t\tPurpose: pulumi.String(\"ENCRYPT_DECRYPT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfirestoreCmekKeyuser, err := kms.NewCryptoKeyIAMBinding(ctx, \"firestore_cmek_keyuser\", \u0026kms.CryptoKeyIAMBindingArgs{\n\t\t\tCryptoKeyId: cryptoKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-firestore.iam.gserviceaccount.com\", project.Number),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firestore.NewDatabase(ctx, \"database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"cmek-database-id\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"DATASTORE_MODE\"),\n\t\t\tConcurrencyMode: pulumi.String(\"OPTIMISTIC\"),\n\t\t\tAppEngineIntegrationMode: pulumi.String(\"DISABLED\"),\n\t\t\tPointInTimeRecoveryEnablement: pulumi.String(\"POINT_IN_TIME_RECOVERY_ENABLED\"),\n\t\t\tDeleteProtectionState: pulumi.String(\"DELETE_PROTECTION_ENABLED\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t\tCmekConfig: \u0026firestore.DatabaseCmekConfigArgs{\n\t\t\t\tKmsKeyName: cryptoKey.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfirestoreCmekKeyuser,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBinding;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBindingArgs;\nimport com.pulumi.gcp.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\nimport com.pulumi.gcp.firestore.inputs.DatabaseCmekConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"kms-key-ring\")\n .location(\"us\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"kms-key\")\n .keyRing(keyRing.id())\n .purpose(\"ENCRYPT_DECRYPT\")\n .build());\n\n var firestoreCmekKeyuser = new CryptoKeyIAMBinding(\"firestoreCmekKeyuser\", CryptoKeyIAMBindingArgs.builder()\n .cryptoKeyId(cryptoKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .members(String.format(\"serviceAccount:service-%s@gcp-sa-firestore.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var database = new Database(\"database\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"cmek-database-id\")\n .locationId(\"nam5\")\n .type(\"DATASTORE_MODE\")\n .concurrencyMode(\"OPTIMISTIC\")\n .appEngineIntegrationMode(\"DISABLED\")\n .pointInTimeRecoveryEnablement(\"POINT_IN_TIME_RECOVERY_ENABLED\")\n .deleteProtectionState(\"DELETE_PROTECTION_ENABLED\")\n .deletionPolicy(\"DELETE\")\n .cmekConfig(DatabaseCmekConfigArgs.builder()\n .kmsKeyName(cryptoKey.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(firestoreCmekKeyuser)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n database:\n type: gcp:firestore:Database\n properties:\n project: my-project-name\n name: cmek-database-id\n locationId: nam5\n type: DATASTORE_MODE\n concurrencyMode: OPTIMISTIC\n appEngineIntegrationMode: DISABLED\n pointInTimeRecoveryEnablement: POINT_IN_TIME_RECOVERY_ENABLED\n deleteProtectionState: DELETE_PROTECTION_ENABLED\n deletionPolicy: DELETE\n cmekConfig:\n kmsKeyName: ${cryptoKey.id}\n options:\n dependson:\n - ${firestoreCmekKeyuser}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: kms-key\n keyRing: ${keyRing.id}\n purpose: ENCRYPT_DECRYPT\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: kms-key-ring\n location: us\n firestoreCmekKeyuser:\n type: gcp:kms:CryptoKeyIAMBinding\n name: firestore_cmek_keyuser\n properties:\n cryptoKeyId: ${cryptoKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n members:\n - serviceAccount:service-${project.number}@gcp-sa-firestore.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDatabase can be imported using any of these accepted formats:\n\n* `projects/{{project}}/databases/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Database can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firestore/database:Database default projects/{{project}}/databases/{{name}}\n```\n\n```sh\n$ pulumi import gcp:firestore/database:Database default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:firestore/database:Database default {{name}}\n```\n\n", + "description": "A Cloud Firestore Database.\n\nIf you wish to use Firestore with App Engine, use the\n`gcp.appengine.Application`\nresource instead. If you were previously using the `gcp.appengine.Application` resource exclusively for managing a Firestore database\nand would like to use the `gcp.firestore.Database` resource instead, please follow the instructions\n[here](https://cloud.google.com/firestore/docs/app-engine-requirement).\n\n\nTo get more information about Database, see:\n\n* [API documentation](https://cloud.google.com/firestore/docs/reference/rest/v1/projects.databases)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/firestore/docs/)\n\n## Example Usage\n\n### Firestore Default Database\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst database = new gcp.firestore.Database(\"database\", {\n project: \"my-project-name\",\n name: \"(default)\",\n locationId: \"nam5\",\n type: \"FIRESTORE_NATIVE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndatabase = gcp.firestore.Database(\"database\",\n project=\"my-project-name\",\n name=\"(default)\",\n location_id=\"nam5\",\n type=\"FIRESTORE_NATIVE\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var database = new Gcp.Firestore.Database(\"database\", new()\n {\n Project = \"my-project-name\",\n Name = \"(default)\",\n LocationId = \"nam5\",\n Type = \"FIRESTORE_NATIVE\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firestore\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := firestore.NewDatabase(ctx, \"database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"(default)\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"FIRESTORE_NATIVE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var database = new Database(\"database\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"(default)\")\n .locationId(\"nam5\")\n .type(\"FIRESTORE_NATIVE\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n database:\n type: gcp:firestore:Database\n properties:\n project: my-project-name\n name: (default)\n locationId: nam5\n type: FIRESTORE_NATIVE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firestore Database\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst database = new gcp.firestore.Database(\"database\", {\n project: \"my-project-name\",\n name: \"database-id\",\n locationId: \"nam5\",\n type: \"FIRESTORE_NATIVE\",\n concurrencyMode: \"OPTIMISTIC\",\n appEngineIntegrationMode: \"DISABLED\",\n pointInTimeRecoveryEnablement: \"POINT_IN_TIME_RECOVERY_ENABLED\",\n deleteProtectionState: \"DELETE_PROTECTION_ENABLED\",\n deletionPolicy: \"DELETE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndatabase = gcp.firestore.Database(\"database\",\n project=\"my-project-name\",\n name=\"database-id\",\n location_id=\"nam5\",\n type=\"FIRESTORE_NATIVE\",\n concurrency_mode=\"OPTIMISTIC\",\n app_engine_integration_mode=\"DISABLED\",\n point_in_time_recovery_enablement=\"POINT_IN_TIME_RECOVERY_ENABLED\",\n delete_protection_state=\"DELETE_PROTECTION_ENABLED\",\n deletion_policy=\"DELETE\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var database = new Gcp.Firestore.Database(\"database\", new()\n {\n Project = \"my-project-name\",\n Name = \"database-id\",\n LocationId = \"nam5\",\n Type = \"FIRESTORE_NATIVE\",\n ConcurrencyMode = \"OPTIMISTIC\",\n AppEngineIntegrationMode = \"DISABLED\",\n PointInTimeRecoveryEnablement = \"POINT_IN_TIME_RECOVERY_ENABLED\",\n DeleteProtectionState = \"DELETE_PROTECTION_ENABLED\",\n DeletionPolicy = \"DELETE\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firestore\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := firestore.NewDatabase(ctx, \"database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"database-id\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"FIRESTORE_NATIVE\"),\n\t\t\tConcurrencyMode: pulumi.String(\"OPTIMISTIC\"),\n\t\t\tAppEngineIntegrationMode: pulumi.String(\"DISABLED\"),\n\t\t\tPointInTimeRecoveryEnablement: pulumi.String(\"POINT_IN_TIME_RECOVERY_ENABLED\"),\n\t\t\tDeleteProtectionState: pulumi.String(\"DELETE_PROTECTION_ENABLED\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var database = new Database(\"database\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"database-id\")\n .locationId(\"nam5\")\n .type(\"FIRESTORE_NATIVE\")\n .concurrencyMode(\"OPTIMISTIC\")\n .appEngineIntegrationMode(\"DISABLED\")\n .pointInTimeRecoveryEnablement(\"POINT_IN_TIME_RECOVERY_ENABLED\")\n .deleteProtectionState(\"DELETE_PROTECTION_ENABLED\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n database:\n type: gcp:firestore:Database\n properties:\n project: my-project-name\n name: database-id\n locationId: nam5\n type: FIRESTORE_NATIVE\n concurrencyMode: OPTIMISTIC\n appEngineIntegrationMode: DISABLED\n pointInTimeRecoveryEnablement: POINT_IN_TIME_RECOVERY_ENABLED\n deleteProtectionState: DELETE_PROTECTION_ENABLED\n deletionPolicy: DELETE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firestore Cmek Database\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"kms-key-ring\",\n location: \"us\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"kms-key\",\n keyRing: keyRing.id,\n purpose: \"ENCRYPT_DECRYPT\",\n});\nconst firestoreCmekKeyuser = new gcp.kms.CryptoKeyIAMBinding(\"firestore_cmek_keyuser\", {\n cryptoKeyId: cryptoKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members: [project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-firestore.iam.gserviceaccount.com`)],\n});\nconst database = new gcp.firestore.Database(\"database\", {\n project: \"my-project-name\",\n name: \"cmek-database-id\",\n locationId: \"nam5\",\n type: \"FIRESTORE_NATIVE\",\n concurrencyMode: \"OPTIMISTIC\",\n appEngineIntegrationMode: \"DISABLED\",\n pointInTimeRecoveryEnablement: \"POINT_IN_TIME_RECOVERY_ENABLED\",\n deleteProtectionState: \"DELETE_PROTECTION_ENABLED\",\n deletionPolicy: \"DELETE\",\n cmekConfig: {\n kmsKeyName: cryptoKey.id,\n },\n}, {\n dependsOn: [firestoreCmekKeyuser],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"kms-key-ring\",\n location=\"us\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"kms-key\",\n key_ring=key_ring.id,\n purpose=\"ENCRYPT_DECRYPT\")\nfirestore_cmek_keyuser = gcp.kms.CryptoKeyIAMBinding(\"firestore_cmek_keyuser\",\n crypto_key_id=crypto_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members=[f\"serviceAccount:service-{project.number}@gcp-sa-firestore.iam.gserviceaccount.com\"])\ndatabase = gcp.firestore.Database(\"database\",\n project=\"my-project-name\",\n name=\"cmek-database-id\",\n location_id=\"nam5\",\n type=\"FIRESTORE_NATIVE\",\n concurrency_mode=\"OPTIMISTIC\",\n app_engine_integration_mode=\"DISABLED\",\n point_in_time_recovery_enablement=\"POINT_IN_TIME_RECOVERY_ENABLED\",\n delete_protection_state=\"DELETE_PROTECTION_ENABLED\",\n deletion_policy=\"DELETE\",\n cmek_config={\n \"kms_key_name\": crypto_key.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[firestore_cmek_keyuser]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"kms-key-ring\",\n Location = \"us\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"kms-key\",\n KeyRing = keyRing.Id,\n Purpose = \"ENCRYPT_DECRYPT\",\n });\n\n var firestoreCmekKeyuser = new Gcp.Kms.CryptoKeyIAMBinding(\"firestore_cmek_keyuser\", new()\n {\n CryptoKeyId = cryptoKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Members = new[]\n {\n $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-firestore.iam.gserviceaccount.com\",\n },\n });\n\n var database = new Gcp.Firestore.Database(\"database\", new()\n {\n Project = \"my-project-name\",\n Name = \"cmek-database-id\",\n LocationId = \"nam5\",\n Type = \"FIRESTORE_NATIVE\",\n ConcurrencyMode = \"OPTIMISTIC\",\n AppEngineIntegrationMode = \"DISABLED\",\n PointInTimeRecoveryEnablement = \"POINT_IN_TIME_RECOVERY_ENABLED\",\n DeleteProtectionState = \"DELETE_PROTECTION_ENABLED\",\n DeletionPolicy = \"DELETE\",\n CmekConfig = new Gcp.Firestore.Inputs.DatabaseCmekConfigArgs\n {\n KmsKeyName = cryptoKey.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n firestoreCmekKeyuser,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firestore\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"kms-key-ring\"),\n\t\t\tLocation: pulumi.String(\"us\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"kms-key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t\tPurpose: pulumi.String(\"ENCRYPT_DECRYPT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfirestoreCmekKeyuser, err := kms.NewCryptoKeyIAMBinding(ctx, \"firestore_cmek_keyuser\", \u0026kms.CryptoKeyIAMBindingArgs{\n\t\t\tCryptoKeyId: cryptoKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-firestore.iam.gserviceaccount.com\", project.Number),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firestore.NewDatabase(ctx, \"database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"cmek-database-id\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"FIRESTORE_NATIVE\"),\n\t\t\tConcurrencyMode: pulumi.String(\"OPTIMISTIC\"),\n\t\t\tAppEngineIntegrationMode: pulumi.String(\"DISABLED\"),\n\t\t\tPointInTimeRecoveryEnablement: pulumi.String(\"POINT_IN_TIME_RECOVERY_ENABLED\"),\n\t\t\tDeleteProtectionState: pulumi.String(\"DELETE_PROTECTION_ENABLED\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t\tCmekConfig: \u0026firestore.DatabaseCmekConfigArgs{\n\t\t\t\tKmsKeyName: cryptoKey.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfirestoreCmekKeyuser,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBinding;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBindingArgs;\nimport com.pulumi.gcp.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\nimport com.pulumi.gcp.firestore.inputs.DatabaseCmekConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"kms-key-ring\")\n .location(\"us\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"kms-key\")\n .keyRing(keyRing.id())\n .purpose(\"ENCRYPT_DECRYPT\")\n .build());\n\n var firestoreCmekKeyuser = new CryptoKeyIAMBinding(\"firestoreCmekKeyuser\", CryptoKeyIAMBindingArgs.builder()\n .cryptoKeyId(cryptoKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .members(String.format(\"serviceAccount:service-%s@gcp-sa-firestore.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var database = new Database(\"database\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"cmek-database-id\")\n .locationId(\"nam5\")\n .type(\"FIRESTORE_NATIVE\")\n .concurrencyMode(\"OPTIMISTIC\")\n .appEngineIntegrationMode(\"DISABLED\")\n .pointInTimeRecoveryEnablement(\"POINT_IN_TIME_RECOVERY_ENABLED\")\n .deleteProtectionState(\"DELETE_PROTECTION_ENABLED\")\n .deletionPolicy(\"DELETE\")\n .cmekConfig(DatabaseCmekConfigArgs.builder()\n .kmsKeyName(cryptoKey.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(firestoreCmekKeyuser)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n database:\n type: gcp:firestore:Database\n properties:\n project: my-project-name\n name: cmek-database-id\n locationId: nam5\n type: FIRESTORE_NATIVE\n concurrencyMode: OPTIMISTIC\n appEngineIntegrationMode: DISABLED\n pointInTimeRecoveryEnablement: POINT_IN_TIME_RECOVERY_ENABLED\n deleteProtectionState: DELETE_PROTECTION_ENABLED\n deletionPolicy: DELETE\n cmekConfig:\n kmsKeyName: ${cryptoKey.id}\n options:\n dependson:\n - ${firestoreCmekKeyuser}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: kms-key\n keyRing: ${keyRing.id}\n purpose: ENCRYPT_DECRYPT\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: kms-key-ring\n location: us\n firestoreCmekKeyuser:\n type: gcp:kms:CryptoKeyIAMBinding\n name: firestore_cmek_keyuser\n properties:\n cryptoKeyId: ${cryptoKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n members:\n - serviceAccount:service-${project.number}@gcp-sa-firestore.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firestore Default Database In Datastore Mode\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst datastoreModeDatabase = new gcp.firestore.Database(\"datastore_mode_database\", {\n project: \"my-project-name\",\n name: \"(default)\",\n locationId: \"nam5\",\n type: \"DATASTORE_MODE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndatastore_mode_database = gcp.firestore.Database(\"datastore_mode_database\",\n project=\"my-project-name\",\n name=\"(default)\",\n location_id=\"nam5\",\n type=\"DATASTORE_MODE\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var datastoreModeDatabase = new Gcp.Firestore.Database(\"datastore_mode_database\", new()\n {\n Project = \"my-project-name\",\n Name = \"(default)\",\n LocationId = \"nam5\",\n Type = \"DATASTORE_MODE\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firestore\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := firestore.NewDatabase(ctx, \"datastore_mode_database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"(default)\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"DATASTORE_MODE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var datastoreModeDatabase = new Database(\"datastoreModeDatabase\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"(default)\")\n .locationId(\"nam5\")\n .type(\"DATASTORE_MODE\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n datastoreModeDatabase:\n type: gcp:firestore:Database\n name: datastore_mode_database\n properties:\n project: my-project-name\n name: (default)\n locationId: nam5\n type: DATASTORE_MODE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firestore Database In Datastore Mode\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst datastoreModeDatabase = new gcp.firestore.Database(\"datastore_mode_database\", {\n project: \"my-project-name\",\n name: \"database-id\",\n locationId: \"nam5\",\n type: \"DATASTORE_MODE\",\n concurrencyMode: \"OPTIMISTIC\",\n appEngineIntegrationMode: \"DISABLED\",\n pointInTimeRecoveryEnablement: \"POINT_IN_TIME_RECOVERY_ENABLED\",\n deleteProtectionState: \"DELETE_PROTECTION_ENABLED\",\n deletionPolicy: \"DELETE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndatastore_mode_database = gcp.firestore.Database(\"datastore_mode_database\",\n project=\"my-project-name\",\n name=\"database-id\",\n location_id=\"nam5\",\n type=\"DATASTORE_MODE\",\n concurrency_mode=\"OPTIMISTIC\",\n app_engine_integration_mode=\"DISABLED\",\n point_in_time_recovery_enablement=\"POINT_IN_TIME_RECOVERY_ENABLED\",\n delete_protection_state=\"DELETE_PROTECTION_ENABLED\",\n deletion_policy=\"DELETE\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var datastoreModeDatabase = new Gcp.Firestore.Database(\"datastore_mode_database\", new()\n {\n Project = \"my-project-name\",\n Name = \"database-id\",\n LocationId = \"nam5\",\n Type = \"DATASTORE_MODE\",\n ConcurrencyMode = \"OPTIMISTIC\",\n AppEngineIntegrationMode = \"DISABLED\",\n PointInTimeRecoveryEnablement = \"POINT_IN_TIME_RECOVERY_ENABLED\",\n DeleteProtectionState = \"DELETE_PROTECTION_ENABLED\",\n DeletionPolicy = \"DELETE\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firestore\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := firestore.NewDatabase(ctx, \"datastore_mode_database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"database-id\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"DATASTORE_MODE\"),\n\t\t\tConcurrencyMode: pulumi.String(\"OPTIMISTIC\"),\n\t\t\tAppEngineIntegrationMode: pulumi.String(\"DISABLED\"),\n\t\t\tPointInTimeRecoveryEnablement: pulumi.String(\"POINT_IN_TIME_RECOVERY_ENABLED\"),\n\t\t\tDeleteProtectionState: pulumi.String(\"DELETE_PROTECTION_ENABLED\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var datastoreModeDatabase = new Database(\"datastoreModeDatabase\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"database-id\")\n .locationId(\"nam5\")\n .type(\"DATASTORE_MODE\")\n .concurrencyMode(\"OPTIMISTIC\")\n .appEngineIntegrationMode(\"DISABLED\")\n .pointInTimeRecoveryEnablement(\"POINT_IN_TIME_RECOVERY_ENABLED\")\n .deleteProtectionState(\"DELETE_PROTECTION_ENABLED\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n datastoreModeDatabase:\n type: gcp:firestore:Database\n name: datastore_mode_database\n properties:\n project: my-project-name\n name: database-id\n locationId: nam5\n type: DATASTORE_MODE\n concurrencyMode: OPTIMISTIC\n appEngineIntegrationMode: DISABLED\n pointInTimeRecoveryEnablement: POINT_IN_TIME_RECOVERY_ENABLED\n deleteProtectionState: DELETE_PROTECTION_ENABLED\n deletionPolicy: DELETE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firestore Cmek Database In Datastore Mode\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"kms-key-ring\",\n location: \"us\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"kms-key\",\n keyRing: keyRing.id,\n purpose: \"ENCRYPT_DECRYPT\",\n});\nconst firestoreCmekKeyuser = new gcp.kms.CryptoKeyIAMBinding(\"firestore_cmek_keyuser\", {\n cryptoKeyId: cryptoKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members: [project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-firestore.iam.gserviceaccount.com`)],\n});\nconst database = new gcp.firestore.Database(\"database\", {\n project: \"my-project-name\",\n name: \"cmek-database-id\",\n locationId: \"nam5\",\n type: \"DATASTORE_MODE\",\n concurrencyMode: \"OPTIMISTIC\",\n appEngineIntegrationMode: \"DISABLED\",\n pointInTimeRecoveryEnablement: \"POINT_IN_TIME_RECOVERY_ENABLED\",\n deleteProtectionState: \"DELETE_PROTECTION_ENABLED\",\n deletionPolicy: \"DELETE\",\n cmekConfig: {\n kmsKeyName: cryptoKey.id,\n },\n}, {\n dependsOn: [firestoreCmekKeyuser],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"kms-key-ring\",\n location=\"us\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"kms-key\",\n key_ring=key_ring.id,\n purpose=\"ENCRYPT_DECRYPT\")\nfirestore_cmek_keyuser = gcp.kms.CryptoKeyIAMBinding(\"firestore_cmek_keyuser\",\n crypto_key_id=crypto_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members=[f\"serviceAccount:service-{project.number}@gcp-sa-firestore.iam.gserviceaccount.com\"])\ndatabase = gcp.firestore.Database(\"database\",\n project=\"my-project-name\",\n name=\"cmek-database-id\",\n location_id=\"nam5\",\n type=\"DATASTORE_MODE\",\n concurrency_mode=\"OPTIMISTIC\",\n app_engine_integration_mode=\"DISABLED\",\n point_in_time_recovery_enablement=\"POINT_IN_TIME_RECOVERY_ENABLED\",\n delete_protection_state=\"DELETE_PROTECTION_ENABLED\",\n deletion_policy=\"DELETE\",\n cmek_config={\n \"kms_key_name\": crypto_key.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[firestore_cmek_keyuser]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"kms-key-ring\",\n Location = \"us\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"kms-key\",\n KeyRing = keyRing.Id,\n Purpose = \"ENCRYPT_DECRYPT\",\n });\n\n var firestoreCmekKeyuser = new Gcp.Kms.CryptoKeyIAMBinding(\"firestore_cmek_keyuser\", new()\n {\n CryptoKeyId = cryptoKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Members = new[]\n {\n $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-firestore.iam.gserviceaccount.com\",\n },\n });\n\n var database = new Gcp.Firestore.Database(\"database\", new()\n {\n Project = \"my-project-name\",\n Name = \"cmek-database-id\",\n LocationId = \"nam5\",\n Type = \"DATASTORE_MODE\",\n ConcurrencyMode = \"OPTIMISTIC\",\n AppEngineIntegrationMode = \"DISABLED\",\n PointInTimeRecoveryEnablement = \"POINT_IN_TIME_RECOVERY_ENABLED\",\n DeleteProtectionState = \"DELETE_PROTECTION_ENABLED\",\n DeletionPolicy = \"DELETE\",\n CmekConfig = new Gcp.Firestore.Inputs.DatabaseCmekConfigArgs\n {\n KmsKeyName = cryptoKey.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n firestoreCmekKeyuser,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firestore\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"kms-key-ring\"),\n\t\t\tLocation: pulumi.String(\"us\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"kms-key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t\tPurpose: pulumi.String(\"ENCRYPT_DECRYPT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfirestoreCmekKeyuser, err := kms.NewCryptoKeyIAMBinding(ctx, \"firestore_cmek_keyuser\", \u0026kms.CryptoKeyIAMBindingArgs{\n\t\t\tCryptoKeyId: cryptoKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-firestore.iam.gserviceaccount.com\", project.Number),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firestore.NewDatabase(ctx, \"database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"cmek-database-id\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"DATASTORE_MODE\"),\n\t\t\tConcurrencyMode: pulumi.String(\"OPTIMISTIC\"),\n\t\t\tAppEngineIntegrationMode: pulumi.String(\"DISABLED\"),\n\t\t\tPointInTimeRecoveryEnablement: pulumi.String(\"POINT_IN_TIME_RECOVERY_ENABLED\"),\n\t\t\tDeleteProtectionState: pulumi.String(\"DELETE_PROTECTION_ENABLED\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t\tCmekConfig: \u0026firestore.DatabaseCmekConfigArgs{\n\t\t\t\tKmsKeyName: cryptoKey.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfirestoreCmekKeyuser,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBinding;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBindingArgs;\nimport com.pulumi.gcp.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\nimport com.pulumi.gcp.firestore.inputs.DatabaseCmekConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"kms-key-ring\")\n .location(\"us\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"kms-key\")\n .keyRing(keyRing.id())\n .purpose(\"ENCRYPT_DECRYPT\")\n .build());\n\n var firestoreCmekKeyuser = new CryptoKeyIAMBinding(\"firestoreCmekKeyuser\", CryptoKeyIAMBindingArgs.builder()\n .cryptoKeyId(cryptoKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .members(String.format(\"serviceAccount:service-%s@gcp-sa-firestore.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var database = new Database(\"database\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"cmek-database-id\")\n .locationId(\"nam5\")\n .type(\"DATASTORE_MODE\")\n .concurrencyMode(\"OPTIMISTIC\")\n .appEngineIntegrationMode(\"DISABLED\")\n .pointInTimeRecoveryEnablement(\"POINT_IN_TIME_RECOVERY_ENABLED\")\n .deleteProtectionState(\"DELETE_PROTECTION_ENABLED\")\n .deletionPolicy(\"DELETE\")\n .cmekConfig(DatabaseCmekConfigArgs.builder()\n .kmsKeyName(cryptoKey.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(firestoreCmekKeyuser)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n database:\n type: gcp:firestore:Database\n properties:\n project: my-project-name\n name: cmek-database-id\n locationId: nam5\n type: DATASTORE_MODE\n concurrencyMode: OPTIMISTIC\n appEngineIntegrationMode: DISABLED\n pointInTimeRecoveryEnablement: POINT_IN_TIME_RECOVERY_ENABLED\n deleteProtectionState: DELETE_PROTECTION_ENABLED\n deletionPolicy: DELETE\n cmekConfig:\n kmsKeyName: ${cryptoKey.id}\n options:\n dependson:\n - ${firestoreCmekKeyuser}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: kms-key\n keyRing: ${keyRing.id}\n purpose: ENCRYPT_DECRYPT\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: kms-key-ring\n location: us\n firestoreCmekKeyuser:\n type: gcp:kms:CryptoKeyIAMBinding\n name: firestore_cmek_keyuser\n properties:\n cryptoKeyId: ${cryptoKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n members:\n - serviceAccount:service-${project.number}@gcp-sa-firestore.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDatabase can be imported using any of these accepted formats:\n\n* `projects/{{project}}/databases/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Database can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firestore/database:Database default projects/{{project}}/databases/{{name}}\n```\n\n```sh\n$ pulumi import gcp:firestore/database:Database default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:firestore/database:Database default {{name}}\n```\n\n", "properties": { "appEngineIntegrationMode": { "type": "string", @@ -200311,7 +200311,7 @@ } }, "gcp:firestore/field:Field": { - "description": "Represents a single field in the database.\nFields are grouped by their \"Collection Group\", which represent all collections\nin the database with the same id.\n\n\nTo get more information about Field, see:\n\n* [API documentation](https://cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.collectionGroups.fields)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/firestore/docs/query-data/indexing)\n\n\u003e **Warning:** This resource creates a Firestore Single Field override on a project that\n already has a Firestore database. If you haven't already created it, you may\ncreate a `gcp.firestore.Database` resource with `location_id` set to your\nchosen location.\n\n## Example Usage\n\n### Firestore Field Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst database = new gcp.firestore.Database(\"database\", {\n project: \"my-project-name\",\n name: \"database-id\",\n locationId: \"nam5\",\n type: \"FIRESTORE_NATIVE\",\n deleteProtectionState: \"DELETE_PROTECTION_ENABLED\",\n deletionPolicy: \"DELETE\",\n});\nconst basic = new gcp.firestore.Field(\"basic\", {\n project: \"my-project-name\",\n database: database.name,\n collection: \"chatrooms__75125\",\n field: \"basic\",\n indexConfig: {\n indexes: [\n {\n order: \"ASCENDING\",\n queryScope: \"COLLECTION_GROUP\",\n },\n {\n arrayConfig: \"CONTAINS\",\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndatabase = gcp.firestore.Database(\"database\",\n project=\"my-project-name\",\n name=\"database-id\",\n location_id=\"nam5\",\n type=\"FIRESTORE_NATIVE\",\n delete_protection_state=\"DELETE_PROTECTION_ENABLED\",\n deletion_policy=\"DELETE\")\nbasic = gcp.firestore.Field(\"basic\",\n project=\"my-project-name\",\n database=database.name,\n collection=\"chatrooms__75125\",\n field=\"basic\",\n index_config={\n \"indexes\": [\n {\n \"order\": \"ASCENDING\",\n \"query_scope\": \"COLLECTION_GROUP\",\n },\n {\n \"array_config\": \"CONTAINS\",\n },\n ],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var database = new Gcp.Firestore.Database(\"database\", new()\n {\n Project = \"my-project-name\",\n Name = \"database-id\",\n LocationId = \"nam5\",\n Type = \"FIRESTORE_NATIVE\",\n DeleteProtectionState = \"DELETE_PROTECTION_ENABLED\",\n DeletionPolicy = \"DELETE\",\n });\n\n var basic = new Gcp.Firestore.Field(\"basic\", new()\n {\n Project = \"my-project-name\",\n Database = database.Name,\n Collection = \"chatrooms__75125\",\n FieldId = \"basic\",\n IndexConfig = new Gcp.Firestore.Inputs.FieldIndexConfigArgs\n {\n Indexes = new[]\n {\n new Gcp.Firestore.Inputs.FieldIndexConfigIndexArgs\n {\n Order = \"ASCENDING\",\n QueryScope = \"COLLECTION_GROUP\",\n },\n new Gcp.Firestore.Inputs.FieldIndexConfigIndexArgs\n {\n ArrayConfig = \"CONTAINS\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firestore\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdatabase, err := firestore.NewDatabase(ctx, \"database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"database-id\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"FIRESTORE_NATIVE\"),\n\t\t\tDeleteProtectionState: pulumi.String(\"DELETE_PROTECTION_ENABLED\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firestore.NewField(ctx, \"basic\", \u0026firestore.FieldArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDatabase: database.Name,\n\t\t\tCollection: pulumi.String(\"chatrooms__75125\"),\n\t\t\tField: pulumi.String(\"basic\"),\n\t\t\tIndexConfig: \u0026firestore.FieldIndexConfigArgs{\n\t\t\t\tIndexes: firestore.FieldIndexConfigIndexArray{\n\t\t\t\t\t\u0026firestore.FieldIndexConfigIndexArgs{\n\t\t\t\t\t\tOrder: pulumi.String(\"ASCENDING\"),\n\t\t\t\t\t\tQueryScope: pulumi.String(\"COLLECTION_GROUP\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026firestore.FieldIndexConfigIndexArgs{\n\t\t\t\t\t\tArrayConfig: pulumi.String(\"CONTAINS\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\nimport com.pulumi.gcp.firestore.Field;\nimport com.pulumi.gcp.firestore.FieldArgs;\nimport com.pulumi.gcp.firestore.inputs.FieldIndexConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var database = new Database(\"database\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"database-id\")\n .locationId(\"nam5\")\n .type(\"FIRESTORE_NATIVE\")\n .deleteProtectionState(\"DELETE_PROTECTION_ENABLED\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n var basic = new Field(\"basic\", FieldArgs.builder()\n .project(\"my-project-name\")\n .database(database.name())\n .collection(\"chatrooms__75125\")\n .field(\"basic\")\n .indexConfig(FieldIndexConfigArgs.builder()\n .indexes( \n FieldIndexConfigIndexArgs.builder()\n .order(\"ASCENDING\")\n .queryScope(\"COLLECTION_GROUP\")\n .build(),\n FieldIndexConfigIndexArgs.builder()\n .arrayConfig(\"CONTAINS\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n database:\n type: gcp:firestore:Database\n properties:\n project: my-project-name\n name: database-id\n locationId: nam5\n type: FIRESTORE_NATIVE\n deleteProtectionState: DELETE_PROTECTION_ENABLED\n deletionPolicy: DELETE\n basic:\n type: gcp:firestore:Field\n properties:\n project: my-project-name\n database: ${database.name}\n collection: chatrooms__75125\n field: basic\n indexConfig:\n indexes:\n - order: ASCENDING\n queryScope: COLLECTION_GROUP\n - arrayConfig: CONTAINS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firestore Field Timestamp\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst database = new gcp.firestore.Database(\"database\", {\n project: \"my-project-name\",\n name: \"database-id\",\n locationId: \"nam5\",\n type: \"FIRESTORE_NATIVE\",\n deleteProtectionState: \"DELETE_PROTECTION_ENABLED\",\n deletionPolicy: \"DELETE\",\n});\nconst timestamp = new gcp.firestore.Field(\"timestamp\", {\n project: \"my-project-name\",\n database: database.name,\n collection: \"chatrooms\",\n field: \"timestamp\",\n ttlConfig: {},\n indexConfig: {},\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndatabase = gcp.firestore.Database(\"database\",\n project=\"my-project-name\",\n name=\"database-id\",\n location_id=\"nam5\",\n type=\"FIRESTORE_NATIVE\",\n delete_protection_state=\"DELETE_PROTECTION_ENABLED\",\n deletion_policy=\"DELETE\")\ntimestamp = gcp.firestore.Field(\"timestamp\",\n project=\"my-project-name\",\n database=database.name,\n collection=\"chatrooms\",\n field=\"timestamp\",\n ttl_config={},\n index_config={})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var database = new Gcp.Firestore.Database(\"database\", new()\n {\n Project = \"my-project-name\",\n Name = \"database-id\",\n LocationId = \"nam5\",\n Type = \"FIRESTORE_NATIVE\",\n DeleteProtectionState = \"DELETE_PROTECTION_ENABLED\",\n DeletionPolicy = \"DELETE\",\n });\n\n var timestamp = new Gcp.Firestore.Field(\"timestamp\", new()\n {\n Project = \"my-project-name\",\n Database = database.Name,\n Collection = \"chatrooms\",\n FieldId = \"timestamp\",\n TtlConfig = null,\n IndexConfig = null,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firestore\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdatabase, err := firestore.NewDatabase(ctx, \"database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"database-id\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"FIRESTORE_NATIVE\"),\n\t\t\tDeleteProtectionState: pulumi.String(\"DELETE_PROTECTION_ENABLED\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firestore.NewField(ctx, \"timestamp\", \u0026firestore.FieldArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDatabase: database.Name,\n\t\t\tCollection: pulumi.String(\"chatrooms\"),\n\t\t\tField: pulumi.String(\"timestamp\"),\n\t\t\tTtlConfig: nil,\n\t\t\tIndexConfig: nil,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\nimport com.pulumi.gcp.firestore.Field;\nimport com.pulumi.gcp.firestore.FieldArgs;\nimport com.pulumi.gcp.firestore.inputs.FieldTtlConfigArgs;\nimport com.pulumi.gcp.firestore.inputs.FieldIndexConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var database = new Database(\"database\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"database-id\")\n .locationId(\"nam5\")\n .type(\"FIRESTORE_NATIVE\")\n .deleteProtectionState(\"DELETE_PROTECTION_ENABLED\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n var timestamp = new Field(\"timestamp\", FieldArgs.builder()\n .project(\"my-project-name\")\n .database(database.name())\n .collection(\"chatrooms\")\n .field(\"timestamp\")\n .ttlConfig()\n .indexConfig()\n .build());\n\n }\n}\n```\n```yaml\nresources:\n database:\n type: gcp:firestore:Database\n properties:\n project: my-project-name\n name: database-id\n locationId: nam5\n type: FIRESTORE_NATIVE\n deleteProtectionState: DELETE_PROTECTION_ENABLED\n deletionPolicy: DELETE\n timestamp:\n type: gcp:firestore:Field\n properties:\n project: my-project-name\n database: ${database.name}\n collection: chatrooms\n field: timestamp\n ttlConfig: {}\n indexConfig: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firestore Field Match Override\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst database = new gcp.firestore.Database(\"database\", {\n project: \"my-project-name\",\n name: \"database-id\",\n locationId: \"nam5\",\n type: \"FIRESTORE_NATIVE\",\n deleteProtectionState: \"DELETE_PROTECTION_ENABLED\",\n deletionPolicy: \"DELETE\",\n});\nconst matchOverride = new gcp.firestore.Field(\"match_override\", {\n project: \"my-project-name\",\n database: database.name,\n collection: \"chatrooms__88722\",\n field: \"field_with_same_configuration_as_ancestor\",\n indexConfig: {\n indexes: [\n {\n order: \"ASCENDING\",\n },\n {\n order: \"DESCENDING\",\n },\n {\n arrayConfig: \"CONTAINS\",\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndatabase = gcp.firestore.Database(\"database\",\n project=\"my-project-name\",\n name=\"database-id\",\n location_id=\"nam5\",\n type=\"FIRESTORE_NATIVE\",\n delete_protection_state=\"DELETE_PROTECTION_ENABLED\",\n deletion_policy=\"DELETE\")\nmatch_override = gcp.firestore.Field(\"match_override\",\n project=\"my-project-name\",\n database=database.name,\n collection=\"chatrooms__88722\",\n field=\"field_with_same_configuration_as_ancestor\",\n index_config={\n \"indexes\": [\n {\n \"order\": \"ASCENDING\",\n },\n {\n \"order\": \"DESCENDING\",\n },\n {\n \"array_config\": \"CONTAINS\",\n },\n ],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var database = new Gcp.Firestore.Database(\"database\", new()\n {\n Project = \"my-project-name\",\n Name = \"database-id\",\n LocationId = \"nam5\",\n Type = \"FIRESTORE_NATIVE\",\n DeleteProtectionState = \"DELETE_PROTECTION_ENABLED\",\n DeletionPolicy = \"DELETE\",\n });\n\n var matchOverride = new Gcp.Firestore.Field(\"match_override\", new()\n {\n Project = \"my-project-name\",\n Database = database.Name,\n Collection = \"chatrooms__88722\",\n FieldId = \"field_with_same_configuration_as_ancestor\",\n IndexConfig = new Gcp.Firestore.Inputs.FieldIndexConfigArgs\n {\n Indexes = new[]\n {\n new Gcp.Firestore.Inputs.FieldIndexConfigIndexArgs\n {\n Order = \"ASCENDING\",\n },\n new Gcp.Firestore.Inputs.FieldIndexConfigIndexArgs\n {\n Order = \"DESCENDING\",\n },\n new Gcp.Firestore.Inputs.FieldIndexConfigIndexArgs\n {\n ArrayConfig = \"CONTAINS\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firestore\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdatabase, err := firestore.NewDatabase(ctx, \"database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"database-id\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"FIRESTORE_NATIVE\"),\n\t\t\tDeleteProtectionState: pulumi.String(\"DELETE_PROTECTION_ENABLED\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firestore.NewField(ctx, \"match_override\", \u0026firestore.FieldArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDatabase: database.Name,\n\t\t\tCollection: pulumi.String(\"chatrooms__88722\"),\n\t\t\tField: pulumi.String(\"field_with_same_configuration_as_ancestor\"),\n\t\t\tIndexConfig: \u0026firestore.FieldIndexConfigArgs{\n\t\t\t\tIndexes: firestore.FieldIndexConfigIndexArray{\n\t\t\t\t\t\u0026firestore.FieldIndexConfigIndexArgs{\n\t\t\t\t\t\tOrder: pulumi.String(\"ASCENDING\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026firestore.FieldIndexConfigIndexArgs{\n\t\t\t\t\t\tOrder: pulumi.String(\"DESCENDING\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026firestore.FieldIndexConfigIndexArgs{\n\t\t\t\t\t\tArrayConfig: pulumi.String(\"CONTAINS\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\nimport com.pulumi.gcp.firestore.Field;\nimport com.pulumi.gcp.firestore.FieldArgs;\nimport com.pulumi.gcp.firestore.inputs.FieldIndexConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var database = new Database(\"database\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"database-id\")\n .locationId(\"nam5\")\n .type(\"FIRESTORE_NATIVE\")\n .deleteProtectionState(\"DELETE_PROTECTION_ENABLED\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n var matchOverride = new Field(\"matchOverride\", FieldArgs.builder()\n .project(\"my-project-name\")\n .database(database.name())\n .collection(\"chatrooms__88722\")\n .field(\"field_with_same_configuration_as_ancestor\")\n .indexConfig(FieldIndexConfigArgs.builder()\n .indexes( \n FieldIndexConfigIndexArgs.builder()\n .order(\"ASCENDING\")\n .build(),\n FieldIndexConfigIndexArgs.builder()\n .order(\"DESCENDING\")\n .build(),\n FieldIndexConfigIndexArgs.builder()\n .arrayConfig(\"CONTAINS\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n database:\n type: gcp:firestore:Database\n properties:\n project: my-project-name\n name: database-id\n locationId: nam5\n type: FIRESTORE_NATIVE\n deleteProtectionState: DELETE_PROTECTION_ENABLED\n deletionPolicy: DELETE\n matchOverride:\n type: gcp:firestore:Field\n name: match_override\n properties:\n project: my-project-name\n database: ${database.name}\n collection: chatrooms__88722\n field: field_with_same_configuration_as_ancestor\n indexConfig:\n indexes:\n - order: ASCENDING\n - order: DESCENDING\n - arrayConfig: CONTAINS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nField can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Field can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firestore/field:Field default {{name}}\n```\n\n", + "description": "Represents a single field in the database.\nFields are grouped by their \"Collection Group\", which represent all collections\nin the database with the same id.\n\n\nTo get more information about Field, see:\n\n* [API documentation](https://cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.collectionGroups.fields)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/firestore/docs/query-data/indexing)\n\n\u003e **Warning:** This resource creates a Firestore Single Field override on a project that\n already has a Firestore database. If you haven't already created it, you may\ncreate a `gcp.firestore.Database` resource with `location_id` set to your\nchosen location.\n\n## Example Usage\n\n### Firestore Field Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst database = new gcp.firestore.Database(\"database\", {\n project: \"my-project-name\",\n name: \"database-id\",\n locationId: \"nam5\",\n type: \"FIRESTORE_NATIVE\",\n deleteProtectionState: \"DELETE_PROTECTION_ENABLED\",\n deletionPolicy: \"DELETE\",\n});\nconst basic = new gcp.firestore.Field(\"basic\", {\n project: \"my-project-name\",\n database: database.name,\n collection: \"chatrooms__75125\",\n field: \"basic\",\n indexConfig: {\n indexes: [\n {\n order: \"ASCENDING\",\n queryScope: \"COLLECTION_GROUP\",\n },\n {\n arrayConfig: \"CONTAINS\",\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndatabase = gcp.firestore.Database(\"database\",\n project=\"my-project-name\",\n name=\"database-id\",\n location_id=\"nam5\",\n type=\"FIRESTORE_NATIVE\",\n delete_protection_state=\"DELETE_PROTECTION_ENABLED\",\n deletion_policy=\"DELETE\")\nbasic = gcp.firestore.Field(\"basic\",\n project=\"my-project-name\",\n database=database.name,\n collection=\"chatrooms__75125\",\n field=\"basic\",\n index_config={\n \"indexes\": [\n {\n \"order\": \"ASCENDING\",\n \"query_scope\": \"COLLECTION_GROUP\",\n },\n {\n \"array_config\": \"CONTAINS\",\n },\n ],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var database = new Gcp.Firestore.Database(\"database\", new()\n {\n Project = \"my-project-name\",\n Name = \"database-id\",\n LocationId = \"nam5\",\n Type = \"FIRESTORE_NATIVE\",\n DeleteProtectionState = \"DELETE_PROTECTION_ENABLED\",\n DeletionPolicy = \"DELETE\",\n });\n\n var basic = new Gcp.Firestore.Field(\"basic\", new()\n {\n Project = \"my-project-name\",\n Database = database.Name,\n Collection = \"chatrooms__75125\",\n FieldId = \"basic\",\n IndexConfig = new Gcp.Firestore.Inputs.FieldIndexConfigArgs\n {\n Indexes = new[]\n {\n new Gcp.Firestore.Inputs.FieldIndexConfigIndexArgs\n {\n Order = \"ASCENDING\",\n QueryScope = \"COLLECTION_GROUP\",\n },\n new Gcp.Firestore.Inputs.FieldIndexConfigIndexArgs\n {\n ArrayConfig = \"CONTAINS\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firestore\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdatabase, err := firestore.NewDatabase(ctx, \"database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"database-id\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"FIRESTORE_NATIVE\"),\n\t\t\tDeleteProtectionState: pulumi.String(\"DELETE_PROTECTION_ENABLED\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firestore.NewField(ctx, \"basic\", \u0026firestore.FieldArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDatabase: database.Name,\n\t\t\tCollection: pulumi.String(\"chatrooms__75125\"),\n\t\t\tField: pulumi.String(\"basic\"),\n\t\t\tIndexConfig: \u0026firestore.FieldIndexConfigArgs{\n\t\t\t\tIndexes: firestore.FieldIndexConfigIndexArray{\n\t\t\t\t\t\u0026firestore.FieldIndexConfigIndexArgs{\n\t\t\t\t\t\tOrder: pulumi.String(\"ASCENDING\"),\n\t\t\t\t\t\tQueryScope: pulumi.String(\"COLLECTION_GROUP\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026firestore.FieldIndexConfigIndexArgs{\n\t\t\t\t\t\tArrayConfig: pulumi.String(\"CONTAINS\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\nimport com.pulumi.gcp.firestore.Field;\nimport com.pulumi.gcp.firestore.FieldArgs;\nimport com.pulumi.gcp.firestore.inputs.FieldIndexConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var database = new Database(\"database\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"database-id\")\n .locationId(\"nam5\")\n .type(\"FIRESTORE_NATIVE\")\n .deleteProtectionState(\"DELETE_PROTECTION_ENABLED\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n var basic = new Field(\"basic\", FieldArgs.builder()\n .project(\"my-project-name\")\n .database(database.name())\n .collection(\"chatrooms__75125\")\n .field(\"basic\")\n .indexConfig(FieldIndexConfigArgs.builder()\n .indexes( \n FieldIndexConfigIndexArgs.builder()\n .order(\"ASCENDING\")\n .queryScope(\"COLLECTION_GROUP\")\n .build(),\n FieldIndexConfigIndexArgs.builder()\n .arrayConfig(\"CONTAINS\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n database:\n type: gcp:firestore:Database\n properties:\n project: my-project-name\n name: database-id\n locationId: nam5\n type: FIRESTORE_NATIVE\n deleteProtectionState: DELETE_PROTECTION_ENABLED\n deletionPolicy: DELETE\n basic:\n type: gcp:firestore:Field\n properties:\n project: my-project-name\n database: ${database.name}\n collection: chatrooms__75125\n field: basic\n indexConfig:\n indexes:\n - order: ASCENDING\n queryScope: COLLECTION_GROUP\n - arrayConfig: CONTAINS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firestore Field Timestamp\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst database = new gcp.firestore.Database(\"database\", {\n project: \"my-project-name\",\n name: \"database-id\",\n locationId: \"nam5\",\n type: \"FIRESTORE_NATIVE\",\n deleteProtectionState: \"DELETE_PROTECTION_ENABLED\",\n deletionPolicy: \"DELETE\",\n});\nconst timestamp = new gcp.firestore.Field(\"timestamp\", {\n project: \"my-project-name\",\n database: database.name,\n collection: \"chatrooms\",\n field: \"timestamp\",\n ttlConfig: {},\n indexConfig: {},\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndatabase = gcp.firestore.Database(\"database\",\n project=\"my-project-name\",\n name=\"database-id\",\n location_id=\"nam5\",\n type=\"FIRESTORE_NATIVE\",\n delete_protection_state=\"DELETE_PROTECTION_ENABLED\",\n deletion_policy=\"DELETE\")\ntimestamp = gcp.firestore.Field(\"timestamp\",\n project=\"my-project-name\",\n database=database.name,\n collection=\"chatrooms\",\n field=\"timestamp\",\n ttl_config={},\n index_config={})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var database = new Gcp.Firestore.Database(\"database\", new()\n {\n Project = \"my-project-name\",\n Name = \"database-id\",\n LocationId = \"nam5\",\n Type = \"FIRESTORE_NATIVE\",\n DeleteProtectionState = \"DELETE_PROTECTION_ENABLED\",\n DeletionPolicy = \"DELETE\",\n });\n\n var timestamp = new Gcp.Firestore.Field(\"timestamp\", new()\n {\n Project = \"my-project-name\",\n Database = database.Name,\n Collection = \"chatrooms\",\n FieldId = \"timestamp\",\n TtlConfig = null,\n IndexConfig = null,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firestore\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdatabase, err := firestore.NewDatabase(ctx, \"database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"database-id\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"FIRESTORE_NATIVE\"),\n\t\t\tDeleteProtectionState: pulumi.String(\"DELETE_PROTECTION_ENABLED\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firestore.NewField(ctx, \"timestamp\", \u0026firestore.FieldArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDatabase: database.Name,\n\t\t\tCollection: pulumi.String(\"chatrooms\"),\n\t\t\tField: pulumi.String(\"timestamp\"),\n\t\t\tTtlConfig: \u0026firestore.FieldTtlConfigArgs{},\n\t\t\tIndexConfig: \u0026firestore.FieldIndexConfigArgs{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\nimport com.pulumi.gcp.firestore.Field;\nimport com.pulumi.gcp.firestore.FieldArgs;\nimport com.pulumi.gcp.firestore.inputs.FieldTtlConfigArgs;\nimport com.pulumi.gcp.firestore.inputs.FieldIndexConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var database = new Database(\"database\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"database-id\")\n .locationId(\"nam5\")\n .type(\"FIRESTORE_NATIVE\")\n .deleteProtectionState(\"DELETE_PROTECTION_ENABLED\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n var timestamp = new Field(\"timestamp\", FieldArgs.builder()\n .project(\"my-project-name\")\n .database(database.name())\n .collection(\"chatrooms\")\n .field(\"timestamp\")\n .ttlConfig()\n .indexConfig()\n .build());\n\n }\n}\n```\n```yaml\nresources:\n database:\n type: gcp:firestore:Database\n properties:\n project: my-project-name\n name: database-id\n locationId: nam5\n type: FIRESTORE_NATIVE\n deleteProtectionState: DELETE_PROTECTION_ENABLED\n deletionPolicy: DELETE\n timestamp:\n type: gcp:firestore:Field\n properties:\n project: my-project-name\n database: ${database.name}\n collection: chatrooms\n field: timestamp\n ttlConfig: {}\n indexConfig: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firestore Field Match Override\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst database = new gcp.firestore.Database(\"database\", {\n project: \"my-project-name\",\n name: \"database-id\",\n locationId: \"nam5\",\n type: \"FIRESTORE_NATIVE\",\n deleteProtectionState: \"DELETE_PROTECTION_ENABLED\",\n deletionPolicy: \"DELETE\",\n});\nconst matchOverride = new gcp.firestore.Field(\"match_override\", {\n project: \"my-project-name\",\n database: database.name,\n collection: \"chatrooms__88722\",\n field: \"field_with_same_configuration_as_ancestor\",\n indexConfig: {\n indexes: [\n {\n order: \"ASCENDING\",\n },\n {\n order: \"DESCENDING\",\n },\n {\n arrayConfig: \"CONTAINS\",\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndatabase = gcp.firestore.Database(\"database\",\n project=\"my-project-name\",\n name=\"database-id\",\n location_id=\"nam5\",\n type=\"FIRESTORE_NATIVE\",\n delete_protection_state=\"DELETE_PROTECTION_ENABLED\",\n deletion_policy=\"DELETE\")\nmatch_override = gcp.firestore.Field(\"match_override\",\n project=\"my-project-name\",\n database=database.name,\n collection=\"chatrooms__88722\",\n field=\"field_with_same_configuration_as_ancestor\",\n index_config={\n \"indexes\": [\n {\n \"order\": \"ASCENDING\",\n },\n {\n \"order\": \"DESCENDING\",\n },\n {\n \"array_config\": \"CONTAINS\",\n },\n ],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var database = new Gcp.Firestore.Database(\"database\", new()\n {\n Project = \"my-project-name\",\n Name = \"database-id\",\n LocationId = \"nam5\",\n Type = \"FIRESTORE_NATIVE\",\n DeleteProtectionState = \"DELETE_PROTECTION_ENABLED\",\n DeletionPolicy = \"DELETE\",\n });\n\n var matchOverride = new Gcp.Firestore.Field(\"match_override\", new()\n {\n Project = \"my-project-name\",\n Database = database.Name,\n Collection = \"chatrooms__88722\",\n FieldId = \"field_with_same_configuration_as_ancestor\",\n IndexConfig = new Gcp.Firestore.Inputs.FieldIndexConfigArgs\n {\n Indexes = new[]\n {\n new Gcp.Firestore.Inputs.FieldIndexConfigIndexArgs\n {\n Order = \"ASCENDING\",\n },\n new Gcp.Firestore.Inputs.FieldIndexConfigIndexArgs\n {\n Order = \"DESCENDING\",\n },\n new Gcp.Firestore.Inputs.FieldIndexConfigIndexArgs\n {\n ArrayConfig = \"CONTAINS\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firestore\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdatabase, err := firestore.NewDatabase(ctx, \"database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"database-id\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"FIRESTORE_NATIVE\"),\n\t\t\tDeleteProtectionState: pulumi.String(\"DELETE_PROTECTION_ENABLED\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firestore.NewField(ctx, \"match_override\", \u0026firestore.FieldArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDatabase: database.Name,\n\t\t\tCollection: pulumi.String(\"chatrooms__88722\"),\n\t\t\tField: pulumi.String(\"field_with_same_configuration_as_ancestor\"),\n\t\t\tIndexConfig: \u0026firestore.FieldIndexConfigArgs{\n\t\t\t\tIndexes: firestore.FieldIndexConfigIndexArray{\n\t\t\t\t\t\u0026firestore.FieldIndexConfigIndexArgs{\n\t\t\t\t\t\tOrder: pulumi.String(\"ASCENDING\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026firestore.FieldIndexConfigIndexArgs{\n\t\t\t\t\t\tOrder: pulumi.String(\"DESCENDING\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026firestore.FieldIndexConfigIndexArgs{\n\t\t\t\t\t\tArrayConfig: pulumi.String(\"CONTAINS\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\nimport com.pulumi.gcp.firestore.Field;\nimport com.pulumi.gcp.firestore.FieldArgs;\nimport com.pulumi.gcp.firestore.inputs.FieldIndexConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var database = new Database(\"database\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"database-id\")\n .locationId(\"nam5\")\n .type(\"FIRESTORE_NATIVE\")\n .deleteProtectionState(\"DELETE_PROTECTION_ENABLED\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n var matchOverride = new Field(\"matchOverride\", FieldArgs.builder()\n .project(\"my-project-name\")\n .database(database.name())\n .collection(\"chatrooms__88722\")\n .field(\"field_with_same_configuration_as_ancestor\")\n .indexConfig(FieldIndexConfigArgs.builder()\n .indexes( \n FieldIndexConfigIndexArgs.builder()\n .order(\"ASCENDING\")\n .build(),\n FieldIndexConfigIndexArgs.builder()\n .order(\"DESCENDING\")\n .build(),\n FieldIndexConfigIndexArgs.builder()\n .arrayConfig(\"CONTAINS\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n database:\n type: gcp:firestore:Database\n properties:\n project: my-project-name\n name: database-id\n locationId: nam5\n type: FIRESTORE_NATIVE\n deleteProtectionState: DELETE_PROTECTION_ENABLED\n deletionPolicy: DELETE\n matchOverride:\n type: gcp:firestore:Field\n name: match_override\n properties:\n project: my-project-name\n database: ${database.name}\n collection: chatrooms__88722\n field: field_with_same_configuration_as_ancestor\n indexConfig:\n indexes:\n - order: ASCENDING\n - order: DESCENDING\n - arrayConfig: CONTAINS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nField can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Field can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firestore/field:Field default {{name}}\n```\n\n", "properties": { "collection": { "type": "string", @@ -200437,7 +200437,7 @@ } }, "gcp:firestore/index:Index": { - "description": "Cloud Firestore indexes enable simple and complex queries against documents in a database.\n Both Firestore Native and Datastore Mode indexes are supported.\n This resource manages composite indexes and not single field indexes.\n To manage single field indexes, use the `gcp.firestore.Field` resource instead.\n\n\nTo get more information about Index, see:\n\n* [API documentation](https://cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.collectionGroups.indexes)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/firestore/docs/query-data/indexing)\n\n\u003e **Warning:** This resource creates a Firestore Index on a project that already has\na Firestore database. If you haven't already created it, you may\ncreate a `gcp.firestore.Database` resource and `location_id` set\nto your chosen location. If you wish to use App Engine, you may\ninstead create a `gcp.appengine.Application` resource.\nYour Firestore location will be the same as the App Engine location specified.\n\n## Example Usage\n\n### Firestore Index Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst database = new gcp.firestore.Database(\"database\", {\n project: \"my-project-name\",\n name: \"database-id\",\n locationId: \"nam5\",\n type: \"FIRESTORE_NATIVE\",\n deleteProtectionState: \"DELETE_PROTECTION_DISABLED\",\n deletionPolicy: \"DELETE\",\n});\nconst my_index = new gcp.firestore.Index(\"my-index\", {\n project: \"my-project-name\",\n database: database.name,\n collection: \"atestcollection\",\n fields: [\n {\n fieldPath: \"name\",\n order: \"ASCENDING\",\n },\n {\n fieldPath: \"description\",\n order: \"DESCENDING\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndatabase = gcp.firestore.Database(\"database\",\n project=\"my-project-name\",\n name=\"database-id\",\n location_id=\"nam5\",\n type=\"FIRESTORE_NATIVE\",\n delete_protection_state=\"DELETE_PROTECTION_DISABLED\",\n deletion_policy=\"DELETE\")\nmy_index = gcp.firestore.Index(\"my-index\",\n project=\"my-project-name\",\n database=database.name,\n collection=\"atestcollection\",\n fields=[\n {\n \"field_path\": \"name\",\n \"order\": \"ASCENDING\",\n },\n {\n \"field_path\": \"description\",\n \"order\": \"DESCENDING\",\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var database = new Gcp.Firestore.Database(\"database\", new()\n {\n Project = \"my-project-name\",\n Name = \"database-id\",\n LocationId = \"nam5\",\n Type = \"FIRESTORE_NATIVE\",\n DeleteProtectionState = \"DELETE_PROTECTION_DISABLED\",\n DeletionPolicy = \"DELETE\",\n });\n\n var my_index = new Gcp.Firestore.Index(\"my-index\", new()\n {\n Project = \"my-project-name\",\n Database = database.Name,\n Collection = \"atestcollection\",\n Fields = new[]\n {\n new Gcp.Firestore.Inputs.IndexFieldArgs\n {\n FieldPath = \"name\",\n Order = \"ASCENDING\",\n },\n new Gcp.Firestore.Inputs.IndexFieldArgs\n {\n FieldPath = \"description\",\n Order = \"DESCENDING\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firestore\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdatabase, err := firestore.NewDatabase(ctx, \"database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"database-id\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"FIRESTORE_NATIVE\"),\n\t\t\tDeleteProtectionState: pulumi.String(\"DELETE_PROTECTION_DISABLED\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firestore.NewIndex(ctx, \"my-index\", \u0026firestore.IndexArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDatabase: database.Name,\n\t\t\tCollection: pulumi.String(\"atestcollection\"),\n\t\t\tFields: firestore.IndexFieldArray{\n\t\t\t\t\u0026firestore.IndexFieldArgs{\n\t\t\t\t\tFieldPath: pulumi.String(\"name\"),\n\t\t\t\t\tOrder: pulumi.String(\"ASCENDING\"),\n\t\t\t\t},\n\t\t\t\t\u0026firestore.IndexFieldArgs{\n\t\t\t\t\tFieldPath: pulumi.String(\"description\"),\n\t\t\t\t\tOrder: pulumi.String(\"DESCENDING\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\nimport com.pulumi.gcp.firestore.Index;\nimport com.pulumi.gcp.firestore.IndexArgs;\nimport com.pulumi.gcp.firestore.inputs.IndexFieldArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var database = new Database(\"database\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"database-id\")\n .locationId(\"nam5\")\n .type(\"FIRESTORE_NATIVE\")\n .deleteProtectionState(\"DELETE_PROTECTION_DISABLED\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n var my_index = new Index(\"my-index\", IndexArgs.builder()\n .project(\"my-project-name\")\n .database(database.name())\n .collection(\"atestcollection\")\n .fields( \n IndexFieldArgs.builder()\n .fieldPath(\"name\")\n .order(\"ASCENDING\")\n .build(),\n IndexFieldArgs.builder()\n .fieldPath(\"description\")\n .order(\"DESCENDING\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n database:\n type: gcp:firestore:Database\n properties:\n project: my-project-name\n name: database-id\n locationId: nam5\n type: FIRESTORE_NATIVE\n deleteProtectionState: DELETE_PROTECTION_DISABLED\n deletionPolicy: DELETE\n my-index:\n type: gcp:firestore:Index\n properties:\n project: my-project-name\n database: ${database.name}\n collection: atestcollection\n fields:\n - fieldPath: name\n order: ASCENDING\n - fieldPath: description\n order: DESCENDING\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firestore Index Datastore Mode\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst database = new gcp.firestore.Database(\"database\", {\n project: \"my-project-name\",\n name: \"database-id-dm\",\n locationId: \"nam5\",\n type: \"DATASTORE_MODE\",\n deleteProtectionState: \"DELETE_PROTECTION_DISABLED\",\n deletionPolicy: \"DELETE\",\n});\nconst my_index = new gcp.firestore.Index(\"my-index\", {\n project: \"my-project-name\",\n database: database.name,\n collection: \"atestcollection\",\n queryScope: \"COLLECTION_RECURSIVE\",\n apiScope: \"DATASTORE_MODE_API\",\n fields: [\n {\n fieldPath: \"name\",\n order: \"ASCENDING\",\n },\n {\n fieldPath: \"description\",\n order: \"DESCENDING\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndatabase = gcp.firestore.Database(\"database\",\n project=\"my-project-name\",\n name=\"database-id-dm\",\n location_id=\"nam5\",\n type=\"DATASTORE_MODE\",\n delete_protection_state=\"DELETE_PROTECTION_DISABLED\",\n deletion_policy=\"DELETE\")\nmy_index = gcp.firestore.Index(\"my-index\",\n project=\"my-project-name\",\n database=database.name,\n collection=\"atestcollection\",\n query_scope=\"COLLECTION_RECURSIVE\",\n api_scope=\"DATASTORE_MODE_API\",\n fields=[\n {\n \"field_path\": \"name\",\n \"order\": \"ASCENDING\",\n },\n {\n \"field_path\": \"description\",\n \"order\": \"DESCENDING\",\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var database = new Gcp.Firestore.Database(\"database\", new()\n {\n Project = \"my-project-name\",\n Name = \"database-id-dm\",\n LocationId = \"nam5\",\n Type = \"DATASTORE_MODE\",\n DeleteProtectionState = \"DELETE_PROTECTION_DISABLED\",\n DeletionPolicy = \"DELETE\",\n });\n\n var my_index = new Gcp.Firestore.Index(\"my-index\", new()\n {\n Project = \"my-project-name\",\n Database = database.Name,\n Collection = \"atestcollection\",\n QueryScope = \"COLLECTION_RECURSIVE\",\n ApiScope = \"DATASTORE_MODE_API\",\n Fields = new[]\n {\n new Gcp.Firestore.Inputs.IndexFieldArgs\n {\n FieldPath = \"name\",\n Order = \"ASCENDING\",\n },\n new Gcp.Firestore.Inputs.IndexFieldArgs\n {\n FieldPath = \"description\",\n Order = \"DESCENDING\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firestore\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdatabase, err := firestore.NewDatabase(ctx, \"database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"database-id-dm\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"DATASTORE_MODE\"),\n\t\t\tDeleteProtectionState: pulumi.String(\"DELETE_PROTECTION_DISABLED\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firestore.NewIndex(ctx, \"my-index\", \u0026firestore.IndexArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDatabase: database.Name,\n\t\t\tCollection: pulumi.String(\"atestcollection\"),\n\t\t\tQueryScope: pulumi.String(\"COLLECTION_RECURSIVE\"),\n\t\t\tApiScope: pulumi.String(\"DATASTORE_MODE_API\"),\n\t\t\tFields: firestore.IndexFieldArray{\n\t\t\t\t\u0026firestore.IndexFieldArgs{\n\t\t\t\t\tFieldPath: pulumi.String(\"name\"),\n\t\t\t\t\tOrder: pulumi.String(\"ASCENDING\"),\n\t\t\t\t},\n\t\t\t\t\u0026firestore.IndexFieldArgs{\n\t\t\t\t\tFieldPath: pulumi.String(\"description\"),\n\t\t\t\t\tOrder: pulumi.String(\"DESCENDING\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\nimport com.pulumi.gcp.firestore.Index;\nimport com.pulumi.gcp.firestore.IndexArgs;\nimport com.pulumi.gcp.firestore.inputs.IndexFieldArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var database = new Database(\"database\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"database-id-dm\")\n .locationId(\"nam5\")\n .type(\"DATASTORE_MODE\")\n .deleteProtectionState(\"DELETE_PROTECTION_DISABLED\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n var my_index = new Index(\"my-index\", IndexArgs.builder()\n .project(\"my-project-name\")\n .database(database.name())\n .collection(\"atestcollection\")\n .queryScope(\"COLLECTION_RECURSIVE\")\n .apiScope(\"DATASTORE_MODE_API\")\n .fields( \n IndexFieldArgs.builder()\n .fieldPath(\"name\")\n .order(\"ASCENDING\")\n .build(),\n IndexFieldArgs.builder()\n .fieldPath(\"description\")\n .order(\"DESCENDING\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n database:\n type: gcp:firestore:Database\n properties:\n project: my-project-name\n name: database-id-dm\n locationId: nam5\n type: DATASTORE_MODE\n deleteProtectionState: DELETE_PROTECTION_DISABLED\n deletionPolicy: DELETE\n my-index:\n type: gcp:firestore:Index\n properties:\n project: my-project-name\n database: ${database.name}\n collection: atestcollection\n queryScope: COLLECTION_RECURSIVE\n apiScope: DATASTORE_MODE_API\n fields:\n - fieldPath: name\n order: ASCENDING\n - fieldPath: description\n order: DESCENDING\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firestore Index Vector\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst database = new gcp.firestore.Database(\"database\", {\n project: \"my-project-name\",\n name: \"database-id-vector\",\n locationId: \"nam5\",\n type: \"FIRESTORE_NATIVE\",\n deleteProtectionState: \"DELETE_PROTECTION_DISABLED\",\n deletionPolicy: \"DELETE\",\n});\nconst my_index = new gcp.firestore.Index(\"my-index\", {\n project: \"my-project-name\",\n database: database.name,\n collection: \"atestcollection\",\n fields: [\n {\n fieldPath: \"field_name\",\n order: \"ASCENDING\",\n },\n {\n fieldPath: \"__name__\",\n order: \"ASCENDING\",\n },\n {\n fieldPath: \"description\",\n vectorConfig: {\n dimension: 128,\n flat: {},\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndatabase = gcp.firestore.Database(\"database\",\n project=\"my-project-name\",\n name=\"database-id-vector\",\n location_id=\"nam5\",\n type=\"FIRESTORE_NATIVE\",\n delete_protection_state=\"DELETE_PROTECTION_DISABLED\",\n deletion_policy=\"DELETE\")\nmy_index = gcp.firestore.Index(\"my-index\",\n project=\"my-project-name\",\n database=database.name,\n collection=\"atestcollection\",\n fields=[\n {\n \"field_path\": \"field_name\",\n \"order\": \"ASCENDING\",\n },\n {\n \"field_path\": \"__name__\",\n \"order\": \"ASCENDING\",\n },\n {\n \"field_path\": \"description\",\n \"vector_config\": {\n \"dimension\": 128,\n \"flat\": {},\n },\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var database = new Gcp.Firestore.Database(\"database\", new()\n {\n Project = \"my-project-name\",\n Name = \"database-id-vector\",\n LocationId = \"nam5\",\n Type = \"FIRESTORE_NATIVE\",\n DeleteProtectionState = \"DELETE_PROTECTION_DISABLED\",\n DeletionPolicy = \"DELETE\",\n });\n\n var my_index = new Gcp.Firestore.Index(\"my-index\", new()\n {\n Project = \"my-project-name\",\n Database = database.Name,\n Collection = \"atestcollection\",\n Fields = new[]\n {\n new Gcp.Firestore.Inputs.IndexFieldArgs\n {\n FieldPath = \"field_name\",\n Order = \"ASCENDING\",\n },\n new Gcp.Firestore.Inputs.IndexFieldArgs\n {\n FieldPath = \"__name__\",\n Order = \"ASCENDING\",\n },\n new Gcp.Firestore.Inputs.IndexFieldArgs\n {\n FieldPath = \"description\",\n VectorConfig = new Gcp.Firestore.Inputs.IndexFieldVectorConfigArgs\n {\n Dimension = 128,\n Flat = null,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firestore\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdatabase, err := firestore.NewDatabase(ctx, \"database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"database-id-vector\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"FIRESTORE_NATIVE\"),\n\t\t\tDeleteProtectionState: pulumi.String(\"DELETE_PROTECTION_DISABLED\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firestore.NewIndex(ctx, \"my-index\", \u0026firestore.IndexArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDatabase: database.Name,\n\t\t\tCollection: pulumi.String(\"atestcollection\"),\n\t\t\tFields: firestore.IndexFieldArray{\n\t\t\t\t\u0026firestore.IndexFieldArgs{\n\t\t\t\t\tFieldPath: pulumi.String(\"field_name\"),\n\t\t\t\t\tOrder: pulumi.String(\"ASCENDING\"),\n\t\t\t\t},\n\t\t\t\t\u0026firestore.IndexFieldArgs{\n\t\t\t\t\tFieldPath: pulumi.String(\"__name__\"),\n\t\t\t\t\tOrder: pulumi.String(\"ASCENDING\"),\n\t\t\t\t},\n\t\t\t\t\u0026firestore.IndexFieldArgs{\n\t\t\t\t\tFieldPath: pulumi.String(\"description\"),\n\t\t\t\t\tVectorConfig: \u0026firestore.IndexFieldVectorConfigArgs{\n\t\t\t\t\t\tDimension: pulumi.Int(128),\n\t\t\t\t\t\tFlat: nil,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\nimport com.pulumi.gcp.firestore.Index;\nimport com.pulumi.gcp.firestore.IndexArgs;\nimport com.pulumi.gcp.firestore.inputs.IndexFieldArgs;\nimport com.pulumi.gcp.firestore.inputs.IndexFieldVectorConfigArgs;\nimport com.pulumi.gcp.firestore.inputs.IndexFieldVectorConfigFlatArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var database = new Database(\"database\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"database-id-vector\")\n .locationId(\"nam5\")\n .type(\"FIRESTORE_NATIVE\")\n .deleteProtectionState(\"DELETE_PROTECTION_DISABLED\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n var my_index = new Index(\"my-index\", IndexArgs.builder()\n .project(\"my-project-name\")\n .database(database.name())\n .collection(\"atestcollection\")\n .fields( \n IndexFieldArgs.builder()\n .fieldPath(\"field_name\")\n .order(\"ASCENDING\")\n .build(),\n IndexFieldArgs.builder()\n .fieldPath(\"__name__\")\n .order(\"ASCENDING\")\n .build(),\n IndexFieldArgs.builder()\n .fieldPath(\"description\")\n .vectorConfig(IndexFieldVectorConfigArgs.builder()\n .dimension(128)\n .flat()\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n database:\n type: gcp:firestore:Database\n properties:\n project: my-project-name\n name: database-id-vector\n locationId: nam5\n type: FIRESTORE_NATIVE\n deleteProtectionState: DELETE_PROTECTION_DISABLED\n deletionPolicy: DELETE\n my-index:\n type: gcp:firestore:Index\n properties:\n project: my-project-name\n database: ${database.name}\n collection: atestcollection\n fields:\n - fieldPath: field_name\n order: ASCENDING\n - fieldPath: __name__\n order: ASCENDING\n - fieldPath: description\n vectorConfig:\n dimension: 128\n flat: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIndex can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Index can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firestore/index:Index default {{name}}\n```\n\n", + "description": "Cloud Firestore indexes enable simple and complex queries against documents in a database.\n Both Firestore Native and Datastore Mode indexes are supported.\n This resource manages composite indexes and not single field indexes.\n To manage single field indexes, use the `gcp.firestore.Field` resource instead.\n\n\nTo get more information about Index, see:\n\n* [API documentation](https://cloud.google.com/firestore/docs/reference/rest/v1/projects.databases.collectionGroups.indexes)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/firestore/docs/query-data/indexing)\n\n\u003e **Warning:** This resource creates a Firestore Index on a project that already has\na Firestore database. If you haven't already created it, you may\ncreate a `gcp.firestore.Database` resource and `location_id` set\nto your chosen location. If you wish to use App Engine, you may\ninstead create a `gcp.appengine.Application` resource.\nYour Firestore location will be the same as the App Engine location specified.\n\n## Example Usage\n\n### Firestore Index Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst database = new gcp.firestore.Database(\"database\", {\n project: \"my-project-name\",\n name: \"database-id\",\n locationId: \"nam5\",\n type: \"FIRESTORE_NATIVE\",\n deleteProtectionState: \"DELETE_PROTECTION_DISABLED\",\n deletionPolicy: \"DELETE\",\n});\nconst my_index = new gcp.firestore.Index(\"my-index\", {\n project: \"my-project-name\",\n database: database.name,\n collection: \"atestcollection\",\n fields: [\n {\n fieldPath: \"name\",\n order: \"ASCENDING\",\n },\n {\n fieldPath: \"description\",\n order: \"DESCENDING\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndatabase = gcp.firestore.Database(\"database\",\n project=\"my-project-name\",\n name=\"database-id\",\n location_id=\"nam5\",\n type=\"FIRESTORE_NATIVE\",\n delete_protection_state=\"DELETE_PROTECTION_DISABLED\",\n deletion_policy=\"DELETE\")\nmy_index = gcp.firestore.Index(\"my-index\",\n project=\"my-project-name\",\n database=database.name,\n collection=\"atestcollection\",\n fields=[\n {\n \"field_path\": \"name\",\n \"order\": \"ASCENDING\",\n },\n {\n \"field_path\": \"description\",\n \"order\": \"DESCENDING\",\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var database = new Gcp.Firestore.Database(\"database\", new()\n {\n Project = \"my-project-name\",\n Name = \"database-id\",\n LocationId = \"nam5\",\n Type = \"FIRESTORE_NATIVE\",\n DeleteProtectionState = \"DELETE_PROTECTION_DISABLED\",\n DeletionPolicy = \"DELETE\",\n });\n\n var my_index = new Gcp.Firestore.Index(\"my-index\", new()\n {\n Project = \"my-project-name\",\n Database = database.Name,\n Collection = \"atestcollection\",\n Fields = new[]\n {\n new Gcp.Firestore.Inputs.IndexFieldArgs\n {\n FieldPath = \"name\",\n Order = \"ASCENDING\",\n },\n new Gcp.Firestore.Inputs.IndexFieldArgs\n {\n FieldPath = \"description\",\n Order = \"DESCENDING\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firestore\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdatabase, err := firestore.NewDatabase(ctx, \"database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"database-id\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"FIRESTORE_NATIVE\"),\n\t\t\tDeleteProtectionState: pulumi.String(\"DELETE_PROTECTION_DISABLED\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firestore.NewIndex(ctx, \"my-index\", \u0026firestore.IndexArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDatabase: database.Name,\n\t\t\tCollection: pulumi.String(\"atestcollection\"),\n\t\t\tFields: firestore.IndexFieldArray{\n\t\t\t\t\u0026firestore.IndexFieldArgs{\n\t\t\t\t\tFieldPath: pulumi.String(\"name\"),\n\t\t\t\t\tOrder: pulumi.String(\"ASCENDING\"),\n\t\t\t\t},\n\t\t\t\t\u0026firestore.IndexFieldArgs{\n\t\t\t\t\tFieldPath: pulumi.String(\"description\"),\n\t\t\t\t\tOrder: pulumi.String(\"DESCENDING\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\nimport com.pulumi.gcp.firestore.Index;\nimport com.pulumi.gcp.firestore.IndexArgs;\nimport com.pulumi.gcp.firestore.inputs.IndexFieldArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var database = new Database(\"database\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"database-id\")\n .locationId(\"nam5\")\n .type(\"FIRESTORE_NATIVE\")\n .deleteProtectionState(\"DELETE_PROTECTION_DISABLED\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n var my_index = new Index(\"my-index\", IndexArgs.builder()\n .project(\"my-project-name\")\n .database(database.name())\n .collection(\"atestcollection\")\n .fields( \n IndexFieldArgs.builder()\n .fieldPath(\"name\")\n .order(\"ASCENDING\")\n .build(),\n IndexFieldArgs.builder()\n .fieldPath(\"description\")\n .order(\"DESCENDING\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n database:\n type: gcp:firestore:Database\n properties:\n project: my-project-name\n name: database-id\n locationId: nam5\n type: FIRESTORE_NATIVE\n deleteProtectionState: DELETE_PROTECTION_DISABLED\n deletionPolicy: DELETE\n my-index:\n type: gcp:firestore:Index\n properties:\n project: my-project-name\n database: ${database.name}\n collection: atestcollection\n fields:\n - fieldPath: name\n order: ASCENDING\n - fieldPath: description\n order: DESCENDING\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firestore Index Datastore Mode\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst database = new gcp.firestore.Database(\"database\", {\n project: \"my-project-name\",\n name: \"database-id-dm\",\n locationId: \"nam5\",\n type: \"DATASTORE_MODE\",\n deleteProtectionState: \"DELETE_PROTECTION_DISABLED\",\n deletionPolicy: \"DELETE\",\n});\nconst my_index = new gcp.firestore.Index(\"my-index\", {\n project: \"my-project-name\",\n database: database.name,\n collection: \"atestcollection\",\n queryScope: \"COLLECTION_RECURSIVE\",\n apiScope: \"DATASTORE_MODE_API\",\n fields: [\n {\n fieldPath: \"name\",\n order: \"ASCENDING\",\n },\n {\n fieldPath: \"description\",\n order: \"DESCENDING\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndatabase = gcp.firestore.Database(\"database\",\n project=\"my-project-name\",\n name=\"database-id-dm\",\n location_id=\"nam5\",\n type=\"DATASTORE_MODE\",\n delete_protection_state=\"DELETE_PROTECTION_DISABLED\",\n deletion_policy=\"DELETE\")\nmy_index = gcp.firestore.Index(\"my-index\",\n project=\"my-project-name\",\n database=database.name,\n collection=\"atestcollection\",\n query_scope=\"COLLECTION_RECURSIVE\",\n api_scope=\"DATASTORE_MODE_API\",\n fields=[\n {\n \"field_path\": \"name\",\n \"order\": \"ASCENDING\",\n },\n {\n \"field_path\": \"description\",\n \"order\": \"DESCENDING\",\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var database = new Gcp.Firestore.Database(\"database\", new()\n {\n Project = \"my-project-name\",\n Name = \"database-id-dm\",\n LocationId = \"nam5\",\n Type = \"DATASTORE_MODE\",\n DeleteProtectionState = \"DELETE_PROTECTION_DISABLED\",\n DeletionPolicy = \"DELETE\",\n });\n\n var my_index = new Gcp.Firestore.Index(\"my-index\", new()\n {\n Project = \"my-project-name\",\n Database = database.Name,\n Collection = \"atestcollection\",\n QueryScope = \"COLLECTION_RECURSIVE\",\n ApiScope = \"DATASTORE_MODE_API\",\n Fields = new[]\n {\n new Gcp.Firestore.Inputs.IndexFieldArgs\n {\n FieldPath = \"name\",\n Order = \"ASCENDING\",\n },\n new Gcp.Firestore.Inputs.IndexFieldArgs\n {\n FieldPath = \"description\",\n Order = \"DESCENDING\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firestore\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdatabase, err := firestore.NewDatabase(ctx, \"database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"database-id-dm\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"DATASTORE_MODE\"),\n\t\t\tDeleteProtectionState: pulumi.String(\"DELETE_PROTECTION_DISABLED\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firestore.NewIndex(ctx, \"my-index\", \u0026firestore.IndexArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDatabase: database.Name,\n\t\t\tCollection: pulumi.String(\"atestcollection\"),\n\t\t\tQueryScope: pulumi.String(\"COLLECTION_RECURSIVE\"),\n\t\t\tApiScope: pulumi.String(\"DATASTORE_MODE_API\"),\n\t\t\tFields: firestore.IndexFieldArray{\n\t\t\t\t\u0026firestore.IndexFieldArgs{\n\t\t\t\t\tFieldPath: pulumi.String(\"name\"),\n\t\t\t\t\tOrder: pulumi.String(\"ASCENDING\"),\n\t\t\t\t},\n\t\t\t\t\u0026firestore.IndexFieldArgs{\n\t\t\t\t\tFieldPath: pulumi.String(\"description\"),\n\t\t\t\t\tOrder: pulumi.String(\"DESCENDING\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\nimport com.pulumi.gcp.firestore.Index;\nimport com.pulumi.gcp.firestore.IndexArgs;\nimport com.pulumi.gcp.firestore.inputs.IndexFieldArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var database = new Database(\"database\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"database-id-dm\")\n .locationId(\"nam5\")\n .type(\"DATASTORE_MODE\")\n .deleteProtectionState(\"DELETE_PROTECTION_DISABLED\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n var my_index = new Index(\"my-index\", IndexArgs.builder()\n .project(\"my-project-name\")\n .database(database.name())\n .collection(\"atestcollection\")\n .queryScope(\"COLLECTION_RECURSIVE\")\n .apiScope(\"DATASTORE_MODE_API\")\n .fields( \n IndexFieldArgs.builder()\n .fieldPath(\"name\")\n .order(\"ASCENDING\")\n .build(),\n IndexFieldArgs.builder()\n .fieldPath(\"description\")\n .order(\"DESCENDING\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n database:\n type: gcp:firestore:Database\n properties:\n project: my-project-name\n name: database-id-dm\n locationId: nam5\n type: DATASTORE_MODE\n deleteProtectionState: DELETE_PROTECTION_DISABLED\n deletionPolicy: DELETE\n my-index:\n type: gcp:firestore:Index\n properties:\n project: my-project-name\n database: ${database.name}\n collection: atestcollection\n queryScope: COLLECTION_RECURSIVE\n apiScope: DATASTORE_MODE_API\n fields:\n - fieldPath: name\n order: ASCENDING\n - fieldPath: description\n order: DESCENDING\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firestore Index Vector\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst database = new gcp.firestore.Database(\"database\", {\n project: \"my-project-name\",\n name: \"database-id-vector\",\n locationId: \"nam5\",\n type: \"FIRESTORE_NATIVE\",\n deleteProtectionState: \"DELETE_PROTECTION_DISABLED\",\n deletionPolicy: \"DELETE\",\n});\nconst my_index = new gcp.firestore.Index(\"my-index\", {\n project: \"my-project-name\",\n database: database.name,\n collection: \"atestcollection\",\n fields: [\n {\n fieldPath: \"field_name\",\n order: \"ASCENDING\",\n },\n {\n fieldPath: \"__name__\",\n order: \"ASCENDING\",\n },\n {\n fieldPath: \"description\",\n vectorConfig: {\n dimension: 128,\n flat: {},\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndatabase = gcp.firestore.Database(\"database\",\n project=\"my-project-name\",\n name=\"database-id-vector\",\n location_id=\"nam5\",\n type=\"FIRESTORE_NATIVE\",\n delete_protection_state=\"DELETE_PROTECTION_DISABLED\",\n deletion_policy=\"DELETE\")\nmy_index = gcp.firestore.Index(\"my-index\",\n project=\"my-project-name\",\n database=database.name,\n collection=\"atestcollection\",\n fields=[\n {\n \"field_path\": \"field_name\",\n \"order\": \"ASCENDING\",\n },\n {\n \"field_path\": \"__name__\",\n \"order\": \"ASCENDING\",\n },\n {\n \"field_path\": \"description\",\n \"vector_config\": {\n \"dimension\": 128,\n \"flat\": {},\n },\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var database = new Gcp.Firestore.Database(\"database\", new()\n {\n Project = \"my-project-name\",\n Name = \"database-id-vector\",\n LocationId = \"nam5\",\n Type = \"FIRESTORE_NATIVE\",\n DeleteProtectionState = \"DELETE_PROTECTION_DISABLED\",\n DeletionPolicy = \"DELETE\",\n });\n\n var my_index = new Gcp.Firestore.Index(\"my-index\", new()\n {\n Project = \"my-project-name\",\n Database = database.Name,\n Collection = \"atestcollection\",\n Fields = new[]\n {\n new Gcp.Firestore.Inputs.IndexFieldArgs\n {\n FieldPath = \"field_name\",\n Order = \"ASCENDING\",\n },\n new Gcp.Firestore.Inputs.IndexFieldArgs\n {\n FieldPath = \"__name__\",\n Order = \"ASCENDING\",\n },\n new Gcp.Firestore.Inputs.IndexFieldArgs\n {\n FieldPath = \"description\",\n VectorConfig = new Gcp.Firestore.Inputs.IndexFieldVectorConfigArgs\n {\n Dimension = 128,\n Flat = null,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firestore\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdatabase, err := firestore.NewDatabase(ctx, \"database\", \u0026firestore.DatabaseArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"database-id-vector\"),\n\t\t\tLocationId: pulumi.String(\"nam5\"),\n\t\t\tType: pulumi.String(\"FIRESTORE_NATIVE\"),\n\t\t\tDeleteProtectionState: pulumi.String(\"DELETE_PROTECTION_DISABLED\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firestore.NewIndex(ctx, \"my-index\", \u0026firestore.IndexArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDatabase: database.Name,\n\t\t\tCollection: pulumi.String(\"atestcollection\"),\n\t\t\tFields: firestore.IndexFieldArray{\n\t\t\t\t\u0026firestore.IndexFieldArgs{\n\t\t\t\t\tFieldPath: pulumi.String(\"field_name\"),\n\t\t\t\t\tOrder: pulumi.String(\"ASCENDING\"),\n\t\t\t\t},\n\t\t\t\t\u0026firestore.IndexFieldArgs{\n\t\t\t\t\tFieldPath: pulumi.String(\"__name__\"),\n\t\t\t\t\tOrder: pulumi.String(\"ASCENDING\"),\n\t\t\t\t},\n\t\t\t\t\u0026firestore.IndexFieldArgs{\n\t\t\t\t\tFieldPath: pulumi.String(\"description\"),\n\t\t\t\t\tVectorConfig: \u0026firestore.IndexFieldVectorConfigArgs{\n\t\t\t\t\t\tDimension: pulumi.Int(128),\n\t\t\t\t\t\tFlat: \u0026firestore.IndexFieldVectorConfigFlatArgs{},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firestore.Database;\nimport com.pulumi.gcp.firestore.DatabaseArgs;\nimport com.pulumi.gcp.firestore.Index;\nimport com.pulumi.gcp.firestore.IndexArgs;\nimport com.pulumi.gcp.firestore.inputs.IndexFieldArgs;\nimport com.pulumi.gcp.firestore.inputs.IndexFieldVectorConfigArgs;\nimport com.pulumi.gcp.firestore.inputs.IndexFieldVectorConfigFlatArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var database = new Database(\"database\", DatabaseArgs.builder()\n .project(\"my-project-name\")\n .name(\"database-id-vector\")\n .locationId(\"nam5\")\n .type(\"FIRESTORE_NATIVE\")\n .deleteProtectionState(\"DELETE_PROTECTION_DISABLED\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n var my_index = new Index(\"my-index\", IndexArgs.builder()\n .project(\"my-project-name\")\n .database(database.name())\n .collection(\"atestcollection\")\n .fields( \n IndexFieldArgs.builder()\n .fieldPath(\"field_name\")\n .order(\"ASCENDING\")\n .build(),\n IndexFieldArgs.builder()\n .fieldPath(\"__name__\")\n .order(\"ASCENDING\")\n .build(),\n IndexFieldArgs.builder()\n .fieldPath(\"description\")\n .vectorConfig(IndexFieldVectorConfigArgs.builder()\n .dimension(128)\n .flat()\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n database:\n type: gcp:firestore:Database\n properties:\n project: my-project-name\n name: database-id-vector\n locationId: nam5\n type: FIRESTORE_NATIVE\n deleteProtectionState: DELETE_PROTECTION_DISABLED\n deletionPolicy: DELETE\n my-index:\n type: gcp:firestore:Index\n properties:\n project: my-project-name\n database: ${database.name}\n collection: atestcollection\n fields:\n - fieldPath: field_name\n order: ASCENDING\n - fieldPath: __name__\n order: ASCENDING\n - fieldPath: description\n vectorConfig:\n dimension: 128\n flat: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIndex can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Index can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firestore/index:Index default {{name}}\n```\n\n", "properties": { "apiScope": { "type": "string", @@ -201115,7 +201115,7 @@ } }, "gcp:gkebackup/backupPlan:BackupPlan": { - "description": "Represents a Backup Plan instance.\n\n\nTo get more information about BackupPlan, see:\n\n* [API documentation](https://cloud.google.com/kubernetes-engine/docs/add-on/backup-for-gke/reference/rest/v1/projects.locations.backupPlans)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/kubernetes-engine/docs/add-on/backup-for-gke)\n\n## Example Usage\n\n### Gkebackup Backupplan Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"basic-cluster\",\n location: \"us-central1\",\n initialNodeCount: 1,\n workloadIdentityConfig: {\n workloadPool: \"my-project-name.svc.id.goog\",\n },\n addonsConfig: {\n gkeBackupAgentConfig: {\n enabled: true,\n },\n },\n deletionProtection: true,\n network: \"default\",\n subnetwork: \"default\",\n});\nconst basic = new gcp.gkebackup.BackupPlan(\"basic\", {\n name: \"basic-plan\",\n cluster: primary.id,\n location: \"us-central1\",\n backupConfig: {\n includeVolumeData: true,\n includeSecrets: true,\n allNamespaces: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"basic-cluster\",\n location=\"us-central1\",\n initial_node_count=1,\n workload_identity_config={\n \"workload_pool\": \"my-project-name.svc.id.goog\",\n },\n addons_config={\n \"gke_backup_agent_config\": {\n \"enabled\": True,\n },\n },\n deletion_protection=True,\n network=\"default\",\n subnetwork=\"default\")\nbasic = gcp.gkebackup.BackupPlan(\"basic\",\n name=\"basic-plan\",\n cluster=primary.id,\n location=\"us-central1\",\n backup_config={\n \"include_volume_data\": True,\n \"include_secrets\": True,\n \"all_namespaces\": True,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"basic-cluster\",\n Location = \"us-central1\",\n InitialNodeCount = 1,\n WorkloadIdentityConfig = new Gcp.Container.Inputs.ClusterWorkloadIdentityConfigArgs\n {\n WorkloadPool = \"my-project-name.svc.id.goog\",\n },\n AddonsConfig = new Gcp.Container.Inputs.ClusterAddonsConfigArgs\n {\n GkeBackupAgentConfig = new Gcp.Container.Inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs\n {\n Enabled = true,\n },\n },\n DeletionProtection = true,\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var basic = new Gcp.GkeBackup.BackupPlan(\"basic\", new()\n {\n Name = \"basic-plan\",\n Cluster = primary.Id,\n Location = \"us-central1\",\n BackupConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigArgs\n {\n IncludeVolumeData = true,\n IncludeSecrets = true,\n AllNamespaces = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkebackup\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"basic-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tWorkloadIdentityConfig: \u0026container.ClusterWorkloadIdentityConfigArgs{\n\t\t\t\tWorkloadPool: pulumi.String(\"my-project-name.svc.id.goog\"),\n\t\t\t},\n\t\t\tAddonsConfig: \u0026container.ClusterAddonsConfigArgs{\n\t\t\t\tGkeBackupAgentConfig: \u0026container.ClusterAddonsConfigGkeBackupAgentConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkebackup.NewBackupPlan(ctx, \"basic\", \u0026gkebackup.BackupPlanArgs{\n\t\t\tName: pulumi.String(\"basic-plan\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupConfig: \u0026gkebackup.BackupPlanBackupConfigArgs{\n\t\t\t\tIncludeVolumeData: pulumi.Bool(true),\n\t\t\t\tIncludeSecrets: pulumi.Bool(true),\n\t\t\t\tAllNamespaces: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterWorkloadIdentityConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs;\nimport com.pulumi.gcp.gkebackup.BackupPlan;\nimport com.pulumi.gcp.gkebackup.BackupPlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"basic-cluster\")\n .location(\"us-central1\")\n .initialNodeCount(1)\n .workloadIdentityConfig(ClusterWorkloadIdentityConfigArgs.builder()\n .workloadPool(\"my-project-name.svc.id.goog\")\n .build())\n .addonsConfig(ClusterAddonsConfigArgs.builder()\n .gkeBackupAgentConfig(ClusterAddonsConfigGkeBackupAgentConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .deletionProtection(\"true\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var basic = new BackupPlan(\"basic\", BackupPlanArgs.builder()\n .name(\"basic-plan\")\n .cluster(primary.id())\n .location(\"us-central1\")\n .backupConfig(BackupPlanBackupConfigArgs.builder()\n .includeVolumeData(true)\n .includeSecrets(true)\n .allNamespaces(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: basic-cluster\n location: us-central1\n initialNodeCount: 1\n workloadIdentityConfig:\n workloadPool: my-project-name.svc.id.goog\n addonsConfig:\n gkeBackupAgentConfig:\n enabled: true\n deletionProtection: 'true'\n network: default\n subnetwork: default\n basic:\n type: gcp:gkebackup:BackupPlan\n properties:\n name: basic-plan\n cluster: ${primary.id}\n location: us-central1\n backupConfig:\n includeVolumeData: true\n includeSecrets: true\n allNamespaces: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkebackup Backupplan Autopilot\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"autopilot-cluster\",\n location: \"us-central1\",\n enableAutopilot: true,\n ipAllocationPolicy: {},\n releaseChannel: {\n channel: \"RAPID\",\n },\n addonsConfig: {\n gkeBackupAgentConfig: {\n enabled: true,\n },\n },\n deletionProtection: true,\n network: \"default\",\n subnetwork: \"default\",\n});\nconst autopilot = new gcp.gkebackup.BackupPlan(\"autopilot\", {\n name: \"autopilot-plan\",\n cluster: primary.id,\n location: \"us-central1\",\n backupConfig: {\n includeVolumeData: true,\n includeSecrets: true,\n allNamespaces: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"autopilot-cluster\",\n location=\"us-central1\",\n enable_autopilot=True,\n ip_allocation_policy={},\n release_channel={\n \"channel\": \"RAPID\",\n },\n addons_config={\n \"gke_backup_agent_config\": {\n \"enabled\": True,\n },\n },\n deletion_protection=True,\n network=\"default\",\n subnetwork=\"default\")\nautopilot = gcp.gkebackup.BackupPlan(\"autopilot\",\n name=\"autopilot-plan\",\n cluster=primary.id,\n location=\"us-central1\",\n backup_config={\n \"include_volume_data\": True,\n \"include_secrets\": True,\n \"all_namespaces\": True,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"autopilot-cluster\",\n Location = \"us-central1\",\n EnableAutopilot = true,\n IpAllocationPolicy = null,\n ReleaseChannel = new Gcp.Container.Inputs.ClusterReleaseChannelArgs\n {\n Channel = \"RAPID\",\n },\n AddonsConfig = new Gcp.Container.Inputs.ClusterAddonsConfigArgs\n {\n GkeBackupAgentConfig = new Gcp.Container.Inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs\n {\n Enabled = true,\n },\n },\n DeletionProtection = true,\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var autopilot = new Gcp.GkeBackup.BackupPlan(\"autopilot\", new()\n {\n Name = \"autopilot-plan\",\n Cluster = primary.Id,\n Location = \"us-central1\",\n BackupConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigArgs\n {\n IncludeVolumeData = true,\n IncludeSecrets = true,\n AllNamespaces = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkebackup\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"autopilot-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tEnableAutopilot: pulumi.Bool(true),\n\t\t\tIpAllocationPolicy: nil,\n\t\t\tReleaseChannel: \u0026container.ClusterReleaseChannelArgs{\n\t\t\t\tChannel: pulumi.String(\"RAPID\"),\n\t\t\t},\n\t\t\tAddonsConfig: \u0026container.ClusterAddonsConfigArgs{\n\t\t\t\tGkeBackupAgentConfig: \u0026container.ClusterAddonsConfigGkeBackupAgentConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkebackup.NewBackupPlan(ctx, \"autopilot\", \u0026gkebackup.BackupPlanArgs{\n\t\t\tName: pulumi.String(\"autopilot-plan\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupConfig: \u0026gkebackup.BackupPlanBackupConfigArgs{\n\t\t\t\tIncludeVolumeData: pulumi.Bool(true),\n\t\t\t\tIncludeSecrets: pulumi.Bool(true),\n\t\t\t\tAllNamespaces: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterIpAllocationPolicyArgs;\nimport com.pulumi.gcp.container.inputs.ClusterReleaseChannelArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs;\nimport com.pulumi.gcp.gkebackup.BackupPlan;\nimport com.pulumi.gcp.gkebackup.BackupPlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"autopilot-cluster\")\n .location(\"us-central1\")\n .enableAutopilot(true)\n .ipAllocationPolicy()\n .releaseChannel(ClusterReleaseChannelArgs.builder()\n .channel(\"RAPID\")\n .build())\n .addonsConfig(ClusterAddonsConfigArgs.builder()\n .gkeBackupAgentConfig(ClusterAddonsConfigGkeBackupAgentConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .deletionProtection(\"true\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var autopilot = new BackupPlan(\"autopilot\", BackupPlanArgs.builder()\n .name(\"autopilot-plan\")\n .cluster(primary.id())\n .location(\"us-central1\")\n .backupConfig(BackupPlanBackupConfigArgs.builder()\n .includeVolumeData(true)\n .includeSecrets(true)\n .allNamespaces(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: autopilot-cluster\n location: us-central1\n enableAutopilot: true\n ipAllocationPolicy: {}\n releaseChannel:\n channel: RAPID\n addonsConfig:\n gkeBackupAgentConfig:\n enabled: true\n deletionProtection: 'true'\n network: default\n subnetwork: default\n autopilot:\n type: gcp:gkebackup:BackupPlan\n properties:\n name: autopilot-plan\n cluster: ${primary.id}\n location: us-central1\n backupConfig:\n includeVolumeData: true\n includeSecrets: true\n allNamespaces: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkebackup Backupplan Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"cmek-cluster\",\n location: \"us-central1\",\n initialNodeCount: 1,\n workloadIdentityConfig: {\n workloadPool: \"my-project-name.svc.id.goog\",\n },\n addonsConfig: {\n gkeBackupAgentConfig: {\n enabled: true,\n },\n },\n deletionProtection: true,\n network: \"default\",\n subnetwork: \"default\",\n});\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"backup-key\",\n location: \"us-central1\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"backup-key\",\n keyRing: keyRing.id,\n});\nconst cmek = new gcp.gkebackup.BackupPlan(\"cmek\", {\n name: \"cmek-plan\",\n cluster: primary.id,\n location: \"us-central1\",\n backupConfig: {\n includeVolumeData: true,\n includeSecrets: true,\n selectedNamespaces: {\n namespaces: [\n \"default\",\n \"test\",\n ],\n },\n encryptionKey: {\n gcpKmsEncryptionKey: cryptoKey.id,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"cmek-cluster\",\n location=\"us-central1\",\n initial_node_count=1,\n workload_identity_config={\n \"workload_pool\": \"my-project-name.svc.id.goog\",\n },\n addons_config={\n \"gke_backup_agent_config\": {\n \"enabled\": True,\n },\n },\n deletion_protection=True,\n network=\"default\",\n subnetwork=\"default\")\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"backup-key\",\n location=\"us-central1\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"backup-key\",\n key_ring=key_ring.id)\ncmek = gcp.gkebackup.BackupPlan(\"cmek\",\n name=\"cmek-plan\",\n cluster=primary.id,\n location=\"us-central1\",\n backup_config={\n \"include_volume_data\": True,\n \"include_secrets\": True,\n \"selected_namespaces\": {\n \"namespaces\": [\n \"default\",\n \"test\",\n ],\n },\n \"encryption_key\": {\n \"gcp_kms_encryption_key\": crypto_key.id,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"cmek-cluster\",\n Location = \"us-central1\",\n InitialNodeCount = 1,\n WorkloadIdentityConfig = new Gcp.Container.Inputs.ClusterWorkloadIdentityConfigArgs\n {\n WorkloadPool = \"my-project-name.svc.id.goog\",\n },\n AddonsConfig = new Gcp.Container.Inputs.ClusterAddonsConfigArgs\n {\n GkeBackupAgentConfig = new Gcp.Container.Inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs\n {\n Enabled = true,\n },\n },\n DeletionProtection = true,\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"backup-key\",\n Location = \"us-central1\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"backup-key\",\n KeyRing = keyRing.Id,\n });\n\n var cmek = new Gcp.GkeBackup.BackupPlan(\"cmek\", new()\n {\n Name = \"cmek-plan\",\n Cluster = primary.Id,\n Location = \"us-central1\",\n BackupConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigArgs\n {\n IncludeVolumeData = true,\n IncludeSecrets = true,\n SelectedNamespaces = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigSelectedNamespacesArgs\n {\n Namespaces = new[]\n {\n \"default\",\n \"test\",\n },\n },\n EncryptionKey = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigEncryptionKeyArgs\n {\n GcpKmsEncryptionKey = cryptoKey.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkebackup\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"cmek-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tWorkloadIdentityConfig: \u0026container.ClusterWorkloadIdentityConfigArgs{\n\t\t\t\tWorkloadPool: pulumi.String(\"my-project-name.svc.id.goog\"),\n\t\t\t},\n\t\t\tAddonsConfig: \u0026container.ClusterAddonsConfigArgs{\n\t\t\t\tGkeBackupAgentConfig: \u0026container.ClusterAddonsConfigGkeBackupAgentConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"backup-key\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"backup-key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkebackup.NewBackupPlan(ctx, \"cmek\", \u0026gkebackup.BackupPlanArgs{\n\t\t\tName: pulumi.String(\"cmek-plan\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupConfig: \u0026gkebackup.BackupPlanBackupConfigArgs{\n\t\t\t\tIncludeVolumeData: pulumi.Bool(true),\n\t\t\t\tIncludeSecrets: pulumi.Bool(true),\n\t\t\t\tSelectedNamespaces: \u0026gkebackup.BackupPlanBackupConfigSelectedNamespacesArgs{\n\t\t\t\t\tNamespaces: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"default\"),\n\t\t\t\t\t\tpulumi.String(\"test\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tEncryptionKey: \u0026gkebackup.BackupPlanBackupConfigEncryptionKeyArgs{\n\t\t\t\t\tGcpKmsEncryptionKey: cryptoKey.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterWorkloadIdentityConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.gkebackup.BackupPlan;\nimport com.pulumi.gcp.gkebackup.BackupPlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigSelectedNamespacesArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigEncryptionKeyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"cmek-cluster\")\n .location(\"us-central1\")\n .initialNodeCount(1)\n .workloadIdentityConfig(ClusterWorkloadIdentityConfigArgs.builder()\n .workloadPool(\"my-project-name.svc.id.goog\")\n .build())\n .addonsConfig(ClusterAddonsConfigArgs.builder()\n .gkeBackupAgentConfig(ClusterAddonsConfigGkeBackupAgentConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .deletionProtection(\"true\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"backup-key\")\n .location(\"us-central1\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"backup-key\")\n .keyRing(keyRing.id())\n .build());\n\n var cmek = new BackupPlan(\"cmek\", BackupPlanArgs.builder()\n .name(\"cmek-plan\")\n .cluster(primary.id())\n .location(\"us-central1\")\n .backupConfig(BackupPlanBackupConfigArgs.builder()\n .includeVolumeData(true)\n .includeSecrets(true)\n .selectedNamespaces(BackupPlanBackupConfigSelectedNamespacesArgs.builder()\n .namespaces( \n \"default\",\n \"test\")\n .build())\n .encryptionKey(BackupPlanBackupConfigEncryptionKeyArgs.builder()\n .gcpKmsEncryptionKey(cryptoKey.id())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: cmek-cluster\n location: us-central1\n initialNodeCount: 1\n workloadIdentityConfig:\n workloadPool: my-project-name.svc.id.goog\n addonsConfig:\n gkeBackupAgentConfig:\n enabled: true\n deletionProtection: 'true'\n network: default\n subnetwork: default\n cmek:\n type: gcp:gkebackup:BackupPlan\n properties:\n name: cmek-plan\n cluster: ${primary.id}\n location: us-central1\n backupConfig:\n includeVolumeData: true\n includeSecrets: true\n selectedNamespaces:\n namespaces:\n - default\n - test\n encryptionKey:\n gcpKmsEncryptionKey: ${cryptoKey.id}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: backup-key\n keyRing: ${keyRing.id}\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: backup-key\n location: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkebackup Backupplan Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"full-cluster\",\n location: \"us-central1\",\n initialNodeCount: 1,\n workloadIdentityConfig: {\n workloadPool: \"my-project-name.svc.id.goog\",\n },\n addonsConfig: {\n gkeBackupAgentConfig: {\n enabled: true,\n },\n },\n deletionProtection: true,\n network: \"default\",\n subnetwork: \"default\",\n});\nconst full = new gcp.gkebackup.BackupPlan(\"full\", {\n name: \"full-plan\",\n cluster: primary.id,\n location: \"us-central1\",\n retentionPolicy: {\n backupDeleteLockDays: 30,\n backupRetainDays: 180,\n },\n backupSchedule: {\n cronSchedule: \"0 9 * * 1\",\n },\n backupConfig: {\n includeVolumeData: true,\n includeSecrets: true,\n selectedApplications: {\n namespacedNames: [\n {\n name: \"app1\",\n namespace: \"ns1\",\n },\n {\n name: \"app2\",\n namespace: \"ns2\",\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"full-cluster\",\n location=\"us-central1\",\n initial_node_count=1,\n workload_identity_config={\n \"workload_pool\": \"my-project-name.svc.id.goog\",\n },\n addons_config={\n \"gke_backup_agent_config\": {\n \"enabled\": True,\n },\n },\n deletion_protection=True,\n network=\"default\",\n subnetwork=\"default\")\nfull = gcp.gkebackup.BackupPlan(\"full\",\n name=\"full-plan\",\n cluster=primary.id,\n location=\"us-central1\",\n retention_policy={\n \"backup_delete_lock_days\": 30,\n \"backup_retain_days\": 180,\n },\n backup_schedule={\n \"cron_schedule\": \"0 9 * * 1\",\n },\n backup_config={\n \"include_volume_data\": True,\n \"include_secrets\": True,\n \"selected_applications\": {\n \"namespaced_names\": [\n {\n \"name\": \"app1\",\n \"namespace\": \"ns1\",\n },\n {\n \"name\": \"app2\",\n \"namespace\": \"ns2\",\n },\n ],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"full-cluster\",\n Location = \"us-central1\",\n InitialNodeCount = 1,\n WorkloadIdentityConfig = new Gcp.Container.Inputs.ClusterWorkloadIdentityConfigArgs\n {\n WorkloadPool = \"my-project-name.svc.id.goog\",\n },\n AddonsConfig = new Gcp.Container.Inputs.ClusterAddonsConfigArgs\n {\n GkeBackupAgentConfig = new Gcp.Container.Inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs\n {\n Enabled = true,\n },\n },\n DeletionProtection = true,\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var full = new Gcp.GkeBackup.BackupPlan(\"full\", new()\n {\n Name = \"full-plan\",\n Cluster = primary.Id,\n Location = \"us-central1\",\n RetentionPolicy = new Gcp.GkeBackup.Inputs.BackupPlanRetentionPolicyArgs\n {\n BackupDeleteLockDays = 30,\n BackupRetainDays = 180,\n },\n BackupSchedule = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleArgs\n {\n CronSchedule = \"0 9 * * 1\",\n },\n BackupConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigArgs\n {\n IncludeVolumeData = true,\n IncludeSecrets = true,\n SelectedApplications = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigSelectedApplicationsArgs\n {\n NamespacedNames = new[]\n {\n new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs\n {\n Name = \"app1\",\n Namespace = \"ns1\",\n },\n new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs\n {\n Name = \"app2\",\n Namespace = \"ns2\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkebackup\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"full-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tWorkloadIdentityConfig: \u0026container.ClusterWorkloadIdentityConfigArgs{\n\t\t\t\tWorkloadPool: pulumi.String(\"my-project-name.svc.id.goog\"),\n\t\t\t},\n\t\t\tAddonsConfig: \u0026container.ClusterAddonsConfigArgs{\n\t\t\t\tGkeBackupAgentConfig: \u0026container.ClusterAddonsConfigGkeBackupAgentConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkebackup.NewBackupPlan(ctx, \"full\", \u0026gkebackup.BackupPlanArgs{\n\t\t\tName: pulumi.String(\"full-plan\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRetentionPolicy: \u0026gkebackup.BackupPlanRetentionPolicyArgs{\n\t\t\t\tBackupDeleteLockDays: pulumi.Int(30),\n\t\t\t\tBackupRetainDays: pulumi.Int(180),\n\t\t\t},\n\t\t\tBackupSchedule: \u0026gkebackup.BackupPlanBackupScheduleArgs{\n\t\t\t\tCronSchedule: pulumi.String(\"0 9 * * 1\"),\n\t\t\t},\n\t\t\tBackupConfig: \u0026gkebackup.BackupPlanBackupConfigArgs{\n\t\t\t\tIncludeVolumeData: pulumi.Bool(true),\n\t\t\t\tIncludeSecrets: pulumi.Bool(true),\n\t\t\t\tSelectedApplications: \u0026gkebackup.BackupPlanBackupConfigSelectedApplicationsArgs{\n\t\t\t\t\tNamespacedNames: gkebackup.BackupPlanBackupConfigSelectedApplicationsNamespacedNameArray{\n\t\t\t\t\t\t\u0026gkebackup.BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"app1\"),\n\t\t\t\t\t\t\tNamespace: pulumi.String(\"ns1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026gkebackup.BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"app2\"),\n\t\t\t\t\t\t\tNamespace: pulumi.String(\"ns2\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterWorkloadIdentityConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs;\nimport com.pulumi.gcp.gkebackup.BackupPlan;\nimport com.pulumi.gcp.gkebackup.BackupPlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanRetentionPolicyArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupScheduleArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigSelectedApplicationsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"full-cluster\")\n .location(\"us-central1\")\n .initialNodeCount(1)\n .workloadIdentityConfig(ClusterWorkloadIdentityConfigArgs.builder()\n .workloadPool(\"my-project-name.svc.id.goog\")\n .build())\n .addonsConfig(ClusterAddonsConfigArgs.builder()\n .gkeBackupAgentConfig(ClusterAddonsConfigGkeBackupAgentConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .deletionProtection(\"true\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var full = new BackupPlan(\"full\", BackupPlanArgs.builder()\n .name(\"full-plan\")\n .cluster(primary.id())\n .location(\"us-central1\")\n .retentionPolicy(BackupPlanRetentionPolicyArgs.builder()\n .backupDeleteLockDays(30)\n .backupRetainDays(180)\n .build())\n .backupSchedule(BackupPlanBackupScheduleArgs.builder()\n .cronSchedule(\"0 9 * * 1\")\n .build())\n .backupConfig(BackupPlanBackupConfigArgs.builder()\n .includeVolumeData(true)\n .includeSecrets(true)\n .selectedApplications(BackupPlanBackupConfigSelectedApplicationsArgs.builder()\n .namespacedNames( \n BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs.builder()\n .name(\"app1\")\n .namespace(\"ns1\")\n .build(),\n BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs.builder()\n .name(\"app2\")\n .namespace(\"ns2\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: full-cluster\n location: us-central1\n initialNodeCount: 1\n workloadIdentityConfig:\n workloadPool: my-project-name.svc.id.goog\n addonsConfig:\n gkeBackupAgentConfig:\n enabled: true\n deletionProtection: 'true'\n network: default\n subnetwork: default\n full:\n type: gcp:gkebackup:BackupPlan\n properties:\n name: full-plan\n cluster: ${primary.id}\n location: us-central1\n retentionPolicy:\n backupDeleteLockDays: 30\n backupRetainDays: 180\n backupSchedule:\n cronSchedule: 0 9 * * 1\n backupConfig:\n includeVolumeData: true\n includeSecrets: true\n selectedApplications:\n namespacedNames:\n - name: app1\n namespace: ns1\n - name: app2\n namespace: ns2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkebackup Backupplan Permissive\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"permissive-cluster\",\n location: \"us-central1\",\n initialNodeCount: 1,\n workloadIdentityConfig: {\n workloadPool: \"my-project-name.svc.id.goog\",\n },\n addonsConfig: {\n gkeBackupAgentConfig: {\n enabled: true,\n },\n },\n deletionProtection: true,\n network: \"default\",\n subnetwork: \"default\",\n});\nconst permissive = new gcp.gkebackup.BackupPlan(\"permissive\", {\n name: \"permissive-plan\",\n cluster: primary.id,\n location: \"us-central1\",\n retentionPolicy: {\n backupDeleteLockDays: 30,\n backupRetainDays: 180,\n },\n backupSchedule: {\n cronSchedule: \"0 9 * * 1\",\n },\n backupConfig: {\n includeVolumeData: true,\n includeSecrets: true,\n permissiveMode: true,\n selectedApplications: {\n namespacedNames: [\n {\n name: \"app1\",\n namespace: \"ns1\",\n },\n {\n name: \"app2\",\n namespace: \"ns2\",\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"permissive-cluster\",\n location=\"us-central1\",\n initial_node_count=1,\n workload_identity_config={\n \"workload_pool\": \"my-project-name.svc.id.goog\",\n },\n addons_config={\n \"gke_backup_agent_config\": {\n \"enabled\": True,\n },\n },\n deletion_protection=True,\n network=\"default\",\n subnetwork=\"default\")\npermissive = gcp.gkebackup.BackupPlan(\"permissive\",\n name=\"permissive-plan\",\n cluster=primary.id,\n location=\"us-central1\",\n retention_policy={\n \"backup_delete_lock_days\": 30,\n \"backup_retain_days\": 180,\n },\n backup_schedule={\n \"cron_schedule\": \"0 9 * * 1\",\n },\n backup_config={\n \"include_volume_data\": True,\n \"include_secrets\": True,\n \"permissive_mode\": True,\n \"selected_applications\": {\n \"namespaced_names\": [\n {\n \"name\": \"app1\",\n \"namespace\": \"ns1\",\n },\n {\n \"name\": \"app2\",\n \"namespace\": \"ns2\",\n },\n ],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"permissive-cluster\",\n Location = \"us-central1\",\n InitialNodeCount = 1,\n WorkloadIdentityConfig = new Gcp.Container.Inputs.ClusterWorkloadIdentityConfigArgs\n {\n WorkloadPool = \"my-project-name.svc.id.goog\",\n },\n AddonsConfig = new Gcp.Container.Inputs.ClusterAddonsConfigArgs\n {\n GkeBackupAgentConfig = new Gcp.Container.Inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs\n {\n Enabled = true,\n },\n },\n DeletionProtection = true,\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var permissive = new Gcp.GkeBackup.BackupPlan(\"permissive\", new()\n {\n Name = \"permissive-plan\",\n Cluster = primary.Id,\n Location = \"us-central1\",\n RetentionPolicy = new Gcp.GkeBackup.Inputs.BackupPlanRetentionPolicyArgs\n {\n BackupDeleteLockDays = 30,\n BackupRetainDays = 180,\n },\n BackupSchedule = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleArgs\n {\n CronSchedule = \"0 9 * * 1\",\n },\n BackupConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigArgs\n {\n IncludeVolumeData = true,\n IncludeSecrets = true,\n PermissiveMode = true,\n SelectedApplications = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigSelectedApplicationsArgs\n {\n NamespacedNames = new[]\n {\n new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs\n {\n Name = \"app1\",\n Namespace = \"ns1\",\n },\n new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs\n {\n Name = \"app2\",\n Namespace = \"ns2\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkebackup\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"permissive-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tWorkloadIdentityConfig: \u0026container.ClusterWorkloadIdentityConfigArgs{\n\t\t\t\tWorkloadPool: pulumi.String(\"my-project-name.svc.id.goog\"),\n\t\t\t},\n\t\t\tAddonsConfig: \u0026container.ClusterAddonsConfigArgs{\n\t\t\t\tGkeBackupAgentConfig: \u0026container.ClusterAddonsConfigGkeBackupAgentConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkebackup.NewBackupPlan(ctx, \"permissive\", \u0026gkebackup.BackupPlanArgs{\n\t\t\tName: pulumi.String(\"permissive-plan\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRetentionPolicy: \u0026gkebackup.BackupPlanRetentionPolicyArgs{\n\t\t\t\tBackupDeleteLockDays: pulumi.Int(30),\n\t\t\t\tBackupRetainDays: pulumi.Int(180),\n\t\t\t},\n\t\t\tBackupSchedule: \u0026gkebackup.BackupPlanBackupScheduleArgs{\n\t\t\t\tCronSchedule: pulumi.String(\"0 9 * * 1\"),\n\t\t\t},\n\t\t\tBackupConfig: \u0026gkebackup.BackupPlanBackupConfigArgs{\n\t\t\t\tIncludeVolumeData: pulumi.Bool(true),\n\t\t\t\tIncludeSecrets: pulumi.Bool(true),\n\t\t\t\tPermissiveMode: pulumi.Bool(true),\n\t\t\t\tSelectedApplications: \u0026gkebackup.BackupPlanBackupConfigSelectedApplicationsArgs{\n\t\t\t\t\tNamespacedNames: gkebackup.BackupPlanBackupConfigSelectedApplicationsNamespacedNameArray{\n\t\t\t\t\t\t\u0026gkebackup.BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"app1\"),\n\t\t\t\t\t\t\tNamespace: pulumi.String(\"ns1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026gkebackup.BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"app2\"),\n\t\t\t\t\t\t\tNamespace: pulumi.String(\"ns2\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterWorkloadIdentityConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs;\nimport com.pulumi.gcp.gkebackup.BackupPlan;\nimport com.pulumi.gcp.gkebackup.BackupPlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanRetentionPolicyArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupScheduleArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigSelectedApplicationsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"permissive-cluster\")\n .location(\"us-central1\")\n .initialNodeCount(1)\n .workloadIdentityConfig(ClusterWorkloadIdentityConfigArgs.builder()\n .workloadPool(\"my-project-name.svc.id.goog\")\n .build())\n .addonsConfig(ClusterAddonsConfigArgs.builder()\n .gkeBackupAgentConfig(ClusterAddonsConfigGkeBackupAgentConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .deletionProtection(\"true\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var permissive = new BackupPlan(\"permissive\", BackupPlanArgs.builder()\n .name(\"permissive-plan\")\n .cluster(primary.id())\n .location(\"us-central1\")\n .retentionPolicy(BackupPlanRetentionPolicyArgs.builder()\n .backupDeleteLockDays(30)\n .backupRetainDays(180)\n .build())\n .backupSchedule(BackupPlanBackupScheduleArgs.builder()\n .cronSchedule(\"0 9 * * 1\")\n .build())\n .backupConfig(BackupPlanBackupConfigArgs.builder()\n .includeVolumeData(true)\n .includeSecrets(true)\n .permissiveMode(true)\n .selectedApplications(BackupPlanBackupConfigSelectedApplicationsArgs.builder()\n .namespacedNames( \n BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs.builder()\n .name(\"app1\")\n .namespace(\"ns1\")\n .build(),\n BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs.builder()\n .name(\"app2\")\n .namespace(\"ns2\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: permissive-cluster\n location: us-central1\n initialNodeCount: 1\n workloadIdentityConfig:\n workloadPool: my-project-name.svc.id.goog\n addonsConfig:\n gkeBackupAgentConfig:\n enabled: true\n deletionProtection: 'true'\n network: default\n subnetwork: default\n permissive:\n type: gcp:gkebackup:BackupPlan\n properties:\n name: permissive-plan\n cluster: ${primary.id}\n location: us-central1\n retentionPolicy:\n backupDeleteLockDays: 30\n backupRetainDays: 180\n backupSchedule:\n cronSchedule: 0 9 * * 1\n backupConfig:\n includeVolumeData: true\n includeSecrets: true\n permissiveMode: true\n selectedApplications:\n namespacedNames:\n - name: app1\n namespace: ns1\n - name: app2\n namespace: ns2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkebackup Backupplan Rpo Daily Window\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"rpo-daily-cluster\",\n location: \"us-central1\",\n initialNodeCount: 1,\n workloadIdentityConfig: {\n workloadPool: \"my-project-name.svc.id.goog\",\n },\n addonsConfig: {\n gkeBackupAgentConfig: {\n enabled: true,\n },\n },\n deletionProtection: true,\n network: \"default\",\n subnetwork: \"default\",\n});\nconst rpoDailyWindow = new gcp.gkebackup.BackupPlan(\"rpo_daily_window\", {\n name: \"rpo-daily-window\",\n cluster: primary.id,\n location: \"us-central1\",\n retentionPolicy: {\n backupDeleteLockDays: 30,\n backupRetainDays: 180,\n },\n backupSchedule: {\n paused: true,\n rpoConfig: {\n targetRpoMinutes: 1440,\n exclusionWindows: [\n {\n startTime: {\n hours: 12,\n },\n duration: \"7200s\",\n daily: true,\n },\n {\n startTime: {\n hours: 8,\n minutes: 40,\n seconds: 1,\n nanos: 100,\n },\n duration: \"3600s\",\n singleOccurrenceDate: {\n year: 2024,\n month: 3,\n day: 16,\n },\n },\n ],\n },\n },\n backupConfig: {\n includeVolumeData: true,\n includeSecrets: true,\n allNamespaces: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"rpo-daily-cluster\",\n location=\"us-central1\",\n initial_node_count=1,\n workload_identity_config={\n \"workload_pool\": \"my-project-name.svc.id.goog\",\n },\n addons_config={\n \"gke_backup_agent_config\": {\n \"enabled\": True,\n },\n },\n deletion_protection=True,\n network=\"default\",\n subnetwork=\"default\")\nrpo_daily_window = gcp.gkebackup.BackupPlan(\"rpo_daily_window\",\n name=\"rpo-daily-window\",\n cluster=primary.id,\n location=\"us-central1\",\n retention_policy={\n \"backup_delete_lock_days\": 30,\n \"backup_retain_days\": 180,\n },\n backup_schedule={\n \"paused\": True,\n \"rpo_config\": {\n \"target_rpo_minutes\": 1440,\n \"exclusion_windows\": [\n {\n \"start_time\": {\n \"hours\": 12,\n },\n \"duration\": \"7200s\",\n \"daily\": True,\n },\n {\n \"start_time\": {\n \"hours\": 8,\n \"minutes\": 40,\n \"seconds\": 1,\n \"nanos\": 100,\n },\n \"duration\": \"3600s\",\n \"single_occurrence_date\": {\n \"year\": 2024,\n \"month\": 3,\n \"day\": 16,\n },\n },\n ],\n },\n },\n backup_config={\n \"include_volume_data\": True,\n \"include_secrets\": True,\n \"all_namespaces\": True,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"rpo-daily-cluster\",\n Location = \"us-central1\",\n InitialNodeCount = 1,\n WorkloadIdentityConfig = new Gcp.Container.Inputs.ClusterWorkloadIdentityConfigArgs\n {\n WorkloadPool = \"my-project-name.svc.id.goog\",\n },\n AddonsConfig = new Gcp.Container.Inputs.ClusterAddonsConfigArgs\n {\n GkeBackupAgentConfig = new Gcp.Container.Inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs\n {\n Enabled = true,\n },\n },\n DeletionProtection = true,\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var rpoDailyWindow = new Gcp.GkeBackup.BackupPlan(\"rpo_daily_window\", new()\n {\n Name = \"rpo-daily-window\",\n Cluster = primary.Id,\n Location = \"us-central1\",\n RetentionPolicy = new Gcp.GkeBackup.Inputs.BackupPlanRetentionPolicyArgs\n {\n BackupDeleteLockDays = 30,\n BackupRetainDays = 180,\n },\n BackupSchedule = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleArgs\n {\n Paused = true,\n RpoConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigArgs\n {\n TargetRpoMinutes = 1440,\n ExclusionWindows = new[]\n {\n new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowArgs\n {\n StartTime = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs\n {\n Hours = 12,\n },\n Duration = \"7200s\",\n Daily = true,\n },\n new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowArgs\n {\n StartTime = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs\n {\n Hours = 8,\n Minutes = 40,\n Seconds = 1,\n Nanos = 100,\n },\n Duration = \"3600s\",\n SingleOccurrenceDate = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowSingleOccurrenceDateArgs\n {\n Year = 2024,\n Month = 3,\n Day = 16,\n },\n },\n },\n },\n },\n BackupConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigArgs\n {\n IncludeVolumeData = true,\n IncludeSecrets = true,\n AllNamespaces = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkebackup\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"rpo-daily-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tWorkloadIdentityConfig: \u0026container.ClusterWorkloadIdentityConfigArgs{\n\t\t\t\tWorkloadPool: pulumi.String(\"my-project-name.svc.id.goog\"),\n\t\t\t},\n\t\t\tAddonsConfig: \u0026container.ClusterAddonsConfigArgs{\n\t\t\t\tGkeBackupAgentConfig: \u0026container.ClusterAddonsConfigGkeBackupAgentConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkebackup.NewBackupPlan(ctx, \"rpo_daily_window\", \u0026gkebackup.BackupPlanArgs{\n\t\t\tName: pulumi.String(\"rpo-daily-window\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRetentionPolicy: \u0026gkebackup.BackupPlanRetentionPolicyArgs{\n\t\t\t\tBackupDeleteLockDays: pulumi.Int(30),\n\t\t\t\tBackupRetainDays: pulumi.Int(180),\n\t\t\t},\n\t\t\tBackupSchedule: \u0026gkebackup.BackupPlanBackupScheduleArgs{\n\t\t\t\tPaused: pulumi.Bool(true),\n\t\t\t\tRpoConfig: \u0026gkebackup.BackupPlanBackupScheduleRpoConfigArgs{\n\t\t\t\t\tTargetRpoMinutes: pulumi.Int(1440),\n\t\t\t\t\tExclusionWindows: gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowArray{\n\t\t\t\t\t\t\u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowArgs{\n\t\t\t\t\t\t\tStartTime: \u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs{\n\t\t\t\t\t\t\t\tHours: pulumi.Int(12),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tDuration: pulumi.String(\"7200s\"),\n\t\t\t\t\t\t\tDaily: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowArgs{\n\t\t\t\t\t\t\tStartTime: \u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs{\n\t\t\t\t\t\t\t\tHours: pulumi.Int(8),\n\t\t\t\t\t\t\t\tMinutes: pulumi.Int(40),\n\t\t\t\t\t\t\t\tSeconds: pulumi.Int(1),\n\t\t\t\t\t\t\t\tNanos: pulumi.Int(100),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tDuration: pulumi.String(\"3600s\"),\n\t\t\t\t\t\t\tSingleOccurrenceDate: \u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowSingleOccurrenceDateArgs{\n\t\t\t\t\t\t\t\tYear: pulumi.Int(2024),\n\t\t\t\t\t\t\t\tMonth: pulumi.Int(3),\n\t\t\t\t\t\t\t\tDay: pulumi.Int(16),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBackupConfig: \u0026gkebackup.BackupPlanBackupConfigArgs{\n\t\t\t\tIncludeVolumeData: pulumi.Bool(true),\n\t\t\t\tIncludeSecrets: pulumi.Bool(true),\n\t\t\t\tAllNamespaces: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterWorkloadIdentityConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs;\nimport com.pulumi.gcp.gkebackup.BackupPlan;\nimport com.pulumi.gcp.gkebackup.BackupPlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanRetentionPolicyArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupScheduleArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupScheduleRpoConfigArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"rpo-daily-cluster\")\n .location(\"us-central1\")\n .initialNodeCount(1)\n .workloadIdentityConfig(ClusterWorkloadIdentityConfigArgs.builder()\n .workloadPool(\"my-project-name.svc.id.goog\")\n .build())\n .addonsConfig(ClusterAddonsConfigArgs.builder()\n .gkeBackupAgentConfig(ClusterAddonsConfigGkeBackupAgentConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .deletionProtection(\"true\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var rpoDailyWindow = new BackupPlan(\"rpoDailyWindow\", BackupPlanArgs.builder()\n .name(\"rpo-daily-window\")\n .cluster(primary.id())\n .location(\"us-central1\")\n .retentionPolicy(BackupPlanRetentionPolicyArgs.builder()\n .backupDeleteLockDays(30)\n .backupRetainDays(180)\n .build())\n .backupSchedule(BackupPlanBackupScheduleArgs.builder()\n .paused(true)\n .rpoConfig(BackupPlanBackupScheduleRpoConfigArgs.builder()\n .targetRpoMinutes(1440)\n .exclusionWindows( \n BackupPlanBackupScheduleRpoConfigExclusionWindowArgs.builder()\n .startTime(BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs.builder()\n .hours(12)\n .build())\n .duration(\"7200s\")\n .daily(true)\n .build(),\n BackupPlanBackupScheduleRpoConfigExclusionWindowArgs.builder()\n .startTime(BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs.builder()\n .hours(8)\n .minutes(40)\n .seconds(1)\n .nanos(100)\n .build())\n .duration(\"3600s\")\n .singleOccurrenceDate(BackupPlanBackupScheduleRpoConfigExclusionWindowSingleOccurrenceDateArgs.builder()\n .year(2024)\n .month(3)\n .day(16)\n .build())\n .build())\n .build())\n .build())\n .backupConfig(BackupPlanBackupConfigArgs.builder()\n .includeVolumeData(true)\n .includeSecrets(true)\n .allNamespaces(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: rpo-daily-cluster\n location: us-central1\n initialNodeCount: 1\n workloadIdentityConfig:\n workloadPool: my-project-name.svc.id.goog\n addonsConfig:\n gkeBackupAgentConfig:\n enabled: true\n deletionProtection: 'true'\n network: default\n subnetwork: default\n rpoDailyWindow:\n type: gcp:gkebackup:BackupPlan\n name: rpo_daily_window\n properties:\n name: rpo-daily-window\n cluster: ${primary.id}\n location: us-central1\n retentionPolicy:\n backupDeleteLockDays: 30\n backupRetainDays: 180\n backupSchedule:\n paused: true\n rpoConfig:\n targetRpoMinutes: 1440\n exclusionWindows:\n - startTime:\n hours: 12\n duration: 7200s\n daily: true\n - startTime:\n hours: 8\n minutes: 40\n seconds: 1\n nanos: 100\n duration: 3600s\n singleOccurrenceDate:\n year: 2024\n month: 3\n day: 16\n backupConfig:\n includeVolumeData: true\n includeSecrets: true\n allNamespaces: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkebackup Backupplan Rpo Weekly Window\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"rpo-weekly-cluster\",\n location: \"us-central1\",\n initialNodeCount: 1,\n workloadIdentityConfig: {\n workloadPool: \"my-project-name.svc.id.goog\",\n },\n addonsConfig: {\n gkeBackupAgentConfig: {\n enabled: true,\n },\n },\n deletionProtection: true,\n network: \"default\",\n subnetwork: \"default\",\n});\nconst rpoWeeklyWindow = new gcp.gkebackup.BackupPlan(\"rpo_weekly_window\", {\n name: \"rpo-weekly-window\",\n cluster: primary.id,\n location: \"us-central1\",\n retentionPolicy: {\n backupDeleteLockDays: 30,\n backupRetainDays: 180,\n },\n backupSchedule: {\n paused: true,\n rpoConfig: {\n targetRpoMinutes: 1440,\n exclusionWindows: [\n {\n startTime: {\n hours: 1,\n minutes: 23,\n },\n duration: \"1800s\",\n daysOfWeek: {\n daysOfWeeks: [\n \"MONDAY\",\n \"THURSDAY\",\n ],\n },\n },\n {\n startTime: {\n hours: 12,\n },\n duration: \"3600s\",\n singleOccurrenceDate: {\n year: 2024,\n month: 3,\n day: 17,\n },\n },\n {\n startTime: {\n hours: 8,\n minutes: 40,\n },\n duration: \"600s\",\n singleOccurrenceDate: {\n year: 2024,\n month: 3,\n day: 18,\n },\n },\n ],\n },\n },\n backupConfig: {\n includeVolumeData: true,\n includeSecrets: true,\n allNamespaces: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"rpo-weekly-cluster\",\n location=\"us-central1\",\n initial_node_count=1,\n workload_identity_config={\n \"workload_pool\": \"my-project-name.svc.id.goog\",\n },\n addons_config={\n \"gke_backup_agent_config\": {\n \"enabled\": True,\n },\n },\n deletion_protection=True,\n network=\"default\",\n subnetwork=\"default\")\nrpo_weekly_window = gcp.gkebackup.BackupPlan(\"rpo_weekly_window\",\n name=\"rpo-weekly-window\",\n cluster=primary.id,\n location=\"us-central1\",\n retention_policy={\n \"backup_delete_lock_days\": 30,\n \"backup_retain_days\": 180,\n },\n backup_schedule={\n \"paused\": True,\n \"rpo_config\": {\n \"target_rpo_minutes\": 1440,\n \"exclusion_windows\": [\n {\n \"start_time\": {\n \"hours\": 1,\n \"minutes\": 23,\n },\n \"duration\": \"1800s\",\n \"days_of_week\": {\n \"days_of_weeks\": [\n \"MONDAY\",\n \"THURSDAY\",\n ],\n },\n },\n {\n \"start_time\": {\n \"hours\": 12,\n },\n \"duration\": \"3600s\",\n \"single_occurrence_date\": {\n \"year\": 2024,\n \"month\": 3,\n \"day\": 17,\n },\n },\n {\n \"start_time\": {\n \"hours\": 8,\n \"minutes\": 40,\n },\n \"duration\": \"600s\",\n \"single_occurrence_date\": {\n \"year\": 2024,\n \"month\": 3,\n \"day\": 18,\n },\n },\n ],\n },\n },\n backup_config={\n \"include_volume_data\": True,\n \"include_secrets\": True,\n \"all_namespaces\": True,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"rpo-weekly-cluster\",\n Location = \"us-central1\",\n InitialNodeCount = 1,\n WorkloadIdentityConfig = new Gcp.Container.Inputs.ClusterWorkloadIdentityConfigArgs\n {\n WorkloadPool = \"my-project-name.svc.id.goog\",\n },\n AddonsConfig = new Gcp.Container.Inputs.ClusterAddonsConfigArgs\n {\n GkeBackupAgentConfig = new Gcp.Container.Inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs\n {\n Enabled = true,\n },\n },\n DeletionProtection = true,\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var rpoWeeklyWindow = new Gcp.GkeBackup.BackupPlan(\"rpo_weekly_window\", new()\n {\n Name = \"rpo-weekly-window\",\n Cluster = primary.Id,\n Location = \"us-central1\",\n RetentionPolicy = new Gcp.GkeBackup.Inputs.BackupPlanRetentionPolicyArgs\n {\n BackupDeleteLockDays = 30,\n BackupRetainDays = 180,\n },\n BackupSchedule = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleArgs\n {\n Paused = true,\n RpoConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigArgs\n {\n TargetRpoMinutes = 1440,\n ExclusionWindows = new[]\n {\n new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowArgs\n {\n StartTime = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs\n {\n Hours = 1,\n Minutes = 23,\n },\n Duration = \"1800s\",\n DaysOfWeek = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowDaysOfWeekArgs\n {\n DaysOfWeeks = new[]\n {\n \"MONDAY\",\n \"THURSDAY\",\n },\n },\n },\n new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowArgs\n {\n StartTime = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs\n {\n Hours = 12,\n },\n Duration = \"3600s\",\n SingleOccurrenceDate = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowSingleOccurrenceDateArgs\n {\n Year = 2024,\n Month = 3,\n Day = 17,\n },\n },\n new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowArgs\n {\n StartTime = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs\n {\n Hours = 8,\n Minutes = 40,\n },\n Duration = \"600s\",\n SingleOccurrenceDate = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowSingleOccurrenceDateArgs\n {\n Year = 2024,\n Month = 3,\n Day = 18,\n },\n },\n },\n },\n },\n BackupConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigArgs\n {\n IncludeVolumeData = true,\n IncludeSecrets = true,\n AllNamespaces = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkebackup\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"rpo-weekly-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tWorkloadIdentityConfig: \u0026container.ClusterWorkloadIdentityConfigArgs{\n\t\t\t\tWorkloadPool: pulumi.String(\"my-project-name.svc.id.goog\"),\n\t\t\t},\n\t\t\tAddonsConfig: \u0026container.ClusterAddonsConfigArgs{\n\t\t\t\tGkeBackupAgentConfig: \u0026container.ClusterAddonsConfigGkeBackupAgentConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkebackup.NewBackupPlan(ctx, \"rpo_weekly_window\", \u0026gkebackup.BackupPlanArgs{\n\t\t\tName: pulumi.String(\"rpo-weekly-window\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRetentionPolicy: \u0026gkebackup.BackupPlanRetentionPolicyArgs{\n\t\t\t\tBackupDeleteLockDays: pulumi.Int(30),\n\t\t\t\tBackupRetainDays: pulumi.Int(180),\n\t\t\t},\n\t\t\tBackupSchedule: \u0026gkebackup.BackupPlanBackupScheduleArgs{\n\t\t\t\tPaused: pulumi.Bool(true),\n\t\t\t\tRpoConfig: \u0026gkebackup.BackupPlanBackupScheduleRpoConfigArgs{\n\t\t\t\t\tTargetRpoMinutes: pulumi.Int(1440),\n\t\t\t\t\tExclusionWindows: gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowArray{\n\t\t\t\t\t\t\u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowArgs{\n\t\t\t\t\t\t\tStartTime: \u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs{\n\t\t\t\t\t\t\t\tHours: pulumi.Int(1),\n\t\t\t\t\t\t\t\tMinutes: pulumi.Int(23),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tDuration: pulumi.String(\"1800s\"),\n\t\t\t\t\t\t\tDaysOfWeek: \u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowDaysOfWeekArgs{\n\t\t\t\t\t\t\t\tDaysOfWeeks: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"MONDAY\"),\n\t\t\t\t\t\t\t\t\tpulumi.String(\"THURSDAY\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowArgs{\n\t\t\t\t\t\t\tStartTime: \u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs{\n\t\t\t\t\t\t\t\tHours: pulumi.Int(12),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tDuration: pulumi.String(\"3600s\"),\n\t\t\t\t\t\t\tSingleOccurrenceDate: \u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowSingleOccurrenceDateArgs{\n\t\t\t\t\t\t\t\tYear: pulumi.Int(2024),\n\t\t\t\t\t\t\t\tMonth: pulumi.Int(3),\n\t\t\t\t\t\t\t\tDay: pulumi.Int(17),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowArgs{\n\t\t\t\t\t\t\tStartTime: \u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs{\n\t\t\t\t\t\t\t\tHours: pulumi.Int(8),\n\t\t\t\t\t\t\t\tMinutes: pulumi.Int(40),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tDuration: pulumi.String(\"600s\"),\n\t\t\t\t\t\t\tSingleOccurrenceDate: \u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowSingleOccurrenceDateArgs{\n\t\t\t\t\t\t\t\tYear: pulumi.Int(2024),\n\t\t\t\t\t\t\t\tMonth: pulumi.Int(3),\n\t\t\t\t\t\t\t\tDay: pulumi.Int(18),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBackupConfig: \u0026gkebackup.BackupPlanBackupConfigArgs{\n\t\t\t\tIncludeVolumeData: pulumi.Bool(true),\n\t\t\t\tIncludeSecrets: pulumi.Bool(true),\n\t\t\t\tAllNamespaces: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterWorkloadIdentityConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs;\nimport com.pulumi.gcp.gkebackup.BackupPlan;\nimport com.pulumi.gcp.gkebackup.BackupPlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanRetentionPolicyArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupScheduleArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupScheduleRpoConfigArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"rpo-weekly-cluster\")\n .location(\"us-central1\")\n .initialNodeCount(1)\n .workloadIdentityConfig(ClusterWorkloadIdentityConfigArgs.builder()\n .workloadPool(\"my-project-name.svc.id.goog\")\n .build())\n .addonsConfig(ClusterAddonsConfigArgs.builder()\n .gkeBackupAgentConfig(ClusterAddonsConfigGkeBackupAgentConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .deletionProtection(\"true\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var rpoWeeklyWindow = new BackupPlan(\"rpoWeeklyWindow\", BackupPlanArgs.builder()\n .name(\"rpo-weekly-window\")\n .cluster(primary.id())\n .location(\"us-central1\")\n .retentionPolicy(BackupPlanRetentionPolicyArgs.builder()\n .backupDeleteLockDays(30)\n .backupRetainDays(180)\n .build())\n .backupSchedule(BackupPlanBackupScheduleArgs.builder()\n .paused(true)\n .rpoConfig(BackupPlanBackupScheduleRpoConfigArgs.builder()\n .targetRpoMinutes(1440)\n .exclusionWindows( \n BackupPlanBackupScheduleRpoConfigExclusionWindowArgs.builder()\n .startTime(BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs.builder()\n .hours(1)\n .minutes(23)\n .build())\n .duration(\"1800s\")\n .daysOfWeek(BackupPlanBackupScheduleRpoConfigExclusionWindowDaysOfWeekArgs.builder()\n .daysOfWeeks( \n \"MONDAY\",\n \"THURSDAY\")\n .build())\n .build(),\n BackupPlanBackupScheduleRpoConfigExclusionWindowArgs.builder()\n .startTime(BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs.builder()\n .hours(12)\n .build())\n .duration(\"3600s\")\n .singleOccurrenceDate(BackupPlanBackupScheduleRpoConfigExclusionWindowSingleOccurrenceDateArgs.builder()\n .year(2024)\n .month(3)\n .day(17)\n .build())\n .build(),\n BackupPlanBackupScheduleRpoConfigExclusionWindowArgs.builder()\n .startTime(BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs.builder()\n .hours(8)\n .minutes(40)\n .build())\n .duration(\"600s\")\n .singleOccurrenceDate(BackupPlanBackupScheduleRpoConfigExclusionWindowSingleOccurrenceDateArgs.builder()\n .year(2024)\n .month(3)\n .day(18)\n .build())\n .build())\n .build())\n .build())\n .backupConfig(BackupPlanBackupConfigArgs.builder()\n .includeVolumeData(true)\n .includeSecrets(true)\n .allNamespaces(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: rpo-weekly-cluster\n location: us-central1\n initialNodeCount: 1\n workloadIdentityConfig:\n workloadPool: my-project-name.svc.id.goog\n addonsConfig:\n gkeBackupAgentConfig:\n enabled: true\n deletionProtection: 'true'\n network: default\n subnetwork: default\n rpoWeeklyWindow:\n type: gcp:gkebackup:BackupPlan\n name: rpo_weekly_window\n properties:\n name: rpo-weekly-window\n cluster: ${primary.id}\n location: us-central1\n retentionPolicy:\n backupDeleteLockDays: 30\n backupRetainDays: 180\n backupSchedule:\n paused: true\n rpoConfig:\n targetRpoMinutes: 1440\n exclusionWindows:\n - startTime:\n hours: 1\n minutes: 23\n duration: 1800s\n daysOfWeek:\n daysOfWeeks:\n - MONDAY\n - THURSDAY\n - startTime:\n hours: 12\n duration: 3600s\n singleOccurrenceDate:\n year: 2024\n month: 3\n day: 17\n - startTime:\n hours: 8\n minutes: 40\n duration: 600s\n singleOccurrenceDate:\n year: 2024\n month: 3\n day: 18\n backupConfig:\n includeVolumeData: true\n includeSecrets: true\n allNamespaces: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBackupPlan can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/backupPlans/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, BackupPlan can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:gkebackup/backupPlan:BackupPlan default projects/{{project}}/locations/{{location}}/backupPlans/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkebackup/backupPlan:BackupPlan default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkebackup/backupPlan:BackupPlan default {{location}}/{{name}}\n```\n\n", + "description": "Represents a Backup Plan instance.\n\n\nTo get more information about BackupPlan, see:\n\n* [API documentation](https://cloud.google.com/kubernetes-engine/docs/add-on/backup-for-gke/reference/rest/v1/projects.locations.backupPlans)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/kubernetes-engine/docs/add-on/backup-for-gke)\n\n## Example Usage\n\n### Gkebackup Backupplan Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"basic-cluster\",\n location: \"us-central1\",\n initialNodeCount: 1,\n workloadIdentityConfig: {\n workloadPool: \"my-project-name.svc.id.goog\",\n },\n addonsConfig: {\n gkeBackupAgentConfig: {\n enabled: true,\n },\n },\n deletionProtection: true,\n network: \"default\",\n subnetwork: \"default\",\n});\nconst basic = new gcp.gkebackup.BackupPlan(\"basic\", {\n name: \"basic-plan\",\n cluster: primary.id,\n location: \"us-central1\",\n backupConfig: {\n includeVolumeData: true,\n includeSecrets: true,\n allNamespaces: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"basic-cluster\",\n location=\"us-central1\",\n initial_node_count=1,\n workload_identity_config={\n \"workload_pool\": \"my-project-name.svc.id.goog\",\n },\n addons_config={\n \"gke_backup_agent_config\": {\n \"enabled\": True,\n },\n },\n deletion_protection=True,\n network=\"default\",\n subnetwork=\"default\")\nbasic = gcp.gkebackup.BackupPlan(\"basic\",\n name=\"basic-plan\",\n cluster=primary.id,\n location=\"us-central1\",\n backup_config={\n \"include_volume_data\": True,\n \"include_secrets\": True,\n \"all_namespaces\": True,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"basic-cluster\",\n Location = \"us-central1\",\n InitialNodeCount = 1,\n WorkloadIdentityConfig = new Gcp.Container.Inputs.ClusterWorkloadIdentityConfigArgs\n {\n WorkloadPool = \"my-project-name.svc.id.goog\",\n },\n AddonsConfig = new Gcp.Container.Inputs.ClusterAddonsConfigArgs\n {\n GkeBackupAgentConfig = new Gcp.Container.Inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs\n {\n Enabled = true,\n },\n },\n DeletionProtection = true,\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var basic = new Gcp.GkeBackup.BackupPlan(\"basic\", new()\n {\n Name = \"basic-plan\",\n Cluster = primary.Id,\n Location = \"us-central1\",\n BackupConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigArgs\n {\n IncludeVolumeData = true,\n IncludeSecrets = true,\n AllNamespaces = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkebackup\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"basic-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tWorkloadIdentityConfig: \u0026container.ClusterWorkloadIdentityConfigArgs{\n\t\t\t\tWorkloadPool: pulumi.String(\"my-project-name.svc.id.goog\"),\n\t\t\t},\n\t\t\tAddonsConfig: \u0026container.ClusterAddonsConfigArgs{\n\t\t\t\tGkeBackupAgentConfig: \u0026container.ClusterAddonsConfigGkeBackupAgentConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkebackup.NewBackupPlan(ctx, \"basic\", \u0026gkebackup.BackupPlanArgs{\n\t\t\tName: pulumi.String(\"basic-plan\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupConfig: \u0026gkebackup.BackupPlanBackupConfigArgs{\n\t\t\t\tIncludeVolumeData: pulumi.Bool(true),\n\t\t\t\tIncludeSecrets: pulumi.Bool(true),\n\t\t\t\tAllNamespaces: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterWorkloadIdentityConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs;\nimport com.pulumi.gcp.gkebackup.BackupPlan;\nimport com.pulumi.gcp.gkebackup.BackupPlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"basic-cluster\")\n .location(\"us-central1\")\n .initialNodeCount(1)\n .workloadIdentityConfig(ClusterWorkloadIdentityConfigArgs.builder()\n .workloadPool(\"my-project-name.svc.id.goog\")\n .build())\n .addonsConfig(ClusterAddonsConfigArgs.builder()\n .gkeBackupAgentConfig(ClusterAddonsConfigGkeBackupAgentConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .deletionProtection(\"true\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var basic = new BackupPlan(\"basic\", BackupPlanArgs.builder()\n .name(\"basic-plan\")\n .cluster(primary.id())\n .location(\"us-central1\")\n .backupConfig(BackupPlanBackupConfigArgs.builder()\n .includeVolumeData(true)\n .includeSecrets(true)\n .allNamespaces(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: basic-cluster\n location: us-central1\n initialNodeCount: 1\n workloadIdentityConfig:\n workloadPool: my-project-name.svc.id.goog\n addonsConfig:\n gkeBackupAgentConfig:\n enabled: true\n deletionProtection: 'true'\n network: default\n subnetwork: default\n basic:\n type: gcp:gkebackup:BackupPlan\n properties:\n name: basic-plan\n cluster: ${primary.id}\n location: us-central1\n backupConfig:\n includeVolumeData: true\n includeSecrets: true\n allNamespaces: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkebackup Backupplan Autopilot\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"autopilot-cluster\",\n location: \"us-central1\",\n enableAutopilot: true,\n ipAllocationPolicy: {},\n releaseChannel: {\n channel: \"RAPID\",\n },\n addonsConfig: {\n gkeBackupAgentConfig: {\n enabled: true,\n },\n },\n deletionProtection: true,\n network: \"default\",\n subnetwork: \"default\",\n});\nconst autopilot = new gcp.gkebackup.BackupPlan(\"autopilot\", {\n name: \"autopilot-plan\",\n cluster: primary.id,\n location: \"us-central1\",\n backupConfig: {\n includeVolumeData: true,\n includeSecrets: true,\n allNamespaces: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"autopilot-cluster\",\n location=\"us-central1\",\n enable_autopilot=True,\n ip_allocation_policy={},\n release_channel={\n \"channel\": \"RAPID\",\n },\n addons_config={\n \"gke_backup_agent_config\": {\n \"enabled\": True,\n },\n },\n deletion_protection=True,\n network=\"default\",\n subnetwork=\"default\")\nautopilot = gcp.gkebackup.BackupPlan(\"autopilot\",\n name=\"autopilot-plan\",\n cluster=primary.id,\n location=\"us-central1\",\n backup_config={\n \"include_volume_data\": True,\n \"include_secrets\": True,\n \"all_namespaces\": True,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"autopilot-cluster\",\n Location = \"us-central1\",\n EnableAutopilot = true,\n IpAllocationPolicy = null,\n ReleaseChannel = new Gcp.Container.Inputs.ClusterReleaseChannelArgs\n {\n Channel = \"RAPID\",\n },\n AddonsConfig = new Gcp.Container.Inputs.ClusterAddonsConfigArgs\n {\n GkeBackupAgentConfig = new Gcp.Container.Inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs\n {\n Enabled = true,\n },\n },\n DeletionProtection = true,\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var autopilot = new Gcp.GkeBackup.BackupPlan(\"autopilot\", new()\n {\n Name = \"autopilot-plan\",\n Cluster = primary.Id,\n Location = \"us-central1\",\n BackupConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigArgs\n {\n IncludeVolumeData = true,\n IncludeSecrets = true,\n AllNamespaces = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkebackup\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"autopilot-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tEnableAutopilot: pulumi.Bool(true),\n\t\t\tIpAllocationPolicy: \u0026container.ClusterIpAllocationPolicyArgs{},\n\t\t\tReleaseChannel: \u0026container.ClusterReleaseChannelArgs{\n\t\t\t\tChannel: pulumi.String(\"RAPID\"),\n\t\t\t},\n\t\t\tAddonsConfig: \u0026container.ClusterAddonsConfigArgs{\n\t\t\t\tGkeBackupAgentConfig: \u0026container.ClusterAddonsConfigGkeBackupAgentConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkebackup.NewBackupPlan(ctx, \"autopilot\", \u0026gkebackup.BackupPlanArgs{\n\t\t\tName: pulumi.String(\"autopilot-plan\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupConfig: \u0026gkebackup.BackupPlanBackupConfigArgs{\n\t\t\t\tIncludeVolumeData: pulumi.Bool(true),\n\t\t\t\tIncludeSecrets: pulumi.Bool(true),\n\t\t\t\tAllNamespaces: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterIpAllocationPolicyArgs;\nimport com.pulumi.gcp.container.inputs.ClusterReleaseChannelArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs;\nimport com.pulumi.gcp.gkebackup.BackupPlan;\nimport com.pulumi.gcp.gkebackup.BackupPlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"autopilot-cluster\")\n .location(\"us-central1\")\n .enableAutopilot(true)\n .ipAllocationPolicy()\n .releaseChannel(ClusterReleaseChannelArgs.builder()\n .channel(\"RAPID\")\n .build())\n .addonsConfig(ClusterAddonsConfigArgs.builder()\n .gkeBackupAgentConfig(ClusterAddonsConfigGkeBackupAgentConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .deletionProtection(\"true\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var autopilot = new BackupPlan(\"autopilot\", BackupPlanArgs.builder()\n .name(\"autopilot-plan\")\n .cluster(primary.id())\n .location(\"us-central1\")\n .backupConfig(BackupPlanBackupConfigArgs.builder()\n .includeVolumeData(true)\n .includeSecrets(true)\n .allNamespaces(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: autopilot-cluster\n location: us-central1\n enableAutopilot: true\n ipAllocationPolicy: {}\n releaseChannel:\n channel: RAPID\n addonsConfig:\n gkeBackupAgentConfig:\n enabled: true\n deletionProtection: 'true'\n network: default\n subnetwork: default\n autopilot:\n type: gcp:gkebackup:BackupPlan\n properties:\n name: autopilot-plan\n cluster: ${primary.id}\n location: us-central1\n backupConfig:\n includeVolumeData: true\n includeSecrets: true\n allNamespaces: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkebackup Backupplan Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"cmek-cluster\",\n location: \"us-central1\",\n initialNodeCount: 1,\n workloadIdentityConfig: {\n workloadPool: \"my-project-name.svc.id.goog\",\n },\n addonsConfig: {\n gkeBackupAgentConfig: {\n enabled: true,\n },\n },\n deletionProtection: true,\n network: \"default\",\n subnetwork: \"default\",\n});\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"backup-key\",\n location: \"us-central1\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"backup-key\",\n keyRing: keyRing.id,\n});\nconst cmek = new gcp.gkebackup.BackupPlan(\"cmek\", {\n name: \"cmek-plan\",\n cluster: primary.id,\n location: \"us-central1\",\n backupConfig: {\n includeVolumeData: true,\n includeSecrets: true,\n selectedNamespaces: {\n namespaces: [\n \"default\",\n \"test\",\n ],\n },\n encryptionKey: {\n gcpKmsEncryptionKey: cryptoKey.id,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"cmek-cluster\",\n location=\"us-central1\",\n initial_node_count=1,\n workload_identity_config={\n \"workload_pool\": \"my-project-name.svc.id.goog\",\n },\n addons_config={\n \"gke_backup_agent_config\": {\n \"enabled\": True,\n },\n },\n deletion_protection=True,\n network=\"default\",\n subnetwork=\"default\")\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"backup-key\",\n location=\"us-central1\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"backup-key\",\n key_ring=key_ring.id)\ncmek = gcp.gkebackup.BackupPlan(\"cmek\",\n name=\"cmek-plan\",\n cluster=primary.id,\n location=\"us-central1\",\n backup_config={\n \"include_volume_data\": True,\n \"include_secrets\": True,\n \"selected_namespaces\": {\n \"namespaces\": [\n \"default\",\n \"test\",\n ],\n },\n \"encryption_key\": {\n \"gcp_kms_encryption_key\": crypto_key.id,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"cmek-cluster\",\n Location = \"us-central1\",\n InitialNodeCount = 1,\n WorkloadIdentityConfig = new Gcp.Container.Inputs.ClusterWorkloadIdentityConfigArgs\n {\n WorkloadPool = \"my-project-name.svc.id.goog\",\n },\n AddonsConfig = new Gcp.Container.Inputs.ClusterAddonsConfigArgs\n {\n GkeBackupAgentConfig = new Gcp.Container.Inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs\n {\n Enabled = true,\n },\n },\n DeletionProtection = true,\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"backup-key\",\n Location = \"us-central1\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"backup-key\",\n KeyRing = keyRing.Id,\n });\n\n var cmek = new Gcp.GkeBackup.BackupPlan(\"cmek\", new()\n {\n Name = \"cmek-plan\",\n Cluster = primary.Id,\n Location = \"us-central1\",\n BackupConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigArgs\n {\n IncludeVolumeData = true,\n IncludeSecrets = true,\n SelectedNamespaces = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigSelectedNamespacesArgs\n {\n Namespaces = new[]\n {\n \"default\",\n \"test\",\n },\n },\n EncryptionKey = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigEncryptionKeyArgs\n {\n GcpKmsEncryptionKey = cryptoKey.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkebackup\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"cmek-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tWorkloadIdentityConfig: \u0026container.ClusterWorkloadIdentityConfigArgs{\n\t\t\t\tWorkloadPool: pulumi.String(\"my-project-name.svc.id.goog\"),\n\t\t\t},\n\t\t\tAddonsConfig: \u0026container.ClusterAddonsConfigArgs{\n\t\t\t\tGkeBackupAgentConfig: \u0026container.ClusterAddonsConfigGkeBackupAgentConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"backup-key\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"backup-key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkebackup.NewBackupPlan(ctx, \"cmek\", \u0026gkebackup.BackupPlanArgs{\n\t\t\tName: pulumi.String(\"cmek-plan\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tBackupConfig: \u0026gkebackup.BackupPlanBackupConfigArgs{\n\t\t\t\tIncludeVolumeData: pulumi.Bool(true),\n\t\t\t\tIncludeSecrets: pulumi.Bool(true),\n\t\t\t\tSelectedNamespaces: \u0026gkebackup.BackupPlanBackupConfigSelectedNamespacesArgs{\n\t\t\t\t\tNamespaces: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"default\"),\n\t\t\t\t\t\tpulumi.String(\"test\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tEncryptionKey: \u0026gkebackup.BackupPlanBackupConfigEncryptionKeyArgs{\n\t\t\t\t\tGcpKmsEncryptionKey: cryptoKey.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterWorkloadIdentityConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.gkebackup.BackupPlan;\nimport com.pulumi.gcp.gkebackup.BackupPlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigSelectedNamespacesArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigEncryptionKeyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"cmek-cluster\")\n .location(\"us-central1\")\n .initialNodeCount(1)\n .workloadIdentityConfig(ClusterWorkloadIdentityConfigArgs.builder()\n .workloadPool(\"my-project-name.svc.id.goog\")\n .build())\n .addonsConfig(ClusterAddonsConfigArgs.builder()\n .gkeBackupAgentConfig(ClusterAddonsConfigGkeBackupAgentConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .deletionProtection(\"true\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"backup-key\")\n .location(\"us-central1\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"backup-key\")\n .keyRing(keyRing.id())\n .build());\n\n var cmek = new BackupPlan(\"cmek\", BackupPlanArgs.builder()\n .name(\"cmek-plan\")\n .cluster(primary.id())\n .location(\"us-central1\")\n .backupConfig(BackupPlanBackupConfigArgs.builder()\n .includeVolumeData(true)\n .includeSecrets(true)\n .selectedNamespaces(BackupPlanBackupConfigSelectedNamespacesArgs.builder()\n .namespaces( \n \"default\",\n \"test\")\n .build())\n .encryptionKey(BackupPlanBackupConfigEncryptionKeyArgs.builder()\n .gcpKmsEncryptionKey(cryptoKey.id())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: cmek-cluster\n location: us-central1\n initialNodeCount: 1\n workloadIdentityConfig:\n workloadPool: my-project-name.svc.id.goog\n addonsConfig:\n gkeBackupAgentConfig:\n enabled: true\n deletionProtection: 'true'\n network: default\n subnetwork: default\n cmek:\n type: gcp:gkebackup:BackupPlan\n properties:\n name: cmek-plan\n cluster: ${primary.id}\n location: us-central1\n backupConfig:\n includeVolumeData: true\n includeSecrets: true\n selectedNamespaces:\n namespaces:\n - default\n - test\n encryptionKey:\n gcpKmsEncryptionKey: ${cryptoKey.id}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: backup-key\n keyRing: ${keyRing.id}\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: backup-key\n location: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkebackup Backupplan Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"full-cluster\",\n location: \"us-central1\",\n initialNodeCount: 1,\n workloadIdentityConfig: {\n workloadPool: \"my-project-name.svc.id.goog\",\n },\n addonsConfig: {\n gkeBackupAgentConfig: {\n enabled: true,\n },\n },\n deletionProtection: true,\n network: \"default\",\n subnetwork: \"default\",\n});\nconst full = new gcp.gkebackup.BackupPlan(\"full\", {\n name: \"full-plan\",\n cluster: primary.id,\n location: \"us-central1\",\n retentionPolicy: {\n backupDeleteLockDays: 30,\n backupRetainDays: 180,\n },\n backupSchedule: {\n cronSchedule: \"0 9 * * 1\",\n },\n backupConfig: {\n includeVolumeData: true,\n includeSecrets: true,\n selectedApplications: {\n namespacedNames: [\n {\n name: \"app1\",\n namespace: \"ns1\",\n },\n {\n name: \"app2\",\n namespace: \"ns2\",\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"full-cluster\",\n location=\"us-central1\",\n initial_node_count=1,\n workload_identity_config={\n \"workload_pool\": \"my-project-name.svc.id.goog\",\n },\n addons_config={\n \"gke_backup_agent_config\": {\n \"enabled\": True,\n },\n },\n deletion_protection=True,\n network=\"default\",\n subnetwork=\"default\")\nfull = gcp.gkebackup.BackupPlan(\"full\",\n name=\"full-plan\",\n cluster=primary.id,\n location=\"us-central1\",\n retention_policy={\n \"backup_delete_lock_days\": 30,\n \"backup_retain_days\": 180,\n },\n backup_schedule={\n \"cron_schedule\": \"0 9 * * 1\",\n },\n backup_config={\n \"include_volume_data\": True,\n \"include_secrets\": True,\n \"selected_applications\": {\n \"namespaced_names\": [\n {\n \"name\": \"app1\",\n \"namespace\": \"ns1\",\n },\n {\n \"name\": \"app2\",\n \"namespace\": \"ns2\",\n },\n ],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"full-cluster\",\n Location = \"us-central1\",\n InitialNodeCount = 1,\n WorkloadIdentityConfig = new Gcp.Container.Inputs.ClusterWorkloadIdentityConfigArgs\n {\n WorkloadPool = \"my-project-name.svc.id.goog\",\n },\n AddonsConfig = new Gcp.Container.Inputs.ClusterAddonsConfigArgs\n {\n GkeBackupAgentConfig = new Gcp.Container.Inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs\n {\n Enabled = true,\n },\n },\n DeletionProtection = true,\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var full = new Gcp.GkeBackup.BackupPlan(\"full\", new()\n {\n Name = \"full-plan\",\n Cluster = primary.Id,\n Location = \"us-central1\",\n RetentionPolicy = new Gcp.GkeBackup.Inputs.BackupPlanRetentionPolicyArgs\n {\n BackupDeleteLockDays = 30,\n BackupRetainDays = 180,\n },\n BackupSchedule = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleArgs\n {\n CronSchedule = \"0 9 * * 1\",\n },\n BackupConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigArgs\n {\n IncludeVolumeData = true,\n IncludeSecrets = true,\n SelectedApplications = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigSelectedApplicationsArgs\n {\n NamespacedNames = new[]\n {\n new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs\n {\n Name = \"app1\",\n Namespace = \"ns1\",\n },\n new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs\n {\n Name = \"app2\",\n Namespace = \"ns2\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkebackup\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"full-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tWorkloadIdentityConfig: \u0026container.ClusterWorkloadIdentityConfigArgs{\n\t\t\t\tWorkloadPool: pulumi.String(\"my-project-name.svc.id.goog\"),\n\t\t\t},\n\t\t\tAddonsConfig: \u0026container.ClusterAddonsConfigArgs{\n\t\t\t\tGkeBackupAgentConfig: \u0026container.ClusterAddonsConfigGkeBackupAgentConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkebackup.NewBackupPlan(ctx, \"full\", \u0026gkebackup.BackupPlanArgs{\n\t\t\tName: pulumi.String(\"full-plan\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRetentionPolicy: \u0026gkebackup.BackupPlanRetentionPolicyArgs{\n\t\t\t\tBackupDeleteLockDays: pulumi.Int(30),\n\t\t\t\tBackupRetainDays: pulumi.Int(180),\n\t\t\t},\n\t\t\tBackupSchedule: \u0026gkebackup.BackupPlanBackupScheduleArgs{\n\t\t\t\tCronSchedule: pulumi.String(\"0 9 * * 1\"),\n\t\t\t},\n\t\t\tBackupConfig: \u0026gkebackup.BackupPlanBackupConfigArgs{\n\t\t\t\tIncludeVolumeData: pulumi.Bool(true),\n\t\t\t\tIncludeSecrets: pulumi.Bool(true),\n\t\t\t\tSelectedApplications: \u0026gkebackup.BackupPlanBackupConfigSelectedApplicationsArgs{\n\t\t\t\t\tNamespacedNames: gkebackup.BackupPlanBackupConfigSelectedApplicationsNamespacedNameArray{\n\t\t\t\t\t\t\u0026gkebackup.BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"app1\"),\n\t\t\t\t\t\t\tNamespace: pulumi.String(\"ns1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026gkebackup.BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"app2\"),\n\t\t\t\t\t\t\tNamespace: pulumi.String(\"ns2\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterWorkloadIdentityConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs;\nimport com.pulumi.gcp.gkebackup.BackupPlan;\nimport com.pulumi.gcp.gkebackup.BackupPlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanRetentionPolicyArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupScheduleArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigSelectedApplicationsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"full-cluster\")\n .location(\"us-central1\")\n .initialNodeCount(1)\n .workloadIdentityConfig(ClusterWorkloadIdentityConfigArgs.builder()\n .workloadPool(\"my-project-name.svc.id.goog\")\n .build())\n .addonsConfig(ClusterAddonsConfigArgs.builder()\n .gkeBackupAgentConfig(ClusterAddonsConfigGkeBackupAgentConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .deletionProtection(\"true\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var full = new BackupPlan(\"full\", BackupPlanArgs.builder()\n .name(\"full-plan\")\n .cluster(primary.id())\n .location(\"us-central1\")\n .retentionPolicy(BackupPlanRetentionPolicyArgs.builder()\n .backupDeleteLockDays(30)\n .backupRetainDays(180)\n .build())\n .backupSchedule(BackupPlanBackupScheduleArgs.builder()\n .cronSchedule(\"0 9 * * 1\")\n .build())\n .backupConfig(BackupPlanBackupConfigArgs.builder()\n .includeVolumeData(true)\n .includeSecrets(true)\n .selectedApplications(BackupPlanBackupConfigSelectedApplicationsArgs.builder()\n .namespacedNames( \n BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs.builder()\n .name(\"app1\")\n .namespace(\"ns1\")\n .build(),\n BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs.builder()\n .name(\"app2\")\n .namespace(\"ns2\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: full-cluster\n location: us-central1\n initialNodeCount: 1\n workloadIdentityConfig:\n workloadPool: my-project-name.svc.id.goog\n addonsConfig:\n gkeBackupAgentConfig:\n enabled: true\n deletionProtection: 'true'\n network: default\n subnetwork: default\n full:\n type: gcp:gkebackup:BackupPlan\n properties:\n name: full-plan\n cluster: ${primary.id}\n location: us-central1\n retentionPolicy:\n backupDeleteLockDays: 30\n backupRetainDays: 180\n backupSchedule:\n cronSchedule: 0 9 * * 1\n backupConfig:\n includeVolumeData: true\n includeSecrets: true\n selectedApplications:\n namespacedNames:\n - name: app1\n namespace: ns1\n - name: app2\n namespace: ns2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkebackup Backupplan Permissive\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"permissive-cluster\",\n location: \"us-central1\",\n initialNodeCount: 1,\n workloadIdentityConfig: {\n workloadPool: \"my-project-name.svc.id.goog\",\n },\n addonsConfig: {\n gkeBackupAgentConfig: {\n enabled: true,\n },\n },\n deletionProtection: true,\n network: \"default\",\n subnetwork: \"default\",\n});\nconst permissive = new gcp.gkebackup.BackupPlan(\"permissive\", {\n name: \"permissive-plan\",\n cluster: primary.id,\n location: \"us-central1\",\n retentionPolicy: {\n backupDeleteLockDays: 30,\n backupRetainDays: 180,\n },\n backupSchedule: {\n cronSchedule: \"0 9 * * 1\",\n },\n backupConfig: {\n includeVolumeData: true,\n includeSecrets: true,\n permissiveMode: true,\n selectedApplications: {\n namespacedNames: [\n {\n name: \"app1\",\n namespace: \"ns1\",\n },\n {\n name: \"app2\",\n namespace: \"ns2\",\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"permissive-cluster\",\n location=\"us-central1\",\n initial_node_count=1,\n workload_identity_config={\n \"workload_pool\": \"my-project-name.svc.id.goog\",\n },\n addons_config={\n \"gke_backup_agent_config\": {\n \"enabled\": True,\n },\n },\n deletion_protection=True,\n network=\"default\",\n subnetwork=\"default\")\npermissive = gcp.gkebackup.BackupPlan(\"permissive\",\n name=\"permissive-plan\",\n cluster=primary.id,\n location=\"us-central1\",\n retention_policy={\n \"backup_delete_lock_days\": 30,\n \"backup_retain_days\": 180,\n },\n backup_schedule={\n \"cron_schedule\": \"0 9 * * 1\",\n },\n backup_config={\n \"include_volume_data\": True,\n \"include_secrets\": True,\n \"permissive_mode\": True,\n \"selected_applications\": {\n \"namespaced_names\": [\n {\n \"name\": \"app1\",\n \"namespace\": \"ns1\",\n },\n {\n \"name\": \"app2\",\n \"namespace\": \"ns2\",\n },\n ],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"permissive-cluster\",\n Location = \"us-central1\",\n InitialNodeCount = 1,\n WorkloadIdentityConfig = new Gcp.Container.Inputs.ClusterWorkloadIdentityConfigArgs\n {\n WorkloadPool = \"my-project-name.svc.id.goog\",\n },\n AddonsConfig = new Gcp.Container.Inputs.ClusterAddonsConfigArgs\n {\n GkeBackupAgentConfig = new Gcp.Container.Inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs\n {\n Enabled = true,\n },\n },\n DeletionProtection = true,\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var permissive = new Gcp.GkeBackup.BackupPlan(\"permissive\", new()\n {\n Name = \"permissive-plan\",\n Cluster = primary.Id,\n Location = \"us-central1\",\n RetentionPolicy = new Gcp.GkeBackup.Inputs.BackupPlanRetentionPolicyArgs\n {\n BackupDeleteLockDays = 30,\n BackupRetainDays = 180,\n },\n BackupSchedule = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleArgs\n {\n CronSchedule = \"0 9 * * 1\",\n },\n BackupConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigArgs\n {\n IncludeVolumeData = true,\n IncludeSecrets = true,\n PermissiveMode = true,\n SelectedApplications = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigSelectedApplicationsArgs\n {\n NamespacedNames = new[]\n {\n new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs\n {\n Name = \"app1\",\n Namespace = \"ns1\",\n },\n new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs\n {\n Name = \"app2\",\n Namespace = \"ns2\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkebackup\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"permissive-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tWorkloadIdentityConfig: \u0026container.ClusterWorkloadIdentityConfigArgs{\n\t\t\t\tWorkloadPool: pulumi.String(\"my-project-name.svc.id.goog\"),\n\t\t\t},\n\t\t\tAddonsConfig: \u0026container.ClusterAddonsConfigArgs{\n\t\t\t\tGkeBackupAgentConfig: \u0026container.ClusterAddonsConfigGkeBackupAgentConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkebackup.NewBackupPlan(ctx, \"permissive\", \u0026gkebackup.BackupPlanArgs{\n\t\t\tName: pulumi.String(\"permissive-plan\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRetentionPolicy: \u0026gkebackup.BackupPlanRetentionPolicyArgs{\n\t\t\t\tBackupDeleteLockDays: pulumi.Int(30),\n\t\t\t\tBackupRetainDays: pulumi.Int(180),\n\t\t\t},\n\t\t\tBackupSchedule: \u0026gkebackup.BackupPlanBackupScheduleArgs{\n\t\t\t\tCronSchedule: pulumi.String(\"0 9 * * 1\"),\n\t\t\t},\n\t\t\tBackupConfig: \u0026gkebackup.BackupPlanBackupConfigArgs{\n\t\t\t\tIncludeVolumeData: pulumi.Bool(true),\n\t\t\t\tIncludeSecrets: pulumi.Bool(true),\n\t\t\t\tPermissiveMode: pulumi.Bool(true),\n\t\t\t\tSelectedApplications: \u0026gkebackup.BackupPlanBackupConfigSelectedApplicationsArgs{\n\t\t\t\t\tNamespacedNames: gkebackup.BackupPlanBackupConfigSelectedApplicationsNamespacedNameArray{\n\t\t\t\t\t\t\u0026gkebackup.BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"app1\"),\n\t\t\t\t\t\t\tNamespace: pulumi.String(\"ns1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026gkebackup.BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"app2\"),\n\t\t\t\t\t\t\tNamespace: pulumi.String(\"ns2\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterWorkloadIdentityConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs;\nimport com.pulumi.gcp.gkebackup.BackupPlan;\nimport com.pulumi.gcp.gkebackup.BackupPlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanRetentionPolicyArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupScheduleArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigSelectedApplicationsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"permissive-cluster\")\n .location(\"us-central1\")\n .initialNodeCount(1)\n .workloadIdentityConfig(ClusterWorkloadIdentityConfigArgs.builder()\n .workloadPool(\"my-project-name.svc.id.goog\")\n .build())\n .addonsConfig(ClusterAddonsConfigArgs.builder()\n .gkeBackupAgentConfig(ClusterAddonsConfigGkeBackupAgentConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .deletionProtection(\"true\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var permissive = new BackupPlan(\"permissive\", BackupPlanArgs.builder()\n .name(\"permissive-plan\")\n .cluster(primary.id())\n .location(\"us-central1\")\n .retentionPolicy(BackupPlanRetentionPolicyArgs.builder()\n .backupDeleteLockDays(30)\n .backupRetainDays(180)\n .build())\n .backupSchedule(BackupPlanBackupScheduleArgs.builder()\n .cronSchedule(\"0 9 * * 1\")\n .build())\n .backupConfig(BackupPlanBackupConfigArgs.builder()\n .includeVolumeData(true)\n .includeSecrets(true)\n .permissiveMode(true)\n .selectedApplications(BackupPlanBackupConfigSelectedApplicationsArgs.builder()\n .namespacedNames( \n BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs.builder()\n .name(\"app1\")\n .namespace(\"ns1\")\n .build(),\n BackupPlanBackupConfigSelectedApplicationsNamespacedNameArgs.builder()\n .name(\"app2\")\n .namespace(\"ns2\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: permissive-cluster\n location: us-central1\n initialNodeCount: 1\n workloadIdentityConfig:\n workloadPool: my-project-name.svc.id.goog\n addonsConfig:\n gkeBackupAgentConfig:\n enabled: true\n deletionProtection: 'true'\n network: default\n subnetwork: default\n permissive:\n type: gcp:gkebackup:BackupPlan\n properties:\n name: permissive-plan\n cluster: ${primary.id}\n location: us-central1\n retentionPolicy:\n backupDeleteLockDays: 30\n backupRetainDays: 180\n backupSchedule:\n cronSchedule: 0 9 * * 1\n backupConfig:\n includeVolumeData: true\n includeSecrets: true\n permissiveMode: true\n selectedApplications:\n namespacedNames:\n - name: app1\n namespace: ns1\n - name: app2\n namespace: ns2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkebackup Backupplan Rpo Daily Window\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"rpo-daily-cluster\",\n location: \"us-central1\",\n initialNodeCount: 1,\n workloadIdentityConfig: {\n workloadPool: \"my-project-name.svc.id.goog\",\n },\n addonsConfig: {\n gkeBackupAgentConfig: {\n enabled: true,\n },\n },\n deletionProtection: true,\n network: \"default\",\n subnetwork: \"default\",\n});\nconst rpoDailyWindow = new gcp.gkebackup.BackupPlan(\"rpo_daily_window\", {\n name: \"rpo-daily-window\",\n cluster: primary.id,\n location: \"us-central1\",\n retentionPolicy: {\n backupDeleteLockDays: 30,\n backupRetainDays: 180,\n },\n backupSchedule: {\n paused: true,\n rpoConfig: {\n targetRpoMinutes: 1440,\n exclusionWindows: [\n {\n startTime: {\n hours: 12,\n },\n duration: \"7200s\",\n daily: true,\n },\n {\n startTime: {\n hours: 8,\n minutes: 40,\n seconds: 1,\n nanos: 100,\n },\n duration: \"3600s\",\n singleOccurrenceDate: {\n year: 2024,\n month: 3,\n day: 16,\n },\n },\n ],\n },\n },\n backupConfig: {\n includeVolumeData: true,\n includeSecrets: true,\n allNamespaces: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"rpo-daily-cluster\",\n location=\"us-central1\",\n initial_node_count=1,\n workload_identity_config={\n \"workload_pool\": \"my-project-name.svc.id.goog\",\n },\n addons_config={\n \"gke_backup_agent_config\": {\n \"enabled\": True,\n },\n },\n deletion_protection=True,\n network=\"default\",\n subnetwork=\"default\")\nrpo_daily_window = gcp.gkebackup.BackupPlan(\"rpo_daily_window\",\n name=\"rpo-daily-window\",\n cluster=primary.id,\n location=\"us-central1\",\n retention_policy={\n \"backup_delete_lock_days\": 30,\n \"backup_retain_days\": 180,\n },\n backup_schedule={\n \"paused\": True,\n \"rpo_config\": {\n \"target_rpo_minutes\": 1440,\n \"exclusion_windows\": [\n {\n \"start_time\": {\n \"hours\": 12,\n },\n \"duration\": \"7200s\",\n \"daily\": True,\n },\n {\n \"start_time\": {\n \"hours\": 8,\n \"minutes\": 40,\n \"seconds\": 1,\n \"nanos\": 100,\n },\n \"duration\": \"3600s\",\n \"single_occurrence_date\": {\n \"year\": 2024,\n \"month\": 3,\n \"day\": 16,\n },\n },\n ],\n },\n },\n backup_config={\n \"include_volume_data\": True,\n \"include_secrets\": True,\n \"all_namespaces\": True,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"rpo-daily-cluster\",\n Location = \"us-central1\",\n InitialNodeCount = 1,\n WorkloadIdentityConfig = new Gcp.Container.Inputs.ClusterWorkloadIdentityConfigArgs\n {\n WorkloadPool = \"my-project-name.svc.id.goog\",\n },\n AddonsConfig = new Gcp.Container.Inputs.ClusterAddonsConfigArgs\n {\n GkeBackupAgentConfig = new Gcp.Container.Inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs\n {\n Enabled = true,\n },\n },\n DeletionProtection = true,\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var rpoDailyWindow = new Gcp.GkeBackup.BackupPlan(\"rpo_daily_window\", new()\n {\n Name = \"rpo-daily-window\",\n Cluster = primary.Id,\n Location = \"us-central1\",\n RetentionPolicy = new Gcp.GkeBackup.Inputs.BackupPlanRetentionPolicyArgs\n {\n BackupDeleteLockDays = 30,\n BackupRetainDays = 180,\n },\n BackupSchedule = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleArgs\n {\n Paused = true,\n RpoConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigArgs\n {\n TargetRpoMinutes = 1440,\n ExclusionWindows = new[]\n {\n new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowArgs\n {\n StartTime = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs\n {\n Hours = 12,\n },\n Duration = \"7200s\",\n Daily = true,\n },\n new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowArgs\n {\n StartTime = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs\n {\n Hours = 8,\n Minutes = 40,\n Seconds = 1,\n Nanos = 100,\n },\n Duration = \"3600s\",\n SingleOccurrenceDate = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowSingleOccurrenceDateArgs\n {\n Year = 2024,\n Month = 3,\n Day = 16,\n },\n },\n },\n },\n },\n BackupConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigArgs\n {\n IncludeVolumeData = true,\n IncludeSecrets = true,\n AllNamespaces = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkebackup\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"rpo-daily-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tWorkloadIdentityConfig: \u0026container.ClusterWorkloadIdentityConfigArgs{\n\t\t\t\tWorkloadPool: pulumi.String(\"my-project-name.svc.id.goog\"),\n\t\t\t},\n\t\t\tAddonsConfig: \u0026container.ClusterAddonsConfigArgs{\n\t\t\t\tGkeBackupAgentConfig: \u0026container.ClusterAddonsConfigGkeBackupAgentConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkebackup.NewBackupPlan(ctx, \"rpo_daily_window\", \u0026gkebackup.BackupPlanArgs{\n\t\t\tName: pulumi.String(\"rpo-daily-window\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRetentionPolicy: \u0026gkebackup.BackupPlanRetentionPolicyArgs{\n\t\t\t\tBackupDeleteLockDays: pulumi.Int(30),\n\t\t\t\tBackupRetainDays: pulumi.Int(180),\n\t\t\t},\n\t\t\tBackupSchedule: \u0026gkebackup.BackupPlanBackupScheduleArgs{\n\t\t\t\tPaused: pulumi.Bool(true),\n\t\t\t\tRpoConfig: \u0026gkebackup.BackupPlanBackupScheduleRpoConfigArgs{\n\t\t\t\t\tTargetRpoMinutes: pulumi.Int(1440),\n\t\t\t\t\tExclusionWindows: gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowArray{\n\t\t\t\t\t\t\u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowArgs{\n\t\t\t\t\t\t\tStartTime: \u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs{\n\t\t\t\t\t\t\t\tHours: pulumi.Int(12),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tDuration: pulumi.String(\"7200s\"),\n\t\t\t\t\t\t\tDaily: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowArgs{\n\t\t\t\t\t\t\tStartTime: \u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs{\n\t\t\t\t\t\t\t\tHours: pulumi.Int(8),\n\t\t\t\t\t\t\t\tMinutes: pulumi.Int(40),\n\t\t\t\t\t\t\t\tSeconds: pulumi.Int(1),\n\t\t\t\t\t\t\t\tNanos: pulumi.Int(100),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tDuration: pulumi.String(\"3600s\"),\n\t\t\t\t\t\t\tSingleOccurrenceDate: \u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowSingleOccurrenceDateArgs{\n\t\t\t\t\t\t\t\tYear: pulumi.Int(2024),\n\t\t\t\t\t\t\t\tMonth: pulumi.Int(3),\n\t\t\t\t\t\t\t\tDay: pulumi.Int(16),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBackupConfig: \u0026gkebackup.BackupPlanBackupConfigArgs{\n\t\t\t\tIncludeVolumeData: pulumi.Bool(true),\n\t\t\t\tIncludeSecrets: pulumi.Bool(true),\n\t\t\t\tAllNamespaces: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterWorkloadIdentityConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs;\nimport com.pulumi.gcp.gkebackup.BackupPlan;\nimport com.pulumi.gcp.gkebackup.BackupPlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanRetentionPolicyArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupScheduleArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupScheduleRpoConfigArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"rpo-daily-cluster\")\n .location(\"us-central1\")\n .initialNodeCount(1)\n .workloadIdentityConfig(ClusterWorkloadIdentityConfigArgs.builder()\n .workloadPool(\"my-project-name.svc.id.goog\")\n .build())\n .addonsConfig(ClusterAddonsConfigArgs.builder()\n .gkeBackupAgentConfig(ClusterAddonsConfigGkeBackupAgentConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .deletionProtection(\"true\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var rpoDailyWindow = new BackupPlan(\"rpoDailyWindow\", BackupPlanArgs.builder()\n .name(\"rpo-daily-window\")\n .cluster(primary.id())\n .location(\"us-central1\")\n .retentionPolicy(BackupPlanRetentionPolicyArgs.builder()\n .backupDeleteLockDays(30)\n .backupRetainDays(180)\n .build())\n .backupSchedule(BackupPlanBackupScheduleArgs.builder()\n .paused(true)\n .rpoConfig(BackupPlanBackupScheduleRpoConfigArgs.builder()\n .targetRpoMinutes(1440)\n .exclusionWindows( \n BackupPlanBackupScheduleRpoConfigExclusionWindowArgs.builder()\n .startTime(BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs.builder()\n .hours(12)\n .build())\n .duration(\"7200s\")\n .daily(true)\n .build(),\n BackupPlanBackupScheduleRpoConfigExclusionWindowArgs.builder()\n .startTime(BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs.builder()\n .hours(8)\n .minutes(40)\n .seconds(1)\n .nanos(100)\n .build())\n .duration(\"3600s\")\n .singleOccurrenceDate(BackupPlanBackupScheduleRpoConfigExclusionWindowSingleOccurrenceDateArgs.builder()\n .year(2024)\n .month(3)\n .day(16)\n .build())\n .build())\n .build())\n .build())\n .backupConfig(BackupPlanBackupConfigArgs.builder()\n .includeVolumeData(true)\n .includeSecrets(true)\n .allNamespaces(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: rpo-daily-cluster\n location: us-central1\n initialNodeCount: 1\n workloadIdentityConfig:\n workloadPool: my-project-name.svc.id.goog\n addonsConfig:\n gkeBackupAgentConfig:\n enabled: true\n deletionProtection: 'true'\n network: default\n subnetwork: default\n rpoDailyWindow:\n type: gcp:gkebackup:BackupPlan\n name: rpo_daily_window\n properties:\n name: rpo-daily-window\n cluster: ${primary.id}\n location: us-central1\n retentionPolicy:\n backupDeleteLockDays: 30\n backupRetainDays: 180\n backupSchedule:\n paused: true\n rpoConfig:\n targetRpoMinutes: 1440\n exclusionWindows:\n - startTime:\n hours: 12\n duration: 7200s\n daily: true\n - startTime:\n hours: 8\n minutes: 40\n seconds: 1\n nanos: 100\n duration: 3600s\n singleOccurrenceDate:\n year: 2024\n month: 3\n day: 16\n backupConfig:\n includeVolumeData: true\n includeSecrets: true\n allNamespaces: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkebackup Backupplan Rpo Weekly Window\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"rpo-weekly-cluster\",\n location: \"us-central1\",\n initialNodeCount: 1,\n workloadIdentityConfig: {\n workloadPool: \"my-project-name.svc.id.goog\",\n },\n addonsConfig: {\n gkeBackupAgentConfig: {\n enabled: true,\n },\n },\n deletionProtection: true,\n network: \"default\",\n subnetwork: \"default\",\n});\nconst rpoWeeklyWindow = new gcp.gkebackup.BackupPlan(\"rpo_weekly_window\", {\n name: \"rpo-weekly-window\",\n cluster: primary.id,\n location: \"us-central1\",\n retentionPolicy: {\n backupDeleteLockDays: 30,\n backupRetainDays: 180,\n },\n backupSchedule: {\n paused: true,\n rpoConfig: {\n targetRpoMinutes: 1440,\n exclusionWindows: [\n {\n startTime: {\n hours: 1,\n minutes: 23,\n },\n duration: \"1800s\",\n daysOfWeek: {\n daysOfWeeks: [\n \"MONDAY\",\n \"THURSDAY\",\n ],\n },\n },\n {\n startTime: {\n hours: 12,\n },\n duration: \"3600s\",\n singleOccurrenceDate: {\n year: 2024,\n month: 3,\n day: 17,\n },\n },\n {\n startTime: {\n hours: 8,\n minutes: 40,\n },\n duration: \"600s\",\n singleOccurrenceDate: {\n year: 2024,\n month: 3,\n day: 18,\n },\n },\n ],\n },\n },\n backupConfig: {\n includeVolumeData: true,\n includeSecrets: true,\n allNamespaces: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"rpo-weekly-cluster\",\n location=\"us-central1\",\n initial_node_count=1,\n workload_identity_config={\n \"workload_pool\": \"my-project-name.svc.id.goog\",\n },\n addons_config={\n \"gke_backup_agent_config\": {\n \"enabled\": True,\n },\n },\n deletion_protection=True,\n network=\"default\",\n subnetwork=\"default\")\nrpo_weekly_window = gcp.gkebackup.BackupPlan(\"rpo_weekly_window\",\n name=\"rpo-weekly-window\",\n cluster=primary.id,\n location=\"us-central1\",\n retention_policy={\n \"backup_delete_lock_days\": 30,\n \"backup_retain_days\": 180,\n },\n backup_schedule={\n \"paused\": True,\n \"rpo_config\": {\n \"target_rpo_minutes\": 1440,\n \"exclusion_windows\": [\n {\n \"start_time\": {\n \"hours\": 1,\n \"minutes\": 23,\n },\n \"duration\": \"1800s\",\n \"days_of_week\": {\n \"days_of_weeks\": [\n \"MONDAY\",\n \"THURSDAY\",\n ],\n },\n },\n {\n \"start_time\": {\n \"hours\": 12,\n },\n \"duration\": \"3600s\",\n \"single_occurrence_date\": {\n \"year\": 2024,\n \"month\": 3,\n \"day\": 17,\n },\n },\n {\n \"start_time\": {\n \"hours\": 8,\n \"minutes\": 40,\n },\n \"duration\": \"600s\",\n \"single_occurrence_date\": {\n \"year\": 2024,\n \"month\": 3,\n \"day\": 18,\n },\n },\n ],\n },\n },\n backup_config={\n \"include_volume_data\": True,\n \"include_secrets\": True,\n \"all_namespaces\": True,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"rpo-weekly-cluster\",\n Location = \"us-central1\",\n InitialNodeCount = 1,\n WorkloadIdentityConfig = new Gcp.Container.Inputs.ClusterWorkloadIdentityConfigArgs\n {\n WorkloadPool = \"my-project-name.svc.id.goog\",\n },\n AddonsConfig = new Gcp.Container.Inputs.ClusterAddonsConfigArgs\n {\n GkeBackupAgentConfig = new Gcp.Container.Inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs\n {\n Enabled = true,\n },\n },\n DeletionProtection = true,\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var rpoWeeklyWindow = new Gcp.GkeBackup.BackupPlan(\"rpo_weekly_window\", new()\n {\n Name = \"rpo-weekly-window\",\n Cluster = primary.Id,\n Location = \"us-central1\",\n RetentionPolicy = new Gcp.GkeBackup.Inputs.BackupPlanRetentionPolicyArgs\n {\n BackupDeleteLockDays = 30,\n BackupRetainDays = 180,\n },\n BackupSchedule = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleArgs\n {\n Paused = true,\n RpoConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigArgs\n {\n TargetRpoMinutes = 1440,\n ExclusionWindows = new[]\n {\n new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowArgs\n {\n StartTime = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs\n {\n Hours = 1,\n Minutes = 23,\n },\n Duration = \"1800s\",\n DaysOfWeek = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowDaysOfWeekArgs\n {\n DaysOfWeeks = new[]\n {\n \"MONDAY\",\n \"THURSDAY\",\n },\n },\n },\n new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowArgs\n {\n StartTime = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs\n {\n Hours = 12,\n },\n Duration = \"3600s\",\n SingleOccurrenceDate = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowSingleOccurrenceDateArgs\n {\n Year = 2024,\n Month = 3,\n Day = 17,\n },\n },\n new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowArgs\n {\n StartTime = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs\n {\n Hours = 8,\n Minutes = 40,\n },\n Duration = \"600s\",\n SingleOccurrenceDate = new Gcp.GkeBackup.Inputs.BackupPlanBackupScheduleRpoConfigExclusionWindowSingleOccurrenceDateArgs\n {\n Year = 2024,\n Month = 3,\n Day = 18,\n },\n },\n },\n },\n },\n BackupConfig = new Gcp.GkeBackup.Inputs.BackupPlanBackupConfigArgs\n {\n IncludeVolumeData = true,\n IncludeSecrets = true,\n AllNamespaces = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkebackup\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"rpo-weekly-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tWorkloadIdentityConfig: \u0026container.ClusterWorkloadIdentityConfigArgs{\n\t\t\t\tWorkloadPool: pulumi.String(\"my-project-name.svc.id.goog\"),\n\t\t\t},\n\t\t\tAddonsConfig: \u0026container.ClusterAddonsConfigArgs{\n\t\t\t\tGkeBackupAgentConfig: \u0026container.ClusterAddonsConfigGkeBackupAgentConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkebackup.NewBackupPlan(ctx, \"rpo_weekly_window\", \u0026gkebackup.BackupPlanArgs{\n\t\t\tName: pulumi.String(\"rpo-weekly-window\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRetentionPolicy: \u0026gkebackup.BackupPlanRetentionPolicyArgs{\n\t\t\t\tBackupDeleteLockDays: pulumi.Int(30),\n\t\t\t\tBackupRetainDays: pulumi.Int(180),\n\t\t\t},\n\t\t\tBackupSchedule: \u0026gkebackup.BackupPlanBackupScheduleArgs{\n\t\t\t\tPaused: pulumi.Bool(true),\n\t\t\t\tRpoConfig: \u0026gkebackup.BackupPlanBackupScheduleRpoConfigArgs{\n\t\t\t\t\tTargetRpoMinutes: pulumi.Int(1440),\n\t\t\t\t\tExclusionWindows: gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowArray{\n\t\t\t\t\t\t\u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowArgs{\n\t\t\t\t\t\t\tStartTime: \u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs{\n\t\t\t\t\t\t\t\tHours: pulumi.Int(1),\n\t\t\t\t\t\t\t\tMinutes: pulumi.Int(23),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tDuration: pulumi.String(\"1800s\"),\n\t\t\t\t\t\t\tDaysOfWeek: \u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowDaysOfWeekArgs{\n\t\t\t\t\t\t\t\tDaysOfWeeks: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"MONDAY\"),\n\t\t\t\t\t\t\t\t\tpulumi.String(\"THURSDAY\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowArgs{\n\t\t\t\t\t\t\tStartTime: \u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs{\n\t\t\t\t\t\t\t\tHours: pulumi.Int(12),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tDuration: pulumi.String(\"3600s\"),\n\t\t\t\t\t\t\tSingleOccurrenceDate: \u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowSingleOccurrenceDateArgs{\n\t\t\t\t\t\t\t\tYear: pulumi.Int(2024),\n\t\t\t\t\t\t\t\tMonth: pulumi.Int(3),\n\t\t\t\t\t\t\t\tDay: pulumi.Int(17),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowArgs{\n\t\t\t\t\t\t\tStartTime: \u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs{\n\t\t\t\t\t\t\t\tHours: pulumi.Int(8),\n\t\t\t\t\t\t\t\tMinutes: pulumi.Int(40),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tDuration: pulumi.String(\"600s\"),\n\t\t\t\t\t\t\tSingleOccurrenceDate: \u0026gkebackup.BackupPlanBackupScheduleRpoConfigExclusionWindowSingleOccurrenceDateArgs{\n\t\t\t\t\t\t\t\tYear: pulumi.Int(2024),\n\t\t\t\t\t\t\t\tMonth: pulumi.Int(3),\n\t\t\t\t\t\t\t\tDay: pulumi.Int(18),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBackupConfig: \u0026gkebackup.BackupPlanBackupConfigArgs{\n\t\t\t\tIncludeVolumeData: pulumi.Bool(true),\n\t\t\t\tIncludeSecrets: pulumi.Bool(true),\n\t\t\t\tAllNamespaces: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterWorkloadIdentityConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigArgs;\nimport com.pulumi.gcp.container.inputs.ClusterAddonsConfigGkeBackupAgentConfigArgs;\nimport com.pulumi.gcp.gkebackup.BackupPlan;\nimport com.pulumi.gcp.gkebackup.BackupPlanArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanRetentionPolicyArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupScheduleArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupScheduleRpoConfigArgs;\nimport com.pulumi.gcp.gkebackup.inputs.BackupPlanBackupConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"rpo-weekly-cluster\")\n .location(\"us-central1\")\n .initialNodeCount(1)\n .workloadIdentityConfig(ClusterWorkloadIdentityConfigArgs.builder()\n .workloadPool(\"my-project-name.svc.id.goog\")\n .build())\n .addonsConfig(ClusterAddonsConfigArgs.builder()\n .gkeBackupAgentConfig(ClusterAddonsConfigGkeBackupAgentConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .deletionProtection(\"true\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var rpoWeeklyWindow = new BackupPlan(\"rpoWeeklyWindow\", BackupPlanArgs.builder()\n .name(\"rpo-weekly-window\")\n .cluster(primary.id())\n .location(\"us-central1\")\n .retentionPolicy(BackupPlanRetentionPolicyArgs.builder()\n .backupDeleteLockDays(30)\n .backupRetainDays(180)\n .build())\n .backupSchedule(BackupPlanBackupScheduleArgs.builder()\n .paused(true)\n .rpoConfig(BackupPlanBackupScheduleRpoConfigArgs.builder()\n .targetRpoMinutes(1440)\n .exclusionWindows( \n BackupPlanBackupScheduleRpoConfigExclusionWindowArgs.builder()\n .startTime(BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs.builder()\n .hours(1)\n .minutes(23)\n .build())\n .duration(\"1800s\")\n .daysOfWeek(BackupPlanBackupScheduleRpoConfigExclusionWindowDaysOfWeekArgs.builder()\n .daysOfWeeks( \n \"MONDAY\",\n \"THURSDAY\")\n .build())\n .build(),\n BackupPlanBackupScheduleRpoConfigExclusionWindowArgs.builder()\n .startTime(BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs.builder()\n .hours(12)\n .build())\n .duration(\"3600s\")\n .singleOccurrenceDate(BackupPlanBackupScheduleRpoConfigExclusionWindowSingleOccurrenceDateArgs.builder()\n .year(2024)\n .month(3)\n .day(17)\n .build())\n .build(),\n BackupPlanBackupScheduleRpoConfigExclusionWindowArgs.builder()\n .startTime(BackupPlanBackupScheduleRpoConfigExclusionWindowStartTimeArgs.builder()\n .hours(8)\n .minutes(40)\n .build())\n .duration(\"600s\")\n .singleOccurrenceDate(BackupPlanBackupScheduleRpoConfigExclusionWindowSingleOccurrenceDateArgs.builder()\n .year(2024)\n .month(3)\n .day(18)\n .build())\n .build())\n .build())\n .build())\n .backupConfig(BackupPlanBackupConfigArgs.builder()\n .includeVolumeData(true)\n .includeSecrets(true)\n .allNamespaces(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: rpo-weekly-cluster\n location: us-central1\n initialNodeCount: 1\n workloadIdentityConfig:\n workloadPool: my-project-name.svc.id.goog\n addonsConfig:\n gkeBackupAgentConfig:\n enabled: true\n deletionProtection: 'true'\n network: default\n subnetwork: default\n rpoWeeklyWindow:\n type: gcp:gkebackup:BackupPlan\n name: rpo_weekly_window\n properties:\n name: rpo-weekly-window\n cluster: ${primary.id}\n location: us-central1\n retentionPolicy:\n backupDeleteLockDays: 30\n backupRetainDays: 180\n backupSchedule:\n paused: true\n rpoConfig:\n targetRpoMinutes: 1440\n exclusionWindows:\n - startTime:\n hours: 1\n minutes: 23\n duration: 1800s\n daysOfWeek:\n daysOfWeeks:\n - MONDAY\n - THURSDAY\n - startTime:\n hours: 12\n duration: 3600s\n singleOccurrenceDate:\n year: 2024\n month: 3\n day: 17\n - startTime:\n hours: 8\n minutes: 40\n duration: 600s\n singleOccurrenceDate:\n year: 2024\n month: 3\n day: 18\n backupConfig:\n includeVolumeData: true\n includeSecrets: true\n allNamespaces: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBackupPlan can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/backupPlans/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, BackupPlan can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:gkebackup/backupPlan:BackupPlan default projects/{{project}}/locations/{{location}}/backupPlans/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkebackup/backupPlan:BackupPlan default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkebackup/backupPlan:BackupPlan default {{location}}/{{name}}\n```\n\n", "properties": { "backupConfig": { "$ref": "#/types/gcp:gkebackup/BackupPlanBackupConfig:BackupPlanBackupConfig", @@ -202195,7 +202195,7 @@ } }, "gcp:gkehub/feature:Feature": { - "description": "Feature represents the settings and status of any Hub Feature.\n\n\nTo get more information about Feature, see:\n\n* [API documentation](https://cloud.google.com/anthos/fleet-management/docs/reference/rest/v1/projects.locations.features)\n* How-to Guides\n * [Registering a Cluster](https://cloud.google.com/anthos/multicluster-management/connect/registering-a-cluster#register_cluster)\n\n## Example Usage\n\n### Gkehub Feature Multi Cluster Ingress\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster = new gcp.container.Cluster(\"cluster\", {\n name: \"my-cluster\",\n location: \"us-central1-a\",\n initialNodeCount: 1,\n});\nconst membership = new gcp.gkehub.Membership(\"membership\", {\n membershipId: \"my-membership\",\n endpoint: {\n gkeCluster: {\n resourceLink: pulumi.interpolate`//container.googleapis.com/${cluster.id}`,\n },\n },\n description: \"Membership\",\n});\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"multiclusteringress\",\n location: \"global\",\n spec: {\n multiclusteringress: {\n configMembership: membership.id,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster = gcp.container.Cluster(\"cluster\",\n name=\"my-cluster\",\n location=\"us-central1-a\",\n initial_node_count=1)\nmembership = gcp.gkehub.Membership(\"membership\",\n membership_id=\"my-membership\",\n endpoint={\n \"gke_cluster\": {\n \"resource_link\": cluster.id.apply(lambda id: f\"//container.googleapis.com/{id}\"),\n },\n },\n description=\"Membership\")\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"multiclusteringress\",\n location=\"global\",\n spec={\n \"multiclusteringress\": {\n \"config_membership\": membership.id,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cluster = new Gcp.Container.Cluster(\"cluster\", new()\n {\n Name = \"my-cluster\",\n Location = \"us-central1-a\",\n InitialNodeCount = 1,\n });\n\n var membership = new Gcp.GkeHub.Membership(\"membership\", new()\n {\n MembershipId = \"my-membership\",\n Endpoint = new Gcp.GkeHub.Inputs.MembershipEndpointArgs\n {\n GkeCluster = new Gcp.GkeHub.Inputs.MembershipEndpointGkeClusterArgs\n {\n ResourceLink = cluster.Id.Apply(id =\u003e $\"//container.googleapis.com/{id}\"),\n },\n },\n Description = \"Membership\",\n });\n\n var feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"multiclusteringress\",\n Location = \"global\",\n Spec = new Gcp.GkeHub.Inputs.FeatureSpecArgs\n {\n Multiclusteringress = new Gcp.GkeHub.Inputs.FeatureSpecMulticlusteringressArgs\n {\n ConfigMembership = membership.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcluster, err := container.NewCluster(ctx, \"cluster\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmembership, err := gkehub.NewMembership(ctx, \"membership\", \u0026gkehub.MembershipArgs{\n\t\t\tMembershipId: pulumi.String(\"my-membership\"),\n\t\t\tEndpoint: \u0026gkehub.MembershipEndpointArgs{\n\t\t\t\tGkeCluster: \u0026gkehub.MembershipEndpointGkeClusterArgs{\n\t\t\t\t\tResourceLink: cluster.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"//container.googleapis.com/%v\", id), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"Membership\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"multiclusteringress\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tSpec: \u0026gkehub.FeatureSpecArgs{\n\t\t\t\tMulticlusteringress: \u0026gkehub.FeatureSpecMulticlusteringressArgs{\n\t\t\t\t\tConfigMembership: membership.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.gkehub.Membership;\nimport com.pulumi.gcp.gkehub.MembershipArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointGkeClusterArgs;\nimport com.pulumi.gcp.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecMulticlusteringressArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n .name(\"my-cluster\")\n .location(\"us-central1-a\")\n .initialNodeCount(1)\n .build());\n\n var membership = new Membership(\"membership\", MembershipArgs.builder()\n .membershipId(\"my-membership\")\n .endpoint(MembershipEndpointArgs.builder()\n .gkeCluster(MembershipEndpointGkeClusterArgs.builder()\n .resourceLink(cluster.id().applyValue(id -\u003e String.format(\"//container.googleapis.com/%s\", id)))\n .build())\n .build())\n .description(\"Membership\")\n .build());\n\n var feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"multiclusteringress\")\n .location(\"global\")\n .spec(FeatureSpecArgs.builder()\n .multiclusteringress(FeatureSpecMulticlusteringressArgs.builder()\n .configMembership(membership.id())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster:\n type: gcp:container:Cluster\n properties:\n name: my-cluster\n location: us-central1-a\n initialNodeCount: 1\n membership:\n type: gcp:gkehub:Membership\n properties:\n membershipId: my-membership\n endpoint:\n gkeCluster:\n resourceLink: //container.googleapis.com/${cluster.id}\n description: Membership\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: multiclusteringress\n location: global\n spec:\n multiclusteringress:\n configMembership: ${membership.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkehub Feature Multi Cluster Service Discovery\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"multiclusterservicediscovery\",\n location: \"global\",\n labels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"multiclusterservicediscovery\",\n location=\"global\",\n labels={\n \"foo\": \"bar\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"multiclusterservicediscovery\",\n Location = \"global\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"multiclusterservicediscovery\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"multiclusterservicediscovery\")\n .location(\"global\")\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: multiclusterservicediscovery\n location: global\n labels:\n foo: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkehub Feature Anthos Service Mesh\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"servicemesh\",\n location: \"global\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"servicemesh\",\n location=\"global\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"servicemesh\",\n Location = \"global\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"servicemesh\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"servicemesh\")\n .location(\"global\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: servicemesh\n location: global\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Enable Fleet Observability For Default Logs With Copy\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"fleetobservability\",\n location: \"global\",\n spec: {\n fleetobservability: {\n loggingConfig: {\n defaultConfig: {\n mode: \"COPY\",\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"fleetobservability\",\n location=\"global\",\n spec={\n \"fleetobservability\": {\n \"logging_config\": {\n \"default_config\": {\n \"mode\": \"COPY\",\n },\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"fleetobservability\",\n Location = \"global\",\n Spec = new Gcp.GkeHub.Inputs.FeatureSpecArgs\n {\n Fleetobservability = new Gcp.GkeHub.Inputs.FeatureSpecFleetobservabilityArgs\n {\n LoggingConfig = new Gcp.GkeHub.Inputs.FeatureSpecFleetobservabilityLoggingConfigArgs\n {\n DefaultConfig = new Gcp.GkeHub.Inputs.FeatureSpecFleetobservabilityLoggingConfigDefaultConfigArgs\n {\n Mode = \"COPY\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"fleetobservability\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tSpec: \u0026gkehub.FeatureSpecArgs{\n\t\t\t\tFleetobservability: \u0026gkehub.FeatureSpecFleetobservabilityArgs{\n\t\t\t\t\tLoggingConfig: \u0026gkehub.FeatureSpecFleetobservabilityLoggingConfigArgs{\n\t\t\t\t\t\tDefaultConfig: \u0026gkehub.FeatureSpecFleetobservabilityLoggingConfigDefaultConfigArgs{\n\t\t\t\t\t\t\tMode: pulumi.String(\"COPY\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecFleetobservabilityArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecFleetobservabilityLoggingConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecFleetobservabilityLoggingConfigDefaultConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"fleetobservability\")\n .location(\"global\")\n .spec(FeatureSpecArgs.builder()\n .fleetobservability(FeatureSpecFleetobservabilityArgs.builder()\n .loggingConfig(FeatureSpecFleetobservabilityLoggingConfigArgs.builder()\n .defaultConfig(FeatureSpecFleetobservabilityLoggingConfigDefaultConfigArgs.builder()\n .mode(\"COPY\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: fleetobservability\n location: global\n spec:\n fleetobservability:\n loggingConfig:\n defaultConfig:\n mode: COPY\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Enable Fleet Observability For Scope Logs With Move\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"fleetobservability\",\n location: \"global\",\n spec: {\n fleetobservability: {\n loggingConfig: {\n fleetScopeLogsConfig: {\n mode: \"MOVE\",\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"fleetobservability\",\n location=\"global\",\n spec={\n \"fleetobservability\": {\n \"logging_config\": {\n \"fleet_scope_logs_config\": {\n \"mode\": \"MOVE\",\n },\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"fleetobservability\",\n Location = \"global\",\n Spec = new Gcp.GkeHub.Inputs.FeatureSpecArgs\n {\n Fleetobservability = new Gcp.GkeHub.Inputs.FeatureSpecFleetobservabilityArgs\n {\n LoggingConfig = new Gcp.GkeHub.Inputs.FeatureSpecFleetobservabilityLoggingConfigArgs\n {\n FleetScopeLogsConfig = new Gcp.GkeHub.Inputs.FeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArgs\n {\n Mode = \"MOVE\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"fleetobservability\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tSpec: \u0026gkehub.FeatureSpecArgs{\n\t\t\t\tFleetobservability: \u0026gkehub.FeatureSpecFleetobservabilityArgs{\n\t\t\t\t\tLoggingConfig: \u0026gkehub.FeatureSpecFleetobservabilityLoggingConfigArgs{\n\t\t\t\t\t\tFleetScopeLogsConfig: \u0026gkehub.FeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArgs{\n\t\t\t\t\t\t\tMode: pulumi.String(\"MOVE\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecFleetobservabilityArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecFleetobservabilityLoggingConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"fleetobservability\")\n .location(\"global\")\n .spec(FeatureSpecArgs.builder()\n .fleetobservability(FeatureSpecFleetobservabilityArgs.builder()\n .loggingConfig(FeatureSpecFleetobservabilityLoggingConfigArgs.builder()\n .fleetScopeLogsConfig(FeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArgs.builder()\n .mode(\"MOVE\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: fleetobservability\n location: global\n spec:\n fleetobservability:\n loggingConfig:\n fleetScopeLogsConfig:\n mode: MOVE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Enable Fleet Observability For Both Default And Scope Logs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"fleetobservability\",\n location: \"global\",\n spec: {\n fleetobservability: {\n loggingConfig: {\n defaultConfig: {\n mode: \"COPY\",\n },\n fleetScopeLogsConfig: {\n mode: \"MOVE\",\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"fleetobservability\",\n location=\"global\",\n spec={\n \"fleetobservability\": {\n \"logging_config\": {\n \"default_config\": {\n \"mode\": \"COPY\",\n },\n \"fleet_scope_logs_config\": {\n \"mode\": \"MOVE\",\n },\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"fleetobservability\",\n Location = \"global\",\n Spec = new Gcp.GkeHub.Inputs.FeatureSpecArgs\n {\n Fleetobservability = new Gcp.GkeHub.Inputs.FeatureSpecFleetobservabilityArgs\n {\n LoggingConfig = new Gcp.GkeHub.Inputs.FeatureSpecFleetobservabilityLoggingConfigArgs\n {\n DefaultConfig = new Gcp.GkeHub.Inputs.FeatureSpecFleetobservabilityLoggingConfigDefaultConfigArgs\n {\n Mode = \"COPY\",\n },\n FleetScopeLogsConfig = new Gcp.GkeHub.Inputs.FeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArgs\n {\n Mode = \"MOVE\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"fleetobservability\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tSpec: \u0026gkehub.FeatureSpecArgs{\n\t\t\t\tFleetobservability: \u0026gkehub.FeatureSpecFleetobservabilityArgs{\n\t\t\t\t\tLoggingConfig: \u0026gkehub.FeatureSpecFleetobservabilityLoggingConfigArgs{\n\t\t\t\t\t\tDefaultConfig: \u0026gkehub.FeatureSpecFleetobservabilityLoggingConfigDefaultConfigArgs{\n\t\t\t\t\t\t\tMode: pulumi.String(\"COPY\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tFleetScopeLogsConfig: \u0026gkehub.FeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArgs{\n\t\t\t\t\t\t\tMode: pulumi.String(\"MOVE\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecFleetobservabilityArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecFleetobservabilityLoggingConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecFleetobservabilityLoggingConfigDefaultConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"fleetobservability\")\n .location(\"global\")\n .spec(FeatureSpecArgs.builder()\n .fleetobservability(FeatureSpecFleetobservabilityArgs.builder()\n .loggingConfig(FeatureSpecFleetobservabilityLoggingConfigArgs.builder()\n .defaultConfig(FeatureSpecFleetobservabilityLoggingConfigDefaultConfigArgs.builder()\n .mode(\"COPY\")\n .build())\n .fleetScopeLogsConfig(FeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArgs.builder()\n .mode(\"MOVE\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: fleetobservability\n location: global\n spec:\n fleetobservability:\n loggingConfig:\n defaultConfig:\n mode: COPY\n fleetScopeLogsConfig:\n mode: MOVE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Enable Fleet Default Member Config Service Mesh\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"servicemesh\",\n location: \"global\",\n fleetDefaultMemberConfig: {\n mesh: {\n management: \"MANAGEMENT_AUTOMATIC\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"servicemesh\",\n location=\"global\",\n fleet_default_member_config={\n \"mesh\": {\n \"management\": \"MANAGEMENT_AUTOMATIC\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"servicemesh\",\n Location = \"global\",\n FleetDefaultMemberConfig = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigArgs\n {\n Mesh = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigMeshArgs\n {\n Management = \"MANAGEMENT_AUTOMATIC\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"servicemesh\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tFleetDefaultMemberConfig: \u0026gkehub.FeatureFleetDefaultMemberConfigArgs{\n\t\t\t\tMesh: \u0026gkehub.FeatureFleetDefaultMemberConfigMeshArgs{\n\t\t\t\t\tManagement: pulumi.String(\"MANAGEMENT_AUTOMATIC\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigMeshArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"servicemesh\")\n .location(\"global\")\n .fleetDefaultMemberConfig(FeatureFleetDefaultMemberConfigArgs.builder()\n .mesh(FeatureFleetDefaultMemberConfigMeshArgs.builder()\n .management(\"MANAGEMENT_AUTOMATIC\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: servicemesh\n location: global\n fleetDefaultMemberConfig:\n mesh:\n management: MANAGEMENT_AUTOMATIC\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Enable Fleet Default Member Config Configmanagement\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"configmanagement\",\n location: \"global\",\n fleetDefaultMemberConfig: {\n configmanagement: {\n configSync: {\n git: {\n syncRepo: \"https://github.com/hashicorp/terraform\",\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"configmanagement\",\n location=\"global\",\n fleet_default_member_config={\n \"configmanagement\": {\n \"config_sync\": {\n \"git\": {\n \"sync_repo\": \"https://github.com/hashicorp/terraform\",\n },\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"configmanagement\",\n Location = \"global\",\n FleetDefaultMemberConfig = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigArgs\n {\n Configmanagement = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigConfigmanagementArgs\n {\n ConfigSync = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArgs\n {\n Git = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArgs\n {\n SyncRepo = \"https://github.com/hashicorp/terraform\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"configmanagement\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tFleetDefaultMemberConfig: \u0026gkehub.FeatureFleetDefaultMemberConfigArgs{\n\t\t\t\tConfigmanagement: \u0026gkehub.FeatureFleetDefaultMemberConfigConfigmanagementArgs{\n\t\t\t\t\tConfigSync: \u0026gkehub.FeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArgs{\n\t\t\t\t\t\tGit: \u0026gkehub.FeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArgs{\n\t\t\t\t\t\t\tSyncRepo: pulumi.String(\"https://github.com/hashicorp/terraform\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigConfigmanagementArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"configmanagement\")\n .location(\"global\")\n .fleetDefaultMemberConfig(FeatureFleetDefaultMemberConfigArgs.builder()\n .configmanagement(FeatureFleetDefaultMemberConfigConfigmanagementArgs.builder()\n .configSync(FeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArgs.builder()\n .git(FeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArgs.builder()\n .syncRepo(\"https://github.com/hashicorp/terraform\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: configmanagement\n location: global\n fleetDefaultMemberConfig:\n configmanagement:\n configSync:\n git:\n syncRepo: https://github.com/hashicorp/terraform\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Enable Fleet Default Member Config Policycontroller\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"policycontroller\",\n location: \"global\",\n fleetDefaultMemberConfig: {\n policycontroller: {\n policyControllerHubConfig: {\n installSpec: \"INSTALL_SPEC_ENABLED\",\n exemptableNamespaces: [\"foo\"],\n policyContent: {\n bundles: [{\n bundle: \"policy-essentials-v2022\",\n exemptedNamespaces: [\n \"foo\",\n \"bar\",\n ],\n }],\n templateLibrary: {\n installation: \"ALL\",\n },\n },\n auditIntervalSeconds: 30,\n referentialRulesEnabled: true,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"policycontroller\",\n location=\"global\",\n fleet_default_member_config={\n \"policycontroller\": {\n \"policy_controller_hub_config\": {\n \"install_spec\": \"INSTALL_SPEC_ENABLED\",\n \"exemptable_namespaces\": [\"foo\"],\n \"policy_content\": {\n \"bundles\": [{\n \"bundle\": \"policy-essentials-v2022\",\n \"exempted_namespaces\": [\n \"foo\",\n \"bar\",\n ],\n }],\n \"template_library\": {\n \"installation\": \"ALL\",\n },\n },\n \"audit_interval_seconds\": 30,\n \"referential_rules_enabled\": True,\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"policycontroller\",\n Location = \"global\",\n FleetDefaultMemberConfig = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigArgs\n {\n Policycontroller = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerArgs\n {\n PolicyControllerHubConfig = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs\n {\n InstallSpec = \"INSTALL_SPEC_ENABLED\",\n ExemptableNamespaces = new[]\n {\n \"foo\",\n },\n PolicyContent = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArgs\n {\n Bundles = new[]\n {\n new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArgs\n {\n Bundle = \"policy-essentials-v2022\",\n ExemptedNamespaces = new[]\n {\n \"foo\",\n \"bar\",\n },\n },\n },\n TemplateLibrary = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs\n {\n Installation = \"ALL\",\n },\n },\n AuditIntervalSeconds = 30,\n ReferentialRulesEnabled = true,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"policycontroller\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tFleetDefaultMemberConfig: \u0026gkehub.FeatureFleetDefaultMemberConfigArgs{\n\t\t\t\tPolicycontroller: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerArgs{\n\t\t\t\t\tPolicyControllerHubConfig: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs{\n\t\t\t\t\t\tInstallSpec: pulumi.String(\"INSTALL_SPEC_ENABLED\"),\n\t\t\t\t\t\tExemptableNamespaces: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPolicyContent: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArgs{\n\t\t\t\t\t\t\tBundles: gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArray{\n\t\t\t\t\t\t\t\t\u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArgs{\n\t\t\t\t\t\t\t\t\tBundle: pulumi.String(\"policy-essentials-v2022\"),\n\t\t\t\t\t\t\t\t\tExemptedNamespaces: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tTemplateLibrary: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs{\n\t\t\t\t\t\t\t\tInstallation: pulumi.String(\"ALL\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAuditIntervalSeconds: pulumi.Int(30),\n\t\t\t\t\t\tReferentialRulesEnabled: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"policycontroller\")\n .location(\"global\")\n .fleetDefaultMemberConfig(FeatureFleetDefaultMemberConfigArgs.builder()\n .policycontroller(FeatureFleetDefaultMemberConfigPolicycontrollerArgs.builder()\n .policyControllerHubConfig(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs.builder()\n .installSpec(\"INSTALL_SPEC_ENABLED\")\n .exemptableNamespaces(\"foo\")\n .policyContent(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArgs.builder()\n .bundles(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArgs.builder()\n .bundle(\"policy-essentials-v2022\")\n .exemptedNamespaces( \n \"foo\",\n \"bar\")\n .build())\n .templateLibrary(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs.builder()\n .installation(\"ALL\")\n .build())\n .build())\n .auditIntervalSeconds(30)\n .referentialRulesEnabled(true)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: policycontroller\n location: global\n fleetDefaultMemberConfig:\n policycontroller:\n policyControllerHubConfig:\n installSpec: INSTALL_SPEC_ENABLED\n exemptableNamespaces:\n - foo\n policyContent:\n bundles:\n - bundle: policy-essentials-v2022\n exemptedNamespaces:\n - foo\n - bar\n templateLibrary:\n installation: ALL\n auditIntervalSeconds: 30\n referentialRulesEnabled: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Enable Fleet Default Member Config Policycontroller Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"policycontroller\",\n location: \"global\",\n fleetDefaultMemberConfig: {\n policycontroller: {\n policyControllerHubConfig: {\n installSpec: \"INSTALL_SPEC_SUSPENDED\",\n policyContent: {\n bundles: [\n {\n bundle: \"pci-dss-v3.2.1\",\n exemptedNamespaces: [\n \"baz\",\n \"bar\",\n ],\n },\n {\n bundle: \"nist-sp-800-190\",\n exemptedNamespaces: [],\n },\n ],\n templateLibrary: {\n installation: \"ALL\",\n },\n },\n constraintViolationLimit: 50,\n referentialRulesEnabled: true,\n logDeniesEnabled: true,\n mutationEnabled: true,\n deploymentConfigs: [\n {\n component: \"admission\",\n replicaCount: 2,\n podAffinity: \"ANTI_AFFINITY\",\n },\n {\n component: \"audit\",\n containerResources: {\n limits: {\n memory: \"1Gi\",\n cpu: \"1.5\",\n },\n requests: {\n memory: \"500Mi\",\n cpu: \"150m\",\n },\n },\n podTolerations: [{\n key: \"key1\",\n operator: \"Equal\",\n value: \"value1\",\n effect: \"NoSchedule\",\n }],\n },\n ],\n monitoring: {\n backends: [\"PROMETHEUS\"],\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"policycontroller\",\n location=\"global\",\n fleet_default_member_config={\n \"policycontroller\": {\n \"policy_controller_hub_config\": {\n \"install_spec\": \"INSTALL_SPEC_SUSPENDED\",\n \"policy_content\": {\n \"bundles\": [\n {\n \"bundle\": \"pci-dss-v3.2.1\",\n \"exempted_namespaces\": [\n \"baz\",\n \"bar\",\n ],\n },\n {\n \"bundle\": \"nist-sp-800-190\",\n \"exempted_namespaces\": [],\n },\n ],\n \"template_library\": {\n \"installation\": \"ALL\",\n },\n },\n \"constraint_violation_limit\": 50,\n \"referential_rules_enabled\": True,\n \"log_denies_enabled\": True,\n \"mutation_enabled\": True,\n \"deployment_configs\": [\n {\n \"component\": \"admission\",\n \"replica_count\": 2,\n \"pod_affinity\": \"ANTI_AFFINITY\",\n },\n {\n \"component\": \"audit\",\n \"container_resources\": {\n \"limits\": {\n \"memory\": \"1Gi\",\n \"cpu\": \"1.5\",\n },\n \"requests\": {\n \"memory\": \"500Mi\",\n \"cpu\": \"150m\",\n },\n },\n \"pod_tolerations\": [{\n \"key\": \"key1\",\n \"operator\": \"Equal\",\n \"value\": \"value1\",\n \"effect\": \"NoSchedule\",\n }],\n },\n ],\n \"monitoring\": {\n \"backends\": [\"PROMETHEUS\"],\n },\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"policycontroller\",\n Location = \"global\",\n FleetDefaultMemberConfig = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigArgs\n {\n Policycontroller = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerArgs\n {\n PolicyControllerHubConfig = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs\n {\n InstallSpec = \"INSTALL_SPEC_SUSPENDED\",\n PolicyContent = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArgs\n {\n Bundles = new[]\n {\n new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArgs\n {\n Bundle = \"pci-dss-v3.2.1\",\n ExemptedNamespaces = new[]\n {\n \"baz\",\n \"bar\",\n },\n },\n new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArgs\n {\n Bundle = \"nist-sp-800-190\",\n ExemptedNamespaces = new() { },\n },\n },\n TemplateLibrary = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs\n {\n Installation = \"ALL\",\n },\n },\n ConstraintViolationLimit = 50,\n ReferentialRulesEnabled = true,\n LogDeniesEnabled = true,\n MutationEnabled = true,\n DeploymentConfigs = new[]\n {\n new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArgs\n {\n Component = \"admission\",\n ReplicaCount = 2,\n PodAffinity = \"ANTI_AFFINITY\",\n },\n new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArgs\n {\n Component = \"audit\",\n ContainerResources = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourcesArgs\n {\n Limits = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourcesLimitsArgs\n {\n Memory = \"1Gi\",\n Cpu = \"1.5\",\n },\n Requests = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourcesRequestsArgs\n {\n Memory = \"500Mi\",\n Cpu = \"150m\",\n },\n },\n PodTolerations = new[]\n {\n new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArgs\n {\n Key = \"key1\",\n Operator = \"Equal\",\n Value = \"value1\",\n Effect = \"NoSchedule\",\n },\n },\n },\n },\n Monitoring = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArgs\n {\n Backends = new[]\n {\n \"PROMETHEUS\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"policycontroller\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tFleetDefaultMemberConfig: \u0026gkehub.FeatureFleetDefaultMemberConfigArgs{\n\t\t\t\tPolicycontroller: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerArgs{\n\t\t\t\t\tPolicyControllerHubConfig: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs{\n\t\t\t\t\t\tInstallSpec: pulumi.String(\"INSTALL_SPEC_SUSPENDED\"),\n\t\t\t\t\t\tPolicyContent: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArgs{\n\t\t\t\t\t\t\tBundles: gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArray{\n\t\t\t\t\t\t\t\t\u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArgs{\n\t\t\t\t\t\t\t\t\tBundle: pulumi.String(\"pci-dss-v3.2.1\"),\n\t\t\t\t\t\t\t\t\tExemptedNamespaces: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"baz\"),\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArgs{\n\t\t\t\t\t\t\t\t\tBundle: pulumi.String(\"nist-sp-800-190\"),\n\t\t\t\t\t\t\t\t\tExemptedNamespaces: pulumi.StringArray{},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tTemplateLibrary: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs{\n\t\t\t\t\t\t\t\tInstallation: pulumi.String(\"ALL\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tConstraintViolationLimit: pulumi.Int(50),\n\t\t\t\t\t\tReferentialRulesEnabled: pulumi.Bool(true),\n\t\t\t\t\t\tLogDeniesEnabled: pulumi.Bool(true),\n\t\t\t\t\t\tMutationEnabled: pulumi.Bool(true),\n\t\t\t\t\t\tDeploymentConfigs: gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArray{\n\t\t\t\t\t\t\t\u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArgs{\n\t\t\t\t\t\t\t\tComponent: pulumi.String(\"admission\"),\n\t\t\t\t\t\t\t\tReplicaCount: pulumi.Int(2),\n\t\t\t\t\t\t\t\tPodAffinity: pulumi.String(\"ANTI_AFFINITY\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArgs{\n\t\t\t\t\t\t\t\tComponent: pulumi.String(\"audit\"),\n\t\t\t\t\t\t\t\tContainerResources: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourcesArgs{\n\t\t\t\t\t\t\t\t\tLimits: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourcesLimitsArgs{\n\t\t\t\t\t\t\t\t\t\tMemory: pulumi.String(\"1Gi\"),\n\t\t\t\t\t\t\t\t\t\tCpu: pulumi.String(\"1.5\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tRequests: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourcesRequestsArgs{\n\t\t\t\t\t\t\t\t\t\tMemory: pulumi.String(\"500Mi\"),\n\t\t\t\t\t\t\t\t\t\tCpu: pulumi.String(\"150m\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tPodTolerations: gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArray{\n\t\t\t\t\t\t\t\t\t\u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArgs{\n\t\t\t\t\t\t\t\t\t\tKey: pulumi.String(\"key1\"),\n\t\t\t\t\t\t\t\t\t\tOperator: pulumi.String(\"Equal\"),\n\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"value1\"),\n\t\t\t\t\t\t\t\t\t\tEffect: pulumi.String(\"NoSchedule\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tMonitoring: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArgs{\n\t\t\t\t\t\t\tBackends: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"PROMETHEUS\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"policycontroller\")\n .location(\"global\")\n .fleetDefaultMemberConfig(FeatureFleetDefaultMemberConfigArgs.builder()\n .policycontroller(FeatureFleetDefaultMemberConfigPolicycontrollerArgs.builder()\n .policyControllerHubConfig(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs.builder()\n .installSpec(\"INSTALL_SPEC_SUSPENDED\")\n .policyContent(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArgs.builder()\n .bundles( \n FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArgs.builder()\n .bundle(\"pci-dss-v3.2.1\")\n .exemptedNamespaces( \n \"baz\",\n \"bar\")\n .build(),\n FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArgs.builder()\n .bundle(\"nist-sp-800-190\")\n .exemptedNamespaces()\n .build())\n .templateLibrary(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs.builder()\n .installation(\"ALL\")\n .build())\n .build())\n .constraintViolationLimit(50)\n .referentialRulesEnabled(true)\n .logDeniesEnabled(true)\n .mutationEnabled(true)\n .deploymentConfigs( \n FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArgs.builder()\n .component(\"admission\")\n .replicaCount(2)\n .podAffinity(\"ANTI_AFFINITY\")\n .build(),\n FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArgs.builder()\n .component(\"audit\")\n .containerResources(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourcesArgs.builder()\n .limits(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourcesLimitsArgs.builder()\n .memory(\"1Gi\")\n .cpu(\"1.5\")\n .build())\n .requests(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourcesRequestsArgs.builder()\n .memory(\"500Mi\")\n .cpu(\"150m\")\n .build())\n .build())\n .podTolerations(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArgs.builder()\n .key(\"key1\")\n .operator(\"Equal\")\n .value(\"value1\")\n .effect(\"NoSchedule\")\n .build())\n .build())\n .monitoring(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArgs.builder()\n .backends(\"PROMETHEUS\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: policycontroller\n location: global\n fleetDefaultMemberConfig:\n policycontroller:\n policyControllerHubConfig:\n installSpec: INSTALL_SPEC_SUSPENDED\n policyContent:\n bundles:\n - bundle: pci-dss-v3.2.1\n exemptedNamespaces:\n - baz\n - bar\n - bundle: nist-sp-800-190\n exemptedNamespaces: []\n templateLibrary:\n installation: ALL\n constraintViolationLimit: 50\n referentialRulesEnabled: true\n logDeniesEnabled: true\n mutationEnabled: true\n deploymentConfigs:\n - component: admission\n replicaCount: 2\n podAffinity: ANTI_AFFINITY\n - component: audit\n containerResources:\n limits:\n memory: 1Gi\n cpu: '1.5'\n requests:\n memory: 500Mi\n cpu: 150m\n podTolerations:\n - key: key1\n operator: Equal\n value: value1\n effect: NoSchedule\n monitoring:\n backends:\n - PROMETHEUS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Enable Fleet Default Member Config Policycontroller Minimal\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"policycontroller\",\n location: \"global\",\n fleetDefaultMemberConfig: {\n policycontroller: {\n policyControllerHubConfig: {\n installSpec: \"INSTALL_SPEC_ENABLED\",\n policyContent: {},\n constraintViolationLimit: 50,\n referentialRulesEnabled: true,\n logDeniesEnabled: true,\n mutationEnabled: true,\n deploymentConfigs: [{\n component: \"admission\",\n }],\n monitoring: {},\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"policycontroller\",\n location=\"global\",\n fleet_default_member_config={\n \"policycontroller\": {\n \"policy_controller_hub_config\": {\n \"install_spec\": \"INSTALL_SPEC_ENABLED\",\n \"policy_content\": {},\n \"constraint_violation_limit\": 50,\n \"referential_rules_enabled\": True,\n \"log_denies_enabled\": True,\n \"mutation_enabled\": True,\n \"deployment_configs\": [{\n \"component\": \"admission\",\n }],\n \"monitoring\": {},\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"policycontroller\",\n Location = \"global\",\n FleetDefaultMemberConfig = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigArgs\n {\n Policycontroller = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerArgs\n {\n PolicyControllerHubConfig = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs\n {\n InstallSpec = \"INSTALL_SPEC_ENABLED\",\n PolicyContent = null,\n ConstraintViolationLimit = 50,\n ReferentialRulesEnabled = true,\n LogDeniesEnabled = true,\n MutationEnabled = true,\n DeploymentConfigs = new[]\n {\n new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArgs\n {\n Component = \"admission\",\n },\n },\n Monitoring = null,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"policycontroller\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tFleetDefaultMemberConfig: \u0026gkehub.FeatureFleetDefaultMemberConfigArgs{\n\t\t\t\tPolicycontroller: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerArgs{\n\t\t\t\t\tPolicyControllerHubConfig: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs{\n\t\t\t\t\t\tInstallSpec: pulumi.String(\"INSTALL_SPEC_ENABLED\"),\n\t\t\t\t\t\tPolicyContent: nil,\n\t\t\t\t\t\tConstraintViolationLimit: pulumi.Int(50),\n\t\t\t\t\t\tReferentialRulesEnabled: pulumi.Bool(true),\n\t\t\t\t\t\tLogDeniesEnabled: pulumi.Bool(true),\n\t\t\t\t\t\tMutationEnabled: pulumi.Bool(true),\n\t\t\t\t\t\tDeploymentConfigs: gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArray{\n\t\t\t\t\t\t\t\u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArgs{\n\t\t\t\t\t\t\t\tComponent: pulumi.String(\"admission\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tMonitoring: nil,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"policycontroller\")\n .location(\"global\")\n .fleetDefaultMemberConfig(FeatureFleetDefaultMemberConfigArgs.builder()\n .policycontroller(FeatureFleetDefaultMemberConfigPolicycontrollerArgs.builder()\n .policyControllerHubConfig(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs.builder()\n .installSpec(\"INSTALL_SPEC_ENABLED\")\n .policyContent()\n .constraintViolationLimit(50)\n .referentialRulesEnabled(true)\n .logDeniesEnabled(true)\n .mutationEnabled(true)\n .deploymentConfigs(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArgs.builder()\n .component(\"admission\")\n .build())\n .monitoring()\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: policycontroller\n location: global\n fleetDefaultMemberConfig:\n policycontroller:\n policyControllerHubConfig:\n installSpec: INSTALL_SPEC_ENABLED\n policyContent: {}\n constraintViolationLimit: 50\n referentialRulesEnabled: true\n logDeniesEnabled: true\n mutationEnabled: true\n deploymentConfigs:\n - component: admission\n monitoring: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkehub Feature Clusterupgrade\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"clusterupgrade\",\n location: \"global\",\n spec: {\n clusterupgrade: {\n upstreamFleets: [],\n postConditions: {\n soaking: \"60s\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"clusterupgrade\",\n location=\"global\",\n spec={\n \"clusterupgrade\": {\n \"upstream_fleets\": [],\n \"post_conditions\": {\n \"soaking\": \"60s\",\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"clusterupgrade\",\n Location = \"global\",\n Spec = new Gcp.GkeHub.Inputs.FeatureSpecArgs\n {\n Clusterupgrade = new Gcp.GkeHub.Inputs.FeatureSpecClusterupgradeArgs\n {\n UpstreamFleets = new() { },\n PostConditions = new Gcp.GkeHub.Inputs.FeatureSpecClusterupgradePostConditionsArgs\n {\n Soaking = \"60s\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"clusterupgrade\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tSpec: \u0026gkehub.FeatureSpecArgs{\n\t\t\t\tClusterupgrade: \u0026gkehub.FeatureSpecClusterupgradeArgs{\n\t\t\t\t\tUpstreamFleets: pulumi.StringArray{},\n\t\t\t\t\tPostConditions: \u0026gkehub.FeatureSpecClusterupgradePostConditionsArgs{\n\t\t\t\t\t\tSoaking: pulumi.String(\"60s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecClusterupgradeArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecClusterupgradePostConditionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"clusterupgrade\")\n .location(\"global\")\n .spec(FeatureSpecArgs.builder()\n .clusterupgrade(FeatureSpecClusterupgradeArgs.builder()\n .upstreamFleets()\n .postConditions(FeatureSpecClusterupgradePostConditionsArgs.builder()\n .soaking(\"60s\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: clusterupgrade\n location: global\n spec:\n clusterupgrade:\n upstreamFleets: []\n postConditions:\n soaking: 60s\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFeature can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/features/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Feature can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:gkehub/feature:Feature default projects/{{project}}/locations/{{location}}/features/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkehub/feature:Feature default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkehub/feature:Feature default {{location}}/{{name}}\n```\n\n", + "description": "Feature represents the settings and status of any Hub Feature.\n\n\nTo get more information about Feature, see:\n\n* [API documentation](https://cloud.google.com/anthos/fleet-management/docs/reference/rest/v1/projects.locations.features)\n* How-to Guides\n * [Registering a Cluster](https://cloud.google.com/anthos/multicluster-management/connect/registering-a-cluster#register_cluster)\n\n## Example Usage\n\n### Gkehub Feature Multi Cluster Ingress\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster = new gcp.container.Cluster(\"cluster\", {\n name: \"my-cluster\",\n location: \"us-central1-a\",\n initialNodeCount: 1,\n});\nconst membership = new gcp.gkehub.Membership(\"membership\", {\n membershipId: \"my-membership\",\n endpoint: {\n gkeCluster: {\n resourceLink: pulumi.interpolate`//container.googleapis.com/${cluster.id}`,\n },\n },\n description: \"Membership\",\n});\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"multiclusteringress\",\n location: \"global\",\n spec: {\n multiclusteringress: {\n configMembership: membership.id,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster = gcp.container.Cluster(\"cluster\",\n name=\"my-cluster\",\n location=\"us-central1-a\",\n initial_node_count=1)\nmembership = gcp.gkehub.Membership(\"membership\",\n membership_id=\"my-membership\",\n endpoint={\n \"gke_cluster\": {\n \"resource_link\": cluster.id.apply(lambda id: f\"//container.googleapis.com/{id}\"),\n },\n },\n description=\"Membership\")\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"multiclusteringress\",\n location=\"global\",\n spec={\n \"multiclusteringress\": {\n \"config_membership\": membership.id,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cluster = new Gcp.Container.Cluster(\"cluster\", new()\n {\n Name = \"my-cluster\",\n Location = \"us-central1-a\",\n InitialNodeCount = 1,\n });\n\n var membership = new Gcp.GkeHub.Membership(\"membership\", new()\n {\n MembershipId = \"my-membership\",\n Endpoint = new Gcp.GkeHub.Inputs.MembershipEndpointArgs\n {\n GkeCluster = new Gcp.GkeHub.Inputs.MembershipEndpointGkeClusterArgs\n {\n ResourceLink = cluster.Id.Apply(id =\u003e $\"//container.googleapis.com/{id}\"),\n },\n },\n Description = \"Membership\",\n });\n\n var feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"multiclusteringress\",\n Location = \"global\",\n Spec = new Gcp.GkeHub.Inputs.FeatureSpecArgs\n {\n Multiclusteringress = new Gcp.GkeHub.Inputs.FeatureSpecMulticlusteringressArgs\n {\n ConfigMembership = membership.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcluster, err := container.NewCluster(ctx, \"cluster\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmembership, err := gkehub.NewMembership(ctx, \"membership\", \u0026gkehub.MembershipArgs{\n\t\t\tMembershipId: pulumi.String(\"my-membership\"),\n\t\t\tEndpoint: \u0026gkehub.MembershipEndpointArgs{\n\t\t\t\tGkeCluster: \u0026gkehub.MembershipEndpointGkeClusterArgs{\n\t\t\t\t\tResourceLink: cluster.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"//container.googleapis.com/%v\", id), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"Membership\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"multiclusteringress\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tSpec: \u0026gkehub.FeatureSpecArgs{\n\t\t\t\tMulticlusteringress: \u0026gkehub.FeatureSpecMulticlusteringressArgs{\n\t\t\t\t\tConfigMembership: membership.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.gkehub.Membership;\nimport com.pulumi.gcp.gkehub.MembershipArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointGkeClusterArgs;\nimport com.pulumi.gcp.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecMulticlusteringressArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n .name(\"my-cluster\")\n .location(\"us-central1-a\")\n .initialNodeCount(1)\n .build());\n\n var membership = new Membership(\"membership\", MembershipArgs.builder()\n .membershipId(\"my-membership\")\n .endpoint(MembershipEndpointArgs.builder()\n .gkeCluster(MembershipEndpointGkeClusterArgs.builder()\n .resourceLink(cluster.id().applyValue(id -\u003e String.format(\"//container.googleapis.com/%s\", id)))\n .build())\n .build())\n .description(\"Membership\")\n .build());\n\n var feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"multiclusteringress\")\n .location(\"global\")\n .spec(FeatureSpecArgs.builder()\n .multiclusteringress(FeatureSpecMulticlusteringressArgs.builder()\n .configMembership(membership.id())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster:\n type: gcp:container:Cluster\n properties:\n name: my-cluster\n location: us-central1-a\n initialNodeCount: 1\n membership:\n type: gcp:gkehub:Membership\n properties:\n membershipId: my-membership\n endpoint:\n gkeCluster:\n resourceLink: //container.googleapis.com/${cluster.id}\n description: Membership\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: multiclusteringress\n location: global\n spec:\n multiclusteringress:\n configMembership: ${membership.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkehub Feature Multi Cluster Service Discovery\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"multiclusterservicediscovery\",\n location: \"global\",\n labels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"multiclusterservicediscovery\",\n location=\"global\",\n labels={\n \"foo\": \"bar\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"multiclusterservicediscovery\",\n Location = \"global\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"multiclusterservicediscovery\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"multiclusterservicediscovery\")\n .location(\"global\")\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: multiclusterservicediscovery\n location: global\n labels:\n foo: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkehub Feature Anthos Service Mesh\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"servicemesh\",\n location: \"global\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"servicemesh\",\n location=\"global\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"servicemesh\",\n Location = \"global\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"servicemesh\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"servicemesh\")\n .location(\"global\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: servicemesh\n location: global\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Enable Fleet Observability For Default Logs With Copy\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"fleetobservability\",\n location: \"global\",\n spec: {\n fleetobservability: {\n loggingConfig: {\n defaultConfig: {\n mode: \"COPY\",\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"fleetobservability\",\n location=\"global\",\n spec={\n \"fleetobservability\": {\n \"logging_config\": {\n \"default_config\": {\n \"mode\": \"COPY\",\n },\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"fleetobservability\",\n Location = \"global\",\n Spec = new Gcp.GkeHub.Inputs.FeatureSpecArgs\n {\n Fleetobservability = new Gcp.GkeHub.Inputs.FeatureSpecFleetobservabilityArgs\n {\n LoggingConfig = new Gcp.GkeHub.Inputs.FeatureSpecFleetobservabilityLoggingConfigArgs\n {\n DefaultConfig = new Gcp.GkeHub.Inputs.FeatureSpecFleetobservabilityLoggingConfigDefaultConfigArgs\n {\n Mode = \"COPY\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"fleetobservability\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tSpec: \u0026gkehub.FeatureSpecArgs{\n\t\t\t\tFleetobservability: \u0026gkehub.FeatureSpecFleetobservabilityArgs{\n\t\t\t\t\tLoggingConfig: \u0026gkehub.FeatureSpecFleetobservabilityLoggingConfigArgs{\n\t\t\t\t\t\tDefaultConfig: \u0026gkehub.FeatureSpecFleetobservabilityLoggingConfigDefaultConfigArgs{\n\t\t\t\t\t\t\tMode: pulumi.String(\"COPY\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecFleetobservabilityArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecFleetobservabilityLoggingConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecFleetobservabilityLoggingConfigDefaultConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"fleetobservability\")\n .location(\"global\")\n .spec(FeatureSpecArgs.builder()\n .fleetobservability(FeatureSpecFleetobservabilityArgs.builder()\n .loggingConfig(FeatureSpecFleetobservabilityLoggingConfigArgs.builder()\n .defaultConfig(FeatureSpecFleetobservabilityLoggingConfigDefaultConfigArgs.builder()\n .mode(\"COPY\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: fleetobservability\n location: global\n spec:\n fleetobservability:\n loggingConfig:\n defaultConfig:\n mode: COPY\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Enable Fleet Observability For Scope Logs With Move\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"fleetobservability\",\n location: \"global\",\n spec: {\n fleetobservability: {\n loggingConfig: {\n fleetScopeLogsConfig: {\n mode: \"MOVE\",\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"fleetobservability\",\n location=\"global\",\n spec={\n \"fleetobservability\": {\n \"logging_config\": {\n \"fleet_scope_logs_config\": {\n \"mode\": \"MOVE\",\n },\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"fleetobservability\",\n Location = \"global\",\n Spec = new Gcp.GkeHub.Inputs.FeatureSpecArgs\n {\n Fleetobservability = new Gcp.GkeHub.Inputs.FeatureSpecFleetobservabilityArgs\n {\n LoggingConfig = new Gcp.GkeHub.Inputs.FeatureSpecFleetobservabilityLoggingConfigArgs\n {\n FleetScopeLogsConfig = new Gcp.GkeHub.Inputs.FeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArgs\n {\n Mode = \"MOVE\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"fleetobservability\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tSpec: \u0026gkehub.FeatureSpecArgs{\n\t\t\t\tFleetobservability: \u0026gkehub.FeatureSpecFleetobservabilityArgs{\n\t\t\t\t\tLoggingConfig: \u0026gkehub.FeatureSpecFleetobservabilityLoggingConfigArgs{\n\t\t\t\t\t\tFleetScopeLogsConfig: \u0026gkehub.FeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArgs{\n\t\t\t\t\t\t\tMode: pulumi.String(\"MOVE\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecFleetobservabilityArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecFleetobservabilityLoggingConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"fleetobservability\")\n .location(\"global\")\n .spec(FeatureSpecArgs.builder()\n .fleetobservability(FeatureSpecFleetobservabilityArgs.builder()\n .loggingConfig(FeatureSpecFleetobservabilityLoggingConfigArgs.builder()\n .fleetScopeLogsConfig(FeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArgs.builder()\n .mode(\"MOVE\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: fleetobservability\n location: global\n spec:\n fleetobservability:\n loggingConfig:\n fleetScopeLogsConfig:\n mode: MOVE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Enable Fleet Observability For Both Default And Scope Logs\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"fleetobservability\",\n location: \"global\",\n spec: {\n fleetobservability: {\n loggingConfig: {\n defaultConfig: {\n mode: \"COPY\",\n },\n fleetScopeLogsConfig: {\n mode: \"MOVE\",\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"fleetobservability\",\n location=\"global\",\n spec={\n \"fleetobservability\": {\n \"logging_config\": {\n \"default_config\": {\n \"mode\": \"COPY\",\n },\n \"fleet_scope_logs_config\": {\n \"mode\": \"MOVE\",\n },\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"fleetobservability\",\n Location = \"global\",\n Spec = new Gcp.GkeHub.Inputs.FeatureSpecArgs\n {\n Fleetobservability = new Gcp.GkeHub.Inputs.FeatureSpecFleetobservabilityArgs\n {\n LoggingConfig = new Gcp.GkeHub.Inputs.FeatureSpecFleetobservabilityLoggingConfigArgs\n {\n DefaultConfig = new Gcp.GkeHub.Inputs.FeatureSpecFleetobservabilityLoggingConfigDefaultConfigArgs\n {\n Mode = \"COPY\",\n },\n FleetScopeLogsConfig = new Gcp.GkeHub.Inputs.FeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArgs\n {\n Mode = \"MOVE\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"fleetobservability\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tSpec: \u0026gkehub.FeatureSpecArgs{\n\t\t\t\tFleetobservability: \u0026gkehub.FeatureSpecFleetobservabilityArgs{\n\t\t\t\t\tLoggingConfig: \u0026gkehub.FeatureSpecFleetobservabilityLoggingConfigArgs{\n\t\t\t\t\t\tDefaultConfig: \u0026gkehub.FeatureSpecFleetobservabilityLoggingConfigDefaultConfigArgs{\n\t\t\t\t\t\t\tMode: pulumi.String(\"COPY\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tFleetScopeLogsConfig: \u0026gkehub.FeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArgs{\n\t\t\t\t\t\t\tMode: pulumi.String(\"MOVE\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecFleetobservabilityArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecFleetobservabilityLoggingConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecFleetobservabilityLoggingConfigDefaultConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"fleetobservability\")\n .location(\"global\")\n .spec(FeatureSpecArgs.builder()\n .fleetobservability(FeatureSpecFleetobservabilityArgs.builder()\n .loggingConfig(FeatureSpecFleetobservabilityLoggingConfigArgs.builder()\n .defaultConfig(FeatureSpecFleetobservabilityLoggingConfigDefaultConfigArgs.builder()\n .mode(\"COPY\")\n .build())\n .fleetScopeLogsConfig(FeatureSpecFleetobservabilityLoggingConfigFleetScopeLogsConfigArgs.builder()\n .mode(\"MOVE\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: fleetobservability\n location: global\n spec:\n fleetobservability:\n loggingConfig:\n defaultConfig:\n mode: COPY\n fleetScopeLogsConfig:\n mode: MOVE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Enable Fleet Default Member Config Service Mesh\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"servicemesh\",\n location: \"global\",\n fleetDefaultMemberConfig: {\n mesh: {\n management: \"MANAGEMENT_AUTOMATIC\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"servicemesh\",\n location=\"global\",\n fleet_default_member_config={\n \"mesh\": {\n \"management\": \"MANAGEMENT_AUTOMATIC\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"servicemesh\",\n Location = \"global\",\n FleetDefaultMemberConfig = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigArgs\n {\n Mesh = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigMeshArgs\n {\n Management = \"MANAGEMENT_AUTOMATIC\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"servicemesh\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tFleetDefaultMemberConfig: \u0026gkehub.FeatureFleetDefaultMemberConfigArgs{\n\t\t\t\tMesh: \u0026gkehub.FeatureFleetDefaultMemberConfigMeshArgs{\n\t\t\t\t\tManagement: pulumi.String(\"MANAGEMENT_AUTOMATIC\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigMeshArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"servicemesh\")\n .location(\"global\")\n .fleetDefaultMemberConfig(FeatureFleetDefaultMemberConfigArgs.builder()\n .mesh(FeatureFleetDefaultMemberConfigMeshArgs.builder()\n .management(\"MANAGEMENT_AUTOMATIC\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: servicemesh\n location: global\n fleetDefaultMemberConfig:\n mesh:\n management: MANAGEMENT_AUTOMATIC\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Enable Fleet Default Member Config Configmanagement\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"configmanagement\",\n location: \"global\",\n fleetDefaultMemberConfig: {\n configmanagement: {\n configSync: {\n git: {\n syncRepo: \"https://github.com/hashicorp/terraform\",\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"configmanagement\",\n location=\"global\",\n fleet_default_member_config={\n \"configmanagement\": {\n \"config_sync\": {\n \"git\": {\n \"sync_repo\": \"https://github.com/hashicorp/terraform\",\n },\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"configmanagement\",\n Location = \"global\",\n FleetDefaultMemberConfig = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigArgs\n {\n Configmanagement = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigConfigmanagementArgs\n {\n ConfigSync = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArgs\n {\n Git = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArgs\n {\n SyncRepo = \"https://github.com/hashicorp/terraform\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"configmanagement\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tFleetDefaultMemberConfig: \u0026gkehub.FeatureFleetDefaultMemberConfigArgs{\n\t\t\t\tConfigmanagement: \u0026gkehub.FeatureFleetDefaultMemberConfigConfigmanagementArgs{\n\t\t\t\t\tConfigSync: \u0026gkehub.FeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArgs{\n\t\t\t\t\t\tGit: \u0026gkehub.FeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArgs{\n\t\t\t\t\t\t\tSyncRepo: pulumi.String(\"https://github.com/hashicorp/terraform\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigConfigmanagementArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"configmanagement\")\n .location(\"global\")\n .fleetDefaultMemberConfig(FeatureFleetDefaultMemberConfigArgs.builder()\n .configmanagement(FeatureFleetDefaultMemberConfigConfigmanagementArgs.builder()\n .configSync(FeatureFleetDefaultMemberConfigConfigmanagementConfigSyncArgs.builder()\n .git(FeatureFleetDefaultMemberConfigConfigmanagementConfigSyncGitArgs.builder()\n .syncRepo(\"https://github.com/hashicorp/terraform\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: configmanagement\n location: global\n fleetDefaultMemberConfig:\n configmanagement:\n configSync:\n git:\n syncRepo: https://github.com/hashicorp/terraform\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Enable Fleet Default Member Config Policycontroller\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"policycontroller\",\n location: \"global\",\n fleetDefaultMemberConfig: {\n policycontroller: {\n policyControllerHubConfig: {\n installSpec: \"INSTALL_SPEC_ENABLED\",\n exemptableNamespaces: [\"foo\"],\n policyContent: {\n bundles: [{\n bundle: \"policy-essentials-v2022\",\n exemptedNamespaces: [\n \"foo\",\n \"bar\",\n ],\n }],\n templateLibrary: {\n installation: \"ALL\",\n },\n },\n auditIntervalSeconds: 30,\n referentialRulesEnabled: true,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"policycontroller\",\n location=\"global\",\n fleet_default_member_config={\n \"policycontroller\": {\n \"policy_controller_hub_config\": {\n \"install_spec\": \"INSTALL_SPEC_ENABLED\",\n \"exemptable_namespaces\": [\"foo\"],\n \"policy_content\": {\n \"bundles\": [{\n \"bundle\": \"policy-essentials-v2022\",\n \"exempted_namespaces\": [\n \"foo\",\n \"bar\",\n ],\n }],\n \"template_library\": {\n \"installation\": \"ALL\",\n },\n },\n \"audit_interval_seconds\": 30,\n \"referential_rules_enabled\": True,\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"policycontroller\",\n Location = \"global\",\n FleetDefaultMemberConfig = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigArgs\n {\n Policycontroller = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerArgs\n {\n PolicyControllerHubConfig = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs\n {\n InstallSpec = \"INSTALL_SPEC_ENABLED\",\n ExemptableNamespaces = new[]\n {\n \"foo\",\n },\n PolicyContent = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArgs\n {\n Bundles = new[]\n {\n new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArgs\n {\n Bundle = \"policy-essentials-v2022\",\n ExemptedNamespaces = new[]\n {\n \"foo\",\n \"bar\",\n },\n },\n },\n TemplateLibrary = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs\n {\n Installation = \"ALL\",\n },\n },\n AuditIntervalSeconds = 30,\n ReferentialRulesEnabled = true,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"policycontroller\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tFleetDefaultMemberConfig: \u0026gkehub.FeatureFleetDefaultMemberConfigArgs{\n\t\t\t\tPolicycontroller: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerArgs{\n\t\t\t\t\tPolicyControllerHubConfig: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs{\n\t\t\t\t\t\tInstallSpec: pulumi.String(\"INSTALL_SPEC_ENABLED\"),\n\t\t\t\t\t\tExemptableNamespaces: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPolicyContent: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArgs{\n\t\t\t\t\t\t\tBundles: gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArray{\n\t\t\t\t\t\t\t\t\u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArgs{\n\t\t\t\t\t\t\t\t\tBundle: pulumi.String(\"policy-essentials-v2022\"),\n\t\t\t\t\t\t\t\t\tExemptedNamespaces: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tTemplateLibrary: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs{\n\t\t\t\t\t\t\t\tInstallation: pulumi.String(\"ALL\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAuditIntervalSeconds: pulumi.Int(30),\n\t\t\t\t\t\tReferentialRulesEnabled: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"policycontroller\")\n .location(\"global\")\n .fleetDefaultMemberConfig(FeatureFleetDefaultMemberConfigArgs.builder()\n .policycontroller(FeatureFleetDefaultMemberConfigPolicycontrollerArgs.builder()\n .policyControllerHubConfig(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs.builder()\n .installSpec(\"INSTALL_SPEC_ENABLED\")\n .exemptableNamespaces(\"foo\")\n .policyContent(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArgs.builder()\n .bundles(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArgs.builder()\n .bundle(\"policy-essentials-v2022\")\n .exemptedNamespaces( \n \"foo\",\n \"bar\")\n .build())\n .templateLibrary(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs.builder()\n .installation(\"ALL\")\n .build())\n .build())\n .auditIntervalSeconds(30)\n .referentialRulesEnabled(true)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: policycontroller\n location: global\n fleetDefaultMemberConfig:\n policycontroller:\n policyControllerHubConfig:\n installSpec: INSTALL_SPEC_ENABLED\n exemptableNamespaces:\n - foo\n policyContent:\n bundles:\n - bundle: policy-essentials-v2022\n exemptedNamespaces:\n - foo\n - bar\n templateLibrary:\n installation: ALL\n auditIntervalSeconds: 30\n referentialRulesEnabled: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Enable Fleet Default Member Config Policycontroller Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"policycontroller\",\n location: \"global\",\n fleetDefaultMemberConfig: {\n policycontroller: {\n policyControllerHubConfig: {\n installSpec: \"INSTALL_SPEC_SUSPENDED\",\n policyContent: {\n bundles: [\n {\n bundle: \"pci-dss-v3.2.1\",\n exemptedNamespaces: [\n \"baz\",\n \"bar\",\n ],\n },\n {\n bundle: \"nist-sp-800-190\",\n exemptedNamespaces: [],\n },\n ],\n templateLibrary: {\n installation: \"ALL\",\n },\n },\n constraintViolationLimit: 50,\n referentialRulesEnabled: true,\n logDeniesEnabled: true,\n mutationEnabled: true,\n deploymentConfigs: [\n {\n component: \"admission\",\n replicaCount: 2,\n podAffinity: \"ANTI_AFFINITY\",\n },\n {\n component: \"audit\",\n containerResources: {\n limits: {\n memory: \"1Gi\",\n cpu: \"1.5\",\n },\n requests: {\n memory: \"500Mi\",\n cpu: \"150m\",\n },\n },\n podTolerations: [{\n key: \"key1\",\n operator: \"Equal\",\n value: \"value1\",\n effect: \"NoSchedule\",\n }],\n },\n ],\n monitoring: {\n backends: [\"PROMETHEUS\"],\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"policycontroller\",\n location=\"global\",\n fleet_default_member_config={\n \"policycontroller\": {\n \"policy_controller_hub_config\": {\n \"install_spec\": \"INSTALL_SPEC_SUSPENDED\",\n \"policy_content\": {\n \"bundles\": [\n {\n \"bundle\": \"pci-dss-v3.2.1\",\n \"exempted_namespaces\": [\n \"baz\",\n \"bar\",\n ],\n },\n {\n \"bundle\": \"nist-sp-800-190\",\n \"exempted_namespaces\": [],\n },\n ],\n \"template_library\": {\n \"installation\": \"ALL\",\n },\n },\n \"constraint_violation_limit\": 50,\n \"referential_rules_enabled\": True,\n \"log_denies_enabled\": True,\n \"mutation_enabled\": True,\n \"deployment_configs\": [\n {\n \"component\": \"admission\",\n \"replica_count\": 2,\n \"pod_affinity\": \"ANTI_AFFINITY\",\n },\n {\n \"component\": \"audit\",\n \"container_resources\": {\n \"limits\": {\n \"memory\": \"1Gi\",\n \"cpu\": \"1.5\",\n },\n \"requests\": {\n \"memory\": \"500Mi\",\n \"cpu\": \"150m\",\n },\n },\n \"pod_tolerations\": [{\n \"key\": \"key1\",\n \"operator\": \"Equal\",\n \"value\": \"value1\",\n \"effect\": \"NoSchedule\",\n }],\n },\n ],\n \"monitoring\": {\n \"backends\": [\"PROMETHEUS\"],\n },\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"policycontroller\",\n Location = \"global\",\n FleetDefaultMemberConfig = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigArgs\n {\n Policycontroller = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerArgs\n {\n PolicyControllerHubConfig = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs\n {\n InstallSpec = \"INSTALL_SPEC_SUSPENDED\",\n PolicyContent = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArgs\n {\n Bundles = new[]\n {\n new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArgs\n {\n Bundle = \"pci-dss-v3.2.1\",\n ExemptedNamespaces = new[]\n {\n \"baz\",\n \"bar\",\n },\n },\n new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArgs\n {\n Bundle = \"nist-sp-800-190\",\n ExemptedNamespaces = new() { },\n },\n },\n TemplateLibrary = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs\n {\n Installation = \"ALL\",\n },\n },\n ConstraintViolationLimit = 50,\n ReferentialRulesEnabled = true,\n LogDeniesEnabled = true,\n MutationEnabled = true,\n DeploymentConfigs = new[]\n {\n new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArgs\n {\n Component = \"admission\",\n ReplicaCount = 2,\n PodAffinity = \"ANTI_AFFINITY\",\n },\n new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArgs\n {\n Component = \"audit\",\n ContainerResources = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourcesArgs\n {\n Limits = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourcesLimitsArgs\n {\n Memory = \"1Gi\",\n Cpu = \"1.5\",\n },\n Requests = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourcesRequestsArgs\n {\n Memory = \"500Mi\",\n Cpu = \"150m\",\n },\n },\n PodTolerations = new[]\n {\n new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArgs\n {\n Key = \"key1\",\n Operator = \"Equal\",\n Value = \"value1\",\n Effect = \"NoSchedule\",\n },\n },\n },\n },\n Monitoring = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArgs\n {\n Backends = new[]\n {\n \"PROMETHEUS\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"policycontroller\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tFleetDefaultMemberConfig: \u0026gkehub.FeatureFleetDefaultMemberConfigArgs{\n\t\t\t\tPolicycontroller: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerArgs{\n\t\t\t\t\tPolicyControllerHubConfig: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs{\n\t\t\t\t\t\tInstallSpec: pulumi.String(\"INSTALL_SPEC_SUSPENDED\"),\n\t\t\t\t\t\tPolicyContent: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArgs{\n\t\t\t\t\t\t\tBundles: gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArray{\n\t\t\t\t\t\t\t\t\u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArgs{\n\t\t\t\t\t\t\t\t\tBundle: pulumi.String(\"pci-dss-v3.2.1\"),\n\t\t\t\t\t\t\t\t\tExemptedNamespaces: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"baz\"),\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArgs{\n\t\t\t\t\t\t\t\t\tBundle: pulumi.String(\"nist-sp-800-190\"),\n\t\t\t\t\t\t\t\t\tExemptedNamespaces: pulumi.StringArray{},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tTemplateLibrary: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs{\n\t\t\t\t\t\t\t\tInstallation: pulumi.String(\"ALL\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tConstraintViolationLimit: pulumi.Int(50),\n\t\t\t\t\t\tReferentialRulesEnabled: pulumi.Bool(true),\n\t\t\t\t\t\tLogDeniesEnabled: pulumi.Bool(true),\n\t\t\t\t\t\tMutationEnabled: pulumi.Bool(true),\n\t\t\t\t\t\tDeploymentConfigs: gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArray{\n\t\t\t\t\t\t\t\u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArgs{\n\t\t\t\t\t\t\t\tComponent: pulumi.String(\"admission\"),\n\t\t\t\t\t\t\t\tReplicaCount: pulumi.Int(2),\n\t\t\t\t\t\t\t\tPodAffinity: pulumi.String(\"ANTI_AFFINITY\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArgs{\n\t\t\t\t\t\t\t\tComponent: pulumi.String(\"audit\"),\n\t\t\t\t\t\t\t\tContainerResources: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourcesArgs{\n\t\t\t\t\t\t\t\t\tLimits: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourcesLimitsArgs{\n\t\t\t\t\t\t\t\t\t\tMemory: pulumi.String(\"1Gi\"),\n\t\t\t\t\t\t\t\t\t\tCpu: pulumi.String(\"1.5\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tRequests: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourcesRequestsArgs{\n\t\t\t\t\t\t\t\t\t\tMemory: pulumi.String(\"500Mi\"),\n\t\t\t\t\t\t\t\t\t\tCpu: pulumi.String(\"150m\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tPodTolerations: gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArray{\n\t\t\t\t\t\t\t\t\t\u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArgs{\n\t\t\t\t\t\t\t\t\t\tKey: pulumi.String(\"key1\"),\n\t\t\t\t\t\t\t\t\t\tOperator: pulumi.String(\"Equal\"),\n\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"value1\"),\n\t\t\t\t\t\t\t\t\t\tEffect: pulumi.String(\"NoSchedule\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tMonitoring: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArgs{\n\t\t\t\t\t\t\tBackends: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"PROMETHEUS\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"policycontroller\")\n .location(\"global\")\n .fleetDefaultMemberConfig(FeatureFleetDefaultMemberConfigArgs.builder()\n .policycontroller(FeatureFleetDefaultMemberConfigPolicycontrollerArgs.builder()\n .policyControllerHubConfig(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs.builder()\n .installSpec(\"INSTALL_SPEC_SUSPENDED\")\n .policyContent(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArgs.builder()\n .bundles( \n FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArgs.builder()\n .bundle(\"pci-dss-v3.2.1\")\n .exemptedNamespaces( \n \"baz\",\n \"bar\")\n .build(),\n FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentBundleArgs.builder()\n .bundle(\"nist-sp-800-190\")\n .exemptedNamespaces()\n .build())\n .templateLibrary(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentTemplateLibraryArgs.builder()\n .installation(\"ALL\")\n .build())\n .build())\n .constraintViolationLimit(50)\n .referentialRulesEnabled(true)\n .logDeniesEnabled(true)\n .mutationEnabled(true)\n .deploymentConfigs( \n FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArgs.builder()\n .component(\"admission\")\n .replicaCount(2)\n .podAffinity(\"ANTI_AFFINITY\")\n .build(),\n FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArgs.builder()\n .component(\"audit\")\n .containerResources(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourcesArgs.builder()\n .limits(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourcesLimitsArgs.builder()\n .memory(\"1Gi\")\n .cpu(\"1.5\")\n .build())\n .requests(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigContainerResourcesRequestsArgs.builder()\n .memory(\"500Mi\")\n .cpu(\"150m\")\n .build())\n .build())\n .podTolerations(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigPodTolerationArgs.builder()\n .key(\"key1\")\n .operator(\"Equal\")\n .value(\"value1\")\n .effect(\"NoSchedule\")\n .build())\n .build())\n .monitoring(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArgs.builder()\n .backends(\"PROMETHEUS\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: policycontroller\n location: global\n fleetDefaultMemberConfig:\n policycontroller:\n policyControllerHubConfig:\n installSpec: INSTALL_SPEC_SUSPENDED\n policyContent:\n bundles:\n - bundle: pci-dss-v3.2.1\n exemptedNamespaces:\n - baz\n - bar\n - bundle: nist-sp-800-190\n exemptedNamespaces: []\n templateLibrary:\n installation: ALL\n constraintViolationLimit: 50\n referentialRulesEnabled: true\n logDeniesEnabled: true\n mutationEnabled: true\n deploymentConfigs:\n - component: admission\n replicaCount: 2\n podAffinity: ANTI_AFFINITY\n - component: audit\n containerResources:\n limits:\n memory: 1Gi\n cpu: '1.5'\n requests:\n memory: 500Mi\n cpu: 150m\n podTolerations:\n - key: key1\n operator: Equal\n value: value1\n effect: NoSchedule\n monitoring:\n backends:\n - PROMETHEUS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Enable Fleet Default Member Config Policycontroller Minimal\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"policycontroller\",\n location: \"global\",\n fleetDefaultMemberConfig: {\n policycontroller: {\n policyControllerHubConfig: {\n installSpec: \"INSTALL_SPEC_ENABLED\",\n policyContent: {},\n constraintViolationLimit: 50,\n referentialRulesEnabled: true,\n logDeniesEnabled: true,\n mutationEnabled: true,\n deploymentConfigs: [{\n component: \"admission\",\n }],\n monitoring: {},\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"policycontroller\",\n location=\"global\",\n fleet_default_member_config={\n \"policycontroller\": {\n \"policy_controller_hub_config\": {\n \"install_spec\": \"INSTALL_SPEC_ENABLED\",\n \"policy_content\": {},\n \"constraint_violation_limit\": 50,\n \"referential_rules_enabled\": True,\n \"log_denies_enabled\": True,\n \"mutation_enabled\": True,\n \"deployment_configs\": [{\n \"component\": \"admission\",\n }],\n \"monitoring\": {},\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"policycontroller\",\n Location = \"global\",\n FleetDefaultMemberConfig = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigArgs\n {\n Policycontroller = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerArgs\n {\n PolicyControllerHubConfig = new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs\n {\n InstallSpec = \"INSTALL_SPEC_ENABLED\",\n PolicyContent = null,\n ConstraintViolationLimit = 50,\n ReferentialRulesEnabled = true,\n LogDeniesEnabled = true,\n MutationEnabled = true,\n DeploymentConfigs = new[]\n {\n new Gcp.GkeHub.Inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArgs\n {\n Component = \"admission\",\n },\n },\n Monitoring = null,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"policycontroller\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tFleetDefaultMemberConfig: \u0026gkehub.FeatureFleetDefaultMemberConfigArgs{\n\t\t\t\tPolicycontroller: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerArgs{\n\t\t\t\t\tPolicyControllerHubConfig: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs{\n\t\t\t\t\t\tInstallSpec: pulumi.String(\"INSTALL_SPEC_ENABLED\"),\n\t\t\t\t\t\tPolicyContent: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArgs{},\n\t\t\t\t\t\tConstraintViolationLimit: pulumi.Int(50),\n\t\t\t\t\t\tReferentialRulesEnabled: pulumi.Bool(true),\n\t\t\t\t\t\tLogDeniesEnabled: pulumi.Bool(true),\n\t\t\t\t\t\tMutationEnabled: pulumi.Bool(true),\n\t\t\t\t\t\tDeploymentConfigs: gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArray{\n\t\t\t\t\t\t\t\u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArgs{\n\t\t\t\t\t\t\t\tComponent: pulumi.String(\"admission\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tMonitoring: \u0026gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArgs{},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"policycontroller\")\n .location(\"global\")\n .fleetDefaultMemberConfig(FeatureFleetDefaultMemberConfigArgs.builder()\n .policycontroller(FeatureFleetDefaultMemberConfigPolicycontrollerArgs.builder()\n .policyControllerHubConfig(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs.builder()\n .installSpec(\"INSTALL_SPEC_ENABLED\")\n .policyContent()\n .constraintViolationLimit(50)\n .referentialRulesEnabled(true)\n .logDeniesEnabled(true)\n .mutationEnabled(true)\n .deploymentConfigs(FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigDeploymentConfigArgs.builder()\n .component(\"admission\")\n .build())\n .monitoring()\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: policycontroller\n location: global\n fleetDefaultMemberConfig:\n policycontroller:\n policyControllerHubConfig:\n installSpec: INSTALL_SPEC_ENABLED\n policyContent: {}\n constraintViolationLimit: 50\n referentialRulesEnabled: true\n logDeniesEnabled: true\n mutationEnabled: true\n deploymentConfigs:\n - component: admission\n monitoring: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkehub Feature Clusterupgrade\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst feature = new gcp.gkehub.Feature(\"feature\", {\n name: \"clusterupgrade\",\n location: \"global\",\n spec: {\n clusterupgrade: {\n upstreamFleets: [],\n postConditions: {\n soaking: \"60s\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature = gcp.gkehub.Feature(\"feature\",\n name=\"clusterupgrade\",\n location=\"global\",\n spec={\n \"clusterupgrade\": {\n \"upstream_fleets\": [],\n \"post_conditions\": {\n \"soaking\": \"60s\",\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var feature = new Gcp.GkeHub.Feature(\"feature\", new()\n {\n Name = \"clusterupgrade\",\n Location = \"global\",\n Spec = new Gcp.GkeHub.Inputs.FeatureSpecArgs\n {\n Clusterupgrade = new Gcp.GkeHub.Inputs.FeatureSpecClusterupgradeArgs\n {\n UpstreamFleets = new() { },\n PostConditions = new Gcp.GkeHub.Inputs.FeatureSpecClusterupgradePostConditionsArgs\n {\n Soaking = \"60s\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gkehub.NewFeature(ctx, \"feature\", \u0026gkehub.FeatureArgs{\n\t\t\tName: pulumi.String(\"clusterupgrade\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tSpec: \u0026gkehub.FeatureSpecArgs{\n\t\t\t\tClusterupgrade: \u0026gkehub.FeatureSpecClusterupgradeArgs{\n\t\t\t\t\tUpstreamFleets: pulumi.StringArray{},\n\t\t\t\t\tPostConditions: \u0026gkehub.FeatureSpecClusterupgradePostConditionsArgs{\n\t\t\t\t\t\tSoaking: pulumi.String(\"60s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkehub.Feature;\nimport com.pulumi.gcp.gkehub.FeatureArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecClusterupgradeArgs;\nimport com.pulumi.gcp.gkehub.inputs.FeatureSpecClusterupgradePostConditionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var feature = new Feature(\"feature\", FeatureArgs.builder()\n .name(\"clusterupgrade\")\n .location(\"global\")\n .spec(FeatureSpecArgs.builder()\n .clusterupgrade(FeatureSpecClusterupgradeArgs.builder()\n .upstreamFleets()\n .postConditions(FeatureSpecClusterupgradePostConditionsArgs.builder()\n .soaking(\"60s\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n feature:\n type: gcp:gkehub:Feature\n properties:\n name: clusterupgrade\n location: global\n spec:\n clusterupgrade:\n upstreamFleets: []\n postConditions:\n soaking: 60s\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFeature can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/features/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Feature can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:gkehub/feature:Feature default projects/{{project}}/locations/{{location}}/features/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkehub/feature:Feature default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkehub/feature:Feature default {{location}}/{{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -203639,7 +203639,7 @@ } }, "gcp:gkehub/membershipRbacRoleBinding:MembershipRbacRoleBinding": { - "description": "## Example Usage\n\n### Gkehub Membership Rbac Role Binding Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"basic-cluster\",\n location: \"us-central1-a\",\n initialNodeCount: 1,\n deletionProtection: true,\n network: \"default\",\n subnetwork: \"default\",\n});\nconst membership = new gcp.gkehub.Membership(\"membership\", {\n membershipId: \"tf-test-membership_8493\",\n endpoint: {\n gkeCluster: {\n resourceLink: pulumi.interpolate`//container.googleapis.com/${primary.id}`,\n },\n },\n}, {\n dependsOn: [primary],\n});\nconst project = gcp.organizations.getProject({});\nconst membershipRbacRoleBinding = new gcp.gkehub.MembershipRbacRoleBinding(\"membership_rbac_role_binding\", {\n membershipRbacRoleBindingId: \"tf-test-membership-rbac-role-binding_9106\",\n membershipId: membership.membershipId,\n user: project.then(project =\u003e `service-${project.number}@gcp-sa-anthossupport.iam.gserviceaccount.com`),\n role: {\n predefinedRole: \"ANTHOS_SUPPORT\",\n },\n location: \"global\",\n}, {\n dependsOn: [membership],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"basic-cluster\",\n location=\"us-central1-a\",\n initial_node_count=1,\n deletion_protection=True,\n network=\"default\",\n subnetwork=\"default\")\nmembership = gcp.gkehub.Membership(\"membership\",\n membership_id=\"tf-test-membership_8493\",\n endpoint={\n \"gke_cluster\": {\n \"resource_link\": primary.id.apply(lambda id: f\"//container.googleapis.com/{id}\"),\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[primary]))\nproject = gcp.organizations.get_project()\nmembership_rbac_role_binding = gcp.gkehub.MembershipRbacRoleBinding(\"membership_rbac_role_binding\",\n membership_rbac_role_binding_id=\"tf-test-membership-rbac-role-binding_9106\",\n membership_id=membership.membership_id,\n user=f\"service-{project.number}@gcp-sa-anthossupport.iam.gserviceaccount.com\",\n role={\n \"predefined_role\": \"ANTHOS_SUPPORT\",\n },\n location=\"global\",\n opts = pulumi.ResourceOptions(depends_on=[membership]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"basic-cluster\",\n Location = \"us-central1-a\",\n InitialNodeCount = 1,\n DeletionProtection = true,\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var membership = new Gcp.GkeHub.Membership(\"membership\", new()\n {\n MembershipId = \"tf-test-membership_8493\",\n Endpoint = new Gcp.GkeHub.Inputs.MembershipEndpointArgs\n {\n GkeCluster = new Gcp.GkeHub.Inputs.MembershipEndpointGkeClusterArgs\n {\n ResourceLink = primary.Id.Apply(id =\u003e $\"//container.googleapis.com/{id}\"),\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n primary,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var membershipRbacRoleBinding = new Gcp.GkeHub.MembershipRbacRoleBinding(\"membership_rbac_role_binding\", new()\n {\n MembershipRbacRoleBindingId = \"tf-test-membership-rbac-role-binding_9106\",\n MembershipId = membership.MembershipId,\n User = $\"service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-anthossupport.iam.gserviceaccount.com\",\n Role = new Gcp.GkeHub.Inputs.MembershipRbacRoleBindingRoleArgs\n {\n PredefinedRole = \"ANTHOS_SUPPORT\",\n },\n Location = \"global\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n membership,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"basic-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmembership, err := gkehub.NewMembership(ctx, \"membership\", \u0026gkehub.MembershipArgs{\n\t\t\tMembershipId: pulumi.String(\"tf-test-membership_8493\"),\n\t\t\tEndpoint: \u0026gkehub.MembershipEndpointArgs{\n\t\t\t\tGkeCluster: \u0026gkehub.MembershipEndpointGkeClusterArgs{\n\t\t\t\t\tResourceLink: primary.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"//container.googleapis.com/%v\", id), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tprimary,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkehub.NewMembershipRbacRoleBinding(ctx, \"membership_rbac_role_binding\", \u0026gkehub.MembershipRbacRoleBindingArgs{\n\t\t\tMembershipRbacRoleBindingId: pulumi.String(\"tf-test-membership-rbac-role-binding_9106\"),\n\t\t\tMembershipId: membership.MembershipId,\n\t\t\tUser: pulumi.Sprintf(\"service-%v@gcp-sa-anthossupport.iam.gserviceaccount.com\", project.Number),\n\t\t\tRole: \u0026gkehub.MembershipRbacRoleBindingRoleArgs{\n\t\t\t\tPredefinedRole: pulumi.String(\"ANTHOS_SUPPORT\"),\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tmembership,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.gkehub.Membership;\nimport com.pulumi.gcp.gkehub.MembershipArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointGkeClusterArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.gkehub.MembershipRbacRoleBinding;\nimport com.pulumi.gcp.gkehub.MembershipRbacRoleBindingArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipRbacRoleBindingRoleArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"basic-cluster\")\n .location(\"us-central1-a\")\n .initialNodeCount(1)\n .deletionProtection(\"true\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var membership = new Membership(\"membership\", MembershipArgs.builder()\n .membershipId(\"tf-test-membership_8493\")\n .endpoint(MembershipEndpointArgs.builder()\n .gkeCluster(MembershipEndpointGkeClusterArgs.builder()\n .resourceLink(primary.id().applyValue(id -\u003e String.format(\"//container.googleapis.com/%s\", id)))\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(primary)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var membershipRbacRoleBinding = new MembershipRbacRoleBinding(\"membershipRbacRoleBinding\", MembershipRbacRoleBindingArgs.builder()\n .membershipRbacRoleBindingId(\"tf-test-membership-rbac-role-binding_9106\")\n .membershipId(membership.membershipId())\n .user(String.format(\"service-%s@gcp-sa-anthossupport.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .role(MembershipRbacRoleBindingRoleArgs.builder()\n .predefinedRole(\"ANTHOS_SUPPORT\")\n .build())\n .location(\"global\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(membership)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: basic-cluster\n location: us-central1-a\n initialNodeCount: 1\n deletionProtection: 'true'\n network: default\n subnetwork: default\n membership:\n type: gcp:gkehub:Membership\n properties:\n membershipId: tf-test-membership_8493\n endpoint:\n gkeCluster:\n resourceLink: //container.googleapis.com/${primary.id}\n options:\n dependson:\n - ${primary}\n membershipRbacRoleBinding:\n type: gcp:gkehub:MembershipRbacRoleBinding\n name: membership_rbac_role_binding\n properties:\n membershipRbacRoleBindingId: tf-test-membership-rbac-role-binding_9106\n membershipId: ${membership.membershipId}\n user: service-${project.number}@gcp-sa-anthossupport.iam.gserviceaccount.com\n role:\n predefinedRole: ANTHOS_SUPPORT\n location: global\n options:\n dependson:\n - ${membership}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nMembershipRBACRoleBinding can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/memberships/{{membership_id}}/rbacrolebindings/{{membership_rbac_role_binding_id}}`\n\n* `{{project}}/{{location}}/{{membership_id}}/{{membership_rbac_role_binding_id}}`\n\n* `{{location}}/{{membership_id}}/{{membership_rbac_role_binding_id}}`\n\nWhen using the `pulumi import` command, MembershipRBACRoleBinding can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:gkehub/membershipRbacRoleBinding:MembershipRbacRoleBinding default projects/{{project}}/locations/{{location}}/memberships/{{membership_id}}/rbacrolebindings/{{membership_rbac_role_binding_id}}\n```\n\n```sh\n$ pulumi import gcp:gkehub/membershipRbacRoleBinding:MembershipRbacRoleBinding default {{project}}/{{location}}/{{membership_id}}/{{membership_rbac_role_binding_id}}\n```\n\n```sh\n$ pulumi import gcp:gkehub/membershipRbacRoleBinding:MembershipRbacRoleBinding default {{location}}/{{membership_id}}/{{membership_rbac_role_binding_id}}\n```\n\n", + "description": "## Example Usage\n\n### Gkehub Membership Rbac Role Binding Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"basic-cluster\",\n location: \"us-central1-a\",\n initialNodeCount: 1,\n deletionProtection: true,\n network: \"default\",\n subnetwork: \"default\",\n});\nconst membership = new gcp.gkehub.Membership(\"membership\", {\n membershipId: \"tf-test-membership_8493\",\n endpoint: {\n gkeCluster: {\n resourceLink: pulumi.interpolate`//container.googleapis.com/${primary.id}`,\n },\n },\n}, {\n dependsOn: [primary],\n});\nconst project = gcp.organizations.getProject({});\nconst membershipRbacRoleBinding = new gcp.gkehub.MembershipRbacRoleBinding(\"membership_rbac_role_binding\", {\n membershipRbacRoleBindingId: \"tf-test-membership-rbac-role-binding_9106\",\n membershipId: membership.membershipId,\n user: project.then(project =\u003e `service-${project.number}@gcp-sa-anthossupport.iam.gserviceaccount.com`),\n role: {\n predefinedRole: \"ANTHOS_SUPPORT\",\n },\n location: \"global\",\n}, {\n dependsOn: [membership],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.container.Cluster(\"primary\",\n name=\"basic-cluster\",\n location=\"us-central1-a\",\n initial_node_count=1,\n deletion_protection=True,\n network=\"default\",\n subnetwork=\"default\")\nmembership = gcp.gkehub.Membership(\"membership\",\n membership_id=\"tf-test-membership_8493\",\n endpoint={\n \"gke_cluster\": {\n \"resource_link\": primary.id.apply(lambda id: f\"//container.googleapis.com/{id}\"),\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[primary]))\nproject = gcp.organizations.get_project()\nmembership_rbac_role_binding = gcp.gkehub.MembershipRbacRoleBinding(\"membership_rbac_role_binding\",\n membership_rbac_role_binding_id=\"tf-test-membership-rbac-role-binding_9106\",\n membership_id=membership.membership_id,\n user=f\"service-{project.number}@gcp-sa-anthossupport.iam.gserviceaccount.com\",\n role={\n \"predefined_role\": \"ANTHOS_SUPPORT\",\n },\n location=\"global\",\n opts = pulumi.ResourceOptions(depends_on=[membership]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"basic-cluster\",\n Location = \"us-central1-a\",\n InitialNodeCount = 1,\n DeletionProtection = true,\n Network = \"default\",\n Subnetwork = \"default\",\n });\n\n var membership = new Gcp.GkeHub.Membership(\"membership\", new()\n {\n MembershipId = \"tf-test-membership_8493\",\n Endpoint = new Gcp.GkeHub.Inputs.MembershipEndpointArgs\n {\n GkeCluster = new Gcp.GkeHub.Inputs.MembershipEndpointGkeClusterArgs\n {\n ResourceLink = primary.Id.Apply(id =\u003e $\"//container.googleapis.com/{id}\"),\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n primary,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var membershipRbacRoleBinding = new Gcp.GkeHub.MembershipRbacRoleBinding(\"membership_rbac_role_binding\", new()\n {\n MembershipRbacRoleBindingId = \"tf-test-membership-rbac-role-binding_9106\",\n MembershipId = membership.MembershipId,\n User = $\"service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-anthossupport.iam.gserviceaccount.com\",\n Role = new Gcp.GkeHub.Inputs.MembershipRbacRoleBindingRoleArgs\n {\n PredefinedRole = \"ANTHOS_SUPPORT\",\n },\n Location = \"global\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n membership,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkehub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"basic-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\tSubnetwork: pulumi.String(\"default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmembership, err := gkehub.NewMembership(ctx, \"membership\", \u0026gkehub.MembershipArgs{\n\t\t\tMembershipId: pulumi.String(\"tf-test-membership_8493\"),\n\t\t\tEndpoint: \u0026gkehub.MembershipEndpointArgs{\n\t\t\t\tGkeCluster: \u0026gkehub.MembershipEndpointGkeClusterArgs{\n\t\t\t\t\tResourceLink: primary.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"//container.googleapis.com/%v\", id), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tprimary,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkehub.NewMembershipRbacRoleBinding(ctx, \"membership_rbac_role_binding\", \u0026gkehub.MembershipRbacRoleBindingArgs{\n\t\t\tMembershipRbacRoleBindingId: pulumi.String(\"tf-test-membership-rbac-role-binding_9106\"),\n\t\t\tMembershipId: membership.MembershipId,\n\t\t\tUser: pulumi.Sprintf(\"service-%v@gcp-sa-anthossupport.iam.gserviceaccount.com\", project.Number),\n\t\t\tRole: \u0026gkehub.MembershipRbacRoleBindingRoleArgs{\n\t\t\t\tPredefinedRole: pulumi.String(\"ANTHOS_SUPPORT\"),\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tmembership,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.gkehub.Membership;\nimport com.pulumi.gcp.gkehub.MembershipArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipEndpointGkeClusterArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.gkehub.MembershipRbacRoleBinding;\nimport com.pulumi.gcp.gkehub.MembershipRbacRoleBindingArgs;\nimport com.pulumi.gcp.gkehub.inputs.MembershipRbacRoleBindingRoleArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"basic-cluster\")\n .location(\"us-central1-a\")\n .initialNodeCount(1)\n .deletionProtection(\"true\")\n .network(\"default\")\n .subnetwork(\"default\")\n .build());\n\n var membership = new Membership(\"membership\", MembershipArgs.builder()\n .membershipId(\"tf-test-membership_8493\")\n .endpoint(MembershipEndpointArgs.builder()\n .gkeCluster(MembershipEndpointGkeClusterArgs.builder()\n .resourceLink(primary.id().applyValue(id -\u003e String.format(\"//container.googleapis.com/%s\", id)))\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(primary)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var membershipRbacRoleBinding = new MembershipRbacRoleBinding(\"membershipRbacRoleBinding\", MembershipRbacRoleBindingArgs.builder()\n .membershipRbacRoleBindingId(\"tf-test-membership-rbac-role-binding_9106\")\n .membershipId(membership.membershipId())\n .user(String.format(\"service-%s@gcp-sa-anthossupport.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .role(MembershipRbacRoleBindingRoleArgs.builder()\n .predefinedRole(\"ANTHOS_SUPPORT\")\n .build())\n .location(\"global\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(membership)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:container:Cluster\n properties:\n name: basic-cluster\n location: us-central1-a\n initialNodeCount: 1\n deletionProtection: 'true'\n network: default\n subnetwork: default\n membership:\n type: gcp:gkehub:Membership\n properties:\n membershipId: tf-test-membership_8493\n endpoint:\n gkeCluster:\n resourceLink: //container.googleapis.com/${primary.id}\n options:\n dependson:\n - ${primary}\n membershipRbacRoleBinding:\n type: gcp:gkehub:MembershipRbacRoleBinding\n name: membership_rbac_role_binding\n properties:\n membershipRbacRoleBindingId: tf-test-membership-rbac-role-binding_9106\n membershipId: ${membership.membershipId}\n user: service-${project.number}@gcp-sa-anthossupport.iam.gserviceaccount.com\n role:\n predefinedRole: ANTHOS_SUPPORT\n location: global\n options:\n dependson:\n - ${membership}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nMembershipRBACRoleBinding can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/memberships/{{membership_id}}/rbacrolebindings/{{membership_rbac_role_binding_id}}`\n\n* `{{project}}/{{location}}/{{membership_id}}/{{membership_rbac_role_binding_id}}`\n\n* `{{location}}/{{membership_id}}/{{membership_rbac_role_binding_id}}`\n\nWhen using the `pulumi import` command, MembershipRBACRoleBinding can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:gkehub/membershipRbacRoleBinding:MembershipRbacRoleBinding default projects/{{project}}/locations/{{location}}/memberships/{{membership_id}}/rbacrolebindings/{{membership_rbac_role_binding_id}}\n```\n\n```sh\n$ pulumi import gcp:gkehub/membershipRbacRoleBinding:MembershipRbacRoleBinding default {{project}}/{{location}}/{{membership_id}}/{{membership_rbac_role_binding_id}}\n```\n\n```sh\n$ pulumi import gcp:gkehub/membershipRbacRoleBinding:MembershipRbacRoleBinding default {{location}}/{{membership_id}}/{{membership_rbac_role_binding_id}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -204691,7 +204691,7 @@ } }, "gcp:gkeonprem/bareMetalAdminCluster:BareMetalAdminCluster": { - "description": "A Google Bare Metal Admin Cluster.\n\n\n\n## Example Usage\n\n### Gkeonprem Bare Metal Admin Cluster Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin_cluster_basic = new gcp.gkeonprem.BareMetalAdminCluster(\"admin-cluster-basic\", {\n name: \"my-cluster\",\n location: \"us-west1\",\n bareMetalVersion: \"1.13.4\",\n networkConfig: {\n islandModeCidr: {\n serviceAddressCidrBlocks: [\"172.26.0.0/16\"],\n podAddressCidrBlocks: [\"10.240.0.0/13\"],\n },\n },\n nodeConfig: {\n maxPodsPerNode: 250,\n },\n controlPlane: {\n controlPlaneNodePoolConfig: {\n nodePoolConfig: {\n labels: {},\n operatingSystem: \"LINUX\",\n nodeConfigs: [\n {\n labels: {},\n nodeIp: \"10.200.0.2\",\n },\n {\n labels: {},\n nodeIp: \"10.200.0.3\",\n },\n {\n labels: {},\n nodeIp: \"10.200.0.4\",\n },\n ],\n },\n },\n },\n loadBalancer: {\n portConfig: {\n controlPlaneLoadBalancerPort: 443,\n },\n vipConfig: {\n controlPlaneVip: \"10.200.0.5\",\n },\n },\n storage: {\n lvpShareConfig: {\n lvpConfig: {\n path: \"/mnt/localpv-share\",\n storageClass: \"local-shared\",\n },\n sharedPathPvCount: 5,\n },\n lvpNodeMountsConfig: {\n path: \"/mnt/localpv-disk\",\n storageClass: \"local-disks\",\n },\n },\n nodeAccessConfig: {\n loginUser: \"root\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin_cluster_basic = gcp.gkeonprem.BareMetalAdminCluster(\"admin-cluster-basic\",\n name=\"my-cluster\",\n location=\"us-west1\",\n bare_metal_version=\"1.13.4\",\n network_config={\n \"island_mode_cidr\": {\n \"service_address_cidr_blocks\": [\"172.26.0.0/16\"],\n \"pod_address_cidr_blocks\": [\"10.240.0.0/13\"],\n },\n },\n node_config={\n \"max_pods_per_node\": 250,\n },\n control_plane={\n \"control_plane_node_pool_config\": {\n \"node_pool_config\": {\n \"labels\": {},\n \"operating_system\": \"LINUX\",\n \"node_configs\": [\n {\n \"labels\": {},\n \"node_ip\": \"10.200.0.2\",\n },\n {\n \"labels\": {},\n \"node_ip\": \"10.200.0.3\",\n },\n {\n \"labels\": {},\n \"node_ip\": \"10.200.0.4\",\n },\n ],\n },\n },\n },\n load_balancer={\n \"port_config\": {\n \"control_plane_load_balancer_port\": 443,\n },\n \"vip_config\": {\n \"control_plane_vip\": \"10.200.0.5\",\n },\n },\n storage={\n \"lvp_share_config\": {\n \"lvp_config\": {\n \"path\": \"/mnt/localpv-share\",\n \"storage_class\": \"local-shared\",\n },\n \"shared_path_pv_count\": 5,\n },\n \"lvp_node_mounts_config\": {\n \"path\": \"/mnt/localpv-disk\",\n \"storage_class\": \"local-disks\",\n },\n },\n node_access_config={\n \"login_user\": \"root\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var admin_cluster_basic = new Gcp.GkeOnPrem.BareMetalAdminCluster(\"admin-cluster-basic\", new()\n {\n Name = \"my-cluster\",\n Location = \"us-west1\",\n BareMetalVersion = \"1.13.4\",\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterNetworkConfigArgs\n {\n IslandModeCidr = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterNetworkConfigIslandModeCidrArgs\n {\n ServiceAddressCidrBlocks = new[]\n {\n \"172.26.0.0/16\",\n },\n PodAddressCidrBlocks = new[]\n {\n \"10.240.0.0/13\",\n },\n },\n },\n NodeConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterNodeConfigArgs\n {\n MaxPodsPerNode = 250,\n },\n ControlPlane = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneArgs\n {\n ControlPlaneNodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigArgs\n {\n NodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs\n {\n Labels = null,\n OperatingSystem = \"LINUX\",\n NodeConfigs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.2\",\n },\n new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.3\",\n },\n new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.4\",\n },\n },\n },\n },\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterLoadBalancerArgs\n {\n PortConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterLoadBalancerPortConfigArgs\n {\n ControlPlaneLoadBalancerPort = 443,\n },\n VipConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.200.0.5\",\n },\n },\n Storage = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterStorageArgs\n {\n LvpShareConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterStorageLvpShareConfigArgs\n {\n LvpConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterStorageLvpShareConfigLvpConfigArgs\n {\n Path = \"/mnt/localpv-share\",\n StorageClass = \"local-shared\",\n },\n SharedPathPvCount = 5,\n },\n LvpNodeMountsConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterStorageLvpNodeMountsConfigArgs\n {\n Path = \"/mnt/localpv-disk\",\n StorageClass = \"local-disks\",\n },\n },\n NodeAccessConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterNodeAccessConfigArgs\n {\n LoginUser = \"root\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkeonprem\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gkeonprem.NewBareMetalAdminCluster(ctx, \"admin-cluster-basic\", \u0026gkeonprem.BareMetalAdminClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tBareMetalVersion: pulumi.String(\"1.13.4\"),\n\t\t\tNetworkConfig: \u0026gkeonprem.BareMetalAdminClusterNetworkConfigArgs{\n\t\t\t\tIslandModeCidr: \u0026gkeonprem.BareMetalAdminClusterNetworkConfigIslandModeCidrArgs{\n\t\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"172.26.0.0/16\"),\n\t\t\t\t\t},\n\t\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.240.0.0/13\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tNodeConfig: \u0026gkeonprem.BareMetalAdminClusterNodeConfigArgs{\n\t\t\t\tMaxPodsPerNode: pulumi.Int(250),\n\t\t\t},\n\t\t\tControlPlane: \u0026gkeonprem.BareMetalAdminClusterControlPlaneArgs{\n\t\t\t\tControlPlaneNodePoolConfig: \u0026gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigArgs{\n\t\t\t\t\tNodePoolConfig: \u0026gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs{\n\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\tOperatingSystem: pulumi.String(\"LINUX\"),\n\t\t\t\t\t\tNodeConfigs: gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArray{\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.2\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.3\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.4\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLoadBalancer: \u0026gkeonprem.BareMetalAdminClusterLoadBalancerArgs{\n\t\t\t\tPortConfig: \u0026gkeonprem.BareMetalAdminClusterLoadBalancerPortConfigArgs{\n\t\t\t\t\tControlPlaneLoadBalancerPort: pulumi.Int(443),\n\t\t\t\t},\n\t\t\t\tVipConfig: \u0026gkeonprem.BareMetalAdminClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.200.0.5\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tStorage: \u0026gkeonprem.BareMetalAdminClusterStorageArgs{\n\t\t\t\tLvpShareConfig: \u0026gkeonprem.BareMetalAdminClusterStorageLvpShareConfigArgs{\n\t\t\t\t\tLvpConfig: \u0026gkeonprem.BareMetalAdminClusterStorageLvpShareConfigLvpConfigArgs{\n\t\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-share\"),\n\t\t\t\t\t\tStorageClass: pulumi.String(\"local-shared\"),\n\t\t\t\t\t},\n\t\t\t\t\tSharedPathPvCount: pulumi.Int(5),\n\t\t\t\t},\n\t\t\t\tLvpNodeMountsConfig: \u0026gkeonprem.BareMetalAdminClusterStorageLvpNodeMountsConfigArgs{\n\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-disk\"),\n\t\t\t\t\tStorageClass: pulumi.String(\"local-disks\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNodeAccessConfig: \u0026gkeonprem.BareMetalAdminClusterNodeAccessConfigArgs{\n\t\t\t\tLoginUser: pulumi.String(\"root\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkeonprem.BareMetalAdminCluster;\nimport com.pulumi.gcp.gkeonprem.BareMetalAdminClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterNetworkConfigIslandModeCidrArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterNodeConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterControlPlaneArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterLoadBalancerPortConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterStorageArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterStorageLvpShareConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterStorageLvpShareConfigLvpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterStorageLvpNodeMountsConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterNodeAccessConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var admin_cluster_basic = new BareMetalAdminCluster(\"admin-cluster-basic\", BareMetalAdminClusterArgs.builder()\n .name(\"my-cluster\")\n .location(\"us-west1\")\n .bareMetalVersion(\"1.13.4\")\n .networkConfig(BareMetalAdminClusterNetworkConfigArgs.builder()\n .islandModeCidr(BareMetalAdminClusterNetworkConfigIslandModeCidrArgs.builder()\n .serviceAddressCidrBlocks(\"172.26.0.0/16\")\n .podAddressCidrBlocks(\"10.240.0.0/13\")\n .build())\n .build())\n .nodeConfig(BareMetalAdminClusterNodeConfigArgs.builder()\n .maxPodsPerNode(250)\n .build())\n .controlPlane(BareMetalAdminClusterControlPlaneArgs.builder()\n .controlPlaneNodePoolConfig(BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigArgs.builder()\n .nodePoolConfig(BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs.builder()\n .labels()\n .operatingSystem(\"LINUX\")\n .nodeConfigs( \n BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.2\")\n .build(),\n BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.3\")\n .build(),\n BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.4\")\n .build())\n .build())\n .build())\n .build())\n .loadBalancer(BareMetalAdminClusterLoadBalancerArgs.builder()\n .portConfig(BareMetalAdminClusterLoadBalancerPortConfigArgs.builder()\n .controlPlaneLoadBalancerPort(443)\n .build())\n .vipConfig(BareMetalAdminClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.200.0.5\")\n .build())\n .build())\n .storage(BareMetalAdminClusterStorageArgs.builder()\n .lvpShareConfig(BareMetalAdminClusterStorageLvpShareConfigArgs.builder()\n .lvpConfig(BareMetalAdminClusterStorageLvpShareConfigLvpConfigArgs.builder()\n .path(\"/mnt/localpv-share\")\n .storageClass(\"local-shared\")\n .build())\n .sharedPathPvCount(5)\n .build())\n .lvpNodeMountsConfig(BareMetalAdminClusterStorageLvpNodeMountsConfigArgs.builder()\n .path(\"/mnt/localpv-disk\")\n .storageClass(\"local-disks\")\n .build())\n .build())\n .nodeAccessConfig(BareMetalAdminClusterNodeAccessConfigArgs.builder()\n .loginUser(\"root\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n admin-cluster-basic:\n type: gcp:gkeonprem:BareMetalAdminCluster\n properties:\n name: my-cluster\n location: us-west1\n bareMetalVersion: 1.13.4\n networkConfig:\n islandModeCidr:\n serviceAddressCidrBlocks:\n - 172.26.0.0/16\n podAddressCidrBlocks:\n - 10.240.0.0/13\n nodeConfig:\n maxPodsPerNode: 250\n controlPlane:\n controlPlaneNodePoolConfig:\n nodePoolConfig:\n labels: {}\n operatingSystem: LINUX\n nodeConfigs:\n - labels: {}\n nodeIp: 10.200.0.2\n - labels: {}\n nodeIp: 10.200.0.3\n - labels: {}\n nodeIp: 10.200.0.4\n loadBalancer:\n portConfig:\n controlPlaneLoadBalancerPort: 443\n vipConfig:\n controlPlaneVip: 10.200.0.5\n storage:\n lvpShareConfig:\n lvpConfig:\n path: /mnt/localpv-share\n storageClass: local-shared\n sharedPathPvCount: 5\n lvpNodeMountsConfig:\n path: /mnt/localpv-disk\n storageClass: local-disks\n nodeAccessConfig:\n loginUser: root\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkeonprem Bare Metal Admin Cluster Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin_cluster_basic = new gcp.gkeonprem.BareMetalAdminCluster(\"admin-cluster-basic\", {\n name: \"my-cluster\",\n location: \"us-west1\",\n description: \"test description\",\n bareMetalVersion: \"1.13.4\",\n annotations: {\n env: \"test\",\n },\n networkConfig: {\n islandModeCidr: {\n serviceAddressCidrBlocks: [\"172.26.0.0/16\"],\n podAddressCidrBlocks: [\"10.240.0.0/13\"],\n },\n },\n nodeConfig: {\n maxPodsPerNode: 250,\n },\n controlPlane: {\n controlPlaneNodePoolConfig: {\n nodePoolConfig: {\n labels: {},\n operatingSystem: \"LINUX\",\n nodeConfigs: [\n {\n labels: {},\n nodeIp: \"10.200.0.2\",\n },\n {\n labels: {},\n nodeIp: \"10.200.0.3\",\n },\n {\n labels: {},\n nodeIp: \"10.200.0.4\",\n },\n ],\n taints: [{\n key: \"test-key\",\n value: \"test-value\",\n effect: \"NO_EXECUTE\",\n }],\n },\n },\n apiServerArgs: [{\n argument: \"test argument\",\n value: \"test value\",\n }],\n },\n loadBalancer: {\n portConfig: {\n controlPlaneLoadBalancerPort: 443,\n },\n vipConfig: {\n controlPlaneVip: \"10.200.0.5\",\n },\n manualLbConfig: {\n enabled: true,\n },\n },\n storage: {\n lvpShareConfig: {\n lvpConfig: {\n path: \"/mnt/localpv-share\",\n storageClass: \"local-shared\",\n },\n sharedPathPvCount: 5,\n },\n lvpNodeMountsConfig: {\n path: \"/mnt/localpv-disk\",\n storageClass: \"local-disks\",\n },\n },\n nodeAccessConfig: {\n loginUser: \"root\",\n },\n securityConfig: {\n authorization: {\n adminUsers: [{\n username: \"admin@hashicorptest.com\",\n }],\n },\n },\n maintenanceConfig: {\n maintenanceAddressCidrBlocks: [\n \"10.0.0.1/32\",\n \"10.0.0.2/32\",\n ],\n },\n clusterOperations: {\n enableApplicationLogs: true,\n },\n proxy: {\n uri: \"test proxy uri\",\n noProxies: [\"127.0.0.1\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin_cluster_basic = gcp.gkeonprem.BareMetalAdminCluster(\"admin-cluster-basic\",\n name=\"my-cluster\",\n location=\"us-west1\",\n description=\"test description\",\n bare_metal_version=\"1.13.4\",\n annotations={\n \"env\": \"test\",\n },\n network_config={\n \"island_mode_cidr\": {\n \"service_address_cidr_blocks\": [\"172.26.0.0/16\"],\n \"pod_address_cidr_blocks\": [\"10.240.0.0/13\"],\n },\n },\n node_config={\n \"max_pods_per_node\": 250,\n },\n control_plane={\n \"control_plane_node_pool_config\": {\n \"node_pool_config\": {\n \"labels\": {},\n \"operating_system\": \"LINUX\",\n \"node_configs\": [\n {\n \"labels\": {},\n \"node_ip\": \"10.200.0.2\",\n },\n {\n \"labels\": {},\n \"node_ip\": \"10.200.0.3\",\n },\n {\n \"labels\": {},\n \"node_ip\": \"10.200.0.4\",\n },\n ],\n \"taints\": [{\n \"key\": \"test-key\",\n \"value\": \"test-value\",\n \"effect\": \"NO_EXECUTE\",\n }],\n },\n },\n \"api_server_args\": [{\n \"argument\": \"test argument\",\n \"value\": \"test value\",\n }],\n },\n load_balancer={\n \"port_config\": {\n \"control_plane_load_balancer_port\": 443,\n },\n \"vip_config\": {\n \"control_plane_vip\": \"10.200.0.5\",\n },\n \"manual_lb_config\": {\n \"enabled\": True,\n },\n },\n storage={\n \"lvp_share_config\": {\n \"lvp_config\": {\n \"path\": \"/mnt/localpv-share\",\n \"storage_class\": \"local-shared\",\n },\n \"shared_path_pv_count\": 5,\n },\n \"lvp_node_mounts_config\": {\n \"path\": \"/mnt/localpv-disk\",\n \"storage_class\": \"local-disks\",\n },\n },\n node_access_config={\n \"login_user\": \"root\",\n },\n security_config={\n \"authorization\": {\n \"admin_users\": [{\n \"username\": \"admin@hashicorptest.com\",\n }],\n },\n },\n maintenance_config={\n \"maintenance_address_cidr_blocks\": [\n \"10.0.0.1/32\",\n \"10.0.0.2/32\",\n ],\n },\n cluster_operations={\n \"enable_application_logs\": True,\n },\n proxy={\n \"uri\": \"test proxy uri\",\n \"no_proxies\": [\"127.0.0.1\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var admin_cluster_basic = new Gcp.GkeOnPrem.BareMetalAdminCluster(\"admin-cluster-basic\", new()\n {\n Name = \"my-cluster\",\n Location = \"us-west1\",\n Description = \"test description\",\n BareMetalVersion = \"1.13.4\",\n Annotations = \n {\n { \"env\", \"test\" },\n },\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterNetworkConfigArgs\n {\n IslandModeCidr = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterNetworkConfigIslandModeCidrArgs\n {\n ServiceAddressCidrBlocks = new[]\n {\n \"172.26.0.0/16\",\n },\n PodAddressCidrBlocks = new[]\n {\n \"10.240.0.0/13\",\n },\n },\n },\n NodeConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterNodeConfigArgs\n {\n MaxPodsPerNode = 250,\n },\n ControlPlane = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneArgs\n {\n ControlPlaneNodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigArgs\n {\n NodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs\n {\n Labels = null,\n OperatingSystem = \"LINUX\",\n NodeConfigs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.2\",\n },\n new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.3\",\n },\n new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.4\",\n },\n },\n Taints = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigTaintArgs\n {\n Key = \"test-key\",\n Value = \"test-value\",\n Effect = \"NO_EXECUTE\",\n },\n },\n },\n },\n ApiServerArgs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneApiServerArgArgs\n {\n Argument = \"test argument\",\n Value = \"test value\",\n },\n },\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterLoadBalancerArgs\n {\n PortConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterLoadBalancerPortConfigArgs\n {\n ControlPlaneLoadBalancerPort = 443,\n },\n VipConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.200.0.5\",\n },\n ManualLbConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterLoadBalancerManualLbConfigArgs\n {\n Enabled = true,\n },\n },\n Storage = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterStorageArgs\n {\n LvpShareConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterStorageLvpShareConfigArgs\n {\n LvpConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterStorageLvpShareConfigLvpConfigArgs\n {\n Path = \"/mnt/localpv-share\",\n StorageClass = \"local-shared\",\n },\n SharedPathPvCount = 5,\n },\n LvpNodeMountsConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterStorageLvpNodeMountsConfigArgs\n {\n Path = \"/mnt/localpv-disk\",\n StorageClass = \"local-disks\",\n },\n },\n NodeAccessConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterNodeAccessConfigArgs\n {\n LoginUser = \"root\",\n },\n SecurityConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterSecurityConfigArgs\n {\n Authorization = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterSecurityConfigAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterSecurityConfigAuthorizationAdminUserArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n },\n },\n MaintenanceConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterMaintenanceConfigArgs\n {\n MaintenanceAddressCidrBlocks = new[]\n {\n \"10.0.0.1/32\",\n \"10.0.0.2/32\",\n },\n },\n ClusterOperations = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterClusterOperationsArgs\n {\n EnableApplicationLogs = true,\n },\n Proxy = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterProxyArgs\n {\n Uri = \"test proxy uri\",\n NoProxies = new[]\n {\n \"127.0.0.1\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkeonprem\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gkeonprem.NewBareMetalAdminCluster(ctx, \"admin-cluster-basic\", \u0026gkeonprem.BareMetalAdminClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tDescription: pulumi.String(\"test description\"),\n\t\t\tBareMetalVersion: pulumi.String(\"1.13.4\"),\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"test\"),\n\t\t\t},\n\t\t\tNetworkConfig: \u0026gkeonprem.BareMetalAdminClusterNetworkConfigArgs{\n\t\t\t\tIslandModeCidr: \u0026gkeonprem.BareMetalAdminClusterNetworkConfigIslandModeCidrArgs{\n\t\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"172.26.0.0/16\"),\n\t\t\t\t\t},\n\t\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.240.0.0/13\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tNodeConfig: \u0026gkeonprem.BareMetalAdminClusterNodeConfigArgs{\n\t\t\t\tMaxPodsPerNode: pulumi.Int(250),\n\t\t\t},\n\t\t\tControlPlane: \u0026gkeonprem.BareMetalAdminClusterControlPlaneArgs{\n\t\t\t\tControlPlaneNodePoolConfig: \u0026gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigArgs{\n\t\t\t\t\tNodePoolConfig: \u0026gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs{\n\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\tOperatingSystem: pulumi.String(\"LINUX\"),\n\t\t\t\t\t\tNodeConfigs: gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArray{\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.2\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.3\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.4\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTaints: gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigTaintArray{\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigTaintArgs{\n\t\t\t\t\t\t\t\tKey: pulumi.String(\"test-key\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"test-value\"),\n\t\t\t\t\t\t\t\tEffect: pulumi.String(\"NO_EXECUTE\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tApiServerArgs: gkeonprem.BareMetalAdminClusterControlPlaneApiServerArgArray{\n\t\t\t\t\t\u0026gkeonprem.BareMetalAdminClusterControlPlaneApiServerArgArgs{\n\t\t\t\t\t\tArgument: pulumi.String(\"test argument\"),\n\t\t\t\t\t\tValue: pulumi.String(\"test value\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLoadBalancer: \u0026gkeonprem.BareMetalAdminClusterLoadBalancerArgs{\n\t\t\t\tPortConfig: \u0026gkeonprem.BareMetalAdminClusterLoadBalancerPortConfigArgs{\n\t\t\t\t\tControlPlaneLoadBalancerPort: pulumi.Int(443),\n\t\t\t\t},\n\t\t\t\tVipConfig: \u0026gkeonprem.BareMetalAdminClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.200.0.5\"),\n\t\t\t\t},\n\t\t\t\tManualLbConfig: \u0026gkeonprem.BareMetalAdminClusterLoadBalancerManualLbConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tStorage: \u0026gkeonprem.BareMetalAdminClusterStorageArgs{\n\t\t\t\tLvpShareConfig: \u0026gkeonprem.BareMetalAdminClusterStorageLvpShareConfigArgs{\n\t\t\t\t\tLvpConfig: \u0026gkeonprem.BareMetalAdminClusterStorageLvpShareConfigLvpConfigArgs{\n\t\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-share\"),\n\t\t\t\t\t\tStorageClass: pulumi.String(\"local-shared\"),\n\t\t\t\t\t},\n\t\t\t\t\tSharedPathPvCount: pulumi.Int(5),\n\t\t\t\t},\n\t\t\t\tLvpNodeMountsConfig: \u0026gkeonprem.BareMetalAdminClusterStorageLvpNodeMountsConfigArgs{\n\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-disk\"),\n\t\t\t\t\tStorageClass: pulumi.String(\"local-disks\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNodeAccessConfig: \u0026gkeonprem.BareMetalAdminClusterNodeAccessConfigArgs{\n\t\t\t\tLoginUser: pulumi.String(\"root\"),\n\t\t\t},\n\t\t\tSecurityConfig: \u0026gkeonprem.BareMetalAdminClusterSecurityConfigArgs{\n\t\t\t\tAuthorization: \u0026gkeonprem.BareMetalAdminClusterSecurityConfigAuthorizationArgs{\n\t\t\t\t\tAdminUsers: gkeonprem.BareMetalAdminClusterSecurityConfigAuthorizationAdminUserArray{\n\t\t\t\t\t\t\u0026gkeonprem.BareMetalAdminClusterSecurityConfigAuthorizationAdminUserArgs{\n\t\t\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tMaintenanceConfig: \u0026gkeonprem.BareMetalAdminClusterMaintenanceConfigArgs{\n\t\t\t\tMaintenanceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.0.0.1/32\"),\n\t\t\t\t\tpulumi.String(\"10.0.0.2/32\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tClusterOperations: \u0026gkeonprem.BareMetalAdminClusterClusterOperationsArgs{\n\t\t\t\tEnableApplicationLogs: pulumi.Bool(true),\n\t\t\t},\n\t\t\tProxy: \u0026gkeonprem.BareMetalAdminClusterProxyArgs{\n\t\t\t\tUri: pulumi.String(\"test proxy uri\"),\n\t\t\t\tNoProxies: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"127.0.0.1\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkeonprem.BareMetalAdminCluster;\nimport com.pulumi.gcp.gkeonprem.BareMetalAdminClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterNetworkConfigIslandModeCidrArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterNodeConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterControlPlaneArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterLoadBalancerPortConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterLoadBalancerManualLbConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterStorageArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterStorageLvpShareConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterStorageLvpShareConfigLvpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterStorageLvpNodeMountsConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterNodeAccessConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterSecurityConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterSecurityConfigAuthorizationArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterMaintenanceConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterClusterOperationsArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterProxyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var admin_cluster_basic = new BareMetalAdminCluster(\"admin-cluster-basic\", BareMetalAdminClusterArgs.builder()\n .name(\"my-cluster\")\n .location(\"us-west1\")\n .description(\"test description\")\n .bareMetalVersion(\"1.13.4\")\n .annotations(Map.of(\"env\", \"test\"))\n .networkConfig(BareMetalAdminClusterNetworkConfigArgs.builder()\n .islandModeCidr(BareMetalAdminClusterNetworkConfigIslandModeCidrArgs.builder()\n .serviceAddressCidrBlocks(\"172.26.0.0/16\")\n .podAddressCidrBlocks(\"10.240.0.0/13\")\n .build())\n .build())\n .nodeConfig(BareMetalAdminClusterNodeConfigArgs.builder()\n .maxPodsPerNode(250)\n .build())\n .controlPlane(BareMetalAdminClusterControlPlaneArgs.builder()\n .controlPlaneNodePoolConfig(BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigArgs.builder()\n .nodePoolConfig(BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs.builder()\n .labels()\n .operatingSystem(\"LINUX\")\n .nodeConfigs( \n BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.2\")\n .build(),\n BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.3\")\n .build(),\n BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.4\")\n .build())\n .taints(BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigTaintArgs.builder()\n .key(\"test-key\")\n .value(\"test-value\")\n .effect(\"NO_EXECUTE\")\n .build())\n .build())\n .build())\n .apiServerArgs(BareMetalAdminClusterControlPlaneApiServerArgArgs.builder()\n .argument(\"test argument\")\n .value(\"test value\")\n .build())\n .build())\n .loadBalancer(BareMetalAdminClusterLoadBalancerArgs.builder()\n .portConfig(BareMetalAdminClusterLoadBalancerPortConfigArgs.builder()\n .controlPlaneLoadBalancerPort(443)\n .build())\n .vipConfig(BareMetalAdminClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.200.0.5\")\n .build())\n .manualLbConfig(BareMetalAdminClusterLoadBalancerManualLbConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .storage(BareMetalAdminClusterStorageArgs.builder()\n .lvpShareConfig(BareMetalAdminClusterStorageLvpShareConfigArgs.builder()\n .lvpConfig(BareMetalAdminClusterStorageLvpShareConfigLvpConfigArgs.builder()\n .path(\"/mnt/localpv-share\")\n .storageClass(\"local-shared\")\n .build())\n .sharedPathPvCount(5)\n .build())\n .lvpNodeMountsConfig(BareMetalAdminClusterStorageLvpNodeMountsConfigArgs.builder()\n .path(\"/mnt/localpv-disk\")\n .storageClass(\"local-disks\")\n .build())\n .build())\n .nodeAccessConfig(BareMetalAdminClusterNodeAccessConfigArgs.builder()\n .loginUser(\"root\")\n .build())\n .securityConfig(BareMetalAdminClusterSecurityConfigArgs.builder()\n .authorization(BareMetalAdminClusterSecurityConfigAuthorizationArgs.builder()\n .adminUsers(BareMetalAdminClusterSecurityConfigAuthorizationAdminUserArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .build())\n .maintenanceConfig(BareMetalAdminClusterMaintenanceConfigArgs.builder()\n .maintenanceAddressCidrBlocks( \n \"10.0.0.1/32\",\n \"10.0.0.2/32\")\n .build())\n .clusterOperations(BareMetalAdminClusterClusterOperationsArgs.builder()\n .enableApplicationLogs(true)\n .build())\n .proxy(BareMetalAdminClusterProxyArgs.builder()\n .uri(\"test proxy uri\")\n .noProxies(\"127.0.0.1\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n admin-cluster-basic:\n type: gcp:gkeonprem:BareMetalAdminCluster\n properties:\n name: my-cluster\n location: us-west1\n description: test description\n bareMetalVersion: 1.13.4\n annotations:\n env: test\n networkConfig:\n islandModeCidr:\n serviceAddressCidrBlocks:\n - 172.26.0.0/16\n podAddressCidrBlocks:\n - 10.240.0.0/13\n nodeConfig:\n maxPodsPerNode: 250\n controlPlane:\n controlPlaneNodePoolConfig:\n nodePoolConfig:\n labels: {}\n operatingSystem: LINUX\n nodeConfigs:\n - labels: {}\n nodeIp: 10.200.0.2\n - labels: {}\n nodeIp: 10.200.0.3\n - labels: {}\n nodeIp: 10.200.0.4\n taints:\n - key: test-key\n value: test-value\n effect: NO_EXECUTE\n apiServerArgs:\n - argument: test argument\n value: test value\n loadBalancer:\n portConfig:\n controlPlaneLoadBalancerPort: 443\n vipConfig:\n controlPlaneVip: 10.200.0.5\n manualLbConfig:\n enabled: true\n storage:\n lvpShareConfig:\n lvpConfig:\n path: /mnt/localpv-share\n storageClass: local-shared\n sharedPathPvCount: 5\n lvpNodeMountsConfig:\n path: /mnt/localpv-disk\n storageClass: local-disks\n nodeAccessConfig:\n loginUser: root\n securityConfig:\n authorization:\n adminUsers:\n - username: admin@hashicorptest.com\n maintenanceConfig:\n maintenanceAddressCidrBlocks:\n - 10.0.0.1/32\n - 10.0.0.2/32\n clusterOperations:\n enableApplicationLogs: true\n proxy:\n uri: test proxy uri\n noProxies:\n - 127.0.0.1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBareMetalAdminCluster can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/bareMetalAdminClusters/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, BareMetalAdminCluster can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:gkeonprem/bareMetalAdminCluster:BareMetalAdminCluster default projects/{{project}}/locations/{{location}}/bareMetalAdminClusters/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkeonprem/bareMetalAdminCluster:BareMetalAdminCluster default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkeonprem/bareMetalAdminCluster:BareMetalAdminCluster default {{location}}/{{name}}\n```\n\n", + "description": "A Google Bare Metal Admin Cluster.\n\n\n\n## Example Usage\n\n### Gkeonprem Bare Metal Admin Cluster Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin_cluster_basic = new gcp.gkeonprem.BareMetalAdminCluster(\"admin-cluster-basic\", {\n name: \"my-cluster\",\n location: \"us-west1\",\n bareMetalVersion: \"1.13.4\",\n networkConfig: {\n islandModeCidr: {\n serviceAddressCidrBlocks: [\"172.26.0.0/16\"],\n podAddressCidrBlocks: [\"10.240.0.0/13\"],\n },\n },\n nodeConfig: {\n maxPodsPerNode: 250,\n },\n controlPlane: {\n controlPlaneNodePoolConfig: {\n nodePoolConfig: {\n labels: {},\n operatingSystem: \"LINUX\",\n nodeConfigs: [\n {\n labels: {},\n nodeIp: \"10.200.0.2\",\n },\n {\n labels: {},\n nodeIp: \"10.200.0.3\",\n },\n {\n labels: {},\n nodeIp: \"10.200.0.4\",\n },\n ],\n },\n },\n },\n loadBalancer: {\n portConfig: {\n controlPlaneLoadBalancerPort: 443,\n },\n vipConfig: {\n controlPlaneVip: \"10.200.0.5\",\n },\n },\n storage: {\n lvpShareConfig: {\n lvpConfig: {\n path: \"/mnt/localpv-share\",\n storageClass: \"local-shared\",\n },\n sharedPathPvCount: 5,\n },\n lvpNodeMountsConfig: {\n path: \"/mnt/localpv-disk\",\n storageClass: \"local-disks\",\n },\n },\n nodeAccessConfig: {\n loginUser: \"root\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin_cluster_basic = gcp.gkeonprem.BareMetalAdminCluster(\"admin-cluster-basic\",\n name=\"my-cluster\",\n location=\"us-west1\",\n bare_metal_version=\"1.13.4\",\n network_config={\n \"island_mode_cidr\": {\n \"service_address_cidr_blocks\": [\"172.26.0.0/16\"],\n \"pod_address_cidr_blocks\": [\"10.240.0.0/13\"],\n },\n },\n node_config={\n \"max_pods_per_node\": 250,\n },\n control_plane={\n \"control_plane_node_pool_config\": {\n \"node_pool_config\": {\n \"labels\": {},\n \"operating_system\": \"LINUX\",\n \"node_configs\": [\n {\n \"labels\": {},\n \"node_ip\": \"10.200.0.2\",\n },\n {\n \"labels\": {},\n \"node_ip\": \"10.200.0.3\",\n },\n {\n \"labels\": {},\n \"node_ip\": \"10.200.0.4\",\n },\n ],\n },\n },\n },\n load_balancer={\n \"port_config\": {\n \"control_plane_load_balancer_port\": 443,\n },\n \"vip_config\": {\n \"control_plane_vip\": \"10.200.0.5\",\n },\n },\n storage={\n \"lvp_share_config\": {\n \"lvp_config\": {\n \"path\": \"/mnt/localpv-share\",\n \"storage_class\": \"local-shared\",\n },\n \"shared_path_pv_count\": 5,\n },\n \"lvp_node_mounts_config\": {\n \"path\": \"/mnt/localpv-disk\",\n \"storage_class\": \"local-disks\",\n },\n },\n node_access_config={\n \"login_user\": \"root\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var admin_cluster_basic = new Gcp.GkeOnPrem.BareMetalAdminCluster(\"admin-cluster-basic\", new()\n {\n Name = \"my-cluster\",\n Location = \"us-west1\",\n BareMetalVersion = \"1.13.4\",\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterNetworkConfigArgs\n {\n IslandModeCidr = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterNetworkConfigIslandModeCidrArgs\n {\n ServiceAddressCidrBlocks = new[]\n {\n \"172.26.0.0/16\",\n },\n PodAddressCidrBlocks = new[]\n {\n \"10.240.0.0/13\",\n },\n },\n },\n NodeConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterNodeConfigArgs\n {\n MaxPodsPerNode = 250,\n },\n ControlPlane = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneArgs\n {\n ControlPlaneNodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigArgs\n {\n NodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs\n {\n Labels = null,\n OperatingSystem = \"LINUX\",\n NodeConfigs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.2\",\n },\n new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.3\",\n },\n new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.4\",\n },\n },\n },\n },\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterLoadBalancerArgs\n {\n PortConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterLoadBalancerPortConfigArgs\n {\n ControlPlaneLoadBalancerPort = 443,\n },\n VipConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.200.0.5\",\n },\n },\n Storage = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterStorageArgs\n {\n LvpShareConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterStorageLvpShareConfigArgs\n {\n LvpConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterStorageLvpShareConfigLvpConfigArgs\n {\n Path = \"/mnt/localpv-share\",\n StorageClass = \"local-shared\",\n },\n SharedPathPvCount = 5,\n },\n LvpNodeMountsConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterStorageLvpNodeMountsConfigArgs\n {\n Path = \"/mnt/localpv-disk\",\n StorageClass = \"local-disks\",\n },\n },\n NodeAccessConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterNodeAccessConfigArgs\n {\n LoginUser = \"root\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkeonprem\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gkeonprem.NewBareMetalAdminCluster(ctx, \"admin-cluster-basic\", \u0026gkeonprem.BareMetalAdminClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tBareMetalVersion: pulumi.String(\"1.13.4\"),\n\t\t\tNetworkConfig: \u0026gkeonprem.BareMetalAdminClusterNetworkConfigArgs{\n\t\t\t\tIslandModeCidr: \u0026gkeonprem.BareMetalAdminClusterNetworkConfigIslandModeCidrArgs{\n\t\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"172.26.0.0/16\"),\n\t\t\t\t\t},\n\t\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.240.0.0/13\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tNodeConfig: \u0026gkeonprem.BareMetalAdminClusterNodeConfigArgs{\n\t\t\t\tMaxPodsPerNode: pulumi.Int(250),\n\t\t\t},\n\t\t\tControlPlane: \u0026gkeonprem.BareMetalAdminClusterControlPlaneArgs{\n\t\t\t\tControlPlaneNodePoolConfig: \u0026gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigArgs{\n\t\t\t\t\tNodePoolConfig: \u0026gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs{\n\t\t\t\t\t\tLabels: pulumi.StringMap{},\n\t\t\t\t\t\tOperatingSystem: pulumi.String(\"LINUX\"),\n\t\t\t\t\t\tNodeConfigs: gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArray{\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\tLabels: pulumi.StringMap{},\n\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.2\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\tLabels: pulumi.StringMap{},\n\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.3\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\tLabels: pulumi.StringMap{},\n\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.4\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLoadBalancer: \u0026gkeonprem.BareMetalAdminClusterLoadBalancerArgs{\n\t\t\t\tPortConfig: \u0026gkeonprem.BareMetalAdminClusterLoadBalancerPortConfigArgs{\n\t\t\t\t\tControlPlaneLoadBalancerPort: pulumi.Int(443),\n\t\t\t\t},\n\t\t\t\tVipConfig: \u0026gkeonprem.BareMetalAdminClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.200.0.5\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tStorage: \u0026gkeonprem.BareMetalAdminClusterStorageArgs{\n\t\t\t\tLvpShareConfig: \u0026gkeonprem.BareMetalAdminClusterStorageLvpShareConfigArgs{\n\t\t\t\t\tLvpConfig: \u0026gkeonprem.BareMetalAdminClusterStorageLvpShareConfigLvpConfigArgs{\n\t\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-share\"),\n\t\t\t\t\t\tStorageClass: pulumi.String(\"local-shared\"),\n\t\t\t\t\t},\n\t\t\t\t\tSharedPathPvCount: pulumi.Int(5),\n\t\t\t\t},\n\t\t\t\tLvpNodeMountsConfig: \u0026gkeonprem.BareMetalAdminClusterStorageLvpNodeMountsConfigArgs{\n\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-disk\"),\n\t\t\t\t\tStorageClass: pulumi.String(\"local-disks\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNodeAccessConfig: \u0026gkeonprem.BareMetalAdminClusterNodeAccessConfigArgs{\n\t\t\t\tLoginUser: pulumi.String(\"root\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkeonprem.BareMetalAdminCluster;\nimport com.pulumi.gcp.gkeonprem.BareMetalAdminClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterNetworkConfigIslandModeCidrArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterNodeConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterControlPlaneArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterLoadBalancerPortConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterStorageArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterStorageLvpShareConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterStorageLvpShareConfigLvpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterStorageLvpNodeMountsConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterNodeAccessConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var admin_cluster_basic = new BareMetalAdminCluster(\"admin-cluster-basic\", BareMetalAdminClusterArgs.builder()\n .name(\"my-cluster\")\n .location(\"us-west1\")\n .bareMetalVersion(\"1.13.4\")\n .networkConfig(BareMetalAdminClusterNetworkConfigArgs.builder()\n .islandModeCidr(BareMetalAdminClusterNetworkConfigIslandModeCidrArgs.builder()\n .serviceAddressCidrBlocks(\"172.26.0.0/16\")\n .podAddressCidrBlocks(\"10.240.0.0/13\")\n .build())\n .build())\n .nodeConfig(BareMetalAdminClusterNodeConfigArgs.builder()\n .maxPodsPerNode(250)\n .build())\n .controlPlane(BareMetalAdminClusterControlPlaneArgs.builder()\n .controlPlaneNodePoolConfig(BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigArgs.builder()\n .nodePoolConfig(BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs.builder()\n .labels()\n .operatingSystem(\"LINUX\")\n .nodeConfigs( \n BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.2\")\n .build(),\n BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.3\")\n .build(),\n BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.4\")\n .build())\n .build())\n .build())\n .build())\n .loadBalancer(BareMetalAdminClusterLoadBalancerArgs.builder()\n .portConfig(BareMetalAdminClusterLoadBalancerPortConfigArgs.builder()\n .controlPlaneLoadBalancerPort(443)\n .build())\n .vipConfig(BareMetalAdminClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.200.0.5\")\n .build())\n .build())\n .storage(BareMetalAdminClusterStorageArgs.builder()\n .lvpShareConfig(BareMetalAdminClusterStorageLvpShareConfigArgs.builder()\n .lvpConfig(BareMetalAdminClusterStorageLvpShareConfigLvpConfigArgs.builder()\n .path(\"/mnt/localpv-share\")\n .storageClass(\"local-shared\")\n .build())\n .sharedPathPvCount(5)\n .build())\n .lvpNodeMountsConfig(BareMetalAdminClusterStorageLvpNodeMountsConfigArgs.builder()\n .path(\"/mnt/localpv-disk\")\n .storageClass(\"local-disks\")\n .build())\n .build())\n .nodeAccessConfig(BareMetalAdminClusterNodeAccessConfigArgs.builder()\n .loginUser(\"root\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n admin-cluster-basic:\n type: gcp:gkeonprem:BareMetalAdminCluster\n properties:\n name: my-cluster\n location: us-west1\n bareMetalVersion: 1.13.4\n networkConfig:\n islandModeCidr:\n serviceAddressCidrBlocks:\n - 172.26.0.0/16\n podAddressCidrBlocks:\n - 10.240.0.0/13\n nodeConfig:\n maxPodsPerNode: 250\n controlPlane:\n controlPlaneNodePoolConfig:\n nodePoolConfig:\n labels: {}\n operatingSystem: LINUX\n nodeConfigs:\n - labels: {}\n nodeIp: 10.200.0.2\n - labels: {}\n nodeIp: 10.200.0.3\n - labels: {}\n nodeIp: 10.200.0.4\n loadBalancer:\n portConfig:\n controlPlaneLoadBalancerPort: 443\n vipConfig:\n controlPlaneVip: 10.200.0.5\n storage:\n lvpShareConfig:\n lvpConfig:\n path: /mnt/localpv-share\n storageClass: local-shared\n sharedPathPvCount: 5\n lvpNodeMountsConfig:\n path: /mnt/localpv-disk\n storageClass: local-disks\n nodeAccessConfig:\n loginUser: root\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkeonprem Bare Metal Admin Cluster Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin_cluster_basic = new gcp.gkeonprem.BareMetalAdminCluster(\"admin-cluster-basic\", {\n name: \"my-cluster\",\n location: \"us-west1\",\n description: \"test description\",\n bareMetalVersion: \"1.13.4\",\n annotations: {\n env: \"test\",\n },\n networkConfig: {\n islandModeCidr: {\n serviceAddressCidrBlocks: [\"172.26.0.0/16\"],\n podAddressCidrBlocks: [\"10.240.0.0/13\"],\n },\n },\n nodeConfig: {\n maxPodsPerNode: 250,\n },\n controlPlane: {\n controlPlaneNodePoolConfig: {\n nodePoolConfig: {\n labels: {},\n operatingSystem: \"LINUX\",\n nodeConfigs: [\n {\n labels: {},\n nodeIp: \"10.200.0.2\",\n },\n {\n labels: {},\n nodeIp: \"10.200.0.3\",\n },\n {\n labels: {},\n nodeIp: \"10.200.0.4\",\n },\n ],\n taints: [{\n key: \"test-key\",\n value: \"test-value\",\n effect: \"NO_EXECUTE\",\n }],\n },\n },\n apiServerArgs: [{\n argument: \"test argument\",\n value: \"test value\",\n }],\n },\n loadBalancer: {\n portConfig: {\n controlPlaneLoadBalancerPort: 443,\n },\n vipConfig: {\n controlPlaneVip: \"10.200.0.5\",\n },\n manualLbConfig: {\n enabled: true,\n },\n },\n storage: {\n lvpShareConfig: {\n lvpConfig: {\n path: \"/mnt/localpv-share\",\n storageClass: \"local-shared\",\n },\n sharedPathPvCount: 5,\n },\n lvpNodeMountsConfig: {\n path: \"/mnt/localpv-disk\",\n storageClass: \"local-disks\",\n },\n },\n nodeAccessConfig: {\n loginUser: \"root\",\n },\n securityConfig: {\n authorization: {\n adminUsers: [{\n username: \"admin@hashicorptest.com\",\n }],\n },\n },\n maintenanceConfig: {\n maintenanceAddressCidrBlocks: [\n \"10.0.0.1/32\",\n \"10.0.0.2/32\",\n ],\n },\n clusterOperations: {\n enableApplicationLogs: true,\n },\n proxy: {\n uri: \"test proxy uri\",\n noProxies: [\"127.0.0.1\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin_cluster_basic = gcp.gkeonprem.BareMetalAdminCluster(\"admin-cluster-basic\",\n name=\"my-cluster\",\n location=\"us-west1\",\n description=\"test description\",\n bare_metal_version=\"1.13.4\",\n annotations={\n \"env\": \"test\",\n },\n network_config={\n \"island_mode_cidr\": {\n \"service_address_cidr_blocks\": [\"172.26.0.0/16\"],\n \"pod_address_cidr_blocks\": [\"10.240.0.0/13\"],\n },\n },\n node_config={\n \"max_pods_per_node\": 250,\n },\n control_plane={\n \"control_plane_node_pool_config\": {\n \"node_pool_config\": {\n \"labels\": {},\n \"operating_system\": \"LINUX\",\n \"node_configs\": [\n {\n \"labels\": {},\n \"node_ip\": \"10.200.0.2\",\n },\n {\n \"labels\": {},\n \"node_ip\": \"10.200.0.3\",\n },\n {\n \"labels\": {},\n \"node_ip\": \"10.200.0.4\",\n },\n ],\n \"taints\": [{\n \"key\": \"test-key\",\n \"value\": \"test-value\",\n \"effect\": \"NO_EXECUTE\",\n }],\n },\n },\n \"api_server_args\": [{\n \"argument\": \"test argument\",\n \"value\": \"test value\",\n }],\n },\n load_balancer={\n \"port_config\": {\n \"control_plane_load_balancer_port\": 443,\n },\n \"vip_config\": {\n \"control_plane_vip\": \"10.200.0.5\",\n },\n \"manual_lb_config\": {\n \"enabled\": True,\n },\n },\n storage={\n \"lvp_share_config\": {\n \"lvp_config\": {\n \"path\": \"/mnt/localpv-share\",\n \"storage_class\": \"local-shared\",\n },\n \"shared_path_pv_count\": 5,\n },\n \"lvp_node_mounts_config\": {\n \"path\": \"/mnt/localpv-disk\",\n \"storage_class\": \"local-disks\",\n },\n },\n node_access_config={\n \"login_user\": \"root\",\n },\n security_config={\n \"authorization\": {\n \"admin_users\": [{\n \"username\": \"admin@hashicorptest.com\",\n }],\n },\n },\n maintenance_config={\n \"maintenance_address_cidr_blocks\": [\n \"10.0.0.1/32\",\n \"10.0.0.2/32\",\n ],\n },\n cluster_operations={\n \"enable_application_logs\": True,\n },\n proxy={\n \"uri\": \"test proxy uri\",\n \"no_proxies\": [\"127.0.0.1\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var admin_cluster_basic = new Gcp.GkeOnPrem.BareMetalAdminCluster(\"admin-cluster-basic\", new()\n {\n Name = \"my-cluster\",\n Location = \"us-west1\",\n Description = \"test description\",\n BareMetalVersion = \"1.13.4\",\n Annotations = \n {\n { \"env\", \"test\" },\n },\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterNetworkConfigArgs\n {\n IslandModeCidr = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterNetworkConfigIslandModeCidrArgs\n {\n ServiceAddressCidrBlocks = new[]\n {\n \"172.26.0.0/16\",\n },\n PodAddressCidrBlocks = new[]\n {\n \"10.240.0.0/13\",\n },\n },\n },\n NodeConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterNodeConfigArgs\n {\n MaxPodsPerNode = 250,\n },\n ControlPlane = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneArgs\n {\n ControlPlaneNodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigArgs\n {\n NodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs\n {\n Labels = null,\n OperatingSystem = \"LINUX\",\n NodeConfigs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.2\",\n },\n new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.3\",\n },\n new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.4\",\n },\n },\n Taints = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigTaintArgs\n {\n Key = \"test-key\",\n Value = \"test-value\",\n Effect = \"NO_EXECUTE\",\n },\n },\n },\n },\n ApiServerArgs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterControlPlaneApiServerArgArgs\n {\n Argument = \"test argument\",\n Value = \"test value\",\n },\n },\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterLoadBalancerArgs\n {\n PortConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterLoadBalancerPortConfigArgs\n {\n ControlPlaneLoadBalancerPort = 443,\n },\n VipConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.200.0.5\",\n },\n ManualLbConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterLoadBalancerManualLbConfigArgs\n {\n Enabled = true,\n },\n },\n Storage = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterStorageArgs\n {\n LvpShareConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterStorageLvpShareConfigArgs\n {\n LvpConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterStorageLvpShareConfigLvpConfigArgs\n {\n Path = \"/mnt/localpv-share\",\n StorageClass = \"local-shared\",\n },\n SharedPathPvCount = 5,\n },\n LvpNodeMountsConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterStorageLvpNodeMountsConfigArgs\n {\n Path = \"/mnt/localpv-disk\",\n StorageClass = \"local-disks\",\n },\n },\n NodeAccessConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterNodeAccessConfigArgs\n {\n LoginUser = \"root\",\n },\n SecurityConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterSecurityConfigArgs\n {\n Authorization = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterSecurityConfigAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterSecurityConfigAuthorizationAdminUserArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n },\n },\n MaintenanceConfig = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterMaintenanceConfigArgs\n {\n MaintenanceAddressCidrBlocks = new[]\n {\n \"10.0.0.1/32\",\n \"10.0.0.2/32\",\n },\n },\n ClusterOperations = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterClusterOperationsArgs\n {\n EnableApplicationLogs = true,\n },\n Proxy = new Gcp.GkeOnPrem.Inputs.BareMetalAdminClusterProxyArgs\n {\n Uri = \"test proxy uri\",\n NoProxies = new[]\n {\n \"127.0.0.1\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkeonprem\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gkeonprem.NewBareMetalAdminCluster(ctx, \"admin-cluster-basic\", \u0026gkeonprem.BareMetalAdminClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tDescription: pulumi.String(\"test description\"),\n\t\t\tBareMetalVersion: pulumi.String(\"1.13.4\"),\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"test\"),\n\t\t\t},\n\t\t\tNetworkConfig: \u0026gkeonprem.BareMetalAdminClusterNetworkConfigArgs{\n\t\t\t\tIslandModeCidr: \u0026gkeonprem.BareMetalAdminClusterNetworkConfigIslandModeCidrArgs{\n\t\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"172.26.0.0/16\"),\n\t\t\t\t\t},\n\t\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.240.0.0/13\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tNodeConfig: \u0026gkeonprem.BareMetalAdminClusterNodeConfigArgs{\n\t\t\t\tMaxPodsPerNode: pulumi.Int(250),\n\t\t\t},\n\t\t\tControlPlane: \u0026gkeonprem.BareMetalAdminClusterControlPlaneArgs{\n\t\t\t\tControlPlaneNodePoolConfig: \u0026gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigArgs{\n\t\t\t\t\tNodePoolConfig: \u0026gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs{\n\t\t\t\t\t\tLabels: pulumi.StringMap{},\n\t\t\t\t\t\tOperatingSystem: pulumi.String(\"LINUX\"),\n\t\t\t\t\t\tNodeConfigs: gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArray{\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\tLabels: pulumi.StringMap{},\n\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.2\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\tLabels: pulumi.StringMap{},\n\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.3\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\tLabels: pulumi.StringMap{},\n\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.4\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTaints: gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigTaintArray{\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigTaintArgs{\n\t\t\t\t\t\t\t\tKey: pulumi.String(\"test-key\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"test-value\"),\n\t\t\t\t\t\t\t\tEffect: pulumi.String(\"NO_EXECUTE\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tApiServerArgs: gkeonprem.BareMetalAdminClusterControlPlaneApiServerArgArray{\n\t\t\t\t\t\u0026gkeonprem.BareMetalAdminClusterControlPlaneApiServerArgArgs{\n\t\t\t\t\t\tArgument: pulumi.String(\"test argument\"),\n\t\t\t\t\t\tValue: pulumi.String(\"test value\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLoadBalancer: \u0026gkeonprem.BareMetalAdminClusterLoadBalancerArgs{\n\t\t\t\tPortConfig: \u0026gkeonprem.BareMetalAdminClusterLoadBalancerPortConfigArgs{\n\t\t\t\t\tControlPlaneLoadBalancerPort: pulumi.Int(443),\n\t\t\t\t},\n\t\t\t\tVipConfig: \u0026gkeonprem.BareMetalAdminClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.200.0.5\"),\n\t\t\t\t},\n\t\t\t\tManualLbConfig: \u0026gkeonprem.BareMetalAdminClusterLoadBalancerManualLbConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tStorage: \u0026gkeonprem.BareMetalAdminClusterStorageArgs{\n\t\t\t\tLvpShareConfig: \u0026gkeonprem.BareMetalAdminClusterStorageLvpShareConfigArgs{\n\t\t\t\t\tLvpConfig: \u0026gkeonprem.BareMetalAdminClusterStorageLvpShareConfigLvpConfigArgs{\n\t\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-share\"),\n\t\t\t\t\t\tStorageClass: pulumi.String(\"local-shared\"),\n\t\t\t\t\t},\n\t\t\t\t\tSharedPathPvCount: pulumi.Int(5),\n\t\t\t\t},\n\t\t\t\tLvpNodeMountsConfig: \u0026gkeonprem.BareMetalAdminClusterStorageLvpNodeMountsConfigArgs{\n\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-disk\"),\n\t\t\t\t\tStorageClass: pulumi.String(\"local-disks\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNodeAccessConfig: \u0026gkeonprem.BareMetalAdminClusterNodeAccessConfigArgs{\n\t\t\t\tLoginUser: pulumi.String(\"root\"),\n\t\t\t},\n\t\t\tSecurityConfig: \u0026gkeonprem.BareMetalAdminClusterSecurityConfigArgs{\n\t\t\t\tAuthorization: \u0026gkeonprem.BareMetalAdminClusterSecurityConfigAuthorizationArgs{\n\t\t\t\t\tAdminUsers: gkeonprem.BareMetalAdminClusterSecurityConfigAuthorizationAdminUserArray{\n\t\t\t\t\t\t\u0026gkeonprem.BareMetalAdminClusterSecurityConfigAuthorizationAdminUserArgs{\n\t\t\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tMaintenanceConfig: \u0026gkeonprem.BareMetalAdminClusterMaintenanceConfigArgs{\n\t\t\t\tMaintenanceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.0.0.1/32\"),\n\t\t\t\t\tpulumi.String(\"10.0.0.2/32\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tClusterOperations: \u0026gkeonprem.BareMetalAdminClusterClusterOperationsArgs{\n\t\t\t\tEnableApplicationLogs: pulumi.Bool(true),\n\t\t\t},\n\t\t\tProxy: \u0026gkeonprem.BareMetalAdminClusterProxyArgs{\n\t\t\t\tUri: pulumi.String(\"test proxy uri\"),\n\t\t\t\tNoProxies: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"127.0.0.1\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkeonprem.BareMetalAdminCluster;\nimport com.pulumi.gcp.gkeonprem.BareMetalAdminClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterNetworkConfigIslandModeCidrArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterNodeConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterControlPlaneArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterLoadBalancerPortConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterLoadBalancerManualLbConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterStorageArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterStorageLvpShareConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterStorageLvpShareConfigLvpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterStorageLvpNodeMountsConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterNodeAccessConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterSecurityConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterSecurityConfigAuthorizationArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterMaintenanceConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterClusterOperationsArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalAdminClusterProxyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var admin_cluster_basic = new BareMetalAdminCluster(\"admin-cluster-basic\", BareMetalAdminClusterArgs.builder()\n .name(\"my-cluster\")\n .location(\"us-west1\")\n .description(\"test description\")\n .bareMetalVersion(\"1.13.4\")\n .annotations(Map.of(\"env\", \"test\"))\n .networkConfig(BareMetalAdminClusterNetworkConfigArgs.builder()\n .islandModeCidr(BareMetalAdminClusterNetworkConfigIslandModeCidrArgs.builder()\n .serviceAddressCidrBlocks(\"172.26.0.0/16\")\n .podAddressCidrBlocks(\"10.240.0.0/13\")\n .build())\n .build())\n .nodeConfig(BareMetalAdminClusterNodeConfigArgs.builder()\n .maxPodsPerNode(250)\n .build())\n .controlPlane(BareMetalAdminClusterControlPlaneArgs.builder()\n .controlPlaneNodePoolConfig(BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigArgs.builder()\n .nodePoolConfig(BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs.builder()\n .labels()\n .operatingSystem(\"LINUX\")\n .nodeConfigs( \n BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.2\")\n .build(),\n BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.3\")\n .build(),\n BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.4\")\n .build())\n .taints(BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigTaintArgs.builder()\n .key(\"test-key\")\n .value(\"test-value\")\n .effect(\"NO_EXECUTE\")\n .build())\n .build())\n .build())\n .apiServerArgs(BareMetalAdminClusterControlPlaneApiServerArgArgs.builder()\n .argument(\"test argument\")\n .value(\"test value\")\n .build())\n .build())\n .loadBalancer(BareMetalAdminClusterLoadBalancerArgs.builder()\n .portConfig(BareMetalAdminClusterLoadBalancerPortConfigArgs.builder()\n .controlPlaneLoadBalancerPort(443)\n .build())\n .vipConfig(BareMetalAdminClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.200.0.5\")\n .build())\n .manualLbConfig(BareMetalAdminClusterLoadBalancerManualLbConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .storage(BareMetalAdminClusterStorageArgs.builder()\n .lvpShareConfig(BareMetalAdminClusterStorageLvpShareConfigArgs.builder()\n .lvpConfig(BareMetalAdminClusterStorageLvpShareConfigLvpConfigArgs.builder()\n .path(\"/mnt/localpv-share\")\n .storageClass(\"local-shared\")\n .build())\n .sharedPathPvCount(5)\n .build())\n .lvpNodeMountsConfig(BareMetalAdminClusterStorageLvpNodeMountsConfigArgs.builder()\n .path(\"/mnt/localpv-disk\")\n .storageClass(\"local-disks\")\n .build())\n .build())\n .nodeAccessConfig(BareMetalAdminClusterNodeAccessConfigArgs.builder()\n .loginUser(\"root\")\n .build())\n .securityConfig(BareMetalAdminClusterSecurityConfigArgs.builder()\n .authorization(BareMetalAdminClusterSecurityConfigAuthorizationArgs.builder()\n .adminUsers(BareMetalAdminClusterSecurityConfigAuthorizationAdminUserArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .build())\n .maintenanceConfig(BareMetalAdminClusterMaintenanceConfigArgs.builder()\n .maintenanceAddressCidrBlocks( \n \"10.0.0.1/32\",\n \"10.0.0.2/32\")\n .build())\n .clusterOperations(BareMetalAdminClusterClusterOperationsArgs.builder()\n .enableApplicationLogs(true)\n .build())\n .proxy(BareMetalAdminClusterProxyArgs.builder()\n .uri(\"test proxy uri\")\n .noProxies(\"127.0.0.1\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n admin-cluster-basic:\n type: gcp:gkeonprem:BareMetalAdminCluster\n properties:\n name: my-cluster\n location: us-west1\n description: test description\n bareMetalVersion: 1.13.4\n annotations:\n env: test\n networkConfig:\n islandModeCidr:\n serviceAddressCidrBlocks:\n - 172.26.0.0/16\n podAddressCidrBlocks:\n - 10.240.0.0/13\n nodeConfig:\n maxPodsPerNode: 250\n controlPlane:\n controlPlaneNodePoolConfig:\n nodePoolConfig:\n labels: {}\n operatingSystem: LINUX\n nodeConfigs:\n - labels: {}\n nodeIp: 10.200.0.2\n - labels: {}\n nodeIp: 10.200.0.3\n - labels: {}\n nodeIp: 10.200.0.4\n taints:\n - key: test-key\n value: test-value\n effect: NO_EXECUTE\n apiServerArgs:\n - argument: test argument\n value: test value\n loadBalancer:\n portConfig:\n controlPlaneLoadBalancerPort: 443\n vipConfig:\n controlPlaneVip: 10.200.0.5\n manualLbConfig:\n enabled: true\n storage:\n lvpShareConfig:\n lvpConfig:\n path: /mnt/localpv-share\n storageClass: local-shared\n sharedPathPvCount: 5\n lvpNodeMountsConfig:\n path: /mnt/localpv-disk\n storageClass: local-disks\n nodeAccessConfig:\n loginUser: root\n securityConfig:\n authorization:\n adminUsers:\n - username: admin@hashicorptest.com\n maintenanceConfig:\n maintenanceAddressCidrBlocks:\n - 10.0.0.1/32\n - 10.0.0.2/32\n clusterOperations:\n enableApplicationLogs: true\n proxy:\n uri: test proxy uri\n noProxies:\n - 127.0.0.1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBareMetalAdminCluster can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/bareMetalAdminClusters/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, BareMetalAdminCluster can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:gkeonprem/bareMetalAdminCluster:BareMetalAdminCluster default projects/{{project}}/locations/{{location}}/bareMetalAdminClusters/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkeonprem/bareMetalAdminCluster:BareMetalAdminCluster default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkeonprem/bareMetalAdminCluster:BareMetalAdminCluster default {{location}}/{{name}}\n```\n\n", "properties": { "annotations": { "type": "object", @@ -205058,7 +205058,7 @@ } }, "gcp:gkeonprem/bareMetalCluster:BareMetalCluster": { - "description": "A Google Bare Metal User Cluster.\n\n\n\n## Example Usage\n\n### Gkeonprem Bare Metal Cluster Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster_basic = new gcp.gkeonprem.BareMetalCluster(\"cluster-basic\", {\n name: \"my-cluster\",\n location: \"us-west1\",\n adminClusterMembership: \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n bareMetalVersion: \"1.12.3\",\n networkConfig: {\n islandModeCidr: {\n serviceAddressCidrBlocks: [\"172.26.0.0/16\"],\n podAddressCidrBlocks: [\"10.240.0.0/13\"],\n },\n },\n controlPlane: {\n controlPlaneNodePoolConfig: {\n nodePoolConfig: {\n labels: {},\n operatingSystem: \"LINUX\",\n nodeConfigs: [{\n labels: {},\n nodeIp: \"10.200.0.9\",\n }],\n },\n },\n },\n loadBalancer: {\n portConfig: {\n controlPlaneLoadBalancerPort: 443,\n },\n vipConfig: {\n controlPlaneVip: \"10.200.0.13\",\n ingressVip: \"10.200.0.14\",\n },\n metalLbConfig: {\n addressPools: [{\n pool: \"pool1\",\n addresses: [\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n ],\n avoidBuggyIps: true,\n manualAssign: true,\n }],\n },\n },\n storage: {\n lvpShareConfig: {\n lvpConfig: {\n path: \"/mnt/localpv-share\",\n storageClass: \"local-shared\",\n },\n sharedPathPvCount: 5,\n },\n lvpNodeMountsConfig: {\n path: \"/mnt/localpv-disk\",\n storageClass: \"local-disks\",\n },\n },\n securityConfig: {\n authorization: {\n adminUsers: [{\n username: \"admin@hashicorptest.com\",\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster_basic = gcp.gkeonprem.BareMetalCluster(\"cluster-basic\",\n name=\"my-cluster\",\n location=\"us-west1\",\n admin_cluster_membership=\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n bare_metal_version=\"1.12.3\",\n network_config={\n \"island_mode_cidr\": {\n \"service_address_cidr_blocks\": [\"172.26.0.0/16\"],\n \"pod_address_cidr_blocks\": [\"10.240.0.0/13\"],\n },\n },\n control_plane={\n \"control_plane_node_pool_config\": {\n \"node_pool_config\": {\n \"labels\": {},\n \"operating_system\": \"LINUX\",\n \"node_configs\": [{\n \"labels\": {},\n \"node_ip\": \"10.200.0.9\",\n }],\n },\n },\n },\n load_balancer={\n \"port_config\": {\n \"control_plane_load_balancer_port\": 443,\n },\n \"vip_config\": {\n \"control_plane_vip\": \"10.200.0.13\",\n \"ingress_vip\": \"10.200.0.14\",\n },\n \"metal_lb_config\": {\n \"address_pools\": [{\n \"pool\": \"pool1\",\n \"addresses\": [\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n ],\n \"avoid_buggy_ips\": True,\n \"manual_assign\": True,\n }],\n },\n },\n storage={\n \"lvp_share_config\": {\n \"lvp_config\": {\n \"path\": \"/mnt/localpv-share\",\n \"storage_class\": \"local-shared\",\n },\n \"shared_path_pv_count\": 5,\n },\n \"lvp_node_mounts_config\": {\n \"path\": \"/mnt/localpv-disk\",\n \"storage_class\": \"local-disks\",\n },\n },\n security_config={\n \"authorization\": {\n \"admin_users\": [{\n \"username\": \"admin@hashicorptest.com\",\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cluster_basic = new Gcp.GkeOnPrem.BareMetalCluster(\"cluster-basic\", new()\n {\n Name = \"my-cluster\",\n Location = \"us-west1\",\n AdminClusterMembership = \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n BareMetalVersion = \"1.12.3\",\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigArgs\n {\n IslandModeCidr = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigIslandModeCidrArgs\n {\n ServiceAddressCidrBlocks = new[]\n {\n \"172.26.0.0/16\",\n },\n PodAddressCidrBlocks = new[]\n {\n \"10.240.0.0/13\",\n },\n },\n },\n ControlPlane = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneArgs\n {\n ControlPlaneNodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs\n {\n NodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs\n {\n Labels = null,\n OperatingSystem = \"LINUX\",\n NodeConfigs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.9\",\n },\n },\n },\n },\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerArgs\n {\n PortConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerPortConfigArgs\n {\n ControlPlaneLoadBalancerPort = 443,\n },\n VipConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.200.0.13\",\n IngressVip = \"10.200.0.14\",\n },\n MetalLbConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerMetalLbConfigArgs\n {\n AddressPools = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArgs\n {\n Pool = \"pool1\",\n Addresses = new[]\n {\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n },\n AvoidBuggyIps = true,\n ManualAssign = true,\n },\n },\n },\n },\n Storage = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageArgs\n {\n LvpShareConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpShareConfigArgs\n {\n LvpConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpShareConfigLvpConfigArgs\n {\n Path = \"/mnt/localpv-share\",\n StorageClass = \"local-shared\",\n },\n SharedPathPvCount = 5,\n },\n LvpNodeMountsConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpNodeMountsConfigArgs\n {\n Path = \"/mnt/localpv-disk\",\n StorageClass = \"local-disks\",\n },\n },\n SecurityConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigArgs\n {\n Authorization = new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigAuthorizationAdminUserArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkeonprem\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gkeonprem.NewBareMetalCluster(ctx, \"cluster-basic\", \u0026gkeonprem.BareMetalClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tAdminClusterMembership: pulumi.String(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\"),\n\t\t\tBareMetalVersion: pulumi.String(\"1.12.3\"),\n\t\t\tNetworkConfig: \u0026gkeonprem.BareMetalClusterNetworkConfigArgs{\n\t\t\t\tIslandModeCidr: \u0026gkeonprem.BareMetalClusterNetworkConfigIslandModeCidrArgs{\n\t\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"172.26.0.0/16\"),\n\t\t\t\t\t},\n\t\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.240.0.0/13\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tControlPlane: \u0026gkeonprem.BareMetalClusterControlPlaneArgs{\n\t\t\t\tControlPlaneNodePoolConfig: \u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs{\n\t\t\t\t\tNodePoolConfig: \u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs{\n\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\tOperatingSystem: pulumi.String(\"LINUX\"),\n\t\t\t\t\t\tNodeConfigs: gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArray{\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.9\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLoadBalancer: \u0026gkeonprem.BareMetalClusterLoadBalancerArgs{\n\t\t\t\tPortConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerPortConfigArgs{\n\t\t\t\t\tControlPlaneLoadBalancerPort: pulumi.Int(443),\n\t\t\t\t},\n\t\t\t\tVipConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.200.0.13\"),\n\t\t\t\t\tIngressVip: pulumi.String(\"10.200.0.14\"),\n\t\t\t\t},\n\t\t\t\tMetalLbConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerMetalLbConfigArgs{\n\t\t\t\t\tAddressPools: gkeonprem.BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArray{\n\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArgs{\n\t\t\t\t\t\t\tPool: pulumi.String(\"pool1\"),\n\t\t\t\t\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.14/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.15/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.16/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.17/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.18/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::f/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::10/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::11/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::12/128\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAvoidBuggyIps: pulumi.Bool(true),\n\t\t\t\t\t\t\tManualAssign: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tStorage: \u0026gkeonprem.BareMetalClusterStorageArgs{\n\t\t\t\tLvpShareConfig: \u0026gkeonprem.BareMetalClusterStorageLvpShareConfigArgs{\n\t\t\t\t\tLvpConfig: \u0026gkeonprem.BareMetalClusterStorageLvpShareConfigLvpConfigArgs{\n\t\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-share\"),\n\t\t\t\t\t\tStorageClass: pulumi.String(\"local-shared\"),\n\t\t\t\t\t},\n\t\t\t\t\tSharedPathPvCount: pulumi.Int(5),\n\t\t\t\t},\n\t\t\t\tLvpNodeMountsConfig: \u0026gkeonprem.BareMetalClusterStorageLvpNodeMountsConfigArgs{\n\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-disk\"),\n\t\t\t\t\tStorageClass: pulumi.String(\"local-disks\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSecurityConfig: \u0026gkeonprem.BareMetalClusterSecurityConfigArgs{\n\t\t\t\tAuthorization: \u0026gkeonprem.BareMetalClusterSecurityConfigAuthorizationArgs{\n\t\t\t\t\tAdminUsers: gkeonprem.BareMetalClusterSecurityConfigAuthorizationAdminUserArray{\n\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterSecurityConfigAuthorizationAdminUserArgs{\n\t\t\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkeonprem.BareMetalCluster;\nimport com.pulumi.gcp.gkeonprem.BareMetalClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigIslandModeCidrArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerPortConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerMetalLbConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpShareConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpShareConfigLvpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpNodeMountsConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterSecurityConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterSecurityConfigAuthorizationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cluster_basic = new BareMetalCluster(\"cluster-basic\", BareMetalClusterArgs.builder()\n .name(\"my-cluster\")\n .location(\"us-west1\")\n .adminClusterMembership(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\")\n .bareMetalVersion(\"1.12.3\")\n .networkConfig(BareMetalClusterNetworkConfigArgs.builder()\n .islandModeCidr(BareMetalClusterNetworkConfigIslandModeCidrArgs.builder()\n .serviceAddressCidrBlocks(\"172.26.0.0/16\")\n .podAddressCidrBlocks(\"10.240.0.0/13\")\n .build())\n .build())\n .controlPlane(BareMetalClusterControlPlaneArgs.builder()\n .controlPlaneNodePoolConfig(BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs.builder()\n .nodePoolConfig(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs.builder()\n .labels()\n .operatingSystem(\"LINUX\")\n .nodeConfigs(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.9\")\n .build())\n .build())\n .build())\n .build())\n .loadBalancer(BareMetalClusterLoadBalancerArgs.builder()\n .portConfig(BareMetalClusterLoadBalancerPortConfigArgs.builder()\n .controlPlaneLoadBalancerPort(443)\n .build())\n .vipConfig(BareMetalClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.200.0.13\")\n .ingressVip(\"10.200.0.14\")\n .build())\n .metalLbConfig(BareMetalClusterLoadBalancerMetalLbConfigArgs.builder()\n .addressPools(BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArgs.builder()\n .pool(\"pool1\")\n .addresses( \n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\")\n .avoidBuggyIps(true)\n .manualAssign(true)\n .build())\n .build())\n .build())\n .storage(BareMetalClusterStorageArgs.builder()\n .lvpShareConfig(BareMetalClusterStorageLvpShareConfigArgs.builder()\n .lvpConfig(BareMetalClusterStorageLvpShareConfigLvpConfigArgs.builder()\n .path(\"/mnt/localpv-share\")\n .storageClass(\"local-shared\")\n .build())\n .sharedPathPvCount(5)\n .build())\n .lvpNodeMountsConfig(BareMetalClusterStorageLvpNodeMountsConfigArgs.builder()\n .path(\"/mnt/localpv-disk\")\n .storageClass(\"local-disks\")\n .build())\n .build())\n .securityConfig(BareMetalClusterSecurityConfigArgs.builder()\n .authorization(BareMetalClusterSecurityConfigAuthorizationArgs.builder()\n .adminUsers(BareMetalClusterSecurityConfigAuthorizationAdminUserArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster-basic:\n type: gcp:gkeonprem:BareMetalCluster\n properties:\n name: my-cluster\n location: us-west1\n adminClusterMembership: projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\n bareMetalVersion: 1.12.3\n networkConfig:\n islandModeCidr:\n serviceAddressCidrBlocks:\n - 172.26.0.0/16\n podAddressCidrBlocks:\n - 10.240.0.0/13\n controlPlane:\n controlPlaneNodePoolConfig:\n nodePoolConfig:\n labels: {}\n operatingSystem: LINUX\n nodeConfigs:\n - labels: {}\n nodeIp: 10.200.0.9\n loadBalancer:\n portConfig:\n controlPlaneLoadBalancerPort: 443\n vipConfig:\n controlPlaneVip: 10.200.0.13\n ingressVip: 10.200.0.14\n metalLbConfig:\n addressPools:\n - pool: pool1\n addresses:\n - 10.200.0.14/32\n - 10.200.0.15/32\n - 10.200.0.16/32\n - 10.200.0.17/32\n - 10.200.0.18/32\n - fd00:1::f/128\n - fd00:1::10/128\n - fd00:1::11/128\n - fd00:1::12/128\n avoidBuggyIps: true\n manualAssign: true\n storage:\n lvpShareConfig:\n lvpConfig:\n path: /mnt/localpv-share\n storageClass: local-shared\n sharedPathPvCount: 5\n lvpNodeMountsConfig:\n path: /mnt/localpv-disk\n storageClass: local-disks\n securityConfig:\n authorization:\n adminUsers:\n - username: admin@hashicorptest.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkeonprem Bare Metal Cluster Manuallb\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster_manuallb = new gcp.gkeonprem.BareMetalCluster(\"cluster-manuallb\", {\n name: \"cluster-manuallb\",\n location: \"us-west1\",\n adminClusterMembership: \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n bareMetalVersion: \"1.12.3\",\n networkConfig: {\n islandModeCidr: {\n serviceAddressCidrBlocks: [\"172.26.0.0/16\"],\n podAddressCidrBlocks: [\"10.240.0.0/13\"],\n },\n },\n controlPlane: {\n controlPlaneNodePoolConfig: {\n nodePoolConfig: {\n labels: {},\n operatingSystem: \"LINUX\",\n nodeConfigs: [{\n labels: {},\n nodeIp: \"10.200.0.9\",\n }],\n },\n },\n },\n loadBalancer: {\n portConfig: {\n controlPlaneLoadBalancerPort: 443,\n },\n vipConfig: {\n controlPlaneVip: \"10.200.0.13\",\n ingressVip: \"10.200.0.14\",\n },\n manualLbConfig: {\n enabled: true,\n },\n },\n storage: {\n lvpShareConfig: {\n lvpConfig: {\n path: \"/mnt/localpv-share\",\n storageClass: \"local-shared\",\n },\n sharedPathPvCount: 5,\n },\n lvpNodeMountsConfig: {\n path: \"/mnt/localpv-disk\",\n storageClass: \"local-disks\",\n },\n },\n securityConfig: {\n authorization: {\n adminUsers: [{\n username: \"admin@hashicorptest.com\",\n }],\n },\n },\n binaryAuthorization: {\n evaluationMode: \"DISABLED\",\n },\n upgradePolicy: {\n policy: \"SERIAL\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster_manuallb = gcp.gkeonprem.BareMetalCluster(\"cluster-manuallb\",\n name=\"cluster-manuallb\",\n location=\"us-west1\",\n admin_cluster_membership=\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n bare_metal_version=\"1.12.3\",\n network_config={\n \"island_mode_cidr\": {\n \"service_address_cidr_blocks\": [\"172.26.0.0/16\"],\n \"pod_address_cidr_blocks\": [\"10.240.0.0/13\"],\n },\n },\n control_plane={\n \"control_plane_node_pool_config\": {\n \"node_pool_config\": {\n \"labels\": {},\n \"operating_system\": \"LINUX\",\n \"node_configs\": [{\n \"labels\": {},\n \"node_ip\": \"10.200.0.9\",\n }],\n },\n },\n },\n load_balancer={\n \"port_config\": {\n \"control_plane_load_balancer_port\": 443,\n },\n \"vip_config\": {\n \"control_plane_vip\": \"10.200.0.13\",\n \"ingress_vip\": \"10.200.0.14\",\n },\n \"manual_lb_config\": {\n \"enabled\": True,\n },\n },\n storage={\n \"lvp_share_config\": {\n \"lvp_config\": {\n \"path\": \"/mnt/localpv-share\",\n \"storage_class\": \"local-shared\",\n },\n \"shared_path_pv_count\": 5,\n },\n \"lvp_node_mounts_config\": {\n \"path\": \"/mnt/localpv-disk\",\n \"storage_class\": \"local-disks\",\n },\n },\n security_config={\n \"authorization\": {\n \"admin_users\": [{\n \"username\": \"admin@hashicorptest.com\",\n }],\n },\n },\n binary_authorization={\n \"evaluation_mode\": \"DISABLED\",\n },\n upgrade_policy={\n \"policy\": \"SERIAL\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cluster_manuallb = new Gcp.GkeOnPrem.BareMetalCluster(\"cluster-manuallb\", new()\n {\n Name = \"cluster-manuallb\",\n Location = \"us-west1\",\n AdminClusterMembership = \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n BareMetalVersion = \"1.12.3\",\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigArgs\n {\n IslandModeCidr = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigIslandModeCidrArgs\n {\n ServiceAddressCidrBlocks = new[]\n {\n \"172.26.0.0/16\",\n },\n PodAddressCidrBlocks = new[]\n {\n \"10.240.0.0/13\",\n },\n },\n },\n ControlPlane = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneArgs\n {\n ControlPlaneNodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs\n {\n NodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs\n {\n Labels = null,\n OperatingSystem = \"LINUX\",\n NodeConfigs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.9\",\n },\n },\n },\n },\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerArgs\n {\n PortConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerPortConfigArgs\n {\n ControlPlaneLoadBalancerPort = 443,\n },\n VipConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.200.0.13\",\n IngressVip = \"10.200.0.14\",\n },\n ManualLbConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerManualLbConfigArgs\n {\n Enabled = true,\n },\n },\n Storage = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageArgs\n {\n LvpShareConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpShareConfigArgs\n {\n LvpConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpShareConfigLvpConfigArgs\n {\n Path = \"/mnt/localpv-share\",\n StorageClass = \"local-shared\",\n },\n SharedPathPvCount = 5,\n },\n LvpNodeMountsConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpNodeMountsConfigArgs\n {\n Path = \"/mnt/localpv-disk\",\n StorageClass = \"local-disks\",\n },\n },\n SecurityConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigArgs\n {\n Authorization = new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigAuthorizationAdminUserArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n },\n },\n BinaryAuthorization = new Gcp.GkeOnPrem.Inputs.BareMetalClusterBinaryAuthorizationArgs\n {\n EvaluationMode = \"DISABLED\",\n },\n UpgradePolicy = new Gcp.GkeOnPrem.Inputs.BareMetalClusterUpgradePolicyArgs\n {\n Policy = \"SERIAL\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkeonprem\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gkeonprem.NewBareMetalCluster(ctx, \"cluster-manuallb\", \u0026gkeonprem.BareMetalClusterArgs{\n\t\t\tName: pulumi.String(\"cluster-manuallb\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tAdminClusterMembership: pulumi.String(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\"),\n\t\t\tBareMetalVersion: pulumi.String(\"1.12.3\"),\n\t\t\tNetworkConfig: \u0026gkeonprem.BareMetalClusterNetworkConfigArgs{\n\t\t\t\tIslandModeCidr: \u0026gkeonprem.BareMetalClusterNetworkConfigIslandModeCidrArgs{\n\t\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"172.26.0.0/16\"),\n\t\t\t\t\t},\n\t\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.240.0.0/13\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tControlPlane: \u0026gkeonprem.BareMetalClusterControlPlaneArgs{\n\t\t\t\tControlPlaneNodePoolConfig: \u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs{\n\t\t\t\t\tNodePoolConfig: \u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs{\n\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\tOperatingSystem: pulumi.String(\"LINUX\"),\n\t\t\t\t\t\tNodeConfigs: gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArray{\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.9\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLoadBalancer: \u0026gkeonprem.BareMetalClusterLoadBalancerArgs{\n\t\t\t\tPortConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerPortConfigArgs{\n\t\t\t\t\tControlPlaneLoadBalancerPort: pulumi.Int(443),\n\t\t\t\t},\n\t\t\t\tVipConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.200.0.13\"),\n\t\t\t\t\tIngressVip: pulumi.String(\"10.200.0.14\"),\n\t\t\t\t},\n\t\t\t\tManualLbConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerManualLbConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tStorage: \u0026gkeonprem.BareMetalClusterStorageArgs{\n\t\t\t\tLvpShareConfig: \u0026gkeonprem.BareMetalClusterStorageLvpShareConfigArgs{\n\t\t\t\t\tLvpConfig: \u0026gkeonprem.BareMetalClusterStorageLvpShareConfigLvpConfigArgs{\n\t\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-share\"),\n\t\t\t\t\t\tStorageClass: pulumi.String(\"local-shared\"),\n\t\t\t\t\t},\n\t\t\t\t\tSharedPathPvCount: pulumi.Int(5),\n\t\t\t\t},\n\t\t\t\tLvpNodeMountsConfig: \u0026gkeonprem.BareMetalClusterStorageLvpNodeMountsConfigArgs{\n\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-disk\"),\n\t\t\t\t\tStorageClass: pulumi.String(\"local-disks\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSecurityConfig: \u0026gkeonprem.BareMetalClusterSecurityConfigArgs{\n\t\t\t\tAuthorization: \u0026gkeonprem.BareMetalClusterSecurityConfigAuthorizationArgs{\n\t\t\t\t\tAdminUsers: gkeonprem.BareMetalClusterSecurityConfigAuthorizationAdminUserArray{\n\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterSecurityConfigAuthorizationAdminUserArgs{\n\t\t\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBinaryAuthorization: \u0026gkeonprem.BareMetalClusterBinaryAuthorizationArgs{\n\t\t\t\tEvaluationMode: pulumi.String(\"DISABLED\"),\n\t\t\t},\n\t\t\tUpgradePolicy: \u0026gkeonprem.BareMetalClusterUpgradePolicyArgs{\n\t\t\t\tPolicy: pulumi.String(\"SERIAL\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkeonprem.BareMetalCluster;\nimport com.pulumi.gcp.gkeonprem.BareMetalClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigIslandModeCidrArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerPortConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerManualLbConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpShareConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpShareConfigLvpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpNodeMountsConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterSecurityConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterSecurityConfigAuthorizationArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterBinaryAuthorizationArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterUpgradePolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cluster_manuallb = new BareMetalCluster(\"cluster-manuallb\", BareMetalClusterArgs.builder()\n .name(\"cluster-manuallb\")\n .location(\"us-west1\")\n .adminClusterMembership(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\")\n .bareMetalVersion(\"1.12.3\")\n .networkConfig(BareMetalClusterNetworkConfigArgs.builder()\n .islandModeCidr(BareMetalClusterNetworkConfigIslandModeCidrArgs.builder()\n .serviceAddressCidrBlocks(\"172.26.0.0/16\")\n .podAddressCidrBlocks(\"10.240.0.0/13\")\n .build())\n .build())\n .controlPlane(BareMetalClusterControlPlaneArgs.builder()\n .controlPlaneNodePoolConfig(BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs.builder()\n .nodePoolConfig(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs.builder()\n .labels()\n .operatingSystem(\"LINUX\")\n .nodeConfigs(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.9\")\n .build())\n .build())\n .build())\n .build())\n .loadBalancer(BareMetalClusterLoadBalancerArgs.builder()\n .portConfig(BareMetalClusterLoadBalancerPortConfigArgs.builder()\n .controlPlaneLoadBalancerPort(443)\n .build())\n .vipConfig(BareMetalClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.200.0.13\")\n .ingressVip(\"10.200.0.14\")\n .build())\n .manualLbConfig(BareMetalClusterLoadBalancerManualLbConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .storage(BareMetalClusterStorageArgs.builder()\n .lvpShareConfig(BareMetalClusterStorageLvpShareConfigArgs.builder()\n .lvpConfig(BareMetalClusterStorageLvpShareConfigLvpConfigArgs.builder()\n .path(\"/mnt/localpv-share\")\n .storageClass(\"local-shared\")\n .build())\n .sharedPathPvCount(5)\n .build())\n .lvpNodeMountsConfig(BareMetalClusterStorageLvpNodeMountsConfigArgs.builder()\n .path(\"/mnt/localpv-disk\")\n .storageClass(\"local-disks\")\n .build())\n .build())\n .securityConfig(BareMetalClusterSecurityConfigArgs.builder()\n .authorization(BareMetalClusterSecurityConfigAuthorizationArgs.builder()\n .adminUsers(BareMetalClusterSecurityConfigAuthorizationAdminUserArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .build())\n .binaryAuthorization(BareMetalClusterBinaryAuthorizationArgs.builder()\n .evaluationMode(\"DISABLED\")\n .build())\n .upgradePolicy(BareMetalClusterUpgradePolicyArgs.builder()\n .policy(\"SERIAL\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster-manuallb:\n type: gcp:gkeonprem:BareMetalCluster\n properties:\n name: cluster-manuallb\n location: us-west1\n adminClusterMembership: projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\n bareMetalVersion: 1.12.3\n networkConfig:\n islandModeCidr:\n serviceAddressCidrBlocks:\n - 172.26.0.0/16\n podAddressCidrBlocks:\n - 10.240.0.0/13\n controlPlane:\n controlPlaneNodePoolConfig:\n nodePoolConfig:\n labels: {}\n operatingSystem: LINUX\n nodeConfigs:\n - labels: {}\n nodeIp: 10.200.0.9\n loadBalancer:\n portConfig:\n controlPlaneLoadBalancerPort: 443\n vipConfig:\n controlPlaneVip: 10.200.0.13\n ingressVip: 10.200.0.14\n manualLbConfig:\n enabled: true\n storage:\n lvpShareConfig:\n lvpConfig:\n path: /mnt/localpv-share\n storageClass: local-shared\n sharedPathPvCount: 5\n lvpNodeMountsConfig:\n path: /mnt/localpv-disk\n storageClass: local-disks\n securityConfig:\n authorization:\n adminUsers:\n - username: admin@hashicorptest.com\n binaryAuthorization:\n evaluationMode: DISABLED\n upgradePolicy:\n policy: SERIAL\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkeonprem Bare Metal Cluster Bgplb\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster_bgplb = new gcp.gkeonprem.BareMetalCluster(\"cluster-bgplb\", {\n name: \"cluster-bgplb\",\n location: \"us-west1\",\n adminClusterMembership: \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n bareMetalVersion: \"1.12.3\",\n networkConfig: {\n islandModeCidr: {\n serviceAddressCidrBlocks: [\"172.26.0.0/16\"],\n podAddressCidrBlocks: [\"10.240.0.0/13\"],\n },\n advancedNetworking: true,\n multipleNetworkInterfacesConfig: {\n enabled: true,\n },\n srIovConfig: {\n enabled: true,\n },\n },\n controlPlane: {\n controlPlaneNodePoolConfig: {\n nodePoolConfig: {\n labels: {},\n operatingSystem: \"LINUX\",\n nodeConfigs: [{\n labels: {},\n nodeIp: \"10.200.0.9\",\n }],\n taints: [{\n key: \"test-key\",\n value: \"test-value\",\n effect: \"NO_EXECUTE\",\n }],\n },\n },\n apiServerArgs: [{\n argument: \"test-argument\",\n value: \"test-value\",\n }],\n },\n loadBalancer: {\n portConfig: {\n controlPlaneLoadBalancerPort: 443,\n },\n vipConfig: {\n controlPlaneVip: \"10.200.0.13\",\n ingressVip: \"10.200.0.14\",\n },\n bgpLbConfig: {\n asn: 123456,\n bgpPeerConfigs: [{\n asn: 123457,\n ipAddress: \"10.0.0.1\",\n controlPlaneNodes: [\"test-node\"],\n }],\n addressPools: [{\n pool: \"pool1\",\n addresses: [\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n ],\n }],\n loadBalancerNodePoolConfig: {\n nodePoolConfig: {\n labels: {},\n operatingSystem: \"LINUX\",\n nodeConfigs: [{\n labels: {},\n nodeIp: \"10.200.0.9\",\n }],\n taints: [{\n key: \"test-key\",\n value: \"test-value\",\n effect: \"NO_EXECUTE\",\n }],\n kubeletConfig: {\n registryPullQps: 10,\n registryBurst: 12,\n serializeImagePullsDisabled: true,\n },\n },\n },\n },\n },\n storage: {\n lvpShareConfig: {\n lvpConfig: {\n path: \"/mnt/localpv-share\",\n storageClass: \"local-shared\",\n },\n sharedPathPvCount: 5,\n },\n lvpNodeMountsConfig: {\n path: \"/mnt/localpv-disk\",\n storageClass: \"local-disks\",\n },\n },\n securityConfig: {\n authorization: {\n adminUsers: [{\n username: \"admin@hashicorptest.com\",\n }],\n },\n },\n proxy: {\n uri: \"http://test-domain/test\",\n noProxies: [\"127.0.0.1\"],\n },\n clusterOperations: {\n enableApplicationLogs: true,\n },\n maintenanceConfig: {\n maintenanceAddressCidrBlocks: [\"192.168.0.1/20\"],\n },\n nodeConfig: {\n maxPodsPerNode: 10,\n containerRuntime: \"CONTAINERD\",\n },\n nodeAccessConfig: {\n loginUser: \"test@example.com\",\n },\n osEnvironmentConfig: {\n packageRepoExcluded: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster_bgplb = gcp.gkeonprem.BareMetalCluster(\"cluster-bgplb\",\n name=\"cluster-bgplb\",\n location=\"us-west1\",\n admin_cluster_membership=\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n bare_metal_version=\"1.12.3\",\n network_config={\n \"island_mode_cidr\": {\n \"service_address_cidr_blocks\": [\"172.26.0.0/16\"],\n \"pod_address_cidr_blocks\": [\"10.240.0.0/13\"],\n },\n \"advanced_networking\": True,\n \"multiple_network_interfaces_config\": {\n \"enabled\": True,\n },\n \"sr_iov_config\": {\n \"enabled\": True,\n },\n },\n control_plane={\n \"control_plane_node_pool_config\": {\n \"node_pool_config\": {\n \"labels\": {},\n \"operating_system\": \"LINUX\",\n \"node_configs\": [{\n \"labels\": {},\n \"node_ip\": \"10.200.0.9\",\n }],\n \"taints\": [{\n \"key\": \"test-key\",\n \"value\": \"test-value\",\n \"effect\": \"NO_EXECUTE\",\n }],\n },\n },\n \"api_server_args\": [{\n \"argument\": \"test-argument\",\n \"value\": \"test-value\",\n }],\n },\n load_balancer={\n \"port_config\": {\n \"control_plane_load_balancer_port\": 443,\n },\n \"vip_config\": {\n \"control_plane_vip\": \"10.200.0.13\",\n \"ingress_vip\": \"10.200.0.14\",\n },\n \"bgp_lb_config\": {\n \"asn\": 123456,\n \"bgp_peer_configs\": [{\n \"asn\": 123457,\n \"ip_address\": \"10.0.0.1\",\n \"control_plane_nodes\": [\"test-node\"],\n }],\n \"address_pools\": [{\n \"pool\": \"pool1\",\n \"addresses\": [\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n ],\n }],\n \"load_balancer_node_pool_config\": {\n \"node_pool_config\": {\n \"labels\": {},\n \"operating_system\": \"LINUX\",\n \"node_configs\": [{\n \"labels\": {},\n \"node_ip\": \"10.200.0.9\",\n }],\n \"taints\": [{\n \"key\": \"test-key\",\n \"value\": \"test-value\",\n \"effect\": \"NO_EXECUTE\",\n }],\n \"kubelet_config\": {\n \"registry_pull_qps\": 10,\n \"registry_burst\": 12,\n \"serialize_image_pulls_disabled\": True,\n },\n },\n },\n },\n },\n storage={\n \"lvp_share_config\": {\n \"lvp_config\": {\n \"path\": \"/mnt/localpv-share\",\n \"storage_class\": \"local-shared\",\n },\n \"shared_path_pv_count\": 5,\n },\n \"lvp_node_mounts_config\": {\n \"path\": \"/mnt/localpv-disk\",\n \"storage_class\": \"local-disks\",\n },\n },\n security_config={\n \"authorization\": {\n \"admin_users\": [{\n \"username\": \"admin@hashicorptest.com\",\n }],\n },\n },\n proxy={\n \"uri\": \"http://test-domain/test\",\n \"no_proxies\": [\"127.0.0.1\"],\n },\n cluster_operations={\n \"enable_application_logs\": True,\n },\n maintenance_config={\n \"maintenance_address_cidr_blocks\": [\"192.168.0.1/20\"],\n },\n node_config={\n \"max_pods_per_node\": 10,\n \"container_runtime\": \"CONTAINERD\",\n },\n node_access_config={\n \"login_user\": \"test@example.com\",\n },\n os_environment_config={\n \"package_repo_excluded\": True,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cluster_bgplb = new Gcp.GkeOnPrem.BareMetalCluster(\"cluster-bgplb\", new()\n {\n Name = \"cluster-bgplb\",\n Location = \"us-west1\",\n AdminClusterMembership = \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n BareMetalVersion = \"1.12.3\",\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigArgs\n {\n IslandModeCidr = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigIslandModeCidrArgs\n {\n ServiceAddressCidrBlocks = new[]\n {\n \"172.26.0.0/16\",\n },\n PodAddressCidrBlocks = new[]\n {\n \"10.240.0.0/13\",\n },\n },\n AdvancedNetworking = true,\n MultipleNetworkInterfacesConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigMultipleNetworkInterfacesConfigArgs\n {\n Enabled = true,\n },\n SrIovConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigSrIovConfigArgs\n {\n Enabled = true,\n },\n },\n ControlPlane = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneArgs\n {\n ControlPlaneNodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs\n {\n NodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs\n {\n Labels = null,\n OperatingSystem = \"LINUX\",\n NodeConfigs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.9\",\n },\n },\n Taints = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigTaintArgs\n {\n Key = \"test-key\",\n Value = \"test-value\",\n Effect = \"NO_EXECUTE\",\n },\n },\n },\n },\n ApiServerArgs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneApiServerArgArgs\n {\n Argument = \"test-argument\",\n Value = \"test-value\",\n },\n },\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerArgs\n {\n PortConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerPortConfigArgs\n {\n ControlPlaneLoadBalancerPort = 443,\n },\n VipConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.200.0.13\",\n IngressVip = \"10.200.0.14\",\n },\n BgpLbConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerBgpLbConfigArgs\n {\n Asn = 123456,\n BgpPeerConfigs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerBgpLbConfigBgpPeerConfigArgs\n {\n Asn = 123457,\n IpAddress = \"10.0.0.1\",\n ControlPlaneNodes = new[]\n {\n \"test-node\",\n },\n },\n },\n AddressPools = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerBgpLbConfigAddressPoolArgs\n {\n Pool = \"pool1\",\n Addresses = new[]\n {\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n },\n },\n },\n LoadBalancerNodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigArgs\n {\n NodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigArgs\n {\n Labels = null,\n OperatingSystem = \"LINUX\",\n NodeConfigs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.9\",\n },\n },\n Taints = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigTaintArgs\n {\n Key = \"test-key\",\n Value = \"test-value\",\n Effect = \"NO_EXECUTE\",\n },\n },\n KubeletConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigKubeletConfigArgs\n {\n RegistryPullQps = 10,\n RegistryBurst = 12,\n SerializeImagePullsDisabled = true,\n },\n },\n },\n },\n },\n Storage = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageArgs\n {\n LvpShareConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpShareConfigArgs\n {\n LvpConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpShareConfigLvpConfigArgs\n {\n Path = \"/mnt/localpv-share\",\n StorageClass = \"local-shared\",\n },\n SharedPathPvCount = 5,\n },\n LvpNodeMountsConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpNodeMountsConfigArgs\n {\n Path = \"/mnt/localpv-disk\",\n StorageClass = \"local-disks\",\n },\n },\n SecurityConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigArgs\n {\n Authorization = new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigAuthorizationAdminUserArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n },\n },\n Proxy = new Gcp.GkeOnPrem.Inputs.BareMetalClusterProxyArgs\n {\n Uri = \"http://test-domain/test\",\n NoProxies = new[]\n {\n \"127.0.0.1\",\n },\n },\n ClusterOperations = new Gcp.GkeOnPrem.Inputs.BareMetalClusterClusterOperationsArgs\n {\n EnableApplicationLogs = true,\n },\n MaintenanceConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterMaintenanceConfigArgs\n {\n MaintenanceAddressCidrBlocks = new[]\n {\n \"192.168.0.1/20\",\n },\n },\n NodeConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNodeConfigArgs\n {\n MaxPodsPerNode = 10,\n ContainerRuntime = \"CONTAINERD\",\n },\n NodeAccessConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNodeAccessConfigArgs\n {\n LoginUser = \"test@example.com\",\n },\n OsEnvironmentConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterOsEnvironmentConfigArgs\n {\n PackageRepoExcluded = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkeonprem\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gkeonprem.NewBareMetalCluster(ctx, \"cluster-bgplb\", \u0026gkeonprem.BareMetalClusterArgs{\n\t\t\tName: pulumi.String(\"cluster-bgplb\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tAdminClusterMembership: pulumi.String(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\"),\n\t\t\tBareMetalVersion: pulumi.String(\"1.12.3\"),\n\t\t\tNetworkConfig: \u0026gkeonprem.BareMetalClusterNetworkConfigArgs{\n\t\t\t\tIslandModeCidr: \u0026gkeonprem.BareMetalClusterNetworkConfigIslandModeCidrArgs{\n\t\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"172.26.0.0/16\"),\n\t\t\t\t\t},\n\t\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.240.0.0/13\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAdvancedNetworking: pulumi.Bool(true),\n\t\t\t\tMultipleNetworkInterfacesConfig: \u0026gkeonprem.BareMetalClusterNetworkConfigMultipleNetworkInterfacesConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tSrIovConfig: \u0026gkeonprem.BareMetalClusterNetworkConfigSrIovConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tControlPlane: \u0026gkeonprem.BareMetalClusterControlPlaneArgs{\n\t\t\t\tControlPlaneNodePoolConfig: \u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs{\n\t\t\t\t\tNodePoolConfig: \u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs{\n\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\tOperatingSystem: pulumi.String(\"LINUX\"),\n\t\t\t\t\t\tNodeConfigs: gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArray{\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.9\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTaints: gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigTaintArray{\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigTaintArgs{\n\t\t\t\t\t\t\t\tKey: pulumi.String(\"test-key\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"test-value\"),\n\t\t\t\t\t\t\t\tEffect: pulumi.String(\"NO_EXECUTE\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tApiServerArgs: gkeonprem.BareMetalClusterControlPlaneApiServerArgArray{\n\t\t\t\t\t\u0026gkeonprem.BareMetalClusterControlPlaneApiServerArgArgs{\n\t\t\t\t\t\tArgument: pulumi.String(\"test-argument\"),\n\t\t\t\t\t\tValue: pulumi.String(\"test-value\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLoadBalancer: \u0026gkeonprem.BareMetalClusterLoadBalancerArgs{\n\t\t\t\tPortConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerPortConfigArgs{\n\t\t\t\t\tControlPlaneLoadBalancerPort: pulumi.Int(443),\n\t\t\t\t},\n\t\t\t\tVipConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.200.0.13\"),\n\t\t\t\t\tIngressVip: pulumi.String(\"10.200.0.14\"),\n\t\t\t\t},\n\t\t\t\tBgpLbConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigArgs{\n\t\t\t\t\tAsn: pulumi.Int(123456),\n\t\t\t\t\tBgpPeerConfigs: gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigBgpPeerConfigArray{\n\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigBgpPeerConfigArgs{\n\t\t\t\t\t\t\tAsn: pulumi.Int(123457),\n\t\t\t\t\t\t\tIpAddress: pulumi.String(\"10.0.0.1\"),\n\t\t\t\t\t\t\tControlPlaneNodes: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"test-node\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tAddressPools: gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigAddressPoolArray{\n\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigAddressPoolArgs{\n\t\t\t\t\t\t\tPool: pulumi.String(\"pool1\"),\n\t\t\t\t\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.14/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.15/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.16/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.17/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.18/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::f/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::10/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::11/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::12/128\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tLoadBalancerNodePoolConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigArgs{\n\t\t\t\t\t\tNodePoolConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigArgs{\n\t\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\t\tOperatingSystem: pulumi.String(\"LINUX\"),\n\t\t\t\t\t\t\tNodeConfigs: gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigNodeConfigArray{\n\t\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.9\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tTaints: gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigTaintArray{\n\t\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigTaintArgs{\n\t\t\t\t\t\t\t\t\tKey: pulumi.String(\"test-key\"),\n\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"test-value\"),\n\t\t\t\t\t\t\t\t\tEffect: pulumi.String(\"NO_EXECUTE\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tKubeletConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigKubeletConfigArgs{\n\t\t\t\t\t\t\t\tRegistryPullQps: pulumi.Int(10),\n\t\t\t\t\t\t\t\tRegistryBurst: pulumi.Int(12),\n\t\t\t\t\t\t\t\tSerializeImagePullsDisabled: pulumi.Bool(true),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tStorage: \u0026gkeonprem.BareMetalClusterStorageArgs{\n\t\t\t\tLvpShareConfig: \u0026gkeonprem.BareMetalClusterStorageLvpShareConfigArgs{\n\t\t\t\t\tLvpConfig: \u0026gkeonprem.BareMetalClusterStorageLvpShareConfigLvpConfigArgs{\n\t\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-share\"),\n\t\t\t\t\t\tStorageClass: pulumi.String(\"local-shared\"),\n\t\t\t\t\t},\n\t\t\t\t\tSharedPathPvCount: pulumi.Int(5),\n\t\t\t\t},\n\t\t\t\tLvpNodeMountsConfig: \u0026gkeonprem.BareMetalClusterStorageLvpNodeMountsConfigArgs{\n\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-disk\"),\n\t\t\t\t\tStorageClass: pulumi.String(\"local-disks\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSecurityConfig: \u0026gkeonprem.BareMetalClusterSecurityConfigArgs{\n\t\t\t\tAuthorization: \u0026gkeonprem.BareMetalClusterSecurityConfigAuthorizationArgs{\n\t\t\t\t\tAdminUsers: gkeonprem.BareMetalClusterSecurityConfigAuthorizationAdminUserArray{\n\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterSecurityConfigAuthorizationAdminUserArgs{\n\t\t\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tProxy: \u0026gkeonprem.BareMetalClusterProxyArgs{\n\t\t\t\tUri: pulumi.String(\"http://test-domain/test\"),\n\t\t\t\tNoProxies: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"127.0.0.1\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tClusterOperations: \u0026gkeonprem.BareMetalClusterClusterOperationsArgs{\n\t\t\t\tEnableApplicationLogs: pulumi.Bool(true),\n\t\t\t},\n\t\t\tMaintenanceConfig: \u0026gkeonprem.BareMetalClusterMaintenanceConfigArgs{\n\t\t\t\tMaintenanceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"192.168.0.1/20\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNodeConfig: \u0026gkeonprem.BareMetalClusterNodeConfigArgs{\n\t\t\t\tMaxPodsPerNode: pulumi.Int(10),\n\t\t\t\tContainerRuntime: pulumi.String(\"CONTAINERD\"),\n\t\t\t},\n\t\t\tNodeAccessConfig: \u0026gkeonprem.BareMetalClusterNodeAccessConfigArgs{\n\t\t\t\tLoginUser: pulumi.String(\"test@example.com\"),\n\t\t\t},\n\t\t\tOsEnvironmentConfig: \u0026gkeonprem.BareMetalClusterOsEnvironmentConfigArgs{\n\t\t\t\tPackageRepoExcluded: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkeonprem.BareMetalCluster;\nimport com.pulumi.gcp.gkeonprem.BareMetalClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigIslandModeCidrArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigMultipleNetworkInterfacesConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigSrIovConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerPortConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerBgpLbConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigKubeletConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpShareConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpShareConfigLvpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpNodeMountsConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterSecurityConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterSecurityConfigAuthorizationArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterProxyArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterClusterOperationsArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterMaintenanceConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNodeConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNodeAccessConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterOsEnvironmentConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cluster_bgplb = new BareMetalCluster(\"cluster-bgplb\", BareMetalClusterArgs.builder()\n .name(\"cluster-bgplb\")\n .location(\"us-west1\")\n .adminClusterMembership(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\")\n .bareMetalVersion(\"1.12.3\")\n .networkConfig(BareMetalClusterNetworkConfigArgs.builder()\n .islandModeCidr(BareMetalClusterNetworkConfigIslandModeCidrArgs.builder()\n .serviceAddressCidrBlocks(\"172.26.0.0/16\")\n .podAddressCidrBlocks(\"10.240.0.0/13\")\n .build())\n .advancedNetworking(true)\n .multipleNetworkInterfacesConfig(BareMetalClusterNetworkConfigMultipleNetworkInterfacesConfigArgs.builder()\n .enabled(true)\n .build())\n .srIovConfig(BareMetalClusterNetworkConfigSrIovConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .controlPlane(BareMetalClusterControlPlaneArgs.builder()\n .controlPlaneNodePoolConfig(BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs.builder()\n .nodePoolConfig(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs.builder()\n .labels()\n .operatingSystem(\"LINUX\")\n .nodeConfigs(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.9\")\n .build())\n .taints(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigTaintArgs.builder()\n .key(\"test-key\")\n .value(\"test-value\")\n .effect(\"NO_EXECUTE\")\n .build())\n .build())\n .build())\n .apiServerArgs(BareMetalClusterControlPlaneApiServerArgArgs.builder()\n .argument(\"test-argument\")\n .value(\"test-value\")\n .build())\n .build())\n .loadBalancer(BareMetalClusterLoadBalancerArgs.builder()\n .portConfig(BareMetalClusterLoadBalancerPortConfigArgs.builder()\n .controlPlaneLoadBalancerPort(443)\n .build())\n .vipConfig(BareMetalClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.200.0.13\")\n .ingressVip(\"10.200.0.14\")\n .build())\n .bgpLbConfig(BareMetalClusterLoadBalancerBgpLbConfigArgs.builder()\n .asn(123456)\n .bgpPeerConfigs(BareMetalClusterLoadBalancerBgpLbConfigBgpPeerConfigArgs.builder()\n .asn(123457)\n .ipAddress(\"10.0.0.1\")\n .controlPlaneNodes(\"test-node\")\n .build())\n .addressPools(BareMetalClusterLoadBalancerBgpLbConfigAddressPoolArgs.builder()\n .pool(\"pool1\")\n .addresses( \n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\")\n .build())\n .loadBalancerNodePoolConfig(BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigArgs.builder()\n .nodePoolConfig(BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigArgs.builder()\n .labels()\n .operatingSystem(\"LINUX\")\n .nodeConfigs(BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.9\")\n .build())\n .taints(BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigTaintArgs.builder()\n .key(\"test-key\")\n .value(\"test-value\")\n .effect(\"NO_EXECUTE\")\n .build())\n .kubeletConfig(BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigKubeletConfigArgs.builder()\n .registryPullQps(10)\n .registryBurst(12)\n .serializeImagePullsDisabled(true)\n .build())\n .build())\n .build())\n .build())\n .build())\n .storage(BareMetalClusterStorageArgs.builder()\n .lvpShareConfig(BareMetalClusterStorageLvpShareConfigArgs.builder()\n .lvpConfig(BareMetalClusterStorageLvpShareConfigLvpConfigArgs.builder()\n .path(\"/mnt/localpv-share\")\n .storageClass(\"local-shared\")\n .build())\n .sharedPathPvCount(5)\n .build())\n .lvpNodeMountsConfig(BareMetalClusterStorageLvpNodeMountsConfigArgs.builder()\n .path(\"/mnt/localpv-disk\")\n .storageClass(\"local-disks\")\n .build())\n .build())\n .securityConfig(BareMetalClusterSecurityConfigArgs.builder()\n .authorization(BareMetalClusterSecurityConfigAuthorizationArgs.builder()\n .adminUsers(BareMetalClusterSecurityConfigAuthorizationAdminUserArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .build())\n .proxy(BareMetalClusterProxyArgs.builder()\n .uri(\"http://test-domain/test\")\n .noProxies(\"127.0.0.1\")\n .build())\n .clusterOperations(BareMetalClusterClusterOperationsArgs.builder()\n .enableApplicationLogs(true)\n .build())\n .maintenanceConfig(BareMetalClusterMaintenanceConfigArgs.builder()\n .maintenanceAddressCidrBlocks(\"192.168.0.1/20\")\n .build())\n .nodeConfig(BareMetalClusterNodeConfigArgs.builder()\n .maxPodsPerNode(10)\n .containerRuntime(\"CONTAINERD\")\n .build())\n .nodeAccessConfig(BareMetalClusterNodeAccessConfigArgs.builder()\n .loginUser(\"test@example.com\")\n .build())\n .osEnvironmentConfig(BareMetalClusterOsEnvironmentConfigArgs.builder()\n .packageRepoExcluded(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster-bgplb:\n type: gcp:gkeonprem:BareMetalCluster\n properties:\n name: cluster-bgplb\n location: us-west1\n adminClusterMembership: projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\n bareMetalVersion: 1.12.3\n networkConfig:\n islandModeCidr:\n serviceAddressCidrBlocks:\n - 172.26.0.0/16\n podAddressCidrBlocks:\n - 10.240.0.0/13\n advancedNetworking: true\n multipleNetworkInterfacesConfig:\n enabled: true\n srIovConfig:\n enabled: true\n controlPlane:\n controlPlaneNodePoolConfig:\n nodePoolConfig:\n labels: {}\n operatingSystem: LINUX\n nodeConfigs:\n - labels: {}\n nodeIp: 10.200.0.9\n taints:\n - key: test-key\n value: test-value\n effect: NO_EXECUTE\n apiServerArgs:\n - argument: test-argument\n value: test-value\n loadBalancer:\n portConfig:\n controlPlaneLoadBalancerPort: 443\n vipConfig:\n controlPlaneVip: 10.200.0.13\n ingressVip: 10.200.0.14\n bgpLbConfig:\n asn: 123456\n bgpPeerConfigs:\n - asn: 123457\n ipAddress: 10.0.0.1\n controlPlaneNodes:\n - test-node\n addressPools:\n - pool: pool1\n addresses:\n - 10.200.0.14/32\n - 10.200.0.15/32\n - 10.200.0.16/32\n - 10.200.0.17/32\n - 10.200.0.18/32\n - fd00:1::f/128\n - fd00:1::10/128\n - fd00:1::11/128\n - fd00:1::12/128\n loadBalancerNodePoolConfig:\n nodePoolConfig:\n labels: {}\n operatingSystem: LINUX\n nodeConfigs:\n - labels: {}\n nodeIp: 10.200.0.9\n taints:\n - key: test-key\n value: test-value\n effect: NO_EXECUTE\n kubeletConfig:\n registryPullQps: 10\n registryBurst: 12\n serializeImagePullsDisabled: true\n storage:\n lvpShareConfig:\n lvpConfig:\n path: /mnt/localpv-share\n storageClass: local-shared\n sharedPathPvCount: 5\n lvpNodeMountsConfig:\n path: /mnt/localpv-disk\n storageClass: local-disks\n securityConfig:\n authorization:\n adminUsers:\n - username: admin@hashicorptest.com\n proxy:\n uri: http://test-domain/test\n noProxies:\n - 127.0.0.1\n clusterOperations:\n enableApplicationLogs: true\n maintenanceConfig:\n maintenanceAddressCidrBlocks:\n - 192.168.0.1/20\n nodeConfig:\n maxPodsPerNode: 10\n containerRuntime: CONTAINERD\n nodeAccessConfig:\n loginUser: test@example.com\n osEnvironmentConfig:\n packageRepoExcluded: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBareMetalCluster can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/bareMetalClusters/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, BareMetalCluster can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:gkeonprem/bareMetalCluster:BareMetalCluster default projects/{{project}}/locations/{{location}}/bareMetalClusters/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkeonprem/bareMetalCluster:BareMetalCluster default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkeonprem/bareMetalCluster:BareMetalCluster default {{location}}/{{name}}\n```\n\n", + "description": "A Google Bare Metal User Cluster.\n\n\n\n## Example Usage\n\n### Gkeonprem Bare Metal Cluster Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster_basic = new gcp.gkeonprem.BareMetalCluster(\"cluster-basic\", {\n name: \"my-cluster\",\n location: \"us-west1\",\n adminClusterMembership: \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n bareMetalVersion: \"1.12.3\",\n networkConfig: {\n islandModeCidr: {\n serviceAddressCidrBlocks: [\"172.26.0.0/16\"],\n podAddressCidrBlocks: [\"10.240.0.0/13\"],\n },\n },\n controlPlane: {\n controlPlaneNodePoolConfig: {\n nodePoolConfig: {\n labels: {},\n operatingSystem: \"LINUX\",\n nodeConfigs: [{\n labels: {},\n nodeIp: \"10.200.0.9\",\n }],\n },\n },\n },\n loadBalancer: {\n portConfig: {\n controlPlaneLoadBalancerPort: 443,\n },\n vipConfig: {\n controlPlaneVip: \"10.200.0.13\",\n ingressVip: \"10.200.0.14\",\n },\n metalLbConfig: {\n addressPools: [{\n pool: \"pool1\",\n addresses: [\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n ],\n avoidBuggyIps: true,\n manualAssign: true,\n }],\n },\n },\n storage: {\n lvpShareConfig: {\n lvpConfig: {\n path: \"/mnt/localpv-share\",\n storageClass: \"local-shared\",\n },\n sharedPathPvCount: 5,\n },\n lvpNodeMountsConfig: {\n path: \"/mnt/localpv-disk\",\n storageClass: \"local-disks\",\n },\n },\n securityConfig: {\n authorization: {\n adminUsers: [{\n username: \"admin@hashicorptest.com\",\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster_basic = gcp.gkeonprem.BareMetalCluster(\"cluster-basic\",\n name=\"my-cluster\",\n location=\"us-west1\",\n admin_cluster_membership=\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n bare_metal_version=\"1.12.3\",\n network_config={\n \"island_mode_cidr\": {\n \"service_address_cidr_blocks\": [\"172.26.0.0/16\"],\n \"pod_address_cidr_blocks\": [\"10.240.0.0/13\"],\n },\n },\n control_plane={\n \"control_plane_node_pool_config\": {\n \"node_pool_config\": {\n \"labels\": {},\n \"operating_system\": \"LINUX\",\n \"node_configs\": [{\n \"labels\": {},\n \"node_ip\": \"10.200.0.9\",\n }],\n },\n },\n },\n load_balancer={\n \"port_config\": {\n \"control_plane_load_balancer_port\": 443,\n },\n \"vip_config\": {\n \"control_plane_vip\": \"10.200.0.13\",\n \"ingress_vip\": \"10.200.0.14\",\n },\n \"metal_lb_config\": {\n \"address_pools\": [{\n \"pool\": \"pool1\",\n \"addresses\": [\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n ],\n \"avoid_buggy_ips\": True,\n \"manual_assign\": True,\n }],\n },\n },\n storage={\n \"lvp_share_config\": {\n \"lvp_config\": {\n \"path\": \"/mnt/localpv-share\",\n \"storage_class\": \"local-shared\",\n },\n \"shared_path_pv_count\": 5,\n },\n \"lvp_node_mounts_config\": {\n \"path\": \"/mnt/localpv-disk\",\n \"storage_class\": \"local-disks\",\n },\n },\n security_config={\n \"authorization\": {\n \"admin_users\": [{\n \"username\": \"admin@hashicorptest.com\",\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cluster_basic = new Gcp.GkeOnPrem.BareMetalCluster(\"cluster-basic\", new()\n {\n Name = \"my-cluster\",\n Location = \"us-west1\",\n AdminClusterMembership = \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n BareMetalVersion = \"1.12.3\",\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigArgs\n {\n IslandModeCidr = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigIslandModeCidrArgs\n {\n ServiceAddressCidrBlocks = new[]\n {\n \"172.26.0.0/16\",\n },\n PodAddressCidrBlocks = new[]\n {\n \"10.240.0.0/13\",\n },\n },\n },\n ControlPlane = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneArgs\n {\n ControlPlaneNodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs\n {\n NodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs\n {\n Labels = null,\n OperatingSystem = \"LINUX\",\n NodeConfigs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.9\",\n },\n },\n },\n },\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerArgs\n {\n PortConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerPortConfigArgs\n {\n ControlPlaneLoadBalancerPort = 443,\n },\n VipConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.200.0.13\",\n IngressVip = \"10.200.0.14\",\n },\n MetalLbConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerMetalLbConfigArgs\n {\n AddressPools = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArgs\n {\n Pool = \"pool1\",\n Addresses = new[]\n {\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n },\n AvoidBuggyIps = true,\n ManualAssign = true,\n },\n },\n },\n },\n Storage = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageArgs\n {\n LvpShareConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpShareConfigArgs\n {\n LvpConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpShareConfigLvpConfigArgs\n {\n Path = \"/mnt/localpv-share\",\n StorageClass = \"local-shared\",\n },\n SharedPathPvCount = 5,\n },\n LvpNodeMountsConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpNodeMountsConfigArgs\n {\n Path = \"/mnt/localpv-disk\",\n StorageClass = \"local-disks\",\n },\n },\n SecurityConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigArgs\n {\n Authorization = new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigAuthorizationAdminUserArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkeonprem\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gkeonprem.NewBareMetalCluster(ctx, \"cluster-basic\", \u0026gkeonprem.BareMetalClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tAdminClusterMembership: pulumi.String(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\"),\n\t\t\tBareMetalVersion: pulumi.String(\"1.12.3\"),\n\t\t\tNetworkConfig: \u0026gkeonprem.BareMetalClusterNetworkConfigArgs{\n\t\t\t\tIslandModeCidr: \u0026gkeonprem.BareMetalClusterNetworkConfigIslandModeCidrArgs{\n\t\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"172.26.0.0/16\"),\n\t\t\t\t\t},\n\t\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.240.0.0/13\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tControlPlane: \u0026gkeonprem.BareMetalClusterControlPlaneArgs{\n\t\t\t\tControlPlaneNodePoolConfig: \u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs{\n\t\t\t\t\tNodePoolConfig: \u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs{\n\t\t\t\t\t\tLabels: pulumi.StringMap{},\n\t\t\t\t\t\tOperatingSystem: pulumi.String(\"LINUX\"),\n\t\t\t\t\t\tNodeConfigs: gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArray{\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\tLabels: pulumi.StringMap{},\n\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.9\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLoadBalancer: \u0026gkeonprem.BareMetalClusterLoadBalancerArgs{\n\t\t\t\tPortConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerPortConfigArgs{\n\t\t\t\t\tControlPlaneLoadBalancerPort: pulumi.Int(443),\n\t\t\t\t},\n\t\t\t\tVipConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.200.0.13\"),\n\t\t\t\t\tIngressVip: pulumi.String(\"10.200.0.14\"),\n\t\t\t\t},\n\t\t\t\tMetalLbConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerMetalLbConfigArgs{\n\t\t\t\t\tAddressPools: gkeonprem.BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArray{\n\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArgs{\n\t\t\t\t\t\t\tPool: pulumi.String(\"pool1\"),\n\t\t\t\t\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.14/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.15/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.16/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.17/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.18/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::f/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::10/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::11/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::12/128\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAvoidBuggyIps: pulumi.Bool(true),\n\t\t\t\t\t\t\tManualAssign: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tStorage: \u0026gkeonprem.BareMetalClusterStorageArgs{\n\t\t\t\tLvpShareConfig: \u0026gkeonprem.BareMetalClusterStorageLvpShareConfigArgs{\n\t\t\t\t\tLvpConfig: \u0026gkeonprem.BareMetalClusterStorageLvpShareConfigLvpConfigArgs{\n\t\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-share\"),\n\t\t\t\t\t\tStorageClass: pulumi.String(\"local-shared\"),\n\t\t\t\t\t},\n\t\t\t\t\tSharedPathPvCount: pulumi.Int(5),\n\t\t\t\t},\n\t\t\t\tLvpNodeMountsConfig: \u0026gkeonprem.BareMetalClusterStorageLvpNodeMountsConfigArgs{\n\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-disk\"),\n\t\t\t\t\tStorageClass: pulumi.String(\"local-disks\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSecurityConfig: \u0026gkeonprem.BareMetalClusterSecurityConfigArgs{\n\t\t\t\tAuthorization: \u0026gkeonprem.BareMetalClusterSecurityConfigAuthorizationArgs{\n\t\t\t\t\tAdminUsers: gkeonprem.BareMetalClusterSecurityConfigAuthorizationAdminUserArray{\n\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterSecurityConfigAuthorizationAdminUserArgs{\n\t\t\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkeonprem.BareMetalCluster;\nimport com.pulumi.gcp.gkeonprem.BareMetalClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigIslandModeCidrArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerPortConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerMetalLbConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpShareConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpShareConfigLvpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpNodeMountsConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterSecurityConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterSecurityConfigAuthorizationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cluster_basic = new BareMetalCluster(\"cluster-basic\", BareMetalClusterArgs.builder()\n .name(\"my-cluster\")\n .location(\"us-west1\")\n .adminClusterMembership(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\")\n .bareMetalVersion(\"1.12.3\")\n .networkConfig(BareMetalClusterNetworkConfigArgs.builder()\n .islandModeCidr(BareMetalClusterNetworkConfigIslandModeCidrArgs.builder()\n .serviceAddressCidrBlocks(\"172.26.0.0/16\")\n .podAddressCidrBlocks(\"10.240.0.0/13\")\n .build())\n .build())\n .controlPlane(BareMetalClusterControlPlaneArgs.builder()\n .controlPlaneNodePoolConfig(BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs.builder()\n .nodePoolConfig(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs.builder()\n .labels()\n .operatingSystem(\"LINUX\")\n .nodeConfigs(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.9\")\n .build())\n .build())\n .build())\n .build())\n .loadBalancer(BareMetalClusterLoadBalancerArgs.builder()\n .portConfig(BareMetalClusterLoadBalancerPortConfigArgs.builder()\n .controlPlaneLoadBalancerPort(443)\n .build())\n .vipConfig(BareMetalClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.200.0.13\")\n .ingressVip(\"10.200.0.14\")\n .build())\n .metalLbConfig(BareMetalClusterLoadBalancerMetalLbConfigArgs.builder()\n .addressPools(BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArgs.builder()\n .pool(\"pool1\")\n .addresses( \n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\")\n .avoidBuggyIps(true)\n .manualAssign(true)\n .build())\n .build())\n .build())\n .storage(BareMetalClusterStorageArgs.builder()\n .lvpShareConfig(BareMetalClusterStorageLvpShareConfigArgs.builder()\n .lvpConfig(BareMetalClusterStorageLvpShareConfigLvpConfigArgs.builder()\n .path(\"/mnt/localpv-share\")\n .storageClass(\"local-shared\")\n .build())\n .sharedPathPvCount(5)\n .build())\n .lvpNodeMountsConfig(BareMetalClusterStorageLvpNodeMountsConfigArgs.builder()\n .path(\"/mnt/localpv-disk\")\n .storageClass(\"local-disks\")\n .build())\n .build())\n .securityConfig(BareMetalClusterSecurityConfigArgs.builder()\n .authorization(BareMetalClusterSecurityConfigAuthorizationArgs.builder()\n .adminUsers(BareMetalClusterSecurityConfigAuthorizationAdminUserArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster-basic:\n type: gcp:gkeonprem:BareMetalCluster\n properties:\n name: my-cluster\n location: us-west1\n adminClusterMembership: projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\n bareMetalVersion: 1.12.3\n networkConfig:\n islandModeCidr:\n serviceAddressCidrBlocks:\n - 172.26.0.0/16\n podAddressCidrBlocks:\n - 10.240.0.0/13\n controlPlane:\n controlPlaneNodePoolConfig:\n nodePoolConfig:\n labels: {}\n operatingSystem: LINUX\n nodeConfigs:\n - labels: {}\n nodeIp: 10.200.0.9\n loadBalancer:\n portConfig:\n controlPlaneLoadBalancerPort: 443\n vipConfig:\n controlPlaneVip: 10.200.0.13\n ingressVip: 10.200.0.14\n metalLbConfig:\n addressPools:\n - pool: pool1\n addresses:\n - 10.200.0.14/32\n - 10.200.0.15/32\n - 10.200.0.16/32\n - 10.200.0.17/32\n - 10.200.0.18/32\n - fd00:1::f/128\n - fd00:1::10/128\n - fd00:1::11/128\n - fd00:1::12/128\n avoidBuggyIps: true\n manualAssign: true\n storage:\n lvpShareConfig:\n lvpConfig:\n path: /mnt/localpv-share\n storageClass: local-shared\n sharedPathPvCount: 5\n lvpNodeMountsConfig:\n path: /mnt/localpv-disk\n storageClass: local-disks\n securityConfig:\n authorization:\n adminUsers:\n - username: admin@hashicorptest.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkeonprem Bare Metal Cluster Manuallb\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster_manuallb = new gcp.gkeonprem.BareMetalCluster(\"cluster-manuallb\", {\n name: \"cluster-manuallb\",\n location: \"us-west1\",\n adminClusterMembership: \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n bareMetalVersion: \"1.12.3\",\n networkConfig: {\n islandModeCidr: {\n serviceAddressCidrBlocks: [\"172.26.0.0/16\"],\n podAddressCidrBlocks: [\"10.240.0.0/13\"],\n },\n },\n controlPlane: {\n controlPlaneNodePoolConfig: {\n nodePoolConfig: {\n labels: {},\n operatingSystem: \"LINUX\",\n nodeConfigs: [{\n labels: {},\n nodeIp: \"10.200.0.9\",\n }],\n },\n },\n },\n loadBalancer: {\n portConfig: {\n controlPlaneLoadBalancerPort: 443,\n },\n vipConfig: {\n controlPlaneVip: \"10.200.0.13\",\n ingressVip: \"10.200.0.14\",\n },\n manualLbConfig: {\n enabled: true,\n },\n },\n storage: {\n lvpShareConfig: {\n lvpConfig: {\n path: \"/mnt/localpv-share\",\n storageClass: \"local-shared\",\n },\n sharedPathPvCount: 5,\n },\n lvpNodeMountsConfig: {\n path: \"/mnt/localpv-disk\",\n storageClass: \"local-disks\",\n },\n },\n securityConfig: {\n authorization: {\n adminUsers: [{\n username: \"admin@hashicorptest.com\",\n }],\n },\n },\n binaryAuthorization: {\n evaluationMode: \"DISABLED\",\n },\n upgradePolicy: {\n policy: \"SERIAL\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster_manuallb = gcp.gkeonprem.BareMetalCluster(\"cluster-manuallb\",\n name=\"cluster-manuallb\",\n location=\"us-west1\",\n admin_cluster_membership=\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n bare_metal_version=\"1.12.3\",\n network_config={\n \"island_mode_cidr\": {\n \"service_address_cidr_blocks\": [\"172.26.0.0/16\"],\n \"pod_address_cidr_blocks\": [\"10.240.0.0/13\"],\n },\n },\n control_plane={\n \"control_plane_node_pool_config\": {\n \"node_pool_config\": {\n \"labels\": {},\n \"operating_system\": \"LINUX\",\n \"node_configs\": [{\n \"labels\": {},\n \"node_ip\": \"10.200.0.9\",\n }],\n },\n },\n },\n load_balancer={\n \"port_config\": {\n \"control_plane_load_balancer_port\": 443,\n },\n \"vip_config\": {\n \"control_plane_vip\": \"10.200.0.13\",\n \"ingress_vip\": \"10.200.0.14\",\n },\n \"manual_lb_config\": {\n \"enabled\": True,\n },\n },\n storage={\n \"lvp_share_config\": {\n \"lvp_config\": {\n \"path\": \"/mnt/localpv-share\",\n \"storage_class\": \"local-shared\",\n },\n \"shared_path_pv_count\": 5,\n },\n \"lvp_node_mounts_config\": {\n \"path\": \"/mnt/localpv-disk\",\n \"storage_class\": \"local-disks\",\n },\n },\n security_config={\n \"authorization\": {\n \"admin_users\": [{\n \"username\": \"admin@hashicorptest.com\",\n }],\n },\n },\n binary_authorization={\n \"evaluation_mode\": \"DISABLED\",\n },\n upgrade_policy={\n \"policy\": \"SERIAL\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cluster_manuallb = new Gcp.GkeOnPrem.BareMetalCluster(\"cluster-manuallb\", new()\n {\n Name = \"cluster-manuallb\",\n Location = \"us-west1\",\n AdminClusterMembership = \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n BareMetalVersion = \"1.12.3\",\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigArgs\n {\n IslandModeCidr = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigIslandModeCidrArgs\n {\n ServiceAddressCidrBlocks = new[]\n {\n \"172.26.0.0/16\",\n },\n PodAddressCidrBlocks = new[]\n {\n \"10.240.0.0/13\",\n },\n },\n },\n ControlPlane = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneArgs\n {\n ControlPlaneNodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs\n {\n NodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs\n {\n Labels = null,\n OperatingSystem = \"LINUX\",\n NodeConfigs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.9\",\n },\n },\n },\n },\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerArgs\n {\n PortConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerPortConfigArgs\n {\n ControlPlaneLoadBalancerPort = 443,\n },\n VipConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.200.0.13\",\n IngressVip = \"10.200.0.14\",\n },\n ManualLbConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerManualLbConfigArgs\n {\n Enabled = true,\n },\n },\n Storage = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageArgs\n {\n LvpShareConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpShareConfigArgs\n {\n LvpConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpShareConfigLvpConfigArgs\n {\n Path = \"/mnt/localpv-share\",\n StorageClass = \"local-shared\",\n },\n SharedPathPvCount = 5,\n },\n LvpNodeMountsConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpNodeMountsConfigArgs\n {\n Path = \"/mnt/localpv-disk\",\n StorageClass = \"local-disks\",\n },\n },\n SecurityConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigArgs\n {\n Authorization = new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigAuthorizationAdminUserArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n },\n },\n BinaryAuthorization = new Gcp.GkeOnPrem.Inputs.BareMetalClusterBinaryAuthorizationArgs\n {\n EvaluationMode = \"DISABLED\",\n },\n UpgradePolicy = new Gcp.GkeOnPrem.Inputs.BareMetalClusterUpgradePolicyArgs\n {\n Policy = \"SERIAL\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkeonprem\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gkeonprem.NewBareMetalCluster(ctx, \"cluster-manuallb\", \u0026gkeonprem.BareMetalClusterArgs{\n\t\t\tName: pulumi.String(\"cluster-manuallb\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tAdminClusterMembership: pulumi.String(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\"),\n\t\t\tBareMetalVersion: pulumi.String(\"1.12.3\"),\n\t\t\tNetworkConfig: \u0026gkeonprem.BareMetalClusterNetworkConfigArgs{\n\t\t\t\tIslandModeCidr: \u0026gkeonprem.BareMetalClusterNetworkConfigIslandModeCidrArgs{\n\t\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"172.26.0.0/16\"),\n\t\t\t\t\t},\n\t\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.240.0.0/13\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tControlPlane: \u0026gkeonprem.BareMetalClusterControlPlaneArgs{\n\t\t\t\tControlPlaneNodePoolConfig: \u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs{\n\t\t\t\t\tNodePoolConfig: \u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs{\n\t\t\t\t\t\tLabels: pulumi.StringMap{},\n\t\t\t\t\t\tOperatingSystem: pulumi.String(\"LINUX\"),\n\t\t\t\t\t\tNodeConfigs: gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArray{\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\tLabels: pulumi.StringMap{},\n\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.9\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLoadBalancer: \u0026gkeonprem.BareMetalClusterLoadBalancerArgs{\n\t\t\t\tPortConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerPortConfigArgs{\n\t\t\t\t\tControlPlaneLoadBalancerPort: pulumi.Int(443),\n\t\t\t\t},\n\t\t\t\tVipConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.200.0.13\"),\n\t\t\t\t\tIngressVip: pulumi.String(\"10.200.0.14\"),\n\t\t\t\t},\n\t\t\t\tManualLbConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerManualLbConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tStorage: \u0026gkeonprem.BareMetalClusterStorageArgs{\n\t\t\t\tLvpShareConfig: \u0026gkeonprem.BareMetalClusterStorageLvpShareConfigArgs{\n\t\t\t\t\tLvpConfig: \u0026gkeonprem.BareMetalClusterStorageLvpShareConfigLvpConfigArgs{\n\t\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-share\"),\n\t\t\t\t\t\tStorageClass: pulumi.String(\"local-shared\"),\n\t\t\t\t\t},\n\t\t\t\t\tSharedPathPvCount: pulumi.Int(5),\n\t\t\t\t},\n\t\t\t\tLvpNodeMountsConfig: \u0026gkeonprem.BareMetalClusterStorageLvpNodeMountsConfigArgs{\n\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-disk\"),\n\t\t\t\t\tStorageClass: pulumi.String(\"local-disks\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSecurityConfig: \u0026gkeonprem.BareMetalClusterSecurityConfigArgs{\n\t\t\t\tAuthorization: \u0026gkeonprem.BareMetalClusterSecurityConfigAuthorizationArgs{\n\t\t\t\t\tAdminUsers: gkeonprem.BareMetalClusterSecurityConfigAuthorizationAdminUserArray{\n\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterSecurityConfigAuthorizationAdminUserArgs{\n\t\t\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBinaryAuthorization: \u0026gkeonprem.BareMetalClusterBinaryAuthorizationArgs{\n\t\t\t\tEvaluationMode: pulumi.String(\"DISABLED\"),\n\t\t\t},\n\t\t\tUpgradePolicy: \u0026gkeonprem.BareMetalClusterUpgradePolicyArgs{\n\t\t\t\tPolicy: pulumi.String(\"SERIAL\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkeonprem.BareMetalCluster;\nimport com.pulumi.gcp.gkeonprem.BareMetalClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigIslandModeCidrArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerPortConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerManualLbConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpShareConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpShareConfigLvpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpNodeMountsConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterSecurityConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterSecurityConfigAuthorizationArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterBinaryAuthorizationArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterUpgradePolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cluster_manuallb = new BareMetalCluster(\"cluster-manuallb\", BareMetalClusterArgs.builder()\n .name(\"cluster-manuallb\")\n .location(\"us-west1\")\n .adminClusterMembership(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\")\n .bareMetalVersion(\"1.12.3\")\n .networkConfig(BareMetalClusterNetworkConfigArgs.builder()\n .islandModeCidr(BareMetalClusterNetworkConfigIslandModeCidrArgs.builder()\n .serviceAddressCidrBlocks(\"172.26.0.0/16\")\n .podAddressCidrBlocks(\"10.240.0.0/13\")\n .build())\n .build())\n .controlPlane(BareMetalClusterControlPlaneArgs.builder()\n .controlPlaneNodePoolConfig(BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs.builder()\n .nodePoolConfig(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs.builder()\n .labels()\n .operatingSystem(\"LINUX\")\n .nodeConfigs(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.9\")\n .build())\n .build())\n .build())\n .build())\n .loadBalancer(BareMetalClusterLoadBalancerArgs.builder()\n .portConfig(BareMetalClusterLoadBalancerPortConfigArgs.builder()\n .controlPlaneLoadBalancerPort(443)\n .build())\n .vipConfig(BareMetalClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.200.0.13\")\n .ingressVip(\"10.200.0.14\")\n .build())\n .manualLbConfig(BareMetalClusterLoadBalancerManualLbConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .storage(BareMetalClusterStorageArgs.builder()\n .lvpShareConfig(BareMetalClusterStorageLvpShareConfigArgs.builder()\n .lvpConfig(BareMetalClusterStorageLvpShareConfigLvpConfigArgs.builder()\n .path(\"/mnt/localpv-share\")\n .storageClass(\"local-shared\")\n .build())\n .sharedPathPvCount(5)\n .build())\n .lvpNodeMountsConfig(BareMetalClusterStorageLvpNodeMountsConfigArgs.builder()\n .path(\"/mnt/localpv-disk\")\n .storageClass(\"local-disks\")\n .build())\n .build())\n .securityConfig(BareMetalClusterSecurityConfigArgs.builder()\n .authorization(BareMetalClusterSecurityConfigAuthorizationArgs.builder()\n .adminUsers(BareMetalClusterSecurityConfigAuthorizationAdminUserArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .build())\n .binaryAuthorization(BareMetalClusterBinaryAuthorizationArgs.builder()\n .evaluationMode(\"DISABLED\")\n .build())\n .upgradePolicy(BareMetalClusterUpgradePolicyArgs.builder()\n .policy(\"SERIAL\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster-manuallb:\n type: gcp:gkeonprem:BareMetalCluster\n properties:\n name: cluster-manuallb\n location: us-west1\n adminClusterMembership: projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\n bareMetalVersion: 1.12.3\n networkConfig:\n islandModeCidr:\n serviceAddressCidrBlocks:\n - 172.26.0.0/16\n podAddressCidrBlocks:\n - 10.240.0.0/13\n controlPlane:\n controlPlaneNodePoolConfig:\n nodePoolConfig:\n labels: {}\n operatingSystem: LINUX\n nodeConfigs:\n - labels: {}\n nodeIp: 10.200.0.9\n loadBalancer:\n portConfig:\n controlPlaneLoadBalancerPort: 443\n vipConfig:\n controlPlaneVip: 10.200.0.13\n ingressVip: 10.200.0.14\n manualLbConfig:\n enabled: true\n storage:\n lvpShareConfig:\n lvpConfig:\n path: /mnt/localpv-share\n storageClass: local-shared\n sharedPathPvCount: 5\n lvpNodeMountsConfig:\n path: /mnt/localpv-disk\n storageClass: local-disks\n securityConfig:\n authorization:\n adminUsers:\n - username: admin@hashicorptest.com\n binaryAuthorization:\n evaluationMode: DISABLED\n upgradePolicy:\n policy: SERIAL\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkeonprem Bare Metal Cluster Bgplb\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster_bgplb = new gcp.gkeonprem.BareMetalCluster(\"cluster-bgplb\", {\n name: \"cluster-bgplb\",\n location: \"us-west1\",\n adminClusterMembership: \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n bareMetalVersion: \"1.12.3\",\n networkConfig: {\n islandModeCidr: {\n serviceAddressCidrBlocks: [\"172.26.0.0/16\"],\n podAddressCidrBlocks: [\"10.240.0.0/13\"],\n },\n advancedNetworking: true,\n multipleNetworkInterfacesConfig: {\n enabled: true,\n },\n srIovConfig: {\n enabled: true,\n },\n },\n controlPlane: {\n controlPlaneNodePoolConfig: {\n nodePoolConfig: {\n labels: {},\n operatingSystem: \"LINUX\",\n nodeConfigs: [{\n labels: {},\n nodeIp: \"10.200.0.9\",\n }],\n taints: [{\n key: \"test-key\",\n value: \"test-value\",\n effect: \"NO_EXECUTE\",\n }],\n },\n },\n apiServerArgs: [{\n argument: \"test-argument\",\n value: \"test-value\",\n }],\n },\n loadBalancer: {\n portConfig: {\n controlPlaneLoadBalancerPort: 443,\n },\n vipConfig: {\n controlPlaneVip: \"10.200.0.13\",\n ingressVip: \"10.200.0.14\",\n },\n bgpLbConfig: {\n asn: 123456,\n bgpPeerConfigs: [{\n asn: 123457,\n ipAddress: \"10.0.0.1\",\n controlPlaneNodes: [\"test-node\"],\n }],\n addressPools: [{\n pool: \"pool1\",\n addresses: [\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n ],\n }],\n loadBalancerNodePoolConfig: {\n nodePoolConfig: {\n labels: {},\n operatingSystem: \"LINUX\",\n nodeConfigs: [{\n labels: {},\n nodeIp: \"10.200.0.9\",\n }],\n taints: [{\n key: \"test-key\",\n value: \"test-value\",\n effect: \"NO_EXECUTE\",\n }],\n kubeletConfig: {\n registryPullQps: 10,\n registryBurst: 12,\n serializeImagePullsDisabled: true,\n },\n },\n },\n },\n },\n storage: {\n lvpShareConfig: {\n lvpConfig: {\n path: \"/mnt/localpv-share\",\n storageClass: \"local-shared\",\n },\n sharedPathPvCount: 5,\n },\n lvpNodeMountsConfig: {\n path: \"/mnt/localpv-disk\",\n storageClass: \"local-disks\",\n },\n },\n securityConfig: {\n authorization: {\n adminUsers: [{\n username: \"admin@hashicorptest.com\",\n }],\n },\n },\n proxy: {\n uri: \"http://test-domain/test\",\n noProxies: [\"127.0.0.1\"],\n },\n clusterOperations: {\n enableApplicationLogs: true,\n },\n maintenanceConfig: {\n maintenanceAddressCidrBlocks: [\"192.168.0.1/20\"],\n },\n nodeConfig: {\n maxPodsPerNode: 10,\n containerRuntime: \"CONTAINERD\",\n },\n nodeAccessConfig: {\n loginUser: \"test@example.com\",\n },\n osEnvironmentConfig: {\n packageRepoExcluded: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster_bgplb = gcp.gkeonprem.BareMetalCluster(\"cluster-bgplb\",\n name=\"cluster-bgplb\",\n location=\"us-west1\",\n admin_cluster_membership=\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n bare_metal_version=\"1.12.3\",\n network_config={\n \"island_mode_cidr\": {\n \"service_address_cidr_blocks\": [\"172.26.0.0/16\"],\n \"pod_address_cidr_blocks\": [\"10.240.0.0/13\"],\n },\n \"advanced_networking\": True,\n \"multiple_network_interfaces_config\": {\n \"enabled\": True,\n },\n \"sr_iov_config\": {\n \"enabled\": True,\n },\n },\n control_plane={\n \"control_plane_node_pool_config\": {\n \"node_pool_config\": {\n \"labels\": {},\n \"operating_system\": \"LINUX\",\n \"node_configs\": [{\n \"labels\": {},\n \"node_ip\": \"10.200.0.9\",\n }],\n \"taints\": [{\n \"key\": \"test-key\",\n \"value\": \"test-value\",\n \"effect\": \"NO_EXECUTE\",\n }],\n },\n },\n \"api_server_args\": [{\n \"argument\": \"test-argument\",\n \"value\": \"test-value\",\n }],\n },\n load_balancer={\n \"port_config\": {\n \"control_plane_load_balancer_port\": 443,\n },\n \"vip_config\": {\n \"control_plane_vip\": \"10.200.0.13\",\n \"ingress_vip\": \"10.200.0.14\",\n },\n \"bgp_lb_config\": {\n \"asn\": 123456,\n \"bgp_peer_configs\": [{\n \"asn\": 123457,\n \"ip_address\": \"10.0.0.1\",\n \"control_plane_nodes\": [\"test-node\"],\n }],\n \"address_pools\": [{\n \"pool\": \"pool1\",\n \"addresses\": [\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n ],\n }],\n \"load_balancer_node_pool_config\": {\n \"node_pool_config\": {\n \"labels\": {},\n \"operating_system\": \"LINUX\",\n \"node_configs\": [{\n \"labels\": {},\n \"node_ip\": \"10.200.0.9\",\n }],\n \"taints\": [{\n \"key\": \"test-key\",\n \"value\": \"test-value\",\n \"effect\": \"NO_EXECUTE\",\n }],\n \"kubelet_config\": {\n \"registry_pull_qps\": 10,\n \"registry_burst\": 12,\n \"serialize_image_pulls_disabled\": True,\n },\n },\n },\n },\n },\n storage={\n \"lvp_share_config\": {\n \"lvp_config\": {\n \"path\": \"/mnt/localpv-share\",\n \"storage_class\": \"local-shared\",\n },\n \"shared_path_pv_count\": 5,\n },\n \"lvp_node_mounts_config\": {\n \"path\": \"/mnt/localpv-disk\",\n \"storage_class\": \"local-disks\",\n },\n },\n security_config={\n \"authorization\": {\n \"admin_users\": [{\n \"username\": \"admin@hashicorptest.com\",\n }],\n },\n },\n proxy={\n \"uri\": \"http://test-domain/test\",\n \"no_proxies\": [\"127.0.0.1\"],\n },\n cluster_operations={\n \"enable_application_logs\": True,\n },\n maintenance_config={\n \"maintenance_address_cidr_blocks\": [\"192.168.0.1/20\"],\n },\n node_config={\n \"max_pods_per_node\": 10,\n \"container_runtime\": \"CONTAINERD\",\n },\n node_access_config={\n \"login_user\": \"test@example.com\",\n },\n os_environment_config={\n \"package_repo_excluded\": True,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cluster_bgplb = new Gcp.GkeOnPrem.BareMetalCluster(\"cluster-bgplb\", new()\n {\n Name = \"cluster-bgplb\",\n Location = \"us-west1\",\n AdminClusterMembership = \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n BareMetalVersion = \"1.12.3\",\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigArgs\n {\n IslandModeCidr = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigIslandModeCidrArgs\n {\n ServiceAddressCidrBlocks = new[]\n {\n \"172.26.0.0/16\",\n },\n PodAddressCidrBlocks = new[]\n {\n \"10.240.0.0/13\",\n },\n },\n AdvancedNetworking = true,\n MultipleNetworkInterfacesConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigMultipleNetworkInterfacesConfigArgs\n {\n Enabled = true,\n },\n SrIovConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigSrIovConfigArgs\n {\n Enabled = true,\n },\n },\n ControlPlane = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneArgs\n {\n ControlPlaneNodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs\n {\n NodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs\n {\n Labels = null,\n OperatingSystem = \"LINUX\",\n NodeConfigs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.9\",\n },\n },\n Taints = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigTaintArgs\n {\n Key = \"test-key\",\n Value = \"test-value\",\n Effect = \"NO_EXECUTE\",\n },\n },\n },\n },\n ApiServerArgs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneApiServerArgArgs\n {\n Argument = \"test-argument\",\n Value = \"test-value\",\n },\n },\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerArgs\n {\n PortConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerPortConfigArgs\n {\n ControlPlaneLoadBalancerPort = 443,\n },\n VipConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.200.0.13\",\n IngressVip = \"10.200.0.14\",\n },\n BgpLbConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerBgpLbConfigArgs\n {\n Asn = 123456,\n BgpPeerConfigs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerBgpLbConfigBgpPeerConfigArgs\n {\n Asn = 123457,\n IpAddress = \"10.0.0.1\",\n ControlPlaneNodes = new[]\n {\n \"test-node\",\n },\n },\n },\n AddressPools = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerBgpLbConfigAddressPoolArgs\n {\n Pool = \"pool1\",\n Addresses = new[]\n {\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n },\n },\n },\n LoadBalancerNodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigArgs\n {\n NodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigArgs\n {\n Labels = null,\n OperatingSystem = \"LINUX\",\n NodeConfigs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.9\",\n },\n },\n Taints = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigTaintArgs\n {\n Key = \"test-key\",\n Value = \"test-value\",\n Effect = \"NO_EXECUTE\",\n },\n },\n KubeletConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigKubeletConfigArgs\n {\n RegistryPullQps = 10,\n RegistryBurst = 12,\n SerializeImagePullsDisabled = true,\n },\n },\n },\n },\n },\n Storage = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageArgs\n {\n LvpShareConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpShareConfigArgs\n {\n LvpConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpShareConfigLvpConfigArgs\n {\n Path = \"/mnt/localpv-share\",\n StorageClass = \"local-shared\",\n },\n SharedPathPvCount = 5,\n },\n LvpNodeMountsConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpNodeMountsConfigArgs\n {\n Path = \"/mnt/localpv-disk\",\n StorageClass = \"local-disks\",\n },\n },\n SecurityConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigArgs\n {\n Authorization = new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigAuthorizationAdminUserArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n },\n },\n Proxy = new Gcp.GkeOnPrem.Inputs.BareMetalClusterProxyArgs\n {\n Uri = \"http://test-domain/test\",\n NoProxies = new[]\n {\n \"127.0.0.1\",\n },\n },\n ClusterOperations = new Gcp.GkeOnPrem.Inputs.BareMetalClusterClusterOperationsArgs\n {\n EnableApplicationLogs = true,\n },\n MaintenanceConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterMaintenanceConfigArgs\n {\n MaintenanceAddressCidrBlocks = new[]\n {\n \"192.168.0.1/20\",\n },\n },\n NodeConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNodeConfigArgs\n {\n MaxPodsPerNode = 10,\n ContainerRuntime = \"CONTAINERD\",\n },\n NodeAccessConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNodeAccessConfigArgs\n {\n LoginUser = \"test@example.com\",\n },\n OsEnvironmentConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterOsEnvironmentConfigArgs\n {\n PackageRepoExcluded = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkeonprem\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gkeonprem.NewBareMetalCluster(ctx, \"cluster-bgplb\", \u0026gkeonprem.BareMetalClusterArgs{\n\t\t\tName: pulumi.String(\"cluster-bgplb\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tAdminClusterMembership: pulumi.String(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\"),\n\t\t\tBareMetalVersion: pulumi.String(\"1.12.3\"),\n\t\t\tNetworkConfig: \u0026gkeonprem.BareMetalClusterNetworkConfigArgs{\n\t\t\t\tIslandModeCidr: \u0026gkeonprem.BareMetalClusterNetworkConfigIslandModeCidrArgs{\n\t\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"172.26.0.0/16\"),\n\t\t\t\t\t},\n\t\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.240.0.0/13\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAdvancedNetworking: pulumi.Bool(true),\n\t\t\t\tMultipleNetworkInterfacesConfig: \u0026gkeonprem.BareMetalClusterNetworkConfigMultipleNetworkInterfacesConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tSrIovConfig: \u0026gkeonprem.BareMetalClusterNetworkConfigSrIovConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tControlPlane: \u0026gkeonprem.BareMetalClusterControlPlaneArgs{\n\t\t\t\tControlPlaneNodePoolConfig: \u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs{\n\t\t\t\t\tNodePoolConfig: \u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs{\n\t\t\t\t\t\tLabels: pulumi.StringMap{},\n\t\t\t\t\t\tOperatingSystem: pulumi.String(\"LINUX\"),\n\t\t\t\t\t\tNodeConfigs: gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArray{\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\tLabels: pulumi.StringMap{},\n\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.9\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTaints: gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigTaintArray{\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigTaintArgs{\n\t\t\t\t\t\t\t\tKey: pulumi.String(\"test-key\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"test-value\"),\n\t\t\t\t\t\t\t\tEffect: pulumi.String(\"NO_EXECUTE\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tApiServerArgs: gkeonprem.BareMetalClusterControlPlaneApiServerArgArray{\n\t\t\t\t\t\u0026gkeonprem.BareMetalClusterControlPlaneApiServerArgArgs{\n\t\t\t\t\t\tArgument: pulumi.String(\"test-argument\"),\n\t\t\t\t\t\tValue: pulumi.String(\"test-value\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLoadBalancer: \u0026gkeonprem.BareMetalClusterLoadBalancerArgs{\n\t\t\t\tPortConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerPortConfigArgs{\n\t\t\t\t\tControlPlaneLoadBalancerPort: pulumi.Int(443),\n\t\t\t\t},\n\t\t\t\tVipConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.200.0.13\"),\n\t\t\t\t\tIngressVip: pulumi.String(\"10.200.0.14\"),\n\t\t\t\t},\n\t\t\t\tBgpLbConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigArgs{\n\t\t\t\t\tAsn: pulumi.Int(123456),\n\t\t\t\t\tBgpPeerConfigs: gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigBgpPeerConfigArray{\n\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigBgpPeerConfigArgs{\n\t\t\t\t\t\t\tAsn: pulumi.Int(123457),\n\t\t\t\t\t\t\tIpAddress: pulumi.String(\"10.0.0.1\"),\n\t\t\t\t\t\t\tControlPlaneNodes: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"test-node\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tAddressPools: gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigAddressPoolArray{\n\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigAddressPoolArgs{\n\t\t\t\t\t\t\tPool: pulumi.String(\"pool1\"),\n\t\t\t\t\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.14/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.15/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.16/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.17/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.18/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::f/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::10/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::11/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::12/128\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tLoadBalancerNodePoolConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigArgs{\n\t\t\t\t\t\tNodePoolConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigArgs{\n\t\t\t\t\t\t\tLabels: pulumi.StringMap{},\n\t\t\t\t\t\t\tOperatingSystem: pulumi.String(\"LINUX\"),\n\t\t\t\t\t\t\tNodeConfigs: gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigNodeConfigArray{\n\t\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\t\tLabels: pulumi.StringMap{},\n\t\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.9\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tTaints: gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigTaintArray{\n\t\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigTaintArgs{\n\t\t\t\t\t\t\t\t\tKey: pulumi.String(\"test-key\"),\n\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"test-value\"),\n\t\t\t\t\t\t\t\t\tEffect: pulumi.String(\"NO_EXECUTE\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tKubeletConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigKubeletConfigArgs{\n\t\t\t\t\t\t\t\tRegistryPullQps: pulumi.Int(10),\n\t\t\t\t\t\t\t\tRegistryBurst: pulumi.Int(12),\n\t\t\t\t\t\t\t\tSerializeImagePullsDisabled: pulumi.Bool(true),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tStorage: \u0026gkeonprem.BareMetalClusterStorageArgs{\n\t\t\t\tLvpShareConfig: \u0026gkeonprem.BareMetalClusterStorageLvpShareConfigArgs{\n\t\t\t\t\tLvpConfig: \u0026gkeonprem.BareMetalClusterStorageLvpShareConfigLvpConfigArgs{\n\t\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-share\"),\n\t\t\t\t\t\tStorageClass: pulumi.String(\"local-shared\"),\n\t\t\t\t\t},\n\t\t\t\t\tSharedPathPvCount: pulumi.Int(5),\n\t\t\t\t},\n\t\t\t\tLvpNodeMountsConfig: \u0026gkeonprem.BareMetalClusterStorageLvpNodeMountsConfigArgs{\n\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-disk\"),\n\t\t\t\t\tStorageClass: pulumi.String(\"local-disks\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSecurityConfig: \u0026gkeonprem.BareMetalClusterSecurityConfigArgs{\n\t\t\t\tAuthorization: \u0026gkeonprem.BareMetalClusterSecurityConfigAuthorizationArgs{\n\t\t\t\t\tAdminUsers: gkeonprem.BareMetalClusterSecurityConfigAuthorizationAdminUserArray{\n\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterSecurityConfigAuthorizationAdminUserArgs{\n\t\t\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tProxy: \u0026gkeonprem.BareMetalClusterProxyArgs{\n\t\t\t\tUri: pulumi.String(\"http://test-domain/test\"),\n\t\t\t\tNoProxies: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"127.0.0.1\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tClusterOperations: \u0026gkeonprem.BareMetalClusterClusterOperationsArgs{\n\t\t\t\tEnableApplicationLogs: pulumi.Bool(true),\n\t\t\t},\n\t\t\tMaintenanceConfig: \u0026gkeonprem.BareMetalClusterMaintenanceConfigArgs{\n\t\t\t\tMaintenanceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"192.168.0.1/20\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNodeConfig: \u0026gkeonprem.BareMetalClusterNodeConfigArgs{\n\t\t\t\tMaxPodsPerNode: pulumi.Int(10),\n\t\t\t\tContainerRuntime: pulumi.String(\"CONTAINERD\"),\n\t\t\t},\n\t\t\tNodeAccessConfig: \u0026gkeonprem.BareMetalClusterNodeAccessConfigArgs{\n\t\t\t\tLoginUser: pulumi.String(\"test@example.com\"),\n\t\t\t},\n\t\t\tOsEnvironmentConfig: \u0026gkeonprem.BareMetalClusterOsEnvironmentConfigArgs{\n\t\t\t\tPackageRepoExcluded: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkeonprem.BareMetalCluster;\nimport com.pulumi.gcp.gkeonprem.BareMetalClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigIslandModeCidrArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigMultipleNetworkInterfacesConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigSrIovConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerPortConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerBgpLbConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigKubeletConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpShareConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpShareConfigLvpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpNodeMountsConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterSecurityConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterSecurityConfigAuthorizationArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterProxyArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterClusterOperationsArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterMaintenanceConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNodeConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNodeAccessConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterOsEnvironmentConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cluster_bgplb = new BareMetalCluster(\"cluster-bgplb\", BareMetalClusterArgs.builder()\n .name(\"cluster-bgplb\")\n .location(\"us-west1\")\n .adminClusterMembership(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\")\n .bareMetalVersion(\"1.12.3\")\n .networkConfig(BareMetalClusterNetworkConfigArgs.builder()\n .islandModeCidr(BareMetalClusterNetworkConfigIslandModeCidrArgs.builder()\n .serviceAddressCidrBlocks(\"172.26.0.0/16\")\n .podAddressCidrBlocks(\"10.240.0.0/13\")\n .build())\n .advancedNetworking(true)\n .multipleNetworkInterfacesConfig(BareMetalClusterNetworkConfigMultipleNetworkInterfacesConfigArgs.builder()\n .enabled(true)\n .build())\n .srIovConfig(BareMetalClusterNetworkConfigSrIovConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .controlPlane(BareMetalClusterControlPlaneArgs.builder()\n .controlPlaneNodePoolConfig(BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs.builder()\n .nodePoolConfig(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs.builder()\n .labels()\n .operatingSystem(\"LINUX\")\n .nodeConfigs(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.9\")\n .build())\n .taints(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigTaintArgs.builder()\n .key(\"test-key\")\n .value(\"test-value\")\n .effect(\"NO_EXECUTE\")\n .build())\n .build())\n .build())\n .apiServerArgs(BareMetalClusterControlPlaneApiServerArgArgs.builder()\n .argument(\"test-argument\")\n .value(\"test-value\")\n .build())\n .build())\n .loadBalancer(BareMetalClusterLoadBalancerArgs.builder()\n .portConfig(BareMetalClusterLoadBalancerPortConfigArgs.builder()\n .controlPlaneLoadBalancerPort(443)\n .build())\n .vipConfig(BareMetalClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.200.0.13\")\n .ingressVip(\"10.200.0.14\")\n .build())\n .bgpLbConfig(BareMetalClusterLoadBalancerBgpLbConfigArgs.builder()\n .asn(123456)\n .bgpPeerConfigs(BareMetalClusterLoadBalancerBgpLbConfigBgpPeerConfigArgs.builder()\n .asn(123457)\n .ipAddress(\"10.0.0.1\")\n .controlPlaneNodes(\"test-node\")\n .build())\n .addressPools(BareMetalClusterLoadBalancerBgpLbConfigAddressPoolArgs.builder()\n .pool(\"pool1\")\n .addresses( \n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\")\n .build())\n .loadBalancerNodePoolConfig(BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigArgs.builder()\n .nodePoolConfig(BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigArgs.builder()\n .labels()\n .operatingSystem(\"LINUX\")\n .nodeConfigs(BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.9\")\n .build())\n .taints(BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigTaintArgs.builder()\n .key(\"test-key\")\n .value(\"test-value\")\n .effect(\"NO_EXECUTE\")\n .build())\n .kubeletConfig(BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigKubeletConfigArgs.builder()\n .registryPullQps(10)\n .registryBurst(12)\n .serializeImagePullsDisabled(true)\n .build())\n .build())\n .build())\n .build())\n .build())\n .storage(BareMetalClusterStorageArgs.builder()\n .lvpShareConfig(BareMetalClusterStorageLvpShareConfigArgs.builder()\n .lvpConfig(BareMetalClusterStorageLvpShareConfigLvpConfigArgs.builder()\n .path(\"/mnt/localpv-share\")\n .storageClass(\"local-shared\")\n .build())\n .sharedPathPvCount(5)\n .build())\n .lvpNodeMountsConfig(BareMetalClusterStorageLvpNodeMountsConfigArgs.builder()\n .path(\"/mnt/localpv-disk\")\n .storageClass(\"local-disks\")\n .build())\n .build())\n .securityConfig(BareMetalClusterSecurityConfigArgs.builder()\n .authorization(BareMetalClusterSecurityConfigAuthorizationArgs.builder()\n .adminUsers(BareMetalClusterSecurityConfigAuthorizationAdminUserArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .build())\n .proxy(BareMetalClusterProxyArgs.builder()\n .uri(\"http://test-domain/test\")\n .noProxies(\"127.0.0.1\")\n .build())\n .clusterOperations(BareMetalClusterClusterOperationsArgs.builder()\n .enableApplicationLogs(true)\n .build())\n .maintenanceConfig(BareMetalClusterMaintenanceConfigArgs.builder()\n .maintenanceAddressCidrBlocks(\"192.168.0.1/20\")\n .build())\n .nodeConfig(BareMetalClusterNodeConfigArgs.builder()\n .maxPodsPerNode(10)\n .containerRuntime(\"CONTAINERD\")\n .build())\n .nodeAccessConfig(BareMetalClusterNodeAccessConfigArgs.builder()\n .loginUser(\"test@example.com\")\n .build())\n .osEnvironmentConfig(BareMetalClusterOsEnvironmentConfigArgs.builder()\n .packageRepoExcluded(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster-bgplb:\n type: gcp:gkeonprem:BareMetalCluster\n properties:\n name: cluster-bgplb\n location: us-west1\n adminClusterMembership: projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\n bareMetalVersion: 1.12.3\n networkConfig:\n islandModeCidr:\n serviceAddressCidrBlocks:\n - 172.26.0.0/16\n podAddressCidrBlocks:\n - 10.240.0.0/13\n advancedNetworking: true\n multipleNetworkInterfacesConfig:\n enabled: true\n srIovConfig:\n enabled: true\n controlPlane:\n controlPlaneNodePoolConfig:\n nodePoolConfig:\n labels: {}\n operatingSystem: LINUX\n nodeConfigs:\n - labels: {}\n nodeIp: 10.200.0.9\n taints:\n - key: test-key\n value: test-value\n effect: NO_EXECUTE\n apiServerArgs:\n - argument: test-argument\n value: test-value\n loadBalancer:\n portConfig:\n controlPlaneLoadBalancerPort: 443\n vipConfig:\n controlPlaneVip: 10.200.0.13\n ingressVip: 10.200.0.14\n bgpLbConfig:\n asn: 123456\n bgpPeerConfigs:\n - asn: 123457\n ipAddress: 10.0.0.1\n controlPlaneNodes:\n - test-node\n addressPools:\n - pool: pool1\n addresses:\n - 10.200.0.14/32\n - 10.200.0.15/32\n - 10.200.0.16/32\n - 10.200.0.17/32\n - 10.200.0.18/32\n - fd00:1::f/128\n - fd00:1::10/128\n - fd00:1::11/128\n - fd00:1::12/128\n loadBalancerNodePoolConfig:\n nodePoolConfig:\n labels: {}\n operatingSystem: LINUX\n nodeConfigs:\n - labels: {}\n nodeIp: 10.200.0.9\n taints:\n - key: test-key\n value: test-value\n effect: NO_EXECUTE\n kubeletConfig:\n registryPullQps: 10\n registryBurst: 12\n serializeImagePullsDisabled: true\n storage:\n lvpShareConfig:\n lvpConfig:\n path: /mnt/localpv-share\n storageClass: local-shared\n sharedPathPvCount: 5\n lvpNodeMountsConfig:\n path: /mnt/localpv-disk\n storageClass: local-disks\n securityConfig:\n authorization:\n adminUsers:\n - username: admin@hashicorptest.com\n proxy:\n uri: http://test-domain/test\n noProxies:\n - 127.0.0.1\n clusterOperations:\n enableApplicationLogs: true\n maintenanceConfig:\n maintenanceAddressCidrBlocks:\n - 192.168.0.1/20\n nodeConfig:\n maxPodsPerNode: 10\n containerRuntime: CONTAINERD\n nodeAccessConfig:\n loginUser: test@example.com\n osEnvironmentConfig:\n packageRepoExcluded: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBareMetalCluster can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/bareMetalClusters/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, BareMetalCluster can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:gkeonprem/bareMetalCluster:BareMetalCluster default projects/{{project}}/locations/{{location}}/bareMetalClusters/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkeonprem/bareMetalCluster:BareMetalCluster default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkeonprem/bareMetalCluster:BareMetalCluster default {{location}}/{{name}}\n```\n\n", "properties": { "adminClusterMembership": { "type": "string", @@ -205484,7 +205484,7 @@ } }, "gcp:gkeonprem/bareMetalNodePool:BareMetalNodePool": { - "description": "A Google Bare Metal Node Pool.\n\n\n\n## Example Usage\n\n### Gkeonprem Bare Metal Node Pool Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default_basic = new gcp.gkeonprem.BareMetalCluster(\"default-basic\", {\n name: \"my-cluster\",\n location: \"us-west1\",\n adminClusterMembership: \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n bareMetalVersion: \"1.12.3\",\n networkConfig: {\n islandModeCidr: {\n serviceAddressCidrBlocks: [\"172.26.0.0/16\"],\n podAddressCidrBlocks: [\"10.240.0.0/13\"],\n },\n },\n controlPlane: {\n controlPlaneNodePoolConfig: {\n nodePoolConfig: {\n labels: {},\n operatingSystem: \"LINUX\",\n nodeConfigs: [{\n labels: {},\n nodeIp: \"10.200.0.9\",\n }],\n },\n },\n },\n loadBalancer: {\n portConfig: {\n controlPlaneLoadBalancerPort: 443,\n },\n vipConfig: {\n controlPlaneVip: \"10.200.0.13\",\n ingressVip: \"10.200.0.14\",\n },\n metalLbConfig: {\n addressPools: [{\n pool: \"pool1\",\n addresses: [\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n ],\n }],\n },\n },\n storage: {\n lvpShareConfig: {\n lvpConfig: {\n path: \"/mnt/localpv-share\",\n storageClass: \"local-shared\",\n },\n sharedPathPvCount: 5,\n },\n lvpNodeMountsConfig: {\n path: \"/mnt/localpv-disk\",\n storageClass: \"local-disks\",\n },\n },\n securityConfig: {\n authorization: {\n adminUsers: [{\n username: \"admin@hashicorptest.com\",\n }],\n },\n },\n});\nconst nodepool_basic = new gcp.gkeonprem.BareMetalNodePool(\"nodepool-basic\", {\n name: \"my-nodepool\",\n bareMetalCluster: default_basic.name,\n location: \"us-west1\",\n nodePoolConfig: {\n operatingSystem: \"LINUX\",\n nodeConfigs: [{\n nodeIp: \"10.200.0.11\",\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_basic = gcp.gkeonprem.BareMetalCluster(\"default-basic\",\n name=\"my-cluster\",\n location=\"us-west1\",\n admin_cluster_membership=\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n bare_metal_version=\"1.12.3\",\n network_config={\n \"island_mode_cidr\": {\n \"service_address_cidr_blocks\": [\"172.26.0.0/16\"],\n \"pod_address_cidr_blocks\": [\"10.240.0.0/13\"],\n },\n },\n control_plane={\n \"control_plane_node_pool_config\": {\n \"node_pool_config\": {\n \"labels\": {},\n \"operating_system\": \"LINUX\",\n \"node_configs\": [{\n \"labels\": {},\n \"node_ip\": \"10.200.0.9\",\n }],\n },\n },\n },\n load_balancer={\n \"port_config\": {\n \"control_plane_load_balancer_port\": 443,\n },\n \"vip_config\": {\n \"control_plane_vip\": \"10.200.0.13\",\n \"ingress_vip\": \"10.200.0.14\",\n },\n \"metal_lb_config\": {\n \"address_pools\": [{\n \"pool\": \"pool1\",\n \"addresses\": [\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n ],\n }],\n },\n },\n storage={\n \"lvp_share_config\": {\n \"lvp_config\": {\n \"path\": \"/mnt/localpv-share\",\n \"storage_class\": \"local-shared\",\n },\n \"shared_path_pv_count\": 5,\n },\n \"lvp_node_mounts_config\": {\n \"path\": \"/mnt/localpv-disk\",\n \"storage_class\": \"local-disks\",\n },\n },\n security_config={\n \"authorization\": {\n \"admin_users\": [{\n \"username\": \"admin@hashicorptest.com\",\n }],\n },\n })\nnodepool_basic = gcp.gkeonprem.BareMetalNodePool(\"nodepool-basic\",\n name=\"my-nodepool\",\n bare_metal_cluster=default_basic.name,\n location=\"us-west1\",\n node_pool_config={\n \"operating_system\": \"LINUX\",\n \"node_configs\": [{\n \"node_ip\": \"10.200.0.11\",\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var default_basic = new Gcp.GkeOnPrem.BareMetalCluster(\"default-basic\", new()\n {\n Name = \"my-cluster\",\n Location = \"us-west1\",\n AdminClusterMembership = \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n BareMetalVersion = \"1.12.3\",\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigArgs\n {\n IslandModeCidr = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigIslandModeCidrArgs\n {\n ServiceAddressCidrBlocks = new[]\n {\n \"172.26.0.0/16\",\n },\n PodAddressCidrBlocks = new[]\n {\n \"10.240.0.0/13\",\n },\n },\n },\n ControlPlane = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneArgs\n {\n ControlPlaneNodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs\n {\n NodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs\n {\n Labels = null,\n OperatingSystem = \"LINUX\",\n NodeConfigs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.9\",\n },\n },\n },\n },\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerArgs\n {\n PortConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerPortConfigArgs\n {\n ControlPlaneLoadBalancerPort = 443,\n },\n VipConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.200.0.13\",\n IngressVip = \"10.200.0.14\",\n },\n MetalLbConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerMetalLbConfigArgs\n {\n AddressPools = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArgs\n {\n Pool = \"pool1\",\n Addresses = new[]\n {\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n },\n },\n },\n },\n },\n Storage = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageArgs\n {\n LvpShareConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpShareConfigArgs\n {\n LvpConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpShareConfigLvpConfigArgs\n {\n Path = \"/mnt/localpv-share\",\n StorageClass = \"local-shared\",\n },\n SharedPathPvCount = 5,\n },\n LvpNodeMountsConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpNodeMountsConfigArgs\n {\n Path = \"/mnt/localpv-disk\",\n StorageClass = \"local-disks\",\n },\n },\n SecurityConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigArgs\n {\n Authorization = new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigAuthorizationAdminUserArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n },\n },\n });\n\n var nodepool_basic = new Gcp.GkeOnPrem.BareMetalNodePool(\"nodepool-basic\", new()\n {\n Name = \"my-nodepool\",\n BareMetalCluster = default_basic.Name,\n Location = \"us-west1\",\n NodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalNodePoolNodePoolConfigArgs\n {\n OperatingSystem = \"LINUX\",\n NodeConfigs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalNodePoolNodePoolConfigNodeConfigArgs\n {\n NodeIp = \"10.200.0.11\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkeonprem\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gkeonprem.NewBareMetalCluster(ctx, \"default-basic\", \u0026gkeonprem.BareMetalClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tAdminClusterMembership: pulumi.String(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\"),\n\t\t\tBareMetalVersion: pulumi.String(\"1.12.3\"),\n\t\t\tNetworkConfig: \u0026gkeonprem.BareMetalClusterNetworkConfigArgs{\n\t\t\t\tIslandModeCidr: \u0026gkeonprem.BareMetalClusterNetworkConfigIslandModeCidrArgs{\n\t\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"172.26.0.0/16\"),\n\t\t\t\t\t},\n\t\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.240.0.0/13\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tControlPlane: \u0026gkeonprem.BareMetalClusterControlPlaneArgs{\n\t\t\t\tControlPlaneNodePoolConfig: \u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs{\n\t\t\t\t\tNodePoolConfig: \u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs{\n\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\tOperatingSystem: pulumi.String(\"LINUX\"),\n\t\t\t\t\t\tNodeConfigs: gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArray{\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.9\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLoadBalancer: \u0026gkeonprem.BareMetalClusterLoadBalancerArgs{\n\t\t\t\tPortConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerPortConfigArgs{\n\t\t\t\t\tControlPlaneLoadBalancerPort: pulumi.Int(443),\n\t\t\t\t},\n\t\t\t\tVipConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.200.0.13\"),\n\t\t\t\t\tIngressVip: pulumi.String(\"10.200.0.14\"),\n\t\t\t\t},\n\t\t\t\tMetalLbConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerMetalLbConfigArgs{\n\t\t\t\t\tAddressPools: gkeonprem.BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArray{\n\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArgs{\n\t\t\t\t\t\t\tPool: pulumi.String(\"pool1\"),\n\t\t\t\t\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.14/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.15/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.16/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.17/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.18/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::f/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::10/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::11/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::12/128\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tStorage: \u0026gkeonprem.BareMetalClusterStorageArgs{\n\t\t\t\tLvpShareConfig: \u0026gkeonprem.BareMetalClusterStorageLvpShareConfigArgs{\n\t\t\t\t\tLvpConfig: \u0026gkeonprem.BareMetalClusterStorageLvpShareConfigLvpConfigArgs{\n\t\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-share\"),\n\t\t\t\t\t\tStorageClass: pulumi.String(\"local-shared\"),\n\t\t\t\t\t},\n\t\t\t\t\tSharedPathPvCount: pulumi.Int(5),\n\t\t\t\t},\n\t\t\t\tLvpNodeMountsConfig: \u0026gkeonprem.BareMetalClusterStorageLvpNodeMountsConfigArgs{\n\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-disk\"),\n\t\t\t\t\tStorageClass: pulumi.String(\"local-disks\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSecurityConfig: \u0026gkeonprem.BareMetalClusterSecurityConfigArgs{\n\t\t\t\tAuthorization: \u0026gkeonprem.BareMetalClusterSecurityConfigAuthorizationArgs{\n\t\t\t\t\tAdminUsers: gkeonprem.BareMetalClusterSecurityConfigAuthorizationAdminUserArray{\n\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterSecurityConfigAuthorizationAdminUserArgs{\n\t\t\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkeonprem.NewBareMetalNodePool(ctx, \"nodepool-basic\", \u0026gkeonprem.BareMetalNodePoolArgs{\n\t\t\tName: pulumi.String(\"my-nodepool\"),\n\t\t\tBareMetalCluster: default_basic.Name,\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tNodePoolConfig: \u0026gkeonprem.BareMetalNodePoolNodePoolConfigArgs{\n\t\t\t\tOperatingSystem: pulumi.String(\"LINUX\"),\n\t\t\t\tNodeConfigs: gkeonprem.BareMetalNodePoolNodePoolConfigNodeConfigArray{\n\t\t\t\t\t\u0026gkeonprem.BareMetalNodePoolNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.11\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkeonprem.BareMetalCluster;\nimport com.pulumi.gcp.gkeonprem.BareMetalClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigIslandModeCidrArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerPortConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerMetalLbConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpShareConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpShareConfigLvpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpNodeMountsConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterSecurityConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterSecurityConfigAuthorizationArgs;\nimport com.pulumi.gcp.gkeonprem.BareMetalNodePool;\nimport com.pulumi.gcp.gkeonprem.BareMetalNodePoolArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalNodePoolNodePoolConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_basic = new BareMetalCluster(\"default-basic\", BareMetalClusterArgs.builder()\n .name(\"my-cluster\")\n .location(\"us-west1\")\n .adminClusterMembership(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\")\n .bareMetalVersion(\"1.12.3\")\n .networkConfig(BareMetalClusterNetworkConfigArgs.builder()\n .islandModeCidr(BareMetalClusterNetworkConfigIslandModeCidrArgs.builder()\n .serviceAddressCidrBlocks(\"172.26.0.0/16\")\n .podAddressCidrBlocks(\"10.240.0.0/13\")\n .build())\n .build())\n .controlPlane(BareMetalClusterControlPlaneArgs.builder()\n .controlPlaneNodePoolConfig(BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs.builder()\n .nodePoolConfig(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs.builder()\n .labels()\n .operatingSystem(\"LINUX\")\n .nodeConfigs(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.9\")\n .build())\n .build())\n .build())\n .build())\n .loadBalancer(BareMetalClusterLoadBalancerArgs.builder()\n .portConfig(BareMetalClusterLoadBalancerPortConfigArgs.builder()\n .controlPlaneLoadBalancerPort(443)\n .build())\n .vipConfig(BareMetalClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.200.0.13\")\n .ingressVip(\"10.200.0.14\")\n .build())\n .metalLbConfig(BareMetalClusterLoadBalancerMetalLbConfigArgs.builder()\n .addressPools(BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArgs.builder()\n .pool(\"pool1\")\n .addresses( \n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\")\n .build())\n .build())\n .build())\n .storage(BareMetalClusterStorageArgs.builder()\n .lvpShareConfig(BareMetalClusterStorageLvpShareConfigArgs.builder()\n .lvpConfig(BareMetalClusterStorageLvpShareConfigLvpConfigArgs.builder()\n .path(\"/mnt/localpv-share\")\n .storageClass(\"local-shared\")\n .build())\n .sharedPathPvCount(5)\n .build())\n .lvpNodeMountsConfig(BareMetalClusterStorageLvpNodeMountsConfigArgs.builder()\n .path(\"/mnt/localpv-disk\")\n .storageClass(\"local-disks\")\n .build())\n .build())\n .securityConfig(BareMetalClusterSecurityConfigArgs.builder()\n .authorization(BareMetalClusterSecurityConfigAuthorizationArgs.builder()\n .adminUsers(BareMetalClusterSecurityConfigAuthorizationAdminUserArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .build())\n .build());\n\n var nodepool_basic = new BareMetalNodePool(\"nodepool-basic\", BareMetalNodePoolArgs.builder()\n .name(\"my-nodepool\")\n .bareMetalCluster(default_basic.name())\n .location(\"us-west1\")\n .nodePoolConfig(BareMetalNodePoolNodePoolConfigArgs.builder()\n .operatingSystem(\"LINUX\")\n .nodeConfigs(BareMetalNodePoolNodePoolConfigNodeConfigArgs.builder()\n .nodeIp(\"10.200.0.11\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default-basic:\n type: gcp:gkeonprem:BareMetalCluster\n properties:\n name: my-cluster\n location: us-west1\n adminClusterMembership: projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\n bareMetalVersion: 1.12.3\n networkConfig:\n islandModeCidr:\n serviceAddressCidrBlocks:\n - 172.26.0.0/16\n podAddressCidrBlocks:\n - 10.240.0.0/13\n controlPlane:\n controlPlaneNodePoolConfig:\n nodePoolConfig:\n labels: {}\n operatingSystem: LINUX\n nodeConfigs:\n - labels: {}\n nodeIp: 10.200.0.9\n loadBalancer:\n portConfig:\n controlPlaneLoadBalancerPort: 443\n vipConfig:\n controlPlaneVip: 10.200.0.13\n ingressVip: 10.200.0.14\n metalLbConfig:\n addressPools:\n - pool: pool1\n addresses:\n - 10.200.0.14/32\n - 10.200.0.15/32\n - 10.200.0.16/32\n - 10.200.0.17/32\n - 10.200.0.18/32\n - fd00:1::f/128\n - fd00:1::10/128\n - fd00:1::11/128\n - fd00:1::12/128\n storage:\n lvpShareConfig:\n lvpConfig:\n path: /mnt/localpv-share\n storageClass: local-shared\n sharedPathPvCount: 5\n lvpNodeMountsConfig:\n path: /mnt/localpv-disk\n storageClass: local-disks\n securityConfig:\n authorization:\n adminUsers:\n - username: admin@hashicorptest.com\n nodepool-basic:\n type: gcp:gkeonprem:BareMetalNodePool\n properties:\n name: my-nodepool\n bareMetalCluster: ${[\"default-basic\"].name}\n location: us-west1\n nodePoolConfig:\n operatingSystem: LINUX\n nodeConfigs:\n - nodeIp: 10.200.0.11\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkeonprem Bare Metal Node Pool Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default_full = new gcp.gkeonprem.BareMetalCluster(\"default-full\", {\n name: \"my-cluster\",\n location: \"us-west1\",\n adminClusterMembership: \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n bareMetalVersion: \"1.12.3\",\n networkConfig: {\n islandModeCidr: {\n serviceAddressCidrBlocks: [\"172.26.0.0/16\"],\n podAddressCidrBlocks: [\"10.240.0.0/13\"],\n },\n },\n controlPlane: {\n controlPlaneNodePoolConfig: {\n nodePoolConfig: {\n labels: {},\n operatingSystem: \"LINUX\",\n nodeConfigs: [{\n labels: {},\n nodeIp: \"10.200.0.9\",\n }],\n },\n },\n },\n loadBalancer: {\n portConfig: {\n controlPlaneLoadBalancerPort: 443,\n },\n vipConfig: {\n controlPlaneVip: \"10.200.0.13\",\n ingressVip: \"10.200.0.14\",\n },\n metalLbConfig: {\n addressPools: [{\n pool: \"pool1\",\n addresses: [\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n ],\n }],\n },\n },\n storage: {\n lvpShareConfig: {\n lvpConfig: {\n path: \"/mnt/localpv-share\",\n storageClass: \"local-shared\",\n },\n sharedPathPvCount: 5,\n },\n lvpNodeMountsConfig: {\n path: \"/mnt/localpv-disk\",\n storageClass: \"local-disks\",\n },\n },\n securityConfig: {\n authorization: {\n adminUsers: [{\n username: \"admin@hashicorptest.com\",\n }],\n },\n },\n});\nconst nodepool_full = new gcp.gkeonprem.BareMetalNodePool(\"nodepool-full\", {\n name: \"my-nodepool\",\n displayName: \"test-name\",\n bareMetalCluster: default_full.name,\n location: \"us-west1\",\n annotations: {},\n nodePoolConfig: {\n operatingSystem: \"LINUX\",\n labels: {},\n nodeConfigs: [{\n nodeIp: \"10.200.0.11\",\n labels: {},\n }],\n taints: [{\n key: \"test-key\",\n value: \"test-value\",\n effect: \"NO_EXECUTE\",\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_full = gcp.gkeonprem.BareMetalCluster(\"default-full\",\n name=\"my-cluster\",\n location=\"us-west1\",\n admin_cluster_membership=\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n bare_metal_version=\"1.12.3\",\n network_config={\n \"island_mode_cidr\": {\n \"service_address_cidr_blocks\": [\"172.26.0.0/16\"],\n \"pod_address_cidr_blocks\": [\"10.240.0.0/13\"],\n },\n },\n control_plane={\n \"control_plane_node_pool_config\": {\n \"node_pool_config\": {\n \"labels\": {},\n \"operating_system\": \"LINUX\",\n \"node_configs\": [{\n \"labels\": {},\n \"node_ip\": \"10.200.0.9\",\n }],\n },\n },\n },\n load_balancer={\n \"port_config\": {\n \"control_plane_load_balancer_port\": 443,\n },\n \"vip_config\": {\n \"control_plane_vip\": \"10.200.0.13\",\n \"ingress_vip\": \"10.200.0.14\",\n },\n \"metal_lb_config\": {\n \"address_pools\": [{\n \"pool\": \"pool1\",\n \"addresses\": [\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n ],\n }],\n },\n },\n storage={\n \"lvp_share_config\": {\n \"lvp_config\": {\n \"path\": \"/mnt/localpv-share\",\n \"storage_class\": \"local-shared\",\n },\n \"shared_path_pv_count\": 5,\n },\n \"lvp_node_mounts_config\": {\n \"path\": \"/mnt/localpv-disk\",\n \"storage_class\": \"local-disks\",\n },\n },\n security_config={\n \"authorization\": {\n \"admin_users\": [{\n \"username\": \"admin@hashicorptest.com\",\n }],\n },\n })\nnodepool_full = gcp.gkeonprem.BareMetalNodePool(\"nodepool-full\",\n name=\"my-nodepool\",\n display_name=\"test-name\",\n bare_metal_cluster=default_full.name,\n location=\"us-west1\",\n annotations={},\n node_pool_config={\n \"operating_system\": \"LINUX\",\n \"labels\": {},\n \"node_configs\": [{\n \"node_ip\": \"10.200.0.11\",\n \"labels\": {},\n }],\n \"taints\": [{\n \"key\": \"test-key\",\n \"value\": \"test-value\",\n \"effect\": \"NO_EXECUTE\",\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var default_full = new Gcp.GkeOnPrem.BareMetalCluster(\"default-full\", new()\n {\n Name = \"my-cluster\",\n Location = \"us-west1\",\n AdminClusterMembership = \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n BareMetalVersion = \"1.12.3\",\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigArgs\n {\n IslandModeCidr = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigIslandModeCidrArgs\n {\n ServiceAddressCidrBlocks = new[]\n {\n \"172.26.0.0/16\",\n },\n PodAddressCidrBlocks = new[]\n {\n \"10.240.0.0/13\",\n },\n },\n },\n ControlPlane = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneArgs\n {\n ControlPlaneNodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs\n {\n NodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs\n {\n Labels = null,\n OperatingSystem = \"LINUX\",\n NodeConfigs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.9\",\n },\n },\n },\n },\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerArgs\n {\n PortConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerPortConfigArgs\n {\n ControlPlaneLoadBalancerPort = 443,\n },\n VipConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.200.0.13\",\n IngressVip = \"10.200.0.14\",\n },\n MetalLbConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerMetalLbConfigArgs\n {\n AddressPools = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArgs\n {\n Pool = \"pool1\",\n Addresses = new[]\n {\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n },\n },\n },\n },\n },\n Storage = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageArgs\n {\n LvpShareConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpShareConfigArgs\n {\n LvpConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpShareConfigLvpConfigArgs\n {\n Path = \"/mnt/localpv-share\",\n StorageClass = \"local-shared\",\n },\n SharedPathPvCount = 5,\n },\n LvpNodeMountsConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpNodeMountsConfigArgs\n {\n Path = \"/mnt/localpv-disk\",\n StorageClass = \"local-disks\",\n },\n },\n SecurityConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigArgs\n {\n Authorization = new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigAuthorizationAdminUserArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n },\n },\n });\n\n var nodepool_full = new Gcp.GkeOnPrem.BareMetalNodePool(\"nodepool-full\", new()\n {\n Name = \"my-nodepool\",\n DisplayName = \"test-name\",\n BareMetalCluster = default_full.Name,\n Location = \"us-west1\",\n Annotations = null,\n NodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalNodePoolNodePoolConfigArgs\n {\n OperatingSystem = \"LINUX\",\n Labels = null,\n NodeConfigs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalNodePoolNodePoolConfigNodeConfigArgs\n {\n NodeIp = \"10.200.0.11\",\n Labels = null,\n },\n },\n Taints = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalNodePoolNodePoolConfigTaintArgs\n {\n Key = \"test-key\",\n Value = \"test-value\",\n Effect = \"NO_EXECUTE\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkeonprem\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gkeonprem.NewBareMetalCluster(ctx, \"default-full\", \u0026gkeonprem.BareMetalClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tAdminClusterMembership: pulumi.String(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\"),\n\t\t\tBareMetalVersion: pulumi.String(\"1.12.3\"),\n\t\t\tNetworkConfig: \u0026gkeonprem.BareMetalClusterNetworkConfigArgs{\n\t\t\t\tIslandModeCidr: \u0026gkeonprem.BareMetalClusterNetworkConfigIslandModeCidrArgs{\n\t\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"172.26.0.0/16\"),\n\t\t\t\t\t},\n\t\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.240.0.0/13\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tControlPlane: \u0026gkeonprem.BareMetalClusterControlPlaneArgs{\n\t\t\t\tControlPlaneNodePoolConfig: \u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs{\n\t\t\t\t\tNodePoolConfig: \u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs{\n\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\tOperatingSystem: pulumi.String(\"LINUX\"),\n\t\t\t\t\t\tNodeConfigs: gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArray{\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.9\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLoadBalancer: \u0026gkeonprem.BareMetalClusterLoadBalancerArgs{\n\t\t\t\tPortConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerPortConfigArgs{\n\t\t\t\t\tControlPlaneLoadBalancerPort: pulumi.Int(443),\n\t\t\t\t},\n\t\t\t\tVipConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.200.0.13\"),\n\t\t\t\t\tIngressVip: pulumi.String(\"10.200.0.14\"),\n\t\t\t\t},\n\t\t\t\tMetalLbConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerMetalLbConfigArgs{\n\t\t\t\t\tAddressPools: gkeonprem.BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArray{\n\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArgs{\n\t\t\t\t\t\t\tPool: pulumi.String(\"pool1\"),\n\t\t\t\t\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.14/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.15/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.16/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.17/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.18/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::f/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::10/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::11/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::12/128\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tStorage: \u0026gkeonprem.BareMetalClusterStorageArgs{\n\t\t\t\tLvpShareConfig: \u0026gkeonprem.BareMetalClusterStorageLvpShareConfigArgs{\n\t\t\t\t\tLvpConfig: \u0026gkeonprem.BareMetalClusterStorageLvpShareConfigLvpConfigArgs{\n\t\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-share\"),\n\t\t\t\t\t\tStorageClass: pulumi.String(\"local-shared\"),\n\t\t\t\t\t},\n\t\t\t\t\tSharedPathPvCount: pulumi.Int(5),\n\t\t\t\t},\n\t\t\t\tLvpNodeMountsConfig: \u0026gkeonprem.BareMetalClusterStorageLvpNodeMountsConfigArgs{\n\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-disk\"),\n\t\t\t\t\tStorageClass: pulumi.String(\"local-disks\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSecurityConfig: \u0026gkeonprem.BareMetalClusterSecurityConfigArgs{\n\t\t\t\tAuthorization: \u0026gkeonprem.BareMetalClusterSecurityConfigAuthorizationArgs{\n\t\t\t\t\tAdminUsers: gkeonprem.BareMetalClusterSecurityConfigAuthorizationAdminUserArray{\n\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterSecurityConfigAuthorizationAdminUserArgs{\n\t\t\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkeonprem.NewBareMetalNodePool(ctx, \"nodepool-full\", \u0026gkeonprem.BareMetalNodePoolArgs{\n\t\t\tName: pulumi.String(\"my-nodepool\"),\n\t\t\tDisplayName: pulumi.String(\"test-name\"),\n\t\t\tBareMetalCluster: default_full.Name,\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tAnnotations: nil,\n\t\t\tNodePoolConfig: \u0026gkeonprem.BareMetalNodePoolNodePoolConfigArgs{\n\t\t\t\tOperatingSystem: pulumi.String(\"LINUX\"),\n\t\t\t\tLabels: nil,\n\t\t\t\tNodeConfigs: gkeonprem.BareMetalNodePoolNodePoolConfigNodeConfigArray{\n\t\t\t\t\t\u0026gkeonprem.BareMetalNodePoolNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.11\"),\n\t\t\t\t\t\tLabels: nil,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tTaints: gkeonprem.BareMetalNodePoolNodePoolConfigTaintArray{\n\t\t\t\t\t\u0026gkeonprem.BareMetalNodePoolNodePoolConfigTaintArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"test-key\"),\n\t\t\t\t\t\tValue: pulumi.String(\"test-value\"),\n\t\t\t\t\t\tEffect: pulumi.String(\"NO_EXECUTE\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkeonprem.BareMetalCluster;\nimport com.pulumi.gcp.gkeonprem.BareMetalClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigIslandModeCidrArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerPortConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerMetalLbConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpShareConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpShareConfigLvpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpNodeMountsConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterSecurityConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterSecurityConfigAuthorizationArgs;\nimport com.pulumi.gcp.gkeonprem.BareMetalNodePool;\nimport com.pulumi.gcp.gkeonprem.BareMetalNodePoolArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalNodePoolNodePoolConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_full = new BareMetalCluster(\"default-full\", BareMetalClusterArgs.builder()\n .name(\"my-cluster\")\n .location(\"us-west1\")\n .adminClusterMembership(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\")\n .bareMetalVersion(\"1.12.3\")\n .networkConfig(BareMetalClusterNetworkConfigArgs.builder()\n .islandModeCidr(BareMetalClusterNetworkConfigIslandModeCidrArgs.builder()\n .serviceAddressCidrBlocks(\"172.26.0.0/16\")\n .podAddressCidrBlocks(\"10.240.0.0/13\")\n .build())\n .build())\n .controlPlane(BareMetalClusterControlPlaneArgs.builder()\n .controlPlaneNodePoolConfig(BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs.builder()\n .nodePoolConfig(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs.builder()\n .labels()\n .operatingSystem(\"LINUX\")\n .nodeConfigs(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.9\")\n .build())\n .build())\n .build())\n .build())\n .loadBalancer(BareMetalClusterLoadBalancerArgs.builder()\n .portConfig(BareMetalClusterLoadBalancerPortConfigArgs.builder()\n .controlPlaneLoadBalancerPort(443)\n .build())\n .vipConfig(BareMetalClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.200.0.13\")\n .ingressVip(\"10.200.0.14\")\n .build())\n .metalLbConfig(BareMetalClusterLoadBalancerMetalLbConfigArgs.builder()\n .addressPools(BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArgs.builder()\n .pool(\"pool1\")\n .addresses( \n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\")\n .build())\n .build())\n .build())\n .storage(BareMetalClusterStorageArgs.builder()\n .lvpShareConfig(BareMetalClusterStorageLvpShareConfigArgs.builder()\n .lvpConfig(BareMetalClusterStorageLvpShareConfigLvpConfigArgs.builder()\n .path(\"/mnt/localpv-share\")\n .storageClass(\"local-shared\")\n .build())\n .sharedPathPvCount(5)\n .build())\n .lvpNodeMountsConfig(BareMetalClusterStorageLvpNodeMountsConfigArgs.builder()\n .path(\"/mnt/localpv-disk\")\n .storageClass(\"local-disks\")\n .build())\n .build())\n .securityConfig(BareMetalClusterSecurityConfigArgs.builder()\n .authorization(BareMetalClusterSecurityConfigAuthorizationArgs.builder()\n .adminUsers(BareMetalClusterSecurityConfigAuthorizationAdminUserArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .build())\n .build());\n\n var nodepool_full = new BareMetalNodePool(\"nodepool-full\", BareMetalNodePoolArgs.builder()\n .name(\"my-nodepool\")\n .displayName(\"test-name\")\n .bareMetalCluster(default_full.name())\n .location(\"us-west1\")\n .annotations()\n .nodePoolConfig(BareMetalNodePoolNodePoolConfigArgs.builder()\n .operatingSystem(\"LINUX\")\n .labels()\n .nodeConfigs(BareMetalNodePoolNodePoolConfigNodeConfigArgs.builder()\n .nodeIp(\"10.200.0.11\")\n .labels()\n .build())\n .taints(BareMetalNodePoolNodePoolConfigTaintArgs.builder()\n .key(\"test-key\")\n .value(\"test-value\")\n .effect(\"NO_EXECUTE\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default-full:\n type: gcp:gkeonprem:BareMetalCluster\n properties:\n name: my-cluster\n location: us-west1\n adminClusterMembership: projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\n bareMetalVersion: 1.12.3\n networkConfig:\n islandModeCidr:\n serviceAddressCidrBlocks:\n - 172.26.0.0/16\n podAddressCidrBlocks:\n - 10.240.0.0/13\n controlPlane:\n controlPlaneNodePoolConfig:\n nodePoolConfig:\n labels: {}\n operatingSystem: LINUX\n nodeConfigs:\n - labels: {}\n nodeIp: 10.200.0.9\n loadBalancer:\n portConfig:\n controlPlaneLoadBalancerPort: 443\n vipConfig:\n controlPlaneVip: 10.200.0.13\n ingressVip: 10.200.0.14\n metalLbConfig:\n addressPools:\n - pool: pool1\n addresses:\n - 10.200.0.14/32\n - 10.200.0.15/32\n - 10.200.0.16/32\n - 10.200.0.17/32\n - 10.200.0.18/32\n - fd00:1::f/128\n - fd00:1::10/128\n - fd00:1::11/128\n - fd00:1::12/128\n storage:\n lvpShareConfig:\n lvpConfig:\n path: /mnt/localpv-share\n storageClass: local-shared\n sharedPathPvCount: 5\n lvpNodeMountsConfig:\n path: /mnt/localpv-disk\n storageClass: local-disks\n securityConfig:\n authorization:\n adminUsers:\n - username: admin@hashicorptest.com\n nodepool-full:\n type: gcp:gkeonprem:BareMetalNodePool\n properties:\n name: my-nodepool\n displayName: test-name\n bareMetalCluster: ${[\"default-full\"].name}\n location: us-west1\n annotations: {}\n nodePoolConfig:\n operatingSystem: LINUX\n labels: {}\n nodeConfigs:\n - nodeIp: 10.200.0.11\n labels: {}\n taints:\n - key: test-key\n value: test-value\n effect: NO_EXECUTE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBareMetalNodePool can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/bareMetalClusters/{{bare_metal_cluster}}/bareMetalNodePools/{{name}}`\n\n* `{{project}}/{{location}}/{{bare_metal_cluster}}/{{name}}`\n\n* `{{location}}/{{bare_metal_cluster}}/{{name}}`\n\nWhen using the `pulumi import` command, BareMetalNodePool can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:gkeonprem/bareMetalNodePool:BareMetalNodePool default projects/{{project}}/locations/{{location}}/bareMetalClusters/{{bare_metal_cluster}}/bareMetalNodePools/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkeonprem/bareMetalNodePool:BareMetalNodePool default {{project}}/{{location}}/{{bare_metal_cluster}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkeonprem/bareMetalNodePool:BareMetalNodePool default {{location}}/{{bare_metal_cluster}}/{{name}}\n```\n\n", + "description": "A Google Bare Metal Node Pool.\n\n\n\n## Example Usage\n\n### Gkeonprem Bare Metal Node Pool Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default_basic = new gcp.gkeonprem.BareMetalCluster(\"default-basic\", {\n name: \"my-cluster\",\n location: \"us-west1\",\n adminClusterMembership: \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n bareMetalVersion: \"1.12.3\",\n networkConfig: {\n islandModeCidr: {\n serviceAddressCidrBlocks: [\"172.26.0.0/16\"],\n podAddressCidrBlocks: [\"10.240.0.0/13\"],\n },\n },\n controlPlane: {\n controlPlaneNodePoolConfig: {\n nodePoolConfig: {\n labels: {},\n operatingSystem: \"LINUX\",\n nodeConfigs: [{\n labels: {},\n nodeIp: \"10.200.0.9\",\n }],\n },\n },\n },\n loadBalancer: {\n portConfig: {\n controlPlaneLoadBalancerPort: 443,\n },\n vipConfig: {\n controlPlaneVip: \"10.200.0.13\",\n ingressVip: \"10.200.0.14\",\n },\n metalLbConfig: {\n addressPools: [{\n pool: \"pool1\",\n addresses: [\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n ],\n }],\n },\n },\n storage: {\n lvpShareConfig: {\n lvpConfig: {\n path: \"/mnt/localpv-share\",\n storageClass: \"local-shared\",\n },\n sharedPathPvCount: 5,\n },\n lvpNodeMountsConfig: {\n path: \"/mnt/localpv-disk\",\n storageClass: \"local-disks\",\n },\n },\n securityConfig: {\n authorization: {\n adminUsers: [{\n username: \"admin@hashicorptest.com\",\n }],\n },\n },\n});\nconst nodepool_basic = new gcp.gkeonprem.BareMetalNodePool(\"nodepool-basic\", {\n name: \"my-nodepool\",\n bareMetalCluster: default_basic.name,\n location: \"us-west1\",\n nodePoolConfig: {\n operatingSystem: \"LINUX\",\n nodeConfigs: [{\n nodeIp: \"10.200.0.11\",\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_basic = gcp.gkeonprem.BareMetalCluster(\"default-basic\",\n name=\"my-cluster\",\n location=\"us-west1\",\n admin_cluster_membership=\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n bare_metal_version=\"1.12.3\",\n network_config={\n \"island_mode_cidr\": {\n \"service_address_cidr_blocks\": [\"172.26.0.0/16\"],\n \"pod_address_cidr_blocks\": [\"10.240.0.0/13\"],\n },\n },\n control_plane={\n \"control_plane_node_pool_config\": {\n \"node_pool_config\": {\n \"labels\": {},\n \"operating_system\": \"LINUX\",\n \"node_configs\": [{\n \"labels\": {},\n \"node_ip\": \"10.200.0.9\",\n }],\n },\n },\n },\n load_balancer={\n \"port_config\": {\n \"control_plane_load_balancer_port\": 443,\n },\n \"vip_config\": {\n \"control_plane_vip\": \"10.200.0.13\",\n \"ingress_vip\": \"10.200.0.14\",\n },\n \"metal_lb_config\": {\n \"address_pools\": [{\n \"pool\": \"pool1\",\n \"addresses\": [\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n ],\n }],\n },\n },\n storage={\n \"lvp_share_config\": {\n \"lvp_config\": {\n \"path\": \"/mnt/localpv-share\",\n \"storage_class\": \"local-shared\",\n },\n \"shared_path_pv_count\": 5,\n },\n \"lvp_node_mounts_config\": {\n \"path\": \"/mnt/localpv-disk\",\n \"storage_class\": \"local-disks\",\n },\n },\n security_config={\n \"authorization\": {\n \"admin_users\": [{\n \"username\": \"admin@hashicorptest.com\",\n }],\n },\n })\nnodepool_basic = gcp.gkeonprem.BareMetalNodePool(\"nodepool-basic\",\n name=\"my-nodepool\",\n bare_metal_cluster=default_basic.name,\n location=\"us-west1\",\n node_pool_config={\n \"operating_system\": \"LINUX\",\n \"node_configs\": [{\n \"node_ip\": \"10.200.0.11\",\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var default_basic = new Gcp.GkeOnPrem.BareMetalCluster(\"default-basic\", new()\n {\n Name = \"my-cluster\",\n Location = \"us-west1\",\n AdminClusterMembership = \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n BareMetalVersion = \"1.12.3\",\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigArgs\n {\n IslandModeCidr = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigIslandModeCidrArgs\n {\n ServiceAddressCidrBlocks = new[]\n {\n \"172.26.0.0/16\",\n },\n PodAddressCidrBlocks = new[]\n {\n \"10.240.0.0/13\",\n },\n },\n },\n ControlPlane = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneArgs\n {\n ControlPlaneNodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs\n {\n NodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs\n {\n Labels = null,\n OperatingSystem = \"LINUX\",\n NodeConfigs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.9\",\n },\n },\n },\n },\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerArgs\n {\n PortConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerPortConfigArgs\n {\n ControlPlaneLoadBalancerPort = 443,\n },\n VipConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.200.0.13\",\n IngressVip = \"10.200.0.14\",\n },\n MetalLbConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerMetalLbConfigArgs\n {\n AddressPools = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArgs\n {\n Pool = \"pool1\",\n Addresses = new[]\n {\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n },\n },\n },\n },\n },\n Storage = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageArgs\n {\n LvpShareConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpShareConfigArgs\n {\n LvpConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpShareConfigLvpConfigArgs\n {\n Path = \"/mnt/localpv-share\",\n StorageClass = \"local-shared\",\n },\n SharedPathPvCount = 5,\n },\n LvpNodeMountsConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpNodeMountsConfigArgs\n {\n Path = \"/mnt/localpv-disk\",\n StorageClass = \"local-disks\",\n },\n },\n SecurityConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigArgs\n {\n Authorization = new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigAuthorizationAdminUserArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n },\n },\n });\n\n var nodepool_basic = new Gcp.GkeOnPrem.BareMetalNodePool(\"nodepool-basic\", new()\n {\n Name = \"my-nodepool\",\n BareMetalCluster = default_basic.Name,\n Location = \"us-west1\",\n NodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalNodePoolNodePoolConfigArgs\n {\n OperatingSystem = \"LINUX\",\n NodeConfigs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalNodePoolNodePoolConfigNodeConfigArgs\n {\n NodeIp = \"10.200.0.11\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkeonprem\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gkeonprem.NewBareMetalCluster(ctx, \"default-basic\", \u0026gkeonprem.BareMetalClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tAdminClusterMembership: pulumi.String(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\"),\n\t\t\tBareMetalVersion: pulumi.String(\"1.12.3\"),\n\t\t\tNetworkConfig: \u0026gkeonprem.BareMetalClusterNetworkConfigArgs{\n\t\t\t\tIslandModeCidr: \u0026gkeonprem.BareMetalClusterNetworkConfigIslandModeCidrArgs{\n\t\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"172.26.0.0/16\"),\n\t\t\t\t\t},\n\t\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.240.0.0/13\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tControlPlane: \u0026gkeonprem.BareMetalClusterControlPlaneArgs{\n\t\t\t\tControlPlaneNodePoolConfig: \u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs{\n\t\t\t\t\tNodePoolConfig: \u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs{\n\t\t\t\t\t\tLabels: pulumi.StringMap{},\n\t\t\t\t\t\tOperatingSystem: pulumi.String(\"LINUX\"),\n\t\t\t\t\t\tNodeConfigs: gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArray{\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\tLabels: pulumi.StringMap{},\n\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.9\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLoadBalancer: \u0026gkeonprem.BareMetalClusterLoadBalancerArgs{\n\t\t\t\tPortConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerPortConfigArgs{\n\t\t\t\t\tControlPlaneLoadBalancerPort: pulumi.Int(443),\n\t\t\t\t},\n\t\t\t\tVipConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.200.0.13\"),\n\t\t\t\t\tIngressVip: pulumi.String(\"10.200.0.14\"),\n\t\t\t\t},\n\t\t\t\tMetalLbConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerMetalLbConfigArgs{\n\t\t\t\t\tAddressPools: gkeonprem.BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArray{\n\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArgs{\n\t\t\t\t\t\t\tPool: pulumi.String(\"pool1\"),\n\t\t\t\t\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.14/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.15/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.16/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.17/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.18/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::f/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::10/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::11/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::12/128\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tStorage: \u0026gkeonprem.BareMetalClusterStorageArgs{\n\t\t\t\tLvpShareConfig: \u0026gkeonprem.BareMetalClusterStorageLvpShareConfigArgs{\n\t\t\t\t\tLvpConfig: \u0026gkeonprem.BareMetalClusterStorageLvpShareConfigLvpConfigArgs{\n\t\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-share\"),\n\t\t\t\t\t\tStorageClass: pulumi.String(\"local-shared\"),\n\t\t\t\t\t},\n\t\t\t\t\tSharedPathPvCount: pulumi.Int(5),\n\t\t\t\t},\n\t\t\t\tLvpNodeMountsConfig: \u0026gkeonprem.BareMetalClusterStorageLvpNodeMountsConfigArgs{\n\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-disk\"),\n\t\t\t\t\tStorageClass: pulumi.String(\"local-disks\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSecurityConfig: \u0026gkeonprem.BareMetalClusterSecurityConfigArgs{\n\t\t\t\tAuthorization: \u0026gkeonprem.BareMetalClusterSecurityConfigAuthorizationArgs{\n\t\t\t\t\tAdminUsers: gkeonprem.BareMetalClusterSecurityConfigAuthorizationAdminUserArray{\n\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterSecurityConfigAuthorizationAdminUserArgs{\n\t\t\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkeonprem.NewBareMetalNodePool(ctx, \"nodepool-basic\", \u0026gkeonprem.BareMetalNodePoolArgs{\n\t\t\tName: pulumi.String(\"my-nodepool\"),\n\t\t\tBareMetalCluster: default_basic.Name,\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tNodePoolConfig: \u0026gkeonprem.BareMetalNodePoolNodePoolConfigArgs{\n\t\t\t\tOperatingSystem: pulumi.String(\"LINUX\"),\n\t\t\t\tNodeConfigs: gkeonprem.BareMetalNodePoolNodePoolConfigNodeConfigArray{\n\t\t\t\t\t\u0026gkeonprem.BareMetalNodePoolNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.11\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkeonprem.BareMetalCluster;\nimport com.pulumi.gcp.gkeonprem.BareMetalClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigIslandModeCidrArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerPortConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerMetalLbConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpShareConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpShareConfigLvpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpNodeMountsConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterSecurityConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterSecurityConfigAuthorizationArgs;\nimport com.pulumi.gcp.gkeonprem.BareMetalNodePool;\nimport com.pulumi.gcp.gkeonprem.BareMetalNodePoolArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalNodePoolNodePoolConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_basic = new BareMetalCluster(\"default-basic\", BareMetalClusterArgs.builder()\n .name(\"my-cluster\")\n .location(\"us-west1\")\n .adminClusterMembership(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\")\n .bareMetalVersion(\"1.12.3\")\n .networkConfig(BareMetalClusterNetworkConfigArgs.builder()\n .islandModeCidr(BareMetalClusterNetworkConfigIslandModeCidrArgs.builder()\n .serviceAddressCidrBlocks(\"172.26.0.0/16\")\n .podAddressCidrBlocks(\"10.240.0.0/13\")\n .build())\n .build())\n .controlPlane(BareMetalClusterControlPlaneArgs.builder()\n .controlPlaneNodePoolConfig(BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs.builder()\n .nodePoolConfig(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs.builder()\n .labels()\n .operatingSystem(\"LINUX\")\n .nodeConfigs(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.9\")\n .build())\n .build())\n .build())\n .build())\n .loadBalancer(BareMetalClusterLoadBalancerArgs.builder()\n .portConfig(BareMetalClusterLoadBalancerPortConfigArgs.builder()\n .controlPlaneLoadBalancerPort(443)\n .build())\n .vipConfig(BareMetalClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.200.0.13\")\n .ingressVip(\"10.200.0.14\")\n .build())\n .metalLbConfig(BareMetalClusterLoadBalancerMetalLbConfigArgs.builder()\n .addressPools(BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArgs.builder()\n .pool(\"pool1\")\n .addresses( \n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\")\n .build())\n .build())\n .build())\n .storage(BareMetalClusterStorageArgs.builder()\n .lvpShareConfig(BareMetalClusterStorageLvpShareConfigArgs.builder()\n .lvpConfig(BareMetalClusterStorageLvpShareConfigLvpConfigArgs.builder()\n .path(\"/mnt/localpv-share\")\n .storageClass(\"local-shared\")\n .build())\n .sharedPathPvCount(5)\n .build())\n .lvpNodeMountsConfig(BareMetalClusterStorageLvpNodeMountsConfigArgs.builder()\n .path(\"/mnt/localpv-disk\")\n .storageClass(\"local-disks\")\n .build())\n .build())\n .securityConfig(BareMetalClusterSecurityConfigArgs.builder()\n .authorization(BareMetalClusterSecurityConfigAuthorizationArgs.builder()\n .adminUsers(BareMetalClusterSecurityConfigAuthorizationAdminUserArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .build())\n .build());\n\n var nodepool_basic = new BareMetalNodePool(\"nodepool-basic\", BareMetalNodePoolArgs.builder()\n .name(\"my-nodepool\")\n .bareMetalCluster(default_basic.name())\n .location(\"us-west1\")\n .nodePoolConfig(BareMetalNodePoolNodePoolConfigArgs.builder()\n .operatingSystem(\"LINUX\")\n .nodeConfigs(BareMetalNodePoolNodePoolConfigNodeConfigArgs.builder()\n .nodeIp(\"10.200.0.11\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default-basic:\n type: gcp:gkeonprem:BareMetalCluster\n properties:\n name: my-cluster\n location: us-west1\n adminClusterMembership: projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\n bareMetalVersion: 1.12.3\n networkConfig:\n islandModeCidr:\n serviceAddressCidrBlocks:\n - 172.26.0.0/16\n podAddressCidrBlocks:\n - 10.240.0.0/13\n controlPlane:\n controlPlaneNodePoolConfig:\n nodePoolConfig:\n labels: {}\n operatingSystem: LINUX\n nodeConfigs:\n - labels: {}\n nodeIp: 10.200.0.9\n loadBalancer:\n portConfig:\n controlPlaneLoadBalancerPort: 443\n vipConfig:\n controlPlaneVip: 10.200.0.13\n ingressVip: 10.200.0.14\n metalLbConfig:\n addressPools:\n - pool: pool1\n addresses:\n - 10.200.0.14/32\n - 10.200.0.15/32\n - 10.200.0.16/32\n - 10.200.0.17/32\n - 10.200.0.18/32\n - fd00:1::f/128\n - fd00:1::10/128\n - fd00:1::11/128\n - fd00:1::12/128\n storage:\n lvpShareConfig:\n lvpConfig:\n path: /mnt/localpv-share\n storageClass: local-shared\n sharedPathPvCount: 5\n lvpNodeMountsConfig:\n path: /mnt/localpv-disk\n storageClass: local-disks\n securityConfig:\n authorization:\n adminUsers:\n - username: admin@hashicorptest.com\n nodepool-basic:\n type: gcp:gkeonprem:BareMetalNodePool\n properties:\n name: my-nodepool\n bareMetalCluster: ${[\"default-basic\"].name}\n location: us-west1\n nodePoolConfig:\n operatingSystem: LINUX\n nodeConfigs:\n - nodeIp: 10.200.0.11\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkeonprem Bare Metal Node Pool Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default_full = new gcp.gkeonprem.BareMetalCluster(\"default-full\", {\n name: \"my-cluster\",\n location: \"us-west1\",\n adminClusterMembership: \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n bareMetalVersion: \"1.12.3\",\n networkConfig: {\n islandModeCidr: {\n serviceAddressCidrBlocks: [\"172.26.0.0/16\"],\n podAddressCidrBlocks: [\"10.240.0.0/13\"],\n },\n },\n controlPlane: {\n controlPlaneNodePoolConfig: {\n nodePoolConfig: {\n labels: {},\n operatingSystem: \"LINUX\",\n nodeConfigs: [{\n labels: {},\n nodeIp: \"10.200.0.9\",\n }],\n },\n },\n },\n loadBalancer: {\n portConfig: {\n controlPlaneLoadBalancerPort: 443,\n },\n vipConfig: {\n controlPlaneVip: \"10.200.0.13\",\n ingressVip: \"10.200.0.14\",\n },\n metalLbConfig: {\n addressPools: [{\n pool: \"pool1\",\n addresses: [\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n ],\n }],\n },\n },\n storage: {\n lvpShareConfig: {\n lvpConfig: {\n path: \"/mnt/localpv-share\",\n storageClass: \"local-shared\",\n },\n sharedPathPvCount: 5,\n },\n lvpNodeMountsConfig: {\n path: \"/mnt/localpv-disk\",\n storageClass: \"local-disks\",\n },\n },\n securityConfig: {\n authorization: {\n adminUsers: [{\n username: \"admin@hashicorptest.com\",\n }],\n },\n },\n});\nconst nodepool_full = new gcp.gkeonprem.BareMetalNodePool(\"nodepool-full\", {\n name: \"my-nodepool\",\n displayName: \"test-name\",\n bareMetalCluster: default_full.name,\n location: \"us-west1\",\n annotations: {},\n nodePoolConfig: {\n operatingSystem: \"LINUX\",\n labels: {},\n nodeConfigs: [{\n nodeIp: \"10.200.0.11\",\n labels: {},\n }],\n taints: [{\n key: \"test-key\",\n value: \"test-value\",\n effect: \"NO_EXECUTE\",\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_full = gcp.gkeonprem.BareMetalCluster(\"default-full\",\n name=\"my-cluster\",\n location=\"us-west1\",\n admin_cluster_membership=\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n bare_metal_version=\"1.12.3\",\n network_config={\n \"island_mode_cidr\": {\n \"service_address_cidr_blocks\": [\"172.26.0.0/16\"],\n \"pod_address_cidr_blocks\": [\"10.240.0.0/13\"],\n },\n },\n control_plane={\n \"control_plane_node_pool_config\": {\n \"node_pool_config\": {\n \"labels\": {},\n \"operating_system\": \"LINUX\",\n \"node_configs\": [{\n \"labels\": {},\n \"node_ip\": \"10.200.0.9\",\n }],\n },\n },\n },\n load_balancer={\n \"port_config\": {\n \"control_plane_load_balancer_port\": 443,\n },\n \"vip_config\": {\n \"control_plane_vip\": \"10.200.0.13\",\n \"ingress_vip\": \"10.200.0.14\",\n },\n \"metal_lb_config\": {\n \"address_pools\": [{\n \"pool\": \"pool1\",\n \"addresses\": [\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n ],\n }],\n },\n },\n storage={\n \"lvp_share_config\": {\n \"lvp_config\": {\n \"path\": \"/mnt/localpv-share\",\n \"storage_class\": \"local-shared\",\n },\n \"shared_path_pv_count\": 5,\n },\n \"lvp_node_mounts_config\": {\n \"path\": \"/mnt/localpv-disk\",\n \"storage_class\": \"local-disks\",\n },\n },\n security_config={\n \"authorization\": {\n \"admin_users\": [{\n \"username\": \"admin@hashicorptest.com\",\n }],\n },\n })\nnodepool_full = gcp.gkeonprem.BareMetalNodePool(\"nodepool-full\",\n name=\"my-nodepool\",\n display_name=\"test-name\",\n bare_metal_cluster=default_full.name,\n location=\"us-west1\",\n annotations={},\n node_pool_config={\n \"operating_system\": \"LINUX\",\n \"labels\": {},\n \"node_configs\": [{\n \"node_ip\": \"10.200.0.11\",\n \"labels\": {},\n }],\n \"taints\": [{\n \"key\": \"test-key\",\n \"value\": \"test-value\",\n \"effect\": \"NO_EXECUTE\",\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var default_full = new Gcp.GkeOnPrem.BareMetalCluster(\"default-full\", new()\n {\n Name = \"my-cluster\",\n Location = \"us-west1\",\n AdminClusterMembership = \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n BareMetalVersion = \"1.12.3\",\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigArgs\n {\n IslandModeCidr = new Gcp.GkeOnPrem.Inputs.BareMetalClusterNetworkConfigIslandModeCidrArgs\n {\n ServiceAddressCidrBlocks = new[]\n {\n \"172.26.0.0/16\",\n },\n PodAddressCidrBlocks = new[]\n {\n \"10.240.0.0/13\",\n },\n },\n },\n ControlPlane = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneArgs\n {\n ControlPlaneNodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs\n {\n NodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs\n {\n Labels = null,\n OperatingSystem = \"LINUX\",\n NodeConfigs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs\n {\n Labels = null,\n NodeIp = \"10.200.0.9\",\n },\n },\n },\n },\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerArgs\n {\n PortConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerPortConfigArgs\n {\n ControlPlaneLoadBalancerPort = 443,\n },\n VipConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.200.0.13\",\n IngressVip = \"10.200.0.14\",\n },\n MetalLbConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerMetalLbConfigArgs\n {\n AddressPools = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArgs\n {\n Pool = \"pool1\",\n Addresses = new[]\n {\n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\",\n },\n },\n },\n },\n },\n Storage = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageArgs\n {\n LvpShareConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpShareConfigArgs\n {\n LvpConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpShareConfigLvpConfigArgs\n {\n Path = \"/mnt/localpv-share\",\n StorageClass = \"local-shared\",\n },\n SharedPathPvCount = 5,\n },\n LvpNodeMountsConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterStorageLvpNodeMountsConfigArgs\n {\n Path = \"/mnt/localpv-disk\",\n StorageClass = \"local-disks\",\n },\n },\n SecurityConfig = new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigArgs\n {\n Authorization = new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalClusterSecurityConfigAuthorizationAdminUserArgs\n {\n Username = \"admin@hashicorptest.com\",\n },\n },\n },\n },\n });\n\n var nodepool_full = new Gcp.GkeOnPrem.BareMetalNodePool(\"nodepool-full\", new()\n {\n Name = \"my-nodepool\",\n DisplayName = \"test-name\",\n BareMetalCluster = default_full.Name,\n Location = \"us-west1\",\n Annotations = null,\n NodePoolConfig = new Gcp.GkeOnPrem.Inputs.BareMetalNodePoolNodePoolConfigArgs\n {\n OperatingSystem = \"LINUX\",\n Labels = null,\n NodeConfigs = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalNodePoolNodePoolConfigNodeConfigArgs\n {\n NodeIp = \"10.200.0.11\",\n Labels = null,\n },\n },\n Taints = new[]\n {\n new Gcp.GkeOnPrem.Inputs.BareMetalNodePoolNodePoolConfigTaintArgs\n {\n Key = \"test-key\",\n Value = \"test-value\",\n Effect = \"NO_EXECUTE\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkeonprem\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gkeonprem.NewBareMetalCluster(ctx, \"default-full\", \u0026gkeonprem.BareMetalClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tAdminClusterMembership: pulumi.String(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\"),\n\t\t\tBareMetalVersion: pulumi.String(\"1.12.3\"),\n\t\t\tNetworkConfig: \u0026gkeonprem.BareMetalClusterNetworkConfigArgs{\n\t\t\t\tIslandModeCidr: \u0026gkeonprem.BareMetalClusterNetworkConfigIslandModeCidrArgs{\n\t\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"172.26.0.0/16\"),\n\t\t\t\t\t},\n\t\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.240.0.0/13\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tControlPlane: \u0026gkeonprem.BareMetalClusterControlPlaneArgs{\n\t\t\t\tControlPlaneNodePoolConfig: \u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs{\n\t\t\t\t\tNodePoolConfig: \u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs{\n\t\t\t\t\t\tLabels: pulumi.StringMap{},\n\t\t\t\t\t\tOperatingSystem: pulumi.String(\"LINUX\"),\n\t\t\t\t\t\tNodeConfigs: gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArray{\n\t\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\t\t\tLabels: pulumi.StringMap{},\n\t\t\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.9\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLoadBalancer: \u0026gkeonprem.BareMetalClusterLoadBalancerArgs{\n\t\t\t\tPortConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerPortConfigArgs{\n\t\t\t\t\tControlPlaneLoadBalancerPort: pulumi.Int(443),\n\t\t\t\t},\n\t\t\t\tVipConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.200.0.13\"),\n\t\t\t\t\tIngressVip: pulumi.String(\"10.200.0.14\"),\n\t\t\t\t},\n\t\t\t\tMetalLbConfig: \u0026gkeonprem.BareMetalClusterLoadBalancerMetalLbConfigArgs{\n\t\t\t\t\tAddressPools: gkeonprem.BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArray{\n\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArgs{\n\t\t\t\t\t\t\tPool: pulumi.String(\"pool1\"),\n\t\t\t\t\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.14/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.15/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.16/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.17/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"10.200.0.18/32\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::f/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::10/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::11/128\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fd00:1::12/128\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tStorage: \u0026gkeonprem.BareMetalClusterStorageArgs{\n\t\t\t\tLvpShareConfig: \u0026gkeonprem.BareMetalClusterStorageLvpShareConfigArgs{\n\t\t\t\t\tLvpConfig: \u0026gkeonprem.BareMetalClusterStorageLvpShareConfigLvpConfigArgs{\n\t\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-share\"),\n\t\t\t\t\t\tStorageClass: pulumi.String(\"local-shared\"),\n\t\t\t\t\t},\n\t\t\t\t\tSharedPathPvCount: pulumi.Int(5),\n\t\t\t\t},\n\t\t\t\tLvpNodeMountsConfig: \u0026gkeonprem.BareMetalClusterStorageLvpNodeMountsConfigArgs{\n\t\t\t\t\tPath: pulumi.String(\"/mnt/localpv-disk\"),\n\t\t\t\t\tStorageClass: pulumi.String(\"local-disks\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSecurityConfig: \u0026gkeonprem.BareMetalClusterSecurityConfigArgs{\n\t\t\t\tAuthorization: \u0026gkeonprem.BareMetalClusterSecurityConfigAuthorizationArgs{\n\t\t\t\t\tAdminUsers: gkeonprem.BareMetalClusterSecurityConfigAuthorizationAdminUserArray{\n\t\t\t\t\t\t\u0026gkeonprem.BareMetalClusterSecurityConfigAuthorizationAdminUserArgs{\n\t\t\t\t\t\t\tUsername: pulumi.String(\"admin@hashicorptest.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkeonprem.NewBareMetalNodePool(ctx, \"nodepool-full\", \u0026gkeonprem.BareMetalNodePoolArgs{\n\t\t\tName: pulumi.String(\"my-nodepool\"),\n\t\t\tDisplayName: pulumi.String(\"test-name\"),\n\t\t\tBareMetalCluster: default_full.Name,\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tAnnotations: pulumi.StringMap{},\n\t\t\tNodePoolConfig: \u0026gkeonprem.BareMetalNodePoolNodePoolConfigArgs{\n\t\t\t\tOperatingSystem: pulumi.String(\"LINUX\"),\n\t\t\t\tLabels: pulumi.StringMap{},\n\t\t\t\tNodeConfigs: gkeonprem.BareMetalNodePoolNodePoolConfigNodeConfigArray{\n\t\t\t\t\t\u0026gkeonprem.BareMetalNodePoolNodePoolConfigNodeConfigArgs{\n\t\t\t\t\t\tNodeIp: pulumi.String(\"10.200.0.11\"),\n\t\t\t\t\t\tLabels: pulumi.StringMap{},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tTaints: gkeonprem.BareMetalNodePoolNodePoolConfigTaintArray{\n\t\t\t\t\t\u0026gkeonprem.BareMetalNodePoolNodePoolConfigTaintArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"test-key\"),\n\t\t\t\t\t\tValue: pulumi.String(\"test-value\"),\n\t\t\t\t\t\tEffect: pulumi.String(\"NO_EXECUTE\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkeonprem.BareMetalCluster;\nimport com.pulumi.gcp.gkeonprem.BareMetalClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterNetworkConfigIslandModeCidrArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerPortConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterLoadBalancerMetalLbConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpShareConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpShareConfigLvpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterStorageLvpNodeMountsConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterSecurityConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalClusterSecurityConfigAuthorizationArgs;\nimport com.pulumi.gcp.gkeonprem.BareMetalNodePool;\nimport com.pulumi.gcp.gkeonprem.BareMetalNodePoolArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.BareMetalNodePoolNodePoolConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_full = new BareMetalCluster(\"default-full\", BareMetalClusterArgs.builder()\n .name(\"my-cluster\")\n .location(\"us-west1\")\n .adminClusterMembership(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\")\n .bareMetalVersion(\"1.12.3\")\n .networkConfig(BareMetalClusterNetworkConfigArgs.builder()\n .islandModeCidr(BareMetalClusterNetworkConfigIslandModeCidrArgs.builder()\n .serviceAddressCidrBlocks(\"172.26.0.0/16\")\n .podAddressCidrBlocks(\"10.240.0.0/13\")\n .build())\n .build())\n .controlPlane(BareMetalClusterControlPlaneArgs.builder()\n .controlPlaneNodePoolConfig(BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs.builder()\n .nodePoolConfig(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs.builder()\n .labels()\n .operatingSystem(\"LINUX\")\n .nodeConfigs(BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs.builder()\n .labels()\n .nodeIp(\"10.200.0.9\")\n .build())\n .build())\n .build())\n .build())\n .loadBalancer(BareMetalClusterLoadBalancerArgs.builder()\n .portConfig(BareMetalClusterLoadBalancerPortConfigArgs.builder()\n .controlPlaneLoadBalancerPort(443)\n .build())\n .vipConfig(BareMetalClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.200.0.13\")\n .ingressVip(\"10.200.0.14\")\n .build())\n .metalLbConfig(BareMetalClusterLoadBalancerMetalLbConfigArgs.builder()\n .addressPools(BareMetalClusterLoadBalancerMetalLbConfigAddressPoolArgs.builder()\n .pool(\"pool1\")\n .addresses( \n \"10.200.0.14/32\",\n \"10.200.0.15/32\",\n \"10.200.0.16/32\",\n \"10.200.0.17/32\",\n \"10.200.0.18/32\",\n \"fd00:1::f/128\",\n \"fd00:1::10/128\",\n \"fd00:1::11/128\",\n \"fd00:1::12/128\")\n .build())\n .build())\n .build())\n .storage(BareMetalClusterStorageArgs.builder()\n .lvpShareConfig(BareMetalClusterStorageLvpShareConfigArgs.builder()\n .lvpConfig(BareMetalClusterStorageLvpShareConfigLvpConfigArgs.builder()\n .path(\"/mnt/localpv-share\")\n .storageClass(\"local-shared\")\n .build())\n .sharedPathPvCount(5)\n .build())\n .lvpNodeMountsConfig(BareMetalClusterStorageLvpNodeMountsConfigArgs.builder()\n .path(\"/mnt/localpv-disk\")\n .storageClass(\"local-disks\")\n .build())\n .build())\n .securityConfig(BareMetalClusterSecurityConfigArgs.builder()\n .authorization(BareMetalClusterSecurityConfigAuthorizationArgs.builder()\n .adminUsers(BareMetalClusterSecurityConfigAuthorizationAdminUserArgs.builder()\n .username(\"admin@hashicorptest.com\")\n .build())\n .build())\n .build())\n .build());\n\n var nodepool_full = new BareMetalNodePool(\"nodepool-full\", BareMetalNodePoolArgs.builder()\n .name(\"my-nodepool\")\n .displayName(\"test-name\")\n .bareMetalCluster(default_full.name())\n .location(\"us-west1\")\n .annotations()\n .nodePoolConfig(BareMetalNodePoolNodePoolConfigArgs.builder()\n .operatingSystem(\"LINUX\")\n .labels()\n .nodeConfigs(BareMetalNodePoolNodePoolConfigNodeConfigArgs.builder()\n .nodeIp(\"10.200.0.11\")\n .labels()\n .build())\n .taints(BareMetalNodePoolNodePoolConfigTaintArgs.builder()\n .key(\"test-key\")\n .value(\"test-value\")\n .effect(\"NO_EXECUTE\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default-full:\n type: gcp:gkeonprem:BareMetalCluster\n properties:\n name: my-cluster\n location: us-west1\n adminClusterMembership: projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\n bareMetalVersion: 1.12.3\n networkConfig:\n islandModeCidr:\n serviceAddressCidrBlocks:\n - 172.26.0.0/16\n podAddressCidrBlocks:\n - 10.240.0.0/13\n controlPlane:\n controlPlaneNodePoolConfig:\n nodePoolConfig:\n labels: {}\n operatingSystem: LINUX\n nodeConfigs:\n - labels: {}\n nodeIp: 10.200.0.9\n loadBalancer:\n portConfig:\n controlPlaneLoadBalancerPort: 443\n vipConfig:\n controlPlaneVip: 10.200.0.13\n ingressVip: 10.200.0.14\n metalLbConfig:\n addressPools:\n - pool: pool1\n addresses:\n - 10.200.0.14/32\n - 10.200.0.15/32\n - 10.200.0.16/32\n - 10.200.0.17/32\n - 10.200.0.18/32\n - fd00:1::f/128\n - fd00:1::10/128\n - fd00:1::11/128\n - fd00:1::12/128\n storage:\n lvpShareConfig:\n lvpConfig:\n path: /mnt/localpv-share\n storageClass: local-shared\n sharedPathPvCount: 5\n lvpNodeMountsConfig:\n path: /mnt/localpv-disk\n storageClass: local-disks\n securityConfig:\n authorization:\n adminUsers:\n - username: admin@hashicorptest.com\n nodepool-full:\n type: gcp:gkeonprem:BareMetalNodePool\n properties:\n name: my-nodepool\n displayName: test-name\n bareMetalCluster: ${[\"default-full\"].name}\n location: us-west1\n annotations: {}\n nodePoolConfig:\n operatingSystem: LINUX\n labels: {}\n nodeConfigs:\n - nodeIp: 10.200.0.11\n labels: {}\n taints:\n - key: test-key\n value: test-value\n effect: NO_EXECUTE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBareMetalNodePool can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/bareMetalClusters/{{bare_metal_cluster}}/bareMetalNodePools/{{name}}`\n\n* `{{project}}/{{location}}/{{bare_metal_cluster}}/{{name}}`\n\n* `{{location}}/{{bare_metal_cluster}}/{{name}}`\n\nWhen using the `pulumi import` command, BareMetalNodePool can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:gkeonprem/bareMetalNodePool:BareMetalNodePool default projects/{{project}}/locations/{{location}}/bareMetalClusters/{{bare_metal_cluster}}/bareMetalNodePools/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkeonprem/bareMetalNodePool:BareMetalNodePool default {{project}}/{{location}}/{{bare_metal_cluster}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkeonprem/bareMetalNodePool:BareMetalNodePool default {{location}}/{{bare_metal_cluster}}/{{name}}\n```\n\n", "properties": { "annotations": { "type": "object", @@ -205698,7 +205698,7 @@ } }, "gcp:gkeonprem/vMwareCluster:VMwareCluster": { - "description": "A Google VMware User Cluster.\n\n\n\n## Example Usage\n\n### Gkeonprem Vmware Cluster Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster_basic = new gcp.gkeonprem.VMwareCluster(\"cluster-basic\", {\n name: \"cluster-basic\",\n location: \"us-west1\",\n adminClusterMembership: \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n description: \"test cluster\",\n onPremVersion: \"1.13.1-gke.35\",\n annotations: {},\n networkConfig: {\n serviceAddressCidrBlocks: [\"10.96.0.0/12\"],\n podAddressCidrBlocks: [\"192.168.0.0/16\"],\n dhcpIpConfig: {\n enabled: true,\n },\n },\n controlPlaneNode: {\n cpus: 4,\n memory: 8192,\n replicas: 1,\n },\n loadBalancer: {\n vipConfig: {\n controlPlaneVip: \"10.251.133.5\",\n ingressVip: \"10.251.135.19\",\n },\n metalLbConfig: {\n addressPools: [\n {\n pool: \"ingress-ip\",\n manualAssign: true,\n addresses: [\"10.251.135.19\"],\n avoidBuggyIps: true,\n },\n {\n pool: \"lb-test-ip\",\n manualAssign: true,\n addresses: [\"10.251.135.19\"],\n avoidBuggyIps: true,\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster_basic = gcp.gkeonprem.VMwareCluster(\"cluster-basic\",\n name=\"cluster-basic\",\n location=\"us-west1\",\n admin_cluster_membership=\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n description=\"test cluster\",\n on_prem_version=\"1.13.1-gke.35\",\n annotations={},\n network_config={\n \"service_address_cidr_blocks\": [\"10.96.0.0/12\"],\n \"pod_address_cidr_blocks\": [\"192.168.0.0/16\"],\n \"dhcp_ip_config\": {\n \"enabled\": True,\n },\n },\n control_plane_node={\n \"cpus\": 4,\n \"memory\": 8192,\n \"replicas\": 1,\n },\n load_balancer={\n \"vip_config\": {\n \"control_plane_vip\": \"10.251.133.5\",\n \"ingress_vip\": \"10.251.135.19\",\n },\n \"metal_lb_config\": {\n \"address_pools\": [\n {\n \"pool\": \"ingress-ip\",\n \"manual_assign\": True,\n \"addresses\": [\"10.251.135.19\"],\n \"avoid_buggy_ips\": True,\n },\n {\n \"pool\": \"lb-test-ip\",\n \"manual_assign\": True,\n \"addresses\": [\"10.251.135.19\"],\n \"avoid_buggy_ips\": True,\n },\n ],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cluster_basic = new Gcp.GkeOnPrem.VMwareCluster(\"cluster-basic\", new()\n {\n Name = \"cluster-basic\",\n Location = \"us-west1\",\n AdminClusterMembership = \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n Description = \"test cluster\",\n OnPremVersion = \"1.13.1-gke.35\",\n Annotations = null,\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigArgs\n {\n ServiceAddressCidrBlocks = new[]\n {\n \"10.96.0.0/12\",\n },\n PodAddressCidrBlocks = new[]\n {\n \"192.168.0.0/16\",\n },\n DhcpIpConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigDhcpIpConfigArgs\n {\n Enabled = true,\n },\n },\n ControlPlaneNode = new Gcp.GkeOnPrem.Inputs.VMwareClusterControlPlaneNodeArgs\n {\n Cpus = 4,\n Memory = 8192,\n Replicas = 1,\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerArgs\n {\n VipConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.251.133.5\",\n IngressVip = \"10.251.135.19\",\n },\n MetalLbConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerMetalLbConfigArgs\n {\n AddressPools = new[]\n {\n new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs\n {\n Pool = \"ingress-ip\",\n ManualAssign = true,\n Addresses = new[]\n {\n \"10.251.135.19\",\n },\n AvoidBuggyIps = true,\n },\n new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs\n {\n Pool = \"lb-test-ip\",\n ManualAssign = true,\n Addresses = new[]\n {\n \"10.251.135.19\",\n },\n AvoidBuggyIps = true,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkeonprem\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gkeonprem.NewVMwareCluster(ctx, \"cluster-basic\", \u0026gkeonprem.VMwareClusterArgs{\n\t\t\tName: pulumi.String(\"cluster-basic\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tAdminClusterMembership: pulumi.String(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\"),\n\t\t\tDescription: pulumi.String(\"test cluster\"),\n\t\t\tOnPremVersion: pulumi.String(\"1.13.1-gke.35\"),\n\t\t\tAnnotations: nil,\n\t\t\tNetworkConfig: \u0026gkeonprem.VMwareClusterNetworkConfigArgs{\n\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.96.0.0/12\"),\n\t\t\t\t},\n\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"192.168.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tDhcpIpConfig: \u0026gkeonprem.VMwareClusterNetworkConfigDhcpIpConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tControlPlaneNode: \u0026gkeonprem.VMwareClusterControlPlaneNodeArgs{\n\t\t\t\tCpus: pulumi.Int(4),\n\t\t\t\tMemory: pulumi.Int(8192),\n\t\t\t\tReplicas: pulumi.Int(1),\n\t\t\t},\n\t\t\tLoadBalancer: \u0026gkeonprem.VMwareClusterLoadBalancerArgs{\n\t\t\t\tVipConfig: \u0026gkeonprem.VMwareClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.251.133.5\"),\n\t\t\t\t\tIngressVip: pulumi.String(\"10.251.135.19\"),\n\t\t\t\t},\n\t\t\t\tMetalLbConfig: \u0026gkeonprem.VMwareClusterLoadBalancerMetalLbConfigArgs{\n\t\t\t\t\tAddressPools: gkeonprem.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArray{\n\t\t\t\t\t\t\u0026gkeonprem.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs{\n\t\t\t\t\t\t\tPool: pulumi.String(\"ingress-ip\"),\n\t\t\t\t\t\t\tManualAssign: pulumi.Bool(true),\n\t\t\t\t\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.251.135.19\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAvoidBuggyIps: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026gkeonprem.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs{\n\t\t\t\t\t\t\tPool: pulumi.String(\"lb-test-ip\"),\n\t\t\t\t\t\t\tManualAssign: pulumi.Bool(true),\n\t\t\t\t\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.251.135.19\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAvoidBuggyIps: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkeonprem.VMwareCluster;\nimport com.pulumi.gcp.gkeonprem.VMwareClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigDhcpIpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterControlPlaneNodeArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerMetalLbConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cluster_basic = new VMwareCluster(\"cluster-basic\", VMwareClusterArgs.builder()\n .name(\"cluster-basic\")\n .location(\"us-west1\")\n .adminClusterMembership(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\")\n .description(\"test cluster\")\n .onPremVersion(\"1.13.1-gke.35\")\n .annotations()\n .networkConfig(VMwareClusterNetworkConfigArgs.builder()\n .serviceAddressCidrBlocks(\"10.96.0.0/12\")\n .podAddressCidrBlocks(\"192.168.0.0/16\")\n .dhcpIpConfig(VMwareClusterNetworkConfigDhcpIpConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .controlPlaneNode(VMwareClusterControlPlaneNodeArgs.builder()\n .cpus(4)\n .memory(8192)\n .replicas(1)\n .build())\n .loadBalancer(VMwareClusterLoadBalancerArgs.builder()\n .vipConfig(VMwareClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.251.133.5\")\n .ingressVip(\"10.251.135.19\")\n .build())\n .metalLbConfig(VMwareClusterLoadBalancerMetalLbConfigArgs.builder()\n .addressPools( \n VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs.builder()\n .pool(\"ingress-ip\")\n .manualAssign(\"true\")\n .addresses(\"10.251.135.19\")\n .avoidBuggyIps(true)\n .build(),\n VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs.builder()\n .pool(\"lb-test-ip\")\n .manualAssign(\"true\")\n .addresses(\"10.251.135.19\")\n .avoidBuggyIps(true)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster-basic:\n type: gcp:gkeonprem:VMwareCluster\n properties:\n name: cluster-basic\n location: us-west1\n adminClusterMembership: projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\n description: test cluster\n onPremVersion: 1.13.1-gke.35\n annotations: {}\n networkConfig:\n serviceAddressCidrBlocks:\n - 10.96.0.0/12\n podAddressCidrBlocks:\n - 192.168.0.0/16\n dhcpIpConfig:\n enabled: true\n controlPlaneNode:\n cpus: 4\n memory: 8192\n replicas: 1\n loadBalancer:\n vipConfig:\n controlPlaneVip: 10.251.133.5\n ingressVip: 10.251.135.19\n metalLbConfig:\n addressPools:\n - pool: ingress-ip\n manualAssign: 'true'\n addresses:\n - 10.251.135.19\n avoidBuggyIps: true\n - pool: lb-test-ip\n manualAssign: 'true'\n addresses:\n - 10.251.135.19\n avoidBuggyIps: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkeonprem Vmware Cluster F5lb\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster_f5lb = new gcp.gkeonprem.VMwareCluster(\"cluster-f5lb\", {\n name: \"cluster-f5lb\",\n location: \"us-west1\",\n adminClusterMembership: \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n description: \"test cluster\",\n onPremVersion: \"1.13.1-gke.35\",\n annotations: {},\n networkConfig: {\n serviceAddressCidrBlocks: [\"10.96.0.0/12\"],\n podAddressCidrBlocks: [\"192.168.0.0/16\"],\n dhcpIpConfig: {\n enabled: true,\n },\n controlPlaneV2Config: {\n controlPlaneIpBlock: {\n ips: [{\n hostname: \"test-hostname\",\n ip: \"10.0.0.1\",\n }],\n netmask: \"10.0.0.1/32\",\n gateway: \"test-gateway\",\n },\n },\n vcenterNetwork: \"test-vcenter-network\",\n },\n controlPlaneNode: {\n cpus: 4,\n memory: 8192,\n replicas: 1,\n autoResizeConfig: {\n enabled: true,\n },\n },\n loadBalancer: {\n vipConfig: {\n controlPlaneVip: \"10.251.133.5\",\n ingressVip: \"10.251.135.19\",\n },\n f5Config: {\n address: \"10.0.0.1\",\n partition: \"test-partition\",\n snatPool: \"test-snap-pool\",\n },\n },\n dataplaneV2: {\n dataplaneV2Enabled: true,\n windowsDataplaneV2Enabled: true,\n advancedNetworking: true,\n },\n vmTrackingEnabled: true,\n enableControlPlaneV2: true,\n disableBundledIngress: true,\n authorization: {\n adminUsers: [{\n username: \"testuser@gmail.com\",\n }],\n },\n antiAffinityGroups: {\n aagConfigDisabled: true,\n },\n autoRepairConfig: {\n enabled: true,\n },\n storage: {\n vsphereCsiDisabled: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster_f5lb = gcp.gkeonprem.VMwareCluster(\"cluster-f5lb\",\n name=\"cluster-f5lb\",\n location=\"us-west1\",\n admin_cluster_membership=\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n description=\"test cluster\",\n on_prem_version=\"1.13.1-gke.35\",\n annotations={},\n network_config={\n \"service_address_cidr_blocks\": [\"10.96.0.0/12\"],\n \"pod_address_cidr_blocks\": [\"192.168.0.0/16\"],\n \"dhcp_ip_config\": {\n \"enabled\": True,\n },\n \"control_plane_v2_config\": {\n \"control_plane_ip_block\": {\n \"ips\": [{\n \"hostname\": \"test-hostname\",\n \"ip\": \"10.0.0.1\",\n }],\n \"netmask\": \"10.0.0.1/32\",\n \"gateway\": \"test-gateway\",\n },\n },\n \"vcenter_network\": \"test-vcenter-network\",\n },\n control_plane_node={\n \"cpus\": 4,\n \"memory\": 8192,\n \"replicas\": 1,\n \"auto_resize_config\": {\n \"enabled\": True,\n },\n },\n load_balancer={\n \"vip_config\": {\n \"control_plane_vip\": \"10.251.133.5\",\n \"ingress_vip\": \"10.251.135.19\",\n },\n \"f5_config\": {\n \"address\": \"10.0.0.1\",\n \"partition\": \"test-partition\",\n \"snat_pool\": \"test-snap-pool\",\n },\n },\n dataplane_v2={\n \"dataplane_v2_enabled\": True,\n \"windows_dataplane_v2_enabled\": True,\n \"advanced_networking\": True,\n },\n vm_tracking_enabled=True,\n enable_control_plane_v2=True,\n disable_bundled_ingress=True,\n authorization={\n \"admin_users\": [{\n \"username\": \"testuser@gmail.com\",\n }],\n },\n anti_affinity_groups={\n \"aag_config_disabled\": True,\n },\n auto_repair_config={\n \"enabled\": True,\n },\n storage={\n \"vsphere_csi_disabled\": True,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cluster_f5lb = new Gcp.GkeOnPrem.VMwareCluster(\"cluster-f5lb\", new()\n {\n Name = \"cluster-f5lb\",\n Location = \"us-west1\",\n AdminClusterMembership = \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n Description = \"test cluster\",\n OnPremVersion = \"1.13.1-gke.35\",\n Annotations = null,\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigArgs\n {\n ServiceAddressCidrBlocks = new[]\n {\n \"10.96.0.0/12\",\n },\n PodAddressCidrBlocks = new[]\n {\n \"192.168.0.0/16\",\n },\n DhcpIpConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigDhcpIpConfigArgs\n {\n Enabled = true,\n },\n ControlPlaneV2Config = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigControlPlaneV2ConfigArgs\n {\n ControlPlaneIpBlock = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigControlPlaneV2ConfigControlPlaneIpBlockArgs\n {\n Ips = new[]\n {\n new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigControlPlaneV2ConfigControlPlaneIpBlockIpArgs\n {\n Hostname = \"test-hostname\",\n Ip = \"10.0.0.1\",\n },\n },\n Netmask = \"10.0.0.1/32\",\n Gateway = \"test-gateway\",\n },\n },\n VcenterNetwork = \"test-vcenter-network\",\n },\n ControlPlaneNode = new Gcp.GkeOnPrem.Inputs.VMwareClusterControlPlaneNodeArgs\n {\n Cpus = 4,\n Memory = 8192,\n Replicas = 1,\n AutoResizeConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterControlPlaneNodeAutoResizeConfigArgs\n {\n Enabled = true,\n },\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerArgs\n {\n VipConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.251.133.5\",\n IngressVip = \"10.251.135.19\",\n },\n F5Config = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerF5ConfigArgs\n {\n Address = \"10.0.0.1\",\n Partition = \"test-partition\",\n SnatPool = \"test-snap-pool\",\n },\n },\n DataplaneV2 = new Gcp.GkeOnPrem.Inputs.VMwareClusterDataplaneV2Args\n {\n DataplaneV2Enabled = true,\n WindowsDataplaneV2Enabled = true,\n AdvancedNetworking = true,\n },\n VmTrackingEnabled = true,\n EnableControlPlaneV2 = true,\n DisableBundledIngress = true,\n Authorization = new Gcp.GkeOnPrem.Inputs.VMwareClusterAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.GkeOnPrem.Inputs.VMwareClusterAuthorizationAdminUserArgs\n {\n Username = \"testuser@gmail.com\",\n },\n },\n },\n AntiAffinityGroups = new Gcp.GkeOnPrem.Inputs.VMwareClusterAntiAffinityGroupsArgs\n {\n AagConfigDisabled = true,\n },\n AutoRepairConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterAutoRepairConfigArgs\n {\n Enabled = true,\n },\n Storage = new Gcp.GkeOnPrem.Inputs.VMwareClusterStorageArgs\n {\n VsphereCsiDisabled = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkeonprem\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gkeonprem.NewVMwareCluster(ctx, \"cluster-f5lb\", \u0026gkeonprem.VMwareClusterArgs{\n\t\t\tName: pulumi.String(\"cluster-f5lb\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tAdminClusterMembership: pulumi.String(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\"),\n\t\t\tDescription: pulumi.String(\"test cluster\"),\n\t\t\tOnPremVersion: pulumi.String(\"1.13.1-gke.35\"),\n\t\t\tAnnotations: nil,\n\t\t\tNetworkConfig: \u0026gkeonprem.VMwareClusterNetworkConfigArgs{\n\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.96.0.0/12\"),\n\t\t\t\t},\n\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"192.168.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tDhcpIpConfig: \u0026gkeonprem.VMwareClusterNetworkConfigDhcpIpConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tControlPlaneV2Config: \u0026gkeonprem.VMwareClusterNetworkConfigControlPlaneV2ConfigArgs{\n\t\t\t\t\tControlPlaneIpBlock: \u0026gkeonprem.VMwareClusterNetworkConfigControlPlaneV2ConfigControlPlaneIpBlockArgs{\n\t\t\t\t\t\tIps: gkeonprem.VMwareClusterNetworkConfigControlPlaneV2ConfigControlPlaneIpBlockIpArray{\n\t\t\t\t\t\t\t\u0026gkeonprem.VMwareClusterNetworkConfigControlPlaneV2ConfigControlPlaneIpBlockIpArgs{\n\t\t\t\t\t\t\t\tHostname: pulumi.String(\"test-hostname\"),\n\t\t\t\t\t\t\t\tIp: pulumi.String(\"10.0.0.1\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tNetmask: pulumi.String(\"10.0.0.1/32\"),\n\t\t\t\t\t\tGateway: pulumi.String(\"test-gateway\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tVcenterNetwork: pulumi.String(\"test-vcenter-network\"),\n\t\t\t},\n\t\t\tControlPlaneNode: \u0026gkeonprem.VMwareClusterControlPlaneNodeArgs{\n\t\t\t\tCpus: pulumi.Int(4),\n\t\t\t\tMemory: pulumi.Int(8192),\n\t\t\t\tReplicas: pulumi.Int(1),\n\t\t\t\tAutoResizeConfig: \u0026gkeonprem.VMwareClusterControlPlaneNodeAutoResizeConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLoadBalancer: \u0026gkeonprem.VMwareClusterLoadBalancerArgs{\n\t\t\t\tVipConfig: \u0026gkeonprem.VMwareClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.251.133.5\"),\n\t\t\t\t\tIngressVip: pulumi.String(\"10.251.135.19\"),\n\t\t\t\t},\n\t\t\t\tF5Config: \u0026gkeonprem.VMwareClusterLoadBalancerF5ConfigArgs{\n\t\t\t\t\tAddress: pulumi.String(\"10.0.0.1\"),\n\t\t\t\t\tPartition: pulumi.String(\"test-partition\"),\n\t\t\t\t\tSnatPool: pulumi.String(\"test-snap-pool\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDataplaneV2: \u0026gkeonprem.VMwareClusterDataplaneV2Args{\n\t\t\t\tDataplaneV2Enabled: pulumi.Bool(true),\n\t\t\t\tWindowsDataplaneV2Enabled: pulumi.Bool(true),\n\t\t\t\tAdvancedNetworking: pulumi.Bool(true),\n\t\t\t},\n\t\t\tVmTrackingEnabled: pulumi.Bool(true),\n\t\t\tEnableControlPlaneV2: pulumi.Bool(true),\n\t\t\tDisableBundledIngress: pulumi.Bool(true),\n\t\t\tAuthorization: \u0026gkeonprem.VMwareClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: gkeonprem.VMwareClusterAuthorizationAdminUserArray{\n\t\t\t\t\t\u0026gkeonprem.VMwareClusterAuthorizationAdminUserArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"testuser@gmail.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAntiAffinityGroups: \u0026gkeonprem.VMwareClusterAntiAffinityGroupsArgs{\n\t\t\t\tAagConfigDisabled: pulumi.Bool(true),\n\t\t\t},\n\t\t\tAutoRepairConfig: \u0026gkeonprem.VMwareClusterAutoRepairConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t},\n\t\t\tStorage: \u0026gkeonprem.VMwareClusterStorageArgs{\n\t\t\t\tVsphereCsiDisabled: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkeonprem.VMwareCluster;\nimport com.pulumi.gcp.gkeonprem.VMwareClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigDhcpIpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigControlPlaneV2ConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigControlPlaneV2ConfigControlPlaneIpBlockArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterControlPlaneNodeArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterControlPlaneNodeAutoResizeConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerF5ConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterDataplaneV2Args;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterAuthorizationArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterAntiAffinityGroupsArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterAutoRepairConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterStorageArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cluster_f5lb = new VMwareCluster(\"cluster-f5lb\", VMwareClusterArgs.builder()\n .name(\"cluster-f5lb\")\n .location(\"us-west1\")\n .adminClusterMembership(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\")\n .description(\"test cluster\")\n .onPremVersion(\"1.13.1-gke.35\")\n .annotations()\n .networkConfig(VMwareClusterNetworkConfigArgs.builder()\n .serviceAddressCidrBlocks(\"10.96.0.0/12\")\n .podAddressCidrBlocks(\"192.168.0.0/16\")\n .dhcpIpConfig(VMwareClusterNetworkConfigDhcpIpConfigArgs.builder()\n .enabled(true)\n .build())\n .controlPlaneV2Config(VMwareClusterNetworkConfigControlPlaneV2ConfigArgs.builder()\n .controlPlaneIpBlock(VMwareClusterNetworkConfigControlPlaneV2ConfigControlPlaneIpBlockArgs.builder()\n .ips(VMwareClusterNetworkConfigControlPlaneV2ConfigControlPlaneIpBlockIpArgs.builder()\n .hostname(\"test-hostname\")\n .ip(\"10.0.0.1\")\n .build())\n .netmask(\"10.0.0.1/32\")\n .gateway(\"test-gateway\")\n .build())\n .build())\n .vcenterNetwork(\"test-vcenter-network\")\n .build())\n .controlPlaneNode(VMwareClusterControlPlaneNodeArgs.builder()\n .cpus(4)\n .memory(8192)\n .replicas(1)\n .autoResizeConfig(VMwareClusterControlPlaneNodeAutoResizeConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .loadBalancer(VMwareClusterLoadBalancerArgs.builder()\n .vipConfig(VMwareClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.251.133.5\")\n .ingressVip(\"10.251.135.19\")\n .build())\n .f5Config(VMwareClusterLoadBalancerF5ConfigArgs.builder()\n .address(\"10.0.0.1\")\n .partition(\"test-partition\")\n .snatPool(\"test-snap-pool\")\n .build())\n .build())\n .dataplaneV2(VMwareClusterDataplaneV2Args.builder()\n .dataplaneV2Enabled(true)\n .windowsDataplaneV2Enabled(true)\n .advancedNetworking(true)\n .build())\n .vmTrackingEnabled(true)\n .enableControlPlaneV2(true)\n .disableBundledIngress(true)\n .authorization(VMwareClusterAuthorizationArgs.builder()\n .adminUsers(VMwareClusterAuthorizationAdminUserArgs.builder()\n .username(\"testuser@gmail.com\")\n .build())\n .build())\n .antiAffinityGroups(VMwareClusterAntiAffinityGroupsArgs.builder()\n .aagConfigDisabled(true)\n .build())\n .autoRepairConfig(VMwareClusterAutoRepairConfigArgs.builder()\n .enabled(true)\n .build())\n .storage(VMwareClusterStorageArgs.builder()\n .vsphereCsiDisabled(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster-f5lb:\n type: gcp:gkeonprem:VMwareCluster\n properties:\n name: cluster-f5lb\n location: us-west1\n adminClusterMembership: projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\n description: test cluster\n onPremVersion: 1.13.1-gke.35\n annotations: {}\n networkConfig:\n serviceAddressCidrBlocks:\n - 10.96.0.0/12\n podAddressCidrBlocks:\n - 192.168.0.0/16\n dhcpIpConfig:\n enabled: true\n controlPlaneV2Config:\n controlPlaneIpBlock:\n ips:\n - hostname: test-hostname\n ip: 10.0.0.1\n netmask: 10.0.0.1/32\n gateway: test-gateway\n vcenterNetwork: test-vcenter-network\n controlPlaneNode:\n cpus: 4\n memory: 8192\n replicas: 1\n autoResizeConfig:\n enabled: true\n loadBalancer:\n vipConfig:\n controlPlaneVip: 10.251.133.5\n ingressVip: 10.251.135.19\n f5Config:\n address: 10.0.0.1\n partition: test-partition\n snatPool: test-snap-pool\n dataplaneV2:\n dataplaneV2Enabled: true\n windowsDataplaneV2Enabled: true\n advancedNetworking: true\n vmTrackingEnabled: true\n enableControlPlaneV2: true\n disableBundledIngress: true\n authorization:\n adminUsers:\n - username: testuser@gmail.com\n antiAffinityGroups:\n aagConfigDisabled: true\n autoRepairConfig:\n enabled: true\n storage:\n vsphereCsiDisabled: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkeonprem Vmware Cluster Manuallb\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster_manuallb = new gcp.gkeonprem.VMwareCluster(\"cluster-manuallb\", {\n name: \"cluster-manuallb\",\n location: \"us-west1\",\n adminClusterMembership: \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n description: \"test cluster\",\n onPremVersion: \"1.13.1-gke.35\",\n annotations: {},\n networkConfig: {\n serviceAddressCidrBlocks: [\"10.96.0.0/12\"],\n podAddressCidrBlocks: [\"192.168.0.0/16\"],\n hostConfig: {\n dnsServers: [\"10.254.41.1\"],\n ntpServers: [\"216.239.35.8\"],\n dnsSearchDomains: [\"test-domain\"],\n },\n staticIpConfig: {\n ipBlocks: [{\n netmask: \"255.255.252.0\",\n gateway: \"10.251.31.254\",\n ips: [\n {\n ip: \"10.251.30.153\",\n hostname: \"test-hostname1\",\n },\n {\n ip: \"10.251.31.206\",\n hostname: \"test-hostname2\",\n },\n {\n ip: \"10.251.31.193\",\n hostname: \"test-hostname3\",\n },\n {\n ip: \"10.251.30.230\",\n hostname: \"test-hostname4\",\n },\n ],\n }],\n },\n },\n controlPlaneNode: {\n cpus: 4,\n memory: 8192,\n replicas: 1,\n autoResizeConfig: {\n enabled: true,\n },\n },\n loadBalancer: {\n vipConfig: {\n controlPlaneVip: \"10.251.133.5\",\n ingressVip: \"10.251.135.19\",\n },\n manualLbConfig: {\n ingressHttpNodePort: 30005,\n ingressHttpsNodePort: 30006,\n controlPlaneNodePort: 30007,\n konnectivityServerNodePort: 30008,\n },\n },\n vcenter: {\n resourcePool: \"test-resource-pool\",\n datastore: \"test-datastore\",\n datacenter: \"test-datacenter\",\n cluster: \"test-cluster\",\n folder: \"test-folder\",\n caCertData: \"test-ca-cert-data\",\n storagePolicyName: \"test-storage-policy-name\",\n },\n dataplaneV2: {\n dataplaneV2Enabled: true,\n windowsDataplaneV2Enabled: true,\n advancedNetworking: true,\n },\n vmTrackingEnabled: true,\n enableControlPlaneV2: true,\n upgradePolicy: {\n controlPlaneOnly: true,\n },\n authorization: {\n adminUsers: [{\n username: \"testuser@gmail.com\",\n }],\n },\n antiAffinityGroups: {\n aagConfigDisabled: true,\n },\n autoRepairConfig: {\n enabled: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster_manuallb = gcp.gkeonprem.VMwareCluster(\"cluster-manuallb\",\n name=\"cluster-manuallb\",\n location=\"us-west1\",\n admin_cluster_membership=\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n description=\"test cluster\",\n on_prem_version=\"1.13.1-gke.35\",\n annotations={},\n network_config={\n \"service_address_cidr_blocks\": [\"10.96.0.0/12\"],\n \"pod_address_cidr_blocks\": [\"192.168.0.0/16\"],\n \"host_config\": {\n \"dns_servers\": [\"10.254.41.1\"],\n \"ntp_servers\": [\"216.239.35.8\"],\n \"dns_search_domains\": [\"test-domain\"],\n },\n \"static_ip_config\": {\n \"ip_blocks\": [{\n \"netmask\": \"255.255.252.0\",\n \"gateway\": \"10.251.31.254\",\n \"ips\": [\n {\n \"ip\": \"10.251.30.153\",\n \"hostname\": \"test-hostname1\",\n },\n {\n \"ip\": \"10.251.31.206\",\n \"hostname\": \"test-hostname2\",\n },\n {\n \"ip\": \"10.251.31.193\",\n \"hostname\": \"test-hostname3\",\n },\n {\n \"ip\": \"10.251.30.230\",\n \"hostname\": \"test-hostname4\",\n },\n ],\n }],\n },\n },\n control_plane_node={\n \"cpus\": 4,\n \"memory\": 8192,\n \"replicas\": 1,\n \"auto_resize_config\": {\n \"enabled\": True,\n },\n },\n load_balancer={\n \"vip_config\": {\n \"control_plane_vip\": \"10.251.133.5\",\n \"ingress_vip\": \"10.251.135.19\",\n },\n \"manual_lb_config\": {\n \"ingress_http_node_port\": 30005,\n \"ingress_https_node_port\": 30006,\n \"control_plane_node_port\": 30007,\n \"konnectivity_server_node_port\": 30008,\n },\n },\n vcenter={\n \"resource_pool\": \"test-resource-pool\",\n \"datastore\": \"test-datastore\",\n \"datacenter\": \"test-datacenter\",\n \"cluster\": \"test-cluster\",\n \"folder\": \"test-folder\",\n \"ca_cert_data\": \"test-ca-cert-data\",\n \"storage_policy_name\": \"test-storage-policy-name\",\n },\n dataplane_v2={\n \"dataplane_v2_enabled\": True,\n \"windows_dataplane_v2_enabled\": True,\n \"advanced_networking\": True,\n },\n vm_tracking_enabled=True,\n enable_control_plane_v2=True,\n upgrade_policy={\n \"control_plane_only\": True,\n },\n authorization={\n \"admin_users\": [{\n \"username\": \"testuser@gmail.com\",\n }],\n },\n anti_affinity_groups={\n \"aag_config_disabled\": True,\n },\n auto_repair_config={\n \"enabled\": True,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cluster_manuallb = new Gcp.GkeOnPrem.VMwareCluster(\"cluster-manuallb\", new()\n {\n Name = \"cluster-manuallb\",\n Location = \"us-west1\",\n AdminClusterMembership = \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n Description = \"test cluster\",\n OnPremVersion = \"1.13.1-gke.35\",\n Annotations = null,\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigArgs\n {\n ServiceAddressCidrBlocks = new[]\n {\n \"10.96.0.0/12\",\n },\n PodAddressCidrBlocks = new[]\n {\n \"192.168.0.0/16\",\n },\n HostConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigHostConfigArgs\n {\n DnsServers = new[]\n {\n \"10.254.41.1\",\n },\n NtpServers = new[]\n {\n \"216.239.35.8\",\n },\n DnsSearchDomains = new[]\n {\n \"test-domain\",\n },\n },\n StaticIpConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigStaticIpConfigArgs\n {\n IpBlocks = new[]\n {\n new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigStaticIpConfigIpBlockArgs\n {\n Netmask = \"255.255.252.0\",\n Gateway = \"10.251.31.254\",\n Ips = new[]\n {\n new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs\n {\n Ip = \"10.251.30.153\",\n Hostname = \"test-hostname1\",\n },\n new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs\n {\n Ip = \"10.251.31.206\",\n Hostname = \"test-hostname2\",\n },\n new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs\n {\n Ip = \"10.251.31.193\",\n Hostname = \"test-hostname3\",\n },\n new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs\n {\n Ip = \"10.251.30.230\",\n Hostname = \"test-hostname4\",\n },\n },\n },\n },\n },\n },\n ControlPlaneNode = new Gcp.GkeOnPrem.Inputs.VMwareClusterControlPlaneNodeArgs\n {\n Cpus = 4,\n Memory = 8192,\n Replicas = 1,\n AutoResizeConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterControlPlaneNodeAutoResizeConfigArgs\n {\n Enabled = true,\n },\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerArgs\n {\n VipConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.251.133.5\",\n IngressVip = \"10.251.135.19\",\n },\n ManualLbConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerManualLbConfigArgs\n {\n IngressHttpNodePort = 30005,\n IngressHttpsNodePort = 30006,\n ControlPlaneNodePort = 30007,\n KonnectivityServerNodePort = 30008,\n },\n },\n Vcenter = new Gcp.GkeOnPrem.Inputs.VMwareClusterVcenterArgs\n {\n ResourcePool = \"test-resource-pool\",\n Datastore = \"test-datastore\",\n Datacenter = \"test-datacenter\",\n Cluster = \"test-cluster\",\n Folder = \"test-folder\",\n CaCertData = \"test-ca-cert-data\",\n StoragePolicyName = \"test-storage-policy-name\",\n },\n DataplaneV2 = new Gcp.GkeOnPrem.Inputs.VMwareClusterDataplaneV2Args\n {\n DataplaneV2Enabled = true,\n WindowsDataplaneV2Enabled = true,\n AdvancedNetworking = true,\n },\n VmTrackingEnabled = true,\n EnableControlPlaneV2 = true,\n UpgradePolicy = new Gcp.GkeOnPrem.Inputs.VMwareClusterUpgradePolicyArgs\n {\n ControlPlaneOnly = true,\n },\n Authorization = new Gcp.GkeOnPrem.Inputs.VMwareClusterAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.GkeOnPrem.Inputs.VMwareClusterAuthorizationAdminUserArgs\n {\n Username = \"testuser@gmail.com\",\n },\n },\n },\n AntiAffinityGroups = new Gcp.GkeOnPrem.Inputs.VMwareClusterAntiAffinityGroupsArgs\n {\n AagConfigDisabled = true,\n },\n AutoRepairConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterAutoRepairConfigArgs\n {\n Enabled = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkeonprem\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gkeonprem.NewVMwareCluster(ctx, \"cluster-manuallb\", \u0026gkeonprem.VMwareClusterArgs{\n\t\t\tName: pulumi.String(\"cluster-manuallb\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tAdminClusterMembership: pulumi.String(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\"),\n\t\t\tDescription: pulumi.String(\"test cluster\"),\n\t\t\tOnPremVersion: pulumi.String(\"1.13.1-gke.35\"),\n\t\t\tAnnotations: nil,\n\t\t\tNetworkConfig: \u0026gkeonprem.VMwareClusterNetworkConfigArgs{\n\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.96.0.0/12\"),\n\t\t\t\t},\n\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"192.168.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tHostConfig: \u0026gkeonprem.VMwareClusterNetworkConfigHostConfigArgs{\n\t\t\t\t\tDnsServers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.254.41.1\"),\n\t\t\t\t\t},\n\t\t\t\t\tNtpServers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"216.239.35.8\"),\n\t\t\t\t\t},\n\t\t\t\t\tDnsSearchDomains: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"test-domain\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tStaticIpConfig: \u0026gkeonprem.VMwareClusterNetworkConfigStaticIpConfigArgs{\n\t\t\t\t\tIpBlocks: gkeonprem.VMwareClusterNetworkConfigStaticIpConfigIpBlockArray{\n\t\t\t\t\t\t\u0026gkeonprem.VMwareClusterNetworkConfigStaticIpConfigIpBlockArgs{\n\t\t\t\t\t\t\tNetmask: pulumi.String(\"255.255.252.0\"),\n\t\t\t\t\t\t\tGateway: pulumi.String(\"10.251.31.254\"),\n\t\t\t\t\t\t\tIps: gkeonprem.VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArray{\n\t\t\t\t\t\t\t\t\u0026gkeonprem.VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs{\n\t\t\t\t\t\t\t\t\tIp: pulumi.String(\"10.251.30.153\"),\n\t\t\t\t\t\t\t\t\tHostname: pulumi.String(\"test-hostname1\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026gkeonprem.VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs{\n\t\t\t\t\t\t\t\t\tIp: pulumi.String(\"10.251.31.206\"),\n\t\t\t\t\t\t\t\t\tHostname: pulumi.String(\"test-hostname2\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026gkeonprem.VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs{\n\t\t\t\t\t\t\t\t\tIp: pulumi.String(\"10.251.31.193\"),\n\t\t\t\t\t\t\t\t\tHostname: pulumi.String(\"test-hostname3\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026gkeonprem.VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs{\n\t\t\t\t\t\t\t\t\tIp: pulumi.String(\"10.251.30.230\"),\n\t\t\t\t\t\t\t\t\tHostname: pulumi.String(\"test-hostname4\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tControlPlaneNode: \u0026gkeonprem.VMwareClusterControlPlaneNodeArgs{\n\t\t\t\tCpus: pulumi.Int(4),\n\t\t\t\tMemory: pulumi.Int(8192),\n\t\t\t\tReplicas: pulumi.Int(1),\n\t\t\t\tAutoResizeConfig: \u0026gkeonprem.VMwareClusterControlPlaneNodeAutoResizeConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLoadBalancer: \u0026gkeonprem.VMwareClusterLoadBalancerArgs{\n\t\t\t\tVipConfig: \u0026gkeonprem.VMwareClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.251.133.5\"),\n\t\t\t\t\tIngressVip: pulumi.String(\"10.251.135.19\"),\n\t\t\t\t},\n\t\t\t\tManualLbConfig: \u0026gkeonprem.VMwareClusterLoadBalancerManualLbConfigArgs{\n\t\t\t\t\tIngressHttpNodePort: pulumi.Int(30005),\n\t\t\t\t\tIngressHttpsNodePort: pulumi.Int(30006),\n\t\t\t\t\tControlPlaneNodePort: pulumi.Int(30007),\n\t\t\t\t\tKonnectivityServerNodePort: pulumi.Int(30008),\n\t\t\t\t},\n\t\t\t},\n\t\t\tVcenter: \u0026gkeonprem.VMwareClusterVcenterArgs{\n\t\t\t\tResourcePool: pulumi.String(\"test-resource-pool\"),\n\t\t\t\tDatastore: pulumi.String(\"test-datastore\"),\n\t\t\t\tDatacenter: pulumi.String(\"test-datacenter\"),\n\t\t\t\tCluster: pulumi.String(\"test-cluster\"),\n\t\t\t\tFolder: pulumi.String(\"test-folder\"),\n\t\t\t\tCaCertData: pulumi.String(\"test-ca-cert-data\"),\n\t\t\t\tStoragePolicyName: pulumi.String(\"test-storage-policy-name\"),\n\t\t\t},\n\t\t\tDataplaneV2: \u0026gkeonprem.VMwareClusterDataplaneV2Args{\n\t\t\t\tDataplaneV2Enabled: pulumi.Bool(true),\n\t\t\t\tWindowsDataplaneV2Enabled: pulumi.Bool(true),\n\t\t\t\tAdvancedNetworking: pulumi.Bool(true),\n\t\t\t},\n\t\t\tVmTrackingEnabled: pulumi.Bool(true),\n\t\t\tEnableControlPlaneV2: pulumi.Bool(true),\n\t\t\tUpgradePolicy: \u0026gkeonprem.VMwareClusterUpgradePolicyArgs{\n\t\t\t\tControlPlaneOnly: pulumi.Bool(true),\n\t\t\t},\n\t\t\tAuthorization: \u0026gkeonprem.VMwareClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: gkeonprem.VMwareClusterAuthorizationAdminUserArray{\n\t\t\t\t\t\u0026gkeonprem.VMwareClusterAuthorizationAdminUserArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"testuser@gmail.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAntiAffinityGroups: \u0026gkeonprem.VMwareClusterAntiAffinityGroupsArgs{\n\t\t\t\tAagConfigDisabled: pulumi.Bool(true),\n\t\t\t},\n\t\t\tAutoRepairConfig: \u0026gkeonprem.VMwareClusterAutoRepairConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkeonprem.VMwareCluster;\nimport com.pulumi.gcp.gkeonprem.VMwareClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigHostConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigStaticIpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterControlPlaneNodeArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterControlPlaneNodeAutoResizeConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerManualLbConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterVcenterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterDataplaneV2Args;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterUpgradePolicyArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterAuthorizationArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterAntiAffinityGroupsArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterAutoRepairConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cluster_manuallb = new VMwareCluster(\"cluster-manuallb\", VMwareClusterArgs.builder()\n .name(\"cluster-manuallb\")\n .location(\"us-west1\")\n .adminClusterMembership(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\")\n .description(\"test cluster\")\n .onPremVersion(\"1.13.1-gke.35\")\n .annotations()\n .networkConfig(VMwareClusterNetworkConfigArgs.builder()\n .serviceAddressCidrBlocks(\"10.96.0.0/12\")\n .podAddressCidrBlocks(\"192.168.0.0/16\")\n .hostConfig(VMwareClusterNetworkConfigHostConfigArgs.builder()\n .dnsServers(\"10.254.41.1\")\n .ntpServers(\"216.239.35.8\")\n .dnsSearchDomains(\"test-domain\")\n .build())\n .staticIpConfig(VMwareClusterNetworkConfigStaticIpConfigArgs.builder()\n .ipBlocks(VMwareClusterNetworkConfigStaticIpConfigIpBlockArgs.builder()\n .netmask(\"255.255.252.0\")\n .gateway(\"10.251.31.254\")\n .ips( \n VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs.builder()\n .ip(\"10.251.30.153\")\n .hostname(\"test-hostname1\")\n .build(),\n VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs.builder()\n .ip(\"10.251.31.206\")\n .hostname(\"test-hostname2\")\n .build(),\n VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs.builder()\n .ip(\"10.251.31.193\")\n .hostname(\"test-hostname3\")\n .build(),\n VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs.builder()\n .ip(\"10.251.30.230\")\n .hostname(\"test-hostname4\")\n .build())\n .build())\n .build())\n .build())\n .controlPlaneNode(VMwareClusterControlPlaneNodeArgs.builder()\n .cpus(4)\n .memory(8192)\n .replicas(1)\n .autoResizeConfig(VMwareClusterControlPlaneNodeAutoResizeConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .loadBalancer(VMwareClusterLoadBalancerArgs.builder()\n .vipConfig(VMwareClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.251.133.5\")\n .ingressVip(\"10.251.135.19\")\n .build())\n .manualLbConfig(VMwareClusterLoadBalancerManualLbConfigArgs.builder()\n .ingressHttpNodePort(30005)\n .ingressHttpsNodePort(30006)\n .controlPlaneNodePort(30007)\n .konnectivityServerNodePort(30008)\n .build())\n .build())\n .vcenter(VMwareClusterVcenterArgs.builder()\n .resourcePool(\"test-resource-pool\")\n .datastore(\"test-datastore\")\n .datacenter(\"test-datacenter\")\n .cluster(\"test-cluster\")\n .folder(\"test-folder\")\n .caCertData(\"test-ca-cert-data\")\n .storagePolicyName(\"test-storage-policy-name\")\n .build())\n .dataplaneV2(VMwareClusterDataplaneV2Args.builder()\n .dataplaneV2Enabled(true)\n .windowsDataplaneV2Enabled(true)\n .advancedNetworking(true)\n .build())\n .vmTrackingEnabled(true)\n .enableControlPlaneV2(true)\n .upgradePolicy(VMwareClusterUpgradePolicyArgs.builder()\n .controlPlaneOnly(true)\n .build())\n .authorization(VMwareClusterAuthorizationArgs.builder()\n .adminUsers(VMwareClusterAuthorizationAdminUserArgs.builder()\n .username(\"testuser@gmail.com\")\n .build())\n .build())\n .antiAffinityGroups(VMwareClusterAntiAffinityGroupsArgs.builder()\n .aagConfigDisabled(true)\n .build())\n .autoRepairConfig(VMwareClusterAutoRepairConfigArgs.builder()\n .enabled(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster-manuallb:\n type: gcp:gkeonprem:VMwareCluster\n properties:\n name: cluster-manuallb\n location: us-west1\n adminClusterMembership: projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\n description: test cluster\n onPremVersion: 1.13.1-gke.35\n annotations: {}\n networkConfig:\n serviceAddressCidrBlocks:\n - 10.96.0.0/12\n podAddressCidrBlocks:\n - 192.168.0.0/16\n hostConfig:\n dnsServers:\n - 10.254.41.1\n ntpServers:\n - 216.239.35.8\n dnsSearchDomains:\n - test-domain\n staticIpConfig:\n ipBlocks:\n - netmask: 255.255.252.0\n gateway: 10.251.31.254\n ips:\n - ip: 10.251.30.153\n hostname: test-hostname1\n - ip: 10.251.31.206\n hostname: test-hostname2\n - ip: 10.251.31.193\n hostname: test-hostname3\n - ip: 10.251.30.230\n hostname: test-hostname4\n controlPlaneNode:\n cpus: 4\n memory: 8192\n replicas: 1\n autoResizeConfig:\n enabled: true\n loadBalancer:\n vipConfig:\n controlPlaneVip: 10.251.133.5\n ingressVip: 10.251.135.19\n manualLbConfig:\n ingressHttpNodePort: 30005\n ingressHttpsNodePort: 30006\n controlPlaneNodePort: 30007\n konnectivityServerNodePort: 30008\n vcenter:\n resourcePool: test-resource-pool\n datastore: test-datastore\n datacenter: test-datacenter\n cluster: test-cluster\n folder: test-folder\n caCertData: test-ca-cert-data\n storagePolicyName: test-storage-policy-name\n dataplaneV2:\n dataplaneV2Enabled: true\n windowsDataplaneV2Enabled: true\n advancedNetworking: true\n vmTrackingEnabled: true\n enableControlPlaneV2: true\n upgradePolicy:\n controlPlaneOnly: true\n authorization:\n adminUsers:\n - username: testuser@gmail.com\n antiAffinityGroups:\n aagConfigDisabled: true\n autoRepairConfig:\n enabled: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVmwareCluster can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/vmwareClusters/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, VmwareCluster can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:gkeonprem/vMwareCluster:VMwareCluster default projects/{{project}}/locations/{{location}}/vmwareClusters/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkeonprem/vMwareCluster:VMwareCluster default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkeonprem/vMwareCluster:VMwareCluster default {{location}}/{{name}}\n```\n\n", + "description": "A Google VMware User Cluster.\n\n\n\n## Example Usage\n\n### Gkeonprem Vmware Cluster Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster_basic = new gcp.gkeonprem.VMwareCluster(\"cluster-basic\", {\n name: \"cluster-basic\",\n location: \"us-west1\",\n adminClusterMembership: \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n description: \"test cluster\",\n onPremVersion: \"1.13.1-gke.35\",\n annotations: {},\n networkConfig: {\n serviceAddressCidrBlocks: [\"10.96.0.0/12\"],\n podAddressCidrBlocks: [\"192.168.0.0/16\"],\n dhcpIpConfig: {\n enabled: true,\n },\n },\n controlPlaneNode: {\n cpus: 4,\n memory: 8192,\n replicas: 1,\n },\n loadBalancer: {\n vipConfig: {\n controlPlaneVip: \"10.251.133.5\",\n ingressVip: \"10.251.135.19\",\n },\n metalLbConfig: {\n addressPools: [\n {\n pool: \"ingress-ip\",\n manualAssign: true,\n addresses: [\"10.251.135.19\"],\n avoidBuggyIps: true,\n },\n {\n pool: \"lb-test-ip\",\n manualAssign: true,\n addresses: [\"10.251.135.19\"],\n avoidBuggyIps: true,\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster_basic = gcp.gkeonprem.VMwareCluster(\"cluster-basic\",\n name=\"cluster-basic\",\n location=\"us-west1\",\n admin_cluster_membership=\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n description=\"test cluster\",\n on_prem_version=\"1.13.1-gke.35\",\n annotations={},\n network_config={\n \"service_address_cidr_blocks\": [\"10.96.0.0/12\"],\n \"pod_address_cidr_blocks\": [\"192.168.0.0/16\"],\n \"dhcp_ip_config\": {\n \"enabled\": True,\n },\n },\n control_plane_node={\n \"cpus\": 4,\n \"memory\": 8192,\n \"replicas\": 1,\n },\n load_balancer={\n \"vip_config\": {\n \"control_plane_vip\": \"10.251.133.5\",\n \"ingress_vip\": \"10.251.135.19\",\n },\n \"metal_lb_config\": {\n \"address_pools\": [\n {\n \"pool\": \"ingress-ip\",\n \"manual_assign\": True,\n \"addresses\": [\"10.251.135.19\"],\n \"avoid_buggy_ips\": True,\n },\n {\n \"pool\": \"lb-test-ip\",\n \"manual_assign\": True,\n \"addresses\": [\"10.251.135.19\"],\n \"avoid_buggy_ips\": True,\n },\n ],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cluster_basic = new Gcp.GkeOnPrem.VMwareCluster(\"cluster-basic\", new()\n {\n Name = \"cluster-basic\",\n Location = \"us-west1\",\n AdminClusterMembership = \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n Description = \"test cluster\",\n OnPremVersion = \"1.13.1-gke.35\",\n Annotations = null,\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigArgs\n {\n ServiceAddressCidrBlocks = new[]\n {\n \"10.96.0.0/12\",\n },\n PodAddressCidrBlocks = new[]\n {\n \"192.168.0.0/16\",\n },\n DhcpIpConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigDhcpIpConfigArgs\n {\n Enabled = true,\n },\n },\n ControlPlaneNode = new Gcp.GkeOnPrem.Inputs.VMwareClusterControlPlaneNodeArgs\n {\n Cpus = 4,\n Memory = 8192,\n Replicas = 1,\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerArgs\n {\n VipConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.251.133.5\",\n IngressVip = \"10.251.135.19\",\n },\n MetalLbConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerMetalLbConfigArgs\n {\n AddressPools = new[]\n {\n new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs\n {\n Pool = \"ingress-ip\",\n ManualAssign = true,\n Addresses = new[]\n {\n \"10.251.135.19\",\n },\n AvoidBuggyIps = true,\n },\n new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs\n {\n Pool = \"lb-test-ip\",\n ManualAssign = true,\n Addresses = new[]\n {\n \"10.251.135.19\",\n },\n AvoidBuggyIps = true,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkeonprem\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gkeonprem.NewVMwareCluster(ctx, \"cluster-basic\", \u0026gkeonprem.VMwareClusterArgs{\n\t\t\tName: pulumi.String(\"cluster-basic\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tAdminClusterMembership: pulumi.String(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\"),\n\t\t\tDescription: pulumi.String(\"test cluster\"),\n\t\t\tOnPremVersion: pulumi.String(\"1.13.1-gke.35\"),\n\t\t\tAnnotations: pulumi.StringMap{},\n\t\t\tNetworkConfig: \u0026gkeonprem.VMwareClusterNetworkConfigArgs{\n\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.96.0.0/12\"),\n\t\t\t\t},\n\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"192.168.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tDhcpIpConfig: \u0026gkeonprem.VMwareClusterNetworkConfigDhcpIpConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tControlPlaneNode: \u0026gkeonprem.VMwareClusterControlPlaneNodeArgs{\n\t\t\t\tCpus: pulumi.Int(4),\n\t\t\t\tMemory: pulumi.Int(8192),\n\t\t\t\tReplicas: pulumi.Int(1),\n\t\t\t},\n\t\t\tLoadBalancer: \u0026gkeonprem.VMwareClusterLoadBalancerArgs{\n\t\t\t\tVipConfig: \u0026gkeonprem.VMwareClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.251.133.5\"),\n\t\t\t\t\tIngressVip: pulumi.String(\"10.251.135.19\"),\n\t\t\t\t},\n\t\t\t\tMetalLbConfig: \u0026gkeonprem.VMwareClusterLoadBalancerMetalLbConfigArgs{\n\t\t\t\t\tAddressPools: gkeonprem.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArray{\n\t\t\t\t\t\t\u0026gkeonprem.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs{\n\t\t\t\t\t\t\tPool: pulumi.String(\"ingress-ip\"),\n\t\t\t\t\t\t\tManualAssign: pulumi.Bool(true),\n\t\t\t\t\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.251.135.19\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAvoidBuggyIps: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026gkeonprem.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs{\n\t\t\t\t\t\t\tPool: pulumi.String(\"lb-test-ip\"),\n\t\t\t\t\t\t\tManualAssign: pulumi.Bool(true),\n\t\t\t\t\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.251.135.19\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAvoidBuggyIps: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkeonprem.VMwareCluster;\nimport com.pulumi.gcp.gkeonprem.VMwareClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigDhcpIpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterControlPlaneNodeArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerMetalLbConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cluster_basic = new VMwareCluster(\"cluster-basic\", VMwareClusterArgs.builder()\n .name(\"cluster-basic\")\n .location(\"us-west1\")\n .adminClusterMembership(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\")\n .description(\"test cluster\")\n .onPremVersion(\"1.13.1-gke.35\")\n .annotations()\n .networkConfig(VMwareClusterNetworkConfigArgs.builder()\n .serviceAddressCidrBlocks(\"10.96.0.0/12\")\n .podAddressCidrBlocks(\"192.168.0.0/16\")\n .dhcpIpConfig(VMwareClusterNetworkConfigDhcpIpConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .controlPlaneNode(VMwareClusterControlPlaneNodeArgs.builder()\n .cpus(4)\n .memory(8192)\n .replicas(1)\n .build())\n .loadBalancer(VMwareClusterLoadBalancerArgs.builder()\n .vipConfig(VMwareClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.251.133.5\")\n .ingressVip(\"10.251.135.19\")\n .build())\n .metalLbConfig(VMwareClusterLoadBalancerMetalLbConfigArgs.builder()\n .addressPools( \n VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs.builder()\n .pool(\"ingress-ip\")\n .manualAssign(\"true\")\n .addresses(\"10.251.135.19\")\n .avoidBuggyIps(true)\n .build(),\n VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs.builder()\n .pool(\"lb-test-ip\")\n .manualAssign(\"true\")\n .addresses(\"10.251.135.19\")\n .avoidBuggyIps(true)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster-basic:\n type: gcp:gkeonprem:VMwareCluster\n properties:\n name: cluster-basic\n location: us-west1\n adminClusterMembership: projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\n description: test cluster\n onPremVersion: 1.13.1-gke.35\n annotations: {}\n networkConfig:\n serviceAddressCidrBlocks:\n - 10.96.0.0/12\n podAddressCidrBlocks:\n - 192.168.0.0/16\n dhcpIpConfig:\n enabled: true\n controlPlaneNode:\n cpus: 4\n memory: 8192\n replicas: 1\n loadBalancer:\n vipConfig:\n controlPlaneVip: 10.251.133.5\n ingressVip: 10.251.135.19\n metalLbConfig:\n addressPools:\n - pool: ingress-ip\n manualAssign: 'true'\n addresses:\n - 10.251.135.19\n avoidBuggyIps: true\n - pool: lb-test-ip\n manualAssign: 'true'\n addresses:\n - 10.251.135.19\n avoidBuggyIps: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkeonprem Vmware Cluster F5lb\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster_f5lb = new gcp.gkeonprem.VMwareCluster(\"cluster-f5lb\", {\n name: \"cluster-f5lb\",\n location: \"us-west1\",\n adminClusterMembership: \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n description: \"test cluster\",\n onPremVersion: \"1.13.1-gke.35\",\n annotations: {},\n networkConfig: {\n serviceAddressCidrBlocks: [\"10.96.0.0/12\"],\n podAddressCidrBlocks: [\"192.168.0.0/16\"],\n dhcpIpConfig: {\n enabled: true,\n },\n controlPlaneV2Config: {\n controlPlaneIpBlock: {\n ips: [{\n hostname: \"test-hostname\",\n ip: \"10.0.0.1\",\n }],\n netmask: \"10.0.0.1/32\",\n gateway: \"test-gateway\",\n },\n },\n vcenterNetwork: \"test-vcenter-network\",\n },\n controlPlaneNode: {\n cpus: 4,\n memory: 8192,\n replicas: 1,\n autoResizeConfig: {\n enabled: true,\n },\n },\n loadBalancer: {\n vipConfig: {\n controlPlaneVip: \"10.251.133.5\",\n ingressVip: \"10.251.135.19\",\n },\n f5Config: {\n address: \"10.0.0.1\",\n partition: \"test-partition\",\n snatPool: \"test-snap-pool\",\n },\n },\n dataplaneV2: {\n dataplaneV2Enabled: true,\n windowsDataplaneV2Enabled: true,\n advancedNetworking: true,\n },\n vmTrackingEnabled: true,\n enableControlPlaneV2: true,\n disableBundledIngress: true,\n authorization: {\n adminUsers: [{\n username: \"testuser@gmail.com\",\n }],\n },\n antiAffinityGroups: {\n aagConfigDisabled: true,\n },\n autoRepairConfig: {\n enabled: true,\n },\n storage: {\n vsphereCsiDisabled: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster_f5lb = gcp.gkeonprem.VMwareCluster(\"cluster-f5lb\",\n name=\"cluster-f5lb\",\n location=\"us-west1\",\n admin_cluster_membership=\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n description=\"test cluster\",\n on_prem_version=\"1.13.1-gke.35\",\n annotations={},\n network_config={\n \"service_address_cidr_blocks\": [\"10.96.0.0/12\"],\n \"pod_address_cidr_blocks\": [\"192.168.0.0/16\"],\n \"dhcp_ip_config\": {\n \"enabled\": True,\n },\n \"control_plane_v2_config\": {\n \"control_plane_ip_block\": {\n \"ips\": [{\n \"hostname\": \"test-hostname\",\n \"ip\": \"10.0.0.1\",\n }],\n \"netmask\": \"10.0.0.1/32\",\n \"gateway\": \"test-gateway\",\n },\n },\n \"vcenter_network\": \"test-vcenter-network\",\n },\n control_plane_node={\n \"cpus\": 4,\n \"memory\": 8192,\n \"replicas\": 1,\n \"auto_resize_config\": {\n \"enabled\": True,\n },\n },\n load_balancer={\n \"vip_config\": {\n \"control_plane_vip\": \"10.251.133.5\",\n \"ingress_vip\": \"10.251.135.19\",\n },\n \"f5_config\": {\n \"address\": \"10.0.0.1\",\n \"partition\": \"test-partition\",\n \"snat_pool\": \"test-snap-pool\",\n },\n },\n dataplane_v2={\n \"dataplane_v2_enabled\": True,\n \"windows_dataplane_v2_enabled\": True,\n \"advanced_networking\": True,\n },\n vm_tracking_enabled=True,\n enable_control_plane_v2=True,\n disable_bundled_ingress=True,\n authorization={\n \"admin_users\": [{\n \"username\": \"testuser@gmail.com\",\n }],\n },\n anti_affinity_groups={\n \"aag_config_disabled\": True,\n },\n auto_repair_config={\n \"enabled\": True,\n },\n storage={\n \"vsphere_csi_disabled\": True,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cluster_f5lb = new Gcp.GkeOnPrem.VMwareCluster(\"cluster-f5lb\", new()\n {\n Name = \"cluster-f5lb\",\n Location = \"us-west1\",\n AdminClusterMembership = \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n Description = \"test cluster\",\n OnPremVersion = \"1.13.1-gke.35\",\n Annotations = null,\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigArgs\n {\n ServiceAddressCidrBlocks = new[]\n {\n \"10.96.0.0/12\",\n },\n PodAddressCidrBlocks = new[]\n {\n \"192.168.0.0/16\",\n },\n DhcpIpConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigDhcpIpConfigArgs\n {\n Enabled = true,\n },\n ControlPlaneV2Config = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigControlPlaneV2ConfigArgs\n {\n ControlPlaneIpBlock = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigControlPlaneV2ConfigControlPlaneIpBlockArgs\n {\n Ips = new[]\n {\n new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigControlPlaneV2ConfigControlPlaneIpBlockIpArgs\n {\n Hostname = \"test-hostname\",\n Ip = \"10.0.0.1\",\n },\n },\n Netmask = \"10.0.0.1/32\",\n Gateway = \"test-gateway\",\n },\n },\n VcenterNetwork = \"test-vcenter-network\",\n },\n ControlPlaneNode = new Gcp.GkeOnPrem.Inputs.VMwareClusterControlPlaneNodeArgs\n {\n Cpus = 4,\n Memory = 8192,\n Replicas = 1,\n AutoResizeConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterControlPlaneNodeAutoResizeConfigArgs\n {\n Enabled = true,\n },\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerArgs\n {\n VipConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.251.133.5\",\n IngressVip = \"10.251.135.19\",\n },\n F5Config = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerF5ConfigArgs\n {\n Address = \"10.0.0.1\",\n Partition = \"test-partition\",\n SnatPool = \"test-snap-pool\",\n },\n },\n DataplaneV2 = new Gcp.GkeOnPrem.Inputs.VMwareClusterDataplaneV2Args\n {\n DataplaneV2Enabled = true,\n WindowsDataplaneV2Enabled = true,\n AdvancedNetworking = true,\n },\n VmTrackingEnabled = true,\n EnableControlPlaneV2 = true,\n DisableBundledIngress = true,\n Authorization = new Gcp.GkeOnPrem.Inputs.VMwareClusterAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.GkeOnPrem.Inputs.VMwareClusterAuthorizationAdminUserArgs\n {\n Username = \"testuser@gmail.com\",\n },\n },\n },\n AntiAffinityGroups = new Gcp.GkeOnPrem.Inputs.VMwareClusterAntiAffinityGroupsArgs\n {\n AagConfigDisabled = true,\n },\n AutoRepairConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterAutoRepairConfigArgs\n {\n Enabled = true,\n },\n Storage = new Gcp.GkeOnPrem.Inputs.VMwareClusterStorageArgs\n {\n VsphereCsiDisabled = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkeonprem\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gkeonprem.NewVMwareCluster(ctx, \"cluster-f5lb\", \u0026gkeonprem.VMwareClusterArgs{\n\t\t\tName: pulumi.String(\"cluster-f5lb\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tAdminClusterMembership: pulumi.String(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\"),\n\t\t\tDescription: pulumi.String(\"test cluster\"),\n\t\t\tOnPremVersion: pulumi.String(\"1.13.1-gke.35\"),\n\t\t\tAnnotations: pulumi.StringMap{},\n\t\t\tNetworkConfig: \u0026gkeonprem.VMwareClusterNetworkConfigArgs{\n\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.96.0.0/12\"),\n\t\t\t\t},\n\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"192.168.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tDhcpIpConfig: \u0026gkeonprem.VMwareClusterNetworkConfigDhcpIpConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tControlPlaneV2Config: \u0026gkeonprem.VMwareClusterNetworkConfigControlPlaneV2ConfigArgs{\n\t\t\t\t\tControlPlaneIpBlock: \u0026gkeonprem.VMwareClusterNetworkConfigControlPlaneV2ConfigControlPlaneIpBlockArgs{\n\t\t\t\t\t\tIps: gkeonprem.VMwareClusterNetworkConfigControlPlaneV2ConfigControlPlaneIpBlockIpArray{\n\t\t\t\t\t\t\t\u0026gkeonprem.VMwareClusterNetworkConfigControlPlaneV2ConfigControlPlaneIpBlockIpArgs{\n\t\t\t\t\t\t\t\tHostname: pulumi.String(\"test-hostname\"),\n\t\t\t\t\t\t\t\tIp: pulumi.String(\"10.0.0.1\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tNetmask: pulumi.String(\"10.0.0.1/32\"),\n\t\t\t\t\t\tGateway: pulumi.String(\"test-gateway\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tVcenterNetwork: pulumi.String(\"test-vcenter-network\"),\n\t\t\t},\n\t\t\tControlPlaneNode: \u0026gkeonprem.VMwareClusterControlPlaneNodeArgs{\n\t\t\t\tCpus: pulumi.Int(4),\n\t\t\t\tMemory: pulumi.Int(8192),\n\t\t\t\tReplicas: pulumi.Int(1),\n\t\t\t\tAutoResizeConfig: \u0026gkeonprem.VMwareClusterControlPlaneNodeAutoResizeConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLoadBalancer: \u0026gkeonprem.VMwareClusterLoadBalancerArgs{\n\t\t\t\tVipConfig: \u0026gkeonprem.VMwareClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.251.133.5\"),\n\t\t\t\t\tIngressVip: pulumi.String(\"10.251.135.19\"),\n\t\t\t\t},\n\t\t\t\tF5Config: \u0026gkeonprem.VMwareClusterLoadBalancerF5ConfigArgs{\n\t\t\t\t\tAddress: pulumi.String(\"10.0.0.1\"),\n\t\t\t\t\tPartition: pulumi.String(\"test-partition\"),\n\t\t\t\t\tSnatPool: pulumi.String(\"test-snap-pool\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDataplaneV2: \u0026gkeonprem.VMwareClusterDataplaneV2Args{\n\t\t\t\tDataplaneV2Enabled: pulumi.Bool(true),\n\t\t\t\tWindowsDataplaneV2Enabled: pulumi.Bool(true),\n\t\t\t\tAdvancedNetworking: pulumi.Bool(true),\n\t\t\t},\n\t\t\tVmTrackingEnabled: pulumi.Bool(true),\n\t\t\tEnableControlPlaneV2: pulumi.Bool(true),\n\t\t\tDisableBundledIngress: pulumi.Bool(true),\n\t\t\tAuthorization: \u0026gkeonprem.VMwareClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: gkeonprem.VMwareClusterAuthorizationAdminUserArray{\n\t\t\t\t\t\u0026gkeonprem.VMwareClusterAuthorizationAdminUserArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"testuser@gmail.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAntiAffinityGroups: \u0026gkeonprem.VMwareClusterAntiAffinityGroupsArgs{\n\t\t\t\tAagConfigDisabled: pulumi.Bool(true),\n\t\t\t},\n\t\t\tAutoRepairConfig: \u0026gkeonprem.VMwareClusterAutoRepairConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t},\n\t\t\tStorage: \u0026gkeonprem.VMwareClusterStorageArgs{\n\t\t\t\tVsphereCsiDisabled: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkeonprem.VMwareCluster;\nimport com.pulumi.gcp.gkeonprem.VMwareClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigDhcpIpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigControlPlaneV2ConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigControlPlaneV2ConfigControlPlaneIpBlockArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterControlPlaneNodeArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterControlPlaneNodeAutoResizeConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerF5ConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterDataplaneV2Args;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterAuthorizationArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterAntiAffinityGroupsArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterAutoRepairConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterStorageArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cluster_f5lb = new VMwareCluster(\"cluster-f5lb\", VMwareClusterArgs.builder()\n .name(\"cluster-f5lb\")\n .location(\"us-west1\")\n .adminClusterMembership(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\")\n .description(\"test cluster\")\n .onPremVersion(\"1.13.1-gke.35\")\n .annotations()\n .networkConfig(VMwareClusterNetworkConfigArgs.builder()\n .serviceAddressCidrBlocks(\"10.96.0.0/12\")\n .podAddressCidrBlocks(\"192.168.0.0/16\")\n .dhcpIpConfig(VMwareClusterNetworkConfigDhcpIpConfigArgs.builder()\n .enabled(true)\n .build())\n .controlPlaneV2Config(VMwareClusterNetworkConfigControlPlaneV2ConfigArgs.builder()\n .controlPlaneIpBlock(VMwareClusterNetworkConfigControlPlaneV2ConfigControlPlaneIpBlockArgs.builder()\n .ips(VMwareClusterNetworkConfigControlPlaneV2ConfigControlPlaneIpBlockIpArgs.builder()\n .hostname(\"test-hostname\")\n .ip(\"10.0.0.1\")\n .build())\n .netmask(\"10.0.0.1/32\")\n .gateway(\"test-gateway\")\n .build())\n .build())\n .vcenterNetwork(\"test-vcenter-network\")\n .build())\n .controlPlaneNode(VMwareClusterControlPlaneNodeArgs.builder()\n .cpus(4)\n .memory(8192)\n .replicas(1)\n .autoResizeConfig(VMwareClusterControlPlaneNodeAutoResizeConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .loadBalancer(VMwareClusterLoadBalancerArgs.builder()\n .vipConfig(VMwareClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.251.133.5\")\n .ingressVip(\"10.251.135.19\")\n .build())\n .f5Config(VMwareClusterLoadBalancerF5ConfigArgs.builder()\n .address(\"10.0.0.1\")\n .partition(\"test-partition\")\n .snatPool(\"test-snap-pool\")\n .build())\n .build())\n .dataplaneV2(VMwareClusterDataplaneV2Args.builder()\n .dataplaneV2Enabled(true)\n .windowsDataplaneV2Enabled(true)\n .advancedNetworking(true)\n .build())\n .vmTrackingEnabled(true)\n .enableControlPlaneV2(true)\n .disableBundledIngress(true)\n .authorization(VMwareClusterAuthorizationArgs.builder()\n .adminUsers(VMwareClusterAuthorizationAdminUserArgs.builder()\n .username(\"testuser@gmail.com\")\n .build())\n .build())\n .antiAffinityGroups(VMwareClusterAntiAffinityGroupsArgs.builder()\n .aagConfigDisabled(true)\n .build())\n .autoRepairConfig(VMwareClusterAutoRepairConfigArgs.builder()\n .enabled(true)\n .build())\n .storage(VMwareClusterStorageArgs.builder()\n .vsphereCsiDisabled(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster-f5lb:\n type: gcp:gkeonprem:VMwareCluster\n properties:\n name: cluster-f5lb\n location: us-west1\n adminClusterMembership: projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\n description: test cluster\n onPremVersion: 1.13.1-gke.35\n annotations: {}\n networkConfig:\n serviceAddressCidrBlocks:\n - 10.96.0.0/12\n podAddressCidrBlocks:\n - 192.168.0.0/16\n dhcpIpConfig:\n enabled: true\n controlPlaneV2Config:\n controlPlaneIpBlock:\n ips:\n - hostname: test-hostname\n ip: 10.0.0.1\n netmask: 10.0.0.1/32\n gateway: test-gateway\n vcenterNetwork: test-vcenter-network\n controlPlaneNode:\n cpus: 4\n memory: 8192\n replicas: 1\n autoResizeConfig:\n enabled: true\n loadBalancer:\n vipConfig:\n controlPlaneVip: 10.251.133.5\n ingressVip: 10.251.135.19\n f5Config:\n address: 10.0.0.1\n partition: test-partition\n snatPool: test-snap-pool\n dataplaneV2:\n dataplaneV2Enabled: true\n windowsDataplaneV2Enabled: true\n advancedNetworking: true\n vmTrackingEnabled: true\n enableControlPlaneV2: true\n disableBundledIngress: true\n authorization:\n adminUsers:\n - username: testuser@gmail.com\n antiAffinityGroups:\n aagConfigDisabled: true\n autoRepairConfig:\n enabled: true\n storage:\n vsphereCsiDisabled: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkeonprem Vmware Cluster Manuallb\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster_manuallb = new gcp.gkeonprem.VMwareCluster(\"cluster-manuallb\", {\n name: \"cluster-manuallb\",\n location: \"us-west1\",\n adminClusterMembership: \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n description: \"test cluster\",\n onPremVersion: \"1.13.1-gke.35\",\n annotations: {},\n networkConfig: {\n serviceAddressCidrBlocks: [\"10.96.0.0/12\"],\n podAddressCidrBlocks: [\"192.168.0.0/16\"],\n hostConfig: {\n dnsServers: [\"10.254.41.1\"],\n ntpServers: [\"216.239.35.8\"],\n dnsSearchDomains: [\"test-domain\"],\n },\n staticIpConfig: {\n ipBlocks: [{\n netmask: \"255.255.252.0\",\n gateway: \"10.251.31.254\",\n ips: [\n {\n ip: \"10.251.30.153\",\n hostname: \"test-hostname1\",\n },\n {\n ip: \"10.251.31.206\",\n hostname: \"test-hostname2\",\n },\n {\n ip: \"10.251.31.193\",\n hostname: \"test-hostname3\",\n },\n {\n ip: \"10.251.30.230\",\n hostname: \"test-hostname4\",\n },\n ],\n }],\n },\n },\n controlPlaneNode: {\n cpus: 4,\n memory: 8192,\n replicas: 1,\n autoResizeConfig: {\n enabled: true,\n },\n },\n loadBalancer: {\n vipConfig: {\n controlPlaneVip: \"10.251.133.5\",\n ingressVip: \"10.251.135.19\",\n },\n manualLbConfig: {\n ingressHttpNodePort: 30005,\n ingressHttpsNodePort: 30006,\n controlPlaneNodePort: 30007,\n konnectivityServerNodePort: 30008,\n },\n },\n vcenter: {\n resourcePool: \"test-resource-pool\",\n datastore: \"test-datastore\",\n datacenter: \"test-datacenter\",\n cluster: \"test-cluster\",\n folder: \"test-folder\",\n caCertData: \"test-ca-cert-data\",\n storagePolicyName: \"test-storage-policy-name\",\n },\n dataplaneV2: {\n dataplaneV2Enabled: true,\n windowsDataplaneV2Enabled: true,\n advancedNetworking: true,\n },\n vmTrackingEnabled: true,\n enableControlPlaneV2: true,\n upgradePolicy: {\n controlPlaneOnly: true,\n },\n authorization: {\n adminUsers: [{\n username: \"testuser@gmail.com\",\n }],\n },\n antiAffinityGroups: {\n aagConfigDisabled: true,\n },\n autoRepairConfig: {\n enabled: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster_manuallb = gcp.gkeonprem.VMwareCluster(\"cluster-manuallb\",\n name=\"cluster-manuallb\",\n location=\"us-west1\",\n admin_cluster_membership=\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n description=\"test cluster\",\n on_prem_version=\"1.13.1-gke.35\",\n annotations={},\n network_config={\n \"service_address_cidr_blocks\": [\"10.96.0.0/12\"],\n \"pod_address_cidr_blocks\": [\"192.168.0.0/16\"],\n \"host_config\": {\n \"dns_servers\": [\"10.254.41.1\"],\n \"ntp_servers\": [\"216.239.35.8\"],\n \"dns_search_domains\": [\"test-domain\"],\n },\n \"static_ip_config\": {\n \"ip_blocks\": [{\n \"netmask\": \"255.255.252.0\",\n \"gateway\": \"10.251.31.254\",\n \"ips\": [\n {\n \"ip\": \"10.251.30.153\",\n \"hostname\": \"test-hostname1\",\n },\n {\n \"ip\": \"10.251.31.206\",\n \"hostname\": \"test-hostname2\",\n },\n {\n \"ip\": \"10.251.31.193\",\n \"hostname\": \"test-hostname3\",\n },\n {\n \"ip\": \"10.251.30.230\",\n \"hostname\": \"test-hostname4\",\n },\n ],\n }],\n },\n },\n control_plane_node={\n \"cpus\": 4,\n \"memory\": 8192,\n \"replicas\": 1,\n \"auto_resize_config\": {\n \"enabled\": True,\n },\n },\n load_balancer={\n \"vip_config\": {\n \"control_plane_vip\": \"10.251.133.5\",\n \"ingress_vip\": \"10.251.135.19\",\n },\n \"manual_lb_config\": {\n \"ingress_http_node_port\": 30005,\n \"ingress_https_node_port\": 30006,\n \"control_plane_node_port\": 30007,\n \"konnectivity_server_node_port\": 30008,\n },\n },\n vcenter={\n \"resource_pool\": \"test-resource-pool\",\n \"datastore\": \"test-datastore\",\n \"datacenter\": \"test-datacenter\",\n \"cluster\": \"test-cluster\",\n \"folder\": \"test-folder\",\n \"ca_cert_data\": \"test-ca-cert-data\",\n \"storage_policy_name\": \"test-storage-policy-name\",\n },\n dataplane_v2={\n \"dataplane_v2_enabled\": True,\n \"windows_dataplane_v2_enabled\": True,\n \"advanced_networking\": True,\n },\n vm_tracking_enabled=True,\n enable_control_plane_v2=True,\n upgrade_policy={\n \"control_plane_only\": True,\n },\n authorization={\n \"admin_users\": [{\n \"username\": \"testuser@gmail.com\",\n }],\n },\n anti_affinity_groups={\n \"aag_config_disabled\": True,\n },\n auto_repair_config={\n \"enabled\": True,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cluster_manuallb = new Gcp.GkeOnPrem.VMwareCluster(\"cluster-manuallb\", new()\n {\n Name = \"cluster-manuallb\",\n Location = \"us-west1\",\n AdminClusterMembership = \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n Description = \"test cluster\",\n OnPremVersion = \"1.13.1-gke.35\",\n Annotations = null,\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigArgs\n {\n ServiceAddressCidrBlocks = new[]\n {\n \"10.96.0.0/12\",\n },\n PodAddressCidrBlocks = new[]\n {\n \"192.168.0.0/16\",\n },\n HostConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigHostConfigArgs\n {\n DnsServers = new[]\n {\n \"10.254.41.1\",\n },\n NtpServers = new[]\n {\n \"216.239.35.8\",\n },\n DnsSearchDomains = new[]\n {\n \"test-domain\",\n },\n },\n StaticIpConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigStaticIpConfigArgs\n {\n IpBlocks = new[]\n {\n new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigStaticIpConfigIpBlockArgs\n {\n Netmask = \"255.255.252.0\",\n Gateway = \"10.251.31.254\",\n Ips = new[]\n {\n new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs\n {\n Ip = \"10.251.30.153\",\n Hostname = \"test-hostname1\",\n },\n new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs\n {\n Ip = \"10.251.31.206\",\n Hostname = \"test-hostname2\",\n },\n new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs\n {\n Ip = \"10.251.31.193\",\n Hostname = \"test-hostname3\",\n },\n new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs\n {\n Ip = \"10.251.30.230\",\n Hostname = \"test-hostname4\",\n },\n },\n },\n },\n },\n },\n ControlPlaneNode = new Gcp.GkeOnPrem.Inputs.VMwareClusterControlPlaneNodeArgs\n {\n Cpus = 4,\n Memory = 8192,\n Replicas = 1,\n AutoResizeConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterControlPlaneNodeAutoResizeConfigArgs\n {\n Enabled = true,\n },\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerArgs\n {\n VipConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.251.133.5\",\n IngressVip = \"10.251.135.19\",\n },\n ManualLbConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerManualLbConfigArgs\n {\n IngressHttpNodePort = 30005,\n IngressHttpsNodePort = 30006,\n ControlPlaneNodePort = 30007,\n KonnectivityServerNodePort = 30008,\n },\n },\n Vcenter = new Gcp.GkeOnPrem.Inputs.VMwareClusterVcenterArgs\n {\n ResourcePool = \"test-resource-pool\",\n Datastore = \"test-datastore\",\n Datacenter = \"test-datacenter\",\n Cluster = \"test-cluster\",\n Folder = \"test-folder\",\n CaCertData = \"test-ca-cert-data\",\n StoragePolicyName = \"test-storage-policy-name\",\n },\n DataplaneV2 = new Gcp.GkeOnPrem.Inputs.VMwareClusterDataplaneV2Args\n {\n DataplaneV2Enabled = true,\n WindowsDataplaneV2Enabled = true,\n AdvancedNetworking = true,\n },\n VmTrackingEnabled = true,\n EnableControlPlaneV2 = true,\n UpgradePolicy = new Gcp.GkeOnPrem.Inputs.VMwareClusterUpgradePolicyArgs\n {\n ControlPlaneOnly = true,\n },\n Authorization = new Gcp.GkeOnPrem.Inputs.VMwareClusterAuthorizationArgs\n {\n AdminUsers = new[]\n {\n new Gcp.GkeOnPrem.Inputs.VMwareClusterAuthorizationAdminUserArgs\n {\n Username = \"testuser@gmail.com\",\n },\n },\n },\n AntiAffinityGroups = new Gcp.GkeOnPrem.Inputs.VMwareClusterAntiAffinityGroupsArgs\n {\n AagConfigDisabled = true,\n },\n AutoRepairConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterAutoRepairConfigArgs\n {\n Enabled = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkeonprem\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gkeonprem.NewVMwareCluster(ctx, \"cluster-manuallb\", \u0026gkeonprem.VMwareClusterArgs{\n\t\t\tName: pulumi.String(\"cluster-manuallb\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tAdminClusterMembership: pulumi.String(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\"),\n\t\t\tDescription: pulumi.String(\"test cluster\"),\n\t\t\tOnPremVersion: pulumi.String(\"1.13.1-gke.35\"),\n\t\t\tAnnotations: pulumi.StringMap{},\n\t\t\tNetworkConfig: \u0026gkeonprem.VMwareClusterNetworkConfigArgs{\n\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.96.0.0/12\"),\n\t\t\t\t},\n\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"192.168.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tHostConfig: \u0026gkeonprem.VMwareClusterNetworkConfigHostConfigArgs{\n\t\t\t\t\tDnsServers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.254.41.1\"),\n\t\t\t\t\t},\n\t\t\t\t\tNtpServers: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"216.239.35.8\"),\n\t\t\t\t\t},\n\t\t\t\t\tDnsSearchDomains: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"test-domain\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tStaticIpConfig: \u0026gkeonprem.VMwareClusterNetworkConfigStaticIpConfigArgs{\n\t\t\t\t\tIpBlocks: gkeonprem.VMwareClusterNetworkConfigStaticIpConfigIpBlockArray{\n\t\t\t\t\t\t\u0026gkeonprem.VMwareClusterNetworkConfigStaticIpConfigIpBlockArgs{\n\t\t\t\t\t\t\tNetmask: pulumi.String(\"255.255.252.0\"),\n\t\t\t\t\t\t\tGateway: pulumi.String(\"10.251.31.254\"),\n\t\t\t\t\t\t\tIps: gkeonprem.VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArray{\n\t\t\t\t\t\t\t\t\u0026gkeonprem.VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs{\n\t\t\t\t\t\t\t\t\tIp: pulumi.String(\"10.251.30.153\"),\n\t\t\t\t\t\t\t\t\tHostname: pulumi.String(\"test-hostname1\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026gkeonprem.VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs{\n\t\t\t\t\t\t\t\t\tIp: pulumi.String(\"10.251.31.206\"),\n\t\t\t\t\t\t\t\t\tHostname: pulumi.String(\"test-hostname2\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026gkeonprem.VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs{\n\t\t\t\t\t\t\t\t\tIp: pulumi.String(\"10.251.31.193\"),\n\t\t\t\t\t\t\t\t\tHostname: pulumi.String(\"test-hostname3\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026gkeonprem.VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs{\n\t\t\t\t\t\t\t\t\tIp: pulumi.String(\"10.251.30.230\"),\n\t\t\t\t\t\t\t\t\tHostname: pulumi.String(\"test-hostname4\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tControlPlaneNode: \u0026gkeonprem.VMwareClusterControlPlaneNodeArgs{\n\t\t\t\tCpus: pulumi.Int(4),\n\t\t\t\tMemory: pulumi.Int(8192),\n\t\t\t\tReplicas: pulumi.Int(1),\n\t\t\t\tAutoResizeConfig: \u0026gkeonprem.VMwareClusterControlPlaneNodeAutoResizeConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLoadBalancer: \u0026gkeonprem.VMwareClusterLoadBalancerArgs{\n\t\t\t\tVipConfig: \u0026gkeonprem.VMwareClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.251.133.5\"),\n\t\t\t\t\tIngressVip: pulumi.String(\"10.251.135.19\"),\n\t\t\t\t},\n\t\t\t\tManualLbConfig: \u0026gkeonprem.VMwareClusterLoadBalancerManualLbConfigArgs{\n\t\t\t\t\tIngressHttpNodePort: pulumi.Int(30005),\n\t\t\t\t\tIngressHttpsNodePort: pulumi.Int(30006),\n\t\t\t\t\tControlPlaneNodePort: pulumi.Int(30007),\n\t\t\t\t\tKonnectivityServerNodePort: pulumi.Int(30008),\n\t\t\t\t},\n\t\t\t},\n\t\t\tVcenter: \u0026gkeonprem.VMwareClusterVcenterArgs{\n\t\t\t\tResourcePool: pulumi.String(\"test-resource-pool\"),\n\t\t\t\tDatastore: pulumi.String(\"test-datastore\"),\n\t\t\t\tDatacenter: pulumi.String(\"test-datacenter\"),\n\t\t\t\tCluster: pulumi.String(\"test-cluster\"),\n\t\t\t\tFolder: pulumi.String(\"test-folder\"),\n\t\t\t\tCaCertData: pulumi.String(\"test-ca-cert-data\"),\n\t\t\t\tStoragePolicyName: pulumi.String(\"test-storage-policy-name\"),\n\t\t\t},\n\t\t\tDataplaneV2: \u0026gkeonprem.VMwareClusterDataplaneV2Args{\n\t\t\t\tDataplaneV2Enabled: pulumi.Bool(true),\n\t\t\t\tWindowsDataplaneV2Enabled: pulumi.Bool(true),\n\t\t\t\tAdvancedNetworking: pulumi.Bool(true),\n\t\t\t},\n\t\t\tVmTrackingEnabled: pulumi.Bool(true),\n\t\t\tEnableControlPlaneV2: pulumi.Bool(true),\n\t\t\tUpgradePolicy: \u0026gkeonprem.VMwareClusterUpgradePolicyArgs{\n\t\t\t\tControlPlaneOnly: pulumi.Bool(true),\n\t\t\t},\n\t\t\tAuthorization: \u0026gkeonprem.VMwareClusterAuthorizationArgs{\n\t\t\t\tAdminUsers: gkeonprem.VMwareClusterAuthorizationAdminUserArray{\n\t\t\t\t\t\u0026gkeonprem.VMwareClusterAuthorizationAdminUserArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"testuser@gmail.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAntiAffinityGroups: \u0026gkeonprem.VMwareClusterAntiAffinityGroupsArgs{\n\t\t\t\tAagConfigDisabled: pulumi.Bool(true),\n\t\t\t},\n\t\t\tAutoRepairConfig: \u0026gkeonprem.VMwareClusterAutoRepairConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkeonprem.VMwareCluster;\nimport com.pulumi.gcp.gkeonprem.VMwareClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigHostConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigStaticIpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterControlPlaneNodeArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterControlPlaneNodeAutoResizeConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerManualLbConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterVcenterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterDataplaneV2Args;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterUpgradePolicyArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterAuthorizationArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterAntiAffinityGroupsArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterAutoRepairConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cluster_manuallb = new VMwareCluster(\"cluster-manuallb\", VMwareClusterArgs.builder()\n .name(\"cluster-manuallb\")\n .location(\"us-west1\")\n .adminClusterMembership(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\")\n .description(\"test cluster\")\n .onPremVersion(\"1.13.1-gke.35\")\n .annotations()\n .networkConfig(VMwareClusterNetworkConfigArgs.builder()\n .serviceAddressCidrBlocks(\"10.96.0.0/12\")\n .podAddressCidrBlocks(\"192.168.0.0/16\")\n .hostConfig(VMwareClusterNetworkConfigHostConfigArgs.builder()\n .dnsServers(\"10.254.41.1\")\n .ntpServers(\"216.239.35.8\")\n .dnsSearchDomains(\"test-domain\")\n .build())\n .staticIpConfig(VMwareClusterNetworkConfigStaticIpConfigArgs.builder()\n .ipBlocks(VMwareClusterNetworkConfigStaticIpConfigIpBlockArgs.builder()\n .netmask(\"255.255.252.0\")\n .gateway(\"10.251.31.254\")\n .ips( \n VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs.builder()\n .ip(\"10.251.30.153\")\n .hostname(\"test-hostname1\")\n .build(),\n VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs.builder()\n .ip(\"10.251.31.206\")\n .hostname(\"test-hostname2\")\n .build(),\n VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs.builder()\n .ip(\"10.251.31.193\")\n .hostname(\"test-hostname3\")\n .build(),\n VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs.builder()\n .ip(\"10.251.30.230\")\n .hostname(\"test-hostname4\")\n .build())\n .build())\n .build())\n .build())\n .controlPlaneNode(VMwareClusterControlPlaneNodeArgs.builder()\n .cpus(4)\n .memory(8192)\n .replicas(1)\n .autoResizeConfig(VMwareClusterControlPlaneNodeAutoResizeConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .loadBalancer(VMwareClusterLoadBalancerArgs.builder()\n .vipConfig(VMwareClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.251.133.5\")\n .ingressVip(\"10.251.135.19\")\n .build())\n .manualLbConfig(VMwareClusterLoadBalancerManualLbConfigArgs.builder()\n .ingressHttpNodePort(30005)\n .ingressHttpsNodePort(30006)\n .controlPlaneNodePort(30007)\n .konnectivityServerNodePort(30008)\n .build())\n .build())\n .vcenter(VMwareClusterVcenterArgs.builder()\n .resourcePool(\"test-resource-pool\")\n .datastore(\"test-datastore\")\n .datacenter(\"test-datacenter\")\n .cluster(\"test-cluster\")\n .folder(\"test-folder\")\n .caCertData(\"test-ca-cert-data\")\n .storagePolicyName(\"test-storage-policy-name\")\n .build())\n .dataplaneV2(VMwareClusterDataplaneV2Args.builder()\n .dataplaneV2Enabled(true)\n .windowsDataplaneV2Enabled(true)\n .advancedNetworking(true)\n .build())\n .vmTrackingEnabled(true)\n .enableControlPlaneV2(true)\n .upgradePolicy(VMwareClusterUpgradePolicyArgs.builder()\n .controlPlaneOnly(true)\n .build())\n .authorization(VMwareClusterAuthorizationArgs.builder()\n .adminUsers(VMwareClusterAuthorizationAdminUserArgs.builder()\n .username(\"testuser@gmail.com\")\n .build())\n .build())\n .antiAffinityGroups(VMwareClusterAntiAffinityGroupsArgs.builder()\n .aagConfigDisabled(true)\n .build())\n .autoRepairConfig(VMwareClusterAutoRepairConfigArgs.builder()\n .enabled(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster-manuallb:\n type: gcp:gkeonprem:VMwareCluster\n properties:\n name: cluster-manuallb\n location: us-west1\n adminClusterMembership: projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\n description: test cluster\n onPremVersion: 1.13.1-gke.35\n annotations: {}\n networkConfig:\n serviceAddressCidrBlocks:\n - 10.96.0.0/12\n podAddressCidrBlocks:\n - 192.168.0.0/16\n hostConfig:\n dnsServers:\n - 10.254.41.1\n ntpServers:\n - 216.239.35.8\n dnsSearchDomains:\n - test-domain\n staticIpConfig:\n ipBlocks:\n - netmask: 255.255.252.0\n gateway: 10.251.31.254\n ips:\n - ip: 10.251.30.153\n hostname: test-hostname1\n - ip: 10.251.31.206\n hostname: test-hostname2\n - ip: 10.251.31.193\n hostname: test-hostname3\n - ip: 10.251.30.230\n hostname: test-hostname4\n controlPlaneNode:\n cpus: 4\n memory: 8192\n replicas: 1\n autoResizeConfig:\n enabled: true\n loadBalancer:\n vipConfig:\n controlPlaneVip: 10.251.133.5\n ingressVip: 10.251.135.19\n manualLbConfig:\n ingressHttpNodePort: 30005\n ingressHttpsNodePort: 30006\n controlPlaneNodePort: 30007\n konnectivityServerNodePort: 30008\n vcenter:\n resourcePool: test-resource-pool\n datastore: test-datastore\n datacenter: test-datacenter\n cluster: test-cluster\n folder: test-folder\n caCertData: test-ca-cert-data\n storagePolicyName: test-storage-policy-name\n dataplaneV2:\n dataplaneV2Enabled: true\n windowsDataplaneV2Enabled: true\n advancedNetworking: true\n vmTrackingEnabled: true\n enableControlPlaneV2: true\n upgradePolicy:\n controlPlaneOnly: true\n authorization:\n adminUsers:\n - username: testuser@gmail.com\n antiAffinityGroups:\n aagConfigDisabled: true\n autoRepairConfig:\n enabled: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVmwareCluster can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/vmwareClusters/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, VmwareCluster can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:gkeonprem/vMwareCluster:VMwareCluster default projects/{{project}}/locations/{{location}}/vmwareClusters/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkeonprem/vMwareCluster:VMwareCluster default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkeonprem/vMwareCluster:VMwareCluster default {{location}}/{{name}}\n```\n\n", "properties": { "adminClusterMembership": { "type": "string", @@ -206123,7 +206123,7 @@ } }, "gcp:gkeonprem/vMwareNodePool:VMwareNodePool": { - "description": "A Google Vmware Node Pool.\n\n\n\n## Example Usage\n\n### Gkeonprem Vmware Node Pool Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default_basic = new gcp.gkeonprem.VMwareCluster(\"default-basic\", {\n name: \"my-cluster\",\n location: \"us-west1\",\n adminClusterMembership: \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n description: \"test cluster\",\n onPremVersion: \"1.13.1-gke.35\",\n networkConfig: {\n serviceAddressCidrBlocks: [\"10.96.0.0/12\"],\n podAddressCidrBlocks: [\"192.168.0.0/16\"],\n dhcpIpConfig: {\n enabled: true,\n },\n },\n controlPlaneNode: {\n cpus: 4,\n memory: 8192,\n replicas: 1,\n },\n loadBalancer: {\n vipConfig: {\n controlPlaneVip: \"10.251.133.5\",\n ingressVip: \"10.251.135.19\",\n },\n metalLbConfig: {\n addressPools: [\n {\n pool: \"ingress-ip\",\n manualAssign: true,\n addresses: [\"10.251.135.19\"],\n },\n {\n pool: \"lb-test-ip\",\n manualAssign: true,\n addresses: [\"10.251.135.19\"],\n },\n ],\n },\n },\n});\nconst nodepool_basic = new gcp.gkeonprem.VMwareNodePool(\"nodepool-basic\", {\n name: \"my-nodepool\",\n location: \"us-west1\",\n vmwareCluster: default_basic.name,\n config: {\n replicas: 3,\n imageType: \"ubuntu_containerd\",\n enableLoadBalancer: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_basic = gcp.gkeonprem.VMwareCluster(\"default-basic\",\n name=\"my-cluster\",\n location=\"us-west1\",\n admin_cluster_membership=\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n description=\"test cluster\",\n on_prem_version=\"1.13.1-gke.35\",\n network_config={\n \"service_address_cidr_blocks\": [\"10.96.0.0/12\"],\n \"pod_address_cidr_blocks\": [\"192.168.0.0/16\"],\n \"dhcp_ip_config\": {\n \"enabled\": True,\n },\n },\n control_plane_node={\n \"cpus\": 4,\n \"memory\": 8192,\n \"replicas\": 1,\n },\n load_balancer={\n \"vip_config\": {\n \"control_plane_vip\": \"10.251.133.5\",\n \"ingress_vip\": \"10.251.135.19\",\n },\n \"metal_lb_config\": {\n \"address_pools\": [\n {\n \"pool\": \"ingress-ip\",\n \"manual_assign\": True,\n \"addresses\": [\"10.251.135.19\"],\n },\n {\n \"pool\": \"lb-test-ip\",\n \"manual_assign\": True,\n \"addresses\": [\"10.251.135.19\"],\n },\n ],\n },\n })\nnodepool_basic = gcp.gkeonprem.VMwareNodePool(\"nodepool-basic\",\n name=\"my-nodepool\",\n location=\"us-west1\",\n vmware_cluster=default_basic.name,\n config={\n \"replicas\": 3,\n \"image_type\": \"ubuntu_containerd\",\n \"enable_load_balancer\": True,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var default_basic = new Gcp.GkeOnPrem.VMwareCluster(\"default-basic\", new()\n {\n Name = \"my-cluster\",\n Location = \"us-west1\",\n AdminClusterMembership = \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n Description = \"test cluster\",\n OnPremVersion = \"1.13.1-gke.35\",\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigArgs\n {\n ServiceAddressCidrBlocks = new[]\n {\n \"10.96.0.0/12\",\n },\n PodAddressCidrBlocks = new[]\n {\n \"192.168.0.0/16\",\n },\n DhcpIpConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigDhcpIpConfigArgs\n {\n Enabled = true,\n },\n },\n ControlPlaneNode = new Gcp.GkeOnPrem.Inputs.VMwareClusterControlPlaneNodeArgs\n {\n Cpus = 4,\n Memory = 8192,\n Replicas = 1,\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerArgs\n {\n VipConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.251.133.5\",\n IngressVip = \"10.251.135.19\",\n },\n MetalLbConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerMetalLbConfigArgs\n {\n AddressPools = new[]\n {\n new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs\n {\n Pool = \"ingress-ip\",\n ManualAssign = true,\n Addresses = new[]\n {\n \"10.251.135.19\",\n },\n },\n new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs\n {\n Pool = \"lb-test-ip\",\n ManualAssign = true,\n Addresses = new[]\n {\n \"10.251.135.19\",\n },\n },\n },\n },\n },\n });\n\n var nodepool_basic = new Gcp.GkeOnPrem.VMwareNodePool(\"nodepool-basic\", new()\n {\n Name = \"my-nodepool\",\n Location = \"us-west1\",\n VmwareCluster = default_basic.Name,\n Config = new Gcp.GkeOnPrem.Inputs.VMwareNodePoolConfigArgs\n {\n Replicas = 3,\n ImageType = \"ubuntu_containerd\",\n EnableLoadBalancer = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkeonprem\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gkeonprem.NewVMwareCluster(ctx, \"default-basic\", \u0026gkeonprem.VMwareClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tAdminClusterMembership: pulumi.String(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\"),\n\t\t\tDescription: pulumi.String(\"test cluster\"),\n\t\t\tOnPremVersion: pulumi.String(\"1.13.1-gke.35\"),\n\t\t\tNetworkConfig: \u0026gkeonprem.VMwareClusterNetworkConfigArgs{\n\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.96.0.0/12\"),\n\t\t\t\t},\n\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"192.168.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tDhcpIpConfig: \u0026gkeonprem.VMwareClusterNetworkConfigDhcpIpConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tControlPlaneNode: \u0026gkeonprem.VMwareClusterControlPlaneNodeArgs{\n\t\t\t\tCpus: pulumi.Int(4),\n\t\t\t\tMemory: pulumi.Int(8192),\n\t\t\t\tReplicas: pulumi.Int(1),\n\t\t\t},\n\t\t\tLoadBalancer: \u0026gkeonprem.VMwareClusterLoadBalancerArgs{\n\t\t\t\tVipConfig: \u0026gkeonprem.VMwareClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.251.133.5\"),\n\t\t\t\t\tIngressVip: pulumi.String(\"10.251.135.19\"),\n\t\t\t\t},\n\t\t\t\tMetalLbConfig: \u0026gkeonprem.VMwareClusterLoadBalancerMetalLbConfigArgs{\n\t\t\t\t\tAddressPools: gkeonprem.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArray{\n\t\t\t\t\t\t\u0026gkeonprem.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs{\n\t\t\t\t\t\t\tPool: pulumi.String(\"ingress-ip\"),\n\t\t\t\t\t\t\tManualAssign: pulumi.Bool(true),\n\t\t\t\t\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.251.135.19\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026gkeonprem.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs{\n\t\t\t\t\t\t\tPool: pulumi.String(\"lb-test-ip\"),\n\t\t\t\t\t\t\tManualAssign: pulumi.Bool(true),\n\t\t\t\t\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.251.135.19\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkeonprem.NewVMwareNodePool(ctx, \"nodepool-basic\", \u0026gkeonprem.VMwareNodePoolArgs{\n\t\t\tName: pulumi.String(\"my-nodepool\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tVmwareCluster: default_basic.Name,\n\t\t\tConfig: \u0026gkeonprem.VMwareNodePoolConfigArgs{\n\t\t\t\tReplicas: pulumi.Int(3),\n\t\t\t\tImageType: pulumi.String(\"ubuntu_containerd\"),\n\t\t\t\tEnableLoadBalancer: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkeonprem.VMwareCluster;\nimport com.pulumi.gcp.gkeonprem.VMwareClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigDhcpIpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterControlPlaneNodeArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerMetalLbConfigArgs;\nimport com.pulumi.gcp.gkeonprem.VMwareNodePool;\nimport com.pulumi.gcp.gkeonprem.VMwareNodePoolArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareNodePoolConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_basic = new VMwareCluster(\"default-basic\", VMwareClusterArgs.builder()\n .name(\"my-cluster\")\n .location(\"us-west1\")\n .adminClusterMembership(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\")\n .description(\"test cluster\")\n .onPremVersion(\"1.13.1-gke.35\")\n .networkConfig(VMwareClusterNetworkConfigArgs.builder()\n .serviceAddressCidrBlocks(\"10.96.0.0/12\")\n .podAddressCidrBlocks(\"192.168.0.0/16\")\n .dhcpIpConfig(VMwareClusterNetworkConfigDhcpIpConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .controlPlaneNode(VMwareClusterControlPlaneNodeArgs.builder()\n .cpus(4)\n .memory(8192)\n .replicas(1)\n .build())\n .loadBalancer(VMwareClusterLoadBalancerArgs.builder()\n .vipConfig(VMwareClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.251.133.5\")\n .ingressVip(\"10.251.135.19\")\n .build())\n .metalLbConfig(VMwareClusterLoadBalancerMetalLbConfigArgs.builder()\n .addressPools( \n VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs.builder()\n .pool(\"ingress-ip\")\n .manualAssign(\"true\")\n .addresses(\"10.251.135.19\")\n .build(),\n VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs.builder()\n .pool(\"lb-test-ip\")\n .manualAssign(\"true\")\n .addresses(\"10.251.135.19\")\n .build())\n .build())\n .build())\n .build());\n\n var nodepool_basic = new VMwareNodePool(\"nodepool-basic\", VMwareNodePoolArgs.builder()\n .name(\"my-nodepool\")\n .location(\"us-west1\")\n .vmwareCluster(default_basic.name())\n .config(VMwareNodePoolConfigArgs.builder()\n .replicas(3)\n .imageType(\"ubuntu_containerd\")\n .enableLoadBalancer(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default-basic:\n type: gcp:gkeonprem:VMwareCluster\n properties:\n name: my-cluster\n location: us-west1\n adminClusterMembership: projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\n description: test cluster\n onPremVersion: 1.13.1-gke.35\n networkConfig:\n serviceAddressCidrBlocks:\n - 10.96.0.0/12\n podAddressCidrBlocks:\n - 192.168.0.0/16\n dhcpIpConfig:\n enabled: true\n controlPlaneNode:\n cpus: 4\n memory: 8192\n replicas: 1\n loadBalancer:\n vipConfig:\n controlPlaneVip: 10.251.133.5\n ingressVip: 10.251.135.19\n metalLbConfig:\n addressPools:\n - pool: ingress-ip\n manualAssign: 'true'\n addresses:\n - 10.251.135.19\n - pool: lb-test-ip\n manualAssign: 'true'\n addresses:\n - 10.251.135.19\n nodepool-basic:\n type: gcp:gkeonprem:VMwareNodePool\n properties:\n name: my-nodepool\n location: us-west1\n vmwareCluster: ${[\"default-basic\"].name}\n config:\n replicas: 3\n imageType: ubuntu_containerd\n enableLoadBalancer: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkeonprem Vmware Node Pool Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default_full = new gcp.gkeonprem.VMwareCluster(\"default-full\", {\n name: \"my-cluster\",\n location: \"us-west1\",\n adminClusterMembership: \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n description: \"test cluster\",\n onPremVersion: \"1.13.1-gke.35\",\n networkConfig: {\n serviceAddressCidrBlocks: [\"10.96.0.0/12\"],\n podAddressCidrBlocks: [\"192.168.0.0/16\"],\n dhcpIpConfig: {\n enabled: true,\n },\n },\n controlPlaneNode: {\n cpus: 4,\n memory: 8192,\n replicas: 1,\n },\n loadBalancer: {\n vipConfig: {\n controlPlaneVip: \"10.251.133.5\",\n ingressVip: \"10.251.135.19\",\n },\n metalLbConfig: {\n addressPools: [\n {\n pool: \"ingress-ip\",\n manualAssign: true,\n addresses: [\"10.251.135.19\"],\n },\n {\n pool: \"lb-test-ip\",\n manualAssign: true,\n addresses: [\"10.251.135.19\"],\n },\n ],\n },\n },\n});\nconst nodepool_full = new gcp.gkeonprem.VMwareNodePool(\"nodepool-full\", {\n name: \"my-nodepool\",\n location: \"us-west1\",\n vmwareCluster: default_full.name,\n annotations: {},\n config: {\n cpus: 4,\n memoryMb: 8196,\n replicas: 3,\n imageType: \"ubuntu_containerd\",\n image: \"image\",\n bootDiskSizeGb: 10,\n taints: [\n {\n key: \"key\",\n value: \"value\",\n },\n {\n key: \"key\",\n value: \"value\",\n effect: \"NO_SCHEDULE\",\n },\n ],\n labels: {},\n vsphereConfig: {\n datastore: \"test-datastore\",\n tags: [\n {\n category: \"test-category-1\",\n tag: \"tag-1\",\n },\n {\n category: \"test-category-2\",\n tag: \"tag-2\",\n },\n ],\n hostGroups: [\n \"host1\",\n \"host2\",\n ],\n },\n enableLoadBalancer: true,\n },\n nodePoolAutoscaling: {\n minReplicas: 1,\n maxReplicas: 5,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_full = gcp.gkeonprem.VMwareCluster(\"default-full\",\n name=\"my-cluster\",\n location=\"us-west1\",\n admin_cluster_membership=\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n description=\"test cluster\",\n on_prem_version=\"1.13.1-gke.35\",\n network_config={\n \"service_address_cidr_blocks\": [\"10.96.0.0/12\"],\n \"pod_address_cidr_blocks\": [\"192.168.0.0/16\"],\n \"dhcp_ip_config\": {\n \"enabled\": True,\n },\n },\n control_plane_node={\n \"cpus\": 4,\n \"memory\": 8192,\n \"replicas\": 1,\n },\n load_balancer={\n \"vip_config\": {\n \"control_plane_vip\": \"10.251.133.5\",\n \"ingress_vip\": \"10.251.135.19\",\n },\n \"metal_lb_config\": {\n \"address_pools\": [\n {\n \"pool\": \"ingress-ip\",\n \"manual_assign\": True,\n \"addresses\": [\"10.251.135.19\"],\n },\n {\n \"pool\": \"lb-test-ip\",\n \"manual_assign\": True,\n \"addresses\": [\"10.251.135.19\"],\n },\n ],\n },\n })\nnodepool_full = gcp.gkeonprem.VMwareNodePool(\"nodepool-full\",\n name=\"my-nodepool\",\n location=\"us-west1\",\n vmware_cluster=default_full.name,\n annotations={},\n config={\n \"cpus\": 4,\n \"memory_mb\": 8196,\n \"replicas\": 3,\n \"image_type\": \"ubuntu_containerd\",\n \"image\": \"image\",\n \"boot_disk_size_gb\": 10,\n \"taints\": [\n {\n \"key\": \"key\",\n \"value\": \"value\",\n },\n {\n \"key\": \"key\",\n \"value\": \"value\",\n \"effect\": \"NO_SCHEDULE\",\n },\n ],\n \"labels\": {},\n \"vsphere_config\": {\n \"datastore\": \"test-datastore\",\n \"tags\": [\n {\n \"category\": \"test-category-1\",\n \"tag\": \"tag-1\",\n },\n {\n \"category\": \"test-category-2\",\n \"tag\": \"tag-2\",\n },\n ],\n \"host_groups\": [\n \"host1\",\n \"host2\",\n ],\n },\n \"enable_load_balancer\": True,\n },\n node_pool_autoscaling={\n \"min_replicas\": 1,\n \"max_replicas\": 5,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var default_full = new Gcp.GkeOnPrem.VMwareCluster(\"default-full\", new()\n {\n Name = \"my-cluster\",\n Location = \"us-west1\",\n AdminClusterMembership = \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n Description = \"test cluster\",\n OnPremVersion = \"1.13.1-gke.35\",\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigArgs\n {\n ServiceAddressCidrBlocks = new[]\n {\n \"10.96.0.0/12\",\n },\n PodAddressCidrBlocks = new[]\n {\n \"192.168.0.0/16\",\n },\n DhcpIpConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigDhcpIpConfigArgs\n {\n Enabled = true,\n },\n },\n ControlPlaneNode = new Gcp.GkeOnPrem.Inputs.VMwareClusterControlPlaneNodeArgs\n {\n Cpus = 4,\n Memory = 8192,\n Replicas = 1,\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerArgs\n {\n VipConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.251.133.5\",\n IngressVip = \"10.251.135.19\",\n },\n MetalLbConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerMetalLbConfigArgs\n {\n AddressPools = new[]\n {\n new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs\n {\n Pool = \"ingress-ip\",\n ManualAssign = true,\n Addresses = new[]\n {\n \"10.251.135.19\",\n },\n },\n new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs\n {\n Pool = \"lb-test-ip\",\n ManualAssign = true,\n Addresses = new[]\n {\n \"10.251.135.19\",\n },\n },\n },\n },\n },\n });\n\n var nodepool_full = new Gcp.GkeOnPrem.VMwareNodePool(\"nodepool-full\", new()\n {\n Name = \"my-nodepool\",\n Location = \"us-west1\",\n VmwareCluster = default_full.Name,\n Annotations = null,\n Config = new Gcp.GkeOnPrem.Inputs.VMwareNodePoolConfigArgs\n {\n Cpus = 4,\n MemoryMb = 8196,\n Replicas = 3,\n ImageType = \"ubuntu_containerd\",\n Image = \"image\",\n BootDiskSizeGb = 10,\n Taints = new[]\n {\n new Gcp.GkeOnPrem.Inputs.VMwareNodePoolConfigTaintArgs\n {\n Key = \"key\",\n Value = \"value\",\n },\n new Gcp.GkeOnPrem.Inputs.VMwareNodePoolConfigTaintArgs\n {\n Key = \"key\",\n Value = \"value\",\n Effect = \"NO_SCHEDULE\",\n },\n },\n Labels = null,\n VsphereConfig = new Gcp.GkeOnPrem.Inputs.VMwareNodePoolConfigVsphereConfigArgs\n {\n Datastore = \"test-datastore\",\n Tags = new[]\n {\n new Gcp.GkeOnPrem.Inputs.VMwareNodePoolConfigVsphereConfigTagArgs\n {\n Category = \"test-category-1\",\n Tag = \"tag-1\",\n },\n new Gcp.GkeOnPrem.Inputs.VMwareNodePoolConfigVsphereConfigTagArgs\n {\n Category = \"test-category-2\",\n Tag = \"tag-2\",\n },\n },\n HostGroups = new[]\n {\n \"host1\",\n \"host2\",\n },\n },\n EnableLoadBalancer = true,\n },\n NodePoolAutoscaling = new Gcp.GkeOnPrem.Inputs.VMwareNodePoolNodePoolAutoscalingArgs\n {\n MinReplicas = 1,\n MaxReplicas = 5,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkeonprem\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gkeonprem.NewVMwareCluster(ctx, \"default-full\", \u0026gkeonprem.VMwareClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tAdminClusterMembership: pulumi.String(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\"),\n\t\t\tDescription: pulumi.String(\"test cluster\"),\n\t\t\tOnPremVersion: pulumi.String(\"1.13.1-gke.35\"),\n\t\t\tNetworkConfig: \u0026gkeonprem.VMwareClusterNetworkConfigArgs{\n\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.96.0.0/12\"),\n\t\t\t\t},\n\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"192.168.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tDhcpIpConfig: \u0026gkeonprem.VMwareClusterNetworkConfigDhcpIpConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tControlPlaneNode: \u0026gkeonprem.VMwareClusterControlPlaneNodeArgs{\n\t\t\t\tCpus: pulumi.Int(4),\n\t\t\t\tMemory: pulumi.Int(8192),\n\t\t\t\tReplicas: pulumi.Int(1),\n\t\t\t},\n\t\t\tLoadBalancer: \u0026gkeonprem.VMwareClusterLoadBalancerArgs{\n\t\t\t\tVipConfig: \u0026gkeonprem.VMwareClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.251.133.5\"),\n\t\t\t\t\tIngressVip: pulumi.String(\"10.251.135.19\"),\n\t\t\t\t},\n\t\t\t\tMetalLbConfig: \u0026gkeonprem.VMwareClusterLoadBalancerMetalLbConfigArgs{\n\t\t\t\t\tAddressPools: gkeonprem.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArray{\n\t\t\t\t\t\t\u0026gkeonprem.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs{\n\t\t\t\t\t\t\tPool: pulumi.String(\"ingress-ip\"),\n\t\t\t\t\t\t\tManualAssign: pulumi.Bool(true),\n\t\t\t\t\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.251.135.19\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026gkeonprem.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs{\n\t\t\t\t\t\t\tPool: pulumi.String(\"lb-test-ip\"),\n\t\t\t\t\t\t\tManualAssign: pulumi.Bool(true),\n\t\t\t\t\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.251.135.19\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkeonprem.NewVMwareNodePool(ctx, \"nodepool-full\", \u0026gkeonprem.VMwareNodePoolArgs{\n\t\t\tName: pulumi.String(\"my-nodepool\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tVmwareCluster: default_full.Name,\n\t\t\tAnnotations: nil,\n\t\t\tConfig: \u0026gkeonprem.VMwareNodePoolConfigArgs{\n\t\t\t\tCpus: pulumi.Int(4),\n\t\t\t\tMemoryMb: pulumi.Int(8196),\n\t\t\t\tReplicas: pulumi.Int(3),\n\t\t\t\tImageType: pulumi.String(\"ubuntu_containerd\"),\n\t\t\t\tImage: pulumi.String(\"image\"),\n\t\t\t\tBootDiskSizeGb: pulumi.Int(10),\n\t\t\t\tTaints: gkeonprem.VMwareNodePoolConfigTaintArray{\n\t\t\t\t\t\u0026gkeonprem.VMwareNodePoolConfigTaintArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"key\"),\n\t\t\t\t\t\tValue: pulumi.String(\"value\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026gkeonprem.VMwareNodePoolConfigTaintArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"key\"),\n\t\t\t\t\t\tValue: pulumi.String(\"value\"),\n\t\t\t\t\t\tEffect: pulumi.String(\"NO_SCHEDULE\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tLabels: nil,\n\t\t\t\tVsphereConfig: \u0026gkeonprem.VMwareNodePoolConfigVsphereConfigArgs{\n\t\t\t\t\tDatastore: pulumi.String(\"test-datastore\"),\n\t\t\t\t\tTags: gkeonprem.VMwareNodePoolConfigVsphereConfigTagArray{\n\t\t\t\t\t\t\u0026gkeonprem.VMwareNodePoolConfigVsphereConfigTagArgs{\n\t\t\t\t\t\t\tCategory: pulumi.String(\"test-category-1\"),\n\t\t\t\t\t\t\tTag: pulumi.String(\"tag-1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026gkeonprem.VMwareNodePoolConfigVsphereConfigTagArgs{\n\t\t\t\t\t\t\tCategory: pulumi.String(\"test-category-2\"),\n\t\t\t\t\t\t\tTag: pulumi.String(\"tag-2\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tHostGroups: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"host1\"),\n\t\t\t\t\t\tpulumi.String(\"host2\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tEnableLoadBalancer: pulumi.Bool(true),\n\t\t\t},\n\t\t\tNodePoolAutoscaling: \u0026gkeonprem.VMwareNodePoolNodePoolAutoscalingArgs{\n\t\t\t\tMinReplicas: pulumi.Int(1),\n\t\t\t\tMaxReplicas: pulumi.Int(5),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkeonprem.VMwareCluster;\nimport com.pulumi.gcp.gkeonprem.VMwareClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigDhcpIpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterControlPlaneNodeArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerMetalLbConfigArgs;\nimport com.pulumi.gcp.gkeonprem.VMwareNodePool;\nimport com.pulumi.gcp.gkeonprem.VMwareNodePoolArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareNodePoolConfigVsphereConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareNodePoolNodePoolAutoscalingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_full = new VMwareCluster(\"default-full\", VMwareClusterArgs.builder()\n .name(\"my-cluster\")\n .location(\"us-west1\")\n .adminClusterMembership(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\")\n .description(\"test cluster\")\n .onPremVersion(\"1.13.1-gke.35\")\n .networkConfig(VMwareClusterNetworkConfigArgs.builder()\n .serviceAddressCidrBlocks(\"10.96.0.0/12\")\n .podAddressCidrBlocks(\"192.168.0.0/16\")\n .dhcpIpConfig(VMwareClusterNetworkConfigDhcpIpConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .controlPlaneNode(VMwareClusterControlPlaneNodeArgs.builder()\n .cpus(4)\n .memory(8192)\n .replicas(1)\n .build())\n .loadBalancer(VMwareClusterLoadBalancerArgs.builder()\n .vipConfig(VMwareClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.251.133.5\")\n .ingressVip(\"10.251.135.19\")\n .build())\n .metalLbConfig(VMwareClusterLoadBalancerMetalLbConfigArgs.builder()\n .addressPools( \n VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs.builder()\n .pool(\"ingress-ip\")\n .manualAssign(\"true\")\n .addresses(\"10.251.135.19\")\n .build(),\n VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs.builder()\n .pool(\"lb-test-ip\")\n .manualAssign(\"true\")\n .addresses(\"10.251.135.19\")\n .build())\n .build())\n .build())\n .build());\n\n var nodepool_full = new VMwareNodePool(\"nodepool-full\", VMwareNodePoolArgs.builder()\n .name(\"my-nodepool\")\n .location(\"us-west1\")\n .vmwareCluster(default_full.name())\n .annotations()\n .config(VMwareNodePoolConfigArgs.builder()\n .cpus(4)\n .memoryMb(8196)\n .replicas(3)\n .imageType(\"ubuntu_containerd\")\n .image(\"image\")\n .bootDiskSizeGb(10)\n .taints( \n VMwareNodePoolConfigTaintArgs.builder()\n .key(\"key\")\n .value(\"value\")\n .build(),\n VMwareNodePoolConfigTaintArgs.builder()\n .key(\"key\")\n .value(\"value\")\n .effect(\"NO_SCHEDULE\")\n .build())\n .labels()\n .vsphereConfig(VMwareNodePoolConfigVsphereConfigArgs.builder()\n .datastore(\"test-datastore\")\n .tags( \n VMwareNodePoolConfigVsphereConfigTagArgs.builder()\n .category(\"test-category-1\")\n .tag(\"tag-1\")\n .build(),\n VMwareNodePoolConfigVsphereConfigTagArgs.builder()\n .category(\"test-category-2\")\n .tag(\"tag-2\")\n .build())\n .hostGroups( \n \"host1\",\n \"host2\")\n .build())\n .enableLoadBalancer(true)\n .build())\n .nodePoolAutoscaling(VMwareNodePoolNodePoolAutoscalingArgs.builder()\n .minReplicas(1)\n .maxReplicas(5)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default-full:\n type: gcp:gkeonprem:VMwareCluster\n properties:\n name: my-cluster\n location: us-west1\n adminClusterMembership: projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\n description: test cluster\n onPremVersion: 1.13.1-gke.35\n networkConfig:\n serviceAddressCidrBlocks:\n - 10.96.0.0/12\n podAddressCidrBlocks:\n - 192.168.0.0/16\n dhcpIpConfig:\n enabled: true\n controlPlaneNode:\n cpus: 4\n memory: 8192\n replicas: 1\n loadBalancer:\n vipConfig:\n controlPlaneVip: 10.251.133.5\n ingressVip: 10.251.135.19\n metalLbConfig:\n addressPools:\n - pool: ingress-ip\n manualAssign: 'true'\n addresses:\n - 10.251.135.19\n - pool: lb-test-ip\n manualAssign: 'true'\n addresses:\n - 10.251.135.19\n nodepool-full:\n type: gcp:gkeonprem:VMwareNodePool\n properties:\n name: my-nodepool\n location: us-west1\n vmwareCluster: ${[\"default-full\"].name}\n annotations: {}\n config:\n cpus: 4\n memoryMb: 8196\n replicas: 3\n imageType: ubuntu_containerd\n image: image\n bootDiskSizeGb: 10\n taints:\n - key: key\n value: value\n - key: key\n value: value\n effect: NO_SCHEDULE\n labels: {}\n vsphereConfig:\n datastore: test-datastore\n tags:\n - category: test-category-1\n tag: tag-1\n - category: test-category-2\n tag: tag-2\n hostGroups:\n - host1\n - host2\n enableLoadBalancer: true\n nodePoolAutoscaling:\n minReplicas: 1\n maxReplicas: 5\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVmwareNodePool can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/vmwareClusters/{{vmware_cluster}}/vmwareNodePools/{{name}}`\n\n* `{{project}}/{{location}}/{{vmware_cluster}}/{{name}}`\n\n* `{{location}}/{{vmware_cluster}}/{{name}}`\n\nWhen using the `pulumi import` command, VmwareNodePool can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:gkeonprem/vMwareNodePool:VMwareNodePool default projects/{{project}}/locations/{{location}}/vmwareClusters/{{vmware_cluster}}/vmwareNodePools/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkeonprem/vMwareNodePool:VMwareNodePool default {{project}}/{{location}}/{{vmware_cluster}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkeonprem/vMwareNodePool:VMwareNodePool default {{location}}/{{vmware_cluster}}/{{name}}\n```\n\n", + "description": "A Google Vmware Node Pool.\n\n\n\n## Example Usage\n\n### Gkeonprem Vmware Node Pool Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default_basic = new gcp.gkeonprem.VMwareCluster(\"default-basic\", {\n name: \"my-cluster\",\n location: \"us-west1\",\n adminClusterMembership: \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n description: \"test cluster\",\n onPremVersion: \"1.13.1-gke.35\",\n networkConfig: {\n serviceAddressCidrBlocks: [\"10.96.0.0/12\"],\n podAddressCidrBlocks: [\"192.168.0.0/16\"],\n dhcpIpConfig: {\n enabled: true,\n },\n },\n controlPlaneNode: {\n cpus: 4,\n memory: 8192,\n replicas: 1,\n },\n loadBalancer: {\n vipConfig: {\n controlPlaneVip: \"10.251.133.5\",\n ingressVip: \"10.251.135.19\",\n },\n metalLbConfig: {\n addressPools: [\n {\n pool: \"ingress-ip\",\n manualAssign: true,\n addresses: [\"10.251.135.19\"],\n },\n {\n pool: \"lb-test-ip\",\n manualAssign: true,\n addresses: [\"10.251.135.19\"],\n },\n ],\n },\n },\n});\nconst nodepool_basic = new gcp.gkeonprem.VMwareNodePool(\"nodepool-basic\", {\n name: \"my-nodepool\",\n location: \"us-west1\",\n vmwareCluster: default_basic.name,\n config: {\n replicas: 3,\n imageType: \"ubuntu_containerd\",\n enableLoadBalancer: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_basic = gcp.gkeonprem.VMwareCluster(\"default-basic\",\n name=\"my-cluster\",\n location=\"us-west1\",\n admin_cluster_membership=\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n description=\"test cluster\",\n on_prem_version=\"1.13.1-gke.35\",\n network_config={\n \"service_address_cidr_blocks\": [\"10.96.0.0/12\"],\n \"pod_address_cidr_blocks\": [\"192.168.0.0/16\"],\n \"dhcp_ip_config\": {\n \"enabled\": True,\n },\n },\n control_plane_node={\n \"cpus\": 4,\n \"memory\": 8192,\n \"replicas\": 1,\n },\n load_balancer={\n \"vip_config\": {\n \"control_plane_vip\": \"10.251.133.5\",\n \"ingress_vip\": \"10.251.135.19\",\n },\n \"metal_lb_config\": {\n \"address_pools\": [\n {\n \"pool\": \"ingress-ip\",\n \"manual_assign\": True,\n \"addresses\": [\"10.251.135.19\"],\n },\n {\n \"pool\": \"lb-test-ip\",\n \"manual_assign\": True,\n \"addresses\": [\"10.251.135.19\"],\n },\n ],\n },\n })\nnodepool_basic = gcp.gkeonprem.VMwareNodePool(\"nodepool-basic\",\n name=\"my-nodepool\",\n location=\"us-west1\",\n vmware_cluster=default_basic.name,\n config={\n \"replicas\": 3,\n \"image_type\": \"ubuntu_containerd\",\n \"enable_load_balancer\": True,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var default_basic = new Gcp.GkeOnPrem.VMwareCluster(\"default-basic\", new()\n {\n Name = \"my-cluster\",\n Location = \"us-west1\",\n AdminClusterMembership = \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n Description = \"test cluster\",\n OnPremVersion = \"1.13.1-gke.35\",\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigArgs\n {\n ServiceAddressCidrBlocks = new[]\n {\n \"10.96.0.0/12\",\n },\n PodAddressCidrBlocks = new[]\n {\n \"192.168.0.0/16\",\n },\n DhcpIpConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigDhcpIpConfigArgs\n {\n Enabled = true,\n },\n },\n ControlPlaneNode = new Gcp.GkeOnPrem.Inputs.VMwareClusterControlPlaneNodeArgs\n {\n Cpus = 4,\n Memory = 8192,\n Replicas = 1,\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerArgs\n {\n VipConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.251.133.5\",\n IngressVip = \"10.251.135.19\",\n },\n MetalLbConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerMetalLbConfigArgs\n {\n AddressPools = new[]\n {\n new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs\n {\n Pool = \"ingress-ip\",\n ManualAssign = true,\n Addresses = new[]\n {\n \"10.251.135.19\",\n },\n },\n new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs\n {\n Pool = \"lb-test-ip\",\n ManualAssign = true,\n Addresses = new[]\n {\n \"10.251.135.19\",\n },\n },\n },\n },\n },\n });\n\n var nodepool_basic = new Gcp.GkeOnPrem.VMwareNodePool(\"nodepool-basic\", new()\n {\n Name = \"my-nodepool\",\n Location = \"us-west1\",\n VmwareCluster = default_basic.Name,\n Config = new Gcp.GkeOnPrem.Inputs.VMwareNodePoolConfigArgs\n {\n Replicas = 3,\n ImageType = \"ubuntu_containerd\",\n EnableLoadBalancer = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkeonprem\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gkeonprem.NewVMwareCluster(ctx, \"default-basic\", \u0026gkeonprem.VMwareClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tAdminClusterMembership: pulumi.String(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\"),\n\t\t\tDescription: pulumi.String(\"test cluster\"),\n\t\t\tOnPremVersion: pulumi.String(\"1.13.1-gke.35\"),\n\t\t\tNetworkConfig: \u0026gkeonprem.VMwareClusterNetworkConfigArgs{\n\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.96.0.0/12\"),\n\t\t\t\t},\n\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"192.168.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tDhcpIpConfig: \u0026gkeonprem.VMwareClusterNetworkConfigDhcpIpConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tControlPlaneNode: \u0026gkeonprem.VMwareClusterControlPlaneNodeArgs{\n\t\t\t\tCpus: pulumi.Int(4),\n\t\t\t\tMemory: pulumi.Int(8192),\n\t\t\t\tReplicas: pulumi.Int(1),\n\t\t\t},\n\t\t\tLoadBalancer: \u0026gkeonprem.VMwareClusterLoadBalancerArgs{\n\t\t\t\tVipConfig: \u0026gkeonprem.VMwareClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.251.133.5\"),\n\t\t\t\t\tIngressVip: pulumi.String(\"10.251.135.19\"),\n\t\t\t\t},\n\t\t\t\tMetalLbConfig: \u0026gkeonprem.VMwareClusterLoadBalancerMetalLbConfigArgs{\n\t\t\t\t\tAddressPools: gkeonprem.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArray{\n\t\t\t\t\t\t\u0026gkeonprem.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs{\n\t\t\t\t\t\t\tPool: pulumi.String(\"ingress-ip\"),\n\t\t\t\t\t\t\tManualAssign: pulumi.Bool(true),\n\t\t\t\t\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.251.135.19\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026gkeonprem.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs{\n\t\t\t\t\t\t\tPool: pulumi.String(\"lb-test-ip\"),\n\t\t\t\t\t\t\tManualAssign: pulumi.Bool(true),\n\t\t\t\t\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.251.135.19\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkeonprem.NewVMwareNodePool(ctx, \"nodepool-basic\", \u0026gkeonprem.VMwareNodePoolArgs{\n\t\t\tName: pulumi.String(\"my-nodepool\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tVmwareCluster: default_basic.Name,\n\t\t\tConfig: \u0026gkeonprem.VMwareNodePoolConfigArgs{\n\t\t\t\tReplicas: pulumi.Int(3),\n\t\t\t\tImageType: pulumi.String(\"ubuntu_containerd\"),\n\t\t\t\tEnableLoadBalancer: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkeonprem.VMwareCluster;\nimport com.pulumi.gcp.gkeonprem.VMwareClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigDhcpIpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterControlPlaneNodeArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerMetalLbConfigArgs;\nimport com.pulumi.gcp.gkeonprem.VMwareNodePool;\nimport com.pulumi.gcp.gkeonprem.VMwareNodePoolArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareNodePoolConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_basic = new VMwareCluster(\"default-basic\", VMwareClusterArgs.builder()\n .name(\"my-cluster\")\n .location(\"us-west1\")\n .adminClusterMembership(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\")\n .description(\"test cluster\")\n .onPremVersion(\"1.13.1-gke.35\")\n .networkConfig(VMwareClusterNetworkConfigArgs.builder()\n .serviceAddressCidrBlocks(\"10.96.0.0/12\")\n .podAddressCidrBlocks(\"192.168.0.0/16\")\n .dhcpIpConfig(VMwareClusterNetworkConfigDhcpIpConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .controlPlaneNode(VMwareClusterControlPlaneNodeArgs.builder()\n .cpus(4)\n .memory(8192)\n .replicas(1)\n .build())\n .loadBalancer(VMwareClusterLoadBalancerArgs.builder()\n .vipConfig(VMwareClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.251.133.5\")\n .ingressVip(\"10.251.135.19\")\n .build())\n .metalLbConfig(VMwareClusterLoadBalancerMetalLbConfigArgs.builder()\n .addressPools( \n VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs.builder()\n .pool(\"ingress-ip\")\n .manualAssign(\"true\")\n .addresses(\"10.251.135.19\")\n .build(),\n VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs.builder()\n .pool(\"lb-test-ip\")\n .manualAssign(\"true\")\n .addresses(\"10.251.135.19\")\n .build())\n .build())\n .build())\n .build());\n\n var nodepool_basic = new VMwareNodePool(\"nodepool-basic\", VMwareNodePoolArgs.builder()\n .name(\"my-nodepool\")\n .location(\"us-west1\")\n .vmwareCluster(default_basic.name())\n .config(VMwareNodePoolConfigArgs.builder()\n .replicas(3)\n .imageType(\"ubuntu_containerd\")\n .enableLoadBalancer(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default-basic:\n type: gcp:gkeonprem:VMwareCluster\n properties:\n name: my-cluster\n location: us-west1\n adminClusterMembership: projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\n description: test cluster\n onPremVersion: 1.13.1-gke.35\n networkConfig:\n serviceAddressCidrBlocks:\n - 10.96.0.0/12\n podAddressCidrBlocks:\n - 192.168.0.0/16\n dhcpIpConfig:\n enabled: true\n controlPlaneNode:\n cpus: 4\n memory: 8192\n replicas: 1\n loadBalancer:\n vipConfig:\n controlPlaneVip: 10.251.133.5\n ingressVip: 10.251.135.19\n metalLbConfig:\n addressPools:\n - pool: ingress-ip\n manualAssign: 'true'\n addresses:\n - 10.251.135.19\n - pool: lb-test-ip\n manualAssign: 'true'\n addresses:\n - 10.251.135.19\n nodepool-basic:\n type: gcp:gkeonprem:VMwareNodePool\n properties:\n name: my-nodepool\n location: us-west1\n vmwareCluster: ${[\"default-basic\"].name}\n config:\n replicas: 3\n imageType: ubuntu_containerd\n enableLoadBalancer: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Gkeonprem Vmware Node Pool Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default_full = new gcp.gkeonprem.VMwareCluster(\"default-full\", {\n name: \"my-cluster\",\n location: \"us-west1\",\n adminClusterMembership: \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n description: \"test cluster\",\n onPremVersion: \"1.13.1-gke.35\",\n networkConfig: {\n serviceAddressCidrBlocks: [\"10.96.0.0/12\"],\n podAddressCidrBlocks: [\"192.168.0.0/16\"],\n dhcpIpConfig: {\n enabled: true,\n },\n },\n controlPlaneNode: {\n cpus: 4,\n memory: 8192,\n replicas: 1,\n },\n loadBalancer: {\n vipConfig: {\n controlPlaneVip: \"10.251.133.5\",\n ingressVip: \"10.251.135.19\",\n },\n metalLbConfig: {\n addressPools: [\n {\n pool: \"ingress-ip\",\n manualAssign: true,\n addresses: [\"10.251.135.19\"],\n },\n {\n pool: \"lb-test-ip\",\n manualAssign: true,\n addresses: [\"10.251.135.19\"],\n },\n ],\n },\n },\n});\nconst nodepool_full = new gcp.gkeonprem.VMwareNodePool(\"nodepool-full\", {\n name: \"my-nodepool\",\n location: \"us-west1\",\n vmwareCluster: default_full.name,\n annotations: {},\n config: {\n cpus: 4,\n memoryMb: 8196,\n replicas: 3,\n imageType: \"ubuntu_containerd\",\n image: \"image\",\n bootDiskSizeGb: 10,\n taints: [\n {\n key: \"key\",\n value: \"value\",\n },\n {\n key: \"key\",\n value: \"value\",\n effect: \"NO_SCHEDULE\",\n },\n ],\n labels: {},\n vsphereConfig: {\n datastore: \"test-datastore\",\n tags: [\n {\n category: \"test-category-1\",\n tag: \"tag-1\",\n },\n {\n category: \"test-category-2\",\n tag: \"tag-2\",\n },\n ],\n hostGroups: [\n \"host1\",\n \"host2\",\n ],\n },\n enableLoadBalancer: true,\n },\n nodePoolAutoscaling: {\n minReplicas: 1,\n maxReplicas: 5,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_full = gcp.gkeonprem.VMwareCluster(\"default-full\",\n name=\"my-cluster\",\n location=\"us-west1\",\n admin_cluster_membership=\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n description=\"test cluster\",\n on_prem_version=\"1.13.1-gke.35\",\n network_config={\n \"service_address_cidr_blocks\": [\"10.96.0.0/12\"],\n \"pod_address_cidr_blocks\": [\"192.168.0.0/16\"],\n \"dhcp_ip_config\": {\n \"enabled\": True,\n },\n },\n control_plane_node={\n \"cpus\": 4,\n \"memory\": 8192,\n \"replicas\": 1,\n },\n load_balancer={\n \"vip_config\": {\n \"control_plane_vip\": \"10.251.133.5\",\n \"ingress_vip\": \"10.251.135.19\",\n },\n \"metal_lb_config\": {\n \"address_pools\": [\n {\n \"pool\": \"ingress-ip\",\n \"manual_assign\": True,\n \"addresses\": [\"10.251.135.19\"],\n },\n {\n \"pool\": \"lb-test-ip\",\n \"manual_assign\": True,\n \"addresses\": [\"10.251.135.19\"],\n },\n ],\n },\n })\nnodepool_full = gcp.gkeonprem.VMwareNodePool(\"nodepool-full\",\n name=\"my-nodepool\",\n location=\"us-west1\",\n vmware_cluster=default_full.name,\n annotations={},\n config={\n \"cpus\": 4,\n \"memory_mb\": 8196,\n \"replicas\": 3,\n \"image_type\": \"ubuntu_containerd\",\n \"image\": \"image\",\n \"boot_disk_size_gb\": 10,\n \"taints\": [\n {\n \"key\": \"key\",\n \"value\": \"value\",\n },\n {\n \"key\": \"key\",\n \"value\": \"value\",\n \"effect\": \"NO_SCHEDULE\",\n },\n ],\n \"labels\": {},\n \"vsphere_config\": {\n \"datastore\": \"test-datastore\",\n \"tags\": [\n {\n \"category\": \"test-category-1\",\n \"tag\": \"tag-1\",\n },\n {\n \"category\": \"test-category-2\",\n \"tag\": \"tag-2\",\n },\n ],\n \"host_groups\": [\n \"host1\",\n \"host2\",\n ],\n },\n \"enable_load_balancer\": True,\n },\n node_pool_autoscaling={\n \"min_replicas\": 1,\n \"max_replicas\": 5,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var default_full = new Gcp.GkeOnPrem.VMwareCluster(\"default-full\", new()\n {\n Name = \"my-cluster\",\n Location = \"us-west1\",\n AdminClusterMembership = \"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\",\n Description = \"test cluster\",\n OnPremVersion = \"1.13.1-gke.35\",\n NetworkConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigArgs\n {\n ServiceAddressCidrBlocks = new[]\n {\n \"10.96.0.0/12\",\n },\n PodAddressCidrBlocks = new[]\n {\n \"192.168.0.0/16\",\n },\n DhcpIpConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterNetworkConfigDhcpIpConfigArgs\n {\n Enabled = true,\n },\n },\n ControlPlaneNode = new Gcp.GkeOnPrem.Inputs.VMwareClusterControlPlaneNodeArgs\n {\n Cpus = 4,\n Memory = 8192,\n Replicas = 1,\n },\n LoadBalancer = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerArgs\n {\n VipConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerVipConfigArgs\n {\n ControlPlaneVip = \"10.251.133.5\",\n IngressVip = \"10.251.135.19\",\n },\n MetalLbConfig = new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerMetalLbConfigArgs\n {\n AddressPools = new[]\n {\n new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs\n {\n Pool = \"ingress-ip\",\n ManualAssign = true,\n Addresses = new[]\n {\n \"10.251.135.19\",\n },\n },\n new Gcp.GkeOnPrem.Inputs.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs\n {\n Pool = \"lb-test-ip\",\n ManualAssign = true,\n Addresses = new[]\n {\n \"10.251.135.19\",\n },\n },\n },\n },\n },\n });\n\n var nodepool_full = new Gcp.GkeOnPrem.VMwareNodePool(\"nodepool-full\", new()\n {\n Name = \"my-nodepool\",\n Location = \"us-west1\",\n VmwareCluster = default_full.Name,\n Annotations = null,\n Config = new Gcp.GkeOnPrem.Inputs.VMwareNodePoolConfigArgs\n {\n Cpus = 4,\n MemoryMb = 8196,\n Replicas = 3,\n ImageType = \"ubuntu_containerd\",\n Image = \"image\",\n BootDiskSizeGb = 10,\n Taints = new[]\n {\n new Gcp.GkeOnPrem.Inputs.VMwareNodePoolConfigTaintArgs\n {\n Key = \"key\",\n Value = \"value\",\n },\n new Gcp.GkeOnPrem.Inputs.VMwareNodePoolConfigTaintArgs\n {\n Key = \"key\",\n Value = \"value\",\n Effect = \"NO_SCHEDULE\",\n },\n },\n Labels = null,\n VsphereConfig = new Gcp.GkeOnPrem.Inputs.VMwareNodePoolConfigVsphereConfigArgs\n {\n Datastore = \"test-datastore\",\n Tags = new[]\n {\n new Gcp.GkeOnPrem.Inputs.VMwareNodePoolConfigVsphereConfigTagArgs\n {\n Category = \"test-category-1\",\n Tag = \"tag-1\",\n },\n new Gcp.GkeOnPrem.Inputs.VMwareNodePoolConfigVsphereConfigTagArgs\n {\n Category = \"test-category-2\",\n Tag = \"tag-2\",\n },\n },\n HostGroups = new[]\n {\n \"host1\",\n \"host2\",\n },\n },\n EnableLoadBalancer = true,\n },\n NodePoolAutoscaling = new Gcp.GkeOnPrem.Inputs.VMwareNodePoolNodePoolAutoscalingArgs\n {\n MinReplicas = 1,\n MaxReplicas = 5,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/gkeonprem\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := gkeonprem.NewVMwareCluster(ctx, \"default-full\", \u0026gkeonprem.VMwareClusterArgs{\n\t\t\tName: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tAdminClusterMembership: pulumi.String(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\"),\n\t\t\tDescription: pulumi.String(\"test cluster\"),\n\t\t\tOnPremVersion: pulumi.String(\"1.13.1-gke.35\"),\n\t\t\tNetworkConfig: \u0026gkeonprem.VMwareClusterNetworkConfigArgs{\n\t\t\t\tServiceAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.96.0.0/12\"),\n\t\t\t\t},\n\t\t\t\tPodAddressCidrBlocks: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"192.168.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tDhcpIpConfig: \u0026gkeonprem.VMwareClusterNetworkConfigDhcpIpConfigArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tControlPlaneNode: \u0026gkeonprem.VMwareClusterControlPlaneNodeArgs{\n\t\t\t\tCpus: pulumi.Int(4),\n\t\t\t\tMemory: pulumi.Int(8192),\n\t\t\t\tReplicas: pulumi.Int(1),\n\t\t\t},\n\t\t\tLoadBalancer: \u0026gkeonprem.VMwareClusterLoadBalancerArgs{\n\t\t\t\tVipConfig: \u0026gkeonprem.VMwareClusterLoadBalancerVipConfigArgs{\n\t\t\t\t\tControlPlaneVip: pulumi.String(\"10.251.133.5\"),\n\t\t\t\t\tIngressVip: pulumi.String(\"10.251.135.19\"),\n\t\t\t\t},\n\t\t\t\tMetalLbConfig: \u0026gkeonprem.VMwareClusterLoadBalancerMetalLbConfigArgs{\n\t\t\t\t\tAddressPools: gkeonprem.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArray{\n\t\t\t\t\t\t\u0026gkeonprem.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs{\n\t\t\t\t\t\t\tPool: pulumi.String(\"ingress-ip\"),\n\t\t\t\t\t\t\tManualAssign: pulumi.Bool(true),\n\t\t\t\t\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.251.135.19\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026gkeonprem.VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs{\n\t\t\t\t\t\t\tPool: pulumi.String(\"lb-test-ip\"),\n\t\t\t\t\t\t\tManualAssign: pulumi.Bool(true),\n\t\t\t\t\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.251.135.19\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = gkeonprem.NewVMwareNodePool(ctx, \"nodepool-full\", \u0026gkeonprem.VMwareNodePoolArgs{\n\t\t\tName: pulumi.String(\"my-nodepool\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tVmwareCluster: default_full.Name,\n\t\t\tAnnotations: pulumi.StringMap{},\n\t\t\tConfig: \u0026gkeonprem.VMwareNodePoolConfigArgs{\n\t\t\t\tCpus: pulumi.Int(4),\n\t\t\t\tMemoryMb: pulumi.Int(8196),\n\t\t\t\tReplicas: pulumi.Int(3),\n\t\t\t\tImageType: pulumi.String(\"ubuntu_containerd\"),\n\t\t\t\tImage: pulumi.String(\"image\"),\n\t\t\t\tBootDiskSizeGb: pulumi.Int(10),\n\t\t\t\tTaints: gkeonprem.VMwareNodePoolConfigTaintArray{\n\t\t\t\t\t\u0026gkeonprem.VMwareNodePoolConfigTaintArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"key\"),\n\t\t\t\t\t\tValue: pulumi.String(\"value\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026gkeonprem.VMwareNodePoolConfigTaintArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"key\"),\n\t\t\t\t\t\tValue: pulumi.String(\"value\"),\n\t\t\t\t\t\tEffect: pulumi.String(\"NO_SCHEDULE\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tLabels: pulumi.StringMap{},\n\t\t\t\tVsphereConfig: \u0026gkeonprem.VMwareNodePoolConfigVsphereConfigArgs{\n\t\t\t\t\tDatastore: pulumi.String(\"test-datastore\"),\n\t\t\t\t\tTags: gkeonprem.VMwareNodePoolConfigVsphereConfigTagArray{\n\t\t\t\t\t\t\u0026gkeonprem.VMwareNodePoolConfigVsphereConfigTagArgs{\n\t\t\t\t\t\t\tCategory: pulumi.String(\"test-category-1\"),\n\t\t\t\t\t\t\tTag: pulumi.String(\"tag-1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026gkeonprem.VMwareNodePoolConfigVsphereConfigTagArgs{\n\t\t\t\t\t\t\tCategory: pulumi.String(\"test-category-2\"),\n\t\t\t\t\t\t\tTag: pulumi.String(\"tag-2\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tHostGroups: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"host1\"),\n\t\t\t\t\t\tpulumi.String(\"host2\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tEnableLoadBalancer: pulumi.Bool(true),\n\t\t\t},\n\t\t\tNodePoolAutoscaling: \u0026gkeonprem.VMwareNodePoolNodePoolAutoscalingArgs{\n\t\t\t\tMinReplicas: pulumi.Int(1),\n\t\t\t\tMaxReplicas: pulumi.Int(5),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.gkeonprem.VMwareCluster;\nimport com.pulumi.gcp.gkeonprem.VMwareClusterArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigDhcpIpConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterControlPlaneNodeArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerVipConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerMetalLbConfigArgs;\nimport com.pulumi.gcp.gkeonprem.VMwareNodePool;\nimport com.pulumi.gcp.gkeonprem.VMwareNodePoolArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareNodePoolConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareNodePoolConfigVsphereConfigArgs;\nimport com.pulumi.gcp.gkeonprem.inputs.VMwareNodePoolNodePoolAutoscalingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_full = new VMwareCluster(\"default-full\", VMwareClusterArgs.builder()\n .name(\"my-cluster\")\n .location(\"us-west1\")\n .adminClusterMembership(\"projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\")\n .description(\"test cluster\")\n .onPremVersion(\"1.13.1-gke.35\")\n .networkConfig(VMwareClusterNetworkConfigArgs.builder()\n .serviceAddressCidrBlocks(\"10.96.0.0/12\")\n .podAddressCidrBlocks(\"192.168.0.0/16\")\n .dhcpIpConfig(VMwareClusterNetworkConfigDhcpIpConfigArgs.builder()\n .enabled(true)\n .build())\n .build())\n .controlPlaneNode(VMwareClusterControlPlaneNodeArgs.builder()\n .cpus(4)\n .memory(8192)\n .replicas(1)\n .build())\n .loadBalancer(VMwareClusterLoadBalancerArgs.builder()\n .vipConfig(VMwareClusterLoadBalancerVipConfigArgs.builder()\n .controlPlaneVip(\"10.251.133.5\")\n .ingressVip(\"10.251.135.19\")\n .build())\n .metalLbConfig(VMwareClusterLoadBalancerMetalLbConfigArgs.builder()\n .addressPools( \n VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs.builder()\n .pool(\"ingress-ip\")\n .manualAssign(\"true\")\n .addresses(\"10.251.135.19\")\n .build(),\n VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs.builder()\n .pool(\"lb-test-ip\")\n .manualAssign(\"true\")\n .addresses(\"10.251.135.19\")\n .build())\n .build())\n .build())\n .build());\n\n var nodepool_full = new VMwareNodePool(\"nodepool-full\", VMwareNodePoolArgs.builder()\n .name(\"my-nodepool\")\n .location(\"us-west1\")\n .vmwareCluster(default_full.name())\n .annotations()\n .config(VMwareNodePoolConfigArgs.builder()\n .cpus(4)\n .memoryMb(8196)\n .replicas(3)\n .imageType(\"ubuntu_containerd\")\n .image(\"image\")\n .bootDiskSizeGb(10)\n .taints( \n VMwareNodePoolConfigTaintArgs.builder()\n .key(\"key\")\n .value(\"value\")\n .build(),\n VMwareNodePoolConfigTaintArgs.builder()\n .key(\"key\")\n .value(\"value\")\n .effect(\"NO_SCHEDULE\")\n .build())\n .labels()\n .vsphereConfig(VMwareNodePoolConfigVsphereConfigArgs.builder()\n .datastore(\"test-datastore\")\n .tags( \n VMwareNodePoolConfigVsphereConfigTagArgs.builder()\n .category(\"test-category-1\")\n .tag(\"tag-1\")\n .build(),\n VMwareNodePoolConfigVsphereConfigTagArgs.builder()\n .category(\"test-category-2\")\n .tag(\"tag-2\")\n .build())\n .hostGroups( \n \"host1\",\n \"host2\")\n .build())\n .enableLoadBalancer(true)\n .build())\n .nodePoolAutoscaling(VMwareNodePoolNodePoolAutoscalingArgs.builder()\n .minReplicas(1)\n .maxReplicas(5)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default-full:\n type: gcp:gkeonprem:VMwareCluster\n properties:\n name: my-cluster\n location: us-west1\n adminClusterMembership: projects/870316890899/locations/global/memberships/gkeonprem-terraform-test\n description: test cluster\n onPremVersion: 1.13.1-gke.35\n networkConfig:\n serviceAddressCidrBlocks:\n - 10.96.0.0/12\n podAddressCidrBlocks:\n - 192.168.0.0/16\n dhcpIpConfig:\n enabled: true\n controlPlaneNode:\n cpus: 4\n memory: 8192\n replicas: 1\n loadBalancer:\n vipConfig:\n controlPlaneVip: 10.251.133.5\n ingressVip: 10.251.135.19\n metalLbConfig:\n addressPools:\n - pool: ingress-ip\n manualAssign: 'true'\n addresses:\n - 10.251.135.19\n - pool: lb-test-ip\n manualAssign: 'true'\n addresses:\n - 10.251.135.19\n nodepool-full:\n type: gcp:gkeonprem:VMwareNodePool\n properties:\n name: my-nodepool\n location: us-west1\n vmwareCluster: ${[\"default-full\"].name}\n annotations: {}\n config:\n cpus: 4\n memoryMb: 8196\n replicas: 3\n imageType: ubuntu_containerd\n image: image\n bootDiskSizeGb: 10\n taints:\n - key: key\n value: value\n - key: key\n value: value\n effect: NO_SCHEDULE\n labels: {}\n vsphereConfig:\n datastore: test-datastore\n tags:\n - category: test-category-1\n tag: tag-1\n - category: test-category-2\n tag: tag-2\n hostGroups:\n - host1\n - host2\n enableLoadBalancer: true\n nodePoolAutoscaling:\n minReplicas: 1\n maxReplicas: 5\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVmwareNodePool can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/vmwareClusters/{{vmware_cluster}}/vmwareNodePools/{{name}}`\n\n* `{{project}}/{{location}}/{{vmware_cluster}}/{{name}}`\n\n* `{{location}}/{{vmware_cluster}}/{{name}}`\n\nWhen using the `pulumi import` command, VmwareNodePool can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:gkeonprem/vMwareNodePool:VMwareNodePool default projects/{{project}}/locations/{{location}}/vmwareClusters/{{vmware_cluster}}/vmwareNodePools/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkeonprem/vMwareNodePool:VMwareNodePool default {{project}}/{{location}}/{{vmware_cluster}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:gkeonprem/vMwareNodePool:VMwareNodePool default {{location}}/{{vmware_cluster}}/{{name}}\n```\n\n", "properties": { "annotations": { "type": "object", @@ -206764,7 +206764,7 @@ } }, "gcp:healthcare/dataset:Dataset": { - "description": "A Healthcare `Dataset` is a toplevel logical grouping of `dicomStores`, `fhirStores` and `hl7V2Stores`.\n\n\nTo get more information about Dataset, see:\n\n* [API documentation](https://cloud.google.com/healthcare/docs/reference/rest/v1/projects.locations.datasets)\n* How-to Guides\n * [Creating a dataset](https://cloud.google.com/healthcare/docs/how-tos/datasets)\n\n## Example Usage\n\n### Healthcare Dataset Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.healthcare.Dataset(\"default\", {\n name: \"example-dataset\",\n location: \"us-central1\",\n timeZone: \"UTC\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.healthcare.Dataset(\"default\",\n name=\"example-dataset\",\n location=\"us-central1\",\n time_zone=\"UTC\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Healthcare.Dataset(\"default\", new()\n {\n Name = \"example-dataset\",\n Location = \"us-central1\",\n TimeZone = \"UTC\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/healthcare\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := healthcare.NewDataset(ctx, \"default\", \u0026healthcare.DatasetArgs{\n\t\t\tName: pulumi.String(\"example-dataset\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTimeZone: pulumi.String(\"UTC\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.healthcare.Dataset;\nimport com.pulumi.gcp.healthcare.DatasetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Dataset(\"default\", DatasetArgs.builder()\n .name(\"example-dataset\")\n .location(\"us-central1\")\n .timeZone(\"UTC\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:healthcare:Dataset\n properties:\n name: example-dataset\n location: us-central1\n timeZone: UTC\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Healthcare Dataset Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"example-keyring\",\n location: \"us-central1\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"example-key\",\n keyRing: keyRing.id,\n purpose: \"ENCRYPT_DECRYPT\",\n});\nconst healthcareCmekKeyuser = new gcp.kms.CryptoKeyIAMBinding(\"healthcare_cmek_keyuser\", {\n cryptoKeyId: cryptoKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members: [project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-healthcare.iam.gserviceaccount.com`)],\n});\nconst _default = new gcp.healthcare.Dataset(\"default\", {\n name: \"example-dataset\",\n location: \"us-central1\",\n timeZone: \"UTC\",\n encryptionSpec: {\n kmsKeyName: cryptoKey.id,\n },\n}, {\n dependsOn: [healthcareCmekKeyuser],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"example-keyring\",\n location=\"us-central1\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"example-key\",\n key_ring=key_ring.id,\n purpose=\"ENCRYPT_DECRYPT\")\nhealthcare_cmek_keyuser = gcp.kms.CryptoKeyIAMBinding(\"healthcare_cmek_keyuser\",\n crypto_key_id=crypto_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members=[f\"serviceAccount:service-{project.number}@gcp-sa-healthcare.iam.gserviceaccount.com\"])\ndefault = gcp.healthcare.Dataset(\"default\",\n name=\"example-dataset\",\n location=\"us-central1\",\n time_zone=\"UTC\",\n encryption_spec={\n \"kms_key_name\": crypto_key.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[healthcare_cmek_keyuser]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"example-keyring\",\n Location = \"us-central1\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"example-key\",\n KeyRing = keyRing.Id,\n Purpose = \"ENCRYPT_DECRYPT\",\n });\n\n var healthcareCmekKeyuser = new Gcp.Kms.CryptoKeyIAMBinding(\"healthcare_cmek_keyuser\", new()\n {\n CryptoKeyId = cryptoKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Members = new[]\n {\n $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-healthcare.iam.gserviceaccount.com\",\n },\n });\n\n var @default = new Gcp.Healthcare.Dataset(\"default\", new()\n {\n Name = \"example-dataset\",\n Location = \"us-central1\",\n TimeZone = \"UTC\",\n EncryptionSpec = new Gcp.Healthcare.Inputs.DatasetEncryptionSpecArgs\n {\n KmsKeyName = cryptoKey.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n healthcareCmekKeyuser,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/healthcare\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"example-keyring\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"example-key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t\tPurpose: pulumi.String(\"ENCRYPT_DECRYPT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thealthcareCmekKeyuser, err := kms.NewCryptoKeyIAMBinding(ctx, \"healthcare_cmek_keyuser\", \u0026kms.CryptoKeyIAMBindingArgs{\n\t\t\tCryptoKeyId: cryptoKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-healthcare.iam.gserviceaccount.com\", project.Number),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = healthcare.NewDataset(ctx, \"default\", \u0026healthcare.DatasetArgs{\n\t\t\tName: pulumi.String(\"example-dataset\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTimeZone: pulumi.String(\"UTC\"),\n\t\t\tEncryptionSpec: \u0026healthcare.DatasetEncryptionSpecArgs{\n\t\t\t\tKmsKeyName: cryptoKey.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\thealthcareCmekKeyuser,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBinding;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBindingArgs;\nimport com.pulumi.gcp.healthcare.Dataset;\nimport com.pulumi.gcp.healthcare.DatasetArgs;\nimport com.pulumi.gcp.healthcare.inputs.DatasetEncryptionSpecArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"example-keyring\")\n .location(\"us-central1\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"example-key\")\n .keyRing(keyRing.id())\n .purpose(\"ENCRYPT_DECRYPT\")\n .build());\n\n var healthcareCmekKeyuser = new CryptoKeyIAMBinding(\"healthcareCmekKeyuser\", CryptoKeyIAMBindingArgs.builder()\n .cryptoKeyId(cryptoKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .members(String.format(\"serviceAccount:service-%s@gcp-sa-healthcare.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var default_ = new Dataset(\"default\", DatasetArgs.builder()\n .name(\"example-dataset\")\n .location(\"us-central1\")\n .timeZone(\"UTC\")\n .encryptionSpec(DatasetEncryptionSpecArgs.builder()\n .kmsKeyName(cryptoKey.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(healthcareCmekKeyuser)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:healthcare:Dataset\n properties:\n name: example-dataset\n location: us-central1\n timeZone: UTC\n encryptionSpec:\n kmsKeyName: ${cryptoKey.id}\n options:\n dependson:\n - ${healthcareCmekKeyuser}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: example-key\n keyRing: ${keyRing.id}\n purpose: ENCRYPT_DECRYPT\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: example-keyring\n location: us-central1\n healthcareCmekKeyuser:\n type: gcp:kms:CryptoKeyIAMBinding\n name: healthcare_cmek_keyuser\n properties:\n cryptoKeyId: ${cryptoKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n members:\n - serviceAccount:service-${project.number}@gcp-sa-healthcare.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDataset can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/datasets/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Dataset can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:healthcare/dataset:Dataset default projects/{{project}}/locations/{{location}}/datasets/{{name}}\n```\n\n```sh\n$ pulumi import gcp:healthcare/dataset:Dataset default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:healthcare/dataset:Dataset default {{location}}/{{name}}\n```\n\n", + "description": "A Healthcare `Dataset` is a toplevel logical grouping of `dicomStores`, `fhirStores` and `hl7V2Stores`.\n\n\nTo get more information about Dataset, see:\n\n* [API documentation](https://cloud.google.com/healthcare/docs/reference/rest/v1/projects.locations.datasets)\n* How-to Guides\n * [Creating a dataset](https://cloud.google.com/healthcare/docs/how-tos/datasets)\n\n## Example Usage\n\n### Healthcare Dataset Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.healthcare.Dataset(\"default\", {\n name: \"example-dataset\",\n location: \"us-central1\",\n timeZone: \"UTC\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.healthcare.Dataset(\"default\",\n name=\"example-dataset\",\n location=\"us-central1\",\n time_zone=\"UTC\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Healthcare.Dataset(\"default\", new()\n {\n Name = \"example-dataset\",\n Location = \"us-central1\",\n TimeZone = \"UTC\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/healthcare\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := healthcare.NewDataset(ctx, \"default\", \u0026healthcare.DatasetArgs{\n\t\t\tName: pulumi.String(\"example-dataset\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTimeZone: pulumi.String(\"UTC\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.healthcare.Dataset;\nimport com.pulumi.gcp.healthcare.DatasetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Dataset(\"default\", DatasetArgs.builder()\n .name(\"example-dataset\")\n .location(\"us-central1\")\n .timeZone(\"UTC\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:healthcare:Dataset\n properties:\n name: example-dataset\n location: us-central1\n timeZone: UTC\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Healthcare Dataset Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"example-keyring\",\n location: \"us-central1\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"example-key\",\n keyRing: keyRing.id,\n purpose: \"ENCRYPT_DECRYPT\",\n});\nconst healthcareCmekKeyuser = new gcp.kms.CryptoKeyIAMBinding(\"healthcare_cmek_keyuser\", {\n cryptoKeyId: cryptoKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members: [project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-healthcare.iam.gserviceaccount.com`)],\n});\nconst _default = new gcp.healthcare.Dataset(\"default\", {\n name: \"example-dataset\",\n location: \"us-central1\",\n timeZone: \"UTC\",\n encryptionSpec: {\n kmsKeyName: cryptoKey.id,\n },\n}, {\n dependsOn: [healthcareCmekKeyuser],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"example-keyring\",\n location=\"us-central1\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"example-key\",\n key_ring=key_ring.id,\n purpose=\"ENCRYPT_DECRYPT\")\nhealthcare_cmek_keyuser = gcp.kms.CryptoKeyIAMBinding(\"healthcare_cmek_keyuser\",\n crypto_key_id=crypto_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members=[f\"serviceAccount:service-{project.number}@gcp-sa-healthcare.iam.gserviceaccount.com\"])\ndefault = gcp.healthcare.Dataset(\"default\",\n name=\"example-dataset\",\n location=\"us-central1\",\n time_zone=\"UTC\",\n encryption_spec={\n \"kms_key_name\": crypto_key.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[healthcare_cmek_keyuser]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"example-keyring\",\n Location = \"us-central1\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"example-key\",\n KeyRing = keyRing.Id,\n Purpose = \"ENCRYPT_DECRYPT\",\n });\n\n var healthcareCmekKeyuser = new Gcp.Kms.CryptoKeyIAMBinding(\"healthcare_cmek_keyuser\", new()\n {\n CryptoKeyId = cryptoKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Members = new[]\n {\n $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-healthcare.iam.gserviceaccount.com\",\n },\n });\n\n var @default = new Gcp.Healthcare.Dataset(\"default\", new()\n {\n Name = \"example-dataset\",\n Location = \"us-central1\",\n TimeZone = \"UTC\",\n EncryptionSpec = new Gcp.Healthcare.Inputs.DatasetEncryptionSpecArgs\n {\n KmsKeyName = cryptoKey.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n healthcareCmekKeyuser,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/healthcare\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"example-keyring\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"example-key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t\tPurpose: pulumi.String(\"ENCRYPT_DECRYPT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thealthcareCmekKeyuser, err := kms.NewCryptoKeyIAMBinding(ctx, \"healthcare_cmek_keyuser\", \u0026kms.CryptoKeyIAMBindingArgs{\n\t\t\tCryptoKeyId: cryptoKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-healthcare.iam.gserviceaccount.com\", project.Number),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = healthcare.NewDataset(ctx, \"default\", \u0026healthcare.DatasetArgs{\n\t\t\tName: pulumi.String(\"example-dataset\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTimeZone: pulumi.String(\"UTC\"),\n\t\t\tEncryptionSpec: \u0026healthcare.DatasetEncryptionSpecArgs{\n\t\t\t\tKmsKeyName: cryptoKey.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\thealthcareCmekKeyuser,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBinding;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBindingArgs;\nimport com.pulumi.gcp.healthcare.Dataset;\nimport com.pulumi.gcp.healthcare.DatasetArgs;\nimport com.pulumi.gcp.healthcare.inputs.DatasetEncryptionSpecArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"example-keyring\")\n .location(\"us-central1\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"example-key\")\n .keyRing(keyRing.id())\n .purpose(\"ENCRYPT_DECRYPT\")\n .build());\n\n var healthcareCmekKeyuser = new CryptoKeyIAMBinding(\"healthcareCmekKeyuser\", CryptoKeyIAMBindingArgs.builder()\n .cryptoKeyId(cryptoKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .members(String.format(\"serviceAccount:service-%s@gcp-sa-healthcare.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var default_ = new Dataset(\"default\", DatasetArgs.builder()\n .name(\"example-dataset\")\n .location(\"us-central1\")\n .timeZone(\"UTC\")\n .encryptionSpec(DatasetEncryptionSpecArgs.builder()\n .kmsKeyName(cryptoKey.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(healthcareCmekKeyuser)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:healthcare:Dataset\n properties:\n name: example-dataset\n location: us-central1\n timeZone: UTC\n encryptionSpec:\n kmsKeyName: ${cryptoKey.id}\n options:\n dependson:\n - ${healthcareCmekKeyuser}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: example-key\n keyRing: ${keyRing.id}\n purpose: ENCRYPT_DECRYPT\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: example-keyring\n location: us-central1\n healthcareCmekKeyuser:\n type: gcp:kms:CryptoKeyIAMBinding\n name: healthcare_cmek_keyuser\n properties:\n cryptoKeyId: ${cryptoKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n members:\n - serviceAccount:service-${project.number}@gcp-sa-healthcare.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDataset can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/datasets/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Dataset can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:healthcare/dataset:Dataset default projects/{{project}}/locations/{{location}}/datasets/{{name}}\n```\n\n```sh\n$ pulumi import gcp:healthcare/dataset:Dataset default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:healthcare/dataset:Dataset default {{location}}/{{name}}\n```\n\n", "properties": { "encryptionSpec": { "$ref": "#/types/gcp:healthcare/DatasetEncryptionSpec:DatasetEncryptionSpec", @@ -212536,7 +212536,7 @@ } }, "gcp:identityplatform/config:Config": { - "description": "Identity Platform configuration for a Cloud project. Identity Platform is an\nend-to-end authentication system for third-party users to access apps\nand services.\n\nThis entity is created only once during intialization and cannot be deleted,\nindividual Identity Providers may be disabled instead. This resource may only\nbe created in billing-enabled projects.\n\n\nTo get more information about Config, see:\n\n* [API documentation](https://cloud.google.com/identity-platform/docs/reference/rest/v2/Config)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/identity-platform/docs)\n\n\n\n## Example Usage\n\n### Identity Platform Config Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.organizations.Project(\"default\", {\n projectId: \"my-project\",\n name: \"my-project\",\n orgId: \"123456789\",\n billingAccount: \"000000-0000000-0000000-000000\",\n deletionPolicy: \"DELETE\",\n labels: {\n firebase: \"enabled\",\n },\n});\nconst identitytoolkit = new gcp.projects.Service(\"identitytoolkit\", {\n project: _default.projectId,\n service: \"identitytoolkit.googleapis.com\",\n});\nconst defaultConfig = new gcp.identityplatform.Config(\"default\", {\n project: _default.projectId,\n autodeleteAnonymousUsers: true,\n signIn: {\n allowDuplicateEmails: true,\n anonymous: {\n enabled: true,\n },\n email: {\n enabled: true,\n passwordRequired: false,\n },\n phoneNumber: {\n enabled: true,\n testPhoneNumbers: {\n \"+11231231234\": \"000000\",\n },\n },\n },\n smsRegionConfig: {\n allowlistOnly: {\n allowedRegions: [\n \"US\",\n \"CA\",\n ],\n },\n },\n blockingFunctions: {\n triggers: [{\n eventType: \"beforeSignIn\",\n functionUri: \"https://us-east1-my-project.cloudfunctions.net/before-sign-in\",\n }],\n forwardInboundCredentials: {\n refreshToken: true,\n accessToken: true,\n idToken: true,\n },\n },\n quota: {\n signUpQuotaConfig: {\n quota: 1000,\n startTime: \"\",\n quotaDuration: \"7200s\",\n },\n },\n authorizedDomains: [\n \"localhost\",\n \"my-project.firebaseapp.com\",\n \"my-project.web.app\",\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.organizations.Project(\"default\",\n project_id=\"my-project\",\n name=\"my-project\",\n org_id=\"123456789\",\n billing_account=\"000000-0000000-0000000-000000\",\n deletion_policy=\"DELETE\",\n labels={\n \"firebase\": \"enabled\",\n })\nidentitytoolkit = gcp.projects.Service(\"identitytoolkit\",\n project=default.project_id,\n service=\"identitytoolkit.googleapis.com\")\ndefault_config = gcp.identityplatform.Config(\"default\",\n project=default.project_id,\n autodelete_anonymous_users=True,\n sign_in={\n \"allow_duplicate_emails\": True,\n \"anonymous\": {\n \"enabled\": True,\n },\n \"email\": {\n \"enabled\": True,\n \"password_required\": False,\n },\n \"phone_number\": {\n \"enabled\": True,\n \"test_phone_numbers\": {\n \"_11231231234\": \"000000\",\n },\n },\n },\n sms_region_config={\n \"allowlist_only\": {\n \"allowed_regions\": [\n \"US\",\n \"CA\",\n ],\n },\n },\n blocking_functions={\n \"triggers\": [{\n \"event_type\": \"beforeSignIn\",\n \"function_uri\": \"https://us-east1-my-project.cloudfunctions.net/before-sign-in\",\n }],\n \"forward_inbound_credentials\": {\n \"refresh_token\": True,\n \"access_token\": True,\n \"id_token\": True,\n },\n },\n quota={\n \"sign_up_quota_config\": {\n \"quota\": 1000,\n \"start_time\": \"\",\n \"quota_duration\": \"7200s\",\n },\n },\n authorized_domains=[\n \"localhost\",\n \"my-project.firebaseapp.com\",\n \"my-project.web.app\",\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Organizations.Project(\"default\", new()\n {\n ProjectId = \"my-project\",\n Name = \"my-project\",\n OrgId = \"123456789\",\n BillingAccount = \"000000-0000000-0000000-000000\",\n DeletionPolicy = \"DELETE\",\n Labels = \n {\n { \"firebase\", \"enabled\" },\n },\n });\n\n var identitytoolkit = new Gcp.Projects.Service(\"identitytoolkit\", new()\n {\n Project = @default.ProjectId,\n ServiceName = \"identitytoolkit.googleapis.com\",\n });\n\n var defaultConfig = new Gcp.IdentityPlatform.Config(\"default\", new()\n {\n Project = @default.ProjectId,\n AutodeleteAnonymousUsers = true,\n SignIn = new Gcp.IdentityPlatform.Inputs.ConfigSignInArgs\n {\n AllowDuplicateEmails = true,\n Anonymous = new Gcp.IdentityPlatform.Inputs.ConfigSignInAnonymousArgs\n {\n Enabled = true,\n },\n Email = new Gcp.IdentityPlatform.Inputs.ConfigSignInEmailArgs\n {\n Enabled = true,\n PasswordRequired = false,\n },\n PhoneNumber = new Gcp.IdentityPlatform.Inputs.ConfigSignInPhoneNumberArgs\n {\n Enabled = true,\n TestPhoneNumbers = \n {\n { \"+11231231234\", \"000000\" },\n },\n },\n },\n SmsRegionConfig = new Gcp.IdentityPlatform.Inputs.ConfigSmsRegionConfigArgs\n {\n AllowlistOnly = new Gcp.IdentityPlatform.Inputs.ConfigSmsRegionConfigAllowlistOnlyArgs\n {\n AllowedRegions = new[]\n {\n \"US\",\n \"CA\",\n },\n },\n },\n BlockingFunctions = new Gcp.IdentityPlatform.Inputs.ConfigBlockingFunctionsArgs\n {\n Triggers = new[]\n {\n new Gcp.IdentityPlatform.Inputs.ConfigBlockingFunctionsTriggerArgs\n {\n EventType = \"beforeSignIn\",\n FunctionUri = \"https://us-east1-my-project.cloudfunctions.net/before-sign-in\",\n },\n },\n ForwardInboundCredentials = new Gcp.IdentityPlatform.Inputs.ConfigBlockingFunctionsForwardInboundCredentialsArgs\n {\n RefreshToken = true,\n AccessToken = true,\n IdToken = true,\n },\n },\n Quota = new Gcp.IdentityPlatform.Inputs.ConfigQuotaArgs\n {\n SignUpQuotaConfig = new Gcp.IdentityPlatform.Inputs.ConfigQuotaSignUpQuotaConfigArgs\n {\n Quota = 1000,\n StartTime = \"\",\n QuotaDuration = \"7200s\",\n },\n },\n AuthorizedDomains = new[]\n {\n \"localhost\",\n \"my-project.firebaseapp.com\",\n \"my-project.web.app\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/identityplatform\"\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/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := organizations.NewProject(ctx, \"default\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"my-project\"),\n\t\t\tName: pulumi.String(\"my-project\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t\tBillingAccount: pulumi.String(\"000000-0000000-0000000-000000\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"firebase\": pulumi.String(\"enabled\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewService(ctx, \"identitytoolkit\", \u0026projects.ServiceArgs{\n\t\t\tProject: _default.ProjectId,\n\t\t\tService: pulumi.String(\"identitytoolkit.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = identityplatform.NewConfig(ctx, \"default\", \u0026identityplatform.ConfigArgs{\n\t\t\tProject: _default.ProjectId,\n\t\t\tAutodeleteAnonymousUsers: pulumi.Bool(true),\n\t\t\tSignIn: \u0026identityplatform.ConfigSignInArgs{\n\t\t\t\tAllowDuplicateEmails: pulumi.Bool(true),\n\t\t\t\tAnonymous: \u0026identityplatform.ConfigSignInAnonymousArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tEmail: \u0026identityplatform.ConfigSignInEmailArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tPasswordRequired: pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t\tPhoneNumber: \u0026identityplatform.ConfigSignInPhoneNumberArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tTestPhoneNumbers: pulumi.StringMap{\n\t\t\t\t\t\t\"+11231231234\": pulumi.String(\"000000\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSmsRegionConfig: \u0026identityplatform.ConfigSmsRegionConfigArgs{\n\t\t\t\tAllowlistOnly: \u0026identityplatform.ConfigSmsRegionConfigAllowlistOnlyArgs{\n\t\t\t\t\tAllowedRegions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"US\"),\n\t\t\t\t\t\tpulumi.String(\"CA\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBlockingFunctions: \u0026identityplatform.ConfigBlockingFunctionsArgs{\n\t\t\t\tTriggers: identityplatform.ConfigBlockingFunctionsTriggerArray{\n\t\t\t\t\t\u0026identityplatform.ConfigBlockingFunctionsTriggerArgs{\n\t\t\t\t\t\tEventType: pulumi.String(\"beforeSignIn\"),\n\t\t\t\t\t\tFunctionUri: pulumi.String(\"https://us-east1-my-project.cloudfunctions.net/before-sign-in\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tForwardInboundCredentials: \u0026identityplatform.ConfigBlockingFunctionsForwardInboundCredentialsArgs{\n\t\t\t\t\tRefreshToken: pulumi.Bool(true),\n\t\t\t\t\tAccessToken: pulumi.Bool(true),\n\t\t\t\t\tIdToken: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tQuota: \u0026identityplatform.ConfigQuotaArgs{\n\t\t\t\tSignUpQuotaConfig: \u0026identityplatform.ConfigQuotaSignUpQuotaConfigArgs{\n\t\t\t\t\tQuota: pulumi.Int(1000),\n\t\t\t\t\tStartTime: pulumi.String(\"\"),\n\t\t\t\t\tQuotaDuration: pulumi.String(\"7200s\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAuthorizedDomains: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"localhost\"),\n\t\t\t\tpulumi.String(\"my-project.firebaseapp.com\"),\n\t\t\t\tpulumi.String(\"my-project.web.app\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.projects.Service;\nimport com.pulumi.gcp.projects.ServiceArgs;\nimport com.pulumi.gcp.identityplatform.Config;\nimport com.pulumi.gcp.identityplatform.ConfigArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigSignInArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigSignInAnonymousArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigSignInEmailArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigSignInPhoneNumberArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigSmsRegionConfigArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigSmsRegionConfigAllowlistOnlyArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigBlockingFunctionsArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigBlockingFunctionsForwardInboundCredentialsArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigQuotaArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigQuotaSignUpQuotaConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Project(\"default\", ProjectArgs.builder()\n .projectId(\"my-project\")\n .name(\"my-project\")\n .orgId(\"123456789\")\n .billingAccount(\"000000-0000000-0000000-000000\")\n .deletionPolicy(\"DELETE\")\n .labels(Map.of(\"firebase\", \"enabled\"))\n .build());\n\n var identitytoolkit = new Service(\"identitytoolkit\", ServiceArgs.builder()\n .project(default_.projectId())\n .service(\"identitytoolkit.googleapis.com\")\n .build());\n\n var defaultConfig = new Config(\"defaultConfig\", ConfigArgs.builder()\n .project(default_.projectId())\n .autodeleteAnonymousUsers(true)\n .signIn(ConfigSignInArgs.builder()\n .allowDuplicateEmails(true)\n .anonymous(ConfigSignInAnonymousArgs.builder()\n .enabled(true)\n .build())\n .email(ConfigSignInEmailArgs.builder()\n .enabled(true)\n .passwordRequired(false)\n .build())\n .phoneNumber(ConfigSignInPhoneNumberArgs.builder()\n .enabled(true)\n .testPhoneNumbers(Map.of(\"+11231231234\", \"000000\"))\n .build())\n .build())\n .smsRegionConfig(ConfigSmsRegionConfigArgs.builder()\n .allowlistOnly(ConfigSmsRegionConfigAllowlistOnlyArgs.builder()\n .allowedRegions( \n \"US\",\n \"CA\")\n .build())\n .build())\n .blockingFunctions(ConfigBlockingFunctionsArgs.builder()\n .triggers(ConfigBlockingFunctionsTriggerArgs.builder()\n .eventType(\"beforeSignIn\")\n .functionUri(\"https://us-east1-my-project.cloudfunctions.net/before-sign-in\")\n .build())\n .forwardInboundCredentials(ConfigBlockingFunctionsForwardInboundCredentialsArgs.builder()\n .refreshToken(true)\n .accessToken(true)\n .idToken(true)\n .build())\n .build())\n .quota(ConfigQuotaArgs.builder()\n .signUpQuotaConfig(ConfigQuotaSignUpQuotaConfigArgs.builder()\n .quota(1000)\n .startTime(\"\")\n .quotaDuration(\"7200s\")\n .build())\n .build())\n .authorizedDomains( \n \"localhost\",\n \"my-project.firebaseapp.com\",\n \"my-project.web.app\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:organizations:Project\n properties:\n projectId: my-project\n name: my-project\n orgId: '123456789'\n billingAccount: 000000-0000000-0000000-000000\n deletionPolicy: DELETE\n labels:\n firebase: enabled\n identitytoolkit:\n type: gcp:projects:Service\n properties:\n project: ${default.projectId}\n service: identitytoolkit.googleapis.com\n defaultConfig:\n type: gcp:identityplatform:Config\n name: default\n properties:\n project: ${default.projectId}\n autodeleteAnonymousUsers: true\n signIn:\n allowDuplicateEmails: true\n anonymous:\n enabled: true\n email:\n enabled: true\n passwordRequired: false\n phoneNumber:\n enabled: true\n testPhoneNumbers:\n '+11231231234': '000000'\n smsRegionConfig:\n allowlistOnly:\n allowedRegions:\n - US\n - CA\n blockingFunctions:\n triggers:\n - eventType: beforeSignIn\n functionUri: https://us-east1-my-project.cloudfunctions.net/before-sign-in\n forwardInboundCredentials:\n refreshToken: true\n accessToken: true\n idToken: true\n quota:\n signUpQuotaConfig:\n quota: 1000\n startTime:\n quotaDuration: 7200s\n authorizedDomains:\n - localhost\n - my-project.firebaseapp.com\n - my-project.web.app\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/config`\n\n* `projects/{{project}}`\n\n* `{{project}}`\n\nWhen using the `pulumi import` command, Config can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:identityplatform/config:Config default projects/{{project}}/config\n```\n\n```sh\n$ pulumi import gcp:identityplatform/config:Config default projects/{{project}}\n```\n\n```sh\n$ pulumi import gcp:identityplatform/config:Config default {{project}}\n```\n\n", + "description": "Identity Platform configuration for a Cloud project. Identity Platform is an\nend-to-end authentication system for third-party users to access apps\nand services.\n\nThis entity is created only once during intialization and cannot be deleted,\nindividual Identity Providers may be disabled instead. This resource may only\nbe created in billing-enabled projects.\n\n\nTo get more information about Config, see:\n\n* [API documentation](https://cloud.google.com/identity-platform/docs/reference/rest/v2/Config)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/identity-platform/docs)\n\n\n\n## Example Usage\n\n### Identity Platform Config Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.organizations.Project(\"default\", {\n projectId: \"my-project\",\n name: \"my-project\",\n orgId: \"123456789\",\n billingAccount: \"000000-0000000-0000000-000000\",\n deletionPolicy: \"DELETE\",\n labels: {\n firebase: \"enabled\",\n },\n});\nconst identitytoolkit = new gcp.projects.Service(\"identitytoolkit\", {\n project: _default.projectId,\n service: \"identitytoolkit.googleapis.com\",\n});\nconst defaultConfig = new gcp.identityplatform.Config(\"default\", {\n project: _default.projectId,\n autodeleteAnonymousUsers: true,\n signIn: {\n allowDuplicateEmails: true,\n anonymous: {\n enabled: true,\n },\n email: {\n enabled: true,\n passwordRequired: false,\n },\n phoneNumber: {\n enabled: true,\n testPhoneNumbers: {\n \"+11231231234\": \"000000\",\n },\n },\n },\n smsRegionConfig: {\n allowlistOnly: {\n allowedRegions: [\n \"US\",\n \"CA\",\n ],\n },\n },\n blockingFunctions: {\n triggers: [{\n eventType: \"beforeSignIn\",\n functionUri: \"https://us-east1-my-project.cloudfunctions.net/before-sign-in\",\n }],\n forwardInboundCredentials: {\n refreshToken: true,\n accessToken: true,\n idToken: true,\n },\n },\n quota: {\n signUpQuotaConfig: {\n quota: 1000,\n startTime: \"\",\n quotaDuration: \"7200s\",\n },\n },\n authorizedDomains: [\n \"localhost\",\n \"my-project.firebaseapp.com\",\n \"my-project.web.app\",\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.organizations.Project(\"default\",\n project_id=\"my-project\",\n name=\"my-project\",\n org_id=\"123456789\",\n billing_account=\"000000-0000000-0000000-000000\",\n deletion_policy=\"DELETE\",\n labels={\n \"firebase\": \"enabled\",\n })\nidentitytoolkit = gcp.projects.Service(\"identitytoolkit\",\n project=default.project_id,\n service=\"identitytoolkit.googleapis.com\")\ndefault_config = gcp.identityplatform.Config(\"default\",\n project=default.project_id,\n autodelete_anonymous_users=True,\n sign_in={\n \"allow_duplicate_emails\": True,\n \"anonymous\": {\n \"enabled\": True,\n },\n \"email\": {\n \"enabled\": True,\n \"password_required\": False,\n },\n \"phone_number\": {\n \"enabled\": True,\n \"test_phone_numbers\": {\n \"+11231231234\": \"000000\",\n },\n },\n },\n sms_region_config={\n \"allowlist_only\": {\n \"allowed_regions\": [\n \"US\",\n \"CA\",\n ],\n },\n },\n blocking_functions={\n \"triggers\": [{\n \"event_type\": \"beforeSignIn\",\n \"function_uri\": \"https://us-east1-my-project.cloudfunctions.net/before-sign-in\",\n }],\n \"forward_inbound_credentials\": {\n \"refresh_token\": True,\n \"access_token\": True,\n \"id_token\": True,\n },\n },\n quota={\n \"sign_up_quota_config\": {\n \"quota\": 1000,\n \"start_time\": \"\",\n \"quota_duration\": \"7200s\",\n },\n },\n authorized_domains=[\n \"localhost\",\n \"my-project.firebaseapp.com\",\n \"my-project.web.app\",\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Organizations.Project(\"default\", new()\n {\n ProjectId = \"my-project\",\n Name = \"my-project\",\n OrgId = \"123456789\",\n BillingAccount = \"000000-0000000-0000000-000000\",\n DeletionPolicy = \"DELETE\",\n Labels = \n {\n { \"firebase\", \"enabled\" },\n },\n });\n\n var identitytoolkit = new Gcp.Projects.Service(\"identitytoolkit\", new()\n {\n Project = @default.ProjectId,\n ServiceName = \"identitytoolkit.googleapis.com\",\n });\n\n var defaultConfig = new Gcp.IdentityPlatform.Config(\"default\", new()\n {\n Project = @default.ProjectId,\n AutodeleteAnonymousUsers = true,\n SignIn = new Gcp.IdentityPlatform.Inputs.ConfigSignInArgs\n {\n AllowDuplicateEmails = true,\n Anonymous = new Gcp.IdentityPlatform.Inputs.ConfigSignInAnonymousArgs\n {\n Enabled = true,\n },\n Email = new Gcp.IdentityPlatform.Inputs.ConfigSignInEmailArgs\n {\n Enabled = true,\n PasswordRequired = false,\n },\n PhoneNumber = new Gcp.IdentityPlatform.Inputs.ConfigSignInPhoneNumberArgs\n {\n Enabled = true,\n TestPhoneNumbers = \n {\n { \"+11231231234\", \"000000\" },\n },\n },\n },\n SmsRegionConfig = new Gcp.IdentityPlatform.Inputs.ConfigSmsRegionConfigArgs\n {\n AllowlistOnly = new Gcp.IdentityPlatform.Inputs.ConfigSmsRegionConfigAllowlistOnlyArgs\n {\n AllowedRegions = new[]\n {\n \"US\",\n \"CA\",\n },\n },\n },\n BlockingFunctions = new Gcp.IdentityPlatform.Inputs.ConfigBlockingFunctionsArgs\n {\n Triggers = new[]\n {\n new Gcp.IdentityPlatform.Inputs.ConfigBlockingFunctionsTriggerArgs\n {\n EventType = \"beforeSignIn\",\n FunctionUri = \"https://us-east1-my-project.cloudfunctions.net/before-sign-in\",\n },\n },\n ForwardInboundCredentials = new Gcp.IdentityPlatform.Inputs.ConfigBlockingFunctionsForwardInboundCredentialsArgs\n {\n RefreshToken = true,\n AccessToken = true,\n IdToken = true,\n },\n },\n Quota = new Gcp.IdentityPlatform.Inputs.ConfigQuotaArgs\n {\n SignUpQuotaConfig = new Gcp.IdentityPlatform.Inputs.ConfigQuotaSignUpQuotaConfigArgs\n {\n Quota = 1000,\n StartTime = \"\",\n QuotaDuration = \"7200s\",\n },\n },\n AuthorizedDomains = new[]\n {\n \"localhost\",\n \"my-project.firebaseapp.com\",\n \"my-project.web.app\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/identityplatform\"\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/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := organizations.NewProject(ctx, \"default\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"my-project\"),\n\t\t\tName: pulumi.String(\"my-project\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t\tBillingAccount: pulumi.String(\"000000-0000000-0000000-000000\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"firebase\": pulumi.String(\"enabled\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewService(ctx, \"identitytoolkit\", \u0026projects.ServiceArgs{\n\t\t\tProject: _default.ProjectId,\n\t\t\tService: pulumi.String(\"identitytoolkit.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = identityplatform.NewConfig(ctx, \"default\", \u0026identityplatform.ConfigArgs{\n\t\t\tProject: _default.ProjectId,\n\t\t\tAutodeleteAnonymousUsers: pulumi.Bool(true),\n\t\t\tSignIn: \u0026identityplatform.ConfigSignInArgs{\n\t\t\t\tAllowDuplicateEmails: pulumi.Bool(true),\n\t\t\t\tAnonymous: \u0026identityplatform.ConfigSignInAnonymousArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tEmail: \u0026identityplatform.ConfigSignInEmailArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tPasswordRequired: pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t\tPhoneNumber: \u0026identityplatform.ConfigSignInPhoneNumberArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tTestPhoneNumbers: pulumi.StringMap{\n\t\t\t\t\t\t\"+11231231234\": pulumi.String(\"000000\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSmsRegionConfig: \u0026identityplatform.ConfigSmsRegionConfigArgs{\n\t\t\t\tAllowlistOnly: \u0026identityplatform.ConfigSmsRegionConfigAllowlistOnlyArgs{\n\t\t\t\t\tAllowedRegions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"US\"),\n\t\t\t\t\t\tpulumi.String(\"CA\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tBlockingFunctions: \u0026identityplatform.ConfigBlockingFunctionsArgs{\n\t\t\t\tTriggers: identityplatform.ConfigBlockingFunctionsTriggerArray{\n\t\t\t\t\t\u0026identityplatform.ConfigBlockingFunctionsTriggerArgs{\n\t\t\t\t\t\tEventType: pulumi.String(\"beforeSignIn\"),\n\t\t\t\t\t\tFunctionUri: pulumi.String(\"https://us-east1-my-project.cloudfunctions.net/before-sign-in\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tForwardInboundCredentials: \u0026identityplatform.ConfigBlockingFunctionsForwardInboundCredentialsArgs{\n\t\t\t\t\tRefreshToken: pulumi.Bool(true),\n\t\t\t\t\tAccessToken: pulumi.Bool(true),\n\t\t\t\t\tIdToken: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tQuota: \u0026identityplatform.ConfigQuotaArgs{\n\t\t\t\tSignUpQuotaConfig: \u0026identityplatform.ConfigQuotaSignUpQuotaConfigArgs{\n\t\t\t\t\tQuota: pulumi.Int(1000),\n\t\t\t\t\tStartTime: pulumi.String(\"\"),\n\t\t\t\t\tQuotaDuration: pulumi.String(\"7200s\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAuthorizedDomains: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"localhost\"),\n\t\t\t\tpulumi.String(\"my-project.firebaseapp.com\"),\n\t\t\t\tpulumi.String(\"my-project.web.app\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.projects.Service;\nimport com.pulumi.gcp.projects.ServiceArgs;\nimport com.pulumi.gcp.identityplatform.Config;\nimport com.pulumi.gcp.identityplatform.ConfigArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigSignInArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigSignInAnonymousArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigSignInEmailArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigSignInPhoneNumberArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigSmsRegionConfigArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigSmsRegionConfigAllowlistOnlyArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigBlockingFunctionsArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigBlockingFunctionsForwardInboundCredentialsArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigQuotaArgs;\nimport com.pulumi.gcp.identityplatform.inputs.ConfigQuotaSignUpQuotaConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Project(\"default\", ProjectArgs.builder()\n .projectId(\"my-project\")\n .name(\"my-project\")\n .orgId(\"123456789\")\n .billingAccount(\"000000-0000000-0000000-000000\")\n .deletionPolicy(\"DELETE\")\n .labels(Map.of(\"firebase\", \"enabled\"))\n .build());\n\n var identitytoolkit = new Service(\"identitytoolkit\", ServiceArgs.builder()\n .project(default_.projectId())\n .service(\"identitytoolkit.googleapis.com\")\n .build());\n\n var defaultConfig = new Config(\"defaultConfig\", ConfigArgs.builder()\n .project(default_.projectId())\n .autodeleteAnonymousUsers(true)\n .signIn(ConfigSignInArgs.builder()\n .allowDuplicateEmails(true)\n .anonymous(ConfigSignInAnonymousArgs.builder()\n .enabled(true)\n .build())\n .email(ConfigSignInEmailArgs.builder()\n .enabled(true)\n .passwordRequired(false)\n .build())\n .phoneNumber(ConfigSignInPhoneNumberArgs.builder()\n .enabled(true)\n .testPhoneNumbers(Map.of(\"+11231231234\", \"000000\"))\n .build())\n .build())\n .smsRegionConfig(ConfigSmsRegionConfigArgs.builder()\n .allowlistOnly(ConfigSmsRegionConfigAllowlistOnlyArgs.builder()\n .allowedRegions( \n \"US\",\n \"CA\")\n .build())\n .build())\n .blockingFunctions(ConfigBlockingFunctionsArgs.builder()\n .triggers(ConfigBlockingFunctionsTriggerArgs.builder()\n .eventType(\"beforeSignIn\")\n .functionUri(\"https://us-east1-my-project.cloudfunctions.net/before-sign-in\")\n .build())\n .forwardInboundCredentials(ConfigBlockingFunctionsForwardInboundCredentialsArgs.builder()\n .refreshToken(true)\n .accessToken(true)\n .idToken(true)\n .build())\n .build())\n .quota(ConfigQuotaArgs.builder()\n .signUpQuotaConfig(ConfigQuotaSignUpQuotaConfigArgs.builder()\n .quota(1000)\n .startTime(\"\")\n .quotaDuration(\"7200s\")\n .build())\n .build())\n .authorizedDomains( \n \"localhost\",\n \"my-project.firebaseapp.com\",\n \"my-project.web.app\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:organizations:Project\n properties:\n projectId: my-project\n name: my-project\n orgId: '123456789'\n billingAccount: 000000-0000000-0000000-000000\n deletionPolicy: DELETE\n labels:\n firebase: enabled\n identitytoolkit:\n type: gcp:projects:Service\n properties:\n project: ${default.projectId}\n service: identitytoolkit.googleapis.com\n defaultConfig:\n type: gcp:identityplatform:Config\n name: default\n properties:\n project: ${default.projectId}\n autodeleteAnonymousUsers: true\n signIn:\n allowDuplicateEmails: true\n anonymous:\n enabled: true\n email:\n enabled: true\n passwordRequired: false\n phoneNumber:\n enabled: true\n testPhoneNumbers:\n '+11231231234': '000000'\n smsRegionConfig:\n allowlistOnly:\n allowedRegions:\n - US\n - CA\n blockingFunctions:\n triggers:\n - eventType: beforeSignIn\n functionUri: https://us-east1-my-project.cloudfunctions.net/before-sign-in\n forwardInboundCredentials:\n refreshToken: true\n accessToken: true\n idToken: true\n quota:\n signUpQuotaConfig:\n quota: 1000\n startTime:\n quotaDuration: 7200s\n authorizedDomains:\n - localhost\n - my-project.firebaseapp.com\n - my-project.web.app\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/config`\n\n* `projects/{{project}}`\n\n* `{{project}}`\n\nWhen using the `pulumi import` command, Config can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:identityplatform/config:Config default projects/{{project}}/config\n```\n\n```sh\n$ pulumi import gcp:identityplatform/config:Config default projects/{{project}}\n```\n\n```sh\n$ pulumi import gcp:identityplatform/config:Config default {{project}}\n```\n\n", "properties": { "authorizedDomains": { "type": "array", @@ -213463,7 +213463,7 @@ } }, "gcp:integrationconnectors/connection:Connection": { - "description": "An Integration connectors Connection.\n\n\nTo get more information about Connection, see:\n\n* [API documentation](https://cloud.google.com/integration-connectors/docs/reference/rest/v1/projects.locations.connections)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/integration-connectors/docs/createconnection)\n\n## Example Usage\n\n### Integration Connectors Connection Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst testProject = gcp.organizations.getProject({});\nconst pubsubconnection = new gcp.integrationconnectors.Connection(\"pubsubconnection\", {\n name: \"test-pubsub\",\n location: \"us-central1\",\n connectorVersion: testProject.then(testProject =\u003e `projects/${testProject.projectId}/locations/global/providers/gcp/connectors/pubsub/versions/1`),\n description: \"tf created description\",\n configVariables: [\n {\n key: \"project_id\",\n stringValue: \"connectors-example\",\n },\n {\n key: \"topic_id\",\n stringValue: \"test\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest_project = gcp.organizations.get_project()\npubsubconnection = gcp.integrationconnectors.Connection(\"pubsubconnection\",\n name=\"test-pubsub\",\n location=\"us-central1\",\n connector_version=f\"projects/{test_project.project_id}/locations/global/providers/gcp/connectors/pubsub/versions/1\",\n description=\"tf created description\",\n config_variables=[\n {\n \"key\": \"project_id\",\n \"string_value\": \"connectors-example\",\n },\n {\n \"key\": \"topic_id\",\n \"string_value\": \"test\",\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testProject = Gcp.Organizations.GetProject.Invoke();\n\n var pubsubconnection = new Gcp.IntegrationConnectors.Connection(\"pubsubconnection\", new()\n {\n Name = \"test-pubsub\",\n Location = \"us-central1\",\n ConnectorVersion = $\"projects/{testProject.Apply(getProjectResult =\u003e getProjectResult.ProjectId)}/locations/global/providers/gcp/connectors/pubsub/versions/1\",\n Description = \"tf created description\",\n ConfigVariables = new[]\n {\n new Gcp.IntegrationConnectors.Inputs.ConnectionConfigVariableArgs\n {\n Key = \"project_id\",\n StringValue = \"connectors-example\",\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionConfigVariableArgs\n {\n Key = \"topic_id\",\n StringValue = \"test\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/integrationconnectors\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestProject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = integrationconnectors.NewConnection(ctx, \"pubsubconnection\", \u0026integrationconnectors.ConnectionArgs{\n\t\t\tName: pulumi.String(\"test-pubsub\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectorVersion: pulumi.Sprintf(\"projects/%v/locations/global/providers/gcp/connectors/pubsub/versions/1\", testProject.ProjectId),\n\t\t\tDescription: pulumi.String(\"tf created description\"),\n\t\t\tConfigVariables: integrationconnectors.ConnectionConfigVariableArray{\n\t\t\t\t\u0026integrationconnectors.ConnectionConfigVariableArgs{\n\t\t\t\t\tKey: pulumi.String(\"project_id\"),\n\t\t\t\t\tStringValue: pulumi.String(\"connectors-example\"),\n\t\t\t\t},\n\t\t\t\t\u0026integrationconnectors.ConnectionConfigVariableArgs{\n\t\t\t\t\tKey: pulumi.String(\"topic_id\"),\n\t\t\t\t\tStringValue: pulumi.String(\"test\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.integrationconnectors.Connection;\nimport com.pulumi.gcp.integrationconnectors.ConnectionArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionConfigVariableArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var testProject = OrganizationsFunctions.getProject();\n\n var pubsubconnection = new Connection(\"pubsubconnection\", ConnectionArgs.builder()\n .name(\"test-pubsub\")\n .location(\"us-central1\")\n .connectorVersion(String.format(\"projects/%s/locations/global/providers/gcp/connectors/pubsub/versions/1\", testProject.applyValue(getProjectResult -\u003e getProjectResult.projectId())))\n .description(\"tf created description\")\n .configVariables( \n ConnectionConfigVariableArgs.builder()\n .key(\"project_id\")\n .stringValue(\"connectors-example\")\n .build(),\n ConnectionConfigVariableArgs.builder()\n .key(\"topic_id\")\n .stringValue(\"test\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pubsubconnection:\n type: gcp:integrationconnectors:Connection\n properties:\n name: test-pubsub\n location: us-central1\n connectorVersion: projects/${testProject.projectId}/locations/global/providers/gcp/connectors/pubsub/versions/1\n description: tf created description\n configVariables:\n - key: project_id\n stringValue: connectors-example\n - key: topic_id\n stringValue: test\nvariables:\n testProject:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Integration Connectors Connection Advanced\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst testProject = gcp.organizations.getProject({});\nconst secret_basic = new gcp.secretmanager.Secret(\"secret-basic\", {\n secretId: \"test-secret\",\n replication: {\n userManaged: {\n replicas: [{\n location: \"us-central1\",\n }],\n },\n },\n});\nconst secret_version_basic = new gcp.secretmanager.SecretVersion(\"secret-version-basic\", {\n secret: secret_basic.id,\n secretData: \"dummypassword\",\n});\nconst secretIam = new gcp.secretmanager.SecretIamMember(\"secret_iam\", {\n secretId: secret_basic.id,\n role: \"roles/secretmanager.admin\",\n member: testProject.then(testProject =\u003e `serviceAccount:${testProject.number}-compute@developer.gserviceaccount.com`),\n}, {\n dependsOn: [secret_version_basic],\n});\nconst zendeskconnection = new gcp.integrationconnectors.Connection(\"zendeskconnection\", {\n name: \"test-zendesk\",\n description: \"tf updated description\",\n location: \"us-central1\",\n serviceAccount: testProject.then(testProject =\u003e `${testProject.number}-compute@developer.gserviceaccount.com`),\n connectorVersion: testProject.then(testProject =\u003e `projects/${testProject.projectId}/locations/global/providers/zendesk/connectors/zendesk/versions/1`),\n configVariables: [\n {\n key: \"proxy_enabled\",\n booleanValue: false,\n },\n {\n key: \"sample_integer_value\",\n integerValue: 1,\n },\n {\n key: \"sample_encryption_key_value\",\n encryptionKeyValue: {\n type: \"GOOGLE_MANAGED\",\n kmsKeyName: \"sampleKMSKkey\",\n },\n },\n {\n key: \"sample_secret_value\",\n secretValue: {\n secretVersion: secret_version_basic.name,\n },\n },\n ],\n suspended: false,\n authConfig: {\n additionalVariables: [\n {\n key: \"sample_string\",\n stringValue: \"sampleString\",\n },\n {\n key: \"sample_boolean\",\n booleanValue: false,\n },\n {\n key: \"sample_integer\",\n integerValue: 1,\n },\n {\n key: \"sample_secret_value\",\n secretValue: {\n secretVersion: secret_version_basic.name,\n },\n },\n {\n key: \"sample_encryption_key_value\",\n encryptionKeyValue: {\n type: \"GOOGLE_MANAGED\",\n kmsKeyName: \"sampleKMSKkey\",\n },\n },\n ],\n authType: \"USER_PASSWORD\",\n authKey: \"sampleAuthKey\",\n userPassword: {\n username: \"user@xyz.com\",\n password: {\n secretVersion: secret_version_basic.name,\n },\n },\n },\n destinationConfigs: [{\n key: \"url\",\n destinations: [{\n host: \"https://test.zendesk.com\",\n port: 80,\n }],\n }],\n lockConfig: {\n locked: false,\n reason: \"Its not locked\",\n },\n logConfig: {\n enabled: true,\n },\n nodeConfig: {\n minNodeCount: 2,\n maxNodeCount: 50,\n },\n labels: {\n foo: \"bar\",\n },\n sslConfig: {\n additionalVariables: [\n {\n key: \"sample_string\",\n stringValue: \"sampleString\",\n },\n {\n key: \"sample_boolean\",\n booleanValue: false,\n },\n {\n key: \"sample_integer\",\n integerValue: 1,\n },\n {\n key: \"sample_secret_value\",\n secretValue: {\n secretVersion: secret_version_basic.name,\n },\n },\n {\n key: \"sample_encryption_key_value\",\n encryptionKeyValue: {\n type: \"GOOGLE_MANAGED\",\n kmsKeyName: \"sampleKMSKkey\",\n },\n },\n ],\n clientCertType: \"PEM\",\n clientCertificate: {\n secretVersion: secret_version_basic.name,\n },\n clientPrivateKey: {\n secretVersion: secret_version_basic.name,\n },\n clientPrivateKeyPass: {\n secretVersion: secret_version_basic.name,\n },\n privateServerCertificate: {\n secretVersion: secret_version_basic.name,\n },\n serverCertType: \"PEM\",\n trustModel: \"PRIVATE\",\n type: \"TLS\",\n useSsl: true,\n },\n eventingEnablementType: \"EVENTING_AND_CONNECTION\",\n eventingConfig: {\n additionalVariables: [\n {\n key: \"sample_string\",\n stringValue: \"sampleString\",\n },\n {\n key: \"sample_boolean\",\n booleanValue: false,\n },\n {\n key: \"sample_integer\",\n integerValue: 1,\n },\n {\n key: \"sample_secret_value\",\n secretValue: {\n secretVersion: secret_version_basic.name,\n },\n },\n {\n key: \"sample_encryption_key_value\",\n encryptionKeyValue: {\n type: \"GOOGLE_MANAGED\",\n kmsKeyName: \"sampleKMSKkey\",\n },\n },\n ],\n registrationDestinationConfig: {\n key: \"registration_destination_config\",\n destinations: [{\n host: \"https://test.zendesk.com\",\n port: 80,\n }],\n },\n authConfig: {\n authType: \"USER_PASSWORD\",\n authKey: \"sampleAuthKey\",\n userPassword: {\n username: \"user@xyz.com\",\n password: {\n secretVersion: secret_version_basic.name,\n },\n },\n additionalVariables: [\n {\n key: \"sample_string\",\n stringValue: \"sampleString\",\n },\n {\n key: \"sample_boolean\",\n booleanValue: false,\n },\n {\n key: \"sample_integer\",\n integerValue: 1,\n },\n {\n key: \"sample_secret_value\",\n secretValue: {\n secretVersion: secret_version_basic.name,\n },\n },\n {\n key: \"sample_encryption_key_value\",\n encryptionKeyValue: {\n type: \"GOOGLE_MANAGED\",\n kmsKeyName: \"sampleKMSKkey\",\n },\n },\n ],\n },\n enrichmentEnabled: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest_project = gcp.organizations.get_project()\nsecret_basic = gcp.secretmanager.Secret(\"secret-basic\",\n secret_id=\"test-secret\",\n replication={\n \"user_managed\": {\n \"replicas\": [{\n \"location\": \"us-central1\",\n }],\n },\n })\nsecret_version_basic = gcp.secretmanager.SecretVersion(\"secret-version-basic\",\n secret=secret_basic.id,\n secret_data=\"dummypassword\")\nsecret_iam = gcp.secretmanager.SecretIamMember(\"secret_iam\",\n secret_id=secret_basic.id,\n role=\"roles/secretmanager.admin\",\n member=f\"serviceAccount:{test_project.number}-compute@developer.gserviceaccount.com\",\n opts = pulumi.ResourceOptions(depends_on=[secret_version_basic]))\nzendeskconnection = gcp.integrationconnectors.Connection(\"zendeskconnection\",\n name=\"test-zendesk\",\n description=\"tf updated description\",\n location=\"us-central1\",\n service_account=f\"{test_project.number}-compute@developer.gserviceaccount.com\",\n connector_version=f\"projects/{test_project.project_id}/locations/global/providers/zendesk/connectors/zendesk/versions/1\",\n config_variables=[\n {\n \"key\": \"proxy_enabled\",\n \"boolean_value\": False,\n },\n {\n \"key\": \"sample_integer_value\",\n \"integer_value\": 1,\n },\n {\n \"key\": \"sample_encryption_key_value\",\n \"encryption_key_value\": {\n \"type\": \"GOOGLE_MANAGED\",\n \"kms_key_name\": \"sampleKMSKkey\",\n },\n },\n {\n \"key\": \"sample_secret_value\",\n \"secret_value\": {\n \"secret_version\": secret_version_basic.name,\n },\n },\n ],\n suspended=False,\n auth_config={\n \"additional_variables\": [\n {\n \"key\": \"sample_string\",\n \"string_value\": \"sampleString\",\n },\n {\n \"key\": \"sample_boolean\",\n \"boolean_value\": False,\n },\n {\n \"key\": \"sample_integer\",\n \"integer_value\": 1,\n },\n {\n \"key\": \"sample_secret_value\",\n \"secret_value\": {\n \"secret_version\": secret_version_basic.name,\n },\n },\n {\n \"key\": \"sample_encryption_key_value\",\n \"encryption_key_value\": {\n \"type\": \"GOOGLE_MANAGED\",\n \"kms_key_name\": \"sampleKMSKkey\",\n },\n },\n ],\n \"auth_type\": \"USER_PASSWORD\",\n \"auth_key\": \"sampleAuthKey\",\n \"user_password\": {\n \"username\": \"user@xyz.com\",\n \"password\": {\n \"secret_version\": secret_version_basic.name,\n },\n },\n },\n destination_configs=[{\n \"key\": \"url\",\n \"destinations\": [{\n \"host\": \"https://test.zendesk.com\",\n \"port\": 80,\n }],\n }],\n lock_config={\n \"locked\": False,\n \"reason\": \"Its not locked\",\n },\n log_config={\n \"enabled\": True,\n },\n node_config={\n \"min_node_count\": 2,\n \"max_node_count\": 50,\n },\n labels={\n \"foo\": \"bar\",\n },\n ssl_config={\n \"additional_variables\": [\n {\n \"key\": \"sample_string\",\n \"string_value\": \"sampleString\",\n },\n {\n \"key\": \"sample_boolean\",\n \"boolean_value\": False,\n },\n {\n \"key\": \"sample_integer\",\n \"integer_value\": 1,\n },\n {\n \"key\": \"sample_secret_value\",\n \"secret_value\": {\n \"secret_version\": secret_version_basic.name,\n },\n },\n {\n \"key\": \"sample_encryption_key_value\",\n \"encryption_key_value\": {\n \"type\": \"GOOGLE_MANAGED\",\n \"kms_key_name\": \"sampleKMSKkey\",\n },\n },\n ],\n \"client_cert_type\": \"PEM\",\n \"client_certificate\": {\n \"secret_version\": secret_version_basic.name,\n },\n \"client_private_key\": {\n \"secret_version\": secret_version_basic.name,\n },\n \"client_private_key_pass\": {\n \"secret_version\": secret_version_basic.name,\n },\n \"private_server_certificate\": {\n \"secret_version\": secret_version_basic.name,\n },\n \"server_cert_type\": \"PEM\",\n \"trust_model\": \"PRIVATE\",\n \"type\": \"TLS\",\n \"use_ssl\": True,\n },\n eventing_enablement_type=\"EVENTING_AND_CONNECTION\",\n eventing_config={\n \"additional_variables\": [\n {\n \"key\": \"sample_string\",\n \"string_value\": \"sampleString\",\n },\n {\n \"key\": \"sample_boolean\",\n \"boolean_value\": False,\n },\n {\n \"key\": \"sample_integer\",\n \"integer_value\": 1,\n },\n {\n \"key\": \"sample_secret_value\",\n \"secret_value\": {\n \"secret_version\": secret_version_basic.name,\n },\n },\n {\n \"key\": \"sample_encryption_key_value\",\n \"encryption_key_value\": {\n \"type\": \"GOOGLE_MANAGED\",\n \"kms_key_name\": \"sampleKMSKkey\",\n },\n },\n ],\n \"registration_destination_config\": {\n \"key\": \"registration_destination_config\",\n \"destinations\": [{\n \"host\": \"https://test.zendesk.com\",\n \"port\": 80,\n }],\n },\n \"auth_config\": {\n \"auth_type\": \"USER_PASSWORD\",\n \"auth_key\": \"sampleAuthKey\",\n \"user_password\": {\n \"username\": \"user@xyz.com\",\n \"password\": {\n \"secret_version\": secret_version_basic.name,\n },\n },\n \"additional_variables\": [\n {\n \"key\": \"sample_string\",\n \"string_value\": \"sampleString\",\n },\n {\n \"key\": \"sample_boolean\",\n \"boolean_value\": False,\n },\n {\n \"key\": \"sample_integer\",\n \"integer_value\": 1,\n },\n {\n \"key\": \"sample_secret_value\",\n \"secret_value\": {\n \"secret_version\": secret_version_basic.name,\n },\n },\n {\n \"key\": \"sample_encryption_key_value\",\n \"encryption_key_value\": {\n \"type\": \"GOOGLE_MANAGED\",\n \"kms_key_name\": \"sampleKMSKkey\",\n },\n },\n ],\n },\n \"enrichment_enabled\": True,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testProject = Gcp.Organizations.GetProject.Invoke();\n\n var secret_basic = new Gcp.SecretManager.Secret(\"secret-basic\", new()\n {\n SecretId = \"test-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n UserManaged = new Gcp.SecretManager.Inputs.SecretReplicationUserManagedArgs\n {\n Replicas = new[]\n {\n new Gcp.SecretManager.Inputs.SecretReplicationUserManagedReplicaArgs\n {\n Location = \"us-central1\",\n },\n },\n },\n },\n });\n\n var secret_version_basic = new Gcp.SecretManager.SecretVersion(\"secret-version-basic\", new()\n {\n Secret = secret_basic.Id,\n SecretData = \"dummypassword\",\n });\n\n var secretIam = new Gcp.SecretManager.SecretIamMember(\"secret_iam\", new()\n {\n SecretId = secret_basic.Id,\n Role = \"roles/secretmanager.admin\",\n Member = $\"serviceAccount:{testProject.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secret_version_basic,\n },\n });\n\n var zendeskconnection = new Gcp.IntegrationConnectors.Connection(\"zendeskconnection\", new()\n {\n Name = \"test-zendesk\",\n Description = \"tf updated description\",\n Location = \"us-central1\",\n ServiceAccount = $\"{testProject.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n ConnectorVersion = $\"projects/{testProject.Apply(getProjectResult =\u003e getProjectResult.ProjectId)}/locations/global/providers/zendesk/connectors/zendesk/versions/1\",\n ConfigVariables = new[]\n {\n new Gcp.IntegrationConnectors.Inputs.ConnectionConfigVariableArgs\n {\n Key = \"proxy_enabled\",\n BooleanValue = false,\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionConfigVariableArgs\n {\n Key = \"sample_integer_value\",\n IntegerValue = 1,\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionConfigVariableArgs\n {\n Key = \"sample_encryption_key_value\",\n EncryptionKeyValue = new Gcp.IntegrationConnectors.Inputs.ConnectionConfigVariableEncryptionKeyValueArgs\n {\n Type = \"GOOGLE_MANAGED\",\n KmsKeyName = \"sampleKMSKkey\",\n },\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionConfigVariableArgs\n {\n Key = \"sample_secret_value\",\n SecretValue = new Gcp.IntegrationConnectors.Inputs.ConnectionConfigVariableSecretValueArgs\n {\n SecretVersion = secret_version_basic.Name,\n },\n },\n },\n Suspended = false,\n AuthConfig = new Gcp.IntegrationConnectors.Inputs.ConnectionAuthConfigArgs\n {\n AdditionalVariables = new[]\n {\n new Gcp.IntegrationConnectors.Inputs.ConnectionAuthConfigAdditionalVariableArgs\n {\n Key = \"sample_string\",\n StringValue = \"sampleString\",\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionAuthConfigAdditionalVariableArgs\n {\n Key = \"sample_boolean\",\n BooleanValue = false,\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionAuthConfigAdditionalVariableArgs\n {\n Key = \"sample_integer\",\n IntegerValue = 1,\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionAuthConfigAdditionalVariableArgs\n {\n Key = \"sample_secret_value\",\n SecretValue = new Gcp.IntegrationConnectors.Inputs.ConnectionAuthConfigAdditionalVariableSecretValueArgs\n {\n SecretVersion = secret_version_basic.Name,\n },\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionAuthConfigAdditionalVariableArgs\n {\n Key = \"sample_encryption_key_value\",\n EncryptionKeyValue = new Gcp.IntegrationConnectors.Inputs.ConnectionAuthConfigAdditionalVariableEncryptionKeyValueArgs\n {\n Type = \"GOOGLE_MANAGED\",\n KmsKeyName = \"sampleKMSKkey\",\n },\n },\n },\n AuthType = \"USER_PASSWORD\",\n AuthKey = \"sampleAuthKey\",\n UserPassword = new Gcp.IntegrationConnectors.Inputs.ConnectionAuthConfigUserPasswordArgs\n {\n Username = \"user@xyz.com\",\n Password = new Gcp.IntegrationConnectors.Inputs.ConnectionAuthConfigUserPasswordPasswordArgs\n {\n SecretVersion = secret_version_basic.Name,\n },\n },\n },\n DestinationConfigs = new[]\n {\n new Gcp.IntegrationConnectors.Inputs.ConnectionDestinationConfigArgs\n {\n Key = \"url\",\n Destinations = new[]\n {\n new Gcp.IntegrationConnectors.Inputs.ConnectionDestinationConfigDestinationArgs\n {\n Host = \"https://test.zendesk.com\",\n Port = 80,\n },\n },\n },\n },\n LockConfig = new Gcp.IntegrationConnectors.Inputs.ConnectionLockConfigArgs\n {\n Locked = false,\n Reason = \"Its not locked\",\n },\n LogConfig = new Gcp.IntegrationConnectors.Inputs.ConnectionLogConfigArgs\n {\n Enabled = true,\n },\n NodeConfig = new Gcp.IntegrationConnectors.Inputs.ConnectionNodeConfigArgs\n {\n MinNodeCount = 2,\n MaxNodeCount = 50,\n },\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n SslConfig = new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigArgs\n {\n AdditionalVariables = new[]\n {\n new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigAdditionalVariableArgs\n {\n Key = \"sample_string\",\n StringValue = \"sampleString\",\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigAdditionalVariableArgs\n {\n Key = \"sample_boolean\",\n BooleanValue = false,\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigAdditionalVariableArgs\n {\n Key = \"sample_integer\",\n IntegerValue = 1,\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigAdditionalVariableArgs\n {\n Key = \"sample_secret_value\",\n SecretValue = new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigAdditionalVariableSecretValueArgs\n {\n SecretVersion = secret_version_basic.Name,\n },\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigAdditionalVariableArgs\n {\n Key = \"sample_encryption_key_value\",\n EncryptionKeyValue = new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigAdditionalVariableEncryptionKeyValueArgs\n {\n Type = \"GOOGLE_MANAGED\",\n KmsKeyName = \"sampleKMSKkey\",\n },\n },\n },\n ClientCertType = \"PEM\",\n ClientCertificate = new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigClientCertificateArgs\n {\n SecretVersion = secret_version_basic.Name,\n },\n ClientPrivateKey = new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigClientPrivateKeyArgs\n {\n SecretVersion = secret_version_basic.Name,\n },\n ClientPrivateKeyPass = new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigClientPrivateKeyPassArgs\n {\n SecretVersion = secret_version_basic.Name,\n },\n PrivateServerCertificate = new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigPrivateServerCertificateArgs\n {\n SecretVersion = secret_version_basic.Name,\n },\n ServerCertType = \"PEM\",\n TrustModel = \"PRIVATE\",\n Type = \"TLS\",\n UseSsl = true,\n },\n EventingEnablementType = \"EVENTING_AND_CONNECTION\",\n EventingConfig = new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigArgs\n {\n AdditionalVariables = new[]\n {\n new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAdditionalVariableArgs\n {\n Key = \"sample_string\",\n StringValue = \"sampleString\",\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAdditionalVariableArgs\n {\n Key = \"sample_boolean\",\n BooleanValue = false,\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAdditionalVariableArgs\n {\n Key = \"sample_integer\",\n IntegerValue = 1,\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAdditionalVariableArgs\n {\n Key = \"sample_secret_value\",\n SecretValue = new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAdditionalVariableSecretValueArgs\n {\n SecretVersion = secret_version_basic.Name,\n },\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAdditionalVariableArgs\n {\n Key = \"sample_encryption_key_value\",\n EncryptionKeyValue = new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAdditionalVariableEncryptionKeyValueArgs\n {\n Type = \"GOOGLE_MANAGED\",\n KmsKeyName = \"sampleKMSKkey\",\n },\n },\n },\n RegistrationDestinationConfig = new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigRegistrationDestinationConfigArgs\n {\n Key = \"registration_destination_config\",\n Destinations = new[]\n {\n new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigRegistrationDestinationConfigDestinationArgs\n {\n Host = \"https://test.zendesk.com\",\n Port = 80,\n },\n },\n },\n AuthConfig = new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAuthConfigArgs\n {\n AuthType = \"USER_PASSWORD\",\n AuthKey = \"sampleAuthKey\",\n UserPassword = new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAuthConfigUserPasswordArgs\n {\n Username = \"user@xyz.com\",\n Password = new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAuthConfigUserPasswordPasswordArgs\n {\n SecretVersion = secret_version_basic.Name,\n },\n },\n AdditionalVariables = new[]\n {\n new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAuthConfigAdditionalVariableArgs\n {\n Key = \"sample_string\",\n StringValue = \"sampleString\",\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAuthConfigAdditionalVariableArgs\n {\n Key = \"sample_boolean\",\n BooleanValue = false,\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAuthConfigAdditionalVariableArgs\n {\n Key = \"sample_integer\",\n IntegerValue = 1,\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAuthConfigAdditionalVariableArgs\n {\n Key = \"sample_secret_value\",\n SecretValue = new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAuthConfigAdditionalVariableSecretValueArgs\n {\n SecretVersion = secret_version_basic.Name,\n },\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAuthConfigAdditionalVariableArgs\n {\n Key = \"sample_encryption_key_value\",\n EncryptionKeyValue = new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAuthConfigAdditionalVariableEncryptionKeyValueArgs\n {\n Type = \"GOOGLE_MANAGED\",\n KmsKeyName = \"sampleKMSKkey\",\n },\n },\n },\n },\n EnrichmentEnabled = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/integrationconnectors\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestProject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"secret-basic\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"test-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tUserManaged: \u0026secretmanager.SecretReplicationUserManagedArgs{\n\t\t\t\t\tReplicas: secretmanager.SecretReplicationUserManagedReplicaArray{\n\t\t\t\t\t\t\u0026secretmanager.SecretReplicationUserManagedReplicaArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"secret-version-basic\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret_basic.ID(),\n\t\t\tSecretData: pulumi.String(\"dummypassword\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret_iam\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: secret_basic.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.admin\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:%v-compute@developer.gserviceaccount.com\", testProject.Number),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecret_version_basic,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = integrationconnectors.NewConnection(ctx, \"zendeskconnection\", \u0026integrationconnectors.ConnectionArgs{\n\t\t\tName: pulumi.String(\"test-zendesk\"),\n\t\t\tDescription: pulumi.String(\"tf updated description\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tServiceAccount: pulumi.Sprintf(\"%v-compute@developer.gserviceaccount.com\", testProject.Number),\n\t\t\tConnectorVersion: pulumi.Sprintf(\"projects/%v/locations/global/providers/zendesk/connectors/zendesk/versions/1\", testProject.ProjectId),\n\t\t\tConfigVariables: integrationconnectors.ConnectionConfigVariableArray{\n\t\t\t\t\u0026integrationconnectors.ConnectionConfigVariableArgs{\n\t\t\t\t\tKey: pulumi.String(\"proxy_enabled\"),\n\t\t\t\t\tBooleanValue: pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t\t\u0026integrationconnectors.ConnectionConfigVariableArgs{\n\t\t\t\t\tKey: pulumi.String(\"sample_integer_value\"),\n\t\t\t\t\tIntegerValue: pulumi.Int(1),\n\t\t\t\t},\n\t\t\t\t\u0026integrationconnectors.ConnectionConfigVariableArgs{\n\t\t\t\t\tKey: pulumi.String(\"sample_encryption_key_value\"),\n\t\t\t\t\tEncryptionKeyValue: \u0026integrationconnectors.ConnectionConfigVariableEncryptionKeyValueArgs{\n\t\t\t\t\t\tType: pulumi.String(\"GOOGLE_MANAGED\"),\n\t\t\t\t\t\tKmsKeyName: pulumi.String(\"sampleKMSKkey\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026integrationconnectors.ConnectionConfigVariableArgs{\n\t\t\t\t\tKey: pulumi.String(\"sample_secret_value\"),\n\t\t\t\t\tSecretValue: \u0026integrationconnectors.ConnectionConfigVariableSecretValueArgs{\n\t\t\t\t\t\tSecretVersion: secret_version_basic.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSuspended: pulumi.Bool(false),\n\t\t\tAuthConfig: \u0026integrationconnectors.ConnectionAuthConfigArgs{\n\t\t\t\tAdditionalVariables: integrationconnectors.ConnectionAuthConfigAdditionalVariableArray{\n\t\t\t\t\t\u0026integrationconnectors.ConnectionAuthConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_string\"),\n\t\t\t\t\t\tStringValue: pulumi.String(\"sampleString\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionAuthConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_boolean\"),\n\t\t\t\t\t\tBooleanValue: pulumi.Bool(false),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionAuthConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_integer\"),\n\t\t\t\t\t\tIntegerValue: pulumi.Int(1),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionAuthConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_secret_value\"),\n\t\t\t\t\t\tSecretValue: \u0026integrationconnectors.ConnectionAuthConfigAdditionalVariableSecretValueArgs{\n\t\t\t\t\t\t\tSecretVersion: secret_version_basic.Name,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionAuthConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_encryption_key_value\"),\n\t\t\t\t\t\tEncryptionKeyValue: \u0026integrationconnectors.ConnectionAuthConfigAdditionalVariableEncryptionKeyValueArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"GOOGLE_MANAGED\"),\n\t\t\t\t\t\t\tKmsKeyName: pulumi.String(\"sampleKMSKkey\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAuthType: pulumi.String(\"USER_PASSWORD\"),\n\t\t\t\tAuthKey: pulumi.String(\"sampleAuthKey\"),\n\t\t\t\tUserPassword: \u0026integrationconnectors.ConnectionAuthConfigUserPasswordArgs{\n\t\t\t\t\tUsername: pulumi.String(\"user@xyz.com\"),\n\t\t\t\t\tPassword: \u0026integrationconnectors.ConnectionAuthConfigUserPasswordPasswordArgs{\n\t\t\t\t\t\tSecretVersion: secret_version_basic.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDestinationConfigs: integrationconnectors.ConnectionDestinationConfigArray{\n\t\t\t\t\u0026integrationconnectors.ConnectionDestinationConfigArgs{\n\t\t\t\t\tKey: pulumi.String(\"url\"),\n\t\t\t\t\tDestinations: integrationconnectors.ConnectionDestinationConfigDestinationArray{\n\t\t\t\t\t\t\u0026integrationconnectors.ConnectionDestinationConfigDestinationArgs{\n\t\t\t\t\t\t\tHost: pulumi.String(\"https://test.zendesk.com\"),\n\t\t\t\t\t\t\tPort: pulumi.Int(80),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLockConfig: \u0026integrationconnectors.ConnectionLockConfigArgs{\n\t\t\t\tLocked: pulumi.Bool(false),\n\t\t\t\tReason: pulumi.String(\"Its not locked\"),\n\t\t\t},\n\t\t\tLogConfig: \u0026integrationconnectors.ConnectionLogConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t},\n\t\t\tNodeConfig: \u0026integrationconnectors.ConnectionNodeConfigArgs{\n\t\t\t\tMinNodeCount: pulumi.Int(2),\n\t\t\t\tMaxNodeCount: pulumi.Int(50),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tSslConfig: \u0026integrationconnectors.ConnectionSslConfigArgs{\n\t\t\t\tAdditionalVariables: integrationconnectors.ConnectionSslConfigAdditionalVariableArray{\n\t\t\t\t\t\u0026integrationconnectors.ConnectionSslConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_string\"),\n\t\t\t\t\t\tStringValue: pulumi.String(\"sampleString\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionSslConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_boolean\"),\n\t\t\t\t\t\tBooleanValue: pulumi.Bool(false),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionSslConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_integer\"),\n\t\t\t\t\t\tIntegerValue: pulumi.Int(1),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionSslConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_secret_value\"),\n\t\t\t\t\t\tSecretValue: \u0026integrationconnectors.ConnectionSslConfigAdditionalVariableSecretValueArgs{\n\t\t\t\t\t\t\tSecretVersion: secret_version_basic.Name,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionSslConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_encryption_key_value\"),\n\t\t\t\t\t\tEncryptionKeyValue: \u0026integrationconnectors.ConnectionSslConfigAdditionalVariableEncryptionKeyValueArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"GOOGLE_MANAGED\"),\n\t\t\t\t\t\t\tKmsKeyName: pulumi.String(\"sampleKMSKkey\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tClientCertType: pulumi.String(\"PEM\"),\n\t\t\t\tClientCertificate: \u0026integrationconnectors.ConnectionSslConfigClientCertificateArgs{\n\t\t\t\t\tSecretVersion: secret_version_basic.Name,\n\t\t\t\t},\n\t\t\t\tClientPrivateKey: \u0026integrationconnectors.ConnectionSslConfigClientPrivateKeyArgs{\n\t\t\t\t\tSecretVersion: secret_version_basic.Name,\n\t\t\t\t},\n\t\t\t\tClientPrivateKeyPass: \u0026integrationconnectors.ConnectionSslConfigClientPrivateKeyPassArgs{\n\t\t\t\t\tSecretVersion: secret_version_basic.Name,\n\t\t\t\t},\n\t\t\t\tPrivateServerCertificate: \u0026integrationconnectors.ConnectionSslConfigPrivateServerCertificateArgs{\n\t\t\t\t\tSecretVersion: secret_version_basic.Name,\n\t\t\t\t},\n\t\t\t\tServerCertType: pulumi.String(\"PEM\"),\n\t\t\t\tTrustModel: pulumi.String(\"PRIVATE\"),\n\t\t\t\tType: pulumi.String(\"TLS\"),\n\t\t\t\tUseSsl: pulumi.Bool(true),\n\t\t\t},\n\t\t\tEventingEnablementType: pulumi.String(\"EVENTING_AND_CONNECTION\"),\n\t\t\tEventingConfig: \u0026integrationconnectors.ConnectionEventingConfigArgs{\n\t\t\t\tAdditionalVariables: integrationconnectors.ConnectionEventingConfigAdditionalVariableArray{\n\t\t\t\t\t\u0026integrationconnectors.ConnectionEventingConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_string\"),\n\t\t\t\t\t\tStringValue: pulumi.String(\"sampleString\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionEventingConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_boolean\"),\n\t\t\t\t\t\tBooleanValue: pulumi.Bool(false),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionEventingConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_integer\"),\n\t\t\t\t\t\tIntegerValue: pulumi.Int(1),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionEventingConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_secret_value\"),\n\t\t\t\t\t\tSecretValue: \u0026integrationconnectors.ConnectionEventingConfigAdditionalVariableSecretValueArgs{\n\t\t\t\t\t\t\tSecretVersion: secret_version_basic.Name,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionEventingConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_encryption_key_value\"),\n\t\t\t\t\t\tEncryptionKeyValue: \u0026integrationconnectors.ConnectionEventingConfigAdditionalVariableEncryptionKeyValueArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"GOOGLE_MANAGED\"),\n\t\t\t\t\t\t\tKmsKeyName: pulumi.String(\"sampleKMSKkey\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tRegistrationDestinationConfig: \u0026integrationconnectors.ConnectionEventingConfigRegistrationDestinationConfigArgs{\n\t\t\t\t\tKey: pulumi.String(\"registration_destination_config\"),\n\t\t\t\t\tDestinations: integrationconnectors.ConnectionEventingConfigRegistrationDestinationConfigDestinationArray{\n\t\t\t\t\t\t\u0026integrationconnectors.ConnectionEventingConfigRegistrationDestinationConfigDestinationArgs{\n\t\t\t\t\t\t\tHost: pulumi.String(\"https://test.zendesk.com\"),\n\t\t\t\t\t\t\tPort: pulumi.Int(80),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAuthConfig: \u0026integrationconnectors.ConnectionEventingConfigAuthConfigArgs{\n\t\t\t\t\tAuthType: pulumi.String(\"USER_PASSWORD\"),\n\t\t\t\t\tAuthKey: pulumi.String(\"sampleAuthKey\"),\n\t\t\t\t\tUserPassword: \u0026integrationconnectors.ConnectionEventingConfigAuthConfigUserPasswordArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"user@xyz.com\"),\n\t\t\t\t\t\tPassword: \u0026integrationconnectors.ConnectionEventingConfigAuthConfigUserPasswordPasswordArgs{\n\t\t\t\t\t\t\tSecretVersion: secret_version_basic.Name,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tAdditionalVariables: integrationconnectors.ConnectionEventingConfigAuthConfigAdditionalVariableArray{\n\t\t\t\t\t\t\u0026integrationconnectors.ConnectionEventingConfigAuthConfigAdditionalVariableArgs{\n\t\t\t\t\t\t\tKey: pulumi.String(\"sample_string\"),\n\t\t\t\t\t\t\tStringValue: pulumi.String(\"sampleString\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026integrationconnectors.ConnectionEventingConfigAuthConfigAdditionalVariableArgs{\n\t\t\t\t\t\t\tKey: pulumi.String(\"sample_boolean\"),\n\t\t\t\t\t\t\tBooleanValue: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026integrationconnectors.ConnectionEventingConfigAuthConfigAdditionalVariableArgs{\n\t\t\t\t\t\t\tKey: pulumi.String(\"sample_integer\"),\n\t\t\t\t\t\t\tIntegerValue: pulumi.Int(1),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026integrationconnectors.ConnectionEventingConfigAuthConfigAdditionalVariableArgs{\n\t\t\t\t\t\t\tKey: pulumi.String(\"sample_secret_value\"),\n\t\t\t\t\t\t\tSecretValue: \u0026integrationconnectors.ConnectionEventingConfigAuthConfigAdditionalVariableSecretValueArgs{\n\t\t\t\t\t\t\t\tSecretVersion: secret_version_basic.Name,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026integrationconnectors.ConnectionEventingConfigAuthConfigAdditionalVariableArgs{\n\t\t\t\t\t\t\tKey: pulumi.String(\"sample_encryption_key_value\"),\n\t\t\t\t\t\t\tEncryptionKeyValue: \u0026integrationconnectors.ConnectionEventingConfigAuthConfigAdditionalVariableEncryptionKeyValueArgs{\n\t\t\t\t\t\t\t\tType: pulumi.String(\"GOOGLE_MANAGED\"),\n\t\t\t\t\t\t\t\tKmsKeyName: pulumi.String(\"sampleKMSKkey\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tEnrichmentEnabled: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationUserManagedArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.gcp.integrationconnectors.Connection;\nimport com.pulumi.gcp.integrationconnectors.ConnectionArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionConfigVariableArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionConfigVariableEncryptionKeyValueArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionConfigVariableSecretValueArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionAuthConfigArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionAuthConfigUserPasswordArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionAuthConfigUserPasswordPasswordArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionDestinationConfigArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionLockConfigArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionLogConfigArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionNodeConfigArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionSslConfigArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionSslConfigClientCertificateArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionSslConfigClientPrivateKeyArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionSslConfigClientPrivateKeyPassArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionSslConfigPrivateServerCertificateArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionEventingConfigArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionEventingConfigRegistrationDestinationConfigArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionEventingConfigAuthConfigArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionEventingConfigAuthConfigUserPasswordArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionEventingConfigAuthConfigUserPasswordPasswordArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var testProject = OrganizationsFunctions.getProject();\n\n var secret_basic = new Secret(\"secret-basic\", SecretArgs.builder()\n .secretId(\"test-secret\")\n .replication(SecretReplicationArgs.builder()\n .userManaged(SecretReplicationUserManagedArgs.builder()\n .replicas(SecretReplicationUserManagedReplicaArgs.builder()\n .location(\"us-central1\")\n .build())\n .build())\n .build())\n .build());\n\n var secret_version_basic = new SecretVersion(\"secret-version-basic\", SecretVersionArgs.builder()\n .secret(secret_basic.id())\n .secretData(\"dummypassword\")\n .build());\n\n var secretIam = new SecretIamMember(\"secretIam\", SecretIamMemberArgs.builder()\n .secretId(secret_basic.id())\n .role(\"roles/secretmanager.admin\")\n .member(String.format(\"serviceAccount:%s-compute@developer.gserviceaccount.com\", testProject.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build(), CustomResourceOptions.builder()\n .dependsOn(secret_version_basic)\n .build());\n\n var zendeskconnection = new Connection(\"zendeskconnection\", ConnectionArgs.builder()\n .name(\"test-zendesk\")\n .description(\"tf updated description\")\n .location(\"us-central1\")\n .serviceAccount(String.format(\"%s-compute@developer.gserviceaccount.com\", testProject.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .connectorVersion(String.format(\"projects/%s/locations/global/providers/zendesk/connectors/zendesk/versions/1\", testProject.applyValue(getProjectResult -\u003e getProjectResult.projectId())))\n .configVariables( \n ConnectionConfigVariableArgs.builder()\n .key(\"proxy_enabled\")\n .booleanValue(false)\n .build(),\n ConnectionConfigVariableArgs.builder()\n .key(\"sample_integer_value\")\n .integerValue(1)\n .build(),\n ConnectionConfigVariableArgs.builder()\n .key(\"sample_encryption_key_value\")\n .encryptionKeyValue(ConnectionConfigVariableEncryptionKeyValueArgs.builder()\n .type(\"GOOGLE_MANAGED\")\n .kmsKeyName(\"sampleKMSKkey\")\n .build())\n .build(),\n ConnectionConfigVariableArgs.builder()\n .key(\"sample_secret_value\")\n .secretValue(ConnectionConfigVariableSecretValueArgs.builder()\n .secretVersion(secret_version_basic.name())\n .build())\n .build())\n .suspended(false)\n .authConfig(ConnectionAuthConfigArgs.builder()\n .additionalVariables( \n ConnectionAuthConfigAdditionalVariableArgs.builder()\n .key(\"sample_string\")\n .stringValue(\"sampleString\")\n .build(),\n ConnectionAuthConfigAdditionalVariableArgs.builder()\n .key(\"sample_boolean\")\n .booleanValue(false)\n .build(),\n ConnectionAuthConfigAdditionalVariableArgs.builder()\n .key(\"sample_integer\")\n .integerValue(1)\n .build(),\n ConnectionAuthConfigAdditionalVariableArgs.builder()\n .key(\"sample_secret_value\")\n .secretValue(ConnectionAuthConfigAdditionalVariableSecretValueArgs.builder()\n .secretVersion(secret_version_basic.name())\n .build())\n .build(),\n ConnectionAuthConfigAdditionalVariableArgs.builder()\n .key(\"sample_encryption_key_value\")\n .encryptionKeyValue(ConnectionAuthConfigAdditionalVariableEncryptionKeyValueArgs.builder()\n .type(\"GOOGLE_MANAGED\")\n .kmsKeyName(\"sampleKMSKkey\")\n .build())\n .build())\n .authType(\"USER_PASSWORD\")\n .authKey(\"sampleAuthKey\")\n .userPassword(ConnectionAuthConfigUserPasswordArgs.builder()\n .username(\"user@xyz.com\")\n .password(ConnectionAuthConfigUserPasswordPasswordArgs.builder()\n .secretVersion(secret_version_basic.name())\n .build())\n .build())\n .build())\n .destinationConfigs(ConnectionDestinationConfigArgs.builder()\n .key(\"url\")\n .destinations(ConnectionDestinationConfigDestinationArgs.builder()\n .host(\"https://test.zendesk.com\")\n .port(80)\n .build())\n .build())\n .lockConfig(ConnectionLockConfigArgs.builder()\n .locked(false)\n .reason(\"Its not locked\")\n .build())\n .logConfig(ConnectionLogConfigArgs.builder()\n .enabled(true)\n .build())\n .nodeConfig(ConnectionNodeConfigArgs.builder()\n .minNodeCount(2)\n .maxNodeCount(50)\n .build())\n .labels(Map.of(\"foo\", \"bar\"))\n .sslConfig(ConnectionSslConfigArgs.builder()\n .additionalVariables( \n ConnectionSslConfigAdditionalVariableArgs.builder()\n .key(\"sample_string\")\n .stringValue(\"sampleString\")\n .build(),\n ConnectionSslConfigAdditionalVariableArgs.builder()\n .key(\"sample_boolean\")\n .booleanValue(false)\n .build(),\n ConnectionSslConfigAdditionalVariableArgs.builder()\n .key(\"sample_integer\")\n .integerValue(1)\n .build(),\n ConnectionSslConfigAdditionalVariableArgs.builder()\n .key(\"sample_secret_value\")\n .secretValue(ConnectionSslConfigAdditionalVariableSecretValueArgs.builder()\n .secretVersion(secret_version_basic.name())\n .build())\n .build(),\n ConnectionSslConfigAdditionalVariableArgs.builder()\n .key(\"sample_encryption_key_value\")\n .encryptionKeyValue(ConnectionSslConfigAdditionalVariableEncryptionKeyValueArgs.builder()\n .type(\"GOOGLE_MANAGED\")\n .kmsKeyName(\"sampleKMSKkey\")\n .build())\n .build())\n .clientCertType(\"PEM\")\n .clientCertificate(ConnectionSslConfigClientCertificateArgs.builder()\n .secretVersion(secret_version_basic.name())\n .build())\n .clientPrivateKey(ConnectionSslConfigClientPrivateKeyArgs.builder()\n .secretVersion(secret_version_basic.name())\n .build())\n .clientPrivateKeyPass(ConnectionSslConfigClientPrivateKeyPassArgs.builder()\n .secretVersion(secret_version_basic.name())\n .build())\n .privateServerCertificate(ConnectionSslConfigPrivateServerCertificateArgs.builder()\n .secretVersion(secret_version_basic.name())\n .build())\n .serverCertType(\"PEM\")\n .trustModel(\"PRIVATE\")\n .type(\"TLS\")\n .useSsl(true)\n .build())\n .eventingEnablementType(\"EVENTING_AND_CONNECTION\")\n .eventingConfig(ConnectionEventingConfigArgs.builder()\n .additionalVariables( \n ConnectionEventingConfigAdditionalVariableArgs.builder()\n .key(\"sample_string\")\n .stringValue(\"sampleString\")\n .build(),\n ConnectionEventingConfigAdditionalVariableArgs.builder()\n .key(\"sample_boolean\")\n .booleanValue(false)\n .build(),\n ConnectionEventingConfigAdditionalVariableArgs.builder()\n .key(\"sample_integer\")\n .integerValue(1)\n .build(),\n ConnectionEventingConfigAdditionalVariableArgs.builder()\n .key(\"sample_secret_value\")\n .secretValue(ConnectionEventingConfigAdditionalVariableSecretValueArgs.builder()\n .secretVersion(secret_version_basic.name())\n .build())\n .build(),\n ConnectionEventingConfigAdditionalVariableArgs.builder()\n .key(\"sample_encryption_key_value\")\n .encryptionKeyValue(ConnectionEventingConfigAdditionalVariableEncryptionKeyValueArgs.builder()\n .type(\"GOOGLE_MANAGED\")\n .kmsKeyName(\"sampleKMSKkey\")\n .build())\n .build())\n .registrationDestinationConfig(ConnectionEventingConfigRegistrationDestinationConfigArgs.builder()\n .key(\"registration_destination_config\")\n .destinations(ConnectionEventingConfigRegistrationDestinationConfigDestinationArgs.builder()\n .host(\"https://test.zendesk.com\")\n .port(80)\n .build())\n .build())\n .authConfig(ConnectionEventingConfigAuthConfigArgs.builder()\n .authType(\"USER_PASSWORD\")\n .authKey(\"sampleAuthKey\")\n .userPassword(ConnectionEventingConfigAuthConfigUserPasswordArgs.builder()\n .username(\"user@xyz.com\")\n .password(ConnectionEventingConfigAuthConfigUserPasswordPasswordArgs.builder()\n .secretVersion(secret_version_basic.name())\n .build())\n .build())\n .additionalVariables( \n ConnectionEventingConfigAuthConfigAdditionalVariableArgs.builder()\n .key(\"sample_string\")\n .stringValue(\"sampleString\")\n .build(),\n ConnectionEventingConfigAuthConfigAdditionalVariableArgs.builder()\n .key(\"sample_boolean\")\n .booleanValue(false)\n .build(),\n ConnectionEventingConfigAuthConfigAdditionalVariableArgs.builder()\n .key(\"sample_integer\")\n .integerValue(1)\n .build(),\n ConnectionEventingConfigAuthConfigAdditionalVariableArgs.builder()\n .key(\"sample_secret_value\")\n .secretValue(ConnectionEventingConfigAuthConfigAdditionalVariableSecretValueArgs.builder()\n .secretVersion(secret_version_basic.name())\n .build())\n .build(),\n ConnectionEventingConfigAuthConfigAdditionalVariableArgs.builder()\n .key(\"sample_encryption_key_value\")\n .encryptionKeyValue(ConnectionEventingConfigAuthConfigAdditionalVariableEncryptionKeyValueArgs.builder()\n .type(\"GOOGLE_MANAGED\")\n .kmsKeyName(\"sampleKMSKkey\")\n .build())\n .build())\n .build())\n .enrichmentEnabled(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-basic:\n type: gcp:secretmanager:Secret\n properties:\n secretId: test-secret\n replication:\n userManaged:\n replicas:\n - location: us-central1\n secret-version-basic:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"secret-basic\"].id}\n secretData: dummypassword\n secretIam:\n type: gcp:secretmanager:SecretIamMember\n name: secret_iam\n properties:\n secretId: ${[\"secret-basic\"].id}\n role: roles/secretmanager.admin\n member: serviceAccount:${testProject.number}-compute@developer.gserviceaccount.com\n options:\n dependson:\n - ${[\"secret-version-basic\"]}\n zendeskconnection:\n type: gcp:integrationconnectors:Connection\n properties:\n name: test-zendesk\n description: tf updated description\n location: us-central1\n serviceAccount: ${testProject.number}-compute@developer.gserviceaccount.com\n connectorVersion: projects/${testProject.projectId}/locations/global/providers/zendesk/connectors/zendesk/versions/1\n configVariables:\n - key: proxy_enabled\n booleanValue: false\n - key: sample_integer_value\n integerValue: 1\n - key: sample_encryption_key_value\n encryptionKeyValue:\n type: GOOGLE_MANAGED\n kmsKeyName: sampleKMSKkey\n - key: sample_secret_value\n secretValue:\n secretVersion: ${[\"secret-version-basic\"].name}\n suspended: false\n authConfig:\n additionalVariables:\n - key: sample_string\n stringValue: sampleString\n - key: sample_boolean\n booleanValue: false\n - key: sample_integer\n integerValue: 1\n - key: sample_secret_value\n secretValue:\n secretVersion: ${[\"secret-version-basic\"].name}\n - key: sample_encryption_key_value\n encryptionKeyValue:\n type: GOOGLE_MANAGED\n kmsKeyName: sampleKMSKkey\n authType: USER_PASSWORD\n authKey: sampleAuthKey\n userPassword:\n username: user@xyz.com\n password:\n secretVersion: ${[\"secret-version-basic\"].name}\n destinationConfigs:\n - key: url\n destinations:\n - host: https://test.zendesk.com\n port: 80\n lockConfig:\n locked: false\n reason: Its not locked\n logConfig:\n enabled: true\n nodeConfig:\n minNodeCount: 2\n maxNodeCount: 50\n labels:\n foo: bar\n sslConfig:\n additionalVariables:\n - key: sample_string\n stringValue: sampleString\n - key: sample_boolean\n booleanValue: false\n - key: sample_integer\n integerValue: 1\n - key: sample_secret_value\n secretValue:\n secretVersion: ${[\"secret-version-basic\"].name}\n - key: sample_encryption_key_value\n encryptionKeyValue:\n type: GOOGLE_MANAGED\n kmsKeyName: sampleKMSKkey\n clientCertType: PEM\n clientCertificate:\n secretVersion: ${[\"secret-version-basic\"].name}\n clientPrivateKey:\n secretVersion: ${[\"secret-version-basic\"].name}\n clientPrivateKeyPass:\n secretVersion: ${[\"secret-version-basic\"].name}\n privateServerCertificate:\n secretVersion: ${[\"secret-version-basic\"].name}\n serverCertType: PEM\n trustModel: PRIVATE\n type: TLS\n useSsl: true\n eventingEnablementType: EVENTING_AND_CONNECTION\n eventingConfig:\n additionalVariables:\n - key: sample_string\n stringValue: sampleString\n - key: sample_boolean\n booleanValue: false\n - key: sample_integer\n integerValue: 1\n - key: sample_secret_value\n secretValue:\n secretVersion: ${[\"secret-version-basic\"].name}\n - key: sample_encryption_key_value\n encryptionKeyValue:\n type: GOOGLE_MANAGED\n kmsKeyName: sampleKMSKkey\n registrationDestinationConfig:\n key: registration_destination_config\n destinations:\n - host: https://test.zendesk.com\n port: 80\n authConfig:\n authType: USER_PASSWORD\n authKey: sampleAuthKey\n userPassword:\n username: user@xyz.com\n password:\n secretVersion: ${[\"secret-version-basic\"].name}\n additionalVariables:\n - key: sample_string\n stringValue: sampleString\n - key: sample_boolean\n booleanValue: false\n - key: sample_integer\n integerValue: 1\n - key: sample_secret_value\n secretValue:\n secretVersion: ${[\"secret-version-basic\"].name}\n - key: sample_encryption_key_value\n encryptionKeyValue:\n type: GOOGLE_MANAGED\n kmsKeyName: sampleKMSKkey\n enrichmentEnabled: true\nvariables:\n testProject:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nConnection can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/connections/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Connection can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:integrationconnectors/connection:Connection default projects/{{project}}/locations/{{location}}/connections/{{name}}\n```\n\n```sh\n$ pulumi import gcp:integrationconnectors/connection:Connection default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:integrationconnectors/connection:Connection default {{location}}/{{name}}\n```\n\n", + "description": "An Integration connectors Connection.\n\n\nTo get more information about Connection, see:\n\n* [API documentation](https://cloud.google.com/integration-connectors/docs/reference/rest/v1/projects.locations.connections)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/integration-connectors/docs/createconnection)\n\n## Example Usage\n\n### Integration Connectors Connection Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst testProject = gcp.organizations.getProject({});\nconst pubsubconnection = new gcp.integrationconnectors.Connection(\"pubsubconnection\", {\n name: \"test-pubsub\",\n location: \"us-central1\",\n connectorVersion: testProject.then(testProject =\u003e `projects/${testProject.projectId}/locations/global/providers/gcp/connectors/pubsub/versions/1`),\n description: \"tf created description\",\n configVariables: [\n {\n key: \"project_id\",\n stringValue: \"connectors-example\",\n },\n {\n key: \"topic_id\",\n stringValue: \"test\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest_project = gcp.organizations.get_project()\npubsubconnection = gcp.integrationconnectors.Connection(\"pubsubconnection\",\n name=\"test-pubsub\",\n location=\"us-central1\",\n connector_version=f\"projects/{test_project.project_id}/locations/global/providers/gcp/connectors/pubsub/versions/1\",\n description=\"tf created description\",\n config_variables=[\n {\n \"key\": \"project_id\",\n \"string_value\": \"connectors-example\",\n },\n {\n \"key\": \"topic_id\",\n \"string_value\": \"test\",\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testProject = Gcp.Organizations.GetProject.Invoke();\n\n var pubsubconnection = new Gcp.IntegrationConnectors.Connection(\"pubsubconnection\", new()\n {\n Name = \"test-pubsub\",\n Location = \"us-central1\",\n ConnectorVersion = $\"projects/{testProject.Apply(getProjectResult =\u003e getProjectResult.ProjectId)}/locations/global/providers/gcp/connectors/pubsub/versions/1\",\n Description = \"tf created description\",\n ConfigVariables = new[]\n {\n new Gcp.IntegrationConnectors.Inputs.ConnectionConfigVariableArgs\n {\n Key = \"project_id\",\n StringValue = \"connectors-example\",\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionConfigVariableArgs\n {\n Key = \"topic_id\",\n StringValue = \"test\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/integrationconnectors\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestProject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = integrationconnectors.NewConnection(ctx, \"pubsubconnection\", \u0026integrationconnectors.ConnectionArgs{\n\t\t\tName: pulumi.String(\"test-pubsub\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectorVersion: pulumi.Sprintf(\"projects/%v/locations/global/providers/gcp/connectors/pubsub/versions/1\", testProject.ProjectId),\n\t\t\tDescription: pulumi.String(\"tf created description\"),\n\t\t\tConfigVariables: integrationconnectors.ConnectionConfigVariableArray{\n\t\t\t\t\u0026integrationconnectors.ConnectionConfigVariableArgs{\n\t\t\t\t\tKey: pulumi.String(\"project_id\"),\n\t\t\t\t\tStringValue: pulumi.String(\"connectors-example\"),\n\t\t\t\t},\n\t\t\t\t\u0026integrationconnectors.ConnectionConfigVariableArgs{\n\t\t\t\t\tKey: pulumi.String(\"topic_id\"),\n\t\t\t\t\tStringValue: pulumi.String(\"test\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.integrationconnectors.Connection;\nimport com.pulumi.gcp.integrationconnectors.ConnectionArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionConfigVariableArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var testProject = OrganizationsFunctions.getProject();\n\n var pubsubconnection = new Connection(\"pubsubconnection\", ConnectionArgs.builder()\n .name(\"test-pubsub\")\n .location(\"us-central1\")\n .connectorVersion(String.format(\"projects/%s/locations/global/providers/gcp/connectors/pubsub/versions/1\", testProject.applyValue(getProjectResult -\u003e getProjectResult.projectId())))\n .description(\"tf created description\")\n .configVariables( \n ConnectionConfigVariableArgs.builder()\n .key(\"project_id\")\n .stringValue(\"connectors-example\")\n .build(),\n ConnectionConfigVariableArgs.builder()\n .key(\"topic_id\")\n .stringValue(\"test\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pubsubconnection:\n type: gcp:integrationconnectors:Connection\n properties:\n name: test-pubsub\n location: us-central1\n connectorVersion: projects/${testProject.projectId}/locations/global/providers/gcp/connectors/pubsub/versions/1\n description: tf created description\n configVariables:\n - key: project_id\n stringValue: connectors-example\n - key: topic_id\n stringValue: test\nvariables:\n testProject:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Integration Connectors Connection Advanced\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst testProject = gcp.organizations.getProject({});\nconst secret_basic = new gcp.secretmanager.Secret(\"secret-basic\", {\n secretId: \"test-secret\",\n replication: {\n userManaged: {\n replicas: [{\n location: \"us-central1\",\n }],\n },\n },\n});\nconst secret_version_basic = new gcp.secretmanager.SecretVersion(\"secret-version-basic\", {\n secret: secret_basic.id,\n secretData: \"dummypassword\",\n});\nconst secretIam = new gcp.secretmanager.SecretIamMember(\"secret_iam\", {\n secretId: secret_basic.id,\n role: \"roles/secretmanager.admin\",\n member: testProject.then(testProject =\u003e `serviceAccount:${testProject.number}-compute@developer.gserviceaccount.com`),\n}, {\n dependsOn: [secret_version_basic],\n});\nconst zendeskconnection = new gcp.integrationconnectors.Connection(\"zendeskconnection\", {\n name: \"test-zendesk\",\n description: \"tf updated description\",\n location: \"us-central1\",\n serviceAccount: testProject.then(testProject =\u003e `${testProject.number}-compute@developer.gserviceaccount.com`),\n connectorVersion: testProject.then(testProject =\u003e `projects/${testProject.projectId}/locations/global/providers/zendesk/connectors/zendesk/versions/1`),\n configVariables: [\n {\n key: \"proxy_enabled\",\n booleanValue: false,\n },\n {\n key: \"sample_integer_value\",\n integerValue: 1,\n },\n {\n key: \"sample_encryption_key_value\",\n encryptionKeyValue: {\n type: \"GOOGLE_MANAGED\",\n kmsKeyName: \"sampleKMSKkey\",\n },\n },\n {\n key: \"sample_secret_value\",\n secretValue: {\n secretVersion: secret_version_basic.name,\n },\n },\n ],\n suspended: false,\n authConfig: {\n additionalVariables: [\n {\n key: \"sample_string\",\n stringValue: \"sampleString\",\n },\n {\n key: \"sample_boolean\",\n booleanValue: false,\n },\n {\n key: \"sample_integer\",\n integerValue: 1,\n },\n {\n key: \"sample_secret_value\",\n secretValue: {\n secretVersion: secret_version_basic.name,\n },\n },\n {\n key: \"sample_encryption_key_value\",\n encryptionKeyValue: {\n type: \"GOOGLE_MANAGED\",\n kmsKeyName: \"sampleKMSKkey\",\n },\n },\n ],\n authType: \"USER_PASSWORD\",\n authKey: \"sampleAuthKey\",\n userPassword: {\n username: \"user@xyz.com\",\n password: {\n secretVersion: secret_version_basic.name,\n },\n },\n },\n destinationConfigs: [{\n key: \"url\",\n destinations: [{\n host: \"https://test.zendesk.com\",\n port: 80,\n }],\n }],\n lockConfig: {\n locked: false,\n reason: \"Its not locked\",\n },\n logConfig: {\n enabled: true,\n },\n nodeConfig: {\n minNodeCount: 2,\n maxNodeCount: 50,\n },\n labels: {\n foo: \"bar\",\n },\n sslConfig: {\n additionalVariables: [\n {\n key: \"sample_string\",\n stringValue: \"sampleString\",\n },\n {\n key: \"sample_boolean\",\n booleanValue: false,\n },\n {\n key: \"sample_integer\",\n integerValue: 1,\n },\n {\n key: \"sample_secret_value\",\n secretValue: {\n secretVersion: secret_version_basic.name,\n },\n },\n {\n key: \"sample_encryption_key_value\",\n encryptionKeyValue: {\n type: \"GOOGLE_MANAGED\",\n kmsKeyName: \"sampleKMSKkey\",\n },\n },\n ],\n clientCertType: \"PEM\",\n clientCertificate: {\n secretVersion: secret_version_basic.name,\n },\n clientPrivateKey: {\n secretVersion: secret_version_basic.name,\n },\n clientPrivateKeyPass: {\n secretVersion: secret_version_basic.name,\n },\n privateServerCertificate: {\n secretVersion: secret_version_basic.name,\n },\n serverCertType: \"PEM\",\n trustModel: \"PRIVATE\",\n type: \"TLS\",\n useSsl: true,\n },\n eventingEnablementType: \"EVENTING_AND_CONNECTION\",\n eventingConfig: {\n additionalVariables: [\n {\n key: \"sample_string\",\n stringValue: \"sampleString\",\n },\n {\n key: \"sample_boolean\",\n booleanValue: false,\n },\n {\n key: \"sample_integer\",\n integerValue: 1,\n },\n {\n key: \"sample_secret_value\",\n secretValue: {\n secretVersion: secret_version_basic.name,\n },\n },\n {\n key: \"sample_encryption_key_value\",\n encryptionKeyValue: {\n type: \"GOOGLE_MANAGED\",\n kmsKeyName: \"sampleKMSKkey\",\n },\n },\n ],\n registrationDestinationConfig: {\n key: \"registration_destination_config\",\n destinations: [{\n host: \"https://test.zendesk.com\",\n port: 80,\n }],\n },\n authConfig: {\n authType: \"USER_PASSWORD\",\n authKey: \"sampleAuthKey\",\n userPassword: {\n username: \"user@xyz.com\",\n password: {\n secretVersion: secret_version_basic.name,\n },\n },\n additionalVariables: [\n {\n key: \"sample_string\",\n stringValue: \"sampleString\",\n },\n {\n key: \"sample_boolean\",\n booleanValue: false,\n },\n {\n key: \"sample_integer\",\n integerValue: 1,\n },\n {\n key: \"sample_secret_value\",\n secretValue: {\n secretVersion: secret_version_basic.name,\n },\n },\n {\n key: \"sample_encryption_key_value\",\n encryptionKeyValue: {\n type: \"GOOGLE_MANAGED\",\n kmsKeyName: \"sampleKMSKkey\",\n },\n },\n ],\n },\n enrichmentEnabled: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest_project = gcp.organizations.get_project()\nsecret_basic = gcp.secretmanager.Secret(\"secret-basic\",\n secret_id=\"test-secret\",\n replication={\n \"user_managed\": {\n \"replicas\": [{\n \"location\": \"us-central1\",\n }],\n },\n })\nsecret_version_basic = gcp.secretmanager.SecretVersion(\"secret-version-basic\",\n secret=secret_basic.id,\n secret_data=\"dummypassword\")\nsecret_iam = gcp.secretmanager.SecretIamMember(\"secret_iam\",\n secret_id=secret_basic.id,\n role=\"roles/secretmanager.admin\",\n member=f\"serviceAccount:{test_project.number}-compute@developer.gserviceaccount.com\",\n opts = pulumi.ResourceOptions(depends_on=[secret_version_basic]))\nzendeskconnection = gcp.integrationconnectors.Connection(\"zendeskconnection\",\n name=\"test-zendesk\",\n description=\"tf updated description\",\n location=\"us-central1\",\n service_account=f\"{test_project.number}-compute@developer.gserviceaccount.com\",\n connector_version=f\"projects/{test_project.project_id}/locations/global/providers/zendesk/connectors/zendesk/versions/1\",\n config_variables=[\n {\n \"key\": \"proxy_enabled\",\n \"boolean_value\": False,\n },\n {\n \"key\": \"sample_integer_value\",\n \"integer_value\": 1,\n },\n {\n \"key\": \"sample_encryption_key_value\",\n \"encryption_key_value\": {\n \"type\": \"GOOGLE_MANAGED\",\n \"kms_key_name\": \"sampleKMSKkey\",\n },\n },\n {\n \"key\": \"sample_secret_value\",\n \"secret_value\": {\n \"secret_version\": secret_version_basic.name,\n },\n },\n ],\n suspended=False,\n auth_config={\n \"additional_variables\": [\n {\n \"key\": \"sample_string\",\n \"string_value\": \"sampleString\",\n },\n {\n \"key\": \"sample_boolean\",\n \"boolean_value\": False,\n },\n {\n \"key\": \"sample_integer\",\n \"integer_value\": 1,\n },\n {\n \"key\": \"sample_secret_value\",\n \"secret_value\": {\n \"secret_version\": secret_version_basic.name,\n },\n },\n {\n \"key\": \"sample_encryption_key_value\",\n \"encryption_key_value\": {\n \"type\": \"GOOGLE_MANAGED\",\n \"kms_key_name\": \"sampleKMSKkey\",\n },\n },\n ],\n \"auth_type\": \"USER_PASSWORD\",\n \"auth_key\": \"sampleAuthKey\",\n \"user_password\": {\n \"username\": \"user@xyz.com\",\n \"password\": {\n \"secret_version\": secret_version_basic.name,\n },\n },\n },\n destination_configs=[{\n \"key\": \"url\",\n \"destinations\": [{\n \"host\": \"https://test.zendesk.com\",\n \"port\": 80,\n }],\n }],\n lock_config={\n \"locked\": False,\n \"reason\": \"Its not locked\",\n },\n log_config={\n \"enabled\": True,\n },\n node_config={\n \"min_node_count\": 2,\n \"max_node_count\": 50,\n },\n labels={\n \"foo\": \"bar\",\n },\n ssl_config={\n \"additional_variables\": [\n {\n \"key\": \"sample_string\",\n \"string_value\": \"sampleString\",\n },\n {\n \"key\": \"sample_boolean\",\n \"boolean_value\": False,\n },\n {\n \"key\": \"sample_integer\",\n \"integer_value\": 1,\n },\n {\n \"key\": \"sample_secret_value\",\n \"secret_value\": {\n \"secret_version\": secret_version_basic.name,\n },\n },\n {\n \"key\": \"sample_encryption_key_value\",\n \"encryption_key_value\": {\n \"type\": \"GOOGLE_MANAGED\",\n \"kms_key_name\": \"sampleKMSKkey\",\n },\n },\n ],\n \"client_cert_type\": \"PEM\",\n \"client_certificate\": {\n \"secret_version\": secret_version_basic.name,\n },\n \"client_private_key\": {\n \"secret_version\": secret_version_basic.name,\n },\n \"client_private_key_pass\": {\n \"secret_version\": secret_version_basic.name,\n },\n \"private_server_certificate\": {\n \"secret_version\": secret_version_basic.name,\n },\n \"server_cert_type\": \"PEM\",\n \"trust_model\": \"PRIVATE\",\n \"type\": \"TLS\",\n \"use_ssl\": True,\n },\n eventing_enablement_type=\"EVENTING_AND_CONNECTION\",\n eventing_config={\n \"additional_variables\": [\n {\n \"key\": \"sample_string\",\n \"string_value\": \"sampleString\",\n },\n {\n \"key\": \"sample_boolean\",\n \"boolean_value\": False,\n },\n {\n \"key\": \"sample_integer\",\n \"integer_value\": 1,\n },\n {\n \"key\": \"sample_secret_value\",\n \"secret_value\": {\n \"secret_version\": secret_version_basic.name,\n },\n },\n {\n \"key\": \"sample_encryption_key_value\",\n \"encryption_key_value\": {\n \"type\": \"GOOGLE_MANAGED\",\n \"kms_key_name\": \"sampleKMSKkey\",\n },\n },\n ],\n \"registration_destination_config\": {\n \"key\": \"registration_destination_config\",\n \"destinations\": [{\n \"host\": \"https://test.zendesk.com\",\n \"port\": 80,\n }],\n },\n \"auth_config\": {\n \"auth_type\": \"USER_PASSWORD\",\n \"auth_key\": \"sampleAuthKey\",\n \"user_password\": {\n \"username\": \"user@xyz.com\",\n \"password\": {\n \"secret_version\": secret_version_basic.name,\n },\n },\n \"additional_variables\": [\n {\n \"key\": \"sample_string\",\n \"string_value\": \"sampleString\",\n },\n {\n \"key\": \"sample_boolean\",\n \"boolean_value\": False,\n },\n {\n \"key\": \"sample_integer\",\n \"integer_value\": 1,\n },\n {\n \"key\": \"sample_secret_value\",\n \"secret_value\": {\n \"secret_version\": secret_version_basic.name,\n },\n },\n {\n \"key\": \"sample_encryption_key_value\",\n \"encryption_key_value\": {\n \"type\": \"GOOGLE_MANAGED\",\n \"kms_key_name\": \"sampleKMSKkey\",\n },\n },\n ],\n },\n \"enrichment_enabled\": True,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testProject = Gcp.Organizations.GetProject.Invoke();\n\n var secret_basic = new Gcp.SecretManager.Secret(\"secret-basic\", new()\n {\n SecretId = \"test-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n UserManaged = new Gcp.SecretManager.Inputs.SecretReplicationUserManagedArgs\n {\n Replicas = new[]\n {\n new Gcp.SecretManager.Inputs.SecretReplicationUserManagedReplicaArgs\n {\n Location = \"us-central1\",\n },\n },\n },\n },\n });\n\n var secret_version_basic = new Gcp.SecretManager.SecretVersion(\"secret-version-basic\", new()\n {\n Secret = secret_basic.Id,\n SecretData = \"dummypassword\",\n });\n\n var secretIam = new Gcp.SecretManager.SecretIamMember(\"secret_iam\", new()\n {\n SecretId = secret_basic.Id,\n Role = \"roles/secretmanager.admin\",\n Member = $\"serviceAccount:{testProject.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secret_version_basic,\n },\n });\n\n var zendeskconnection = new Gcp.IntegrationConnectors.Connection(\"zendeskconnection\", new()\n {\n Name = \"test-zendesk\",\n Description = \"tf updated description\",\n Location = \"us-central1\",\n ServiceAccount = $\"{testProject.Apply(getProjectResult =\u003e getProjectResult.Number)}-compute@developer.gserviceaccount.com\",\n ConnectorVersion = $\"projects/{testProject.Apply(getProjectResult =\u003e getProjectResult.ProjectId)}/locations/global/providers/zendesk/connectors/zendesk/versions/1\",\n ConfigVariables = new[]\n {\n new Gcp.IntegrationConnectors.Inputs.ConnectionConfigVariableArgs\n {\n Key = \"proxy_enabled\",\n BooleanValue = false,\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionConfigVariableArgs\n {\n Key = \"sample_integer_value\",\n IntegerValue = 1,\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionConfigVariableArgs\n {\n Key = \"sample_encryption_key_value\",\n EncryptionKeyValue = new Gcp.IntegrationConnectors.Inputs.ConnectionConfigVariableEncryptionKeyValueArgs\n {\n Type = \"GOOGLE_MANAGED\",\n KmsKeyName = \"sampleKMSKkey\",\n },\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionConfigVariableArgs\n {\n Key = \"sample_secret_value\",\n SecretValue = new Gcp.IntegrationConnectors.Inputs.ConnectionConfigVariableSecretValueArgs\n {\n SecretVersion = secret_version_basic.Name,\n },\n },\n },\n Suspended = false,\n AuthConfig = new Gcp.IntegrationConnectors.Inputs.ConnectionAuthConfigArgs\n {\n AdditionalVariables = new[]\n {\n new Gcp.IntegrationConnectors.Inputs.ConnectionAuthConfigAdditionalVariableArgs\n {\n Key = \"sample_string\",\n StringValue = \"sampleString\",\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionAuthConfigAdditionalVariableArgs\n {\n Key = \"sample_boolean\",\n BooleanValue = false,\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionAuthConfigAdditionalVariableArgs\n {\n Key = \"sample_integer\",\n IntegerValue = 1,\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionAuthConfigAdditionalVariableArgs\n {\n Key = \"sample_secret_value\",\n SecretValue = new Gcp.IntegrationConnectors.Inputs.ConnectionAuthConfigAdditionalVariableSecretValueArgs\n {\n SecretVersion = secret_version_basic.Name,\n },\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionAuthConfigAdditionalVariableArgs\n {\n Key = \"sample_encryption_key_value\",\n EncryptionKeyValue = new Gcp.IntegrationConnectors.Inputs.ConnectionAuthConfigAdditionalVariableEncryptionKeyValueArgs\n {\n Type = \"GOOGLE_MANAGED\",\n KmsKeyName = \"sampleKMSKkey\",\n },\n },\n },\n AuthType = \"USER_PASSWORD\",\n AuthKey = \"sampleAuthKey\",\n UserPassword = new Gcp.IntegrationConnectors.Inputs.ConnectionAuthConfigUserPasswordArgs\n {\n Username = \"user@xyz.com\",\n Password = new Gcp.IntegrationConnectors.Inputs.ConnectionAuthConfigUserPasswordPasswordArgs\n {\n SecretVersion = secret_version_basic.Name,\n },\n },\n },\n DestinationConfigs = new[]\n {\n new Gcp.IntegrationConnectors.Inputs.ConnectionDestinationConfigArgs\n {\n Key = \"url\",\n Destinations = new[]\n {\n new Gcp.IntegrationConnectors.Inputs.ConnectionDestinationConfigDestinationArgs\n {\n Host = \"https://test.zendesk.com\",\n Port = 80,\n },\n },\n },\n },\n LockConfig = new Gcp.IntegrationConnectors.Inputs.ConnectionLockConfigArgs\n {\n Locked = false,\n Reason = \"Its not locked\",\n },\n LogConfig = new Gcp.IntegrationConnectors.Inputs.ConnectionLogConfigArgs\n {\n Enabled = true,\n },\n NodeConfig = new Gcp.IntegrationConnectors.Inputs.ConnectionNodeConfigArgs\n {\n MinNodeCount = 2,\n MaxNodeCount = 50,\n },\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n SslConfig = new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigArgs\n {\n AdditionalVariables = new[]\n {\n new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigAdditionalVariableArgs\n {\n Key = \"sample_string\",\n StringValue = \"sampleString\",\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigAdditionalVariableArgs\n {\n Key = \"sample_boolean\",\n BooleanValue = false,\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigAdditionalVariableArgs\n {\n Key = \"sample_integer\",\n IntegerValue = 1,\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigAdditionalVariableArgs\n {\n Key = \"sample_secret_value\",\n SecretValue = new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigAdditionalVariableSecretValueArgs\n {\n SecretVersion = secret_version_basic.Name,\n },\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigAdditionalVariableArgs\n {\n Key = \"sample_encryption_key_value\",\n EncryptionKeyValue = new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigAdditionalVariableEncryptionKeyValueArgs\n {\n Type = \"GOOGLE_MANAGED\",\n KmsKeyName = \"sampleKMSKkey\",\n },\n },\n },\n ClientCertType = \"PEM\",\n ClientCertificate = new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigClientCertificateArgs\n {\n SecretVersion = secret_version_basic.Name,\n },\n ClientPrivateKey = new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigClientPrivateKeyArgs\n {\n SecretVersion = secret_version_basic.Name,\n },\n ClientPrivateKeyPass = new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigClientPrivateKeyPassArgs\n {\n SecretVersion = secret_version_basic.Name,\n },\n PrivateServerCertificate = new Gcp.IntegrationConnectors.Inputs.ConnectionSslConfigPrivateServerCertificateArgs\n {\n SecretVersion = secret_version_basic.Name,\n },\n ServerCertType = \"PEM\",\n TrustModel = \"PRIVATE\",\n Type = \"TLS\",\n UseSsl = true,\n },\n EventingEnablementType = \"EVENTING_AND_CONNECTION\",\n EventingConfig = new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigArgs\n {\n AdditionalVariables = new[]\n {\n new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAdditionalVariableArgs\n {\n Key = \"sample_string\",\n StringValue = \"sampleString\",\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAdditionalVariableArgs\n {\n Key = \"sample_boolean\",\n BooleanValue = false,\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAdditionalVariableArgs\n {\n Key = \"sample_integer\",\n IntegerValue = 1,\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAdditionalVariableArgs\n {\n Key = \"sample_secret_value\",\n SecretValue = new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAdditionalVariableSecretValueArgs\n {\n SecretVersion = secret_version_basic.Name,\n },\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAdditionalVariableArgs\n {\n Key = \"sample_encryption_key_value\",\n EncryptionKeyValue = new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAdditionalVariableEncryptionKeyValueArgs\n {\n Type = \"GOOGLE_MANAGED\",\n KmsKeyName = \"sampleKMSKkey\",\n },\n },\n },\n RegistrationDestinationConfig = new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigRegistrationDestinationConfigArgs\n {\n Key = \"registration_destination_config\",\n Destinations = new[]\n {\n new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigRegistrationDestinationConfigDestinationArgs\n {\n Host = \"https://test.zendesk.com\",\n Port = 80,\n },\n },\n },\n AuthConfig = new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAuthConfigArgs\n {\n AuthType = \"USER_PASSWORD\",\n AuthKey = \"sampleAuthKey\",\n UserPassword = new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAuthConfigUserPasswordArgs\n {\n Username = \"user@xyz.com\",\n Password = new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAuthConfigUserPasswordPasswordArgs\n {\n SecretVersion = secret_version_basic.Name,\n },\n },\n AdditionalVariables = new[]\n {\n new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAuthConfigAdditionalVariableArgs\n {\n Key = \"sample_string\",\n StringValue = \"sampleString\",\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAuthConfigAdditionalVariableArgs\n {\n Key = \"sample_boolean\",\n BooleanValue = false,\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAuthConfigAdditionalVariableArgs\n {\n Key = \"sample_integer\",\n IntegerValue = 1,\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAuthConfigAdditionalVariableArgs\n {\n Key = \"sample_secret_value\",\n SecretValue = new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAuthConfigAdditionalVariableSecretValueArgs\n {\n SecretVersion = secret_version_basic.Name,\n },\n },\n new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAuthConfigAdditionalVariableArgs\n {\n Key = \"sample_encryption_key_value\",\n EncryptionKeyValue = new Gcp.IntegrationConnectors.Inputs.ConnectionEventingConfigAuthConfigAdditionalVariableEncryptionKeyValueArgs\n {\n Type = \"GOOGLE_MANAGED\",\n KmsKeyName = \"sampleKMSKkey\",\n },\n },\n },\n },\n EnrichmentEnabled = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/integrationconnectors\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestProject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"secret-basic\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"test-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tUserManaged: \u0026secretmanager.SecretReplicationUserManagedArgs{\n\t\t\t\t\tReplicas: secretmanager.SecretReplicationUserManagedReplicaArray{\n\t\t\t\t\t\t\u0026secretmanager.SecretReplicationUserManagedReplicaArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"secret-version-basic\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret_basic.ID(),\n\t\t\tSecretData: pulumi.String(\"dummypassword\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret_iam\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: secret_basic.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.admin\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:%v-compute@developer.gserviceaccount.com\", testProject.Number),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecret_version_basic,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = integrationconnectors.NewConnection(ctx, \"zendeskconnection\", \u0026integrationconnectors.ConnectionArgs{\n\t\t\tName: pulumi.String(\"test-zendesk\"),\n\t\t\tDescription: pulumi.String(\"tf updated description\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tServiceAccount: pulumi.Sprintf(\"%v-compute@developer.gserviceaccount.com\", testProject.Number),\n\t\t\tConnectorVersion: pulumi.Sprintf(\"projects/%v/locations/global/providers/zendesk/connectors/zendesk/versions/1\", testProject.ProjectId),\n\t\t\tConfigVariables: integrationconnectors.ConnectionConfigVariableArray{\n\t\t\t\t\u0026integrationconnectors.ConnectionConfigVariableArgs{\n\t\t\t\t\tKey: pulumi.String(\"proxy_enabled\"),\n\t\t\t\t\tBooleanValue: pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t\t\u0026integrationconnectors.ConnectionConfigVariableArgs{\n\t\t\t\t\tKey: pulumi.String(\"sample_integer_value\"),\n\t\t\t\t\tIntegerValue: pulumi.Int(1),\n\t\t\t\t},\n\t\t\t\t\u0026integrationconnectors.ConnectionConfigVariableArgs{\n\t\t\t\t\tKey: pulumi.String(\"sample_encryption_key_value\"),\n\t\t\t\t\tEncryptionKeyValue: \u0026integrationconnectors.ConnectionConfigVariableEncryptionKeyValueArgs{\n\t\t\t\t\t\tType: pulumi.String(\"GOOGLE_MANAGED\"),\n\t\t\t\t\t\tKmsKeyName: pulumi.String(\"sampleKMSKkey\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026integrationconnectors.ConnectionConfigVariableArgs{\n\t\t\t\t\tKey: pulumi.String(\"sample_secret_value\"),\n\t\t\t\t\tSecretValue: \u0026integrationconnectors.ConnectionConfigVariableSecretValueArgs{\n\t\t\t\t\t\tSecretVersion: secret_version_basic.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSuspended: pulumi.Bool(false),\n\t\t\tAuthConfig: \u0026integrationconnectors.ConnectionAuthConfigArgs{\n\t\t\t\tAdditionalVariables: integrationconnectors.ConnectionAuthConfigAdditionalVariableArray{\n\t\t\t\t\t\u0026integrationconnectors.ConnectionAuthConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_string\"),\n\t\t\t\t\t\tStringValue: pulumi.String(\"sampleString\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionAuthConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_boolean\"),\n\t\t\t\t\t\tBooleanValue: pulumi.Bool(false),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionAuthConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_integer\"),\n\t\t\t\t\t\tIntegerValue: pulumi.Int(1),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionAuthConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_secret_value\"),\n\t\t\t\t\t\tSecretValue: \u0026integrationconnectors.ConnectionAuthConfigAdditionalVariableSecretValueArgs{\n\t\t\t\t\t\t\tSecretVersion: secret_version_basic.Name,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionAuthConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_encryption_key_value\"),\n\t\t\t\t\t\tEncryptionKeyValue: \u0026integrationconnectors.ConnectionAuthConfigAdditionalVariableEncryptionKeyValueArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"GOOGLE_MANAGED\"),\n\t\t\t\t\t\t\tKmsKeyName: pulumi.String(\"sampleKMSKkey\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAuthType: pulumi.String(\"USER_PASSWORD\"),\n\t\t\t\tAuthKey: pulumi.String(\"sampleAuthKey\"),\n\t\t\t\tUserPassword: \u0026integrationconnectors.ConnectionAuthConfigUserPasswordArgs{\n\t\t\t\t\tUsername: pulumi.String(\"user@xyz.com\"),\n\t\t\t\t\tPassword: \u0026integrationconnectors.ConnectionAuthConfigUserPasswordPasswordArgs{\n\t\t\t\t\t\tSecretVersion: secret_version_basic.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDestinationConfigs: integrationconnectors.ConnectionDestinationConfigArray{\n\t\t\t\t\u0026integrationconnectors.ConnectionDestinationConfigArgs{\n\t\t\t\t\tKey: pulumi.String(\"url\"),\n\t\t\t\t\tDestinations: integrationconnectors.ConnectionDestinationConfigDestinationArray{\n\t\t\t\t\t\t\u0026integrationconnectors.ConnectionDestinationConfigDestinationArgs{\n\t\t\t\t\t\t\tHost: pulumi.String(\"https://test.zendesk.com\"),\n\t\t\t\t\t\t\tPort: pulumi.Int(80),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLockConfig: \u0026integrationconnectors.ConnectionLockConfigArgs{\n\t\t\t\tLocked: pulumi.Bool(false),\n\t\t\t\tReason: pulumi.String(\"Its not locked\"),\n\t\t\t},\n\t\t\tLogConfig: \u0026integrationconnectors.ConnectionLogConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t},\n\t\t\tNodeConfig: \u0026integrationconnectors.ConnectionNodeConfigArgs{\n\t\t\t\tMinNodeCount: pulumi.Int(2),\n\t\t\t\tMaxNodeCount: pulumi.Int(50),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tSslConfig: \u0026integrationconnectors.ConnectionSslConfigArgs{\n\t\t\t\tAdditionalVariables: integrationconnectors.ConnectionSslConfigAdditionalVariableArray{\n\t\t\t\t\t\u0026integrationconnectors.ConnectionSslConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_string\"),\n\t\t\t\t\t\tStringValue: pulumi.String(\"sampleString\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionSslConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_boolean\"),\n\t\t\t\t\t\tBooleanValue: pulumi.Bool(false),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionSslConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_integer\"),\n\t\t\t\t\t\tIntegerValue: pulumi.Int(1),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionSslConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_secret_value\"),\n\t\t\t\t\t\tSecretValue: \u0026integrationconnectors.ConnectionSslConfigAdditionalVariableSecretValueArgs{\n\t\t\t\t\t\t\tSecretVersion: secret_version_basic.Name,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionSslConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_encryption_key_value\"),\n\t\t\t\t\t\tEncryptionKeyValue: \u0026integrationconnectors.ConnectionSslConfigAdditionalVariableEncryptionKeyValueArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"GOOGLE_MANAGED\"),\n\t\t\t\t\t\t\tKmsKeyName: pulumi.String(\"sampleKMSKkey\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tClientCertType: pulumi.String(\"PEM\"),\n\t\t\t\tClientCertificate: \u0026integrationconnectors.ConnectionSslConfigClientCertificateArgs{\n\t\t\t\t\tSecretVersion: secret_version_basic.Name,\n\t\t\t\t},\n\t\t\t\tClientPrivateKey: \u0026integrationconnectors.ConnectionSslConfigClientPrivateKeyArgs{\n\t\t\t\t\tSecretVersion: secret_version_basic.Name,\n\t\t\t\t},\n\t\t\t\tClientPrivateKeyPass: \u0026integrationconnectors.ConnectionSslConfigClientPrivateKeyPassArgs{\n\t\t\t\t\tSecretVersion: secret_version_basic.Name,\n\t\t\t\t},\n\t\t\t\tPrivateServerCertificate: \u0026integrationconnectors.ConnectionSslConfigPrivateServerCertificateArgs{\n\t\t\t\t\tSecretVersion: secret_version_basic.Name,\n\t\t\t\t},\n\t\t\t\tServerCertType: pulumi.String(\"PEM\"),\n\t\t\t\tTrustModel: pulumi.String(\"PRIVATE\"),\n\t\t\t\tType: pulumi.String(\"TLS\"),\n\t\t\t\tUseSsl: pulumi.Bool(true),\n\t\t\t},\n\t\t\tEventingEnablementType: pulumi.String(\"EVENTING_AND_CONNECTION\"),\n\t\t\tEventingConfig: \u0026integrationconnectors.ConnectionEventingConfigArgs{\n\t\t\t\tAdditionalVariables: integrationconnectors.ConnectionEventingConfigAdditionalVariableArray{\n\t\t\t\t\t\u0026integrationconnectors.ConnectionEventingConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_string\"),\n\t\t\t\t\t\tStringValue: pulumi.String(\"sampleString\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionEventingConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_boolean\"),\n\t\t\t\t\t\tBooleanValue: pulumi.Bool(false),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionEventingConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_integer\"),\n\t\t\t\t\t\tIntegerValue: pulumi.Int(1),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionEventingConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_secret_value\"),\n\t\t\t\t\t\tSecretValue: \u0026integrationconnectors.ConnectionEventingConfigAdditionalVariableSecretValueArgs{\n\t\t\t\t\t\t\tSecretVersion: secret_version_basic.Name,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026integrationconnectors.ConnectionEventingConfigAdditionalVariableArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sample_encryption_key_value\"),\n\t\t\t\t\t\tEncryptionKeyValue: \u0026integrationconnectors.ConnectionEventingConfigAdditionalVariableEncryptionKeyValueArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"GOOGLE_MANAGED\"),\n\t\t\t\t\t\t\tKmsKeyName: pulumi.String(\"sampleKMSKkey\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tRegistrationDestinationConfig: \u0026integrationconnectors.ConnectionEventingConfigRegistrationDestinationConfigArgs{\n\t\t\t\t\tKey: pulumi.String(\"registration_destination_config\"),\n\t\t\t\t\tDestinations: integrationconnectors.ConnectionEventingConfigRegistrationDestinationConfigDestinationArray{\n\t\t\t\t\t\t\u0026integrationconnectors.ConnectionEventingConfigRegistrationDestinationConfigDestinationArgs{\n\t\t\t\t\t\t\tHost: pulumi.String(\"https://test.zendesk.com\"),\n\t\t\t\t\t\t\tPort: pulumi.Int(80),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAuthConfig: \u0026integrationconnectors.ConnectionEventingConfigAuthConfigArgs{\n\t\t\t\t\tAuthType: pulumi.String(\"USER_PASSWORD\"),\n\t\t\t\t\tAuthKey: pulumi.String(\"sampleAuthKey\"),\n\t\t\t\t\tUserPassword: \u0026integrationconnectors.ConnectionEventingConfigAuthConfigUserPasswordArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"user@xyz.com\"),\n\t\t\t\t\t\tPassword: \u0026integrationconnectors.ConnectionEventingConfigAuthConfigUserPasswordPasswordArgs{\n\t\t\t\t\t\t\tSecretVersion: secret_version_basic.Name,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tAdditionalVariables: integrationconnectors.ConnectionEventingConfigAuthConfigAdditionalVariableArray{\n\t\t\t\t\t\t\u0026integrationconnectors.ConnectionEventingConfigAuthConfigAdditionalVariableArgs{\n\t\t\t\t\t\t\tKey: pulumi.String(\"sample_string\"),\n\t\t\t\t\t\t\tStringValue: pulumi.String(\"sampleString\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026integrationconnectors.ConnectionEventingConfigAuthConfigAdditionalVariableArgs{\n\t\t\t\t\t\t\tKey: pulumi.String(\"sample_boolean\"),\n\t\t\t\t\t\t\tBooleanValue: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026integrationconnectors.ConnectionEventingConfigAuthConfigAdditionalVariableArgs{\n\t\t\t\t\t\t\tKey: pulumi.String(\"sample_integer\"),\n\t\t\t\t\t\t\tIntegerValue: pulumi.Int(1),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026integrationconnectors.ConnectionEventingConfigAuthConfigAdditionalVariableArgs{\n\t\t\t\t\t\t\tKey: pulumi.String(\"sample_secret_value\"),\n\t\t\t\t\t\t\tSecretValue: \u0026integrationconnectors.ConnectionEventingConfigAuthConfigAdditionalVariableSecretValueArgs{\n\t\t\t\t\t\t\t\tSecretVersion: secret_version_basic.Name,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026integrationconnectors.ConnectionEventingConfigAuthConfigAdditionalVariableArgs{\n\t\t\t\t\t\t\tKey: pulumi.String(\"sample_encryption_key_value\"),\n\t\t\t\t\t\t\tEncryptionKeyValue: \u0026integrationconnectors.ConnectionEventingConfigAuthConfigAdditionalVariableEncryptionKeyValueArgs{\n\t\t\t\t\t\t\t\tType: pulumi.String(\"GOOGLE_MANAGED\"),\n\t\t\t\t\t\t\t\tKmsKeyName: pulumi.String(\"sampleKMSKkey\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tEnrichmentEnabled: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationUserManagedArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.gcp.integrationconnectors.Connection;\nimport com.pulumi.gcp.integrationconnectors.ConnectionArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionConfigVariableArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionConfigVariableEncryptionKeyValueArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionConfigVariableSecretValueArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionAuthConfigArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionAuthConfigUserPasswordArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionAuthConfigUserPasswordPasswordArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionDestinationConfigArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionLockConfigArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionLogConfigArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionNodeConfigArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionSslConfigArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionSslConfigClientCertificateArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionSslConfigClientPrivateKeyArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionSslConfigClientPrivateKeyPassArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionSslConfigPrivateServerCertificateArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionEventingConfigArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionEventingConfigRegistrationDestinationConfigArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionEventingConfigAuthConfigArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionEventingConfigAuthConfigUserPasswordArgs;\nimport com.pulumi.gcp.integrationconnectors.inputs.ConnectionEventingConfigAuthConfigUserPasswordPasswordArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var testProject = OrganizationsFunctions.getProject();\n\n var secret_basic = new Secret(\"secret-basic\", SecretArgs.builder()\n .secretId(\"test-secret\")\n .replication(SecretReplicationArgs.builder()\n .userManaged(SecretReplicationUserManagedArgs.builder()\n .replicas(SecretReplicationUserManagedReplicaArgs.builder()\n .location(\"us-central1\")\n .build())\n .build())\n .build())\n .build());\n\n var secret_version_basic = new SecretVersion(\"secret-version-basic\", SecretVersionArgs.builder()\n .secret(secret_basic.id())\n .secretData(\"dummypassword\")\n .build());\n\n var secretIam = new SecretIamMember(\"secretIam\", SecretIamMemberArgs.builder()\n .secretId(secret_basic.id())\n .role(\"roles/secretmanager.admin\")\n .member(String.format(\"serviceAccount:%s-compute@developer.gserviceaccount.com\", testProject.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build(), CustomResourceOptions.builder()\n .dependsOn(secret_version_basic)\n .build());\n\n var zendeskconnection = new Connection(\"zendeskconnection\", ConnectionArgs.builder()\n .name(\"test-zendesk\")\n .description(\"tf updated description\")\n .location(\"us-central1\")\n .serviceAccount(String.format(\"%s-compute@developer.gserviceaccount.com\", testProject.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .connectorVersion(String.format(\"projects/%s/locations/global/providers/zendesk/connectors/zendesk/versions/1\", testProject.applyValue(getProjectResult -\u003e getProjectResult.projectId())))\n .configVariables( \n ConnectionConfigVariableArgs.builder()\n .key(\"proxy_enabled\")\n .booleanValue(false)\n .build(),\n ConnectionConfigVariableArgs.builder()\n .key(\"sample_integer_value\")\n .integerValue(1)\n .build(),\n ConnectionConfigVariableArgs.builder()\n .key(\"sample_encryption_key_value\")\n .encryptionKeyValue(ConnectionConfigVariableEncryptionKeyValueArgs.builder()\n .type(\"GOOGLE_MANAGED\")\n .kmsKeyName(\"sampleKMSKkey\")\n .build())\n .build(),\n ConnectionConfigVariableArgs.builder()\n .key(\"sample_secret_value\")\n .secretValue(ConnectionConfigVariableSecretValueArgs.builder()\n .secretVersion(secret_version_basic.name())\n .build())\n .build())\n .suspended(false)\n .authConfig(ConnectionAuthConfigArgs.builder()\n .additionalVariables( \n ConnectionAuthConfigAdditionalVariableArgs.builder()\n .key(\"sample_string\")\n .stringValue(\"sampleString\")\n .build(),\n ConnectionAuthConfigAdditionalVariableArgs.builder()\n .key(\"sample_boolean\")\n .booleanValue(false)\n .build(),\n ConnectionAuthConfigAdditionalVariableArgs.builder()\n .key(\"sample_integer\")\n .integerValue(1)\n .build(),\n ConnectionAuthConfigAdditionalVariableArgs.builder()\n .key(\"sample_secret_value\")\n .secretValue(ConnectionAuthConfigAdditionalVariableSecretValueArgs.builder()\n .secretVersion(secret_version_basic.name())\n .build())\n .build(),\n ConnectionAuthConfigAdditionalVariableArgs.builder()\n .key(\"sample_encryption_key_value\")\n .encryptionKeyValue(ConnectionAuthConfigAdditionalVariableEncryptionKeyValueArgs.builder()\n .type(\"GOOGLE_MANAGED\")\n .kmsKeyName(\"sampleKMSKkey\")\n .build())\n .build())\n .authType(\"USER_PASSWORD\")\n .authKey(\"sampleAuthKey\")\n .userPassword(ConnectionAuthConfigUserPasswordArgs.builder()\n .username(\"user@xyz.com\")\n .password(ConnectionAuthConfigUserPasswordPasswordArgs.builder()\n .secretVersion(secret_version_basic.name())\n .build())\n .build())\n .build())\n .destinationConfigs(ConnectionDestinationConfigArgs.builder()\n .key(\"url\")\n .destinations(ConnectionDestinationConfigDestinationArgs.builder()\n .host(\"https://test.zendesk.com\")\n .port(80)\n .build())\n .build())\n .lockConfig(ConnectionLockConfigArgs.builder()\n .locked(false)\n .reason(\"Its not locked\")\n .build())\n .logConfig(ConnectionLogConfigArgs.builder()\n .enabled(true)\n .build())\n .nodeConfig(ConnectionNodeConfigArgs.builder()\n .minNodeCount(2)\n .maxNodeCount(50)\n .build())\n .labels(Map.of(\"foo\", \"bar\"))\n .sslConfig(ConnectionSslConfigArgs.builder()\n .additionalVariables( \n ConnectionSslConfigAdditionalVariableArgs.builder()\n .key(\"sample_string\")\n .stringValue(\"sampleString\")\n .build(),\n ConnectionSslConfigAdditionalVariableArgs.builder()\n .key(\"sample_boolean\")\n .booleanValue(false)\n .build(),\n ConnectionSslConfigAdditionalVariableArgs.builder()\n .key(\"sample_integer\")\n .integerValue(1)\n .build(),\n ConnectionSslConfigAdditionalVariableArgs.builder()\n .key(\"sample_secret_value\")\n .secretValue(ConnectionSslConfigAdditionalVariableSecretValueArgs.builder()\n .secretVersion(secret_version_basic.name())\n .build())\n .build(),\n ConnectionSslConfigAdditionalVariableArgs.builder()\n .key(\"sample_encryption_key_value\")\n .encryptionKeyValue(ConnectionSslConfigAdditionalVariableEncryptionKeyValueArgs.builder()\n .type(\"GOOGLE_MANAGED\")\n .kmsKeyName(\"sampleKMSKkey\")\n .build())\n .build())\n .clientCertType(\"PEM\")\n .clientCertificate(ConnectionSslConfigClientCertificateArgs.builder()\n .secretVersion(secret_version_basic.name())\n .build())\n .clientPrivateKey(ConnectionSslConfigClientPrivateKeyArgs.builder()\n .secretVersion(secret_version_basic.name())\n .build())\n .clientPrivateKeyPass(ConnectionSslConfigClientPrivateKeyPassArgs.builder()\n .secretVersion(secret_version_basic.name())\n .build())\n .privateServerCertificate(ConnectionSslConfigPrivateServerCertificateArgs.builder()\n .secretVersion(secret_version_basic.name())\n .build())\n .serverCertType(\"PEM\")\n .trustModel(\"PRIVATE\")\n .type(\"TLS\")\n .useSsl(true)\n .build())\n .eventingEnablementType(\"EVENTING_AND_CONNECTION\")\n .eventingConfig(ConnectionEventingConfigArgs.builder()\n .additionalVariables( \n ConnectionEventingConfigAdditionalVariableArgs.builder()\n .key(\"sample_string\")\n .stringValue(\"sampleString\")\n .build(),\n ConnectionEventingConfigAdditionalVariableArgs.builder()\n .key(\"sample_boolean\")\n .booleanValue(false)\n .build(),\n ConnectionEventingConfigAdditionalVariableArgs.builder()\n .key(\"sample_integer\")\n .integerValue(1)\n .build(),\n ConnectionEventingConfigAdditionalVariableArgs.builder()\n .key(\"sample_secret_value\")\n .secretValue(ConnectionEventingConfigAdditionalVariableSecretValueArgs.builder()\n .secretVersion(secret_version_basic.name())\n .build())\n .build(),\n ConnectionEventingConfigAdditionalVariableArgs.builder()\n .key(\"sample_encryption_key_value\")\n .encryptionKeyValue(ConnectionEventingConfigAdditionalVariableEncryptionKeyValueArgs.builder()\n .type(\"GOOGLE_MANAGED\")\n .kmsKeyName(\"sampleKMSKkey\")\n .build())\n .build())\n .registrationDestinationConfig(ConnectionEventingConfigRegistrationDestinationConfigArgs.builder()\n .key(\"registration_destination_config\")\n .destinations(ConnectionEventingConfigRegistrationDestinationConfigDestinationArgs.builder()\n .host(\"https://test.zendesk.com\")\n .port(80)\n .build())\n .build())\n .authConfig(ConnectionEventingConfigAuthConfigArgs.builder()\n .authType(\"USER_PASSWORD\")\n .authKey(\"sampleAuthKey\")\n .userPassword(ConnectionEventingConfigAuthConfigUserPasswordArgs.builder()\n .username(\"user@xyz.com\")\n .password(ConnectionEventingConfigAuthConfigUserPasswordPasswordArgs.builder()\n .secretVersion(secret_version_basic.name())\n .build())\n .build())\n .additionalVariables( \n ConnectionEventingConfigAuthConfigAdditionalVariableArgs.builder()\n .key(\"sample_string\")\n .stringValue(\"sampleString\")\n .build(),\n ConnectionEventingConfigAuthConfigAdditionalVariableArgs.builder()\n .key(\"sample_boolean\")\n .booleanValue(false)\n .build(),\n ConnectionEventingConfigAuthConfigAdditionalVariableArgs.builder()\n .key(\"sample_integer\")\n .integerValue(1)\n .build(),\n ConnectionEventingConfigAuthConfigAdditionalVariableArgs.builder()\n .key(\"sample_secret_value\")\n .secretValue(ConnectionEventingConfigAuthConfigAdditionalVariableSecretValueArgs.builder()\n .secretVersion(secret_version_basic.name())\n .build())\n .build(),\n ConnectionEventingConfigAuthConfigAdditionalVariableArgs.builder()\n .key(\"sample_encryption_key_value\")\n .encryptionKeyValue(ConnectionEventingConfigAuthConfigAdditionalVariableEncryptionKeyValueArgs.builder()\n .type(\"GOOGLE_MANAGED\")\n .kmsKeyName(\"sampleKMSKkey\")\n .build())\n .build())\n .build())\n .enrichmentEnabled(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-basic:\n type: gcp:secretmanager:Secret\n properties:\n secretId: test-secret\n replication:\n userManaged:\n replicas:\n - location: us-central1\n secret-version-basic:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"secret-basic\"].id}\n secretData: dummypassword\n secretIam:\n type: gcp:secretmanager:SecretIamMember\n name: secret_iam\n properties:\n secretId: ${[\"secret-basic\"].id}\n role: roles/secretmanager.admin\n member: serviceAccount:${testProject.number}-compute@developer.gserviceaccount.com\n options:\n dependson:\n - ${[\"secret-version-basic\"]}\n zendeskconnection:\n type: gcp:integrationconnectors:Connection\n properties:\n name: test-zendesk\n description: tf updated description\n location: us-central1\n serviceAccount: ${testProject.number}-compute@developer.gserviceaccount.com\n connectorVersion: projects/${testProject.projectId}/locations/global/providers/zendesk/connectors/zendesk/versions/1\n configVariables:\n - key: proxy_enabled\n booleanValue: false\n - key: sample_integer_value\n integerValue: 1\n - key: sample_encryption_key_value\n encryptionKeyValue:\n type: GOOGLE_MANAGED\n kmsKeyName: sampleKMSKkey\n - key: sample_secret_value\n secretValue:\n secretVersion: ${[\"secret-version-basic\"].name}\n suspended: false\n authConfig:\n additionalVariables:\n - key: sample_string\n stringValue: sampleString\n - key: sample_boolean\n booleanValue: false\n - key: sample_integer\n integerValue: 1\n - key: sample_secret_value\n secretValue:\n secretVersion: ${[\"secret-version-basic\"].name}\n - key: sample_encryption_key_value\n encryptionKeyValue:\n type: GOOGLE_MANAGED\n kmsKeyName: sampleKMSKkey\n authType: USER_PASSWORD\n authKey: sampleAuthKey\n userPassword:\n username: user@xyz.com\n password:\n secretVersion: ${[\"secret-version-basic\"].name}\n destinationConfigs:\n - key: url\n destinations:\n - host: https://test.zendesk.com\n port: 80\n lockConfig:\n locked: false\n reason: Its not locked\n logConfig:\n enabled: true\n nodeConfig:\n minNodeCount: 2\n maxNodeCount: 50\n labels:\n foo: bar\n sslConfig:\n additionalVariables:\n - key: sample_string\n stringValue: sampleString\n - key: sample_boolean\n booleanValue: false\n - key: sample_integer\n integerValue: 1\n - key: sample_secret_value\n secretValue:\n secretVersion: ${[\"secret-version-basic\"].name}\n - key: sample_encryption_key_value\n encryptionKeyValue:\n type: GOOGLE_MANAGED\n kmsKeyName: sampleKMSKkey\n clientCertType: PEM\n clientCertificate:\n secretVersion: ${[\"secret-version-basic\"].name}\n clientPrivateKey:\n secretVersion: ${[\"secret-version-basic\"].name}\n clientPrivateKeyPass:\n secretVersion: ${[\"secret-version-basic\"].name}\n privateServerCertificate:\n secretVersion: ${[\"secret-version-basic\"].name}\n serverCertType: PEM\n trustModel: PRIVATE\n type: TLS\n useSsl: true\n eventingEnablementType: EVENTING_AND_CONNECTION\n eventingConfig:\n additionalVariables:\n - key: sample_string\n stringValue: sampleString\n - key: sample_boolean\n booleanValue: false\n - key: sample_integer\n integerValue: 1\n - key: sample_secret_value\n secretValue:\n secretVersion: ${[\"secret-version-basic\"].name}\n - key: sample_encryption_key_value\n encryptionKeyValue:\n type: GOOGLE_MANAGED\n kmsKeyName: sampleKMSKkey\n registrationDestinationConfig:\n key: registration_destination_config\n destinations:\n - host: https://test.zendesk.com\n port: 80\n authConfig:\n authType: USER_PASSWORD\n authKey: sampleAuthKey\n userPassword:\n username: user@xyz.com\n password:\n secretVersion: ${[\"secret-version-basic\"].name}\n additionalVariables:\n - key: sample_string\n stringValue: sampleString\n - key: sample_boolean\n booleanValue: false\n - key: sample_integer\n integerValue: 1\n - key: sample_secret_value\n secretValue:\n secretVersion: ${[\"secret-version-basic\"].name}\n - key: sample_encryption_key_value\n encryptionKeyValue:\n type: GOOGLE_MANAGED\n kmsKeyName: sampleKMSKkey\n enrichmentEnabled: true\nvariables:\n testProject:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nConnection can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/connections/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Connection can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:integrationconnectors/connection:Connection default projects/{{project}}/locations/{{location}}/connections/{{name}}\n```\n\n```sh\n$ pulumi import gcp:integrationconnectors/connection:Connection default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:integrationconnectors/connection:Connection default {{location}}/{{name}}\n```\n\n", "properties": { "authConfig": { "$ref": "#/types/gcp:integrationconnectors/ConnectionAuthConfig:ConnectionAuthConfig", @@ -214043,7 +214043,7 @@ } }, "gcp:integrationconnectors/managedZone:ManagedZone": { - "description": "An Integration connectors Managed Zone.\n\n\nTo get more information about ManagedZone, see:\n\n* [API documentation](https://cloud.google.com/integration-connectors/docs/reference/rest/v1/projects.locations.global.managedZones)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/integration-connectors/docs)\n\n## Example Usage\n\n### Integration Connectors Managed Zone\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst targetProject = new gcp.organizations.Project(\"target_project\", {\n projectId: \"tf-test_34535\",\n name: \"tf-test_22375\",\n orgId: \"123456789\",\n billingAccount: \"000000-0000000-0000000-000000\",\n deletionPolicy: \"DELETE\",\n});\nconst testProject = gcp.organizations.getProject({});\nconst dnsPeerBinding = new gcp.projects.IAMMember(\"dns_peer_binding\", {\n project: targetProject.projectId,\n role: \"roles/dns.peer\",\n member: testProject.then(testProject =\u003e `serviceAccount:service-${testProject.number}@gcp-sa-connectors.iam.gserviceaccount.com`),\n});\nconst dns = new gcp.projects.Service(\"dns\", {\n project: targetProject.projectId,\n service: \"dns.googleapis.com\",\n});\nconst compute = new gcp.projects.Service(\"compute\", {\n project: targetProject.projectId,\n service: \"compute.googleapis.com\",\n});\nconst network = new gcp.compute.Network(\"network\", {\n project: targetProject.projectId,\n name: \"test\",\n autoCreateSubnetworks: false,\n}, {\n dependsOn: [compute],\n});\nconst zone = new gcp.dns.ManagedZone(\"zone\", {\n name: \"tf-test-dns_29439\",\n dnsName: \"private_87786.example.com.\",\n visibility: \"private\",\n privateVisibilityConfig: {\n networks: [{\n networkUrl: network.id,\n }],\n },\n}, {\n dependsOn: [dns],\n});\nconst testmanagedzone = new gcp.integrationconnectors.ManagedZone(\"testmanagedzone\", {\n name: \"test\",\n description: \"tf created description\",\n labels: {\n intent: \"example\",\n },\n targetProject: targetProject.projectId,\n targetVpc: \"test\",\n dns: zone.dnsName,\n}, {\n dependsOn: [\n dnsPeerBinding,\n zone,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntarget_project = gcp.organizations.Project(\"target_project\",\n project_id=\"tf-test_34535\",\n name=\"tf-test_22375\",\n org_id=\"123456789\",\n billing_account=\"000000-0000000-0000000-000000\",\n deletion_policy=\"DELETE\")\ntest_project = gcp.organizations.get_project()\ndns_peer_binding = gcp.projects.IAMMember(\"dns_peer_binding\",\n project=target_project.project_id,\n role=\"roles/dns.peer\",\n member=f\"serviceAccount:service-{test_project.number}@gcp-sa-connectors.iam.gserviceaccount.com\")\ndns = gcp.projects.Service(\"dns\",\n project=target_project.project_id,\n service=\"dns.googleapis.com\")\ncompute = gcp.projects.Service(\"compute\",\n project=target_project.project_id,\n service=\"compute.googleapis.com\")\nnetwork = gcp.compute.Network(\"network\",\n project=target_project.project_id,\n name=\"test\",\n auto_create_subnetworks=False,\n opts = pulumi.ResourceOptions(depends_on=[compute]))\nzone = gcp.dns.ManagedZone(\"zone\",\n name=\"tf-test-dns_29439\",\n dns_name=\"private_87786.example.com.\",\n visibility=\"private\",\n private_visibility_config={\n \"networks\": [{\n \"network_url\": network.id,\n }],\n },\n opts = pulumi.ResourceOptions(depends_on=[dns]))\ntestmanagedzone = gcp.integrationconnectors.ManagedZone(\"testmanagedzone\",\n name=\"test\",\n description=\"tf created description\",\n labels={\n \"intent\": \"example\",\n },\n target_project=target_project.project_id,\n target_vpc=\"test\",\n dns=zone.dns_name,\n opts = pulumi.ResourceOptions(depends_on=[\n dns_peer_binding,\n zone,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var targetProject = new Gcp.Organizations.Project(\"target_project\", new()\n {\n ProjectId = \"tf-test_34535\",\n Name = \"tf-test_22375\",\n OrgId = \"123456789\",\n BillingAccount = \"000000-0000000-0000000-000000\",\n DeletionPolicy = \"DELETE\",\n });\n\n var testProject = Gcp.Organizations.GetProject.Invoke();\n\n var dnsPeerBinding = new Gcp.Projects.IAMMember(\"dns_peer_binding\", new()\n {\n Project = targetProject.ProjectId,\n Role = \"roles/dns.peer\",\n Member = $\"serviceAccount:service-{testProject.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-connectors.iam.gserviceaccount.com\",\n });\n\n var dns = new Gcp.Projects.Service(\"dns\", new()\n {\n Project = targetProject.ProjectId,\n ServiceName = \"dns.googleapis.com\",\n });\n\n var compute = new Gcp.Projects.Service(\"compute\", new()\n {\n Project = targetProject.ProjectId,\n ServiceName = \"compute.googleapis.com\",\n });\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Project = targetProject.ProjectId,\n Name = \"test\",\n AutoCreateSubnetworks = false,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n compute,\n },\n });\n\n var zone = new Gcp.Dns.ManagedZone(\"zone\", new()\n {\n Name = \"tf-test-dns_29439\",\n DnsName = \"private_87786.example.com.\",\n Visibility = \"private\",\n PrivateVisibilityConfig = new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigArgs\n {\n Networks = new[]\n {\n new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigNetworkArgs\n {\n NetworkUrl = network.Id,\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n dns,\n },\n });\n\n var testmanagedzone = new Gcp.IntegrationConnectors.ManagedZone(\"testmanagedzone\", new()\n {\n Name = \"test\",\n Description = \"tf created description\",\n Labels = \n {\n { \"intent\", \"example\" },\n },\n TargetProject = targetProject.ProjectId,\n TargetVpc = \"test\",\n Dns = zone.DnsName,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n dnsPeerBinding,\n zone,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/integrationconnectors\"\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/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttargetProject, err := organizations.NewProject(ctx, \"target_project\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"tf-test_34535\"),\n\t\t\tName: pulumi.String(\"tf-test_22375\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t\tBillingAccount: pulumi.String(\"000000-0000000-0000000-000000\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestProject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdnsPeerBinding, err := projects.NewIAMMember(ctx, \"dns_peer_binding\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: targetProject.ProjectId,\n\t\t\tRole: pulumi.String(\"roles/dns.peer\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-connectors.iam.gserviceaccount.com\", testProject.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdns, err := projects.NewService(ctx, \"dns\", \u0026projects.ServiceArgs{\n\t\t\tProject: targetProject.ProjectId,\n\t\t\tService: pulumi.String(\"dns.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcompute, err := projects.NewService(ctx, \"compute\", \u0026projects.ServiceArgs{\n\t\t\tProject: targetProject.ProjectId,\n\t\t\tService: pulumi.String(\"compute.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tProject: targetProject.ProjectId,\n\t\t\tName: pulumi.String(\"test\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcompute,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tzone, err := dns.NewManagedZone(ctx, \"zone\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"tf-test-dns_29439\"),\n\t\t\tDnsName: pulumi.String(\"private_87786.example.com.\"),\n\t\t\tVisibility: pulumi.String(\"private\"),\n\t\t\tPrivateVisibilityConfig: \u0026dns.ManagedZonePrivateVisibilityConfigArgs{\n\t\t\t\tNetworks: dns.ManagedZonePrivateVisibilityConfigNetworkArray{\n\t\t\t\t\t\u0026dns.ManagedZonePrivateVisibilityConfigNetworkArgs{\n\t\t\t\t\t\tNetworkUrl: network.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdns,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = integrationconnectors.NewManagedZone(ctx, \"testmanagedzone\", \u0026integrationconnectors.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"tf created description\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"intent\": pulumi.String(\"example\"),\n\t\t\t},\n\t\t\tTargetProject: targetProject.ProjectId,\n\t\t\tTargetVpc: pulumi.String(\"test\"),\n\t\t\tDns: zone.DnsName,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdnsPeerBinding,\n\t\t\tzone,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.projects.Service;\nimport com.pulumi.gcp.projects.ServiceArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZonePrivateVisibilityConfigArgs;\nimport com.pulumi.gcp.integrationconnectors.ManagedZone;\nimport com.pulumi.gcp.integrationconnectors.ManagedZoneArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var targetProject = new Project(\"targetProject\", ProjectArgs.builder()\n .projectId(\"tf-test_34535\")\n .name(\"tf-test_22375\")\n .orgId(\"123456789\")\n .billingAccount(\"000000-0000000-0000000-000000\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n final var testProject = OrganizationsFunctions.getProject();\n\n var dnsPeerBinding = new IAMMember(\"dnsPeerBinding\", IAMMemberArgs.builder()\n .project(targetProject.projectId())\n .role(\"roles/dns.peer\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-connectors.iam.gserviceaccount.com\", testProject.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var dns = new Service(\"dns\", ServiceArgs.builder()\n .project(targetProject.projectId())\n .service(\"dns.googleapis.com\")\n .build());\n\n var compute = new Service(\"compute\", ServiceArgs.builder()\n .project(targetProject.projectId())\n .service(\"compute.googleapis.com\")\n .build());\n\n var network = new Network(\"network\", NetworkArgs.builder()\n .project(targetProject.projectId())\n .name(\"test\")\n .autoCreateSubnetworks(false)\n .build(), CustomResourceOptions.builder()\n .dependsOn(compute)\n .build());\n\n var zone = new ManagedZone(\"zone\", ManagedZoneArgs.builder()\n .name(\"tf-test-dns_29439\")\n .dnsName(\"private_87786.example.com.\")\n .visibility(\"private\")\n .privateVisibilityConfig(ManagedZonePrivateVisibilityConfigArgs.builder()\n .networks(ManagedZonePrivateVisibilityConfigNetworkArgs.builder()\n .networkUrl(network.id())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(dns)\n .build());\n\n var testmanagedzone = new ManagedZone(\"testmanagedzone\", ManagedZoneArgs.builder()\n .name(\"test\")\n .description(\"tf created description\")\n .labels(Map.of(\"intent\", \"example\"))\n .targetProject(targetProject.projectId())\n .targetVpc(\"test\")\n .dns(zone.dnsName())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n dnsPeerBinding,\n zone)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n targetProject:\n type: gcp:organizations:Project\n name: target_project\n properties:\n projectId: tf-test_34535\n name: tf-test_22375\n orgId: '123456789'\n billingAccount: 000000-0000000-0000000-000000\n deletionPolicy: DELETE\n dnsPeerBinding:\n type: gcp:projects:IAMMember\n name: dns_peer_binding\n properties:\n project: ${targetProject.projectId}\n role: roles/dns.peer\n member: serviceAccount:service-${testProject.number}@gcp-sa-connectors.iam.gserviceaccount.com\n dns:\n type: gcp:projects:Service\n properties:\n project: ${targetProject.projectId}\n service: dns.googleapis.com\n compute:\n type: gcp:projects:Service\n properties:\n project: ${targetProject.projectId}\n service: compute.googleapis.com\n network:\n type: gcp:compute:Network\n properties:\n project: ${targetProject.projectId}\n name: test\n autoCreateSubnetworks: false\n options:\n dependson:\n - ${compute}\n zone:\n type: gcp:dns:ManagedZone\n properties:\n name: tf-test-dns_29439\n dnsName: private_87786.example.com.\n visibility: private\n privateVisibilityConfig:\n networks:\n - networkUrl: ${network.id}\n options:\n dependson:\n - ${dns}\n testmanagedzone:\n type: gcp:integrationconnectors:ManagedZone\n properties:\n name: test\n description: tf created description\n labels:\n intent: example\n targetProject: ${targetProject.projectId}\n targetVpc: test\n dns: ${zone.dnsName}\n options:\n dependson:\n - ${dnsPeerBinding}\n - ${zone}\nvariables:\n testProject:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nManagedZone can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/managedZones/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, ManagedZone can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:integrationconnectors/managedZone:ManagedZone default projects/{{project}}/locations/global/managedZones/{{name}}\n```\n\n```sh\n$ pulumi import gcp:integrationconnectors/managedZone:ManagedZone default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:integrationconnectors/managedZone:ManagedZone default {{name}}\n```\n\n", + "description": "An Integration connectors Managed Zone.\n\n\nTo get more information about ManagedZone, see:\n\n* [API documentation](https://cloud.google.com/integration-connectors/docs/reference/rest/v1/projects.locations.global.managedZones)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/integration-connectors/docs)\n\n## Example Usage\n\n### Integration Connectors Managed Zone\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst targetProject = new gcp.organizations.Project(\"target_project\", {\n projectId: \"tf-test_34535\",\n name: \"tf-test_22375\",\n orgId: \"123456789\",\n billingAccount: \"000000-0000000-0000000-000000\",\n deletionPolicy: \"DELETE\",\n});\nconst testProject = gcp.organizations.getProject({});\nconst dnsPeerBinding = new gcp.projects.IAMMember(\"dns_peer_binding\", {\n project: targetProject.projectId,\n role: \"roles/dns.peer\",\n member: testProject.then(testProject =\u003e `serviceAccount:service-${testProject.number}@gcp-sa-connectors.iam.gserviceaccount.com`),\n});\nconst dns = new gcp.projects.Service(\"dns\", {\n project: targetProject.projectId,\n service: \"dns.googleapis.com\",\n});\nconst compute = new gcp.projects.Service(\"compute\", {\n project: targetProject.projectId,\n service: \"compute.googleapis.com\",\n});\nconst network = new gcp.compute.Network(\"network\", {\n project: targetProject.projectId,\n name: \"test\",\n autoCreateSubnetworks: false,\n}, {\n dependsOn: [compute],\n});\nconst zone = new gcp.dns.ManagedZone(\"zone\", {\n name: \"tf-test-dns_29439\",\n dnsName: \"private_87786.example.com.\",\n visibility: \"private\",\n privateVisibilityConfig: {\n networks: [{\n networkUrl: network.id,\n }],\n },\n}, {\n dependsOn: [dns],\n});\nconst testmanagedzone = new gcp.integrationconnectors.ManagedZone(\"testmanagedzone\", {\n name: \"test\",\n description: \"tf created description\",\n labels: {\n intent: \"example\",\n },\n targetProject: targetProject.projectId,\n targetVpc: \"test\",\n dns: zone.dnsName,\n}, {\n dependsOn: [\n dnsPeerBinding,\n zone,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntarget_project = gcp.organizations.Project(\"target_project\",\n project_id=\"tf-test_34535\",\n name=\"tf-test_22375\",\n org_id=\"123456789\",\n billing_account=\"000000-0000000-0000000-000000\",\n deletion_policy=\"DELETE\")\ntest_project = gcp.organizations.get_project()\ndns_peer_binding = gcp.projects.IAMMember(\"dns_peer_binding\",\n project=target_project.project_id,\n role=\"roles/dns.peer\",\n member=f\"serviceAccount:service-{test_project.number}@gcp-sa-connectors.iam.gserviceaccount.com\")\ndns = gcp.projects.Service(\"dns\",\n project=target_project.project_id,\n service=\"dns.googleapis.com\")\ncompute = gcp.projects.Service(\"compute\",\n project=target_project.project_id,\n service=\"compute.googleapis.com\")\nnetwork = gcp.compute.Network(\"network\",\n project=target_project.project_id,\n name=\"test\",\n auto_create_subnetworks=False,\n opts = pulumi.ResourceOptions(depends_on=[compute]))\nzone = gcp.dns.ManagedZone(\"zone\",\n name=\"tf-test-dns_29439\",\n dns_name=\"private_87786.example.com.\",\n visibility=\"private\",\n private_visibility_config={\n \"networks\": [{\n \"network_url\": network.id,\n }],\n },\n opts = pulumi.ResourceOptions(depends_on=[dns]))\ntestmanagedzone = gcp.integrationconnectors.ManagedZone(\"testmanagedzone\",\n name=\"test\",\n description=\"tf created description\",\n labels={\n \"intent\": \"example\",\n },\n target_project=target_project.project_id,\n target_vpc=\"test\",\n dns=zone.dns_name,\n opts = pulumi.ResourceOptions(depends_on=[\n dns_peer_binding,\n zone,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var targetProject = new Gcp.Organizations.Project(\"target_project\", new()\n {\n ProjectId = \"tf-test_34535\",\n Name = \"tf-test_22375\",\n OrgId = \"123456789\",\n BillingAccount = \"000000-0000000-0000000-000000\",\n DeletionPolicy = \"DELETE\",\n });\n\n var testProject = Gcp.Organizations.GetProject.Invoke();\n\n var dnsPeerBinding = new Gcp.Projects.IAMMember(\"dns_peer_binding\", new()\n {\n Project = targetProject.ProjectId,\n Role = \"roles/dns.peer\",\n Member = $\"serviceAccount:service-{testProject.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-connectors.iam.gserviceaccount.com\",\n });\n\n var dns = new Gcp.Projects.Service(\"dns\", new()\n {\n Project = targetProject.ProjectId,\n ServiceName = \"dns.googleapis.com\",\n });\n\n var compute = new Gcp.Projects.Service(\"compute\", new()\n {\n Project = targetProject.ProjectId,\n ServiceName = \"compute.googleapis.com\",\n });\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Project = targetProject.ProjectId,\n Name = \"test\",\n AutoCreateSubnetworks = false,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n compute,\n },\n });\n\n var zone = new Gcp.Dns.ManagedZone(\"zone\", new()\n {\n Name = \"tf-test-dns_29439\",\n DnsName = \"private_87786.example.com.\",\n Visibility = \"private\",\n PrivateVisibilityConfig = new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigArgs\n {\n Networks = new[]\n {\n new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigNetworkArgs\n {\n NetworkUrl = network.Id,\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n dns,\n },\n });\n\n var testmanagedzone = new Gcp.IntegrationConnectors.ManagedZone(\"testmanagedzone\", new()\n {\n Name = \"test\",\n Description = \"tf created description\",\n Labels = \n {\n { \"intent\", \"example\" },\n },\n TargetProject = targetProject.ProjectId,\n TargetVpc = \"test\",\n Dns = zone.DnsName,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n dnsPeerBinding,\n zone,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/integrationconnectors\"\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/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttargetProject, err := organizations.NewProject(ctx, \"target_project\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"tf-test_34535\"),\n\t\t\tName: pulumi.String(\"tf-test_22375\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t\tBillingAccount: pulumi.String(\"000000-0000000-0000000-000000\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestProject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdnsPeerBinding, err := projects.NewIAMMember(ctx, \"dns_peer_binding\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: targetProject.ProjectId,\n\t\t\tRole: pulumi.String(\"roles/dns.peer\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-connectors.iam.gserviceaccount.com\", testProject.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdns, err := projects.NewService(ctx, \"dns\", \u0026projects.ServiceArgs{\n\t\t\tProject: targetProject.ProjectId,\n\t\t\tService: pulumi.String(\"dns.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcompute, err := projects.NewService(ctx, \"compute\", \u0026projects.ServiceArgs{\n\t\t\tProject: targetProject.ProjectId,\n\t\t\tService: pulumi.String(\"compute.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tProject: targetProject.ProjectId,\n\t\t\tName: pulumi.String(\"test\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcompute,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tzone, err := dns.NewManagedZone(ctx, \"zone\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"tf-test-dns_29439\"),\n\t\t\tDnsName: pulumi.String(\"private_87786.example.com.\"),\n\t\t\tVisibility: pulumi.String(\"private\"),\n\t\t\tPrivateVisibilityConfig: \u0026dns.ManagedZonePrivateVisibilityConfigArgs{\n\t\t\t\tNetworks: dns.ManagedZonePrivateVisibilityConfigNetworkArray{\n\t\t\t\t\t\u0026dns.ManagedZonePrivateVisibilityConfigNetworkArgs{\n\t\t\t\t\t\tNetworkUrl: network.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdns,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = integrationconnectors.NewManagedZone(ctx, \"testmanagedzone\", \u0026integrationconnectors.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"tf created description\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"intent\": pulumi.String(\"example\"),\n\t\t\t},\n\t\t\tTargetProject: targetProject.ProjectId,\n\t\t\tTargetVpc: pulumi.String(\"test\"),\n\t\t\tDns: zone.DnsName,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdnsPeerBinding,\n\t\t\tzone,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.projects.Service;\nimport com.pulumi.gcp.projects.ServiceArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZonePrivateVisibilityConfigArgs;\nimport com.pulumi.gcp.integrationconnectors.ManagedZone;\nimport com.pulumi.gcp.integrationconnectors.ManagedZoneArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var targetProject = new Project(\"targetProject\", ProjectArgs.builder()\n .projectId(\"tf-test_34535\")\n .name(\"tf-test_22375\")\n .orgId(\"123456789\")\n .billingAccount(\"000000-0000000-0000000-000000\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n final var testProject = OrganizationsFunctions.getProject();\n\n var dnsPeerBinding = new IAMMember(\"dnsPeerBinding\", IAMMemberArgs.builder()\n .project(targetProject.projectId())\n .role(\"roles/dns.peer\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-connectors.iam.gserviceaccount.com\", testProject.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var dns = new Service(\"dns\", ServiceArgs.builder()\n .project(targetProject.projectId())\n .service(\"dns.googleapis.com\")\n .build());\n\n var compute = new Service(\"compute\", ServiceArgs.builder()\n .project(targetProject.projectId())\n .service(\"compute.googleapis.com\")\n .build());\n\n var network = new Network(\"network\", NetworkArgs.builder()\n .project(targetProject.projectId())\n .name(\"test\")\n .autoCreateSubnetworks(false)\n .build(), CustomResourceOptions.builder()\n .dependsOn(compute)\n .build());\n\n var zone = new ManagedZone(\"zone\", ManagedZoneArgs.builder()\n .name(\"tf-test-dns_29439\")\n .dnsName(\"private_87786.example.com.\")\n .visibility(\"private\")\n .privateVisibilityConfig(ManagedZonePrivateVisibilityConfigArgs.builder()\n .networks(ManagedZonePrivateVisibilityConfigNetworkArgs.builder()\n .networkUrl(network.id())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(dns)\n .build());\n\n var testmanagedzone = new ManagedZone(\"testmanagedzone\", ManagedZoneArgs.builder()\n .name(\"test\")\n .description(\"tf created description\")\n .labels(Map.of(\"intent\", \"example\"))\n .targetProject(targetProject.projectId())\n .targetVpc(\"test\")\n .dns(zone.dnsName())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n dnsPeerBinding,\n zone)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n targetProject:\n type: gcp:organizations:Project\n name: target_project\n properties:\n projectId: tf-test_34535\n name: tf-test_22375\n orgId: '123456789'\n billingAccount: 000000-0000000-0000000-000000\n deletionPolicy: DELETE\n dnsPeerBinding:\n type: gcp:projects:IAMMember\n name: dns_peer_binding\n properties:\n project: ${targetProject.projectId}\n role: roles/dns.peer\n member: serviceAccount:service-${testProject.number}@gcp-sa-connectors.iam.gserviceaccount.com\n dns:\n type: gcp:projects:Service\n properties:\n project: ${targetProject.projectId}\n service: dns.googleapis.com\n compute:\n type: gcp:projects:Service\n properties:\n project: ${targetProject.projectId}\n service: compute.googleapis.com\n network:\n type: gcp:compute:Network\n properties:\n project: ${targetProject.projectId}\n name: test\n autoCreateSubnetworks: false\n options:\n dependson:\n - ${compute}\n zone:\n type: gcp:dns:ManagedZone\n properties:\n name: tf-test-dns_29439\n dnsName: private_87786.example.com.\n visibility: private\n privateVisibilityConfig:\n networks:\n - networkUrl: ${network.id}\n options:\n dependson:\n - ${dns}\n testmanagedzone:\n type: gcp:integrationconnectors:ManagedZone\n properties:\n name: test\n description: tf created description\n labels:\n intent: example\n targetProject: ${targetProject.projectId}\n targetVpc: test\n dns: ${zone.dnsName}\n options:\n dependson:\n - ${dnsPeerBinding}\n - ${zone}\nvariables:\n testProject:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nManagedZone can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/managedZones/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, ManagedZone can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:integrationconnectors/managedZone:ManagedZone default projects/{{project}}/locations/global/managedZones/{{name}}\n```\n\n```sh\n$ pulumi import gcp:integrationconnectors/managedZone:ManagedZone default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:integrationconnectors/managedZone:ManagedZone default {{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -215823,7 +215823,7 @@ } }, "gcp:kms/secretCiphertext:SecretCiphertext": { - "description": "Encrypts secret data with Google Cloud KMS and provides access to the ciphertext.\n\n\n\u003e **NOTE:** Using this resource will allow you to conceal secret data within your\nresource definitions, but it does not take care of protecting that data in the\nlogging output, plan output, or state output. Please take care to secure your secret\ndata outside of resource definitions.\n\n\nTo get more information about SecretCiphertext, see:\n\n* [API documentation](https://cloud.google.com/kms/docs/reference/rest/v1/projects.locations.keyRings.cryptoKeys/encrypt)\n* How-to Guides\n * [Encrypting and decrypting data with a symmetric key](https://cloud.google.com/kms/docs/encrypt-decrypt)\n\n\n\n## Example Usage\n\n### Kms Secret Ciphertext Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyring = new gcp.kms.KeyRing(\"keyring\", {\n name: \"keyring-example\",\n location: \"global\",\n});\nconst cryptokey = new gcp.kms.CryptoKey(\"cryptokey\", {\n name: \"crypto-key-example\",\n keyRing: keyring.id,\n rotationPeriod: \"7776000s\",\n});\nconst myPassword = new gcp.kms.SecretCiphertext(\"my_password\", {\n cryptoKey: cryptokey.id,\n plaintext: \"my-secret-password\",\n});\nconst instance = new gcp.compute.Instance(\"instance\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n network: \"default\",\n }],\n name: \"my-instance\",\n machineType: \"e2-medium\",\n zone: \"us-central1-a\",\n bootDisk: {\n initializeParams: {\n image: \"debian-cloud/debian-11\",\n },\n },\n metadata: {\n password: myPassword.ciphertext,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkeyring = gcp.kms.KeyRing(\"keyring\",\n name=\"keyring-example\",\n location=\"global\")\ncryptokey = gcp.kms.CryptoKey(\"cryptokey\",\n name=\"crypto-key-example\",\n key_ring=keyring.id,\n rotation_period=\"7776000s\")\nmy_password = gcp.kms.SecretCiphertext(\"my_password\",\n crypto_key=cryptokey.id,\n plaintext=\"my-secret-password\")\ninstance = gcp.compute.Instance(\"instance\",\n network_interfaces=[{\n \"access_configs\": [{}],\n \"network\": \"default\",\n }],\n name=\"my-instance\",\n machine_type=\"e2-medium\",\n zone=\"us-central1-a\",\n boot_disk={\n \"initialize_params\": {\n \"image\": \"debian-cloud/debian-11\",\n },\n },\n metadata={\n \"password\": my_password.ciphertext,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var keyring = new Gcp.Kms.KeyRing(\"keyring\", new()\n {\n Name = \"keyring-example\",\n Location = \"global\",\n });\n\n var cryptokey = new Gcp.Kms.CryptoKey(\"cryptokey\", new()\n {\n Name = \"crypto-key-example\",\n KeyRing = keyring.Id,\n RotationPeriod = \"7776000s\",\n });\n\n var myPassword = new Gcp.Kms.SecretCiphertext(\"my_password\", new()\n {\n CryptoKey = cryptokey.Id,\n Plaintext = \"my-secret-password\",\n });\n\n var instance = new Gcp.Compute.Instance(\"instance\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Network = \"default\",\n },\n },\n Name = \"my-instance\",\n MachineType = \"e2-medium\",\n Zone = \"us-central1-a\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = \"debian-cloud/debian-11\",\n },\n },\n Metadata = \n {\n { \"password\", myPassword.Ciphertext },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tkeyring, err := kms.NewKeyRing(ctx, \"keyring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"keyring-example\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptokey, err := kms.NewCryptoKey(ctx, \"cryptokey\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"crypto-key-example\"),\n\t\t\tKeyRing: keyring.ID(),\n\t\t\tRotationPeriod: pulumi.String(\"7776000s\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyPassword, err := kms.NewSecretCiphertext(ctx, \"my_password\", \u0026kms.SecretCiphertextArgs{\n\t\t\tCryptoKey: cryptokey.ID(),\n\t\t\tPlaintext: pulumi.String(\"my-secret-password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"instance\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tAccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{\n\t\t\t\t\t\tnil,\n\t\t\t\t\t},\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(\"debian-cloud/debian-11\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\"password\": myPassword.Ciphertext,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.kms.SecretCiphertext;\nimport com.pulumi.gcp.kms.SecretCiphertextArgs;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var keyring = new KeyRing(\"keyring\", KeyRingArgs.builder()\n .name(\"keyring-example\")\n .location(\"global\")\n .build());\n\n var cryptokey = new CryptoKey(\"cryptokey\", CryptoKeyArgs.builder()\n .name(\"crypto-key-example\")\n .keyRing(keyring.id())\n .rotationPeriod(\"7776000s\")\n .build());\n\n var myPassword = new SecretCiphertext(\"myPassword\", SecretCiphertextArgs.builder()\n .cryptoKey(cryptokey.id())\n .plaintext(\"my-secret-password\")\n .build());\n\n var instance = new Instance(\"instance\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .network(\"default\")\n .build())\n .name(\"my-instance\")\n .machineType(\"e2-medium\")\n .zone(\"us-central1-a\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(\"debian-cloud/debian-11\")\n .build())\n .build())\n .metadata(Map.of(\"password\", myPassword.ciphertext()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n keyring:\n type: gcp:kms:KeyRing\n properties:\n name: keyring-example\n location: global\n cryptokey:\n type: gcp:kms:CryptoKey\n properties:\n name: crypto-key-example\n keyRing: ${keyring.id}\n rotationPeriod: 7776000s\n myPassword:\n type: gcp:kms:SecretCiphertext\n name: my_password\n properties:\n cryptoKey: ${cryptokey.id}\n plaintext: my-secret-password\n instance:\n type: gcp:compute:Instance\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n network: default\n name: my-instance\n machineType: e2-medium\n zone: us-central1-a\n bootDisk:\n initializeParams:\n image: debian-cloud/debian-11\n metadata:\n password: ${myPassword.ciphertext}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource does not support import.\n\n", + "description": "Encrypts secret data with Google Cloud KMS and provides access to the ciphertext.\n\n\n\u003e **NOTE:** Using this resource will allow you to conceal secret data within your\nresource definitions, but it does not take care of protecting that data in the\nlogging output, plan output, or state output. Please take care to secure your secret\ndata outside of resource definitions.\n\n\nTo get more information about SecretCiphertext, see:\n\n* [API documentation](https://cloud.google.com/kms/docs/reference/rest/v1/projects.locations.keyRings.cryptoKeys/encrypt)\n* How-to Guides\n * [Encrypting and decrypting data with a symmetric key](https://cloud.google.com/kms/docs/encrypt-decrypt)\n\n\n\n## Example Usage\n\n### Kms Secret Ciphertext Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyring = new gcp.kms.KeyRing(\"keyring\", {\n name: \"keyring-example\",\n location: \"global\",\n});\nconst cryptokey = new gcp.kms.CryptoKey(\"cryptokey\", {\n name: \"crypto-key-example\",\n keyRing: keyring.id,\n rotationPeriod: \"7776000s\",\n});\nconst myPassword = new gcp.kms.SecretCiphertext(\"my_password\", {\n cryptoKey: cryptokey.id,\n plaintext: \"my-secret-password\",\n});\nconst instance = new gcp.compute.Instance(\"instance\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n network: \"default\",\n }],\n name: \"my-instance\",\n machineType: \"e2-medium\",\n zone: \"us-central1-a\",\n bootDisk: {\n initializeParams: {\n image: \"debian-cloud/debian-11\",\n },\n },\n metadata: {\n password: myPassword.ciphertext,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkeyring = gcp.kms.KeyRing(\"keyring\",\n name=\"keyring-example\",\n location=\"global\")\ncryptokey = gcp.kms.CryptoKey(\"cryptokey\",\n name=\"crypto-key-example\",\n key_ring=keyring.id,\n rotation_period=\"7776000s\")\nmy_password = gcp.kms.SecretCiphertext(\"my_password\",\n crypto_key=cryptokey.id,\n plaintext=\"my-secret-password\")\ninstance = gcp.compute.Instance(\"instance\",\n network_interfaces=[{\n \"access_configs\": [{}],\n \"network\": \"default\",\n }],\n name=\"my-instance\",\n machine_type=\"e2-medium\",\n zone=\"us-central1-a\",\n boot_disk={\n \"initialize_params\": {\n \"image\": \"debian-cloud/debian-11\",\n },\n },\n metadata={\n \"password\": my_password.ciphertext,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var keyring = new Gcp.Kms.KeyRing(\"keyring\", new()\n {\n Name = \"keyring-example\",\n Location = \"global\",\n });\n\n var cryptokey = new Gcp.Kms.CryptoKey(\"cryptokey\", new()\n {\n Name = \"crypto-key-example\",\n KeyRing = keyring.Id,\n RotationPeriod = \"7776000s\",\n });\n\n var myPassword = new Gcp.Kms.SecretCiphertext(\"my_password\", new()\n {\n CryptoKey = cryptokey.Id,\n Plaintext = \"my-secret-password\",\n });\n\n var instance = new Gcp.Compute.Instance(\"instance\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Network = \"default\",\n },\n },\n Name = \"my-instance\",\n MachineType = \"e2-medium\",\n Zone = \"us-central1-a\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = \"debian-cloud/debian-11\",\n },\n },\n Metadata = \n {\n { \"password\", myPassword.Ciphertext },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tkeyring, err := kms.NewKeyRing(ctx, \"keyring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"keyring-example\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptokey, err := kms.NewCryptoKey(ctx, \"cryptokey\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"crypto-key-example\"),\n\t\t\tKeyRing: keyring.ID(),\n\t\t\tRotationPeriod: pulumi.String(\"7776000s\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyPassword, err := kms.NewSecretCiphertext(ctx, \"my_password\", \u0026kms.SecretCiphertextArgs{\n\t\t\tCryptoKey: cryptokey.ID(),\n\t\t\tPlaintext: pulumi.String(\"my-secret-password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"instance\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tAccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{\n\t\t\t\t\t\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(\"my-instance\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(\"debian-cloud/debian-11\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\"password\": myPassword.Ciphertext,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.kms.SecretCiphertext;\nimport com.pulumi.gcp.kms.SecretCiphertextArgs;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var keyring = new KeyRing(\"keyring\", KeyRingArgs.builder()\n .name(\"keyring-example\")\n .location(\"global\")\n .build());\n\n var cryptokey = new CryptoKey(\"cryptokey\", CryptoKeyArgs.builder()\n .name(\"crypto-key-example\")\n .keyRing(keyring.id())\n .rotationPeriod(\"7776000s\")\n .build());\n\n var myPassword = new SecretCiphertext(\"myPassword\", SecretCiphertextArgs.builder()\n .cryptoKey(cryptokey.id())\n .plaintext(\"my-secret-password\")\n .build());\n\n var instance = new Instance(\"instance\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .network(\"default\")\n .build())\n .name(\"my-instance\")\n .machineType(\"e2-medium\")\n .zone(\"us-central1-a\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(\"debian-cloud/debian-11\")\n .build())\n .build())\n .metadata(Map.of(\"password\", myPassword.ciphertext()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n keyring:\n type: gcp:kms:KeyRing\n properties:\n name: keyring-example\n location: global\n cryptokey:\n type: gcp:kms:CryptoKey\n properties:\n name: crypto-key-example\n keyRing: ${keyring.id}\n rotationPeriod: 7776000s\n myPassword:\n type: gcp:kms:SecretCiphertext\n name: my_password\n properties:\n cryptoKey: ${cryptokey.id}\n plaintext: my-secret-password\n instance:\n type: gcp:compute:Instance\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n network: default\n name: my-instance\n machineType: e2-medium\n zone: us-central1-a\n bootDisk:\n initializeParams:\n image: debian-cloud/debian-11\n metadata:\n password: ${myPassword.ciphertext}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource does not support import.\n\n", "properties": { "additionalAuthenticatedData": { "type": "string", @@ -218458,7 +218458,7 @@ } }, "gcp:looker/instance:Instance": { - "description": "A Google Cloud Looker instance.\n\n\nTo get more information about Instance, see:\n\n* [API documentation](https://cloud.google.com/looker/docs/reference/rest/v1/projects.locations.instances)\n* How-to Guides\n * [Configure a Looker (Google Cloud core) instance](https://cloud.google.com/looker/docs/looker-core-instance-setup)\n * [Create a Looker (Google Cloud core) instance](https://cloud.google.com/looker/docs/looker-core-instance-create)\n\n## Example Usage\n\n### Looker Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst looker_instance = new gcp.looker.Instance(\"looker-instance\", {\n name: \"my-instance\",\n platformEdition: \"LOOKER_CORE_STANDARD_ANNUAL\",\n region: \"us-central1\",\n oauthConfig: {\n clientId: \"my-client-id\",\n clientSecret: \"my-client-secret\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nlooker_instance = gcp.looker.Instance(\"looker-instance\",\n name=\"my-instance\",\n platform_edition=\"LOOKER_CORE_STANDARD_ANNUAL\",\n region=\"us-central1\",\n oauth_config={\n \"client_id\": \"my-client-id\",\n \"client_secret\": \"my-client-secret\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var looker_instance = new Gcp.Looker.Instance(\"looker-instance\", new()\n {\n Name = \"my-instance\",\n PlatformEdition = \"LOOKER_CORE_STANDARD_ANNUAL\",\n Region = \"us-central1\",\n OauthConfig = new Gcp.Looker.Inputs.InstanceOauthConfigArgs\n {\n ClientId = \"my-client-id\",\n ClientSecret = \"my-client-secret\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/looker\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := looker.NewInstance(ctx, \"looker-instance\", \u0026looker.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tPlatformEdition: pulumi.String(\"LOOKER_CORE_STANDARD_ANNUAL\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tOauthConfig: \u0026looker.InstanceOauthConfigArgs{\n\t\t\t\tClientId: pulumi.String(\"my-client-id\"),\n\t\t\t\tClientSecret: pulumi.String(\"my-client-secret\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.looker.Instance;\nimport com.pulumi.gcp.looker.InstanceArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceOauthConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var looker_instance = new Instance(\"looker-instance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .platformEdition(\"LOOKER_CORE_STANDARD_ANNUAL\")\n .region(\"us-central1\")\n .oauthConfig(InstanceOauthConfigArgs.builder()\n .clientId(\"my-client-id\")\n .clientSecret(\"my-client-secret\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n looker-instance:\n type: gcp:looker:Instance\n properties:\n name: my-instance\n platformEdition: LOOKER_CORE_STANDARD_ANNUAL\n region: us-central1\n oauthConfig:\n clientId: my-client-id\n clientSecret: my-client-secret\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Looker Instance Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst looker_instance = new gcp.looker.Instance(\"looker-instance\", {\n name: \"my-instance\",\n platformEdition: \"LOOKER_CORE_STANDARD_ANNUAL\",\n region: \"us-central1\",\n publicIpEnabled: true,\n adminSettings: {\n allowedEmailDomains: [\"google.com\"],\n },\n maintenanceWindow: {\n dayOfWeek: \"THURSDAY\",\n startTime: {\n hours: 22,\n minutes: 0,\n seconds: 0,\n nanos: 0,\n },\n },\n denyMaintenancePeriod: {\n startDate: {\n year: 2050,\n month: 1,\n day: 1,\n },\n endDate: {\n year: 2050,\n month: 2,\n day: 1,\n },\n time: {\n hours: 10,\n minutes: 0,\n seconds: 0,\n nanos: 0,\n },\n },\n oauthConfig: {\n clientId: \"my-client-id\",\n clientSecret: \"my-client-secret\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nlooker_instance = gcp.looker.Instance(\"looker-instance\",\n name=\"my-instance\",\n platform_edition=\"LOOKER_CORE_STANDARD_ANNUAL\",\n region=\"us-central1\",\n public_ip_enabled=True,\n admin_settings={\n \"allowed_email_domains\": [\"google.com\"],\n },\n maintenance_window={\n \"day_of_week\": \"THURSDAY\",\n \"start_time\": {\n \"hours\": 22,\n \"minutes\": 0,\n \"seconds\": 0,\n \"nanos\": 0,\n },\n },\n deny_maintenance_period={\n \"start_date\": {\n \"year\": 2050,\n \"month\": 1,\n \"day\": 1,\n },\n \"end_date\": {\n \"year\": 2050,\n \"month\": 2,\n \"day\": 1,\n },\n \"time\": {\n \"hours\": 10,\n \"minutes\": 0,\n \"seconds\": 0,\n \"nanos\": 0,\n },\n },\n oauth_config={\n \"client_id\": \"my-client-id\",\n \"client_secret\": \"my-client-secret\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var looker_instance = new Gcp.Looker.Instance(\"looker-instance\", new()\n {\n Name = \"my-instance\",\n PlatformEdition = \"LOOKER_CORE_STANDARD_ANNUAL\",\n Region = \"us-central1\",\n PublicIpEnabled = true,\n AdminSettings = new Gcp.Looker.Inputs.InstanceAdminSettingsArgs\n {\n AllowedEmailDomains = new[]\n {\n \"google.com\",\n },\n },\n MaintenanceWindow = new Gcp.Looker.Inputs.InstanceMaintenanceWindowArgs\n {\n DayOfWeek = \"THURSDAY\",\n StartTime = new Gcp.Looker.Inputs.InstanceMaintenanceWindowStartTimeArgs\n {\n Hours = 22,\n Minutes = 0,\n Seconds = 0,\n Nanos = 0,\n },\n },\n DenyMaintenancePeriod = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodArgs\n {\n StartDate = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodStartDateArgs\n {\n Year = 2050,\n Month = 1,\n Day = 1,\n },\n EndDate = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodEndDateArgs\n {\n Year = 2050,\n Month = 2,\n Day = 1,\n },\n Time = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodTimeArgs\n {\n Hours = 10,\n Minutes = 0,\n Seconds = 0,\n Nanos = 0,\n },\n },\n OauthConfig = new Gcp.Looker.Inputs.InstanceOauthConfigArgs\n {\n ClientId = \"my-client-id\",\n ClientSecret = \"my-client-secret\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/looker\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := looker.NewInstance(ctx, \"looker-instance\", \u0026looker.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tPlatformEdition: pulumi.String(\"LOOKER_CORE_STANDARD_ANNUAL\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPublicIpEnabled: pulumi.Bool(true),\n\t\t\tAdminSettings: \u0026looker.InstanceAdminSettingsArgs{\n\t\t\t\tAllowedEmailDomains: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"google.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMaintenanceWindow: \u0026looker.InstanceMaintenanceWindowArgs{\n\t\t\t\tDayOfWeek: pulumi.String(\"THURSDAY\"),\n\t\t\t\tStartTime: \u0026looker.InstanceMaintenanceWindowStartTimeArgs{\n\t\t\t\t\tHours: pulumi.Int(22),\n\t\t\t\t\tMinutes: pulumi.Int(0),\n\t\t\t\t\tSeconds: pulumi.Int(0),\n\t\t\t\t\tNanos: pulumi.Int(0),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDenyMaintenancePeriod: \u0026looker.InstanceDenyMaintenancePeriodArgs{\n\t\t\t\tStartDate: \u0026looker.InstanceDenyMaintenancePeriodStartDateArgs{\n\t\t\t\t\tYear: pulumi.Int(2050),\n\t\t\t\t\tMonth: pulumi.Int(1),\n\t\t\t\t\tDay: pulumi.Int(1),\n\t\t\t\t},\n\t\t\t\tEndDate: \u0026looker.InstanceDenyMaintenancePeriodEndDateArgs{\n\t\t\t\t\tYear: pulumi.Int(2050),\n\t\t\t\t\tMonth: pulumi.Int(2),\n\t\t\t\t\tDay: pulumi.Int(1),\n\t\t\t\t},\n\t\t\t\tTime: \u0026looker.InstanceDenyMaintenancePeriodTimeArgs{\n\t\t\t\t\tHours: pulumi.Int(10),\n\t\t\t\t\tMinutes: pulumi.Int(0),\n\t\t\t\t\tSeconds: pulumi.Int(0),\n\t\t\t\t\tNanos: pulumi.Int(0),\n\t\t\t\t},\n\t\t\t},\n\t\t\tOauthConfig: \u0026looker.InstanceOauthConfigArgs{\n\t\t\t\tClientId: pulumi.String(\"my-client-id\"),\n\t\t\t\tClientSecret: pulumi.String(\"my-client-secret\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.looker.Instance;\nimport com.pulumi.gcp.looker.InstanceArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceAdminSettingsArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceMaintenanceWindowArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceMaintenanceWindowStartTimeArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodStartDateArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodEndDateArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodTimeArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceOauthConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var looker_instance = new Instance(\"looker-instance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .platformEdition(\"LOOKER_CORE_STANDARD_ANNUAL\")\n .region(\"us-central1\")\n .publicIpEnabled(true)\n .adminSettings(InstanceAdminSettingsArgs.builder()\n .allowedEmailDomains(\"google.com\")\n .build())\n .maintenanceWindow(InstanceMaintenanceWindowArgs.builder()\n .dayOfWeek(\"THURSDAY\")\n .startTime(InstanceMaintenanceWindowStartTimeArgs.builder()\n .hours(22)\n .minutes(0)\n .seconds(0)\n .nanos(0)\n .build())\n .build())\n .denyMaintenancePeriod(InstanceDenyMaintenancePeriodArgs.builder()\n .startDate(InstanceDenyMaintenancePeriodStartDateArgs.builder()\n .year(2050)\n .month(1)\n .day(1)\n .build())\n .endDate(InstanceDenyMaintenancePeriodEndDateArgs.builder()\n .year(2050)\n .month(2)\n .day(1)\n .build())\n .time(InstanceDenyMaintenancePeriodTimeArgs.builder()\n .hours(10)\n .minutes(0)\n .seconds(0)\n .nanos(0)\n .build())\n .build())\n .oauthConfig(InstanceOauthConfigArgs.builder()\n .clientId(\"my-client-id\")\n .clientSecret(\"my-client-secret\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n looker-instance:\n type: gcp:looker:Instance\n properties:\n name: my-instance\n platformEdition: LOOKER_CORE_STANDARD_ANNUAL\n region: us-central1\n publicIpEnabled: true\n adminSettings:\n allowedEmailDomains:\n - google.com\n maintenanceWindow:\n dayOfWeek: THURSDAY\n startTime:\n hours: 22\n minutes: 0\n seconds: 0\n nanos: 0\n denyMaintenancePeriod:\n startDate:\n year: 2050\n month: 1\n day: 1\n endDate:\n year: 2050\n month: 2\n day: 1\n time:\n hours: 10\n minutes: 0\n seconds: 0\n nanos: 0\n oauthConfig:\n clientId: my-client-id\n clientSecret: my-client-secret\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Looker Instance Fips\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst looker_instance = new gcp.looker.Instance(\"looker-instance\", {\n name: \"my-instance-fips\",\n platformEdition: \"LOOKER_CORE_ENTERPRISE_ANNUAL\",\n region: \"us-central1\",\n publicIpEnabled: true,\n fipsEnabled: true,\n oauthConfig: {\n clientId: \"my-client-id\",\n clientSecret: \"my-client-secret\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nlooker_instance = gcp.looker.Instance(\"looker-instance\",\n name=\"my-instance-fips\",\n platform_edition=\"LOOKER_CORE_ENTERPRISE_ANNUAL\",\n region=\"us-central1\",\n public_ip_enabled=True,\n fips_enabled=True,\n oauth_config={\n \"client_id\": \"my-client-id\",\n \"client_secret\": \"my-client-secret\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var looker_instance = new Gcp.Looker.Instance(\"looker-instance\", new()\n {\n Name = \"my-instance-fips\",\n PlatformEdition = \"LOOKER_CORE_ENTERPRISE_ANNUAL\",\n Region = \"us-central1\",\n PublicIpEnabled = true,\n FipsEnabled = true,\n OauthConfig = new Gcp.Looker.Inputs.InstanceOauthConfigArgs\n {\n ClientId = \"my-client-id\",\n ClientSecret = \"my-client-secret\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/looker\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := looker.NewInstance(ctx, \"looker-instance\", \u0026looker.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance-fips\"),\n\t\t\tPlatformEdition: pulumi.String(\"LOOKER_CORE_ENTERPRISE_ANNUAL\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPublicIpEnabled: pulumi.Bool(true),\n\t\t\tFipsEnabled: pulumi.Bool(true),\n\t\t\tOauthConfig: \u0026looker.InstanceOauthConfigArgs{\n\t\t\t\tClientId: pulumi.String(\"my-client-id\"),\n\t\t\t\tClientSecret: pulumi.String(\"my-client-secret\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.looker.Instance;\nimport com.pulumi.gcp.looker.InstanceArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceOauthConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var looker_instance = new Instance(\"looker-instance\", InstanceArgs.builder()\n .name(\"my-instance-fips\")\n .platformEdition(\"LOOKER_CORE_ENTERPRISE_ANNUAL\")\n .region(\"us-central1\")\n .publicIpEnabled(true)\n .fipsEnabled(true)\n .oauthConfig(InstanceOauthConfigArgs.builder()\n .clientId(\"my-client-id\")\n .clientSecret(\"my-client-secret\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n looker-instance:\n type: gcp:looker:Instance\n properties:\n name: my-instance-fips\n platformEdition: LOOKER_CORE_ENTERPRISE_ANNUAL\n region: us-central1\n publicIpEnabled: true\n fipsEnabled: true\n oauthConfig:\n clientId: my-client-id\n clientSecret: my-client-secret\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Looker Instance Enterprise Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst lookerNetwork = new gcp.compute.Network(\"looker_network\", {name: \"looker-network\"});\nconst lookerRange = new gcp.compute.GlobalAddress(\"looker_range\", {\n name: \"looker-range\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 20,\n network: lookerNetwork.id,\n});\nconst lookerVpcConnection = new gcp.servicenetworking.Connection(\"looker_vpc_connection\", {\n network: lookerNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [lookerRange.name],\n});\nconst looker_instance = new gcp.looker.Instance(\"looker-instance\", {\n name: \"my-instance\",\n platformEdition: \"LOOKER_CORE_ENTERPRISE_ANNUAL\",\n region: \"us-central1\",\n privateIpEnabled: true,\n publicIpEnabled: false,\n reservedRange: lookerRange.name,\n consumerNetwork: lookerNetwork.id,\n adminSettings: {\n allowedEmailDomains: [\"google.com\"],\n },\n encryptionConfig: {\n kmsKeyName: \"looker-kms-key\",\n },\n maintenanceWindow: {\n dayOfWeek: \"THURSDAY\",\n startTime: {\n hours: 22,\n minutes: 0,\n seconds: 0,\n nanos: 0,\n },\n },\n denyMaintenancePeriod: {\n startDate: {\n year: 2050,\n month: 1,\n day: 1,\n },\n endDate: {\n year: 2050,\n month: 2,\n day: 1,\n },\n time: {\n hours: 10,\n minutes: 0,\n seconds: 0,\n nanos: 0,\n },\n },\n oauthConfig: {\n clientId: \"my-client-id\",\n clientSecret: \"my-client-secret\",\n },\n}, {\n dependsOn: [lookerVpcConnection],\n});\nconst project = gcp.organizations.getProject({});\nconst cryptoKey = new gcp.kms.CryptoKeyIAMMember(\"crypto_key\", {\n cryptoKeyId: \"looker-kms-key\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-looker.iam.gserviceaccount.com`),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nlooker_network = gcp.compute.Network(\"looker_network\", name=\"looker-network\")\nlooker_range = gcp.compute.GlobalAddress(\"looker_range\",\n name=\"looker-range\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=20,\n network=looker_network.id)\nlooker_vpc_connection = gcp.servicenetworking.Connection(\"looker_vpc_connection\",\n network=looker_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[looker_range.name])\nlooker_instance = gcp.looker.Instance(\"looker-instance\",\n name=\"my-instance\",\n platform_edition=\"LOOKER_CORE_ENTERPRISE_ANNUAL\",\n region=\"us-central1\",\n private_ip_enabled=True,\n public_ip_enabled=False,\n reserved_range=looker_range.name,\n consumer_network=looker_network.id,\n admin_settings={\n \"allowed_email_domains\": [\"google.com\"],\n },\n encryption_config={\n \"kms_key_name\": \"looker-kms-key\",\n },\n maintenance_window={\n \"day_of_week\": \"THURSDAY\",\n \"start_time\": {\n \"hours\": 22,\n \"minutes\": 0,\n \"seconds\": 0,\n \"nanos\": 0,\n },\n },\n deny_maintenance_period={\n \"start_date\": {\n \"year\": 2050,\n \"month\": 1,\n \"day\": 1,\n },\n \"end_date\": {\n \"year\": 2050,\n \"month\": 2,\n \"day\": 1,\n },\n \"time\": {\n \"hours\": 10,\n \"minutes\": 0,\n \"seconds\": 0,\n \"nanos\": 0,\n },\n },\n oauth_config={\n \"client_id\": \"my-client-id\",\n \"client_secret\": \"my-client-secret\",\n },\n opts = pulumi.ResourceOptions(depends_on=[looker_vpc_connection]))\nproject = gcp.organizations.get_project()\ncrypto_key = gcp.kms.CryptoKeyIAMMember(\"crypto_key\",\n crypto_key_id=\"looker-kms-key\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-looker.iam.gserviceaccount.com\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var lookerNetwork = new Gcp.Compute.Network(\"looker_network\", new()\n {\n Name = \"looker-network\",\n });\n\n var lookerRange = new Gcp.Compute.GlobalAddress(\"looker_range\", new()\n {\n Name = \"looker-range\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 20,\n Network = lookerNetwork.Id,\n });\n\n var lookerVpcConnection = new Gcp.ServiceNetworking.Connection(\"looker_vpc_connection\", new()\n {\n Network = lookerNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n lookerRange.Name,\n },\n });\n\n var looker_instance = new Gcp.Looker.Instance(\"looker-instance\", new()\n {\n Name = \"my-instance\",\n PlatformEdition = \"LOOKER_CORE_ENTERPRISE_ANNUAL\",\n Region = \"us-central1\",\n PrivateIpEnabled = true,\n PublicIpEnabled = false,\n ReservedRange = lookerRange.Name,\n ConsumerNetwork = lookerNetwork.Id,\n AdminSettings = new Gcp.Looker.Inputs.InstanceAdminSettingsArgs\n {\n AllowedEmailDomains = new[]\n {\n \"google.com\",\n },\n },\n EncryptionConfig = new Gcp.Looker.Inputs.InstanceEncryptionConfigArgs\n {\n KmsKeyName = \"looker-kms-key\",\n },\n MaintenanceWindow = new Gcp.Looker.Inputs.InstanceMaintenanceWindowArgs\n {\n DayOfWeek = \"THURSDAY\",\n StartTime = new Gcp.Looker.Inputs.InstanceMaintenanceWindowStartTimeArgs\n {\n Hours = 22,\n Minutes = 0,\n Seconds = 0,\n Nanos = 0,\n },\n },\n DenyMaintenancePeriod = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodArgs\n {\n StartDate = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodStartDateArgs\n {\n Year = 2050,\n Month = 1,\n Day = 1,\n },\n EndDate = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodEndDateArgs\n {\n Year = 2050,\n Month = 2,\n Day = 1,\n },\n Time = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodTimeArgs\n {\n Hours = 10,\n Minutes = 0,\n Seconds = 0,\n Nanos = 0,\n },\n },\n OauthConfig = new Gcp.Looker.Inputs.InstanceOauthConfigArgs\n {\n ClientId = \"my-client-id\",\n ClientSecret = \"my-client-secret\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n lookerVpcConnection,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cryptoKey = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key\", new()\n {\n CryptoKeyId = \"looker-kms-key\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-looker.iam.gserviceaccount.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/looker\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tlookerNetwork, err := compute.NewNetwork(ctx, \"looker_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"looker-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlookerRange, err := compute.NewGlobalAddress(ctx, \"looker_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"looker-range\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(20),\n\t\t\tNetwork: lookerNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlookerVpcConnection, err := servicenetworking.NewConnection(ctx, \"looker_vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: lookerNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tlookerRange.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = looker.NewInstance(ctx, \"looker-instance\", \u0026looker.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tPlatformEdition: pulumi.String(\"LOOKER_CORE_ENTERPRISE_ANNUAL\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPrivateIpEnabled: pulumi.Bool(true),\n\t\t\tPublicIpEnabled: pulumi.Bool(false),\n\t\t\tReservedRange: lookerRange.Name,\n\t\t\tConsumerNetwork: lookerNetwork.ID(),\n\t\t\tAdminSettings: \u0026looker.InstanceAdminSettingsArgs{\n\t\t\t\tAllowedEmailDomains: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"google.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEncryptionConfig: \u0026looker.InstanceEncryptionConfigArgs{\n\t\t\t\tKmsKeyName: pulumi.String(\"looker-kms-key\"),\n\t\t\t},\n\t\t\tMaintenanceWindow: \u0026looker.InstanceMaintenanceWindowArgs{\n\t\t\t\tDayOfWeek: pulumi.String(\"THURSDAY\"),\n\t\t\t\tStartTime: \u0026looker.InstanceMaintenanceWindowStartTimeArgs{\n\t\t\t\t\tHours: pulumi.Int(22),\n\t\t\t\t\tMinutes: pulumi.Int(0),\n\t\t\t\t\tSeconds: pulumi.Int(0),\n\t\t\t\t\tNanos: pulumi.Int(0),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDenyMaintenancePeriod: \u0026looker.InstanceDenyMaintenancePeriodArgs{\n\t\t\t\tStartDate: \u0026looker.InstanceDenyMaintenancePeriodStartDateArgs{\n\t\t\t\t\tYear: pulumi.Int(2050),\n\t\t\t\t\tMonth: pulumi.Int(1),\n\t\t\t\t\tDay: pulumi.Int(1),\n\t\t\t\t},\n\t\t\t\tEndDate: \u0026looker.InstanceDenyMaintenancePeriodEndDateArgs{\n\t\t\t\t\tYear: pulumi.Int(2050),\n\t\t\t\t\tMonth: pulumi.Int(2),\n\t\t\t\t\tDay: pulumi.Int(1),\n\t\t\t\t},\n\t\t\t\tTime: \u0026looker.InstanceDenyMaintenancePeriodTimeArgs{\n\t\t\t\t\tHours: pulumi.Int(10),\n\t\t\t\t\tMinutes: pulumi.Int(0),\n\t\t\t\t\tSeconds: pulumi.Int(0),\n\t\t\t\t\tNanos: pulumi.Int(0),\n\t\t\t\t},\n\t\t\t},\n\t\t\tOauthConfig: \u0026looker.InstanceOauthConfigArgs{\n\t\t\t\tClientId: pulumi.String(\"my-client-id\"),\n\t\t\t\tClientSecret: pulumi.String(\"my-client-secret\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tlookerVpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kms.NewCryptoKeyIAMMember(ctx, \"crypto_key\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"looker-kms-key\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-looker.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.looker.Instance;\nimport com.pulumi.gcp.looker.InstanceArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceAdminSettingsArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceEncryptionConfigArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceMaintenanceWindowArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceMaintenanceWindowStartTimeArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodStartDateArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodEndDateArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodTimeArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceOauthConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var lookerNetwork = new Network(\"lookerNetwork\", NetworkArgs.builder()\n .name(\"looker-network\")\n .build());\n\n var lookerRange = new GlobalAddress(\"lookerRange\", GlobalAddressArgs.builder()\n .name(\"looker-range\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(20)\n .network(lookerNetwork.id())\n .build());\n\n var lookerVpcConnection = new Connection(\"lookerVpcConnection\", ConnectionArgs.builder()\n .network(lookerNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(lookerRange.name())\n .build());\n\n var looker_instance = new Instance(\"looker-instance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .platformEdition(\"LOOKER_CORE_ENTERPRISE_ANNUAL\")\n .region(\"us-central1\")\n .privateIpEnabled(true)\n .publicIpEnabled(false)\n .reservedRange(lookerRange.name())\n .consumerNetwork(lookerNetwork.id())\n .adminSettings(InstanceAdminSettingsArgs.builder()\n .allowedEmailDomains(\"google.com\")\n .build())\n .encryptionConfig(InstanceEncryptionConfigArgs.builder()\n .kmsKeyName(\"looker-kms-key\")\n .build())\n .maintenanceWindow(InstanceMaintenanceWindowArgs.builder()\n .dayOfWeek(\"THURSDAY\")\n .startTime(InstanceMaintenanceWindowStartTimeArgs.builder()\n .hours(22)\n .minutes(0)\n .seconds(0)\n .nanos(0)\n .build())\n .build())\n .denyMaintenancePeriod(InstanceDenyMaintenancePeriodArgs.builder()\n .startDate(InstanceDenyMaintenancePeriodStartDateArgs.builder()\n .year(2050)\n .month(1)\n .day(1)\n .build())\n .endDate(InstanceDenyMaintenancePeriodEndDateArgs.builder()\n .year(2050)\n .month(2)\n .day(1)\n .build())\n .time(InstanceDenyMaintenancePeriodTimeArgs.builder()\n .hours(10)\n .minutes(0)\n .seconds(0)\n .nanos(0)\n .build())\n .build())\n .oauthConfig(InstanceOauthConfigArgs.builder()\n .clientId(\"my-client-id\")\n .clientSecret(\"my-client-secret\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(lookerVpcConnection)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var cryptoKey = new CryptoKeyIAMMember(\"cryptoKey\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(\"looker-kms-key\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-looker.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n looker-instance:\n type: gcp:looker:Instance\n properties:\n name: my-instance\n platformEdition: LOOKER_CORE_ENTERPRISE_ANNUAL\n region: us-central1\n privateIpEnabled: true\n publicIpEnabled: false\n reservedRange: ${lookerRange.name}\n consumerNetwork: ${lookerNetwork.id}\n adminSettings:\n allowedEmailDomains:\n - google.com\n encryptionConfig:\n kmsKeyName: looker-kms-key\n maintenanceWindow:\n dayOfWeek: THURSDAY\n startTime:\n hours: 22\n minutes: 0\n seconds: 0\n nanos: 0\n denyMaintenancePeriod:\n startDate:\n year: 2050\n month: 1\n day: 1\n endDate:\n year: 2050\n month: 2\n day: 1\n time:\n hours: 10\n minutes: 0\n seconds: 0\n nanos: 0\n oauthConfig:\n clientId: my-client-id\n clientSecret: my-client-secret\n options:\n dependson:\n - ${lookerVpcConnection}\n lookerVpcConnection:\n type: gcp:servicenetworking:Connection\n name: looker_vpc_connection\n properties:\n network: ${lookerNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${lookerRange.name}\n lookerRange:\n type: gcp:compute:GlobalAddress\n name: looker_range\n properties:\n name: looker-range\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 20\n network: ${lookerNetwork.id}\n lookerNetwork:\n type: gcp:compute:Network\n name: looker_network\n properties:\n name: looker-network\n cryptoKey:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key\n properties:\n cryptoKeyId: looker-kms-key\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-looker.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Looker Instance Custom Domain\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst looker_instance = new gcp.looker.Instance(\"looker-instance\", {\n name: \"my-instance\",\n platformEdition: \"LOOKER_CORE_STANDARD_ANNUAL\",\n region: \"us-central1\",\n oauthConfig: {\n clientId: \"my-client-id\",\n clientSecret: \"my-client-secret\",\n },\n customDomain: {\n domain: \"my-custom-domain.com\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nlooker_instance = gcp.looker.Instance(\"looker-instance\",\n name=\"my-instance\",\n platform_edition=\"LOOKER_CORE_STANDARD_ANNUAL\",\n region=\"us-central1\",\n oauth_config={\n \"client_id\": \"my-client-id\",\n \"client_secret\": \"my-client-secret\",\n },\n custom_domain={\n \"domain\": \"my-custom-domain.com\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var looker_instance = new Gcp.Looker.Instance(\"looker-instance\", new()\n {\n Name = \"my-instance\",\n PlatformEdition = \"LOOKER_CORE_STANDARD_ANNUAL\",\n Region = \"us-central1\",\n OauthConfig = new Gcp.Looker.Inputs.InstanceOauthConfigArgs\n {\n ClientId = \"my-client-id\",\n ClientSecret = \"my-client-secret\",\n },\n CustomDomain = new Gcp.Looker.Inputs.InstanceCustomDomainArgs\n {\n Domain = \"my-custom-domain.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/looker\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := looker.NewInstance(ctx, \"looker-instance\", \u0026looker.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tPlatformEdition: pulumi.String(\"LOOKER_CORE_STANDARD_ANNUAL\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tOauthConfig: \u0026looker.InstanceOauthConfigArgs{\n\t\t\t\tClientId: pulumi.String(\"my-client-id\"),\n\t\t\t\tClientSecret: pulumi.String(\"my-client-secret\"),\n\t\t\t},\n\t\t\tCustomDomain: \u0026looker.InstanceCustomDomainArgs{\n\t\t\t\tDomain: pulumi.String(\"my-custom-domain.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.looker.Instance;\nimport com.pulumi.gcp.looker.InstanceArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceOauthConfigArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceCustomDomainArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var looker_instance = new Instance(\"looker-instance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .platformEdition(\"LOOKER_CORE_STANDARD_ANNUAL\")\n .region(\"us-central1\")\n .oauthConfig(InstanceOauthConfigArgs.builder()\n .clientId(\"my-client-id\")\n .clientSecret(\"my-client-secret\")\n .build())\n .customDomain(InstanceCustomDomainArgs.builder()\n .domain(\"my-custom-domain.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n looker-instance:\n type: gcp:looker:Instance\n properties:\n name: my-instance\n platformEdition: LOOKER_CORE_STANDARD_ANNUAL\n region: us-central1\n oauthConfig:\n clientId: my-client-id\n clientSecret: my-client-secret\n customDomain:\n domain: my-custom-domain.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/instances/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:looker/instance:Instance default projects/{{project}}/locations/{{region}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:looker/instance:Instance default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:looker/instance:Instance default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:looker/instance:Instance default {{name}}\n```\n\n", + "description": "A Google Cloud Looker instance.\n\n\nTo get more information about Instance, see:\n\n* [API documentation](https://cloud.google.com/looker/docs/reference/rest/v1/projects.locations.instances)\n* How-to Guides\n * [Configure a Looker (Google Cloud core) instance](https://cloud.google.com/looker/docs/looker-core-instance-setup)\n * [Create a Looker (Google Cloud core) instance](https://cloud.google.com/looker/docs/looker-core-instance-create)\n\n## Example Usage\n\n### Looker Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst looker_instance = new gcp.looker.Instance(\"looker-instance\", {\n name: \"my-instance\",\n platformEdition: \"LOOKER_CORE_STANDARD_ANNUAL\",\n region: \"us-central1\",\n oauthConfig: {\n clientId: \"my-client-id\",\n clientSecret: \"my-client-secret\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nlooker_instance = gcp.looker.Instance(\"looker-instance\",\n name=\"my-instance\",\n platform_edition=\"LOOKER_CORE_STANDARD_ANNUAL\",\n region=\"us-central1\",\n oauth_config={\n \"client_id\": \"my-client-id\",\n \"client_secret\": \"my-client-secret\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var looker_instance = new Gcp.Looker.Instance(\"looker-instance\", new()\n {\n Name = \"my-instance\",\n PlatformEdition = \"LOOKER_CORE_STANDARD_ANNUAL\",\n Region = \"us-central1\",\n OauthConfig = new Gcp.Looker.Inputs.InstanceOauthConfigArgs\n {\n ClientId = \"my-client-id\",\n ClientSecret = \"my-client-secret\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/looker\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := looker.NewInstance(ctx, \"looker-instance\", \u0026looker.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tPlatformEdition: pulumi.String(\"LOOKER_CORE_STANDARD_ANNUAL\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tOauthConfig: \u0026looker.InstanceOauthConfigArgs{\n\t\t\t\tClientId: pulumi.String(\"my-client-id\"),\n\t\t\t\tClientSecret: pulumi.String(\"my-client-secret\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.looker.Instance;\nimport com.pulumi.gcp.looker.InstanceArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceOauthConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var looker_instance = new Instance(\"looker-instance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .platformEdition(\"LOOKER_CORE_STANDARD_ANNUAL\")\n .region(\"us-central1\")\n .oauthConfig(InstanceOauthConfigArgs.builder()\n .clientId(\"my-client-id\")\n .clientSecret(\"my-client-secret\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n looker-instance:\n type: gcp:looker:Instance\n properties:\n name: my-instance\n platformEdition: LOOKER_CORE_STANDARD_ANNUAL\n region: us-central1\n oauthConfig:\n clientId: my-client-id\n clientSecret: my-client-secret\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Looker Instance Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst looker_instance = new gcp.looker.Instance(\"looker-instance\", {\n name: \"my-instance\",\n platformEdition: \"LOOKER_CORE_STANDARD_ANNUAL\",\n region: \"us-central1\",\n publicIpEnabled: true,\n adminSettings: {\n allowedEmailDomains: [\"google.com\"],\n },\n maintenanceWindow: {\n dayOfWeek: \"THURSDAY\",\n startTime: {\n hours: 22,\n minutes: 0,\n seconds: 0,\n nanos: 0,\n },\n },\n denyMaintenancePeriod: {\n startDate: {\n year: 2050,\n month: 1,\n day: 1,\n },\n endDate: {\n year: 2050,\n month: 2,\n day: 1,\n },\n time: {\n hours: 10,\n minutes: 0,\n seconds: 0,\n nanos: 0,\n },\n },\n oauthConfig: {\n clientId: \"my-client-id\",\n clientSecret: \"my-client-secret\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nlooker_instance = gcp.looker.Instance(\"looker-instance\",\n name=\"my-instance\",\n platform_edition=\"LOOKER_CORE_STANDARD_ANNUAL\",\n region=\"us-central1\",\n public_ip_enabled=True,\n admin_settings={\n \"allowed_email_domains\": [\"google.com\"],\n },\n maintenance_window={\n \"day_of_week\": \"THURSDAY\",\n \"start_time\": {\n \"hours\": 22,\n \"minutes\": 0,\n \"seconds\": 0,\n \"nanos\": 0,\n },\n },\n deny_maintenance_period={\n \"start_date\": {\n \"year\": 2050,\n \"month\": 1,\n \"day\": 1,\n },\n \"end_date\": {\n \"year\": 2050,\n \"month\": 2,\n \"day\": 1,\n },\n \"time\": {\n \"hours\": 10,\n \"minutes\": 0,\n \"seconds\": 0,\n \"nanos\": 0,\n },\n },\n oauth_config={\n \"client_id\": \"my-client-id\",\n \"client_secret\": \"my-client-secret\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var looker_instance = new Gcp.Looker.Instance(\"looker-instance\", new()\n {\n Name = \"my-instance\",\n PlatformEdition = \"LOOKER_CORE_STANDARD_ANNUAL\",\n Region = \"us-central1\",\n PublicIpEnabled = true,\n AdminSettings = new Gcp.Looker.Inputs.InstanceAdminSettingsArgs\n {\n AllowedEmailDomains = new[]\n {\n \"google.com\",\n },\n },\n MaintenanceWindow = new Gcp.Looker.Inputs.InstanceMaintenanceWindowArgs\n {\n DayOfWeek = \"THURSDAY\",\n StartTime = new Gcp.Looker.Inputs.InstanceMaintenanceWindowStartTimeArgs\n {\n Hours = 22,\n Minutes = 0,\n Seconds = 0,\n Nanos = 0,\n },\n },\n DenyMaintenancePeriod = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodArgs\n {\n StartDate = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodStartDateArgs\n {\n Year = 2050,\n Month = 1,\n Day = 1,\n },\n EndDate = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodEndDateArgs\n {\n Year = 2050,\n Month = 2,\n Day = 1,\n },\n Time = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodTimeArgs\n {\n Hours = 10,\n Minutes = 0,\n Seconds = 0,\n Nanos = 0,\n },\n },\n OauthConfig = new Gcp.Looker.Inputs.InstanceOauthConfigArgs\n {\n ClientId = \"my-client-id\",\n ClientSecret = \"my-client-secret\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/looker\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := looker.NewInstance(ctx, \"looker-instance\", \u0026looker.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tPlatformEdition: pulumi.String(\"LOOKER_CORE_STANDARD_ANNUAL\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPublicIpEnabled: pulumi.Bool(true),\n\t\t\tAdminSettings: \u0026looker.InstanceAdminSettingsArgs{\n\t\t\t\tAllowedEmailDomains: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"google.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMaintenanceWindow: \u0026looker.InstanceMaintenanceWindowArgs{\n\t\t\t\tDayOfWeek: pulumi.String(\"THURSDAY\"),\n\t\t\t\tStartTime: \u0026looker.InstanceMaintenanceWindowStartTimeArgs{\n\t\t\t\t\tHours: pulumi.Int(22),\n\t\t\t\t\tMinutes: pulumi.Int(0),\n\t\t\t\t\tSeconds: pulumi.Int(0),\n\t\t\t\t\tNanos: pulumi.Int(0),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDenyMaintenancePeriod: \u0026looker.InstanceDenyMaintenancePeriodArgs{\n\t\t\t\tStartDate: \u0026looker.InstanceDenyMaintenancePeriodStartDateArgs{\n\t\t\t\t\tYear: pulumi.Int(2050),\n\t\t\t\t\tMonth: pulumi.Int(1),\n\t\t\t\t\tDay: pulumi.Int(1),\n\t\t\t\t},\n\t\t\t\tEndDate: \u0026looker.InstanceDenyMaintenancePeriodEndDateArgs{\n\t\t\t\t\tYear: pulumi.Int(2050),\n\t\t\t\t\tMonth: pulumi.Int(2),\n\t\t\t\t\tDay: pulumi.Int(1),\n\t\t\t\t},\n\t\t\t\tTime: \u0026looker.InstanceDenyMaintenancePeriodTimeArgs{\n\t\t\t\t\tHours: pulumi.Int(10),\n\t\t\t\t\tMinutes: pulumi.Int(0),\n\t\t\t\t\tSeconds: pulumi.Int(0),\n\t\t\t\t\tNanos: pulumi.Int(0),\n\t\t\t\t},\n\t\t\t},\n\t\t\tOauthConfig: \u0026looker.InstanceOauthConfigArgs{\n\t\t\t\tClientId: pulumi.String(\"my-client-id\"),\n\t\t\t\tClientSecret: pulumi.String(\"my-client-secret\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.looker.Instance;\nimport com.pulumi.gcp.looker.InstanceArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceAdminSettingsArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceMaintenanceWindowArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceMaintenanceWindowStartTimeArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodStartDateArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodEndDateArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodTimeArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceOauthConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var looker_instance = new Instance(\"looker-instance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .platformEdition(\"LOOKER_CORE_STANDARD_ANNUAL\")\n .region(\"us-central1\")\n .publicIpEnabled(true)\n .adminSettings(InstanceAdminSettingsArgs.builder()\n .allowedEmailDomains(\"google.com\")\n .build())\n .maintenanceWindow(InstanceMaintenanceWindowArgs.builder()\n .dayOfWeek(\"THURSDAY\")\n .startTime(InstanceMaintenanceWindowStartTimeArgs.builder()\n .hours(22)\n .minutes(0)\n .seconds(0)\n .nanos(0)\n .build())\n .build())\n .denyMaintenancePeriod(InstanceDenyMaintenancePeriodArgs.builder()\n .startDate(InstanceDenyMaintenancePeriodStartDateArgs.builder()\n .year(2050)\n .month(1)\n .day(1)\n .build())\n .endDate(InstanceDenyMaintenancePeriodEndDateArgs.builder()\n .year(2050)\n .month(2)\n .day(1)\n .build())\n .time(InstanceDenyMaintenancePeriodTimeArgs.builder()\n .hours(10)\n .minutes(0)\n .seconds(0)\n .nanos(0)\n .build())\n .build())\n .oauthConfig(InstanceOauthConfigArgs.builder()\n .clientId(\"my-client-id\")\n .clientSecret(\"my-client-secret\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n looker-instance:\n type: gcp:looker:Instance\n properties:\n name: my-instance\n platformEdition: LOOKER_CORE_STANDARD_ANNUAL\n region: us-central1\n publicIpEnabled: true\n adminSettings:\n allowedEmailDomains:\n - google.com\n maintenanceWindow:\n dayOfWeek: THURSDAY\n startTime:\n hours: 22\n minutes: 0\n seconds: 0\n nanos: 0\n denyMaintenancePeriod:\n startDate:\n year: 2050\n month: 1\n day: 1\n endDate:\n year: 2050\n month: 2\n day: 1\n time:\n hours: 10\n minutes: 0\n seconds: 0\n nanos: 0\n oauthConfig:\n clientId: my-client-id\n clientSecret: my-client-secret\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Looker Instance Fips\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst looker_instance = new gcp.looker.Instance(\"looker-instance\", {\n name: \"my-instance-fips\",\n platformEdition: \"LOOKER_CORE_ENTERPRISE_ANNUAL\",\n region: \"us-central1\",\n publicIpEnabled: true,\n fipsEnabled: true,\n oauthConfig: {\n clientId: \"my-client-id\",\n clientSecret: \"my-client-secret\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nlooker_instance = gcp.looker.Instance(\"looker-instance\",\n name=\"my-instance-fips\",\n platform_edition=\"LOOKER_CORE_ENTERPRISE_ANNUAL\",\n region=\"us-central1\",\n public_ip_enabled=True,\n fips_enabled=True,\n oauth_config={\n \"client_id\": \"my-client-id\",\n \"client_secret\": \"my-client-secret\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var looker_instance = new Gcp.Looker.Instance(\"looker-instance\", new()\n {\n Name = \"my-instance-fips\",\n PlatformEdition = \"LOOKER_CORE_ENTERPRISE_ANNUAL\",\n Region = \"us-central1\",\n PublicIpEnabled = true,\n FipsEnabled = true,\n OauthConfig = new Gcp.Looker.Inputs.InstanceOauthConfigArgs\n {\n ClientId = \"my-client-id\",\n ClientSecret = \"my-client-secret\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/looker\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := looker.NewInstance(ctx, \"looker-instance\", \u0026looker.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance-fips\"),\n\t\t\tPlatformEdition: pulumi.String(\"LOOKER_CORE_ENTERPRISE_ANNUAL\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPublicIpEnabled: pulumi.Bool(true),\n\t\t\tFipsEnabled: pulumi.Bool(true),\n\t\t\tOauthConfig: \u0026looker.InstanceOauthConfigArgs{\n\t\t\t\tClientId: pulumi.String(\"my-client-id\"),\n\t\t\t\tClientSecret: pulumi.String(\"my-client-secret\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.looker.Instance;\nimport com.pulumi.gcp.looker.InstanceArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceOauthConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var looker_instance = new Instance(\"looker-instance\", InstanceArgs.builder()\n .name(\"my-instance-fips\")\n .platformEdition(\"LOOKER_CORE_ENTERPRISE_ANNUAL\")\n .region(\"us-central1\")\n .publicIpEnabled(true)\n .fipsEnabled(true)\n .oauthConfig(InstanceOauthConfigArgs.builder()\n .clientId(\"my-client-id\")\n .clientSecret(\"my-client-secret\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n looker-instance:\n type: gcp:looker:Instance\n properties:\n name: my-instance-fips\n platformEdition: LOOKER_CORE_ENTERPRISE_ANNUAL\n region: us-central1\n publicIpEnabled: true\n fipsEnabled: true\n oauthConfig:\n clientId: my-client-id\n clientSecret: my-client-secret\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Looker Instance Enterprise Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst lookerNetwork = new gcp.compute.Network(\"looker_network\", {name: \"looker-network\"});\nconst lookerRange = new gcp.compute.GlobalAddress(\"looker_range\", {\n name: \"looker-range\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 20,\n network: lookerNetwork.id,\n});\nconst lookerVpcConnection = new gcp.servicenetworking.Connection(\"looker_vpc_connection\", {\n network: lookerNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [lookerRange.name],\n});\nconst looker_instance = new gcp.looker.Instance(\"looker-instance\", {\n name: \"my-instance\",\n platformEdition: \"LOOKER_CORE_ENTERPRISE_ANNUAL\",\n region: \"us-central1\",\n privateIpEnabled: true,\n publicIpEnabled: false,\n reservedRange: lookerRange.name,\n consumerNetwork: lookerNetwork.id,\n adminSettings: {\n allowedEmailDomains: [\"google.com\"],\n },\n encryptionConfig: {\n kmsKeyName: \"looker-kms-key\",\n },\n maintenanceWindow: {\n dayOfWeek: \"THURSDAY\",\n startTime: {\n hours: 22,\n minutes: 0,\n seconds: 0,\n nanos: 0,\n },\n },\n denyMaintenancePeriod: {\n startDate: {\n year: 2050,\n month: 1,\n day: 1,\n },\n endDate: {\n year: 2050,\n month: 2,\n day: 1,\n },\n time: {\n hours: 10,\n minutes: 0,\n seconds: 0,\n nanos: 0,\n },\n },\n oauthConfig: {\n clientId: \"my-client-id\",\n clientSecret: \"my-client-secret\",\n },\n}, {\n dependsOn: [lookerVpcConnection],\n});\nconst project = gcp.organizations.getProject({});\nconst cryptoKey = new gcp.kms.CryptoKeyIAMMember(\"crypto_key\", {\n cryptoKeyId: \"looker-kms-key\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-looker.iam.gserviceaccount.com`),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nlooker_network = gcp.compute.Network(\"looker_network\", name=\"looker-network\")\nlooker_range = gcp.compute.GlobalAddress(\"looker_range\",\n name=\"looker-range\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=20,\n network=looker_network.id)\nlooker_vpc_connection = gcp.servicenetworking.Connection(\"looker_vpc_connection\",\n network=looker_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[looker_range.name])\nlooker_instance = gcp.looker.Instance(\"looker-instance\",\n name=\"my-instance\",\n platform_edition=\"LOOKER_CORE_ENTERPRISE_ANNUAL\",\n region=\"us-central1\",\n private_ip_enabled=True,\n public_ip_enabled=False,\n reserved_range=looker_range.name,\n consumer_network=looker_network.id,\n admin_settings={\n \"allowed_email_domains\": [\"google.com\"],\n },\n encryption_config={\n \"kms_key_name\": \"looker-kms-key\",\n },\n maintenance_window={\n \"day_of_week\": \"THURSDAY\",\n \"start_time\": {\n \"hours\": 22,\n \"minutes\": 0,\n \"seconds\": 0,\n \"nanos\": 0,\n },\n },\n deny_maintenance_period={\n \"start_date\": {\n \"year\": 2050,\n \"month\": 1,\n \"day\": 1,\n },\n \"end_date\": {\n \"year\": 2050,\n \"month\": 2,\n \"day\": 1,\n },\n \"time\": {\n \"hours\": 10,\n \"minutes\": 0,\n \"seconds\": 0,\n \"nanos\": 0,\n },\n },\n oauth_config={\n \"client_id\": \"my-client-id\",\n \"client_secret\": \"my-client-secret\",\n },\n opts = pulumi.ResourceOptions(depends_on=[looker_vpc_connection]))\nproject = gcp.organizations.get_project()\ncrypto_key = gcp.kms.CryptoKeyIAMMember(\"crypto_key\",\n crypto_key_id=\"looker-kms-key\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-looker.iam.gserviceaccount.com\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var lookerNetwork = new Gcp.Compute.Network(\"looker_network\", new()\n {\n Name = \"looker-network\",\n });\n\n var lookerRange = new Gcp.Compute.GlobalAddress(\"looker_range\", new()\n {\n Name = \"looker-range\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 20,\n Network = lookerNetwork.Id,\n });\n\n var lookerVpcConnection = new Gcp.ServiceNetworking.Connection(\"looker_vpc_connection\", new()\n {\n Network = lookerNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n lookerRange.Name,\n },\n });\n\n var looker_instance = new Gcp.Looker.Instance(\"looker-instance\", new()\n {\n Name = \"my-instance\",\n PlatformEdition = \"LOOKER_CORE_ENTERPRISE_ANNUAL\",\n Region = \"us-central1\",\n PrivateIpEnabled = true,\n PublicIpEnabled = false,\n ReservedRange = lookerRange.Name,\n ConsumerNetwork = lookerNetwork.Id,\n AdminSettings = new Gcp.Looker.Inputs.InstanceAdminSettingsArgs\n {\n AllowedEmailDomains = new[]\n {\n \"google.com\",\n },\n },\n EncryptionConfig = new Gcp.Looker.Inputs.InstanceEncryptionConfigArgs\n {\n KmsKeyName = \"looker-kms-key\",\n },\n MaintenanceWindow = new Gcp.Looker.Inputs.InstanceMaintenanceWindowArgs\n {\n DayOfWeek = \"THURSDAY\",\n StartTime = new Gcp.Looker.Inputs.InstanceMaintenanceWindowStartTimeArgs\n {\n Hours = 22,\n Minutes = 0,\n Seconds = 0,\n Nanos = 0,\n },\n },\n DenyMaintenancePeriod = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodArgs\n {\n StartDate = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodStartDateArgs\n {\n Year = 2050,\n Month = 1,\n Day = 1,\n },\n EndDate = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodEndDateArgs\n {\n Year = 2050,\n Month = 2,\n Day = 1,\n },\n Time = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodTimeArgs\n {\n Hours = 10,\n Minutes = 0,\n Seconds = 0,\n Nanos = 0,\n },\n },\n OauthConfig = new Gcp.Looker.Inputs.InstanceOauthConfigArgs\n {\n ClientId = \"my-client-id\",\n ClientSecret = \"my-client-secret\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n lookerVpcConnection,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cryptoKey = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key\", new()\n {\n CryptoKeyId = \"looker-kms-key\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-looker.iam.gserviceaccount.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/looker\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tlookerNetwork, err := compute.NewNetwork(ctx, \"looker_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"looker-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlookerRange, err := compute.NewGlobalAddress(ctx, \"looker_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"looker-range\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(20),\n\t\t\tNetwork: lookerNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlookerVpcConnection, err := servicenetworking.NewConnection(ctx, \"looker_vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: lookerNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tlookerRange.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = looker.NewInstance(ctx, \"looker-instance\", \u0026looker.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tPlatformEdition: pulumi.String(\"LOOKER_CORE_ENTERPRISE_ANNUAL\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPrivateIpEnabled: pulumi.Bool(true),\n\t\t\tPublicIpEnabled: pulumi.Bool(false),\n\t\t\tReservedRange: lookerRange.Name,\n\t\t\tConsumerNetwork: lookerNetwork.ID(),\n\t\t\tAdminSettings: \u0026looker.InstanceAdminSettingsArgs{\n\t\t\t\tAllowedEmailDomains: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"google.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEncryptionConfig: \u0026looker.InstanceEncryptionConfigArgs{\n\t\t\t\tKmsKeyName: pulumi.String(\"looker-kms-key\"),\n\t\t\t},\n\t\t\tMaintenanceWindow: \u0026looker.InstanceMaintenanceWindowArgs{\n\t\t\t\tDayOfWeek: pulumi.String(\"THURSDAY\"),\n\t\t\t\tStartTime: \u0026looker.InstanceMaintenanceWindowStartTimeArgs{\n\t\t\t\t\tHours: pulumi.Int(22),\n\t\t\t\t\tMinutes: pulumi.Int(0),\n\t\t\t\t\tSeconds: pulumi.Int(0),\n\t\t\t\t\tNanos: pulumi.Int(0),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDenyMaintenancePeriod: \u0026looker.InstanceDenyMaintenancePeriodArgs{\n\t\t\t\tStartDate: \u0026looker.InstanceDenyMaintenancePeriodStartDateArgs{\n\t\t\t\t\tYear: pulumi.Int(2050),\n\t\t\t\t\tMonth: pulumi.Int(1),\n\t\t\t\t\tDay: pulumi.Int(1),\n\t\t\t\t},\n\t\t\t\tEndDate: \u0026looker.InstanceDenyMaintenancePeriodEndDateArgs{\n\t\t\t\t\tYear: pulumi.Int(2050),\n\t\t\t\t\tMonth: pulumi.Int(2),\n\t\t\t\t\tDay: pulumi.Int(1),\n\t\t\t\t},\n\t\t\t\tTime: \u0026looker.InstanceDenyMaintenancePeriodTimeArgs{\n\t\t\t\t\tHours: pulumi.Int(10),\n\t\t\t\t\tMinutes: pulumi.Int(0),\n\t\t\t\t\tSeconds: pulumi.Int(0),\n\t\t\t\t\tNanos: pulumi.Int(0),\n\t\t\t\t},\n\t\t\t},\n\t\t\tOauthConfig: \u0026looker.InstanceOauthConfigArgs{\n\t\t\t\tClientId: pulumi.String(\"my-client-id\"),\n\t\t\t\tClientSecret: pulumi.String(\"my-client-secret\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tlookerVpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kms.NewCryptoKeyIAMMember(ctx, \"crypto_key\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"looker-kms-key\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-looker.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.looker.Instance;\nimport com.pulumi.gcp.looker.InstanceArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceAdminSettingsArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceEncryptionConfigArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceMaintenanceWindowArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceMaintenanceWindowStartTimeArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodStartDateArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodEndDateArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodTimeArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceOauthConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var lookerNetwork = new Network(\"lookerNetwork\", NetworkArgs.builder()\n .name(\"looker-network\")\n .build());\n\n var lookerRange = new GlobalAddress(\"lookerRange\", GlobalAddressArgs.builder()\n .name(\"looker-range\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(20)\n .network(lookerNetwork.id())\n .build());\n\n var lookerVpcConnection = new Connection(\"lookerVpcConnection\", ConnectionArgs.builder()\n .network(lookerNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(lookerRange.name())\n .build());\n\n var looker_instance = new Instance(\"looker-instance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .platformEdition(\"LOOKER_CORE_ENTERPRISE_ANNUAL\")\n .region(\"us-central1\")\n .privateIpEnabled(true)\n .publicIpEnabled(false)\n .reservedRange(lookerRange.name())\n .consumerNetwork(lookerNetwork.id())\n .adminSettings(InstanceAdminSettingsArgs.builder()\n .allowedEmailDomains(\"google.com\")\n .build())\n .encryptionConfig(InstanceEncryptionConfigArgs.builder()\n .kmsKeyName(\"looker-kms-key\")\n .build())\n .maintenanceWindow(InstanceMaintenanceWindowArgs.builder()\n .dayOfWeek(\"THURSDAY\")\n .startTime(InstanceMaintenanceWindowStartTimeArgs.builder()\n .hours(22)\n .minutes(0)\n .seconds(0)\n .nanos(0)\n .build())\n .build())\n .denyMaintenancePeriod(InstanceDenyMaintenancePeriodArgs.builder()\n .startDate(InstanceDenyMaintenancePeriodStartDateArgs.builder()\n .year(2050)\n .month(1)\n .day(1)\n .build())\n .endDate(InstanceDenyMaintenancePeriodEndDateArgs.builder()\n .year(2050)\n .month(2)\n .day(1)\n .build())\n .time(InstanceDenyMaintenancePeriodTimeArgs.builder()\n .hours(10)\n .minutes(0)\n .seconds(0)\n .nanos(0)\n .build())\n .build())\n .oauthConfig(InstanceOauthConfigArgs.builder()\n .clientId(\"my-client-id\")\n .clientSecret(\"my-client-secret\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(lookerVpcConnection)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var cryptoKey = new CryptoKeyIAMMember(\"cryptoKey\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(\"looker-kms-key\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-looker.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n looker-instance:\n type: gcp:looker:Instance\n properties:\n name: my-instance\n platformEdition: LOOKER_CORE_ENTERPRISE_ANNUAL\n region: us-central1\n privateIpEnabled: true\n publicIpEnabled: false\n reservedRange: ${lookerRange.name}\n consumerNetwork: ${lookerNetwork.id}\n adminSettings:\n allowedEmailDomains:\n - google.com\n encryptionConfig:\n kmsKeyName: looker-kms-key\n maintenanceWindow:\n dayOfWeek: THURSDAY\n startTime:\n hours: 22\n minutes: 0\n seconds: 0\n nanos: 0\n denyMaintenancePeriod:\n startDate:\n year: 2050\n month: 1\n day: 1\n endDate:\n year: 2050\n month: 2\n day: 1\n time:\n hours: 10\n minutes: 0\n seconds: 0\n nanos: 0\n oauthConfig:\n clientId: my-client-id\n clientSecret: my-client-secret\n options:\n dependson:\n - ${lookerVpcConnection}\n lookerVpcConnection:\n type: gcp:servicenetworking:Connection\n name: looker_vpc_connection\n properties:\n network: ${lookerNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${lookerRange.name}\n lookerRange:\n type: gcp:compute:GlobalAddress\n name: looker_range\n properties:\n name: looker-range\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 20\n network: ${lookerNetwork.id}\n lookerNetwork:\n type: gcp:compute:Network\n name: looker_network\n properties:\n name: looker-network\n cryptoKey:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key\n properties:\n cryptoKeyId: looker-kms-key\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-looker.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Looker Instance Custom Domain\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst looker_instance = new gcp.looker.Instance(\"looker-instance\", {\n name: \"my-instance\",\n platformEdition: \"LOOKER_CORE_STANDARD_ANNUAL\",\n region: \"us-central1\",\n oauthConfig: {\n clientId: \"my-client-id\",\n clientSecret: \"my-client-secret\",\n },\n customDomain: {\n domain: \"my-custom-domain.com\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nlooker_instance = gcp.looker.Instance(\"looker-instance\",\n name=\"my-instance\",\n platform_edition=\"LOOKER_CORE_STANDARD_ANNUAL\",\n region=\"us-central1\",\n oauth_config={\n \"client_id\": \"my-client-id\",\n \"client_secret\": \"my-client-secret\",\n },\n custom_domain={\n \"domain\": \"my-custom-domain.com\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var looker_instance = new Gcp.Looker.Instance(\"looker-instance\", new()\n {\n Name = \"my-instance\",\n PlatformEdition = \"LOOKER_CORE_STANDARD_ANNUAL\",\n Region = \"us-central1\",\n OauthConfig = new Gcp.Looker.Inputs.InstanceOauthConfigArgs\n {\n ClientId = \"my-client-id\",\n ClientSecret = \"my-client-secret\",\n },\n CustomDomain = new Gcp.Looker.Inputs.InstanceCustomDomainArgs\n {\n Domain = \"my-custom-domain.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/looker\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := looker.NewInstance(ctx, \"looker-instance\", \u0026looker.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tPlatformEdition: pulumi.String(\"LOOKER_CORE_STANDARD_ANNUAL\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tOauthConfig: \u0026looker.InstanceOauthConfigArgs{\n\t\t\t\tClientId: pulumi.String(\"my-client-id\"),\n\t\t\t\tClientSecret: pulumi.String(\"my-client-secret\"),\n\t\t\t},\n\t\t\tCustomDomain: \u0026looker.InstanceCustomDomainArgs{\n\t\t\t\tDomain: pulumi.String(\"my-custom-domain.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.looker.Instance;\nimport com.pulumi.gcp.looker.InstanceArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceOauthConfigArgs;\nimport com.pulumi.gcp.looker.inputs.InstanceCustomDomainArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var looker_instance = new Instance(\"looker-instance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .platformEdition(\"LOOKER_CORE_STANDARD_ANNUAL\")\n .region(\"us-central1\")\n .oauthConfig(InstanceOauthConfigArgs.builder()\n .clientId(\"my-client-id\")\n .clientSecret(\"my-client-secret\")\n .build())\n .customDomain(InstanceCustomDomainArgs.builder()\n .domain(\"my-custom-domain.com\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n looker-instance:\n type: gcp:looker:Instance\n properties:\n name: my-instance\n platformEdition: LOOKER_CORE_STANDARD_ANNUAL\n region: us-central1\n oauthConfig:\n clientId: my-client-id\n clientSecret: my-client-secret\n customDomain:\n domain: my-custom-domain.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/instances/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:looker/instance:Instance default projects/{{project}}/locations/{{region}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:looker/instance:Instance default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:looker/instance:Instance default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:looker/instance:Instance default {{name}}\n```\n\n", "properties": { "adminSettings": { "$ref": "#/types/gcp:looker/InstanceAdminSettings:InstanceAdminSettings", @@ -218740,7 +218740,7 @@ } }, "gcp:managedkafka/cluster:Cluster": { - "description": "## Example Usage\n\n### Managedkafka Cluster Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example = new gcp.managedkafka.Cluster(\"example\", {\n clusterId: \"my-cluster\",\n location: \"us-central1\",\n capacityConfig: {\n vcpuCount: \"3\",\n memoryBytes: \"3221225472\",\n },\n gcpConfig: {\n accessConfig: {\n networkConfigs: [{\n subnet: project.then(project =\u003e `projects/${project.number}/regions/us-central1/subnetworks/default`),\n }],\n },\n },\n rebalanceConfig: {\n mode: \"NO_REBALANCE\",\n },\n labels: {\n key: \"value\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample = gcp.managedkafka.Cluster(\"example\",\n cluster_id=\"my-cluster\",\n location=\"us-central1\",\n capacity_config={\n \"vcpu_count\": \"3\",\n \"memory_bytes\": \"3221225472\",\n },\n gcp_config={\n \"access_config\": {\n \"network_configs\": [{\n \"subnet\": f\"projects/{project.number}/regions/us-central1/subnetworks/default\",\n }],\n },\n },\n rebalance_config={\n \"mode\": \"NO_REBALANCE\",\n },\n labels={\n \"key\": \"value\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var example = new Gcp.ManagedKafka.Cluster(\"example\", new()\n {\n ClusterId = \"my-cluster\",\n Location = \"us-central1\",\n CapacityConfig = new Gcp.ManagedKafka.Inputs.ClusterCapacityConfigArgs\n {\n VcpuCount = \"3\",\n MemoryBytes = \"3221225472\",\n },\n GcpConfig = new Gcp.ManagedKafka.Inputs.ClusterGcpConfigArgs\n {\n AccessConfig = new Gcp.ManagedKafka.Inputs.ClusterGcpConfigAccessConfigArgs\n {\n NetworkConfigs = new[]\n {\n new Gcp.ManagedKafka.Inputs.ClusterGcpConfigAccessConfigNetworkConfigArgs\n {\n Subnet = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/regions/us-central1/subnetworks/default\",\n },\n },\n },\n },\n RebalanceConfig = new Gcp.ManagedKafka.Inputs.ClusterRebalanceConfigArgs\n {\n Mode = \"NO_REBALANCE\",\n },\n Labels = \n {\n { \"key\", \"value\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/managedkafka\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = managedkafka.NewCluster(ctx, \"example\", \u0026managedkafka.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tCapacityConfig: \u0026managedkafka.ClusterCapacityConfigArgs{\n\t\t\t\tVcpuCount: pulumi.String(\"3\"),\n\t\t\t\tMemoryBytes: pulumi.String(\"3221225472\"),\n\t\t\t},\n\t\t\tGcpConfig: \u0026managedkafka.ClusterGcpConfigArgs{\n\t\t\t\tAccessConfig: \u0026managedkafka.ClusterGcpConfigAccessConfigArgs{\n\t\t\t\t\tNetworkConfigs: managedkafka.ClusterGcpConfigAccessConfigNetworkConfigArray{\n\t\t\t\t\t\t\u0026managedkafka.ClusterGcpConfigAccessConfigNetworkConfigArgs{\n\t\t\t\t\t\t\tSubnet: pulumi.Sprintf(\"projects/%v/regions/us-central1/subnetworks/default\", project.Number),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tRebalanceConfig: \u0026managedkafka.ClusterRebalanceConfigArgs{\n\t\t\t\tMode: pulumi.String(\"NO_REBALANCE\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"key\": pulumi.String(\"value\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.managedkafka.Cluster;\nimport com.pulumi.gcp.managedkafka.ClusterArgs;\nimport com.pulumi.gcp.managedkafka.inputs.ClusterCapacityConfigArgs;\nimport com.pulumi.gcp.managedkafka.inputs.ClusterGcpConfigArgs;\nimport com.pulumi.gcp.managedkafka.inputs.ClusterGcpConfigAccessConfigArgs;\nimport com.pulumi.gcp.managedkafka.inputs.ClusterRebalanceConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var example = new Cluster(\"example\", ClusterArgs.builder()\n .clusterId(\"my-cluster\")\n .location(\"us-central1\")\n .capacityConfig(ClusterCapacityConfigArgs.builder()\n .vcpuCount(3)\n .memoryBytes(3221225472)\n .build())\n .gcpConfig(ClusterGcpConfigArgs.builder()\n .accessConfig(ClusterGcpConfigAccessConfigArgs.builder()\n .networkConfigs(ClusterGcpConfigAccessConfigNetworkConfigArgs.builder()\n .subnet(String.format(\"projects/%s/regions/us-central1/subnetworks/default\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .build())\n .build())\n .rebalanceConfig(ClusterRebalanceConfigArgs.builder()\n .mode(\"NO_REBALANCE\")\n .build())\n .labels(Map.of(\"key\", \"value\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:managedkafka:Cluster\n properties:\n clusterId: my-cluster\n location: us-central1\n capacityConfig:\n vcpuCount: 3\n memoryBytes: 3.221225472e+09\n gcpConfig:\n accessConfig:\n networkConfigs:\n - subnet: projects/${project.number}/regions/us-central1/subnetworks/default\n rebalanceConfig:\n mode: NO_REBALANCE\n labels:\n key: value\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Managedkafka Cluster Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"example-key-ring\",\n location: \"us-central1\",\n});\nconst key = new gcp.kms.CryptoKey(\"key\", {\n name: \"example-key\",\n keyRing: keyRing.id,\n});\nconst project = gcp.organizations.getProject({});\nconst example = new gcp.managedkafka.Cluster(\"example\", {\n clusterId: \"my-cluster\",\n location: \"us-central1\",\n capacityConfig: {\n vcpuCount: \"3\",\n memoryBytes: \"3221225472\",\n },\n gcpConfig: {\n accessConfig: {\n networkConfigs: [{\n subnet: project.then(project =\u003e `projects/${project.number}/regions/us-central1/subnetworks/default`),\n }],\n },\n kmsKey: key.id,\n },\n});\nconst kafkaServiceIdentity = new gcp.projects.ServiceIdentity(\"kafka_service_identity\", {\n project: project.then(project =\u003e project.projectId),\n service: \"managedkafka.googleapis.com\",\n});\nconst cryptoKeyBinding = new gcp.kms.CryptoKeyIAMBinding(\"crypto_key_binding\", {\n cryptoKeyId: key.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members: [project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-managedkafka.iam.gserviceaccount.com`)],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"example-key-ring\",\n location=\"us-central1\")\nkey = gcp.kms.CryptoKey(\"key\",\n name=\"example-key\",\n key_ring=key_ring.id)\nproject = gcp.organizations.get_project()\nexample = gcp.managedkafka.Cluster(\"example\",\n cluster_id=\"my-cluster\",\n location=\"us-central1\",\n capacity_config={\n \"vcpu_count\": \"3\",\n \"memory_bytes\": \"3221225472\",\n },\n gcp_config={\n \"access_config\": {\n \"network_configs\": [{\n \"subnet\": f\"projects/{project.number}/regions/us-central1/subnetworks/default\",\n }],\n },\n \"kms_key\": key.id,\n })\nkafka_service_identity = gcp.projects.ServiceIdentity(\"kafka_service_identity\",\n project=project.project_id,\n service=\"managedkafka.googleapis.com\")\ncrypto_key_binding = gcp.kms.CryptoKeyIAMBinding(\"crypto_key_binding\",\n crypto_key_id=key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members=[f\"serviceAccount:service-{project.number}@gcp-sa-managedkafka.iam.gserviceaccount.com\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"example-key-ring\",\n Location = \"us-central1\",\n });\n\n var key = new Gcp.Kms.CryptoKey(\"key\", new()\n {\n Name = \"example-key\",\n KeyRing = keyRing.Id,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var example = new Gcp.ManagedKafka.Cluster(\"example\", new()\n {\n ClusterId = \"my-cluster\",\n Location = \"us-central1\",\n CapacityConfig = new Gcp.ManagedKafka.Inputs.ClusterCapacityConfigArgs\n {\n VcpuCount = \"3\",\n MemoryBytes = \"3221225472\",\n },\n GcpConfig = new Gcp.ManagedKafka.Inputs.ClusterGcpConfigArgs\n {\n AccessConfig = new Gcp.ManagedKafka.Inputs.ClusterGcpConfigAccessConfigArgs\n {\n NetworkConfigs = new[]\n {\n new Gcp.ManagedKafka.Inputs.ClusterGcpConfigAccessConfigNetworkConfigArgs\n {\n Subnet = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/regions/us-central1/subnetworks/default\",\n },\n },\n },\n KmsKey = key.Id,\n },\n });\n\n var kafkaServiceIdentity = new Gcp.Projects.ServiceIdentity(\"kafka_service_identity\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Service = \"managedkafka.googleapis.com\",\n });\n\n var cryptoKeyBinding = new Gcp.Kms.CryptoKeyIAMBinding(\"crypto_key_binding\", new()\n {\n CryptoKeyId = key.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Members = new[]\n {\n $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-managedkafka.iam.gserviceaccount.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/managedkafka\"\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/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"example-key-ring\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkey, err := kms.NewCryptoKey(ctx, \"key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"example-key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = managedkafka.NewCluster(ctx, \"example\", \u0026managedkafka.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tCapacityConfig: \u0026managedkafka.ClusterCapacityConfigArgs{\n\t\t\t\tVcpuCount: pulumi.String(\"3\"),\n\t\t\t\tMemoryBytes: pulumi.String(\"3221225472\"),\n\t\t\t},\n\t\t\tGcpConfig: \u0026managedkafka.ClusterGcpConfigArgs{\n\t\t\t\tAccessConfig: \u0026managedkafka.ClusterGcpConfigAccessConfigArgs{\n\t\t\t\t\tNetworkConfigs: managedkafka.ClusterGcpConfigAccessConfigNetworkConfigArray{\n\t\t\t\t\t\t\u0026managedkafka.ClusterGcpConfigAccessConfigNetworkConfigArgs{\n\t\t\t\t\t\t\tSubnet: pulumi.Sprintf(\"projects/%v/regions/us-central1/subnetworks/default\", project.Number),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tKmsKey: key.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewServiceIdentity(ctx, \"kafka_service_identity\", \u0026projects.ServiceIdentityArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tService: pulumi.String(\"managedkafka.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kms.NewCryptoKeyIAMBinding(ctx, \"crypto_key_binding\", \u0026kms.CryptoKeyIAMBindingArgs{\n\t\t\tCryptoKeyId: key.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-managedkafka.iam.gserviceaccount.com\", project.Number),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.managedkafka.Cluster;\nimport com.pulumi.gcp.managedkafka.ClusterArgs;\nimport com.pulumi.gcp.managedkafka.inputs.ClusterCapacityConfigArgs;\nimport com.pulumi.gcp.managedkafka.inputs.ClusterGcpConfigArgs;\nimport com.pulumi.gcp.managedkafka.inputs.ClusterGcpConfigAccessConfigArgs;\nimport com.pulumi.gcp.projects.ServiceIdentity;\nimport com.pulumi.gcp.projects.ServiceIdentityArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBinding;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBindingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"example-key-ring\")\n .location(\"us-central1\")\n .build());\n\n var key = new CryptoKey(\"key\", CryptoKeyArgs.builder()\n .name(\"example-key\")\n .keyRing(keyRing.id())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var example = new Cluster(\"example\", ClusterArgs.builder()\n .clusterId(\"my-cluster\")\n .location(\"us-central1\")\n .capacityConfig(ClusterCapacityConfigArgs.builder()\n .vcpuCount(3)\n .memoryBytes(3221225472)\n .build())\n .gcpConfig(ClusterGcpConfigArgs.builder()\n .accessConfig(ClusterGcpConfigAccessConfigArgs.builder()\n .networkConfigs(ClusterGcpConfigAccessConfigNetworkConfigArgs.builder()\n .subnet(String.format(\"projects/%s/regions/us-central1/subnetworks/default\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .build())\n .kmsKey(key.id())\n .build())\n .build());\n\n var kafkaServiceIdentity = new ServiceIdentity(\"kafkaServiceIdentity\", ServiceIdentityArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .service(\"managedkafka.googleapis.com\")\n .build());\n\n var cryptoKeyBinding = new CryptoKeyIAMBinding(\"cryptoKeyBinding\", CryptoKeyIAMBindingArgs.builder()\n .cryptoKeyId(key.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .members(String.format(\"serviceAccount:service-%s@gcp-sa-managedkafka.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:managedkafka:Cluster\n properties:\n clusterId: my-cluster\n location: us-central1\n capacityConfig:\n vcpuCount: 3\n memoryBytes: 3.221225472e+09\n gcpConfig:\n accessConfig:\n networkConfigs:\n - subnet: projects/${project.number}/regions/us-central1/subnetworks/default\n kmsKey: ${key.id}\n kafkaServiceIdentity:\n type: gcp:projects:ServiceIdentity\n name: kafka_service_identity\n properties:\n project: ${project.projectId}\n service: managedkafka.googleapis.com\n key:\n type: gcp:kms:CryptoKey\n properties:\n name: example-key\n keyRing: ${keyRing.id}\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: example-key-ring\n location: us-central1\n cryptoKeyBinding:\n type: gcp:kms:CryptoKeyIAMBinding\n name: crypto_key_binding\n properties:\n cryptoKeyId: ${key.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n members:\n - serviceAccount:service-${project.number}@gcp-sa-managedkafka.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCluster can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/clusters/{{cluster_id}}`\n\n* `{{project}}/{{location}}/{{cluster_id}}`\n\n* `{{location}}/{{cluster_id}}`\n\nWhen using the `pulumi import` command, Cluster can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:managedkafka/cluster:Cluster default projects/{{project}}/locations/{{location}}/clusters/{{cluster_id}}\n```\n\n```sh\n$ pulumi import gcp:managedkafka/cluster:Cluster default {{project}}/{{location}}/{{cluster_id}}\n```\n\n```sh\n$ pulumi import gcp:managedkafka/cluster:Cluster default {{location}}/{{cluster_id}}\n```\n\n", + "description": "## Example Usage\n\n### Managedkafka Cluster Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example = new gcp.managedkafka.Cluster(\"example\", {\n clusterId: \"my-cluster\",\n location: \"us-central1\",\n capacityConfig: {\n vcpuCount: \"3\",\n memoryBytes: \"3221225472\",\n },\n gcpConfig: {\n accessConfig: {\n networkConfigs: [{\n subnet: project.then(project =\u003e `projects/${project.number}/regions/us-central1/subnetworks/default`),\n }],\n },\n },\n rebalanceConfig: {\n mode: \"NO_REBALANCE\",\n },\n labels: {\n key: \"value\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample = gcp.managedkafka.Cluster(\"example\",\n cluster_id=\"my-cluster\",\n location=\"us-central1\",\n capacity_config={\n \"vcpu_count\": \"3\",\n \"memory_bytes\": \"3221225472\",\n },\n gcp_config={\n \"access_config\": {\n \"network_configs\": [{\n \"subnet\": f\"projects/{project.number}/regions/us-central1/subnetworks/default\",\n }],\n },\n },\n rebalance_config={\n \"mode\": \"NO_REBALANCE\",\n },\n labels={\n \"key\": \"value\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var example = new Gcp.ManagedKafka.Cluster(\"example\", new()\n {\n ClusterId = \"my-cluster\",\n Location = \"us-central1\",\n CapacityConfig = new Gcp.ManagedKafka.Inputs.ClusterCapacityConfigArgs\n {\n VcpuCount = \"3\",\n MemoryBytes = \"3221225472\",\n },\n GcpConfig = new Gcp.ManagedKafka.Inputs.ClusterGcpConfigArgs\n {\n AccessConfig = new Gcp.ManagedKafka.Inputs.ClusterGcpConfigAccessConfigArgs\n {\n NetworkConfigs = new[]\n {\n new Gcp.ManagedKafka.Inputs.ClusterGcpConfigAccessConfigNetworkConfigArgs\n {\n Subnet = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/regions/us-central1/subnetworks/default\",\n },\n },\n },\n },\n RebalanceConfig = new Gcp.ManagedKafka.Inputs.ClusterRebalanceConfigArgs\n {\n Mode = \"NO_REBALANCE\",\n },\n Labels = \n {\n { \"key\", \"value\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/managedkafka\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = managedkafka.NewCluster(ctx, \"example\", \u0026managedkafka.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tCapacityConfig: \u0026managedkafka.ClusterCapacityConfigArgs{\n\t\t\t\tVcpuCount: pulumi.String(\"3\"),\n\t\t\t\tMemoryBytes: pulumi.String(\"3221225472\"),\n\t\t\t},\n\t\t\tGcpConfig: \u0026managedkafka.ClusterGcpConfigArgs{\n\t\t\t\tAccessConfig: \u0026managedkafka.ClusterGcpConfigAccessConfigArgs{\n\t\t\t\t\tNetworkConfigs: managedkafka.ClusterGcpConfigAccessConfigNetworkConfigArray{\n\t\t\t\t\t\t\u0026managedkafka.ClusterGcpConfigAccessConfigNetworkConfigArgs{\n\t\t\t\t\t\t\tSubnet: pulumi.Sprintf(\"projects/%v/regions/us-central1/subnetworks/default\", project.Number),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tRebalanceConfig: \u0026managedkafka.ClusterRebalanceConfigArgs{\n\t\t\t\tMode: pulumi.String(\"NO_REBALANCE\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"key\": pulumi.String(\"value\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.managedkafka.Cluster;\nimport com.pulumi.gcp.managedkafka.ClusterArgs;\nimport com.pulumi.gcp.managedkafka.inputs.ClusterCapacityConfigArgs;\nimport com.pulumi.gcp.managedkafka.inputs.ClusterGcpConfigArgs;\nimport com.pulumi.gcp.managedkafka.inputs.ClusterGcpConfigAccessConfigArgs;\nimport com.pulumi.gcp.managedkafka.inputs.ClusterRebalanceConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var example = new Cluster(\"example\", ClusterArgs.builder()\n .clusterId(\"my-cluster\")\n .location(\"us-central1\")\n .capacityConfig(ClusterCapacityConfigArgs.builder()\n .vcpuCount(3)\n .memoryBytes(3221225472)\n .build())\n .gcpConfig(ClusterGcpConfigArgs.builder()\n .accessConfig(ClusterGcpConfigAccessConfigArgs.builder()\n .networkConfigs(ClusterGcpConfigAccessConfigNetworkConfigArgs.builder()\n .subnet(String.format(\"projects/%s/regions/us-central1/subnetworks/default\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .build())\n .build())\n .rebalanceConfig(ClusterRebalanceConfigArgs.builder()\n .mode(\"NO_REBALANCE\")\n .build())\n .labels(Map.of(\"key\", \"value\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:managedkafka:Cluster\n properties:\n clusterId: my-cluster\n location: us-central1\n capacityConfig:\n vcpuCount: 3\n memoryBytes: 3.221225472e+09\n gcpConfig:\n accessConfig:\n networkConfigs:\n - subnet: projects/${project.number}/regions/us-central1/subnetworks/default\n rebalanceConfig:\n mode: NO_REBALANCE\n labels:\n key: value\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Managedkafka Cluster Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"example-key-ring\",\n location: \"us-central1\",\n});\nconst key = new gcp.kms.CryptoKey(\"key\", {\n name: \"example-key\",\n keyRing: keyRing.id,\n});\nconst project = gcp.organizations.getProject({});\nconst example = new gcp.managedkafka.Cluster(\"example\", {\n clusterId: \"my-cluster\",\n location: \"us-central1\",\n capacityConfig: {\n vcpuCount: \"3\",\n memoryBytes: \"3221225472\",\n },\n gcpConfig: {\n accessConfig: {\n networkConfigs: [{\n subnet: project.then(project =\u003e `projects/${project.number}/regions/us-central1/subnetworks/default`),\n }],\n },\n kmsKey: key.id,\n },\n});\nconst kafkaServiceIdentity = new gcp.projects.ServiceIdentity(\"kafka_service_identity\", {\n project: project.then(project =\u003e project.projectId),\n service: \"managedkafka.googleapis.com\",\n});\nconst cryptoKeyBinding = new gcp.kms.CryptoKeyIAMBinding(\"crypto_key_binding\", {\n cryptoKeyId: key.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members: [project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-managedkafka.iam.gserviceaccount.com`)],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"example-key-ring\",\n location=\"us-central1\")\nkey = gcp.kms.CryptoKey(\"key\",\n name=\"example-key\",\n key_ring=key_ring.id)\nproject = gcp.organizations.get_project()\nexample = gcp.managedkafka.Cluster(\"example\",\n cluster_id=\"my-cluster\",\n location=\"us-central1\",\n capacity_config={\n \"vcpu_count\": \"3\",\n \"memory_bytes\": \"3221225472\",\n },\n gcp_config={\n \"access_config\": {\n \"network_configs\": [{\n \"subnet\": f\"projects/{project.number}/regions/us-central1/subnetworks/default\",\n }],\n },\n \"kms_key\": key.id,\n })\nkafka_service_identity = gcp.projects.ServiceIdentity(\"kafka_service_identity\",\n project=project.project_id,\n service=\"managedkafka.googleapis.com\")\ncrypto_key_binding = gcp.kms.CryptoKeyIAMBinding(\"crypto_key_binding\",\n crypto_key_id=key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members=[f\"serviceAccount:service-{project.number}@gcp-sa-managedkafka.iam.gserviceaccount.com\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"example-key-ring\",\n Location = \"us-central1\",\n });\n\n var key = new Gcp.Kms.CryptoKey(\"key\", new()\n {\n Name = \"example-key\",\n KeyRing = keyRing.Id,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var example = new Gcp.ManagedKafka.Cluster(\"example\", new()\n {\n ClusterId = \"my-cluster\",\n Location = \"us-central1\",\n CapacityConfig = new Gcp.ManagedKafka.Inputs.ClusterCapacityConfigArgs\n {\n VcpuCount = \"3\",\n MemoryBytes = \"3221225472\",\n },\n GcpConfig = new Gcp.ManagedKafka.Inputs.ClusterGcpConfigArgs\n {\n AccessConfig = new Gcp.ManagedKafka.Inputs.ClusterGcpConfigAccessConfigArgs\n {\n NetworkConfigs = new[]\n {\n new Gcp.ManagedKafka.Inputs.ClusterGcpConfigAccessConfigNetworkConfigArgs\n {\n Subnet = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/regions/us-central1/subnetworks/default\",\n },\n },\n },\n KmsKey = key.Id,\n },\n });\n\n var kafkaServiceIdentity = new Gcp.Projects.ServiceIdentity(\"kafka_service_identity\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Service = \"managedkafka.googleapis.com\",\n });\n\n var cryptoKeyBinding = new Gcp.Kms.CryptoKeyIAMBinding(\"crypto_key_binding\", new()\n {\n CryptoKeyId = key.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Members = new[]\n {\n $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-managedkafka.iam.gserviceaccount.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/managedkafka\"\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/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"example-key-ring\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkey, err := kms.NewCryptoKey(ctx, \"key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"example-key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = managedkafka.NewCluster(ctx, \"example\", \u0026managedkafka.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tCapacityConfig: \u0026managedkafka.ClusterCapacityConfigArgs{\n\t\t\t\tVcpuCount: pulumi.String(\"3\"),\n\t\t\t\tMemoryBytes: pulumi.String(\"3221225472\"),\n\t\t\t},\n\t\t\tGcpConfig: \u0026managedkafka.ClusterGcpConfigArgs{\n\t\t\t\tAccessConfig: \u0026managedkafka.ClusterGcpConfigAccessConfigArgs{\n\t\t\t\t\tNetworkConfigs: managedkafka.ClusterGcpConfigAccessConfigNetworkConfigArray{\n\t\t\t\t\t\t\u0026managedkafka.ClusterGcpConfigAccessConfigNetworkConfigArgs{\n\t\t\t\t\t\t\tSubnet: pulumi.Sprintf(\"projects/%v/regions/us-central1/subnetworks/default\", project.Number),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tKmsKey: key.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewServiceIdentity(ctx, \"kafka_service_identity\", \u0026projects.ServiceIdentityArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tService: pulumi.String(\"managedkafka.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kms.NewCryptoKeyIAMBinding(ctx, \"crypto_key_binding\", \u0026kms.CryptoKeyIAMBindingArgs{\n\t\t\tCryptoKeyId: key.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-managedkafka.iam.gserviceaccount.com\", project.Number),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.managedkafka.Cluster;\nimport com.pulumi.gcp.managedkafka.ClusterArgs;\nimport com.pulumi.gcp.managedkafka.inputs.ClusterCapacityConfigArgs;\nimport com.pulumi.gcp.managedkafka.inputs.ClusterGcpConfigArgs;\nimport com.pulumi.gcp.managedkafka.inputs.ClusterGcpConfigAccessConfigArgs;\nimport com.pulumi.gcp.projects.ServiceIdentity;\nimport com.pulumi.gcp.projects.ServiceIdentityArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBinding;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBindingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"example-key-ring\")\n .location(\"us-central1\")\n .build());\n\n var key = new CryptoKey(\"key\", CryptoKeyArgs.builder()\n .name(\"example-key\")\n .keyRing(keyRing.id())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var example = new Cluster(\"example\", ClusterArgs.builder()\n .clusterId(\"my-cluster\")\n .location(\"us-central1\")\n .capacityConfig(ClusterCapacityConfigArgs.builder()\n .vcpuCount(3)\n .memoryBytes(3221225472)\n .build())\n .gcpConfig(ClusterGcpConfigArgs.builder()\n .accessConfig(ClusterGcpConfigAccessConfigArgs.builder()\n .networkConfigs(ClusterGcpConfigAccessConfigNetworkConfigArgs.builder()\n .subnet(String.format(\"projects/%s/regions/us-central1/subnetworks/default\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .build())\n .kmsKey(key.id())\n .build())\n .build());\n\n var kafkaServiceIdentity = new ServiceIdentity(\"kafkaServiceIdentity\", ServiceIdentityArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .service(\"managedkafka.googleapis.com\")\n .build());\n\n var cryptoKeyBinding = new CryptoKeyIAMBinding(\"cryptoKeyBinding\", CryptoKeyIAMBindingArgs.builder()\n .cryptoKeyId(key.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .members(String.format(\"serviceAccount:service-%s@gcp-sa-managedkafka.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:managedkafka:Cluster\n properties:\n clusterId: my-cluster\n location: us-central1\n capacityConfig:\n vcpuCount: 3\n memoryBytes: 3.221225472e+09\n gcpConfig:\n accessConfig:\n networkConfigs:\n - subnet: projects/${project.number}/regions/us-central1/subnetworks/default\n kmsKey: ${key.id}\n kafkaServiceIdentity:\n type: gcp:projects:ServiceIdentity\n name: kafka_service_identity\n properties:\n project: ${project.projectId}\n service: managedkafka.googleapis.com\n key:\n type: gcp:kms:CryptoKey\n properties:\n name: example-key\n keyRing: ${keyRing.id}\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: example-key-ring\n location: us-central1\n cryptoKeyBinding:\n type: gcp:kms:CryptoKeyIAMBinding\n name: crypto_key_binding\n properties:\n cryptoKeyId: ${key.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n members:\n - serviceAccount:service-${project.number}@gcp-sa-managedkafka.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCluster can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/clusters/{{cluster_id}}`\n\n* `{{project}}/{{location}}/{{cluster_id}}`\n\n* `{{location}}/{{cluster_id}}`\n\nWhen using the `pulumi import` command, Cluster can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:managedkafka/cluster:Cluster default projects/{{project}}/locations/{{location}}/clusters/{{cluster_id}}\n```\n\n```sh\n$ pulumi import gcp:managedkafka/cluster:Cluster default {{project}}/{{location}}/{{cluster_id}}\n```\n\n```sh\n$ pulumi import gcp:managedkafka/cluster:Cluster default {{location}}/{{cluster_id}}\n```\n\n", "properties": { "capacityConfig": { "$ref": "#/types/gcp:managedkafka/ClusterCapacityConfig:ClusterCapacityConfig", @@ -218932,7 +218932,7 @@ } }, "gcp:managedkafka/topic:Topic": { - "description": "## Example Usage\n\n### Managedkafka Topic Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst cluster = new gcp.managedkafka.Cluster(\"cluster\", {\n clusterId: \"my-cluster\",\n location: \"us-central1\",\n capacityConfig: {\n vcpuCount: \"3\",\n memoryBytes: \"3221225472\",\n },\n gcpConfig: {\n accessConfig: {\n networkConfigs: [{\n subnet: project.then(project =\u003e `projects/${project.number}/regions/us-central1/subnetworks/default`),\n }],\n },\n },\n});\nconst example = new gcp.managedkafka.Topic(\"example\", {\n topicId: \"my-topic\",\n cluster: cluster.clusterId,\n location: \"us-central1\",\n partitionCount: 2,\n replicationFactor: 3,\n configs: {\n \"cleanup.policy\": \"compact\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ncluster = gcp.managedkafka.Cluster(\"cluster\",\n cluster_id=\"my-cluster\",\n location=\"us-central1\",\n capacity_config={\n \"vcpu_count\": \"3\",\n \"memory_bytes\": \"3221225472\",\n },\n gcp_config={\n \"access_config\": {\n \"network_configs\": [{\n \"subnet\": f\"projects/{project.number}/regions/us-central1/subnetworks/default\",\n }],\n },\n })\nexample = gcp.managedkafka.Topic(\"example\",\n topic_id=\"my-topic\",\n cluster=cluster.cluster_id,\n location=\"us-central1\",\n partition_count=2,\n replication_factor=3,\n configs={\n \"cleanup.policy\": \"compact\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cluster = new Gcp.ManagedKafka.Cluster(\"cluster\", new()\n {\n ClusterId = \"my-cluster\",\n Location = \"us-central1\",\n CapacityConfig = new Gcp.ManagedKafka.Inputs.ClusterCapacityConfigArgs\n {\n VcpuCount = \"3\",\n MemoryBytes = \"3221225472\",\n },\n GcpConfig = new Gcp.ManagedKafka.Inputs.ClusterGcpConfigArgs\n {\n AccessConfig = new Gcp.ManagedKafka.Inputs.ClusterGcpConfigAccessConfigArgs\n {\n NetworkConfigs = new[]\n {\n new Gcp.ManagedKafka.Inputs.ClusterGcpConfigAccessConfigNetworkConfigArgs\n {\n Subnet = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/regions/us-central1/subnetworks/default\",\n },\n },\n },\n },\n });\n\n var example = new Gcp.ManagedKafka.Topic(\"example\", new()\n {\n TopicId = \"my-topic\",\n Cluster = cluster.ClusterId,\n Location = \"us-central1\",\n PartitionCount = 2,\n ReplicationFactor = 3,\n Configs = \n {\n { \"cleanup.policy\", \"compact\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/managedkafka\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcluster, err := managedkafka.NewCluster(ctx, \"cluster\", \u0026managedkafka.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tCapacityConfig: \u0026managedkafka.ClusterCapacityConfigArgs{\n\t\t\t\tVcpuCount: pulumi.String(\"3\"),\n\t\t\t\tMemoryBytes: pulumi.String(\"3221225472\"),\n\t\t\t},\n\t\t\tGcpConfig: \u0026managedkafka.ClusterGcpConfigArgs{\n\t\t\t\tAccessConfig: \u0026managedkafka.ClusterGcpConfigAccessConfigArgs{\n\t\t\t\t\tNetworkConfigs: managedkafka.ClusterGcpConfigAccessConfigNetworkConfigArray{\n\t\t\t\t\t\t\u0026managedkafka.ClusterGcpConfigAccessConfigNetworkConfigArgs{\n\t\t\t\t\t\t\tSubnet: pulumi.Sprintf(\"projects/%v/regions/us-central1/subnetworks/default\", project.Number),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = managedkafka.NewTopic(ctx, \"example\", \u0026managedkafka.TopicArgs{\n\t\t\tTopicId: pulumi.String(\"my-topic\"),\n\t\t\tCluster: cluster.ClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPartitionCount: pulumi.Int(2),\n\t\t\tReplicationFactor: pulumi.Int(3),\n\t\t\tConfigs: pulumi.StringMap{\n\t\t\t\t\"cleanup.policy\": pulumi.String(\"compact\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.managedkafka.Cluster;\nimport com.pulumi.gcp.managedkafka.ClusterArgs;\nimport com.pulumi.gcp.managedkafka.inputs.ClusterCapacityConfigArgs;\nimport com.pulumi.gcp.managedkafka.inputs.ClusterGcpConfigArgs;\nimport com.pulumi.gcp.managedkafka.inputs.ClusterGcpConfigAccessConfigArgs;\nimport com.pulumi.gcp.managedkafka.Topic;\nimport com.pulumi.gcp.managedkafka.TopicArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n .clusterId(\"my-cluster\")\n .location(\"us-central1\")\n .capacityConfig(ClusterCapacityConfigArgs.builder()\n .vcpuCount(3)\n .memoryBytes(3221225472)\n .build())\n .gcpConfig(ClusterGcpConfigArgs.builder()\n .accessConfig(ClusterGcpConfigAccessConfigArgs.builder()\n .networkConfigs(ClusterGcpConfigAccessConfigNetworkConfigArgs.builder()\n .subnet(String.format(\"projects/%s/regions/us-central1/subnetworks/default\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .build())\n .build())\n .build());\n\n var example = new Topic(\"example\", TopicArgs.builder()\n .topicId(\"my-topic\")\n .cluster(cluster.clusterId())\n .location(\"us-central1\")\n .partitionCount(2)\n .replicationFactor(3)\n .configs(Map.of(\"cleanup.policy\", \"compact\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster:\n type: gcp:managedkafka:Cluster\n properties:\n clusterId: my-cluster\n location: us-central1\n capacityConfig:\n vcpuCount: 3\n memoryBytes: 3.221225472e+09\n gcpConfig:\n accessConfig:\n networkConfigs:\n - subnet: projects/${project.number}/regions/us-central1/subnetworks/default\n example:\n type: gcp:managedkafka:Topic\n properties:\n topicId: my-topic\n cluster: ${cluster.clusterId}\n location: us-central1\n partitionCount: 2\n replicationFactor: 3\n configs:\n cleanup.policy: compact\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTopic can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/clusters/{{cluster}}/topics/{{topic_id}}`\n\n* `{{project}}/{{location}}/{{cluster}}/{{topic_id}}`\n\n* `{{location}}/{{cluster}}/{{topic_id}}`\n\nWhen using the `pulumi import` command, Topic can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:managedkafka/topic:Topic default projects/{{project}}/locations/{{location}}/clusters/{{cluster}}/topics/{{topic_id}}\n```\n\n```sh\n$ pulumi import gcp:managedkafka/topic:Topic default {{project}}/{{location}}/{{cluster}}/{{topic_id}}\n```\n\n```sh\n$ pulumi import gcp:managedkafka/topic:Topic default {{location}}/{{cluster}}/{{topic_id}}\n```\n\n", + "description": "## Example Usage\n\n### Managedkafka Topic Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst cluster = new gcp.managedkafka.Cluster(\"cluster\", {\n clusterId: \"my-cluster\",\n location: \"us-central1\",\n capacityConfig: {\n vcpuCount: \"3\",\n memoryBytes: \"3221225472\",\n },\n gcpConfig: {\n accessConfig: {\n networkConfigs: [{\n subnet: project.then(project =\u003e `projects/${project.number}/regions/us-central1/subnetworks/default`),\n }],\n },\n },\n});\nconst example = new gcp.managedkafka.Topic(\"example\", {\n topicId: \"my-topic\",\n cluster: cluster.clusterId,\n location: \"us-central1\",\n partitionCount: 2,\n replicationFactor: 3,\n configs: {\n \"cleanup.policy\": \"compact\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ncluster = gcp.managedkafka.Cluster(\"cluster\",\n cluster_id=\"my-cluster\",\n location=\"us-central1\",\n capacity_config={\n \"vcpu_count\": \"3\",\n \"memory_bytes\": \"3221225472\",\n },\n gcp_config={\n \"access_config\": {\n \"network_configs\": [{\n \"subnet\": f\"projects/{project.number}/regions/us-central1/subnetworks/default\",\n }],\n },\n })\nexample = gcp.managedkafka.Topic(\"example\",\n topic_id=\"my-topic\",\n cluster=cluster.cluster_id,\n location=\"us-central1\",\n partition_count=2,\n replication_factor=3,\n configs={\n \"cleanup.policy\": \"compact\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cluster = new Gcp.ManagedKafka.Cluster(\"cluster\", new()\n {\n ClusterId = \"my-cluster\",\n Location = \"us-central1\",\n CapacityConfig = new Gcp.ManagedKafka.Inputs.ClusterCapacityConfigArgs\n {\n VcpuCount = \"3\",\n MemoryBytes = \"3221225472\",\n },\n GcpConfig = new Gcp.ManagedKafka.Inputs.ClusterGcpConfigArgs\n {\n AccessConfig = new Gcp.ManagedKafka.Inputs.ClusterGcpConfigAccessConfigArgs\n {\n NetworkConfigs = new[]\n {\n new Gcp.ManagedKafka.Inputs.ClusterGcpConfigAccessConfigNetworkConfigArgs\n {\n Subnet = $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/regions/us-central1/subnetworks/default\",\n },\n },\n },\n },\n });\n\n var example = new Gcp.ManagedKafka.Topic(\"example\", new()\n {\n TopicId = \"my-topic\",\n Cluster = cluster.ClusterId,\n Location = \"us-central1\",\n PartitionCount = 2,\n ReplicationFactor = 3,\n Configs = \n {\n { \"cleanup.policy\", \"compact\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/managedkafka\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcluster, err := managedkafka.NewCluster(ctx, \"cluster\", \u0026managedkafka.ClusterArgs{\n\t\t\tClusterId: pulumi.String(\"my-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tCapacityConfig: \u0026managedkafka.ClusterCapacityConfigArgs{\n\t\t\t\tVcpuCount: pulumi.String(\"3\"),\n\t\t\t\tMemoryBytes: pulumi.String(\"3221225472\"),\n\t\t\t},\n\t\t\tGcpConfig: \u0026managedkafka.ClusterGcpConfigArgs{\n\t\t\t\tAccessConfig: \u0026managedkafka.ClusterGcpConfigAccessConfigArgs{\n\t\t\t\t\tNetworkConfigs: managedkafka.ClusterGcpConfigAccessConfigNetworkConfigArray{\n\t\t\t\t\t\t\u0026managedkafka.ClusterGcpConfigAccessConfigNetworkConfigArgs{\n\t\t\t\t\t\t\tSubnet: pulumi.Sprintf(\"projects/%v/regions/us-central1/subnetworks/default\", project.Number),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = managedkafka.NewTopic(ctx, \"example\", \u0026managedkafka.TopicArgs{\n\t\t\tTopicId: pulumi.String(\"my-topic\"),\n\t\t\tCluster: cluster.ClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPartitionCount: pulumi.Int(2),\n\t\t\tReplicationFactor: pulumi.Int(3),\n\t\t\tConfigs: pulumi.StringMap{\n\t\t\t\t\"cleanup.policy\": pulumi.String(\"compact\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.managedkafka.Cluster;\nimport com.pulumi.gcp.managedkafka.ClusterArgs;\nimport com.pulumi.gcp.managedkafka.inputs.ClusterCapacityConfigArgs;\nimport com.pulumi.gcp.managedkafka.inputs.ClusterGcpConfigArgs;\nimport com.pulumi.gcp.managedkafka.inputs.ClusterGcpConfigAccessConfigArgs;\nimport com.pulumi.gcp.managedkafka.Topic;\nimport com.pulumi.gcp.managedkafka.TopicArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var cluster = new Cluster(\"cluster\", ClusterArgs.builder()\n .clusterId(\"my-cluster\")\n .location(\"us-central1\")\n .capacityConfig(ClusterCapacityConfigArgs.builder()\n .vcpuCount(3)\n .memoryBytes(3221225472)\n .build())\n .gcpConfig(ClusterGcpConfigArgs.builder()\n .accessConfig(ClusterGcpConfigAccessConfigArgs.builder()\n .networkConfigs(ClusterGcpConfigAccessConfigNetworkConfigArgs.builder()\n .subnet(String.format(\"projects/%s/regions/us-central1/subnetworks/default\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build())\n .build())\n .build())\n .build());\n\n var example = new Topic(\"example\", TopicArgs.builder()\n .topicId(\"my-topic\")\n .cluster(cluster.clusterId())\n .location(\"us-central1\")\n .partitionCount(2)\n .replicationFactor(3)\n .configs(Map.of(\"cleanup.policy\", \"compact\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster:\n type: gcp:managedkafka:Cluster\n properties:\n clusterId: my-cluster\n location: us-central1\n capacityConfig:\n vcpuCount: 3\n memoryBytes: 3.221225472e+09\n gcpConfig:\n accessConfig:\n networkConfigs:\n - subnet: projects/${project.number}/regions/us-central1/subnetworks/default\n example:\n type: gcp:managedkafka:Topic\n properties:\n topicId: my-topic\n cluster: ${cluster.clusterId}\n location: us-central1\n partitionCount: 2\n replicationFactor: 3\n configs:\n cleanup.policy: compact\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTopic can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/clusters/{{cluster}}/topics/{{topic_id}}`\n\n* `{{project}}/{{location}}/{{cluster}}/{{topic_id}}`\n\n* `{{location}}/{{cluster}}/{{topic_id}}`\n\nWhen using the `pulumi import` command, Topic can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:managedkafka/topic:Topic default projects/{{project}}/locations/{{location}}/clusters/{{cluster}}/topics/{{topic_id}}\n```\n\n```sh\n$ pulumi import gcp:managedkafka/topic:Topic default {{project}}/{{location}}/{{cluster}}/{{topic_id}}\n```\n\n```sh\n$ pulumi import gcp:managedkafka/topic:Topic default {{location}}/{{cluster}}/{{topic_id}}\n```\n\n", "properties": { "cluster": { "type": "string", @@ -219384,7 +219384,7 @@ } }, "gcp:memorystore/instance:Instance": { - "description": "## Example Usage\n\n### Memorystore Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst producerNet = new gcp.compute.Network(\"producer_net\", {\n name: \"my-network\",\n autoCreateSubnetworks: false,\n});\nconst producerSubnet = new gcp.compute.Subnetwork(\"producer_subnet\", {\n name: \"my-subnet\",\n ipCidrRange: \"10.0.0.248/29\",\n region: \"us-central1\",\n network: producerNet.id,\n});\nconst _default = new gcp.networkconnectivity.ServiceConnectionPolicy(\"default\", {\n name: \"my-policy\",\n location: \"us-central1\",\n serviceClass: \"gcp-memorystore\",\n description: \"my basic service connection policy\",\n network: producerNet.id,\n pscConfig: {\n subnetworks: [producerSubnet.id],\n },\n});\nconst project = gcp.organizations.getProject({});\nconst instance_basic = new gcp.memorystore.Instance(\"instance-basic\", {\n instanceId: \"basic-instance\",\n shardCount: 3,\n desiredPscAutoConnections: [{\n network: producerNet.id,\n projectId: project.then(project =\u003e project.projectId),\n }],\n location: \"us-central1\",\n deletionProtectionEnabled: false,\n}, {\n dependsOn: [_default],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproducer_net = gcp.compute.Network(\"producer_net\",\n name=\"my-network\",\n auto_create_subnetworks=False)\nproducer_subnet = gcp.compute.Subnetwork(\"producer_subnet\",\n name=\"my-subnet\",\n ip_cidr_range=\"10.0.0.248/29\",\n region=\"us-central1\",\n network=producer_net.id)\ndefault = gcp.networkconnectivity.ServiceConnectionPolicy(\"default\",\n name=\"my-policy\",\n location=\"us-central1\",\n service_class=\"gcp-memorystore\",\n description=\"my basic service connection policy\",\n network=producer_net.id,\n psc_config={\n \"subnetworks\": [producer_subnet.id],\n })\nproject = gcp.organizations.get_project()\ninstance_basic = gcp.memorystore.Instance(\"instance-basic\",\n instance_id=\"basic-instance\",\n shard_count=3,\n desired_psc_auto_connections=[{\n \"network\": producer_net.id,\n \"project_id\": project.project_id,\n }],\n location=\"us-central1\",\n deletion_protection_enabled=False,\n opts = pulumi.ResourceOptions(depends_on=[default]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var producerNet = new Gcp.Compute.Network(\"producer_net\", new()\n {\n Name = \"my-network\",\n AutoCreateSubnetworks = false,\n });\n\n var producerSubnet = new Gcp.Compute.Subnetwork(\"producer_subnet\", new()\n {\n Name = \"my-subnet\",\n IpCidrRange = \"10.0.0.248/29\",\n Region = \"us-central1\",\n Network = producerNet.Id,\n });\n\n var @default = new Gcp.NetworkConnectivity.ServiceConnectionPolicy(\"default\", new()\n {\n Name = \"my-policy\",\n Location = \"us-central1\",\n ServiceClass = \"gcp-memorystore\",\n Description = \"my basic service connection policy\",\n Network = producerNet.Id,\n PscConfig = new Gcp.NetworkConnectivity.Inputs.ServiceConnectionPolicyPscConfigArgs\n {\n Subnetworks = new[]\n {\n producerSubnet.Id,\n },\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var instance_basic = new Gcp.MemoryStore.Instance(\"instance-basic\", new()\n {\n InstanceId = \"basic-instance\",\n ShardCount = 3,\n DesiredPscAutoConnections = new[]\n {\n new Gcp.MemoryStore.Inputs.InstanceDesiredPscAutoConnectionArgs\n {\n Network = producerNet.Id,\n ProjectId = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n },\n },\n Location = \"us-central1\",\n DeletionProtectionEnabled = false,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @default,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/memorystore\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkconnectivity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproducerNet, err := compute.NewNetwork(ctx, \"producer_net\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproducerSubnet, err := compute.NewSubnetwork(ctx, \"producer_subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"my-subnet\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.248/29\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: producerNet.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkconnectivity.NewServiceConnectionPolicy(ctx, \"default\", \u0026networkconnectivity.ServiceConnectionPolicyArgs{\n\t\t\tName: pulumi.String(\"my-policy\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tServiceClass: pulumi.String(\"gcp-memorystore\"),\n\t\t\tDescription: pulumi.String(\"my basic service connection policy\"),\n\t\t\tNetwork: producerNet.ID(),\n\t\t\tPscConfig: \u0026networkconnectivity.ServiceConnectionPolicyPscConfigArgs{\n\t\t\t\tSubnetworks: pulumi.StringArray{\n\t\t\t\t\tproducerSubnet.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\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = memorystore.NewInstance(ctx, \"instance-basic\", \u0026memorystore.InstanceArgs{\n\t\t\tInstanceId: pulumi.String(\"basic-instance\"),\n\t\t\tShardCount: pulumi.Int(3),\n\t\t\tDesiredPscAutoConnections: memorystore.InstanceDesiredPscAutoConnectionArray{\n\t\t\t\t\u0026memorystore.InstanceDesiredPscAutoConnectionArgs{\n\t\t\t\t\tNetwork: producerNet.ID(),\n\t\t\t\t\tProjectId: pulumi.String(project.ProjectId),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtectionEnabled: pulumi.Bool(false),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\t_default,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.networkconnectivity.ServiceConnectionPolicy;\nimport com.pulumi.gcp.networkconnectivity.ServiceConnectionPolicyArgs;\nimport com.pulumi.gcp.networkconnectivity.inputs.ServiceConnectionPolicyPscConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.memorystore.Instance;\nimport com.pulumi.gcp.memorystore.InstanceArgs;\nimport com.pulumi.gcp.memorystore.inputs.InstanceDesiredPscAutoConnectionArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var producerNet = new Network(\"producerNet\", NetworkArgs.builder()\n .name(\"my-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var producerSubnet = new Subnetwork(\"producerSubnet\", SubnetworkArgs.builder()\n .name(\"my-subnet\")\n .ipCidrRange(\"10.0.0.248/29\")\n .region(\"us-central1\")\n .network(producerNet.id())\n .build());\n\n var default_ = new ServiceConnectionPolicy(\"default\", ServiceConnectionPolicyArgs.builder()\n .name(\"my-policy\")\n .location(\"us-central1\")\n .serviceClass(\"gcp-memorystore\")\n .description(\"my basic service connection policy\")\n .network(producerNet.id())\n .pscConfig(ServiceConnectionPolicyPscConfigArgs.builder()\n .subnetworks(producerSubnet.id())\n .build())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var instance_basic = new Instance(\"instance-basic\", InstanceArgs.builder()\n .instanceId(\"basic-instance\")\n .shardCount(3)\n .desiredPscAutoConnections(InstanceDesiredPscAutoConnectionArgs.builder()\n .network(producerNet.id())\n .projectId(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .build())\n .location(\"us-central1\")\n .deletionProtectionEnabled(false)\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance-basic:\n type: gcp:memorystore:Instance\n properties:\n instanceId: basic-instance\n shardCount: 3\n desiredPscAutoConnections:\n - network: ${producerNet.id}\n projectId: ${project.projectId}\n location: us-central1\n deletionProtectionEnabled: false\n options:\n dependson:\n - ${default}\n default:\n type: gcp:networkconnectivity:ServiceConnectionPolicy\n properties:\n name: my-policy\n location: us-central1\n serviceClass: gcp-memorystore\n description: my basic service connection policy\n network: ${producerNet.id}\n pscConfig:\n subnetworks:\n - ${producerSubnet.id}\n producerSubnet:\n type: gcp:compute:Subnetwork\n name: producer_subnet\n properties:\n name: my-subnet\n ipCidrRange: 10.0.0.248/29\n region: us-central1\n network: ${producerNet.id}\n producerNet:\n type: gcp:compute:Network\n name: producer_net\n properties:\n name: my-network\n autoCreateSubnetworks: false\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Memorystore Instance Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst producerNet = new gcp.compute.Network(\"producer_net\", {\n name: \"my-network\",\n autoCreateSubnetworks: false,\n});\nconst producerSubnet = new gcp.compute.Subnetwork(\"producer_subnet\", {\n name: \"my-subnet\",\n ipCidrRange: \"10.0.0.248/29\",\n region: \"us-central1\",\n network: producerNet.id,\n});\nconst _default = new gcp.networkconnectivity.ServiceConnectionPolicy(\"default\", {\n name: \"my-policy\",\n location: \"us-central1\",\n serviceClass: \"gcp-memorystore\",\n description: \"my basic service connection policy\",\n network: producerNet.id,\n pscConfig: {\n subnetworks: [producerSubnet.id],\n },\n});\nconst project = gcp.organizations.getProject({});\nconst instance_full = new gcp.memorystore.Instance(\"instance-full\", {\n instanceId: \"full-instance\",\n shardCount: 3,\n desiredPscAutoConnections: [{\n network: producerNet.id,\n projectId: project.then(project =\u003e project.projectId),\n }],\n location: \"us-central1\",\n replicaCount: 2,\n nodeType: \"SHARED_CORE_NANO\",\n transitEncryptionMode: \"TRANSIT_ENCRYPTION_DISABLED\",\n authorizationMode: \"AUTH_DISABLED\",\n engineConfigs: {\n \"maxmemory-policy\": \"volatile-ttl\",\n },\n zoneDistributionConfig: {\n mode: \"SINGLE_ZONE\",\n zone: \"us-central1-b\",\n },\n engineVersion: \"VALKEY_7_2\",\n deletionProtectionEnabled: false,\n persistenceConfig: {\n mode: \"RDB\",\n rdbConfig: {\n rdbSnapshotPeriod: \"ONE_HOUR\",\n rdbSnapshotStartTime: \"2024-10-02T15:01:23Z\",\n },\n },\n labels: {\n abc: \"xyz\",\n },\n}, {\n dependsOn: [_default],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproducer_net = gcp.compute.Network(\"producer_net\",\n name=\"my-network\",\n auto_create_subnetworks=False)\nproducer_subnet = gcp.compute.Subnetwork(\"producer_subnet\",\n name=\"my-subnet\",\n ip_cidr_range=\"10.0.0.248/29\",\n region=\"us-central1\",\n network=producer_net.id)\ndefault = gcp.networkconnectivity.ServiceConnectionPolicy(\"default\",\n name=\"my-policy\",\n location=\"us-central1\",\n service_class=\"gcp-memorystore\",\n description=\"my basic service connection policy\",\n network=producer_net.id,\n psc_config={\n \"subnetworks\": [producer_subnet.id],\n })\nproject = gcp.organizations.get_project()\ninstance_full = gcp.memorystore.Instance(\"instance-full\",\n instance_id=\"full-instance\",\n shard_count=3,\n desired_psc_auto_connections=[{\n \"network\": producer_net.id,\n \"project_id\": project.project_id,\n }],\n location=\"us-central1\",\n replica_count=2,\n node_type=\"SHARED_CORE_NANO\",\n transit_encryption_mode=\"TRANSIT_ENCRYPTION_DISABLED\",\n authorization_mode=\"AUTH_DISABLED\",\n engine_configs={\n \"maxmemory-policy\": \"volatile-ttl\",\n },\n zone_distribution_config={\n \"mode\": \"SINGLE_ZONE\",\n \"zone\": \"us-central1-b\",\n },\n engine_version=\"VALKEY_7_2\",\n deletion_protection_enabled=False,\n persistence_config={\n \"mode\": \"RDB\",\n \"rdb_config\": {\n \"rdb_snapshot_period\": \"ONE_HOUR\",\n \"rdb_snapshot_start_time\": \"2024-10-02T15:01:23Z\",\n },\n },\n labels={\n \"abc\": \"xyz\",\n },\n opts = pulumi.ResourceOptions(depends_on=[default]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var producerNet = new Gcp.Compute.Network(\"producer_net\", new()\n {\n Name = \"my-network\",\n AutoCreateSubnetworks = false,\n });\n\n var producerSubnet = new Gcp.Compute.Subnetwork(\"producer_subnet\", new()\n {\n Name = \"my-subnet\",\n IpCidrRange = \"10.0.0.248/29\",\n Region = \"us-central1\",\n Network = producerNet.Id,\n });\n\n var @default = new Gcp.NetworkConnectivity.ServiceConnectionPolicy(\"default\", new()\n {\n Name = \"my-policy\",\n Location = \"us-central1\",\n ServiceClass = \"gcp-memorystore\",\n Description = \"my basic service connection policy\",\n Network = producerNet.Id,\n PscConfig = new Gcp.NetworkConnectivity.Inputs.ServiceConnectionPolicyPscConfigArgs\n {\n Subnetworks = new[]\n {\n producerSubnet.Id,\n },\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var instance_full = new Gcp.MemoryStore.Instance(\"instance-full\", new()\n {\n InstanceId = \"full-instance\",\n ShardCount = 3,\n DesiredPscAutoConnections = new[]\n {\n new Gcp.MemoryStore.Inputs.InstanceDesiredPscAutoConnectionArgs\n {\n Network = producerNet.Id,\n ProjectId = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n },\n },\n Location = \"us-central1\",\n ReplicaCount = 2,\n NodeType = \"SHARED_CORE_NANO\",\n TransitEncryptionMode = \"TRANSIT_ENCRYPTION_DISABLED\",\n AuthorizationMode = \"AUTH_DISABLED\",\n EngineConfigs = \n {\n { \"maxmemory-policy\", \"volatile-ttl\" },\n },\n ZoneDistributionConfig = new Gcp.MemoryStore.Inputs.InstanceZoneDistributionConfigArgs\n {\n Mode = \"SINGLE_ZONE\",\n Zone = \"us-central1-b\",\n },\n EngineVersion = \"VALKEY_7_2\",\n DeletionProtectionEnabled = false,\n PersistenceConfig = new Gcp.MemoryStore.Inputs.InstancePersistenceConfigArgs\n {\n Mode = \"RDB\",\n RdbConfig = new Gcp.MemoryStore.Inputs.InstancePersistenceConfigRdbConfigArgs\n {\n RdbSnapshotPeriod = \"ONE_HOUR\",\n RdbSnapshotStartTime = \"2024-10-02T15:01:23Z\",\n },\n },\n Labels = \n {\n { \"abc\", \"xyz\" },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @default,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/memorystore\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkconnectivity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproducerNet, err := compute.NewNetwork(ctx, \"producer_net\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproducerSubnet, err := compute.NewSubnetwork(ctx, \"producer_subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"my-subnet\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.248/29\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: producerNet.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkconnectivity.NewServiceConnectionPolicy(ctx, \"default\", \u0026networkconnectivity.ServiceConnectionPolicyArgs{\n\t\t\tName: pulumi.String(\"my-policy\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tServiceClass: pulumi.String(\"gcp-memorystore\"),\n\t\t\tDescription: pulumi.String(\"my basic service connection policy\"),\n\t\t\tNetwork: producerNet.ID(),\n\t\t\tPscConfig: \u0026networkconnectivity.ServiceConnectionPolicyPscConfigArgs{\n\t\t\t\tSubnetworks: pulumi.StringArray{\n\t\t\t\t\tproducerSubnet.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\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = memorystore.NewInstance(ctx, \"instance-full\", \u0026memorystore.InstanceArgs{\n\t\t\tInstanceId: pulumi.String(\"full-instance\"),\n\t\t\tShardCount: pulumi.Int(3),\n\t\t\tDesiredPscAutoConnections: memorystore.InstanceDesiredPscAutoConnectionArray{\n\t\t\t\t\u0026memorystore.InstanceDesiredPscAutoConnectionArgs{\n\t\t\t\t\tNetwork: producerNet.ID(),\n\t\t\t\t\tProjectId: pulumi.String(project.ProjectId),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tReplicaCount: pulumi.Int(2),\n\t\t\tNodeType: pulumi.String(\"SHARED_CORE_NANO\"),\n\t\t\tTransitEncryptionMode: pulumi.String(\"TRANSIT_ENCRYPTION_DISABLED\"),\n\t\t\tAuthorizationMode: pulumi.String(\"AUTH_DISABLED\"),\n\t\t\tEngineConfigs: pulumi.StringMap{\n\t\t\t\t\"maxmemory-policy\": pulumi.String(\"volatile-ttl\"),\n\t\t\t},\n\t\t\tZoneDistributionConfig: \u0026memorystore.InstanceZoneDistributionConfigArgs{\n\t\t\t\tMode: pulumi.String(\"SINGLE_ZONE\"),\n\t\t\t\tZone: pulumi.String(\"us-central1-b\"),\n\t\t\t},\n\t\t\tEngineVersion: pulumi.String(\"VALKEY_7_2\"),\n\t\t\tDeletionProtectionEnabled: pulumi.Bool(false),\n\t\t\tPersistenceConfig: \u0026memorystore.InstancePersistenceConfigArgs{\n\t\t\t\tMode: pulumi.String(\"RDB\"),\n\t\t\t\tRdbConfig: \u0026memorystore.InstancePersistenceConfigRdbConfigArgs{\n\t\t\t\t\tRdbSnapshotPeriod: pulumi.String(\"ONE_HOUR\"),\n\t\t\t\t\tRdbSnapshotStartTime: pulumi.String(\"2024-10-02T15:01:23Z\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"abc\": pulumi.String(\"xyz\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\t_default,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.networkconnectivity.ServiceConnectionPolicy;\nimport com.pulumi.gcp.networkconnectivity.ServiceConnectionPolicyArgs;\nimport com.pulumi.gcp.networkconnectivity.inputs.ServiceConnectionPolicyPscConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.memorystore.Instance;\nimport com.pulumi.gcp.memorystore.InstanceArgs;\nimport com.pulumi.gcp.memorystore.inputs.InstanceDesiredPscAutoConnectionArgs;\nimport com.pulumi.gcp.memorystore.inputs.InstanceZoneDistributionConfigArgs;\nimport com.pulumi.gcp.memorystore.inputs.InstancePersistenceConfigArgs;\nimport com.pulumi.gcp.memorystore.inputs.InstancePersistenceConfigRdbConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var producerNet = new Network(\"producerNet\", NetworkArgs.builder()\n .name(\"my-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var producerSubnet = new Subnetwork(\"producerSubnet\", SubnetworkArgs.builder()\n .name(\"my-subnet\")\n .ipCidrRange(\"10.0.0.248/29\")\n .region(\"us-central1\")\n .network(producerNet.id())\n .build());\n\n var default_ = new ServiceConnectionPolicy(\"default\", ServiceConnectionPolicyArgs.builder()\n .name(\"my-policy\")\n .location(\"us-central1\")\n .serviceClass(\"gcp-memorystore\")\n .description(\"my basic service connection policy\")\n .network(producerNet.id())\n .pscConfig(ServiceConnectionPolicyPscConfigArgs.builder()\n .subnetworks(producerSubnet.id())\n .build())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var instance_full = new Instance(\"instance-full\", InstanceArgs.builder()\n .instanceId(\"full-instance\")\n .shardCount(3)\n .desiredPscAutoConnections(InstanceDesiredPscAutoConnectionArgs.builder()\n .network(producerNet.id())\n .projectId(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .build())\n .location(\"us-central1\")\n .replicaCount(2)\n .nodeType(\"SHARED_CORE_NANO\")\n .transitEncryptionMode(\"TRANSIT_ENCRYPTION_DISABLED\")\n .authorizationMode(\"AUTH_DISABLED\")\n .engineConfigs(Map.of(\"maxmemory-policy\", \"volatile-ttl\"))\n .zoneDistributionConfig(InstanceZoneDistributionConfigArgs.builder()\n .mode(\"SINGLE_ZONE\")\n .zone(\"us-central1-b\")\n .build())\n .engineVersion(\"VALKEY_7_2\")\n .deletionProtectionEnabled(false)\n .persistenceConfig(InstancePersistenceConfigArgs.builder()\n .mode(\"RDB\")\n .rdbConfig(InstancePersistenceConfigRdbConfigArgs.builder()\n .rdbSnapshotPeriod(\"ONE_HOUR\")\n .rdbSnapshotStartTime(\"2024-10-02T15:01:23Z\")\n .build())\n .build())\n .labels(Map.of(\"abc\", \"xyz\"))\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance-full:\n type: gcp:memorystore:Instance\n properties:\n instanceId: full-instance\n shardCount: 3\n desiredPscAutoConnections:\n - network: ${producerNet.id}\n projectId: ${project.projectId}\n location: us-central1\n replicaCount: 2\n nodeType: SHARED_CORE_NANO\n transitEncryptionMode: TRANSIT_ENCRYPTION_DISABLED\n authorizationMode: AUTH_DISABLED\n engineConfigs:\n maxmemory-policy: volatile-ttl\n zoneDistributionConfig:\n mode: SINGLE_ZONE\n zone: us-central1-b\n engineVersion: VALKEY_7_2\n deletionProtectionEnabled: false\n persistenceConfig:\n mode: RDB\n rdbConfig:\n rdbSnapshotPeriod: ONE_HOUR\n rdbSnapshotStartTime: 2024-10-02T15:01:23Z\n labels:\n abc: xyz\n options:\n dependson:\n - ${default}\n default:\n type: gcp:networkconnectivity:ServiceConnectionPolicy\n properties:\n name: my-policy\n location: us-central1\n serviceClass: gcp-memorystore\n description: my basic service connection policy\n network: ${producerNet.id}\n pscConfig:\n subnetworks:\n - ${producerSubnet.id}\n producerSubnet:\n type: gcp:compute:Subnetwork\n name: producer_subnet\n properties:\n name: my-subnet\n ipCidrRange: 10.0.0.248/29\n region: us-central1\n network: ${producerNet.id}\n producerNet:\n type: gcp:compute:Network\n name: producer_net\n properties:\n name: my-network\n autoCreateSubnetworks: false\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Memorystore Instance Persistence Aof\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst producerNet = new gcp.compute.Network(\"producer_net\", {\n name: \"my-network\",\n autoCreateSubnetworks: false,\n});\nconst producerSubnet = new gcp.compute.Subnetwork(\"producer_subnet\", {\n name: \"my-subnet\",\n ipCidrRange: \"10.0.0.248/29\",\n region: \"us-central1\",\n network: producerNet.id,\n});\nconst _default = new gcp.networkconnectivity.ServiceConnectionPolicy(\"default\", {\n name: \"my-policy\",\n location: \"us-central1\",\n serviceClass: \"gcp-memorystore\",\n description: \"my basic service connection policy\",\n network: producerNet.id,\n pscConfig: {\n subnetworks: [producerSubnet.id],\n },\n});\nconst project = gcp.organizations.getProject({});\nconst instance_persistence_aof = new gcp.memorystore.Instance(\"instance-persistence-aof\", {\n instanceId: \"aof-instance\",\n shardCount: 3,\n desiredPscAutoConnections: [{\n network: producerNet.id,\n projectId: project.then(project =\u003e project.projectId),\n }],\n location: \"us-central1\",\n persistenceConfig: {\n mode: \"AOF\",\n aofConfig: {\n appendFsync: \"EVERY_SEC\",\n },\n },\n deletionProtectionEnabled: false,\n}, {\n dependsOn: [_default],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproducer_net = gcp.compute.Network(\"producer_net\",\n name=\"my-network\",\n auto_create_subnetworks=False)\nproducer_subnet = gcp.compute.Subnetwork(\"producer_subnet\",\n name=\"my-subnet\",\n ip_cidr_range=\"10.0.0.248/29\",\n region=\"us-central1\",\n network=producer_net.id)\ndefault = gcp.networkconnectivity.ServiceConnectionPolicy(\"default\",\n name=\"my-policy\",\n location=\"us-central1\",\n service_class=\"gcp-memorystore\",\n description=\"my basic service connection policy\",\n network=producer_net.id,\n psc_config={\n \"subnetworks\": [producer_subnet.id],\n })\nproject = gcp.organizations.get_project()\ninstance_persistence_aof = gcp.memorystore.Instance(\"instance-persistence-aof\",\n instance_id=\"aof-instance\",\n shard_count=3,\n desired_psc_auto_connections=[{\n \"network\": producer_net.id,\n \"project_id\": project.project_id,\n }],\n location=\"us-central1\",\n persistence_config={\n \"mode\": \"AOF\",\n \"aof_config\": {\n \"append_fsync\": \"EVERY_SEC\",\n },\n },\n deletion_protection_enabled=False,\n opts = pulumi.ResourceOptions(depends_on=[default]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var producerNet = new Gcp.Compute.Network(\"producer_net\", new()\n {\n Name = \"my-network\",\n AutoCreateSubnetworks = false,\n });\n\n var producerSubnet = new Gcp.Compute.Subnetwork(\"producer_subnet\", new()\n {\n Name = \"my-subnet\",\n IpCidrRange = \"10.0.0.248/29\",\n Region = \"us-central1\",\n Network = producerNet.Id,\n });\n\n var @default = new Gcp.NetworkConnectivity.ServiceConnectionPolicy(\"default\", new()\n {\n Name = \"my-policy\",\n Location = \"us-central1\",\n ServiceClass = \"gcp-memorystore\",\n Description = \"my basic service connection policy\",\n Network = producerNet.Id,\n PscConfig = new Gcp.NetworkConnectivity.Inputs.ServiceConnectionPolicyPscConfigArgs\n {\n Subnetworks = new[]\n {\n producerSubnet.Id,\n },\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var instance_persistence_aof = new Gcp.MemoryStore.Instance(\"instance-persistence-aof\", new()\n {\n InstanceId = \"aof-instance\",\n ShardCount = 3,\n DesiredPscAutoConnections = new[]\n {\n new Gcp.MemoryStore.Inputs.InstanceDesiredPscAutoConnectionArgs\n {\n Network = producerNet.Id,\n ProjectId = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n },\n },\n Location = \"us-central1\",\n PersistenceConfig = new Gcp.MemoryStore.Inputs.InstancePersistenceConfigArgs\n {\n Mode = \"AOF\",\n AofConfig = new Gcp.MemoryStore.Inputs.InstancePersistenceConfigAofConfigArgs\n {\n AppendFsync = \"EVERY_SEC\",\n },\n },\n DeletionProtectionEnabled = false,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @default,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/memorystore\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkconnectivity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproducerNet, err := compute.NewNetwork(ctx, \"producer_net\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproducerSubnet, err := compute.NewSubnetwork(ctx, \"producer_subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"my-subnet\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.248/29\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: producerNet.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkconnectivity.NewServiceConnectionPolicy(ctx, \"default\", \u0026networkconnectivity.ServiceConnectionPolicyArgs{\n\t\t\tName: pulumi.String(\"my-policy\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tServiceClass: pulumi.String(\"gcp-memorystore\"),\n\t\t\tDescription: pulumi.String(\"my basic service connection policy\"),\n\t\t\tNetwork: producerNet.ID(),\n\t\t\tPscConfig: \u0026networkconnectivity.ServiceConnectionPolicyPscConfigArgs{\n\t\t\t\tSubnetworks: pulumi.StringArray{\n\t\t\t\t\tproducerSubnet.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\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = memorystore.NewInstance(ctx, \"instance-persistence-aof\", \u0026memorystore.InstanceArgs{\n\t\t\tInstanceId: pulumi.String(\"aof-instance\"),\n\t\t\tShardCount: pulumi.Int(3),\n\t\t\tDesiredPscAutoConnections: memorystore.InstanceDesiredPscAutoConnectionArray{\n\t\t\t\t\u0026memorystore.InstanceDesiredPscAutoConnectionArgs{\n\t\t\t\t\tNetwork: producerNet.ID(),\n\t\t\t\t\tProjectId: pulumi.String(project.ProjectId),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPersistenceConfig: \u0026memorystore.InstancePersistenceConfigArgs{\n\t\t\t\tMode: pulumi.String(\"AOF\"),\n\t\t\t\tAofConfig: \u0026memorystore.InstancePersistenceConfigAofConfigArgs{\n\t\t\t\t\tAppendFsync: pulumi.String(\"EVERY_SEC\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtectionEnabled: pulumi.Bool(false),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\t_default,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.networkconnectivity.ServiceConnectionPolicy;\nimport com.pulumi.gcp.networkconnectivity.ServiceConnectionPolicyArgs;\nimport com.pulumi.gcp.networkconnectivity.inputs.ServiceConnectionPolicyPscConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.memorystore.Instance;\nimport com.pulumi.gcp.memorystore.InstanceArgs;\nimport com.pulumi.gcp.memorystore.inputs.InstanceDesiredPscAutoConnectionArgs;\nimport com.pulumi.gcp.memorystore.inputs.InstancePersistenceConfigArgs;\nimport com.pulumi.gcp.memorystore.inputs.InstancePersistenceConfigAofConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var producerNet = new Network(\"producerNet\", NetworkArgs.builder()\n .name(\"my-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var producerSubnet = new Subnetwork(\"producerSubnet\", SubnetworkArgs.builder()\n .name(\"my-subnet\")\n .ipCidrRange(\"10.0.0.248/29\")\n .region(\"us-central1\")\n .network(producerNet.id())\n .build());\n\n var default_ = new ServiceConnectionPolicy(\"default\", ServiceConnectionPolicyArgs.builder()\n .name(\"my-policy\")\n .location(\"us-central1\")\n .serviceClass(\"gcp-memorystore\")\n .description(\"my basic service connection policy\")\n .network(producerNet.id())\n .pscConfig(ServiceConnectionPolicyPscConfigArgs.builder()\n .subnetworks(producerSubnet.id())\n .build())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var instance_persistence_aof = new Instance(\"instance-persistence-aof\", InstanceArgs.builder()\n .instanceId(\"aof-instance\")\n .shardCount(3)\n .desiredPscAutoConnections(InstanceDesiredPscAutoConnectionArgs.builder()\n .network(producerNet.id())\n .projectId(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .build())\n .location(\"us-central1\")\n .persistenceConfig(InstancePersistenceConfigArgs.builder()\n .mode(\"AOF\")\n .aofConfig(InstancePersistenceConfigAofConfigArgs.builder()\n .appendFsync(\"EVERY_SEC\")\n .build())\n .build())\n .deletionProtectionEnabled(false)\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance-persistence-aof:\n type: gcp:memorystore:Instance\n properties:\n instanceId: aof-instance\n shardCount: 3\n desiredPscAutoConnections:\n - network: ${producerNet.id}\n projectId: ${project.projectId}\n location: us-central1\n persistenceConfig:\n mode: AOF\n aofConfig:\n appendFsync: EVERY_SEC\n deletionProtectionEnabled: false\n options:\n dependson:\n - ${default}\n default:\n type: gcp:networkconnectivity:ServiceConnectionPolicy\n properties:\n name: my-policy\n location: us-central1\n serviceClass: gcp-memorystore\n description: my basic service connection policy\n network: ${producerNet.id}\n pscConfig:\n subnetworks:\n - ${producerSubnet.id}\n producerSubnet:\n type: gcp:compute:Subnetwork\n name: producer_subnet\n properties:\n name: my-subnet\n ipCidrRange: 10.0.0.248/29\n region: us-central1\n network: ${producerNet.id}\n producerNet:\n type: gcp:compute:Network\n name: producer_net\n properties:\n name: my-network\n autoCreateSubnetworks: false\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/instances/{{instance_id}}`\n\n* `{{project}}/{{location}}/{{instance_id}}`\n\n* `{{location}}/{{instance_id}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:memorystore/instance:Instance default projects/{{project}}/locations/{{location}}/instances/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:memorystore/instance:Instance default {{project}}/{{location}}/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:memorystore/instance:Instance default {{location}}/{{instance_id}}\n```\n\n", + "description": "## Example Usage\n\n### Memorystore Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst producerNet = new gcp.compute.Network(\"producer_net\", {\n name: \"my-network\",\n autoCreateSubnetworks: false,\n});\nconst producerSubnet = new gcp.compute.Subnetwork(\"producer_subnet\", {\n name: \"my-subnet\",\n ipCidrRange: \"10.0.0.248/29\",\n region: \"us-central1\",\n network: producerNet.id,\n});\nconst _default = new gcp.networkconnectivity.ServiceConnectionPolicy(\"default\", {\n name: \"my-policy\",\n location: \"us-central1\",\n serviceClass: \"gcp-memorystore\",\n description: \"my basic service connection policy\",\n network: producerNet.id,\n pscConfig: {\n subnetworks: [producerSubnet.id],\n },\n});\nconst project = gcp.organizations.getProject({});\nconst instance_basic = new gcp.memorystore.Instance(\"instance-basic\", {\n instanceId: \"basic-instance\",\n shardCount: 3,\n desiredPscAutoConnections: [{\n network: producerNet.id,\n projectId: project.then(project =\u003e project.projectId),\n }],\n location: \"us-central1\",\n deletionProtectionEnabled: false,\n}, {\n dependsOn: [_default],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproducer_net = gcp.compute.Network(\"producer_net\",\n name=\"my-network\",\n auto_create_subnetworks=False)\nproducer_subnet = gcp.compute.Subnetwork(\"producer_subnet\",\n name=\"my-subnet\",\n ip_cidr_range=\"10.0.0.248/29\",\n region=\"us-central1\",\n network=producer_net.id)\ndefault = gcp.networkconnectivity.ServiceConnectionPolicy(\"default\",\n name=\"my-policy\",\n location=\"us-central1\",\n service_class=\"gcp-memorystore\",\n description=\"my basic service connection policy\",\n network=producer_net.id,\n psc_config={\n \"subnetworks\": [producer_subnet.id],\n })\nproject = gcp.organizations.get_project()\ninstance_basic = gcp.memorystore.Instance(\"instance-basic\",\n instance_id=\"basic-instance\",\n shard_count=3,\n desired_psc_auto_connections=[{\n \"network\": producer_net.id,\n \"project_id\": project.project_id,\n }],\n location=\"us-central1\",\n deletion_protection_enabled=False,\n opts = pulumi.ResourceOptions(depends_on=[default]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var producerNet = new Gcp.Compute.Network(\"producer_net\", new()\n {\n Name = \"my-network\",\n AutoCreateSubnetworks = false,\n });\n\n var producerSubnet = new Gcp.Compute.Subnetwork(\"producer_subnet\", new()\n {\n Name = \"my-subnet\",\n IpCidrRange = \"10.0.0.248/29\",\n Region = \"us-central1\",\n Network = producerNet.Id,\n });\n\n var @default = new Gcp.NetworkConnectivity.ServiceConnectionPolicy(\"default\", new()\n {\n Name = \"my-policy\",\n Location = \"us-central1\",\n ServiceClass = \"gcp-memorystore\",\n Description = \"my basic service connection policy\",\n Network = producerNet.Id,\n PscConfig = new Gcp.NetworkConnectivity.Inputs.ServiceConnectionPolicyPscConfigArgs\n {\n Subnetworks = new[]\n {\n producerSubnet.Id,\n },\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var instance_basic = new Gcp.MemoryStore.Instance(\"instance-basic\", new()\n {\n InstanceId = \"basic-instance\",\n ShardCount = 3,\n DesiredPscAutoConnections = new[]\n {\n new Gcp.MemoryStore.Inputs.InstanceDesiredPscAutoConnectionArgs\n {\n Network = producerNet.Id,\n ProjectId = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n },\n },\n Location = \"us-central1\",\n DeletionProtectionEnabled = false,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @default,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/memorystore\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkconnectivity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproducerNet, err := compute.NewNetwork(ctx, \"producer_net\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproducerSubnet, err := compute.NewSubnetwork(ctx, \"producer_subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"my-subnet\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.248/29\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: producerNet.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkconnectivity.NewServiceConnectionPolicy(ctx, \"default\", \u0026networkconnectivity.ServiceConnectionPolicyArgs{\n\t\t\tName: pulumi.String(\"my-policy\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tServiceClass: pulumi.String(\"gcp-memorystore\"),\n\t\t\tDescription: pulumi.String(\"my basic service connection policy\"),\n\t\t\tNetwork: producerNet.ID(),\n\t\t\tPscConfig: \u0026networkconnectivity.ServiceConnectionPolicyPscConfigArgs{\n\t\t\t\tSubnetworks: pulumi.StringArray{\n\t\t\t\t\tproducerSubnet.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\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = memorystore.NewInstance(ctx, \"instance-basic\", \u0026memorystore.InstanceArgs{\n\t\t\tInstanceId: pulumi.String(\"basic-instance\"),\n\t\t\tShardCount: pulumi.Int(3),\n\t\t\tDesiredPscAutoConnections: memorystore.InstanceDesiredPscAutoConnectionArray{\n\t\t\t\t\u0026memorystore.InstanceDesiredPscAutoConnectionArgs{\n\t\t\t\t\tNetwork: producerNet.ID(),\n\t\t\t\t\tProjectId: pulumi.String(project.ProjectId),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtectionEnabled: pulumi.Bool(false),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\t_default,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.networkconnectivity.ServiceConnectionPolicy;\nimport com.pulumi.gcp.networkconnectivity.ServiceConnectionPolicyArgs;\nimport com.pulumi.gcp.networkconnectivity.inputs.ServiceConnectionPolicyPscConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.memorystore.Instance;\nimport com.pulumi.gcp.memorystore.InstanceArgs;\nimport com.pulumi.gcp.memorystore.inputs.InstanceDesiredPscAutoConnectionArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var producerNet = new Network(\"producerNet\", NetworkArgs.builder()\n .name(\"my-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var producerSubnet = new Subnetwork(\"producerSubnet\", SubnetworkArgs.builder()\n .name(\"my-subnet\")\n .ipCidrRange(\"10.0.0.248/29\")\n .region(\"us-central1\")\n .network(producerNet.id())\n .build());\n\n var default_ = new ServiceConnectionPolicy(\"default\", ServiceConnectionPolicyArgs.builder()\n .name(\"my-policy\")\n .location(\"us-central1\")\n .serviceClass(\"gcp-memorystore\")\n .description(\"my basic service connection policy\")\n .network(producerNet.id())\n .pscConfig(ServiceConnectionPolicyPscConfigArgs.builder()\n .subnetworks(producerSubnet.id())\n .build())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var instance_basic = new Instance(\"instance-basic\", InstanceArgs.builder()\n .instanceId(\"basic-instance\")\n .shardCount(3)\n .desiredPscAutoConnections(InstanceDesiredPscAutoConnectionArgs.builder()\n .network(producerNet.id())\n .projectId(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .build())\n .location(\"us-central1\")\n .deletionProtectionEnabled(false)\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance-basic:\n type: gcp:memorystore:Instance\n properties:\n instanceId: basic-instance\n shardCount: 3\n desiredPscAutoConnections:\n - network: ${producerNet.id}\n projectId: ${project.projectId}\n location: us-central1\n deletionProtectionEnabled: false\n options:\n dependson:\n - ${default}\n default:\n type: gcp:networkconnectivity:ServiceConnectionPolicy\n properties:\n name: my-policy\n location: us-central1\n serviceClass: gcp-memorystore\n description: my basic service connection policy\n network: ${producerNet.id}\n pscConfig:\n subnetworks:\n - ${producerSubnet.id}\n producerSubnet:\n type: gcp:compute:Subnetwork\n name: producer_subnet\n properties:\n name: my-subnet\n ipCidrRange: 10.0.0.248/29\n region: us-central1\n network: ${producerNet.id}\n producerNet:\n type: gcp:compute:Network\n name: producer_net\n properties:\n name: my-network\n autoCreateSubnetworks: false\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Memorystore Instance Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst producerNet = new gcp.compute.Network(\"producer_net\", {\n name: \"my-network\",\n autoCreateSubnetworks: false,\n});\nconst producerSubnet = new gcp.compute.Subnetwork(\"producer_subnet\", {\n name: \"my-subnet\",\n ipCidrRange: \"10.0.0.248/29\",\n region: \"us-central1\",\n network: producerNet.id,\n});\nconst _default = new gcp.networkconnectivity.ServiceConnectionPolicy(\"default\", {\n name: \"my-policy\",\n location: \"us-central1\",\n serviceClass: \"gcp-memorystore\",\n description: \"my basic service connection policy\",\n network: producerNet.id,\n pscConfig: {\n subnetworks: [producerSubnet.id],\n },\n});\nconst project = gcp.organizations.getProject({});\nconst instance_full = new gcp.memorystore.Instance(\"instance-full\", {\n instanceId: \"full-instance\",\n shardCount: 3,\n desiredPscAutoConnections: [{\n network: producerNet.id,\n projectId: project.then(project =\u003e project.projectId),\n }],\n location: \"us-central1\",\n replicaCount: 2,\n nodeType: \"SHARED_CORE_NANO\",\n transitEncryptionMode: \"TRANSIT_ENCRYPTION_DISABLED\",\n authorizationMode: \"AUTH_DISABLED\",\n engineConfigs: {\n \"maxmemory-policy\": \"volatile-ttl\",\n },\n zoneDistributionConfig: {\n mode: \"SINGLE_ZONE\",\n zone: \"us-central1-b\",\n },\n engineVersion: \"VALKEY_7_2\",\n deletionProtectionEnabled: false,\n persistenceConfig: {\n mode: \"RDB\",\n rdbConfig: {\n rdbSnapshotPeriod: \"ONE_HOUR\",\n rdbSnapshotStartTime: \"2024-10-02T15:01:23Z\",\n },\n },\n labels: {\n abc: \"xyz\",\n },\n}, {\n dependsOn: [_default],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproducer_net = gcp.compute.Network(\"producer_net\",\n name=\"my-network\",\n auto_create_subnetworks=False)\nproducer_subnet = gcp.compute.Subnetwork(\"producer_subnet\",\n name=\"my-subnet\",\n ip_cidr_range=\"10.0.0.248/29\",\n region=\"us-central1\",\n network=producer_net.id)\ndefault = gcp.networkconnectivity.ServiceConnectionPolicy(\"default\",\n name=\"my-policy\",\n location=\"us-central1\",\n service_class=\"gcp-memorystore\",\n description=\"my basic service connection policy\",\n network=producer_net.id,\n psc_config={\n \"subnetworks\": [producer_subnet.id],\n })\nproject = gcp.organizations.get_project()\ninstance_full = gcp.memorystore.Instance(\"instance-full\",\n instance_id=\"full-instance\",\n shard_count=3,\n desired_psc_auto_connections=[{\n \"network\": producer_net.id,\n \"project_id\": project.project_id,\n }],\n location=\"us-central1\",\n replica_count=2,\n node_type=\"SHARED_CORE_NANO\",\n transit_encryption_mode=\"TRANSIT_ENCRYPTION_DISABLED\",\n authorization_mode=\"AUTH_DISABLED\",\n engine_configs={\n \"maxmemory-policy\": \"volatile-ttl\",\n },\n zone_distribution_config={\n \"mode\": \"SINGLE_ZONE\",\n \"zone\": \"us-central1-b\",\n },\n engine_version=\"VALKEY_7_2\",\n deletion_protection_enabled=False,\n persistence_config={\n \"mode\": \"RDB\",\n \"rdb_config\": {\n \"rdb_snapshot_period\": \"ONE_HOUR\",\n \"rdb_snapshot_start_time\": \"2024-10-02T15:01:23Z\",\n },\n },\n labels={\n \"abc\": \"xyz\",\n },\n opts = pulumi.ResourceOptions(depends_on=[default]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var producerNet = new Gcp.Compute.Network(\"producer_net\", new()\n {\n Name = \"my-network\",\n AutoCreateSubnetworks = false,\n });\n\n var producerSubnet = new Gcp.Compute.Subnetwork(\"producer_subnet\", new()\n {\n Name = \"my-subnet\",\n IpCidrRange = \"10.0.0.248/29\",\n Region = \"us-central1\",\n Network = producerNet.Id,\n });\n\n var @default = new Gcp.NetworkConnectivity.ServiceConnectionPolicy(\"default\", new()\n {\n Name = \"my-policy\",\n Location = \"us-central1\",\n ServiceClass = \"gcp-memorystore\",\n Description = \"my basic service connection policy\",\n Network = producerNet.Id,\n PscConfig = new Gcp.NetworkConnectivity.Inputs.ServiceConnectionPolicyPscConfigArgs\n {\n Subnetworks = new[]\n {\n producerSubnet.Id,\n },\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var instance_full = new Gcp.MemoryStore.Instance(\"instance-full\", new()\n {\n InstanceId = \"full-instance\",\n ShardCount = 3,\n DesiredPscAutoConnections = new[]\n {\n new Gcp.MemoryStore.Inputs.InstanceDesiredPscAutoConnectionArgs\n {\n Network = producerNet.Id,\n ProjectId = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n },\n },\n Location = \"us-central1\",\n ReplicaCount = 2,\n NodeType = \"SHARED_CORE_NANO\",\n TransitEncryptionMode = \"TRANSIT_ENCRYPTION_DISABLED\",\n AuthorizationMode = \"AUTH_DISABLED\",\n EngineConfigs = \n {\n { \"maxmemory-policy\", \"volatile-ttl\" },\n },\n ZoneDistributionConfig = new Gcp.MemoryStore.Inputs.InstanceZoneDistributionConfigArgs\n {\n Mode = \"SINGLE_ZONE\",\n Zone = \"us-central1-b\",\n },\n EngineVersion = \"VALKEY_7_2\",\n DeletionProtectionEnabled = false,\n PersistenceConfig = new Gcp.MemoryStore.Inputs.InstancePersistenceConfigArgs\n {\n Mode = \"RDB\",\n RdbConfig = new Gcp.MemoryStore.Inputs.InstancePersistenceConfigRdbConfigArgs\n {\n RdbSnapshotPeriod = \"ONE_HOUR\",\n RdbSnapshotStartTime = \"2024-10-02T15:01:23Z\",\n },\n },\n Labels = \n {\n { \"abc\", \"xyz\" },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @default,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/memorystore\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkconnectivity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproducerNet, err := compute.NewNetwork(ctx, \"producer_net\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproducerSubnet, err := compute.NewSubnetwork(ctx, \"producer_subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"my-subnet\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.248/29\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: producerNet.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkconnectivity.NewServiceConnectionPolicy(ctx, \"default\", \u0026networkconnectivity.ServiceConnectionPolicyArgs{\n\t\t\tName: pulumi.String(\"my-policy\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tServiceClass: pulumi.String(\"gcp-memorystore\"),\n\t\t\tDescription: pulumi.String(\"my basic service connection policy\"),\n\t\t\tNetwork: producerNet.ID(),\n\t\t\tPscConfig: \u0026networkconnectivity.ServiceConnectionPolicyPscConfigArgs{\n\t\t\t\tSubnetworks: pulumi.StringArray{\n\t\t\t\t\tproducerSubnet.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\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = memorystore.NewInstance(ctx, \"instance-full\", \u0026memorystore.InstanceArgs{\n\t\t\tInstanceId: pulumi.String(\"full-instance\"),\n\t\t\tShardCount: pulumi.Int(3),\n\t\t\tDesiredPscAutoConnections: memorystore.InstanceDesiredPscAutoConnectionArray{\n\t\t\t\t\u0026memorystore.InstanceDesiredPscAutoConnectionArgs{\n\t\t\t\t\tNetwork: producerNet.ID(),\n\t\t\t\t\tProjectId: pulumi.String(project.ProjectId),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tReplicaCount: pulumi.Int(2),\n\t\t\tNodeType: pulumi.String(\"SHARED_CORE_NANO\"),\n\t\t\tTransitEncryptionMode: pulumi.String(\"TRANSIT_ENCRYPTION_DISABLED\"),\n\t\t\tAuthorizationMode: pulumi.String(\"AUTH_DISABLED\"),\n\t\t\tEngineConfigs: pulumi.StringMap{\n\t\t\t\t\"maxmemory-policy\": pulumi.String(\"volatile-ttl\"),\n\t\t\t},\n\t\t\tZoneDistributionConfig: \u0026memorystore.InstanceZoneDistributionConfigArgs{\n\t\t\t\tMode: pulumi.String(\"SINGLE_ZONE\"),\n\t\t\t\tZone: pulumi.String(\"us-central1-b\"),\n\t\t\t},\n\t\t\tEngineVersion: pulumi.String(\"VALKEY_7_2\"),\n\t\t\tDeletionProtectionEnabled: pulumi.Bool(false),\n\t\t\tPersistenceConfig: \u0026memorystore.InstancePersistenceConfigArgs{\n\t\t\t\tMode: pulumi.String(\"RDB\"),\n\t\t\t\tRdbConfig: \u0026memorystore.InstancePersistenceConfigRdbConfigArgs{\n\t\t\t\t\tRdbSnapshotPeriod: pulumi.String(\"ONE_HOUR\"),\n\t\t\t\t\tRdbSnapshotStartTime: pulumi.String(\"2024-10-02T15:01:23Z\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"abc\": pulumi.String(\"xyz\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\t_default,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.networkconnectivity.ServiceConnectionPolicy;\nimport com.pulumi.gcp.networkconnectivity.ServiceConnectionPolicyArgs;\nimport com.pulumi.gcp.networkconnectivity.inputs.ServiceConnectionPolicyPscConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.memorystore.Instance;\nimport com.pulumi.gcp.memorystore.InstanceArgs;\nimport com.pulumi.gcp.memorystore.inputs.InstanceDesiredPscAutoConnectionArgs;\nimport com.pulumi.gcp.memorystore.inputs.InstanceZoneDistributionConfigArgs;\nimport com.pulumi.gcp.memorystore.inputs.InstancePersistenceConfigArgs;\nimport com.pulumi.gcp.memorystore.inputs.InstancePersistenceConfigRdbConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var producerNet = new Network(\"producerNet\", NetworkArgs.builder()\n .name(\"my-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var producerSubnet = new Subnetwork(\"producerSubnet\", SubnetworkArgs.builder()\n .name(\"my-subnet\")\n .ipCidrRange(\"10.0.0.248/29\")\n .region(\"us-central1\")\n .network(producerNet.id())\n .build());\n\n var default_ = new ServiceConnectionPolicy(\"default\", ServiceConnectionPolicyArgs.builder()\n .name(\"my-policy\")\n .location(\"us-central1\")\n .serviceClass(\"gcp-memorystore\")\n .description(\"my basic service connection policy\")\n .network(producerNet.id())\n .pscConfig(ServiceConnectionPolicyPscConfigArgs.builder()\n .subnetworks(producerSubnet.id())\n .build())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var instance_full = new Instance(\"instance-full\", InstanceArgs.builder()\n .instanceId(\"full-instance\")\n .shardCount(3)\n .desiredPscAutoConnections(InstanceDesiredPscAutoConnectionArgs.builder()\n .network(producerNet.id())\n .projectId(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .build())\n .location(\"us-central1\")\n .replicaCount(2)\n .nodeType(\"SHARED_CORE_NANO\")\n .transitEncryptionMode(\"TRANSIT_ENCRYPTION_DISABLED\")\n .authorizationMode(\"AUTH_DISABLED\")\n .engineConfigs(Map.of(\"maxmemory-policy\", \"volatile-ttl\"))\n .zoneDistributionConfig(InstanceZoneDistributionConfigArgs.builder()\n .mode(\"SINGLE_ZONE\")\n .zone(\"us-central1-b\")\n .build())\n .engineVersion(\"VALKEY_7_2\")\n .deletionProtectionEnabled(false)\n .persistenceConfig(InstancePersistenceConfigArgs.builder()\n .mode(\"RDB\")\n .rdbConfig(InstancePersistenceConfigRdbConfigArgs.builder()\n .rdbSnapshotPeriod(\"ONE_HOUR\")\n .rdbSnapshotStartTime(\"2024-10-02T15:01:23Z\")\n .build())\n .build())\n .labels(Map.of(\"abc\", \"xyz\"))\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance-full:\n type: gcp:memorystore:Instance\n properties:\n instanceId: full-instance\n shardCount: 3\n desiredPscAutoConnections:\n - network: ${producerNet.id}\n projectId: ${project.projectId}\n location: us-central1\n replicaCount: 2\n nodeType: SHARED_CORE_NANO\n transitEncryptionMode: TRANSIT_ENCRYPTION_DISABLED\n authorizationMode: AUTH_DISABLED\n engineConfigs:\n maxmemory-policy: volatile-ttl\n zoneDistributionConfig:\n mode: SINGLE_ZONE\n zone: us-central1-b\n engineVersion: VALKEY_7_2\n deletionProtectionEnabled: false\n persistenceConfig:\n mode: RDB\n rdbConfig:\n rdbSnapshotPeriod: ONE_HOUR\n rdbSnapshotStartTime: 2024-10-02T15:01:23Z\n labels:\n abc: xyz\n options:\n dependson:\n - ${default}\n default:\n type: gcp:networkconnectivity:ServiceConnectionPolicy\n properties:\n name: my-policy\n location: us-central1\n serviceClass: gcp-memorystore\n description: my basic service connection policy\n network: ${producerNet.id}\n pscConfig:\n subnetworks:\n - ${producerSubnet.id}\n producerSubnet:\n type: gcp:compute:Subnetwork\n name: producer_subnet\n properties:\n name: my-subnet\n ipCidrRange: 10.0.0.248/29\n region: us-central1\n network: ${producerNet.id}\n producerNet:\n type: gcp:compute:Network\n name: producer_net\n properties:\n name: my-network\n autoCreateSubnetworks: false\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Memorystore Instance Persistence Aof\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst producerNet = new gcp.compute.Network(\"producer_net\", {\n name: \"my-network\",\n autoCreateSubnetworks: false,\n});\nconst producerSubnet = new gcp.compute.Subnetwork(\"producer_subnet\", {\n name: \"my-subnet\",\n ipCidrRange: \"10.0.0.248/29\",\n region: \"us-central1\",\n network: producerNet.id,\n});\nconst _default = new gcp.networkconnectivity.ServiceConnectionPolicy(\"default\", {\n name: \"my-policy\",\n location: \"us-central1\",\n serviceClass: \"gcp-memorystore\",\n description: \"my basic service connection policy\",\n network: producerNet.id,\n pscConfig: {\n subnetworks: [producerSubnet.id],\n },\n});\nconst project = gcp.organizations.getProject({});\nconst instance_persistence_aof = new gcp.memorystore.Instance(\"instance-persistence-aof\", {\n instanceId: \"aof-instance\",\n shardCount: 3,\n desiredPscAutoConnections: [{\n network: producerNet.id,\n projectId: project.then(project =\u003e project.projectId),\n }],\n location: \"us-central1\",\n persistenceConfig: {\n mode: \"AOF\",\n aofConfig: {\n appendFsync: \"EVERY_SEC\",\n },\n },\n deletionProtectionEnabled: false,\n}, {\n dependsOn: [_default],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproducer_net = gcp.compute.Network(\"producer_net\",\n name=\"my-network\",\n auto_create_subnetworks=False)\nproducer_subnet = gcp.compute.Subnetwork(\"producer_subnet\",\n name=\"my-subnet\",\n ip_cidr_range=\"10.0.0.248/29\",\n region=\"us-central1\",\n network=producer_net.id)\ndefault = gcp.networkconnectivity.ServiceConnectionPolicy(\"default\",\n name=\"my-policy\",\n location=\"us-central1\",\n service_class=\"gcp-memorystore\",\n description=\"my basic service connection policy\",\n network=producer_net.id,\n psc_config={\n \"subnetworks\": [producer_subnet.id],\n })\nproject = gcp.organizations.get_project()\ninstance_persistence_aof = gcp.memorystore.Instance(\"instance-persistence-aof\",\n instance_id=\"aof-instance\",\n shard_count=3,\n desired_psc_auto_connections=[{\n \"network\": producer_net.id,\n \"project_id\": project.project_id,\n }],\n location=\"us-central1\",\n persistence_config={\n \"mode\": \"AOF\",\n \"aof_config\": {\n \"append_fsync\": \"EVERY_SEC\",\n },\n },\n deletion_protection_enabled=False,\n opts = pulumi.ResourceOptions(depends_on=[default]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var producerNet = new Gcp.Compute.Network(\"producer_net\", new()\n {\n Name = \"my-network\",\n AutoCreateSubnetworks = false,\n });\n\n var producerSubnet = new Gcp.Compute.Subnetwork(\"producer_subnet\", new()\n {\n Name = \"my-subnet\",\n IpCidrRange = \"10.0.0.248/29\",\n Region = \"us-central1\",\n Network = producerNet.Id,\n });\n\n var @default = new Gcp.NetworkConnectivity.ServiceConnectionPolicy(\"default\", new()\n {\n Name = \"my-policy\",\n Location = \"us-central1\",\n ServiceClass = \"gcp-memorystore\",\n Description = \"my basic service connection policy\",\n Network = producerNet.Id,\n PscConfig = new Gcp.NetworkConnectivity.Inputs.ServiceConnectionPolicyPscConfigArgs\n {\n Subnetworks = new[]\n {\n producerSubnet.Id,\n },\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var instance_persistence_aof = new Gcp.MemoryStore.Instance(\"instance-persistence-aof\", new()\n {\n InstanceId = \"aof-instance\",\n ShardCount = 3,\n DesiredPscAutoConnections = new[]\n {\n new Gcp.MemoryStore.Inputs.InstanceDesiredPscAutoConnectionArgs\n {\n Network = producerNet.Id,\n ProjectId = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n },\n },\n Location = \"us-central1\",\n PersistenceConfig = new Gcp.MemoryStore.Inputs.InstancePersistenceConfigArgs\n {\n Mode = \"AOF\",\n AofConfig = new Gcp.MemoryStore.Inputs.InstancePersistenceConfigAofConfigArgs\n {\n AppendFsync = \"EVERY_SEC\",\n },\n },\n DeletionProtectionEnabled = false,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @default,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/memorystore\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkconnectivity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproducerNet, err := compute.NewNetwork(ctx, \"producer_net\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproducerSubnet, err := compute.NewSubnetwork(ctx, \"producer_subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"my-subnet\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.248/29\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: producerNet.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkconnectivity.NewServiceConnectionPolicy(ctx, \"default\", \u0026networkconnectivity.ServiceConnectionPolicyArgs{\n\t\t\tName: pulumi.String(\"my-policy\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tServiceClass: pulumi.String(\"gcp-memorystore\"),\n\t\t\tDescription: pulumi.String(\"my basic service connection policy\"),\n\t\t\tNetwork: producerNet.ID(),\n\t\t\tPscConfig: \u0026networkconnectivity.ServiceConnectionPolicyPscConfigArgs{\n\t\t\t\tSubnetworks: pulumi.StringArray{\n\t\t\t\t\tproducerSubnet.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\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = memorystore.NewInstance(ctx, \"instance-persistence-aof\", \u0026memorystore.InstanceArgs{\n\t\t\tInstanceId: pulumi.String(\"aof-instance\"),\n\t\t\tShardCount: pulumi.Int(3),\n\t\t\tDesiredPscAutoConnections: memorystore.InstanceDesiredPscAutoConnectionArray{\n\t\t\t\t\u0026memorystore.InstanceDesiredPscAutoConnectionArgs{\n\t\t\t\t\tNetwork: producerNet.ID(),\n\t\t\t\t\tProjectId: pulumi.String(project.ProjectId),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPersistenceConfig: \u0026memorystore.InstancePersistenceConfigArgs{\n\t\t\t\tMode: pulumi.String(\"AOF\"),\n\t\t\t\tAofConfig: \u0026memorystore.InstancePersistenceConfigAofConfigArgs{\n\t\t\t\t\tAppendFsync: pulumi.String(\"EVERY_SEC\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtectionEnabled: pulumi.Bool(false),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\t_default,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.networkconnectivity.ServiceConnectionPolicy;\nimport com.pulumi.gcp.networkconnectivity.ServiceConnectionPolicyArgs;\nimport com.pulumi.gcp.networkconnectivity.inputs.ServiceConnectionPolicyPscConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.memorystore.Instance;\nimport com.pulumi.gcp.memorystore.InstanceArgs;\nimport com.pulumi.gcp.memorystore.inputs.InstanceDesiredPscAutoConnectionArgs;\nimport com.pulumi.gcp.memorystore.inputs.InstancePersistenceConfigArgs;\nimport com.pulumi.gcp.memorystore.inputs.InstancePersistenceConfigAofConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var producerNet = new Network(\"producerNet\", NetworkArgs.builder()\n .name(\"my-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var producerSubnet = new Subnetwork(\"producerSubnet\", SubnetworkArgs.builder()\n .name(\"my-subnet\")\n .ipCidrRange(\"10.0.0.248/29\")\n .region(\"us-central1\")\n .network(producerNet.id())\n .build());\n\n var default_ = new ServiceConnectionPolicy(\"default\", ServiceConnectionPolicyArgs.builder()\n .name(\"my-policy\")\n .location(\"us-central1\")\n .serviceClass(\"gcp-memorystore\")\n .description(\"my basic service connection policy\")\n .network(producerNet.id())\n .pscConfig(ServiceConnectionPolicyPscConfigArgs.builder()\n .subnetworks(producerSubnet.id())\n .build())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var instance_persistence_aof = new Instance(\"instance-persistence-aof\", InstanceArgs.builder()\n .instanceId(\"aof-instance\")\n .shardCount(3)\n .desiredPscAutoConnections(InstanceDesiredPscAutoConnectionArgs.builder()\n .network(producerNet.id())\n .projectId(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .build())\n .location(\"us-central1\")\n .persistenceConfig(InstancePersistenceConfigArgs.builder()\n .mode(\"AOF\")\n .aofConfig(InstancePersistenceConfigAofConfigArgs.builder()\n .appendFsync(\"EVERY_SEC\")\n .build())\n .build())\n .deletionProtectionEnabled(false)\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance-persistence-aof:\n type: gcp:memorystore:Instance\n properties:\n instanceId: aof-instance\n shardCount: 3\n desiredPscAutoConnections:\n - network: ${producerNet.id}\n projectId: ${project.projectId}\n location: us-central1\n persistenceConfig:\n mode: AOF\n aofConfig:\n appendFsync: EVERY_SEC\n deletionProtectionEnabled: false\n options:\n dependson:\n - ${default}\n default:\n type: gcp:networkconnectivity:ServiceConnectionPolicy\n properties:\n name: my-policy\n location: us-central1\n serviceClass: gcp-memorystore\n description: my basic service connection policy\n network: ${producerNet.id}\n pscConfig:\n subnetworks:\n - ${producerSubnet.id}\n producerSubnet:\n type: gcp:compute:Subnetwork\n name: producer_subnet\n properties:\n name: my-subnet\n ipCidrRange: 10.0.0.248/29\n region: us-central1\n network: ${producerNet.id}\n producerNet:\n type: gcp:compute:Network\n name: producer_net\n properties:\n name: my-network\n autoCreateSubnetworks: false\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/instances/{{instance_id}}`\n\n* `{{project}}/{{location}}/{{instance_id}}`\n\n* `{{location}}/{{instance_id}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:memorystore/instance:Instance default projects/{{project}}/locations/{{location}}/instances/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:memorystore/instance:Instance default {{project}}/{{location}}/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:memorystore/instance:Instance default {{location}}/{{instance_id}}\n```\n\n", "properties": { "authorizationMode": { "type": "string", @@ -225413,7 +225413,7 @@ } }, "gcp:networkmanagement/connectivityTest:ConnectivityTest": { - "description": "A connectivity test are a static analysis of your resource configurations\nthat enables you to evaluate connectivity to and from Google Cloud\nresources in your Virtual Private Cloud (VPC) network.\n\n\nTo get more information about ConnectivityTest, see:\n\n* [API documentation](https://cloud.google.com/network-intelligence-center/docs/connectivity-tests/reference/networkmanagement/rest/v1/projects.locations.global.connectivityTests)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/network-intelligence-center/docs)\n\n## Example Usage\n\n### Network Management Connectivity Test Instances\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst vpc = new gcp.compute.Network(\"vpc\", {name: \"conn-test-net\"});\nconst debian9 = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst source = new gcp.compute.Instance(\"source\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n network: vpc.id,\n }],\n name: \"source-vm\",\n machineType: \"e2-medium\",\n bootDisk: {\n initializeParams: {\n image: debian9.then(debian9 =\u003e debian9.id),\n },\n },\n});\nconst destination = new gcp.compute.Instance(\"destination\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n network: vpc.id,\n }],\n name: \"dest-vm\",\n machineType: \"e2-medium\",\n bootDisk: {\n initializeParams: {\n image: debian9.then(debian9 =\u003e debian9.id),\n },\n },\n});\nconst instance_test = new gcp.networkmanagement.ConnectivityTest(\"instance-test\", {\n name: \"conn-test-instances\",\n source: {\n instance: source.id,\n },\n destination: {\n instance: destination.id,\n },\n protocol: \"TCP\",\n labels: {\n env: \"test\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nvpc = gcp.compute.Network(\"vpc\", name=\"conn-test-net\")\ndebian9 = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\nsource = gcp.compute.Instance(\"source\",\n network_interfaces=[{\n \"access_configs\": [{}],\n \"network\": vpc.id,\n }],\n name=\"source-vm\",\n machine_type=\"e2-medium\",\n boot_disk={\n \"initialize_params\": {\n \"image\": debian9.id,\n },\n })\ndestination = gcp.compute.Instance(\"destination\",\n network_interfaces=[{\n \"access_configs\": [{}],\n \"network\": vpc.id,\n }],\n name=\"dest-vm\",\n machine_type=\"e2-medium\",\n boot_disk={\n \"initialize_params\": {\n \"image\": debian9.id,\n },\n })\ninstance_test = gcp.networkmanagement.ConnectivityTest(\"instance-test\",\n name=\"conn-test-instances\",\n source={\n \"instance\": source.id,\n },\n destination={\n \"instance\": destination.id,\n },\n protocol=\"TCP\",\n labels={\n \"env\": \"test\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var vpc = new Gcp.Compute.Network(\"vpc\", new()\n {\n Name = \"conn-test-net\",\n });\n\n var debian9 = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var source = new Gcp.Compute.Instance(\"source\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Network = vpc.Id,\n },\n },\n Name = \"source-vm\",\n MachineType = \"e2-medium\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = debian9.Apply(getImageResult =\u003e getImageResult.Id),\n },\n },\n });\n\n var destination = new Gcp.Compute.Instance(\"destination\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Network = vpc.Id,\n },\n },\n Name = \"dest-vm\",\n MachineType = \"e2-medium\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = debian9.Apply(getImageResult =\u003e getImageResult.Id),\n },\n },\n });\n\n var instance_test = new Gcp.NetworkManagement.ConnectivityTest(\"instance-test\", new()\n {\n Name = \"conn-test-instances\",\n Source = new Gcp.NetworkManagement.Inputs.ConnectivityTestSourceArgs\n {\n Instance = source.Id,\n },\n Destination = new Gcp.NetworkManagement.Inputs.ConnectivityTestDestinationArgs\n {\n Instance = destination.Id,\n },\n Protocol = \"TCP\",\n Labels = \n {\n { \"env\", \"test\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkmanagement\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tvpc, err := compute.NewNetwork(ctx, \"vpc\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"conn-test-net\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdebian9, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsource, err := compute.NewInstance(ctx, \"source\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tAccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{\n\t\t\t\t\t\tnil,\n\t\t\t\t\t},\n\t\t\t\t\tNetwork: vpc.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"source-vm\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(debian9.Id),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestination, err := compute.NewInstance(ctx, \"destination\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tAccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{\n\t\t\t\t\t\tnil,\n\t\t\t\t\t},\n\t\t\t\t\tNetwork: vpc.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"dest-vm\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(debian9.Id),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkmanagement.NewConnectivityTest(ctx, \"instance-test\", \u0026networkmanagement.ConnectivityTestArgs{\n\t\t\tName: pulumi.String(\"conn-test-instances\"),\n\t\t\tSource: \u0026networkmanagement.ConnectivityTestSourceArgs{\n\t\t\t\tInstance: source.ID(),\n\t\t\t},\n\t\t\tDestination: \u0026networkmanagement.ConnectivityTestDestinationArgs{\n\t\t\t\tInstance: destination.ID(),\n\t\t\t},\n\t\t\tProtocol: pulumi.String(\"TCP\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"test\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport com.pulumi.gcp.networkmanagement.ConnectivityTest;\nimport com.pulumi.gcp.networkmanagement.ConnectivityTestArgs;\nimport com.pulumi.gcp.networkmanagement.inputs.ConnectivityTestSourceArgs;\nimport com.pulumi.gcp.networkmanagement.inputs.ConnectivityTestDestinationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var vpc = new Network(\"vpc\", NetworkArgs.builder()\n .name(\"conn-test-net\")\n .build());\n\n final var debian9 = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var source = new Instance(\"source\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .network(vpc.id())\n .build())\n .name(\"source-vm\")\n .machineType(\"e2-medium\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(debian9.applyValue(getImageResult -\u003e getImageResult.id()))\n .build())\n .build())\n .build());\n\n var destination = new Instance(\"destination\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .network(vpc.id())\n .build())\n .name(\"dest-vm\")\n .machineType(\"e2-medium\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(debian9.applyValue(getImageResult -\u003e getImageResult.id()))\n .build())\n .build())\n .build());\n\n var instance_test = new ConnectivityTest(\"instance-test\", ConnectivityTestArgs.builder()\n .name(\"conn-test-instances\")\n .source(ConnectivityTestSourceArgs.builder()\n .instance(source.id())\n .build())\n .destination(ConnectivityTestDestinationArgs.builder()\n .instance(destination.id())\n .build())\n .protocol(\"TCP\")\n .labels(Map.of(\"env\", \"test\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance-test:\n type: gcp:networkmanagement:ConnectivityTest\n properties:\n name: conn-test-instances\n source:\n instance: ${source.id}\n destination:\n instance: ${destination.id}\n protocol: TCP\n labels:\n env: test\n source:\n type: gcp:compute:Instance\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n network: ${vpc.id}\n name: source-vm\n machineType: e2-medium\n bootDisk:\n initializeParams:\n image: ${debian9.id}\n destination:\n type: gcp:compute:Instance\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n network: ${vpc.id}\n name: dest-vm\n machineType: e2-medium\n bootDisk:\n initializeParams:\n image: ${debian9.id}\n vpc:\n type: gcp:compute:Network\n properties:\n name: conn-test-net\nvariables:\n debian9:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Management Connectivity Test Addresses\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst vpc = new gcp.compute.Network(\"vpc\", {name: \"connectivity-vpc\"});\nconst subnet = new gcp.compute.Subnetwork(\"subnet\", {\n name: \"connectivity-vpc-subnet\",\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n network: vpc.id,\n});\nconst source_addr = new gcp.compute.Address(\"source-addr\", {\n name: \"src-addr\",\n subnetwork: subnet.id,\n addressType: \"INTERNAL\",\n address: \"10.0.42.42\",\n region: \"us-central1\",\n});\nconst dest_addr = new gcp.compute.Address(\"dest-addr\", {\n name: \"dest-addr\",\n subnetwork: subnet.id,\n addressType: \"INTERNAL\",\n address: \"10.0.43.43\",\n region: \"us-central1\",\n});\nconst address_test = new gcp.networkmanagement.ConnectivityTest(\"address-test\", {\n name: \"conn-test-addr\",\n source: {\n ipAddress: source_addr.address,\n projectId: source_addr.project,\n network: vpc.id,\n networkType: \"GCP_NETWORK\",\n },\n destination: {\n ipAddress: dest_addr.address,\n projectId: dest_addr.project,\n network: vpc.id,\n },\n protocol: \"UDP\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nvpc = gcp.compute.Network(\"vpc\", name=\"connectivity-vpc\")\nsubnet = gcp.compute.Subnetwork(\"subnet\",\n name=\"connectivity-vpc-subnet\",\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\",\n network=vpc.id)\nsource_addr = gcp.compute.Address(\"source-addr\",\n name=\"src-addr\",\n subnetwork=subnet.id,\n address_type=\"INTERNAL\",\n address=\"10.0.42.42\",\n region=\"us-central1\")\ndest_addr = gcp.compute.Address(\"dest-addr\",\n name=\"dest-addr\",\n subnetwork=subnet.id,\n address_type=\"INTERNAL\",\n address=\"10.0.43.43\",\n region=\"us-central1\")\naddress_test = gcp.networkmanagement.ConnectivityTest(\"address-test\",\n name=\"conn-test-addr\",\n source={\n \"ip_address\": source_addr.address,\n \"project_id\": source_addr.project,\n \"network\": vpc.id,\n \"network_type\": \"GCP_NETWORK\",\n },\n destination={\n \"ip_address\": dest_addr.address,\n \"project_id\": dest_addr.project,\n \"network\": vpc.id,\n },\n protocol=\"UDP\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var vpc = new Gcp.Compute.Network(\"vpc\", new()\n {\n Name = \"connectivity-vpc\",\n });\n\n var subnet = new Gcp.Compute.Subnetwork(\"subnet\", new()\n {\n Name = \"connectivity-vpc-subnet\",\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n Network = vpc.Id,\n });\n\n var source_addr = new Gcp.Compute.Address(\"source-addr\", new()\n {\n Name = \"src-addr\",\n Subnetwork = subnet.Id,\n AddressType = \"INTERNAL\",\n IPAddress = \"10.0.42.42\",\n Region = \"us-central1\",\n });\n\n var dest_addr = new Gcp.Compute.Address(\"dest-addr\", new()\n {\n Name = \"dest-addr\",\n Subnetwork = subnet.Id,\n AddressType = \"INTERNAL\",\n IPAddress = \"10.0.43.43\",\n Region = \"us-central1\",\n });\n\n var address_test = new Gcp.NetworkManagement.ConnectivityTest(\"address-test\", new()\n {\n Name = \"conn-test-addr\",\n Source = new Gcp.NetworkManagement.Inputs.ConnectivityTestSourceArgs\n {\n IpAddress = source_addr.IPAddress,\n ProjectId = source_addr.Project,\n Network = vpc.Id,\n NetworkType = \"GCP_NETWORK\",\n },\n Destination = new Gcp.NetworkManagement.Inputs.ConnectivityTestDestinationArgs\n {\n IpAddress = dest_addr.IPAddress,\n ProjectId = dest_addr.Project,\n Network = vpc.Id,\n },\n Protocol = \"UDP\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkmanagement\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tvpc, err := compute.NewNetwork(ctx, \"vpc\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"connectivity-vpc\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsubnet, err := compute.NewSubnetwork(ctx, \"subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"connectivity-vpc-subnet\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: vpc.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewAddress(ctx, \"source-addr\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"src-addr\"),\n\t\t\tSubnetwork: subnet.ID(),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tAddress: pulumi.String(\"10.0.42.42\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewAddress(ctx, \"dest-addr\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"dest-addr\"),\n\t\t\tSubnetwork: subnet.ID(),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tAddress: pulumi.String(\"10.0.43.43\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkmanagement.NewConnectivityTest(ctx, \"address-test\", \u0026networkmanagement.ConnectivityTestArgs{\n\t\t\tName: pulumi.String(\"conn-test-addr\"),\n\t\t\tSource: \u0026networkmanagement.ConnectivityTestSourceArgs{\n\t\t\t\tIpAddress: source_addr.Address,\n\t\t\t\tProjectId: source_addr.Project,\n\t\t\t\tNetwork: vpc.ID(),\n\t\t\t\tNetworkType: pulumi.String(\"GCP_NETWORK\"),\n\t\t\t},\n\t\t\tDestination: \u0026networkmanagement.ConnectivityTestDestinationArgs{\n\t\t\t\tIpAddress: dest_addr.Address,\n\t\t\t\tProjectId: dest_addr.Project,\n\t\t\t\tNetwork: vpc.ID(),\n\t\t\t},\n\t\t\tProtocol: pulumi.String(\"UDP\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\nimport com.pulumi.gcp.networkmanagement.ConnectivityTest;\nimport com.pulumi.gcp.networkmanagement.ConnectivityTestArgs;\nimport com.pulumi.gcp.networkmanagement.inputs.ConnectivityTestSourceArgs;\nimport com.pulumi.gcp.networkmanagement.inputs.ConnectivityTestDestinationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var vpc = new Network(\"vpc\", NetworkArgs.builder()\n .name(\"connectivity-vpc\")\n .build());\n\n var subnet = new Subnetwork(\"subnet\", SubnetworkArgs.builder()\n .name(\"connectivity-vpc-subnet\")\n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .network(vpc.id())\n .build());\n\n var source_addr = new Address(\"source-addr\", AddressArgs.builder()\n .name(\"src-addr\")\n .subnetwork(subnet.id())\n .addressType(\"INTERNAL\")\n .address(\"10.0.42.42\")\n .region(\"us-central1\")\n .build());\n\n var dest_addr = new Address(\"dest-addr\", AddressArgs.builder()\n .name(\"dest-addr\")\n .subnetwork(subnet.id())\n .addressType(\"INTERNAL\")\n .address(\"10.0.43.43\")\n .region(\"us-central1\")\n .build());\n\n var address_test = new ConnectivityTest(\"address-test\", ConnectivityTestArgs.builder()\n .name(\"conn-test-addr\")\n .source(ConnectivityTestSourceArgs.builder()\n .ipAddress(source_addr.address())\n .projectId(source_addr.project())\n .network(vpc.id())\n .networkType(\"GCP_NETWORK\")\n .build())\n .destination(ConnectivityTestDestinationArgs.builder()\n .ipAddress(dest_addr.address())\n .projectId(dest_addr.project())\n .network(vpc.id())\n .build())\n .protocol(\"UDP\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n address-test:\n type: gcp:networkmanagement:ConnectivityTest\n properties:\n name: conn-test-addr\n source:\n ipAddress: ${[\"source-addr\"].address}\n projectId: ${[\"source-addr\"].project}\n network: ${vpc.id}\n networkType: GCP_NETWORK\n destination:\n ipAddress: ${[\"dest-addr\"].address}\n projectId: ${[\"dest-addr\"].project}\n network: ${vpc.id}\n protocol: UDP\n vpc:\n type: gcp:compute:Network\n properties:\n name: connectivity-vpc\n subnet:\n type: gcp:compute:Subnetwork\n properties:\n name: connectivity-vpc-subnet\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n network: ${vpc.id}\n source-addr:\n type: gcp:compute:Address\n properties:\n name: src-addr\n subnetwork: ${subnet.id}\n addressType: INTERNAL\n address: 10.0.42.42\n region: us-central1\n dest-addr:\n type: gcp:compute:Address\n properties:\n name: dest-addr\n subnetwork: ${subnet.id}\n addressType: INTERNAL\n address: 10.0.43.43\n region: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nConnectivityTest can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/connectivityTests/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, ConnectivityTest can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkmanagement/connectivityTest:ConnectivityTest default projects/{{project}}/locations/global/connectivityTests/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkmanagement/connectivityTest:ConnectivityTest default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkmanagement/connectivityTest:ConnectivityTest default {{name}}\n```\n\n", + "description": "A connectivity test are a static analysis of your resource configurations\nthat enables you to evaluate connectivity to and from Google Cloud\nresources in your Virtual Private Cloud (VPC) network.\n\n\nTo get more information about ConnectivityTest, see:\n\n* [API documentation](https://cloud.google.com/network-intelligence-center/docs/connectivity-tests/reference/networkmanagement/rest/v1/projects.locations.global.connectivityTests)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/network-intelligence-center/docs)\n\n## Example Usage\n\n### Network Management Connectivity Test Instances\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst vpc = new gcp.compute.Network(\"vpc\", {name: \"conn-test-net\"});\nconst debian9 = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst source = new gcp.compute.Instance(\"source\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n network: vpc.id,\n }],\n name: \"source-vm\",\n machineType: \"e2-medium\",\n bootDisk: {\n initializeParams: {\n image: debian9.then(debian9 =\u003e debian9.id),\n },\n },\n});\nconst destination = new gcp.compute.Instance(\"destination\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n network: vpc.id,\n }],\n name: \"dest-vm\",\n machineType: \"e2-medium\",\n bootDisk: {\n initializeParams: {\n image: debian9.then(debian9 =\u003e debian9.id),\n },\n },\n});\nconst instance_test = new gcp.networkmanagement.ConnectivityTest(\"instance-test\", {\n name: \"conn-test-instances\",\n source: {\n instance: source.id,\n },\n destination: {\n instance: destination.id,\n },\n protocol: \"TCP\",\n labels: {\n env: \"test\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nvpc = gcp.compute.Network(\"vpc\", name=\"conn-test-net\")\ndebian9 = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\nsource = gcp.compute.Instance(\"source\",\n network_interfaces=[{\n \"access_configs\": [{}],\n \"network\": vpc.id,\n }],\n name=\"source-vm\",\n machine_type=\"e2-medium\",\n boot_disk={\n \"initialize_params\": {\n \"image\": debian9.id,\n },\n })\ndestination = gcp.compute.Instance(\"destination\",\n network_interfaces=[{\n \"access_configs\": [{}],\n \"network\": vpc.id,\n }],\n name=\"dest-vm\",\n machine_type=\"e2-medium\",\n boot_disk={\n \"initialize_params\": {\n \"image\": debian9.id,\n },\n })\ninstance_test = gcp.networkmanagement.ConnectivityTest(\"instance-test\",\n name=\"conn-test-instances\",\n source={\n \"instance\": source.id,\n },\n destination={\n \"instance\": destination.id,\n },\n protocol=\"TCP\",\n labels={\n \"env\": \"test\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var vpc = new Gcp.Compute.Network(\"vpc\", new()\n {\n Name = \"conn-test-net\",\n });\n\n var debian9 = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var source = new Gcp.Compute.Instance(\"source\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Network = vpc.Id,\n },\n },\n Name = \"source-vm\",\n MachineType = \"e2-medium\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = debian9.Apply(getImageResult =\u003e getImageResult.Id),\n },\n },\n });\n\n var destination = new Gcp.Compute.Instance(\"destination\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Network = vpc.Id,\n },\n },\n Name = \"dest-vm\",\n MachineType = \"e2-medium\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = debian9.Apply(getImageResult =\u003e getImageResult.Id),\n },\n },\n });\n\n var instance_test = new Gcp.NetworkManagement.ConnectivityTest(\"instance-test\", new()\n {\n Name = \"conn-test-instances\",\n Source = new Gcp.NetworkManagement.Inputs.ConnectivityTestSourceArgs\n {\n Instance = source.Id,\n },\n Destination = new Gcp.NetworkManagement.Inputs.ConnectivityTestDestinationArgs\n {\n Instance = destination.Id,\n },\n Protocol = \"TCP\",\n Labels = \n {\n { \"env\", \"test\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkmanagement\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tvpc, err := compute.NewNetwork(ctx, \"vpc\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"conn-test-net\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdebian9, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsource, err := compute.NewInstance(ctx, \"source\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tAccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{\n\t\t\t\t\t\t\u0026compute.InstanceNetworkInterfaceAccessConfigArgs{},\n\t\t\t\t\t},\n\t\t\t\t\tNetwork: vpc.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"source-vm\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(debian9.Id),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestination, err := compute.NewInstance(ctx, \"destination\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tAccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{\n\t\t\t\t\t\t\u0026compute.InstanceNetworkInterfaceAccessConfigArgs{},\n\t\t\t\t\t},\n\t\t\t\t\tNetwork: vpc.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"dest-vm\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(debian9.Id),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkmanagement.NewConnectivityTest(ctx, \"instance-test\", \u0026networkmanagement.ConnectivityTestArgs{\n\t\t\tName: pulumi.String(\"conn-test-instances\"),\n\t\t\tSource: \u0026networkmanagement.ConnectivityTestSourceArgs{\n\t\t\t\tInstance: source.ID(),\n\t\t\t},\n\t\t\tDestination: \u0026networkmanagement.ConnectivityTestDestinationArgs{\n\t\t\t\tInstance: destination.ID(),\n\t\t\t},\n\t\t\tProtocol: pulumi.String(\"TCP\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"test\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport com.pulumi.gcp.networkmanagement.ConnectivityTest;\nimport com.pulumi.gcp.networkmanagement.ConnectivityTestArgs;\nimport com.pulumi.gcp.networkmanagement.inputs.ConnectivityTestSourceArgs;\nimport com.pulumi.gcp.networkmanagement.inputs.ConnectivityTestDestinationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var vpc = new Network(\"vpc\", NetworkArgs.builder()\n .name(\"conn-test-net\")\n .build());\n\n final var debian9 = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var source = new Instance(\"source\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .network(vpc.id())\n .build())\n .name(\"source-vm\")\n .machineType(\"e2-medium\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(debian9.applyValue(getImageResult -\u003e getImageResult.id()))\n .build())\n .build())\n .build());\n\n var destination = new Instance(\"destination\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .network(vpc.id())\n .build())\n .name(\"dest-vm\")\n .machineType(\"e2-medium\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(debian9.applyValue(getImageResult -\u003e getImageResult.id()))\n .build())\n .build())\n .build());\n\n var instance_test = new ConnectivityTest(\"instance-test\", ConnectivityTestArgs.builder()\n .name(\"conn-test-instances\")\n .source(ConnectivityTestSourceArgs.builder()\n .instance(source.id())\n .build())\n .destination(ConnectivityTestDestinationArgs.builder()\n .instance(destination.id())\n .build())\n .protocol(\"TCP\")\n .labels(Map.of(\"env\", \"test\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance-test:\n type: gcp:networkmanagement:ConnectivityTest\n properties:\n name: conn-test-instances\n source:\n instance: ${source.id}\n destination:\n instance: ${destination.id}\n protocol: TCP\n labels:\n env: test\n source:\n type: gcp:compute:Instance\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n network: ${vpc.id}\n name: source-vm\n machineType: e2-medium\n bootDisk:\n initializeParams:\n image: ${debian9.id}\n destination:\n type: gcp:compute:Instance\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n network: ${vpc.id}\n name: dest-vm\n machineType: e2-medium\n bootDisk:\n initializeParams:\n image: ${debian9.id}\n vpc:\n type: gcp:compute:Network\n properties:\n name: conn-test-net\nvariables:\n debian9:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Management Connectivity Test Addresses\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst vpc = new gcp.compute.Network(\"vpc\", {name: \"connectivity-vpc\"});\nconst subnet = new gcp.compute.Subnetwork(\"subnet\", {\n name: \"connectivity-vpc-subnet\",\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n network: vpc.id,\n});\nconst source_addr = new gcp.compute.Address(\"source-addr\", {\n name: \"src-addr\",\n subnetwork: subnet.id,\n addressType: \"INTERNAL\",\n address: \"10.0.42.42\",\n region: \"us-central1\",\n});\nconst dest_addr = new gcp.compute.Address(\"dest-addr\", {\n name: \"dest-addr\",\n subnetwork: subnet.id,\n addressType: \"INTERNAL\",\n address: \"10.0.43.43\",\n region: \"us-central1\",\n});\nconst address_test = new gcp.networkmanagement.ConnectivityTest(\"address-test\", {\n name: \"conn-test-addr\",\n source: {\n ipAddress: source_addr.address,\n projectId: source_addr.project,\n network: vpc.id,\n networkType: \"GCP_NETWORK\",\n },\n destination: {\n ipAddress: dest_addr.address,\n projectId: dest_addr.project,\n network: vpc.id,\n },\n protocol: \"UDP\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nvpc = gcp.compute.Network(\"vpc\", name=\"connectivity-vpc\")\nsubnet = gcp.compute.Subnetwork(\"subnet\",\n name=\"connectivity-vpc-subnet\",\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\",\n network=vpc.id)\nsource_addr = gcp.compute.Address(\"source-addr\",\n name=\"src-addr\",\n subnetwork=subnet.id,\n address_type=\"INTERNAL\",\n address=\"10.0.42.42\",\n region=\"us-central1\")\ndest_addr = gcp.compute.Address(\"dest-addr\",\n name=\"dest-addr\",\n subnetwork=subnet.id,\n address_type=\"INTERNAL\",\n address=\"10.0.43.43\",\n region=\"us-central1\")\naddress_test = gcp.networkmanagement.ConnectivityTest(\"address-test\",\n name=\"conn-test-addr\",\n source={\n \"ip_address\": source_addr.address,\n \"project_id\": source_addr.project,\n \"network\": vpc.id,\n \"network_type\": \"GCP_NETWORK\",\n },\n destination={\n \"ip_address\": dest_addr.address,\n \"project_id\": dest_addr.project,\n \"network\": vpc.id,\n },\n protocol=\"UDP\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var vpc = new Gcp.Compute.Network(\"vpc\", new()\n {\n Name = \"connectivity-vpc\",\n });\n\n var subnet = new Gcp.Compute.Subnetwork(\"subnet\", new()\n {\n Name = \"connectivity-vpc-subnet\",\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n Network = vpc.Id,\n });\n\n var source_addr = new Gcp.Compute.Address(\"source-addr\", new()\n {\n Name = \"src-addr\",\n Subnetwork = subnet.Id,\n AddressType = \"INTERNAL\",\n IPAddress = \"10.0.42.42\",\n Region = \"us-central1\",\n });\n\n var dest_addr = new Gcp.Compute.Address(\"dest-addr\", new()\n {\n Name = \"dest-addr\",\n Subnetwork = subnet.Id,\n AddressType = \"INTERNAL\",\n IPAddress = \"10.0.43.43\",\n Region = \"us-central1\",\n });\n\n var address_test = new Gcp.NetworkManagement.ConnectivityTest(\"address-test\", new()\n {\n Name = \"conn-test-addr\",\n Source = new Gcp.NetworkManagement.Inputs.ConnectivityTestSourceArgs\n {\n IpAddress = source_addr.IPAddress,\n ProjectId = source_addr.Project,\n Network = vpc.Id,\n NetworkType = \"GCP_NETWORK\",\n },\n Destination = new Gcp.NetworkManagement.Inputs.ConnectivityTestDestinationArgs\n {\n IpAddress = dest_addr.IPAddress,\n ProjectId = dest_addr.Project,\n Network = vpc.Id,\n },\n Protocol = \"UDP\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkmanagement\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tvpc, err := compute.NewNetwork(ctx, \"vpc\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"connectivity-vpc\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsubnet, err := compute.NewSubnetwork(ctx, \"subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"connectivity-vpc-subnet\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: vpc.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewAddress(ctx, \"source-addr\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"src-addr\"),\n\t\t\tSubnetwork: subnet.ID(),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tAddress: pulumi.String(\"10.0.42.42\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewAddress(ctx, \"dest-addr\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"dest-addr\"),\n\t\t\tSubnetwork: subnet.ID(),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tAddress: pulumi.String(\"10.0.43.43\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkmanagement.NewConnectivityTest(ctx, \"address-test\", \u0026networkmanagement.ConnectivityTestArgs{\n\t\t\tName: pulumi.String(\"conn-test-addr\"),\n\t\t\tSource: \u0026networkmanagement.ConnectivityTestSourceArgs{\n\t\t\t\tIpAddress: source_addr.Address,\n\t\t\t\tProjectId: source_addr.Project,\n\t\t\t\tNetwork: vpc.ID(),\n\t\t\t\tNetworkType: pulumi.String(\"GCP_NETWORK\"),\n\t\t\t},\n\t\t\tDestination: \u0026networkmanagement.ConnectivityTestDestinationArgs{\n\t\t\t\tIpAddress: dest_addr.Address,\n\t\t\t\tProjectId: dest_addr.Project,\n\t\t\t\tNetwork: vpc.ID(),\n\t\t\t},\n\t\t\tProtocol: pulumi.String(\"UDP\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\nimport com.pulumi.gcp.networkmanagement.ConnectivityTest;\nimport com.pulumi.gcp.networkmanagement.ConnectivityTestArgs;\nimport com.pulumi.gcp.networkmanagement.inputs.ConnectivityTestSourceArgs;\nimport com.pulumi.gcp.networkmanagement.inputs.ConnectivityTestDestinationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var vpc = new Network(\"vpc\", NetworkArgs.builder()\n .name(\"connectivity-vpc\")\n .build());\n\n var subnet = new Subnetwork(\"subnet\", SubnetworkArgs.builder()\n .name(\"connectivity-vpc-subnet\")\n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .network(vpc.id())\n .build());\n\n var source_addr = new Address(\"source-addr\", AddressArgs.builder()\n .name(\"src-addr\")\n .subnetwork(subnet.id())\n .addressType(\"INTERNAL\")\n .address(\"10.0.42.42\")\n .region(\"us-central1\")\n .build());\n\n var dest_addr = new Address(\"dest-addr\", AddressArgs.builder()\n .name(\"dest-addr\")\n .subnetwork(subnet.id())\n .addressType(\"INTERNAL\")\n .address(\"10.0.43.43\")\n .region(\"us-central1\")\n .build());\n\n var address_test = new ConnectivityTest(\"address-test\", ConnectivityTestArgs.builder()\n .name(\"conn-test-addr\")\n .source(ConnectivityTestSourceArgs.builder()\n .ipAddress(source_addr.address())\n .projectId(source_addr.project())\n .network(vpc.id())\n .networkType(\"GCP_NETWORK\")\n .build())\n .destination(ConnectivityTestDestinationArgs.builder()\n .ipAddress(dest_addr.address())\n .projectId(dest_addr.project())\n .network(vpc.id())\n .build())\n .protocol(\"UDP\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n address-test:\n type: gcp:networkmanagement:ConnectivityTest\n properties:\n name: conn-test-addr\n source:\n ipAddress: ${[\"source-addr\"].address}\n projectId: ${[\"source-addr\"].project}\n network: ${vpc.id}\n networkType: GCP_NETWORK\n destination:\n ipAddress: ${[\"dest-addr\"].address}\n projectId: ${[\"dest-addr\"].project}\n network: ${vpc.id}\n protocol: UDP\n vpc:\n type: gcp:compute:Network\n properties:\n name: connectivity-vpc\n subnet:\n type: gcp:compute:Subnetwork\n properties:\n name: connectivity-vpc-subnet\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n network: ${vpc.id}\n source-addr:\n type: gcp:compute:Address\n properties:\n name: src-addr\n subnetwork: ${subnet.id}\n addressType: INTERNAL\n address: 10.0.42.42\n region: us-central1\n dest-addr:\n type: gcp:compute:Address\n properties:\n name: dest-addr\n subnetwork: ${subnet.id}\n addressType: INTERNAL\n address: 10.0.43.43\n region: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nConnectivityTest can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/connectivityTests/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, ConnectivityTest can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkmanagement/connectivityTest:ConnectivityTest default projects/{{project}}/locations/global/connectivityTests/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkmanagement/connectivityTest:ConnectivityTest default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkmanagement/connectivityTest:ConnectivityTest default {{name}}\n```\n\n", "properties": { "description": { "type": "string", @@ -226892,7 +226892,7 @@ } }, "gcp:networksecurity/gatewaySecurityPolicy:GatewaySecurityPolicy": { - "description": "The GatewaySecurityPolicy resource contains a collection of GatewaySecurityPolicyRules and associated metadata.\n\n\nTo get more information about GatewaySecurityPolicy, see:\n\n* [API documentation](https://cloud.google.com/secure-web-proxy/docs/reference/network-security/rest/v1/projects.locations.gatewaySecurityPolicies)\n\n## Example Usage\n\n### Network Security Gateway Security Policy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networksecurity.GatewaySecurityPolicy(\"default\", {\n name: \"my-gateway-security-policy\",\n location: \"us-central1\",\n description: \"my description\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networksecurity.GatewaySecurityPolicy(\"default\",\n name=\"my-gateway-security-policy\",\n location=\"us-central1\",\n description=\"my description\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.NetworkSecurity.GatewaySecurityPolicy(\"default\", new()\n {\n Name = \"my-gateway-security-policy\",\n Location = \"us-central1\",\n Description = \"my description\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networksecurity.NewGatewaySecurityPolicy(ctx, \"default\", \u0026networksecurity.GatewaySecurityPolicyArgs{\n\t\t\tName: pulumi.String(\"my-gateway-security-policy\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicy;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new GatewaySecurityPolicy(\"default\", GatewaySecurityPolicyArgs.builder()\n .name(\"my-gateway-security-policy\")\n .location(\"us-central1\")\n .description(\"my description\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networksecurity:GatewaySecurityPolicy\n properties:\n name: my-gateway-security-policy\n location: us-central1\n description: my description\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Security Gateway Security Policy Tls Inspection Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.certificateauthority.CaPool(\"default\", {\n name: \"my-basic-ca-pool\",\n location: \"us-central1\",\n tier: \"DEVOPS\",\n publishingOptions: {\n publishCaCert: false,\n publishCrl: false,\n },\n issuancePolicy: {\n maximumLifetime: \"1209600s\",\n baselineValues: {\n caOptions: {\n isCa: false,\n },\n keyUsage: {\n baseKeyUsage: {},\n extendedKeyUsage: {\n serverAuth: true,\n },\n },\n },\n },\n});\nconst defaultAuthority = new gcp.certificateauthority.Authority(\"default\", {\n pool: _default.name,\n certificateAuthorityId: \"my-basic-certificate-authority\",\n location: \"us-central1\",\n lifetime: \"86400s\",\n type: \"SELF_SIGNED\",\n deletionProtection: false,\n skipGracePeriod: true,\n ignoreActiveCertificatesOnDeletion: true,\n config: {\n subjectConfig: {\n subject: {\n organization: \"Test LLC\",\n commonName: \"my-ca\",\n },\n },\n x509Config: {\n caOptions: {\n isCa: true,\n },\n keyUsage: {\n baseKeyUsage: {\n certSign: true,\n crlSign: true,\n },\n extendedKeyUsage: {\n serverAuth: false,\n },\n },\n },\n },\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n});\nconst project = gcp.organizations.getProject({});\nconst tlsInspectionPermission = new gcp.certificateauthority.CaPoolIamMember(\"tls_inspection_permission\", {\n caPool: _default.id,\n role: \"roles/privateca.certificateManager\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-networksecurity.iam.gserviceaccount.com`),\n});\nconst defaultTlsInspectionPolicy = new gcp.networksecurity.TlsInspectionPolicy(\"default\", {\n name: \"my-tls-inspection-policy\",\n location: \"us-central1\",\n caPool: _default.id,\n}, {\n dependsOn: [\n _default,\n defaultAuthority,\n tlsInspectionPermission,\n ],\n});\nconst defaultGatewaySecurityPolicy = new gcp.networksecurity.GatewaySecurityPolicy(\"default\", {\n name: \"my-gateway-security-policy\",\n location: \"us-central1\",\n description: \"my description\",\n tlsInspectionPolicy: defaultTlsInspectionPolicy.id,\n}, {\n dependsOn: [defaultTlsInspectionPolicy],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.certificateauthority.CaPool(\"default\",\n name=\"my-basic-ca-pool\",\n location=\"us-central1\",\n tier=\"DEVOPS\",\n publishing_options={\n \"publish_ca_cert\": False,\n \"publish_crl\": False,\n },\n issuance_policy={\n \"maximum_lifetime\": \"1209600s\",\n \"baseline_values\": {\n \"ca_options\": {\n \"is_ca\": False,\n },\n \"key_usage\": {\n \"base_key_usage\": {},\n \"extended_key_usage\": {\n \"server_auth\": True,\n },\n },\n },\n })\ndefault_authority = gcp.certificateauthority.Authority(\"default\",\n pool=default.name,\n certificate_authority_id=\"my-basic-certificate-authority\",\n location=\"us-central1\",\n lifetime=\"86400s\",\n type=\"SELF_SIGNED\",\n deletion_protection=False,\n skip_grace_period=True,\n ignore_active_certificates_on_deletion=True,\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"Test LLC\",\n \"common_name\": \"my-ca\",\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": False,\n },\n },\n },\n },\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n })\nproject = gcp.organizations.get_project()\ntls_inspection_permission = gcp.certificateauthority.CaPoolIamMember(\"tls_inspection_permission\",\n ca_pool=default.id,\n role=\"roles/privateca.certificateManager\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-networksecurity.iam.gserviceaccount.com\")\ndefault_tls_inspection_policy = gcp.networksecurity.TlsInspectionPolicy(\"default\",\n name=\"my-tls-inspection-policy\",\n location=\"us-central1\",\n ca_pool=default.id,\n opts = pulumi.ResourceOptions(depends_on=[\n default,\n default_authority,\n tls_inspection_permission,\n ]))\ndefault_gateway_security_policy = gcp.networksecurity.GatewaySecurityPolicy(\"default\",\n name=\"my-gateway-security-policy\",\n location=\"us-central1\",\n description=\"my description\",\n tls_inspection_policy=default_tls_inspection_policy.id,\n opts = pulumi.ResourceOptions(depends_on=[default_tls_inspection_policy]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateAuthority.CaPool(\"default\", new()\n {\n Name = \"my-basic-ca-pool\",\n Location = \"us-central1\",\n Tier = \"DEVOPS\",\n PublishingOptions = new Gcp.CertificateAuthority.Inputs.CaPoolPublishingOptionsArgs\n {\n PublishCaCert = false,\n PublishCrl = false,\n },\n IssuancePolicy = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyArgs\n {\n MaximumLifetime = \"1209600s\",\n BaselineValues = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesCaOptionsArgs\n {\n IsCa = false,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageArgs\n {\n BaseKeyUsage = null,\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n },\n },\n },\n },\n });\n\n var defaultAuthority = new Gcp.CertificateAuthority.Authority(\"default\", new()\n {\n Pool = @default.Name,\n CertificateAuthorityId = \"my-basic-certificate-authority\",\n Location = \"us-central1\",\n Lifetime = \"86400s\",\n Type = \"SELF_SIGNED\",\n DeletionProtection = false,\n SkipGracePeriod = true,\n IgnoreActiveCertificatesOnDeletion = true,\n Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectArgs\n {\n Organization = \"Test LLC\",\n CommonName = \"my-ca\",\n },\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigCaOptionsArgs\n {\n IsCa = true,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n CertSign = true,\n CrlSign = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = false,\n },\n },\n },\n },\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n Algorithm = \"RSA_PKCS1_4096_SHA256\",\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var tlsInspectionPermission = new Gcp.CertificateAuthority.CaPoolIamMember(\"tls_inspection_permission\", new()\n {\n CaPool = @default.Id,\n Role = \"roles/privateca.certificateManager\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-networksecurity.iam.gserviceaccount.com\",\n });\n\n var defaultTlsInspectionPolicy = new Gcp.NetworkSecurity.TlsInspectionPolicy(\"default\", new()\n {\n Name = \"my-tls-inspection-policy\",\n Location = \"us-central1\",\n CaPool = @default.Id,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @default,\n defaultAuthority,\n tlsInspectionPermission,\n },\n });\n\n var defaultGatewaySecurityPolicy = new Gcp.NetworkSecurity.GatewaySecurityPolicy(\"default\", new()\n {\n Name = \"my-gateway-security-policy\",\n Location = \"us-central1\",\n Description = \"my description\",\n TlsInspectionPolicy = defaultTlsInspectionPolicy.Id,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n defaultTlsInspectionPolicy,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := certificateauthority.NewCaPool(ctx, \"default\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tName: pulumi.String(\"my-basic-ca-pool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTier: pulumi.String(\"DEVOPS\"),\n\t\t\tPublishingOptions: \u0026certificateauthority.CaPoolPublishingOptionsArgs{\n\t\t\t\tPublishCaCert: pulumi.Bool(false),\n\t\t\t\tPublishCrl: pulumi.Bool(false),\n\t\t\t},\n\t\t\tIssuancePolicy: \u0026certificateauthority.CaPoolIssuancePolicyArgs{\n\t\t\t\tMaximumLifetime: pulumi.String(\"1209600s\"),\n\t\t\t\tBaselineValues: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(false),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: nil,\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tServerAuth: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultAuthority, err := certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tPool: _default.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-basic-certificate-authority\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLifetime: pulumi.String(\"86400s\"),\n\t\t\tType: pulumi.String(\"SELF_SIGNED\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tSkipGracePeriod: pulumi.Bool(true),\n\t\t\tIgnoreActiveCertificatesOnDeletion: pulumi.Bool(true),\n\t\t\tConfig: \u0026certificateauthority.AuthorityConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.AuthorityConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tOrganization: pulumi.String(\"Test LLC\"),\n\t\t\t\t\t\tCommonName: pulumi.String(\"my-ca\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tX509Config: \u0026certificateauthority.AuthorityConfigX509ConfigArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.AuthorityConfigX509ConfigCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs{\n\t\t\t\t\t\t\tCertSign: pulumi.Bool(true),\n\t\t\t\t\t\t\tCrlSign: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tServerAuth: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"RSA_PKCS1_4096_SHA256\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttlsInspectionPermission, err := certificateauthority.NewCaPoolIamMember(ctx, \"tls_inspection_permission\", \u0026certificateauthority.CaPoolIamMemberArgs{\n\t\t\tCaPool: _default.ID(),\n\t\t\tRole: pulumi.String(\"roles/privateca.certificateManager\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-networksecurity.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultTlsInspectionPolicy, err := networksecurity.NewTlsInspectionPolicy(ctx, \"default\", \u0026networksecurity.TlsInspectionPolicyArgs{\n\t\t\tName: pulumi.String(\"my-tls-inspection-policy\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tCaPool: _default.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\t_default,\n\t\t\tdefaultAuthority,\n\t\t\ttlsInspectionPermission,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networksecurity.NewGatewaySecurityPolicy(ctx, \"default\", \u0026networksecurity.GatewaySecurityPolicyArgs{\n\t\t\tName: pulumi.String(\"my-gateway-security-policy\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tTlsInspectionPolicy: defaultTlsInspectionPolicy.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdefaultTlsInspectionPolicy,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificateauthority.CaPool;\nimport com.pulumi.gcp.certificateauthority.CaPoolArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolPublishingOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.Authority;\nimport com.pulumi.gcp.certificateauthority.AuthorityArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityKeySpecArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamMember;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamMemberArgs;\nimport com.pulumi.gcp.networksecurity.TlsInspectionPolicy;\nimport com.pulumi.gcp.networksecurity.TlsInspectionPolicyArgs;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicy;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicyArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new CaPool(\"default\", CaPoolArgs.builder()\n .name(\"my-basic-ca-pool\")\n .location(\"us-central1\")\n .tier(\"DEVOPS\")\n .publishingOptions(CaPoolPublishingOptionsArgs.builder()\n .publishCaCert(false)\n .publishCrl(false)\n .build())\n .issuancePolicy(CaPoolIssuancePolicyArgs.builder()\n .maximumLifetime(\"1209600s\")\n .baselineValues(CaPoolIssuancePolicyBaselineValuesArgs.builder()\n .caOptions(CaPoolIssuancePolicyBaselineValuesCaOptionsArgs.builder()\n .isCa(false)\n .build())\n .keyUsage(CaPoolIssuancePolicyBaselineValuesKeyUsageArgs.builder()\n .baseKeyUsage()\n .extendedKeyUsage(CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .build())\n .build())\n .build())\n .build())\n .build());\n\n var defaultAuthority = new Authority(\"defaultAuthority\", AuthorityArgs.builder()\n .pool(default_.name())\n .certificateAuthorityId(\"my-basic-certificate-authority\")\n .location(\"us-central1\")\n .lifetime(\"86400s\")\n .type(\"SELF_SIGNED\")\n .deletionProtection(false)\n .skipGracePeriod(true)\n .ignoreActiveCertificatesOnDeletion(true)\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"Test LLC\")\n .commonName(\"my-ca\")\n .build())\n .build())\n .x509Config(AuthorityConfigX509ConfigArgs.builder()\n .caOptions(AuthorityConfigX509ConfigCaOptionsArgs.builder()\n .isCa(true)\n .build())\n .keyUsage(AuthorityConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .certSign(true)\n .crlSign(true)\n .build())\n .extendedKeyUsage(AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(false)\n .build())\n .build())\n .build())\n .build())\n .keySpec(AuthorityKeySpecArgs.builder()\n .algorithm(\"RSA_PKCS1_4096_SHA256\")\n .build())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var tlsInspectionPermission = new CaPoolIamMember(\"tlsInspectionPermission\", CaPoolIamMemberArgs.builder()\n .caPool(default_.id())\n .role(\"roles/privateca.certificateManager\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-networksecurity.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var defaultTlsInspectionPolicy = new TlsInspectionPolicy(\"defaultTlsInspectionPolicy\", TlsInspectionPolicyArgs.builder()\n .name(\"my-tls-inspection-policy\")\n .location(\"us-central1\")\n .caPool(default_.id())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n default_,\n defaultAuthority,\n tlsInspectionPermission)\n .build());\n\n var defaultGatewaySecurityPolicy = new GatewaySecurityPolicy(\"defaultGatewaySecurityPolicy\", GatewaySecurityPolicyArgs.builder()\n .name(\"my-gateway-security-policy\")\n .location(\"us-central1\")\n .description(\"my description\")\n .tlsInspectionPolicy(defaultTlsInspectionPolicy.id())\n .build(), CustomResourceOptions.builder()\n .dependsOn(defaultTlsInspectionPolicy)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificateauthority:CaPool\n properties:\n name: my-basic-ca-pool\n location: us-central1\n tier: DEVOPS\n publishingOptions:\n publishCaCert: false\n publishCrl: false\n issuancePolicy:\n maximumLifetime: 1209600s\n baselineValues:\n caOptions:\n isCa: false\n keyUsage:\n baseKeyUsage: {}\n extendedKeyUsage:\n serverAuth: true\n defaultAuthority:\n type: gcp:certificateauthority:Authority\n name: default\n properties:\n pool: ${default.name}\n certificateAuthorityId: my-basic-certificate-authority\n location: us-central1\n lifetime: 86400s\n type: SELF_SIGNED\n deletionProtection: false\n skipGracePeriod: true\n ignoreActiveCertificatesOnDeletion: true\n config:\n subjectConfig:\n subject:\n organization: Test LLC\n commonName: my-ca\n x509Config:\n caOptions:\n isCa: true\n keyUsage:\n baseKeyUsage:\n certSign: true\n crlSign: true\n extendedKeyUsage:\n serverAuth: false\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n tlsInspectionPermission:\n type: gcp:certificateauthority:CaPoolIamMember\n name: tls_inspection_permission\n properties:\n caPool: ${default.id}\n role: roles/privateca.certificateManager\n member: serviceAccount:service-${project.number}@gcp-sa-networksecurity.iam.gserviceaccount.com\n defaultTlsInspectionPolicy:\n type: gcp:networksecurity:TlsInspectionPolicy\n name: default\n properties:\n name: my-tls-inspection-policy\n location: us-central1\n caPool: ${default.id}\n options:\n dependson:\n - ${default}\n - ${defaultAuthority}\n - ${tlsInspectionPermission}\n defaultGatewaySecurityPolicy:\n type: gcp:networksecurity:GatewaySecurityPolicy\n name: default\n properties:\n name: my-gateway-security-policy\n location: us-central1\n description: my description\n tlsInspectionPolicy: ${defaultTlsInspectionPolicy.id}\n options:\n dependson:\n - ${defaultTlsInspectionPolicy}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nGatewaySecurityPolicy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/gatewaySecurityPolicies/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, GatewaySecurityPolicy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networksecurity/gatewaySecurityPolicy:GatewaySecurityPolicy default projects/{{project}}/locations/{{location}}/gatewaySecurityPolicies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networksecurity/gatewaySecurityPolicy:GatewaySecurityPolicy default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networksecurity/gatewaySecurityPolicy:GatewaySecurityPolicy default {{location}}/{{name}}\n```\n\n", + "description": "The GatewaySecurityPolicy resource contains a collection of GatewaySecurityPolicyRules and associated metadata.\n\n\nTo get more information about GatewaySecurityPolicy, see:\n\n* [API documentation](https://cloud.google.com/secure-web-proxy/docs/reference/network-security/rest/v1/projects.locations.gatewaySecurityPolicies)\n\n## Example Usage\n\n### Network Security Gateway Security Policy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networksecurity.GatewaySecurityPolicy(\"default\", {\n name: \"my-gateway-security-policy\",\n location: \"us-central1\",\n description: \"my description\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networksecurity.GatewaySecurityPolicy(\"default\",\n name=\"my-gateway-security-policy\",\n location=\"us-central1\",\n description=\"my description\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.NetworkSecurity.GatewaySecurityPolicy(\"default\", new()\n {\n Name = \"my-gateway-security-policy\",\n Location = \"us-central1\",\n Description = \"my description\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networksecurity.NewGatewaySecurityPolicy(ctx, \"default\", \u0026networksecurity.GatewaySecurityPolicyArgs{\n\t\t\tName: pulumi.String(\"my-gateway-security-policy\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicy;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new GatewaySecurityPolicy(\"default\", GatewaySecurityPolicyArgs.builder()\n .name(\"my-gateway-security-policy\")\n .location(\"us-central1\")\n .description(\"my description\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networksecurity:GatewaySecurityPolicy\n properties:\n name: my-gateway-security-policy\n location: us-central1\n description: my description\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Security Gateway Security Policy Tls Inspection Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.certificateauthority.CaPool(\"default\", {\n name: \"my-basic-ca-pool\",\n location: \"us-central1\",\n tier: \"DEVOPS\",\n publishingOptions: {\n publishCaCert: false,\n publishCrl: false,\n },\n issuancePolicy: {\n maximumLifetime: \"1209600s\",\n baselineValues: {\n caOptions: {\n isCa: false,\n },\n keyUsage: {\n baseKeyUsage: {},\n extendedKeyUsage: {\n serverAuth: true,\n },\n },\n },\n },\n});\nconst defaultAuthority = new gcp.certificateauthority.Authority(\"default\", {\n pool: _default.name,\n certificateAuthorityId: \"my-basic-certificate-authority\",\n location: \"us-central1\",\n lifetime: \"86400s\",\n type: \"SELF_SIGNED\",\n deletionProtection: false,\n skipGracePeriod: true,\n ignoreActiveCertificatesOnDeletion: true,\n config: {\n subjectConfig: {\n subject: {\n organization: \"Test LLC\",\n commonName: \"my-ca\",\n },\n },\n x509Config: {\n caOptions: {\n isCa: true,\n },\n keyUsage: {\n baseKeyUsage: {\n certSign: true,\n crlSign: true,\n },\n extendedKeyUsage: {\n serverAuth: false,\n },\n },\n },\n },\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n});\nconst project = gcp.organizations.getProject({});\nconst tlsInspectionPermission = new gcp.certificateauthority.CaPoolIamMember(\"tls_inspection_permission\", {\n caPool: _default.id,\n role: \"roles/privateca.certificateManager\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-networksecurity.iam.gserviceaccount.com`),\n});\nconst defaultTlsInspectionPolicy = new gcp.networksecurity.TlsInspectionPolicy(\"default\", {\n name: \"my-tls-inspection-policy\",\n location: \"us-central1\",\n caPool: _default.id,\n}, {\n dependsOn: [\n _default,\n defaultAuthority,\n tlsInspectionPermission,\n ],\n});\nconst defaultGatewaySecurityPolicy = new gcp.networksecurity.GatewaySecurityPolicy(\"default\", {\n name: \"my-gateway-security-policy\",\n location: \"us-central1\",\n description: \"my description\",\n tlsInspectionPolicy: defaultTlsInspectionPolicy.id,\n}, {\n dependsOn: [defaultTlsInspectionPolicy],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.certificateauthority.CaPool(\"default\",\n name=\"my-basic-ca-pool\",\n location=\"us-central1\",\n tier=\"DEVOPS\",\n publishing_options={\n \"publish_ca_cert\": False,\n \"publish_crl\": False,\n },\n issuance_policy={\n \"maximum_lifetime\": \"1209600s\",\n \"baseline_values\": {\n \"ca_options\": {\n \"is_ca\": False,\n },\n \"key_usage\": {\n \"base_key_usage\": {},\n \"extended_key_usage\": {\n \"server_auth\": True,\n },\n },\n },\n })\ndefault_authority = gcp.certificateauthority.Authority(\"default\",\n pool=default.name,\n certificate_authority_id=\"my-basic-certificate-authority\",\n location=\"us-central1\",\n lifetime=\"86400s\",\n type=\"SELF_SIGNED\",\n deletion_protection=False,\n skip_grace_period=True,\n ignore_active_certificates_on_deletion=True,\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"Test LLC\",\n \"common_name\": \"my-ca\",\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": False,\n },\n },\n },\n },\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n })\nproject = gcp.organizations.get_project()\ntls_inspection_permission = gcp.certificateauthority.CaPoolIamMember(\"tls_inspection_permission\",\n ca_pool=default.id,\n role=\"roles/privateca.certificateManager\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-networksecurity.iam.gserviceaccount.com\")\ndefault_tls_inspection_policy = gcp.networksecurity.TlsInspectionPolicy(\"default\",\n name=\"my-tls-inspection-policy\",\n location=\"us-central1\",\n ca_pool=default.id,\n opts = pulumi.ResourceOptions(depends_on=[\n default,\n default_authority,\n tls_inspection_permission,\n ]))\ndefault_gateway_security_policy = gcp.networksecurity.GatewaySecurityPolicy(\"default\",\n name=\"my-gateway-security-policy\",\n location=\"us-central1\",\n description=\"my description\",\n tls_inspection_policy=default_tls_inspection_policy.id,\n opts = pulumi.ResourceOptions(depends_on=[default_tls_inspection_policy]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateAuthority.CaPool(\"default\", new()\n {\n Name = \"my-basic-ca-pool\",\n Location = \"us-central1\",\n Tier = \"DEVOPS\",\n PublishingOptions = new Gcp.CertificateAuthority.Inputs.CaPoolPublishingOptionsArgs\n {\n PublishCaCert = false,\n PublishCrl = false,\n },\n IssuancePolicy = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyArgs\n {\n MaximumLifetime = \"1209600s\",\n BaselineValues = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesCaOptionsArgs\n {\n IsCa = false,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageArgs\n {\n BaseKeyUsage = null,\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n },\n },\n },\n },\n });\n\n var defaultAuthority = new Gcp.CertificateAuthority.Authority(\"default\", new()\n {\n Pool = @default.Name,\n CertificateAuthorityId = \"my-basic-certificate-authority\",\n Location = \"us-central1\",\n Lifetime = \"86400s\",\n Type = \"SELF_SIGNED\",\n DeletionProtection = false,\n SkipGracePeriod = true,\n IgnoreActiveCertificatesOnDeletion = true,\n Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectArgs\n {\n Organization = \"Test LLC\",\n CommonName = \"my-ca\",\n },\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigCaOptionsArgs\n {\n IsCa = true,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n CertSign = true,\n CrlSign = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = false,\n },\n },\n },\n },\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n Algorithm = \"RSA_PKCS1_4096_SHA256\",\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var tlsInspectionPermission = new Gcp.CertificateAuthority.CaPoolIamMember(\"tls_inspection_permission\", new()\n {\n CaPool = @default.Id,\n Role = \"roles/privateca.certificateManager\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-networksecurity.iam.gserviceaccount.com\",\n });\n\n var defaultTlsInspectionPolicy = new Gcp.NetworkSecurity.TlsInspectionPolicy(\"default\", new()\n {\n Name = \"my-tls-inspection-policy\",\n Location = \"us-central1\",\n CaPool = @default.Id,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @default,\n defaultAuthority,\n tlsInspectionPermission,\n },\n });\n\n var defaultGatewaySecurityPolicy = new Gcp.NetworkSecurity.GatewaySecurityPolicy(\"default\", new()\n {\n Name = \"my-gateway-security-policy\",\n Location = \"us-central1\",\n Description = \"my description\",\n TlsInspectionPolicy = defaultTlsInspectionPolicy.Id,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n defaultTlsInspectionPolicy,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := certificateauthority.NewCaPool(ctx, \"default\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tName: pulumi.String(\"my-basic-ca-pool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTier: pulumi.String(\"DEVOPS\"),\n\t\t\tPublishingOptions: \u0026certificateauthority.CaPoolPublishingOptionsArgs{\n\t\t\t\tPublishCaCert: pulumi.Bool(false),\n\t\t\t\tPublishCrl: pulumi.Bool(false),\n\t\t\t},\n\t\t\tIssuancePolicy: \u0026certificateauthority.CaPoolIssuancePolicyArgs{\n\t\t\t\tMaximumLifetime: pulumi.String(\"1209600s\"),\n\t\t\t\tBaselineValues: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(false),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesKeyUsageBaseKeyUsageArgs{},\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tServerAuth: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultAuthority, err := certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tPool: _default.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-basic-certificate-authority\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLifetime: pulumi.String(\"86400s\"),\n\t\t\tType: pulumi.String(\"SELF_SIGNED\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tSkipGracePeriod: pulumi.Bool(true),\n\t\t\tIgnoreActiveCertificatesOnDeletion: pulumi.Bool(true),\n\t\t\tConfig: \u0026certificateauthority.AuthorityConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.AuthorityConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tOrganization: pulumi.String(\"Test LLC\"),\n\t\t\t\t\t\tCommonName: pulumi.String(\"my-ca\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tX509Config: \u0026certificateauthority.AuthorityConfigX509ConfigArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.AuthorityConfigX509ConfigCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs{\n\t\t\t\t\t\t\tCertSign: pulumi.Bool(true),\n\t\t\t\t\t\t\tCrlSign: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tServerAuth: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"RSA_PKCS1_4096_SHA256\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttlsInspectionPermission, err := certificateauthority.NewCaPoolIamMember(ctx, \"tls_inspection_permission\", \u0026certificateauthority.CaPoolIamMemberArgs{\n\t\t\tCaPool: _default.ID(),\n\t\t\tRole: pulumi.String(\"roles/privateca.certificateManager\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-networksecurity.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultTlsInspectionPolicy, err := networksecurity.NewTlsInspectionPolicy(ctx, \"default\", \u0026networksecurity.TlsInspectionPolicyArgs{\n\t\t\tName: pulumi.String(\"my-tls-inspection-policy\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tCaPool: _default.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\t_default,\n\t\t\tdefaultAuthority,\n\t\t\ttlsInspectionPermission,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networksecurity.NewGatewaySecurityPolicy(ctx, \"default\", \u0026networksecurity.GatewaySecurityPolicyArgs{\n\t\t\tName: pulumi.String(\"my-gateway-security-policy\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tTlsInspectionPolicy: defaultTlsInspectionPolicy.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdefaultTlsInspectionPolicy,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificateauthority.CaPool;\nimport com.pulumi.gcp.certificateauthority.CaPoolArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolPublishingOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.Authority;\nimport com.pulumi.gcp.certificateauthority.AuthorityArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityKeySpecArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamMember;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamMemberArgs;\nimport com.pulumi.gcp.networksecurity.TlsInspectionPolicy;\nimport com.pulumi.gcp.networksecurity.TlsInspectionPolicyArgs;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicy;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicyArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new CaPool(\"default\", CaPoolArgs.builder()\n .name(\"my-basic-ca-pool\")\n .location(\"us-central1\")\n .tier(\"DEVOPS\")\n .publishingOptions(CaPoolPublishingOptionsArgs.builder()\n .publishCaCert(false)\n .publishCrl(false)\n .build())\n .issuancePolicy(CaPoolIssuancePolicyArgs.builder()\n .maximumLifetime(\"1209600s\")\n .baselineValues(CaPoolIssuancePolicyBaselineValuesArgs.builder()\n .caOptions(CaPoolIssuancePolicyBaselineValuesCaOptionsArgs.builder()\n .isCa(false)\n .build())\n .keyUsage(CaPoolIssuancePolicyBaselineValuesKeyUsageArgs.builder()\n .baseKeyUsage()\n .extendedKeyUsage(CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .build())\n .build())\n .build())\n .build())\n .build());\n\n var defaultAuthority = new Authority(\"defaultAuthority\", AuthorityArgs.builder()\n .pool(default_.name())\n .certificateAuthorityId(\"my-basic-certificate-authority\")\n .location(\"us-central1\")\n .lifetime(\"86400s\")\n .type(\"SELF_SIGNED\")\n .deletionProtection(false)\n .skipGracePeriod(true)\n .ignoreActiveCertificatesOnDeletion(true)\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"Test LLC\")\n .commonName(\"my-ca\")\n .build())\n .build())\n .x509Config(AuthorityConfigX509ConfigArgs.builder()\n .caOptions(AuthorityConfigX509ConfigCaOptionsArgs.builder()\n .isCa(true)\n .build())\n .keyUsage(AuthorityConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .certSign(true)\n .crlSign(true)\n .build())\n .extendedKeyUsage(AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(false)\n .build())\n .build())\n .build())\n .build())\n .keySpec(AuthorityKeySpecArgs.builder()\n .algorithm(\"RSA_PKCS1_4096_SHA256\")\n .build())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var tlsInspectionPermission = new CaPoolIamMember(\"tlsInspectionPermission\", CaPoolIamMemberArgs.builder()\n .caPool(default_.id())\n .role(\"roles/privateca.certificateManager\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-networksecurity.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var defaultTlsInspectionPolicy = new TlsInspectionPolicy(\"defaultTlsInspectionPolicy\", TlsInspectionPolicyArgs.builder()\n .name(\"my-tls-inspection-policy\")\n .location(\"us-central1\")\n .caPool(default_.id())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n default_,\n defaultAuthority,\n tlsInspectionPermission)\n .build());\n\n var defaultGatewaySecurityPolicy = new GatewaySecurityPolicy(\"defaultGatewaySecurityPolicy\", GatewaySecurityPolicyArgs.builder()\n .name(\"my-gateway-security-policy\")\n .location(\"us-central1\")\n .description(\"my description\")\n .tlsInspectionPolicy(defaultTlsInspectionPolicy.id())\n .build(), CustomResourceOptions.builder()\n .dependsOn(defaultTlsInspectionPolicy)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificateauthority:CaPool\n properties:\n name: my-basic-ca-pool\n location: us-central1\n tier: DEVOPS\n publishingOptions:\n publishCaCert: false\n publishCrl: false\n issuancePolicy:\n maximumLifetime: 1209600s\n baselineValues:\n caOptions:\n isCa: false\n keyUsage:\n baseKeyUsage: {}\n extendedKeyUsage:\n serverAuth: true\n defaultAuthority:\n type: gcp:certificateauthority:Authority\n name: default\n properties:\n pool: ${default.name}\n certificateAuthorityId: my-basic-certificate-authority\n location: us-central1\n lifetime: 86400s\n type: SELF_SIGNED\n deletionProtection: false\n skipGracePeriod: true\n ignoreActiveCertificatesOnDeletion: true\n config:\n subjectConfig:\n subject:\n organization: Test LLC\n commonName: my-ca\n x509Config:\n caOptions:\n isCa: true\n keyUsage:\n baseKeyUsage:\n certSign: true\n crlSign: true\n extendedKeyUsage:\n serverAuth: false\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n tlsInspectionPermission:\n type: gcp:certificateauthority:CaPoolIamMember\n name: tls_inspection_permission\n properties:\n caPool: ${default.id}\n role: roles/privateca.certificateManager\n member: serviceAccount:service-${project.number}@gcp-sa-networksecurity.iam.gserviceaccount.com\n defaultTlsInspectionPolicy:\n type: gcp:networksecurity:TlsInspectionPolicy\n name: default\n properties:\n name: my-tls-inspection-policy\n location: us-central1\n caPool: ${default.id}\n options:\n dependson:\n - ${default}\n - ${defaultAuthority}\n - ${tlsInspectionPermission}\n defaultGatewaySecurityPolicy:\n type: gcp:networksecurity:GatewaySecurityPolicy\n name: default\n properties:\n name: my-gateway-security-policy\n location: us-central1\n description: my description\n tlsInspectionPolicy: ${defaultTlsInspectionPolicy.id}\n options:\n dependson:\n - ${defaultTlsInspectionPolicy}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nGatewaySecurityPolicy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/gatewaySecurityPolicies/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, GatewaySecurityPolicy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networksecurity/gatewaySecurityPolicy:GatewaySecurityPolicy default projects/{{project}}/locations/{{location}}/gatewaySecurityPolicies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networksecurity/gatewaySecurityPolicy:GatewaySecurityPolicy default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networksecurity/gatewaySecurityPolicy:GatewaySecurityPolicy default {{location}}/{{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -227551,7 +227551,7 @@ } }, "gcp:networksecurity/serverTlsPolicy:ServerTlsPolicy": { - "description": "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.\n\n\nTo get more information about ServerTlsPolicy, see:\n\n* [API documentation](https://cloud.google.com/traffic-director/docs/reference/network-security/rest/v1beta1/projects.locations.serverTlsPolicies)\n\n## Example Usage\n\n### Network Security Server Tls Policy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networksecurity.ServerTlsPolicy(\"default\", {\n name: \"my-server-tls-policy\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n allowOpen: false,\n serverCertificate: {\n certificateProviderInstance: {\n pluginInstance: \"google_cloud_private_spiffe\",\n },\n },\n mtlsPolicy: {\n clientValidationCas: [{\n grpcEndpoint: {\n targetUri: \"unix:mypath\",\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networksecurity.ServerTlsPolicy(\"default\",\n name=\"my-server-tls-policy\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n allow_open=False,\n server_certificate={\n \"certificate_provider_instance\": {\n \"plugin_instance\": \"google_cloud_private_spiffe\",\n },\n },\n mtls_policy={\n \"client_validation_cas\": [{\n \"grpc_endpoint\": {\n \"target_uri\": \"unix:mypath\",\n },\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.NetworkSecurity.ServerTlsPolicy(\"default\", new()\n {\n Name = \"my-server-tls-policy\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n AllowOpen = false,\n ServerCertificate = new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyServerCertificateArgs\n {\n CertificateProviderInstance = new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyServerCertificateCertificateProviderInstanceArgs\n {\n PluginInstance = \"google_cloud_private_spiffe\",\n },\n },\n MtlsPolicy = new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyMtlsPolicyArgs\n {\n ClientValidationCas = new[]\n {\n new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyMtlsPolicyClientValidationCaArgs\n {\n GrpcEndpoint = new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyMtlsPolicyClientValidationCaGrpcEndpointArgs\n {\n TargetUri = \"unix:mypath\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networksecurity.NewServerTlsPolicy(ctx, \"default\", \u0026networksecurity.ServerTlsPolicyArgs{\n\t\t\tName: pulumi.String(\"my-server-tls-policy\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tAllowOpen: pulumi.Bool(false),\n\t\t\tServerCertificate: \u0026networksecurity.ServerTlsPolicyServerCertificateArgs{\n\t\t\t\tCertificateProviderInstance: \u0026networksecurity.ServerTlsPolicyServerCertificateCertificateProviderInstanceArgs{\n\t\t\t\t\tPluginInstance: pulumi.String(\"google_cloud_private_spiffe\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMtlsPolicy: \u0026networksecurity.ServerTlsPolicyMtlsPolicyArgs{\n\t\t\t\tClientValidationCas: networksecurity.ServerTlsPolicyMtlsPolicyClientValidationCaArray{\n\t\t\t\t\t\u0026networksecurity.ServerTlsPolicyMtlsPolicyClientValidationCaArgs{\n\t\t\t\t\t\tGrpcEndpoint: \u0026networksecurity.ServerTlsPolicyMtlsPolicyClientValidationCaGrpcEndpointArgs{\n\t\t\t\t\t\t\tTargetUri: pulumi.String(\"unix:mypath\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networksecurity.ServerTlsPolicy;\nimport com.pulumi.gcp.networksecurity.ServerTlsPolicyArgs;\nimport com.pulumi.gcp.networksecurity.inputs.ServerTlsPolicyServerCertificateArgs;\nimport com.pulumi.gcp.networksecurity.inputs.ServerTlsPolicyServerCertificateCertificateProviderInstanceArgs;\nimport com.pulumi.gcp.networksecurity.inputs.ServerTlsPolicyMtlsPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new ServerTlsPolicy(\"default\", ServerTlsPolicyArgs.builder()\n .name(\"my-server-tls-policy\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .allowOpen(\"false\")\n .serverCertificate(ServerTlsPolicyServerCertificateArgs.builder()\n .certificateProviderInstance(ServerTlsPolicyServerCertificateCertificateProviderInstanceArgs.builder()\n .pluginInstance(\"google_cloud_private_spiffe\")\n .build())\n .build())\n .mtlsPolicy(ServerTlsPolicyMtlsPolicyArgs.builder()\n .clientValidationCas(ServerTlsPolicyMtlsPolicyClientValidationCaArgs.builder()\n .grpcEndpoint(ServerTlsPolicyMtlsPolicyClientValidationCaGrpcEndpointArgs.builder()\n .targetUri(\"unix:mypath\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networksecurity:ServerTlsPolicy\n properties:\n name: my-server-tls-policy\n labels:\n foo: bar\n description: my description\n allowOpen: 'false'\n serverCertificate:\n certificateProviderInstance:\n pluginInstance: google_cloud_private_spiffe\n mtlsPolicy:\n clientValidationCas:\n - grpcEndpoint:\n targetUri: unix:mypath\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Security Server Tls Policy Advanced\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networksecurity.ServerTlsPolicy(\"default\", {\n name: \"my-server-tls-policy\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n location: \"global\",\n allowOpen: false,\n mtlsPolicy: {\n clientValidationMode: \"ALLOW_INVALID_OR_MISSING_CLIENT_CERT\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networksecurity.ServerTlsPolicy(\"default\",\n name=\"my-server-tls-policy\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n location=\"global\",\n allow_open=False,\n mtls_policy={\n \"client_validation_mode\": \"ALLOW_INVALID_OR_MISSING_CLIENT_CERT\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.NetworkSecurity.ServerTlsPolicy(\"default\", new()\n {\n Name = \"my-server-tls-policy\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Location = \"global\",\n AllowOpen = false,\n MtlsPolicy = new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyMtlsPolicyArgs\n {\n ClientValidationMode = \"ALLOW_INVALID_OR_MISSING_CLIENT_CERT\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networksecurity.NewServerTlsPolicy(ctx, \"default\", \u0026networksecurity.ServerTlsPolicyArgs{\n\t\t\tName: pulumi.String(\"my-server-tls-policy\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tAllowOpen: pulumi.Bool(false),\n\t\t\tMtlsPolicy: \u0026networksecurity.ServerTlsPolicyMtlsPolicyArgs{\n\t\t\t\tClientValidationMode: pulumi.String(\"ALLOW_INVALID_OR_MISSING_CLIENT_CERT\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networksecurity.ServerTlsPolicy;\nimport com.pulumi.gcp.networksecurity.ServerTlsPolicyArgs;\nimport com.pulumi.gcp.networksecurity.inputs.ServerTlsPolicyMtlsPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new ServerTlsPolicy(\"default\", ServerTlsPolicyArgs.builder()\n .name(\"my-server-tls-policy\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .location(\"global\")\n .allowOpen(\"false\")\n .mtlsPolicy(ServerTlsPolicyMtlsPolicyArgs.builder()\n .clientValidationMode(\"ALLOW_INVALID_OR_MISSING_CLIENT_CERT\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networksecurity:ServerTlsPolicy\n properties:\n name: my-server-tls-policy\n labels:\n foo: bar\n description: my description\n location: global\n allowOpen: 'false'\n mtlsPolicy:\n clientValidationMode: ALLOW_INVALID_OR_MISSING_CLIENT_CERT\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Security Server Tls Policy Server Cert\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networksecurity.ServerTlsPolicy(\"default\", {\n name: \"my-server-tls-policy\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n location: \"global\",\n allowOpen: false,\n serverCertificate: {\n grpcEndpoint: {\n targetUri: \"unix:mypath\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networksecurity.ServerTlsPolicy(\"default\",\n name=\"my-server-tls-policy\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n location=\"global\",\n allow_open=False,\n server_certificate={\n \"grpc_endpoint\": {\n \"target_uri\": \"unix:mypath\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.NetworkSecurity.ServerTlsPolicy(\"default\", new()\n {\n Name = \"my-server-tls-policy\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Location = \"global\",\n AllowOpen = false,\n ServerCertificate = new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyServerCertificateArgs\n {\n GrpcEndpoint = new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyServerCertificateGrpcEndpointArgs\n {\n TargetUri = \"unix:mypath\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networksecurity.NewServerTlsPolicy(ctx, \"default\", \u0026networksecurity.ServerTlsPolicyArgs{\n\t\t\tName: pulumi.String(\"my-server-tls-policy\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tAllowOpen: pulumi.Bool(false),\n\t\t\tServerCertificate: \u0026networksecurity.ServerTlsPolicyServerCertificateArgs{\n\t\t\t\tGrpcEndpoint: \u0026networksecurity.ServerTlsPolicyServerCertificateGrpcEndpointArgs{\n\t\t\t\t\tTargetUri: pulumi.String(\"unix:mypath\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networksecurity.ServerTlsPolicy;\nimport com.pulumi.gcp.networksecurity.ServerTlsPolicyArgs;\nimport com.pulumi.gcp.networksecurity.inputs.ServerTlsPolicyServerCertificateArgs;\nimport com.pulumi.gcp.networksecurity.inputs.ServerTlsPolicyServerCertificateGrpcEndpointArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new ServerTlsPolicy(\"default\", ServerTlsPolicyArgs.builder()\n .name(\"my-server-tls-policy\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .location(\"global\")\n .allowOpen(\"false\")\n .serverCertificate(ServerTlsPolicyServerCertificateArgs.builder()\n .grpcEndpoint(ServerTlsPolicyServerCertificateGrpcEndpointArgs.builder()\n .targetUri(\"unix:mypath\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networksecurity:ServerTlsPolicy\n properties:\n name: my-server-tls-policy\n labels:\n foo: bar\n description: my description\n location: global\n allowOpen: 'false'\n serverCertificate:\n grpcEndpoint:\n targetUri: unix:mypath\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Security Server Tls Policy Mtls\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst project = gcp.organizations.getProject({});\nconst defaultTrustConfig = new gcp.certificatemanager.TrustConfig(\"default\", {\n name: \"my-trust-config\",\n description: \"sample trust config description\",\n location: \"global\",\n trustStores: [{\n trustAnchors: [{\n pemCertificate: std.file({\n input: \"test-fixtures/ca_cert.pem\",\n }).then(invoke =\u003e invoke.result),\n }],\n intermediateCas: [{\n pemCertificate: std.file({\n input: \"test-fixtures/ca_cert.pem\",\n }).then(invoke =\u003e invoke.result),\n }],\n }],\n labels: {\n foo: \"bar\",\n },\n});\nconst _default = new gcp.networksecurity.ServerTlsPolicy(\"default\", {\n name: \"my-server-tls-policy\",\n description: \"my description\",\n location: \"global\",\n allowOpen: false,\n mtlsPolicy: {\n clientValidationMode: \"REJECT_INVALID\",\n clientValidationTrustConfig: pulumi.all([project, defaultTrustConfig.name]).apply(([project, name]) =\u003e `projects/${project.number}/locations/global/trustConfigs/${name}`),\n },\n labels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nproject = gcp.organizations.get_project()\ndefault_trust_config = gcp.certificatemanager.TrustConfig(\"default\",\n name=\"my-trust-config\",\n description=\"sample trust config description\",\n location=\"global\",\n trust_stores=[{\n \"trust_anchors\": [{\n \"pem_certificate\": std.file(input=\"test-fixtures/ca_cert.pem\").result,\n }],\n \"intermediate_cas\": [{\n \"pem_certificate\": std.file(input=\"test-fixtures/ca_cert.pem\").result,\n }],\n }],\n labels={\n \"foo\": \"bar\",\n })\ndefault = gcp.networksecurity.ServerTlsPolicy(\"default\",\n name=\"my-server-tls-policy\",\n description=\"my description\",\n location=\"global\",\n allow_open=False,\n mtls_policy={\n \"client_validation_mode\": \"REJECT_INVALID\",\n \"client_validation_trust_config\": default_trust_config.name.apply(lambda name: f\"projects/{project.number}/locations/global/trustConfigs/{name}\"),\n },\n labels={\n \"foo\": \"bar\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var defaultTrustConfig = new Gcp.CertificateManager.TrustConfig(\"default\", new()\n {\n Name = \"my-trust-config\",\n Description = \"sample trust config description\",\n Location = \"global\",\n TrustStores = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreArgs\n {\n TrustAnchors = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreTrustAnchorArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/ca_cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n IntermediateCas = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreIntermediateCaArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/ca_cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n },\n },\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n var @default = new Gcp.NetworkSecurity.ServerTlsPolicy(\"default\", new()\n {\n Name = \"my-server-tls-policy\",\n Description = \"my description\",\n Location = \"global\",\n AllowOpen = false,\n MtlsPolicy = new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyMtlsPolicyArgs\n {\n ClientValidationMode = \"REJECT_INVALID\",\n ClientValidationTrustConfig = Output.Tuple(project, defaultTrustConfig.Name).Apply(values =\u003e\n {\n var project = values.Item1;\n var name = values.Item2;\n return $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/locations/global/trustConfigs/{name}\";\n }),\n },\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/ca_cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/ca_cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultTrustConfig, err := certificatemanager.NewTrustConfig(ctx, \"default\", \u0026certificatemanager.TrustConfigArgs{\n\t\t\tName: pulumi.String(\"my-trust-config\"),\n\t\t\tDescription: pulumi.String(\"sample trust config description\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tTrustStores: certificatemanager.TrustConfigTrustStoreArray{\n\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreArgs{\n\t\t\t\t\tTrustAnchors: certificatemanager.TrustConfigTrustStoreTrustAnchorArray{\n\t\t\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreTrustAnchorArgs{\n\t\t\t\t\t\t\tPemCertificate: pulumi.String(invokeFile.Result),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tIntermediateCas: certificatemanager.TrustConfigTrustStoreIntermediateCaArray{\n\t\t\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreIntermediateCaArgs{\n\t\t\t\t\t\t\tPemCertificate: pulumi.String(invokeFile1.Result),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networksecurity.NewServerTlsPolicy(ctx, \"default\", \u0026networksecurity.ServerTlsPolicyArgs{\n\t\t\tName: pulumi.String(\"my-server-tls-policy\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tAllowOpen: pulumi.Bool(false),\n\t\t\tMtlsPolicy: \u0026networksecurity.ServerTlsPolicyMtlsPolicyArgs{\n\t\t\t\tClientValidationMode: pulumi.String(\"REJECT_INVALID\"),\n\t\t\t\tClientValidationTrustConfig: defaultTrustConfig.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"projects/%v/locations/global/trustConfigs/%v\", project.Number, name), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.certificatemanager.TrustConfig;\nimport com.pulumi.gcp.certificatemanager.TrustConfigArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.TrustConfigTrustStoreArgs;\nimport com.pulumi.gcp.networksecurity.ServerTlsPolicy;\nimport com.pulumi.gcp.networksecurity.ServerTlsPolicyArgs;\nimport com.pulumi.gcp.networksecurity.inputs.ServerTlsPolicyMtlsPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var defaultTrustConfig = new TrustConfig(\"defaultTrustConfig\", TrustConfigArgs.builder()\n .name(\"my-trust-config\")\n .description(\"sample trust config description\")\n .location(\"global\")\n .trustStores(TrustConfigTrustStoreArgs.builder()\n .trustAnchors(TrustConfigTrustStoreTrustAnchorArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/ca_cert.pem\")\n .build()).result())\n .build())\n .intermediateCas(TrustConfigTrustStoreIntermediateCaArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/ca_cert.pem\")\n .build()).result())\n .build())\n .build())\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n var default_ = new ServerTlsPolicy(\"default\", ServerTlsPolicyArgs.builder()\n .name(\"my-server-tls-policy\")\n .description(\"my description\")\n .location(\"global\")\n .allowOpen(\"false\")\n .mtlsPolicy(ServerTlsPolicyMtlsPolicyArgs.builder()\n .clientValidationMode(\"REJECT_INVALID\")\n .clientValidationTrustConfig(defaultTrustConfig.name().applyValue(name -\u003e String.format(\"projects/%s/locations/global/trustConfigs/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number()),name)))\n .build())\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networksecurity:ServerTlsPolicy\n properties:\n name: my-server-tls-policy\n description: my description\n location: global\n allowOpen: 'false'\n mtlsPolicy:\n clientValidationMode: REJECT_INVALID\n clientValidationTrustConfig: projects/${project.number}/locations/global/trustConfigs/${defaultTrustConfig.name}\n labels:\n foo: bar\n defaultTrustConfig:\n type: gcp:certificatemanager:TrustConfig\n name: default\n properties:\n name: my-trust-config\n description: sample trust config description\n location: global\n trustStores:\n - trustAnchors:\n - pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/ca_cert.pem\n Return: result\n intermediateCas:\n - pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/ca_cert.pem\n Return: result\n labels:\n foo: bar\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nServerTlsPolicy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/serverTlsPolicies/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, ServerTlsPolicy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networksecurity/serverTlsPolicy:ServerTlsPolicy default projects/{{project}}/locations/{{location}}/serverTlsPolicies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networksecurity/serverTlsPolicy:ServerTlsPolicy default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networksecurity/serverTlsPolicy:ServerTlsPolicy default {{location}}/{{name}}\n```\n\n", + "description": "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.\n\n\nTo get more information about ServerTlsPolicy, see:\n\n* [API documentation](https://cloud.google.com/traffic-director/docs/reference/network-security/rest/v1beta1/projects.locations.serverTlsPolicies)\n\n## Example Usage\n\n### Network Security Server Tls Policy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networksecurity.ServerTlsPolicy(\"default\", {\n name: \"my-server-tls-policy\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n allowOpen: false,\n serverCertificate: {\n certificateProviderInstance: {\n pluginInstance: \"google_cloud_private_spiffe\",\n },\n },\n mtlsPolicy: {\n clientValidationCas: [{\n grpcEndpoint: {\n targetUri: \"unix:mypath\",\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networksecurity.ServerTlsPolicy(\"default\",\n name=\"my-server-tls-policy\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n allow_open=False,\n server_certificate={\n \"certificate_provider_instance\": {\n \"plugin_instance\": \"google_cloud_private_spiffe\",\n },\n },\n mtls_policy={\n \"client_validation_cas\": [{\n \"grpc_endpoint\": {\n \"target_uri\": \"unix:mypath\",\n },\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.NetworkSecurity.ServerTlsPolicy(\"default\", new()\n {\n Name = \"my-server-tls-policy\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n AllowOpen = false,\n ServerCertificate = new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyServerCertificateArgs\n {\n CertificateProviderInstance = new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyServerCertificateCertificateProviderInstanceArgs\n {\n PluginInstance = \"google_cloud_private_spiffe\",\n },\n },\n MtlsPolicy = new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyMtlsPolicyArgs\n {\n ClientValidationCas = new[]\n {\n new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyMtlsPolicyClientValidationCaArgs\n {\n GrpcEndpoint = new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyMtlsPolicyClientValidationCaGrpcEndpointArgs\n {\n TargetUri = \"unix:mypath\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networksecurity.NewServerTlsPolicy(ctx, \"default\", \u0026networksecurity.ServerTlsPolicyArgs{\n\t\t\tName: pulumi.String(\"my-server-tls-policy\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tAllowOpen: pulumi.Bool(false),\n\t\t\tServerCertificate: \u0026networksecurity.ServerTlsPolicyServerCertificateArgs{\n\t\t\t\tCertificateProviderInstance: \u0026networksecurity.ServerTlsPolicyServerCertificateCertificateProviderInstanceArgs{\n\t\t\t\t\tPluginInstance: pulumi.String(\"google_cloud_private_spiffe\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMtlsPolicy: \u0026networksecurity.ServerTlsPolicyMtlsPolicyArgs{\n\t\t\t\tClientValidationCas: networksecurity.ServerTlsPolicyMtlsPolicyClientValidationCaArray{\n\t\t\t\t\t\u0026networksecurity.ServerTlsPolicyMtlsPolicyClientValidationCaArgs{\n\t\t\t\t\t\tGrpcEndpoint: \u0026networksecurity.ServerTlsPolicyMtlsPolicyClientValidationCaGrpcEndpointArgs{\n\t\t\t\t\t\t\tTargetUri: pulumi.String(\"unix:mypath\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networksecurity.ServerTlsPolicy;\nimport com.pulumi.gcp.networksecurity.ServerTlsPolicyArgs;\nimport com.pulumi.gcp.networksecurity.inputs.ServerTlsPolicyServerCertificateArgs;\nimport com.pulumi.gcp.networksecurity.inputs.ServerTlsPolicyServerCertificateCertificateProviderInstanceArgs;\nimport com.pulumi.gcp.networksecurity.inputs.ServerTlsPolicyMtlsPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new ServerTlsPolicy(\"default\", ServerTlsPolicyArgs.builder()\n .name(\"my-server-tls-policy\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .allowOpen(\"false\")\n .serverCertificate(ServerTlsPolicyServerCertificateArgs.builder()\n .certificateProviderInstance(ServerTlsPolicyServerCertificateCertificateProviderInstanceArgs.builder()\n .pluginInstance(\"google_cloud_private_spiffe\")\n .build())\n .build())\n .mtlsPolicy(ServerTlsPolicyMtlsPolicyArgs.builder()\n .clientValidationCas(ServerTlsPolicyMtlsPolicyClientValidationCaArgs.builder()\n .grpcEndpoint(ServerTlsPolicyMtlsPolicyClientValidationCaGrpcEndpointArgs.builder()\n .targetUri(\"unix:mypath\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networksecurity:ServerTlsPolicy\n properties:\n name: my-server-tls-policy\n labels:\n foo: bar\n description: my description\n allowOpen: 'false'\n serverCertificate:\n certificateProviderInstance:\n pluginInstance: google_cloud_private_spiffe\n mtlsPolicy:\n clientValidationCas:\n - grpcEndpoint:\n targetUri: unix:mypath\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Security Server Tls Policy Advanced\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networksecurity.ServerTlsPolicy(\"default\", {\n name: \"my-server-tls-policy\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n location: \"global\",\n allowOpen: false,\n mtlsPolicy: {\n clientValidationMode: \"ALLOW_INVALID_OR_MISSING_CLIENT_CERT\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networksecurity.ServerTlsPolicy(\"default\",\n name=\"my-server-tls-policy\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n location=\"global\",\n allow_open=False,\n mtls_policy={\n \"client_validation_mode\": \"ALLOW_INVALID_OR_MISSING_CLIENT_CERT\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.NetworkSecurity.ServerTlsPolicy(\"default\", new()\n {\n Name = \"my-server-tls-policy\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Location = \"global\",\n AllowOpen = false,\n MtlsPolicy = new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyMtlsPolicyArgs\n {\n ClientValidationMode = \"ALLOW_INVALID_OR_MISSING_CLIENT_CERT\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networksecurity.NewServerTlsPolicy(ctx, \"default\", \u0026networksecurity.ServerTlsPolicyArgs{\n\t\t\tName: pulumi.String(\"my-server-tls-policy\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tAllowOpen: pulumi.Bool(false),\n\t\t\tMtlsPolicy: \u0026networksecurity.ServerTlsPolicyMtlsPolicyArgs{\n\t\t\t\tClientValidationMode: pulumi.String(\"ALLOW_INVALID_OR_MISSING_CLIENT_CERT\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networksecurity.ServerTlsPolicy;\nimport com.pulumi.gcp.networksecurity.ServerTlsPolicyArgs;\nimport com.pulumi.gcp.networksecurity.inputs.ServerTlsPolicyMtlsPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new ServerTlsPolicy(\"default\", ServerTlsPolicyArgs.builder()\n .name(\"my-server-tls-policy\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .location(\"global\")\n .allowOpen(\"false\")\n .mtlsPolicy(ServerTlsPolicyMtlsPolicyArgs.builder()\n .clientValidationMode(\"ALLOW_INVALID_OR_MISSING_CLIENT_CERT\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networksecurity:ServerTlsPolicy\n properties:\n name: my-server-tls-policy\n labels:\n foo: bar\n description: my description\n location: global\n allowOpen: 'false'\n mtlsPolicy:\n clientValidationMode: ALLOW_INVALID_OR_MISSING_CLIENT_CERT\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Security Server Tls Policy Server Cert\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networksecurity.ServerTlsPolicy(\"default\", {\n name: \"my-server-tls-policy\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n location: \"global\",\n allowOpen: false,\n serverCertificate: {\n grpcEndpoint: {\n targetUri: \"unix:mypath\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networksecurity.ServerTlsPolicy(\"default\",\n name=\"my-server-tls-policy\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n location=\"global\",\n allow_open=False,\n server_certificate={\n \"grpc_endpoint\": {\n \"target_uri\": \"unix:mypath\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.NetworkSecurity.ServerTlsPolicy(\"default\", new()\n {\n Name = \"my-server-tls-policy\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Location = \"global\",\n AllowOpen = false,\n ServerCertificate = new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyServerCertificateArgs\n {\n GrpcEndpoint = new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyServerCertificateGrpcEndpointArgs\n {\n TargetUri = \"unix:mypath\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networksecurity.NewServerTlsPolicy(ctx, \"default\", \u0026networksecurity.ServerTlsPolicyArgs{\n\t\t\tName: pulumi.String(\"my-server-tls-policy\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tAllowOpen: pulumi.Bool(false),\n\t\t\tServerCertificate: \u0026networksecurity.ServerTlsPolicyServerCertificateArgs{\n\t\t\t\tGrpcEndpoint: \u0026networksecurity.ServerTlsPolicyServerCertificateGrpcEndpointArgs{\n\t\t\t\t\tTargetUri: pulumi.String(\"unix:mypath\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networksecurity.ServerTlsPolicy;\nimport com.pulumi.gcp.networksecurity.ServerTlsPolicyArgs;\nimport com.pulumi.gcp.networksecurity.inputs.ServerTlsPolicyServerCertificateArgs;\nimport com.pulumi.gcp.networksecurity.inputs.ServerTlsPolicyServerCertificateGrpcEndpointArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new ServerTlsPolicy(\"default\", ServerTlsPolicyArgs.builder()\n .name(\"my-server-tls-policy\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .location(\"global\")\n .allowOpen(\"false\")\n .serverCertificate(ServerTlsPolicyServerCertificateArgs.builder()\n .grpcEndpoint(ServerTlsPolicyServerCertificateGrpcEndpointArgs.builder()\n .targetUri(\"unix:mypath\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networksecurity:ServerTlsPolicy\n properties:\n name: my-server-tls-policy\n labels:\n foo: bar\n description: my description\n location: global\n allowOpen: 'false'\n serverCertificate:\n grpcEndpoint:\n targetUri: unix:mypath\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Security Server Tls Policy Mtls\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst project = gcp.organizations.getProject({});\nconst defaultTrustConfig = new gcp.certificatemanager.TrustConfig(\"default\", {\n name: \"my-trust-config\",\n description: \"sample trust config description\",\n location: \"global\",\n trustStores: [{\n trustAnchors: [{\n pemCertificate: std.file({\n input: \"test-fixtures/ca_cert.pem\",\n }).then(invoke =\u003e invoke.result),\n }],\n intermediateCas: [{\n pemCertificate: std.file({\n input: \"test-fixtures/ca_cert.pem\",\n }).then(invoke =\u003e invoke.result),\n }],\n }],\n labels: {\n foo: \"bar\",\n },\n});\nconst _default = new gcp.networksecurity.ServerTlsPolicy(\"default\", {\n name: \"my-server-tls-policy\",\n description: \"my description\",\n location: \"global\",\n allowOpen: false,\n mtlsPolicy: {\n clientValidationMode: \"REJECT_INVALID\",\n clientValidationTrustConfig: pulumi.all([project, defaultTrustConfig.name]).apply(([project, name]) =\u003e `projects/${project.number}/locations/global/trustConfigs/${name}`),\n },\n labels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nproject = gcp.organizations.get_project()\ndefault_trust_config = gcp.certificatemanager.TrustConfig(\"default\",\n name=\"my-trust-config\",\n description=\"sample trust config description\",\n location=\"global\",\n trust_stores=[{\n \"trust_anchors\": [{\n \"pem_certificate\": std.file(input=\"test-fixtures/ca_cert.pem\").result,\n }],\n \"intermediate_cas\": [{\n \"pem_certificate\": std.file(input=\"test-fixtures/ca_cert.pem\").result,\n }],\n }],\n labels={\n \"foo\": \"bar\",\n })\ndefault = gcp.networksecurity.ServerTlsPolicy(\"default\",\n name=\"my-server-tls-policy\",\n description=\"my description\",\n location=\"global\",\n allow_open=False,\n mtls_policy={\n \"client_validation_mode\": \"REJECT_INVALID\",\n \"client_validation_trust_config\": default_trust_config.name.apply(lambda name: f\"projects/{project.number}/locations/global/trustConfigs/{name}\"),\n },\n labels={\n \"foo\": \"bar\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var defaultTrustConfig = new Gcp.CertificateManager.TrustConfig(\"default\", new()\n {\n Name = \"my-trust-config\",\n Description = \"sample trust config description\",\n Location = \"global\",\n TrustStores = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreArgs\n {\n TrustAnchors = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreTrustAnchorArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/ca_cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n IntermediateCas = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreIntermediateCaArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/ca_cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n },\n },\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n var @default = new Gcp.NetworkSecurity.ServerTlsPolicy(\"default\", new()\n {\n Name = \"my-server-tls-policy\",\n Description = \"my description\",\n Location = \"global\",\n AllowOpen = false,\n MtlsPolicy = new Gcp.NetworkSecurity.Inputs.ServerTlsPolicyMtlsPolicyArgs\n {\n ClientValidationMode = \"REJECT_INVALID\",\n ClientValidationTrustConfig = Output.Tuple(project, defaultTrustConfig.Name).Apply(values =\u003e\n {\n var project = values.Item1;\n var name = values.Item2;\n return $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/locations/global/trustConfigs/{name}\";\n }),\n },\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/ca_cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/ca_cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultTrustConfig, err := certificatemanager.NewTrustConfig(ctx, \"default\", \u0026certificatemanager.TrustConfigArgs{\n\t\t\tName: pulumi.String(\"my-trust-config\"),\n\t\t\tDescription: pulumi.String(\"sample trust config description\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tTrustStores: certificatemanager.TrustConfigTrustStoreArray{\n\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreArgs{\n\t\t\t\t\tTrustAnchors: certificatemanager.TrustConfigTrustStoreTrustAnchorArray{\n\t\t\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreTrustAnchorArgs{\n\t\t\t\t\t\t\tPemCertificate: pulumi.String(invokeFile.Result),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tIntermediateCas: certificatemanager.TrustConfigTrustStoreIntermediateCaArray{\n\t\t\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreIntermediateCaArgs{\n\t\t\t\t\t\t\tPemCertificate: pulumi.String(invokeFile1.Result),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networksecurity.NewServerTlsPolicy(ctx, \"default\", \u0026networksecurity.ServerTlsPolicyArgs{\n\t\t\tName: pulumi.String(\"my-server-tls-policy\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tAllowOpen: pulumi.Bool(false),\n\t\t\tMtlsPolicy: \u0026networksecurity.ServerTlsPolicyMtlsPolicyArgs{\n\t\t\t\tClientValidationMode: pulumi.String(\"REJECT_INVALID\"),\n\t\t\t\tClientValidationTrustConfig: defaultTrustConfig.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"projects/%v/locations/global/trustConfigs/%v\", project.Number, name), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.certificatemanager.TrustConfig;\nimport com.pulumi.gcp.certificatemanager.TrustConfigArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.TrustConfigTrustStoreArgs;\nimport com.pulumi.gcp.networksecurity.ServerTlsPolicy;\nimport com.pulumi.gcp.networksecurity.ServerTlsPolicyArgs;\nimport com.pulumi.gcp.networksecurity.inputs.ServerTlsPolicyMtlsPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var defaultTrustConfig = new TrustConfig(\"defaultTrustConfig\", TrustConfigArgs.builder()\n .name(\"my-trust-config\")\n .description(\"sample trust config description\")\n .location(\"global\")\n .trustStores(TrustConfigTrustStoreArgs.builder()\n .trustAnchors(TrustConfigTrustStoreTrustAnchorArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/ca_cert.pem\")\n .build()).result())\n .build())\n .intermediateCas(TrustConfigTrustStoreIntermediateCaArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/ca_cert.pem\")\n .build()).result())\n .build())\n .build())\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n var default_ = new ServerTlsPolicy(\"default\", ServerTlsPolicyArgs.builder()\n .name(\"my-server-tls-policy\")\n .description(\"my description\")\n .location(\"global\")\n .allowOpen(\"false\")\n .mtlsPolicy(ServerTlsPolicyMtlsPolicyArgs.builder()\n .clientValidationMode(\"REJECT_INVALID\")\n .clientValidationTrustConfig(defaultTrustConfig.name().applyValue(name -\u003e String.format(\"projects/%s/locations/global/trustConfigs/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number()),name)))\n .build())\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networksecurity:ServerTlsPolicy\n properties:\n name: my-server-tls-policy\n description: my description\n location: global\n allowOpen: 'false'\n mtlsPolicy:\n clientValidationMode: REJECT_INVALID\n clientValidationTrustConfig: projects/${project.number}/locations/global/trustConfigs/${defaultTrustConfig.name}\n labels:\n foo: bar\n defaultTrustConfig:\n type: gcp:certificatemanager:TrustConfig\n name: default\n properties:\n name: my-trust-config\n description: sample trust config description\n location: global\n trustStores:\n - trustAnchors:\n - pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/ca_cert.pem\n Return: result\n intermediateCas:\n - pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/ca_cert.pem\n Return: result\n labels:\n foo: bar\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nServerTlsPolicy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/serverTlsPolicies/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, ServerTlsPolicy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networksecurity/serverTlsPolicy:ServerTlsPolicy default projects/{{project}}/locations/{{location}}/serverTlsPolicies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networksecurity/serverTlsPolicy:ServerTlsPolicy default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networksecurity/serverTlsPolicy:ServerTlsPolicy default {{location}}/{{name}}\n```\n\n", "properties": { "allowOpen": { "type": "boolean", @@ -227729,7 +227729,7 @@ } }, "gcp:networksecurity/tlsInspectionPolicy:TlsInspectionPolicy": { - "description": "The TlsInspectionPolicy resource contains references to CA pools in Certificate Authority Service and associated metadata.\n\n\nTo get more information about TlsInspectionPolicy, see:\n\n* [API documentation](https://cloud.google.com/secure-web-proxy/docs/reference/network-security/rest/v1/projects.locations.tlsInspectionPolicies)\n* How-to Guides\n * [Use TlsInspectionPolicy](https://cloud.google.com/secure-web-proxy/docs/tls-inspection-overview)\n\n## Example Usage\n\n### Network Security Tls Inspection Policy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.certificateauthority.CaPool(\"default\", {\n name: \"my-basic-ca-pool\",\n location: \"us-central1\",\n tier: \"DEVOPS\",\n publishingOptions: {\n publishCaCert: false,\n publishCrl: false,\n },\n issuancePolicy: {\n maximumLifetime: \"1209600s\",\n baselineValues: {\n caOptions: {\n isCa: false,\n },\n keyUsage: {\n baseKeyUsage: {},\n extendedKeyUsage: {\n serverAuth: true,\n },\n },\n },\n },\n});\nconst defaultAuthority = new gcp.certificateauthority.Authority(\"default\", {\n pool: _default.name,\n certificateAuthorityId: \"my-basic-certificate-authority\",\n location: \"us-central1\",\n lifetime: \"86400s\",\n type: \"SELF_SIGNED\",\n deletionProtection: false,\n skipGracePeriod: true,\n ignoreActiveCertificatesOnDeletion: true,\n config: {\n subjectConfig: {\n subject: {\n organization: \"Test LLC\",\n commonName: \"my-ca\",\n },\n },\n x509Config: {\n caOptions: {\n isCa: true,\n },\n keyUsage: {\n baseKeyUsage: {\n certSign: true,\n crlSign: true,\n },\n extendedKeyUsage: {\n serverAuth: false,\n },\n },\n },\n },\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n});\nconst project = gcp.organizations.getProject({});\nconst tlsInspectionPermission = new gcp.certificateauthority.CaPoolIamMember(\"tls_inspection_permission\", {\n caPool: _default.id,\n role: \"roles/privateca.certificateManager\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-networksecurity.iam.gserviceaccount.com`),\n});\nconst defaultTlsInspectionPolicy = new gcp.networksecurity.TlsInspectionPolicy(\"default\", {\n name: \"my-tls-inspection-policy\",\n location: \"us-central1\",\n caPool: _default.id,\n excludePublicCaSet: false,\n}, {\n dependsOn: [\n _default,\n defaultAuthority,\n tlsInspectionPermission,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.certificateauthority.CaPool(\"default\",\n name=\"my-basic-ca-pool\",\n location=\"us-central1\",\n tier=\"DEVOPS\",\n publishing_options={\n \"publish_ca_cert\": False,\n \"publish_crl\": False,\n },\n issuance_policy={\n \"maximum_lifetime\": \"1209600s\",\n \"baseline_values\": {\n \"ca_options\": {\n \"is_ca\": False,\n },\n \"key_usage\": {\n \"base_key_usage\": {},\n \"extended_key_usage\": {\n \"server_auth\": True,\n },\n },\n },\n })\ndefault_authority = gcp.certificateauthority.Authority(\"default\",\n pool=default.name,\n certificate_authority_id=\"my-basic-certificate-authority\",\n location=\"us-central1\",\n lifetime=\"86400s\",\n type=\"SELF_SIGNED\",\n deletion_protection=False,\n skip_grace_period=True,\n ignore_active_certificates_on_deletion=True,\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"Test LLC\",\n \"common_name\": \"my-ca\",\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": False,\n },\n },\n },\n },\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n })\nproject = gcp.organizations.get_project()\ntls_inspection_permission = gcp.certificateauthority.CaPoolIamMember(\"tls_inspection_permission\",\n ca_pool=default.id,\n role=\"roles/privateca.certificateManager\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-networksecurity.iam.gserviceaccount.com\")\ndefault_tls_inspection_policy = gcp.networksecurity.TlsInspectionPolicy(\"default\",\n name=\"my-tls-inspection-policy\",\n location=\"us-central1\",\n ca_pool=default.id,\n exclude_public_ca_set=False,\n opts = pulumi.ResourceOptions(depends_on=[\n default,\n default_authority,\n tls_inspection_permission,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateAuthority.CaPool(\"default\", new()\n {\n Name = \"my-basic-ca-pool\",\n Location = \"us-central1\",\n Tier = \"DEVOPS\",\n PublishingOptions = new Gcp.CertificateAuthority.Inputs.CaPoolPublishingOptionsArgs\n {\n PublishCaCert = false,\n PublishCrl = false,\n },\n IssuancePolicy = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyArgs\n {\n MaximumLifetime = \"1209600s\",\n BaselineValues = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesCaOptionsArgs\n {\n IsCa = false,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageArgs\n {\n BaseKeyUsage = null,\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n },\n },\n },\n },\n });\n\n var defaultAuthority = new Gcp.CertificateAuthority.Authority(\"default\", new()\n {\n Pool = @default.Name,\n CertificateAuthorityId = \"my-basic-certificate-authority\",\n Location = \"us-central1\",\n Lifetime = \"86400s\",\n Type = \"SELF_SIGNED\",\n DeletionProtection = false,\n SkipGracePeriod = true,\n IgnoreActiveCertificatesOnDeletion = true,\n Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectArgs\n {\n Organization = \"Test LLC\",\n CommonName = \"my-ca\",\n },\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigCaOptionsArgs\n {\n IsCa = true,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n CertSign = true,\n CrlSign = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = false,\n },\n },\n },\n },\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n Algorithm = \"RSA_PKCS1_4096_SHA256\",\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var tlsInspectionPermission = new Gcp.CertificateAuthority.CaPoolIamMember(\"tls_inspection_permission\", new()\n {\n CaPool = @default.Id,\n Role = \"roles/privateca.certificateManager\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-networksecurity.iam.gserviceaccount.com\",\n });\n\n var defaultTlsInspectionPolicy = new Gcp.NetworkSecurity.TlsInspectionPolicy(\"default\", new()\n {\n Name = \"my-tls-inspection-policy\",\n Location = \"us-central1\",\n CaPool = @default.Id,\n ExcludePublicCaSet = false,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @default,\n defaultAuthority,\n tlsInspectionPermission,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := certificateauthority.NewCaPool(ctx, \"default\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tName: pulumi.String(\"my-basic-ca-pool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTier: pulumi.String(\"DEVOPS\"),\n\t\t\tPublishingOptions: \u0026certificateauthority.CaPoolPublishingOptionsArgs{\n\t\t\t\tPublishCaCert: pulumi.Bool(false),\n\t\t\t\tPublishCrl: pulumi.Bool(false),\n\t\t\t},\n\t\t\tIssuancePolicy: \u0026certificateauthority.CaPoolIssuancePolicyArgs{\n\t\t\t\tMaximumLifetime: pulumi.String(\"1209600s\"),\n\t\t\t\tBaselineValues: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(false),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: nil,\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tServerAuth: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultAuthority, err := certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tPool: _default.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-basic-certificate-authority\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLifetime: pulumi.String(\"86400s\"),\n\t\t\tType: pulumi.String(\"SELF_SIGNED\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tSkipGracePeriod: pulumi.Bool(true),\n\t\t\tIgnoreActiveCertificatesOnDeletion: pulumi.Bool(true),\n\t\t\tConfig: \u0026certificateauthority.AuthorityConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.AuthorityConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tOrganization: pulumi.String(\"Test LLC\"),\n\t\t\t\t\t\tCommonName: pulumi.String(\"my-ca\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tX509Config: \u0026certificateauthority.AuthorityConfigX509ConfigArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.AuthorityConfigX509ConfigCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs{\n\t\t\t\t\t\t\tCertSign: pulumi.Bool(true),\n\t\t\t\t\t\t\tCrlSign: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tServerAuth: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"RSA_PKCS1_4096_SHA256\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttlsInspectionPermission, err := certificateauthority.NewCaPoolIamMember(ctx, \"tls_inspection_permission\", \u0026certificateauthority.CaPoolIamMemberArgs{\n\t\t\tCaPool: _default.ID(),\n\t\t\tRole: pulumi.String(\"roles/privateca.certificateManager\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-networksecurity.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networksecurity.NewTlsInspectionPolicy(ctx, \"default\", \u0026networksecurity.TlsInspectionPolicyArgs{\n\t\t\tName: pulumi.String(\"my-tls-inspection-policy\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tCaPool: _default.ID(),\n\t\t\tExcludePublicCaSet: pulumi.Bool(false),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\t_default,\n\t\t\tdefaultAuthority,\n\t\t\ttlsInspectionPermission,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificateauthority.CaPool;\nimport com.pulumi.gcp.certificateauthority.CaPoolArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolPublishingOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.Authority;\nimport com.pulumi.gcp.certificateauthority.AuthorityArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityKeySpecArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamMember;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamMemberArgs;\nimport com.pulumi.gcp.networksecurity.TlsInspectionPolicy;\nimport com.pulumi.gcp.networksecurity.TlsInspectionPolicyArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new CaPool(\"default\", CaPoolArgs.builder()\n .name(\"my-basic-ca-pool\")\n .location(\"us-central1\")\n .tier(\"DEVOPS\")\n .publishingOptions(CaPoolPublishingOptionsArgs.builder()\n .publishCaCert(false)\n .publishCrl(false)\n .build())\n .issuancePolicy(CaPoolIssuancePolicyArgs.builder()\n .maximumLifetime(\"1209600s\")\n .baselineValues(CaPoolIssuancePolicyBaselineValuesArgs.builder()\n .caOptions(CaPoolIssuancePolicyBaselineValuesCaOptionsArgs.builder()\n .isCa(false)\n .build())\n .keyUsage(CaPoolIssuancePolicyBaselineValuesKeyUsageArgs.builder()\n .baseKeyUsage()\n .extendedKeyUsage(CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .build())\n .build())\n .build())\n .build())\n .build());\n\n var defaultAuthority = new Authority(\"defaultAuthority\", AuthorityArgs.builder()\n .pool(default_.name())\n .certificateAuthorityId(\"my-basic-certificate-authority\")\n .location(\"us-central1\")\n .lifetime(\"86400s\")\n .type(\"SELF_SIGNED\")\n .deletionProtection(false)\n .skipGracePeriod(true)\n .ignoreActiveCertificatesOnDeletion(true)\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"Test LLC\")\n .commonName(\"my-ca\")\n .build())\n .build())\n .x509Config(AuthorityConfigX509ConfigArgs.builder()\n .caOptions(AuthorityConfigX509ConfigCaOptionsArgs.builder()\n .isCa(true)\n .build())\n .keyUsage(AuthorityConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .certSign(true)\n .crlSign(true)\n .build())\n .extendedKeyUsage(AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(false)\n .build())\n .build())\n .build())\n .build())\n .keySpec(AuthorityKeySpecArgs.builder()\n .algorithm(\"RSA_PKCS1_4096_SHA256\")\n .build())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var tlsInspectionPermission = new CaPoolIamMember(\"tlsInspectionPermission\", CaPoolIamMemberArgs.builder()\n .caPool(default_.id())\n .role(\"roles/privateca.certificateManager\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-networksecurity.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var defaultTlsInspectionPolicy = new TlsInspectionPolicy(\"defaultTlsInspectionPolicy\", TlsInspectionPolicyArgs.builder()\n .name(\"my-tls-inspection-policy\")\n .location(\"us-central1\")\n .caPool(default_.id())\n .excludePublicCaSet(false)\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n default_,\n defaultAuthority,\n tlsInspectionPermission)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificateauthority:CaPool\n properties:\n name: my-basic-ca-pool\n location: us-central1\n tier: DEVOPS\n publishingOptions:\n publishCaCert: false\n publishCrl: false\n issuancePolicy:\n maximumLifetime: 1209600s\n baselineValues:\n caOptions:\n isCa: false\n keyUsage:\n baseKeyUsage: {}\n extendedKeyUsage:\n serverAuth: true\n defaultAuthority:\n type: gcp:certificateauthority:Authority\n name: default\n properties:\n pool: ${default.name}\n certificateAuthorityId: my-basic-certificate-authority\n location: us-central1\n lifetime: 86400s\n type: SELF_SIGNED\n deletionProtection: false\n skipGracePeriod: true\n ignoreActiveCertificatesOnDeletion: true\n config:\n subjectConfig:\n subject:\n organization: Test LLC\n commonName: my-ca\n x509Config:\n caOptions:\n isCa: true\n keyUsage:\n baseKeyUsage:\n certSign: true\n crlSign: true\n extendedKeyUsage:\n serverAuth: false\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n tlsInspectionPermission:\n type: gcp:certificateauthority:CaPoolIamMember\n name: tls_inspection_permission\n properties:\n caPool: ${default.id}\n role: roles/privateca.certificateManager\n member: serviceAccount:service-${project.number}@gcp-sa-networksecurity.iam.gserviceaccount.com\n defaultTlsInspectionPolicy:\n type: gcp:networksecurity:TlsInspectionPolicy\n name: default\n properties:\n name: my-tls-inspection-policy\n location: us-central1\n caPool: ${default.id}\n excludePublicCaSet: false\n options:\n dependson:\n - ${default}\n - ${defaultAuthority}\n - ${tlsInspectionPermission}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Security Tls Inspection Policy Custom\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst _default = new gcp.certificateauthority.CaPool(\"default\", {\n name: \"my-basic-ca-pool\",\n location: \"us-central1\",\n tier: \"DEVOPS\",\n publishingOptions: {\n publishCaCert: false,\n publishCrl: false,\n },\n issuancePolicy: {\n maximumLifetime: \"1209600s\",\n baselineValues: {\n caOptions: {\n isCa: false,\n },\n keyUsage: {\n baseKeyUsage: {},\n extendedKeyUsage: {\n serverAuth: true,\n },\n },\n },\n },\n});\nconst defaultAuthority = new gcp.certificateauthority.Authority(\"default\", {\n pool: _default.name,\n certificateAuthorityId: \"my-basic-certificate-authority\",\n location: \"us-central1\",\n lifetime: \"86400s\",\n type: \"SELF_SIGNED\",\n deletionProtection: false,\n skipGracePeriod: true,\n ignoreActiveCertificatesOnDeletion: true,\n config: {\n subjectConfig: {\n subject: {\n organization: \"Test LLC\",\n commonName: \"my-ca\",\n },\n },\n x509Config: {\n caOptions: {\n isCa: true,\n },\n keyUsage: {\n baseKeyUsage: {\n certSign: true,\n crlSign: true,\n },\n extendedKeyUsage: {\n serverAuth: false,\n },\n },\n },\n },\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n});\nconst nsSa = new gcp.projects.ServiceIdentity(\"ns_sa\", {service: \"networksecurity.googleapis.com\"});\nconst defaultCaPoolIamMember = new gcp.certificateauthority.CaPoolIamMember(\"default\", {\n caPool: _default.id,\n role: \"roles/privateca.certificateManager\",\n member: nsSa.member,\n});\nconst defaultTrustConfig = new gcp.certificatemanager.TrustConfig(\"default\", {\n name: \"my-trust-config\",\n description: \"sample trust config description\",\n location: \"us-central1\",\n trustStores: [{\n trustAnchors: [{\n pemCertificate: std.file({\n input: \"test-fixtures/ca_cert.pem\",\n }).then(invoke =\u003e invoke.result),\n }],\n intermediateCas: [{\n pemCertificate: std.file({\n input: \"test-fixtures/ca_cert.pem\",\n }).then(invoke =\u003e invoke.result),\n }],\n }],\n});\nconst defaultTlsInspectionPolicy = new gcp.networksecurity.TlsInspectionPolicy(\"default\", {\n name: \"my-tls-inspection-policy\",\n location: \"us-central1\",\n caPool: _default.id,\n excludePublicCaSet: false,\n minTlsVersion: \"TLS_1_0\",\n trustConfig: defaultTrustConfig.id,\n tlsFeatureProfile: \"PROFILE_CUSTOM\",\n customTlsFeatures: [\n \"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA\",\n \"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA\",\n \"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\",\n \"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256\",\n \"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA\",\n \"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA\",\n \"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\",\n \"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256\",\n \"TLS_RSA_WITH_3DES_EDE_CBC_SHA\",\n \"TLS_RSA_WITH_AES_128_CBC_SHA\",\n \"TLS_RSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_RSA_WITH_AES_256_CBC_SHA\",\n \"TLS_RSA_WITH_AES_256_GCM_SHA384\",\n ],\n}, {\n dependsOn: [\n defaultAuthority,\n defaultCaPoolIamMember,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault = gcp.certificateauthority.CaPool(\"default\",\n name=\"my-basic-ca-pool\",\n location=\"us-central1\",\n tier=\"DEVOPS\",\n publishing_options={\n \"publish_ca_cert\": False,\n \"publish_crl\": False,\n },\n issuance_policy={\n \"maximum_lifetime\": \"1209600s\",\n \"baseline_values\": {\n \"ca_options\": {\n \"is_ca\": False,\n },\n \"key_usage\": {\n \"base_key_usage\": {},\n \"extended_key_usage\": {\n \"server_auth\": True,\n },\n },\n },\n })\ndefault_authority = gcp.certificateauthority.Authority(\"default\",\n pool=default.name,\n certificate_authority_id=\"my-basic-certificate-authority\",\n location=\"us-central1\",\n lifetime=\"86400s\",\n type=\"SELF_SIGNED\",\n deletion_protection=False,\n skip_grace_period=True,\n ignore_active_certificates_on_deletion=True,\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"Test LLC\",\n \"common_name\": \"my-ca\",\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": False,\n },\n },\n },\n },\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n })\nns_sa = gcp.projects.ServiceIdentity(\"ns_sa\", service=\"networksecurity.googleapis.com\")\ndefault_ca_pool_iam_member = gcp.certificateauthority.CaPoolIamMember(\"default\",\n ca_pool=default.id,\n role=\"roles/privateca.certificateManager\",\n member=ns_sa.member)\ndefault_trust_config = gcp.certificatemanager.TrustConfig(\"default\",\n name=\"my-trust-config\",\n description=\"sample trust config description\",\n location=\"us-central1\",\n trust_stores=[{\n \"trust_anchors\": [{\n \"pem_certificate\": std.file(input=\"test-fixtures/ca_cert.pem\").result,\n }],\n \"intermediate_cas\": [{\n \"pem_certificate\": std.file(input=\"test-fixtures/ca_cert.pem\").result,\n }],\n }])\ndefault_tls_inspection_policy = gcp.networksecurity.TlsInspectionPolicy(\"default\",\n name=\"my-tls-inspection-policy\",\n location=\"us-central1\",\n ca_pool=default.id,\n exclude_public_ca_set=False,\n min_tls_version=\"TLS_1_0\",\n trust_config=default_trust_config.id,\n tls_feature_profile=\"PROFILE_CUSTOM\",\n custom_tls_features=[\n \"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA\",\n \"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA\",\n \"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\",\n \"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256\",\n \"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA\",\n \"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA\",\n \"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\",\n \"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256\",\n \"TLS_RSA_WITH_3DES_EDE_CBC_SHA\",\n \"TLS_RSA_WITH_AES_128_CBC_SHA\",\n \"TLS_RSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_RSA_WITH_AES_256_CBC_SHA\",\n \"TLS_RSA_WITH_AES_256_GCM_SHA384\",\n ],\n opts = pulumi.ResourceOptions(depends_on=[\n default_authority,\n default_ca_pool_iam_member,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateAuthority.CaPool(\"default\", new()\n {\n Name = \"my-basic-ca-pool\",\n Location = \"us-central1\",\n Tier = \"DEVOPS\",\n PublishingOptions = new Gcp.CertificateAuthority.Inputs.CaPoolPublishingOptionsArgs\n {\n PublishCaCert = false,\n PublishCrl = false,\n },\n IssuancePolicy = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyArgs\n {\n MaximumLifetime = \"1209600s\",\n BaselineValues = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesCaOptionsArgs\n {\n IsCa = false,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageArgs\n {\n BaseKeyUsage = null,\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n },\n },\n },\n },\n });\n\n var defaultAuthority = new Gcp.CertificateAuthority.Authority(\"default\", new()\n {\n Pool = @default.Name,\n CertificateAuthorityId = \"my-basic-certificate-authority\",\n Location = \"us-central1\",\n Lifetime = \"86400s\",\n Type = \"SELF_SIGNED\",\n DeletionProtection = false,\n SkipGracePeriod = true,\n IgnoreActiveCertificatesOnDeletion = true,\n Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectArgs\n {\n Organization = \"Test LLC\",\n CommonName = \"my-ca\",\n },\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigCaOptionsArgs\n {\n IsCa = true,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n CertSign = true,\n CrlSign = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = false,\n },\n },\n },\n },\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n Algorithm = \"RSA_PKCS1_4096_SHA256\",\n },\n });\n\n var nsSa = new Gcp.Projects.ServiceIdentity(\"ns_sa\", new()\n {\n Service = \"networksecurity.googleapis.com\",\n });\n\n var defaultCaPoolIamMember = new Gcp.CertificateAuthority.CaPoolIamMember(\"default\", new()\n {\n CaPool = @default.Id,\n Role = \"roles/privateca.certificateManager\",\n Member = nsSa.Member,\n });\n\n var defaultTrustConfig = new Gcp.CertificateManager.TrustConfig(\"default\", new()\n {\n Name = \"my-trust-config\",\n Description = \"sample trust config description\",\n Location = \"us-central1\",\n TrustStores = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreArgs\n {\n TrustAnchors = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreTrustAnchorArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/ca_cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n IntermediateCas = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreIntermediateCaArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/ca_cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n },\n },\n });\n\n var defaultTlsInspectionPolicy = new Gcp.NetworkSecurity.TlsInspectionPolicy(\"default\", new()\n {\n Name = \"my-tls-inspection-policy\",\n Location = \"us-central1\",\n CaPool = @default.Id,\n ExcludePublicCaSet = false,\n MinTlsVersion = \"TLS_1_0\",\n TrustConfig = defaultTrustConfig.Id,\n TlsFeatureProfile = \"PROFILE_CUSTOM\",\n CustomTlsFeatures = new[]\n {\n \"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA\",\n \"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA\",\n \"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\",\n \"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256\",\n \"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA\",\n \"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA\",\n \"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\",\n \"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256\",\n \"TLS_RSA_WITH_3DES_EDE_CBC_SHA\",\n \"TLS_RSA_WITH_AES_128_CBC_SHA\",\n \"TLS_RSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_RSA_WITH_AES_256_CBC_SHA\",\n \"TLS_RSA_WITH_AES_256_GCM_SHA384\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n defaultAuthority,\n defaultCaPoolIamMember,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := certificateauthority.NewCaPool(ctx, \"default\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tName: pulumi.String(\"my-basic-ca-pool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTier: pulumi.String(\"DEVOPS\"),\n\t\t\tPublishingOptions: \u0026certificateauthority.CaPoolPublishingOptionsArgs{\n\t\t\t\tPublishCaCert: pulumi.Bool(false),\n\t\t\t\tPublishCrl: pulumi.Bool(false),\n\t\t\t},\n\t\t\tIssuancePolicy: \u0026certificateauthority.CaPoolIssuancePolicyArgs{\n\t\t\t\tMaximumLifetime: pulumi.String(\"1209600s\"),\n\t\t\t\tBaselineValues: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(false),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: nil,\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tServerAuth: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultAuthority, err := certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tPool: _default.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-basic-certificate-authority\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLifetime: pulumi.String(\"86400s\"),\n\t\t\tType: pulumi.String(\"SELF_SIGNED\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tSkipGracePeriod: pulumi.Bool(true),\n\t\t\tIgnoreActiveCertificatesOnDeletion: pulumi.Bool(true),\n\t\t\tConfig: \u0026certificateauthority.AuthorityConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.AuthorityConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tOrganization: pulumi.String(\"Test LLC\"),\n\t\t\t\t\t\tCommonName: pulumi.String(\"my-ca\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tX509Config: \u0026certificateauthority.AuthorityConfigX509ConfigArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.AuthorityConfigX509ConfigCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs{\n\t\t\t\t\t\t\tCertSign: pulumi.Bool(true),\n\t\t\t\t\t\t\tCrlSign: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tServerAuth: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"RSA_PKCS1_4096_SHA256\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnsSa, err := projects.NewServiceIdentity(ctx, \"ns_sa\", \u0026projects.ServiceIdentityArgs{\n\t\t\tService: pulumi.String(\"networksecurity.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultCaPoolIamMember, err := certificateauthority.NewCaPoolIamMember(ctx, \"default\", \u0026certificateauthority.CaPoolIamMemberArgs{\n\t\t\tCaPool: _default.ID(),\n\t\t\tRole: pulumi.String(\"roles/privateca.certificateManager\"),\n\t\t\tMember: nsSa.Member,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/ca_cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/ca_cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultTrustConfig, err := certificatemanager.NewTrustConfig(ctx, \"default\", \u0026certificatemanager.TrustConfigArgs{\n\t\t\tName: pulumi.String(\"my-trust-config\"),\n\t\t\tDescription: pulumi.String(\"sample trust config description\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTrustStores: certificatemanager.TrustConfigTrustStoreArray{\n\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreArgs{\n\t\t\t\t\tTrustAnchors: certificatemanager.TrustConfigTrustStoreTrustAnchorArray{\n\t\t\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreTrustAnchorArgs{\n\t\t\t\t\t\t\tPemCertificate: pulumi.String(invokeFile.Result),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tIntermediateCas: certificatemanager.TrustConfigTrustStoreIntermediateCaArray{\n\t\t\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreIntermediateCaArgs{\n\t\t\t\t\t\t\tPemCertificate: pulumi.String(invokeFile1.Result),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networksecurity.NewTlsInspectionPolicy(ctx, \"default\", \u0026networksecurity.TlsInspectionPolicyArgs{\n\t\t\tName: pulumi.String(\"my-tls-inspection-policy\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tCaPool: _default.ID(),\n\t\t\tExcludePublicCaSet: pulumi.Bool(false),\n\t\t\tMinTlsVersion: pulumi.String(\"TLS_1_0\"),\n\t\t\tTrustConfig: defaultTrustConfig.ID(),\n\t\t\tTlsFeatureProfile: pulumi.String(\"PROFILE_CUSTOM\"),\n\t\t\tCustomTlsFeatures: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA\"),\n\t\t\t\tpulumi.String(\"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\"),\n\t\t\t\tpulumi.String(\"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA\"),\n\t\t\t\tpulumi.String(\"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\"),\n\t\t\t\tpulumi.String(\"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256\"),\n\t\t\t\tpulumi.String(\"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA\"),\n\t\t\t\tpulumi.String(\"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\"),\n\t\t\t\tpulumi.String(\"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA\"),\n\t\t\t\tpulumi.String(\"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\"),\n\t\t\t\tpulumi.String(\"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256\"),\n\t\t\t\tpulumi.String(\"TLS_RSA_WITH_3DES_EDE_CBC_SHA\"),\n\t\t\t\tpulumi.String(\"TLS_RSA_WITH_AES_128_CBC_SHA\"),\n\t\t\t\tpulumi.String(\"TLS_RSA_WITH_AES_128_GCM_SHA256\"),\n\t\t\t\tpulumi.String(\"TLS_RSA_WITH_AES_256_CBC_SHA\"),\n\t\t\t\tpulumi.String(\"TLS_RSA_WITH_AES_256_GCM_SHA384\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdefaultAuthority,\n\t\t\tdefaultCaPoolIamMember,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificateauthority.CaPool;\nimport com.pulumi.gcp.certificateauthority.CaPoolArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolPublishingOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.Authority;\nimport com.pulumi.gcp.certificateauthority.AuthorityArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityKeySpecArgs;\nimport com.pulumi.gcp.projects.ServiceIdentity;\nimport com.pulumi.gcp.projects.ServiceIdentityArgs;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamMember;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamMemberArgs;\nimport com.pulumi.gcp.certificatemanager.TrustConfig;\nimport com.pulumi.gcp.certificatemanager.TrustConfigArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.TrustConfigTrustStoreArgs;\nimport com.pulumi.gcp.networksecurity.TlsInspectionPolicy;\nimport com.pulumi.gcp.networksecurity.TlsInspectionPolicyArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new CaPool(\"default\", CaPoolArgs.builder()\n .name(\"my-basic-ca-pool\")\n .location(\"us-central1\")\n .tier(\"DEVOPS\")\n .publishingOptions(CaPoolPublishingOptionsArgs.builder()\n .publishCaCert(false)\n .publishCrl(false)\n .build())\n .issuancePolicy(CaPoolIssuancePolicyArgs.builder()\n .maximumLifetime(\"1209600s\")\n .baselineValues(CaPoolIssuancePolicyBaselineValuesArgs.builder()\n .caOptions(CaPoolIssuancePolicyBaselineValuesCaOptionsArgs.builder()\n .isCa(false)\n .build())\n .keyUsage(CaPoolIssuancePolicyBaselineValuesKeyUsageArgs.builder()\n .baseKeyUsage()\n .extendedKeyUsage(CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .build())\n .build())\n .build())\n .build())\n .build());\n\n var defaultAuthority = new Authority(\"defaultAuthority\", AuthorityArgs.builder()\n .pool(default_.name())\n .certificateAuthorityId(\"my-basic-certificate-authority\")\n .location(\"us-central1\")\n .lifetime(\"86400s\")\n .type(\"SELF_SIGNED\")\n .deletionProtection(false)\n .skipGracePeriod(true)\n .ignoreActiveCertificatesOnDeletion(true)\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"Test LLC\")\n .commonName(\"my-ca\")\n .build())\n .build())\n .x509Config(AuthorityConfigX509ConfigArgs.builder()\n .caOptions(AuthorityConfigX509ConfigCaOptionsArgs.builder()\n .isCa(true)\n .build())\n .keyUsage(AuthorityConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .certSign(true)\n .crlSign(true)\n .build())\n .extendedKeyUsage(AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(false)\n .build())\n .build())\n .build())\n .build())\n .keySpec(AuthorityKeySpecArgs.builder()\n .algorithm(\"RSA_PKCS1_4096_SHA256\")\n .build())\n .build());\n\n var nsSa = new ServiceIdentity(\"nsSa\", ServiceIdentityArgs.builder()\n .service(\"networksecurity.googleapis.com\")\n .build());\n\n var defaultCaPoolIamMember = new CaPoolIamMember(\"defaultCaPoolIamMember\", CaPoolIamMemberArgs.builder()\n .caPool(default_.id())\n .role(\"roles/privateca.certificateManager\")\n .member(nsSa.member())\n .build());\n\n var defaultTrustConfig = new TrustConfig(\"defaultTrustConfig\", TrustConfigArgs.builder()\n .name(\"my-trust-config\")\n .description(\"sample trust config description\")\n .location(\"us-central1\")\n .trustStores(TrustConfigTrustStoreArgs.builder()\n .trustAnchors(TrustConfigTrustStoreTrustAnchorArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/ca_cert.pem\")\n .build()).result())\n .build())\n .intermediateCas(TrustConfigTrustStoreIntermediateCaArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/ca_cert.pem\")\n .build()).result())\n .build())\n .build())\n .build());\n\n var defaultTlsInspectionPolicy = new TlsInspectionPolicy(\"defaultTlsInspectionPolicy\", TlsInspectionPolicyArgs.builder()\n .name(\"my-tls-inspection-policy\")\n .location(\"us-central1\")\n .caPool(default_.id())\n .excludePublicCaSet(false)\n .minTlsVersion(\"TLS_1_0\")\n .trustConfig(defaultTrustConfig.id())\n .tlsFeatureProfile(\"PROFILE_CUSTOM\")\n .customTlsFeatures( \n \"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA\",\n \"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA\",\n \"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\",\n \"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256\",\n \"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA\",\n \"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA\",\n \"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\",\n \"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256\",\n \"TLS_RSA_WITH_3DES_EDE_CBC_SHA\",\n \"TLS_RSA_WITH_AES_128_CBC_SHA\",\n \"TLS_RSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_RSA_WITH_AES_256_CBC_SHA\",\n \"TLS_RSA_WITH_AES_256_GCM_SHA384\")\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n defaultAuthority,\n defaultCaPoolIamMember)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificateauthority:CaPool\n properties:\n name: my-basic-ca-pool\n location: us-central1\n tier: DEVOPS\n publishingOptions:\n publishCaCert: false\n publishCrl: false\n issuancePolicy:\n maximumLifetime: 1209600s\n baselineValues:\n caOptions:\n isCa: false\n keyUsage:\n baseKeyUsage: {}\n extendedKeyUsage:\n serverAuth: true\n defaultAuthority:\n type: gcp:certificateauthority:Authority\n name: default\n properties:\n pool: ${default.name}\n certificateAuthorityId: my-basic-certificate-authority\n location: us-central1\n lifetime: 86400s\n type: SELF_SIGNED\n deletionProtection: false\n skipGracePeriod: true\n ignoreActiveCertificatesOnDeletion: true\n config:\n subjectConfig:\n subject:\n organization: Test LLC\n commonName: my-ca\n x509Config:\n caOptions:\n isCa: true\n keyUsage:\n baseKeyUsage:\n certSign: true\n crlSign: true\n extendedKeyUsage:\n serverAuth: false\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n nsSa:\n type: gcp:projects:ServiceIdentity\n name: ns_sa\n properties:\n service: networksecurity.googleapis.com\n defaultCaPoolIamMember:\n type: gcp:certificateauthority:CaPoolIamMember\n name: default\n properties:\n caPool: ${default.id}\n role: roles/privateca.certificateManager\n member: ${nsSa.member}\n defaultTrustConfig:\n type: gcp:certificatemanager:TrustConfig\n name: default\n properties:\n name: my-trust-config\n description: sample trust config description\n location: us-central1\n trustStores:\n - trustAnchors:\n - pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/ca_cert.pem\n Return: result\n intermediateCas:\n - pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/ca_cert.pem\n Return: result\n defaultTlsInspectionPolicy:\n type: gcp:networksecurity:TlsInspectionPolicy\n name: default\n properties:\n name: my-tls-inspection-policy\n location: us-central1\n caPool: ${default.id}\n excludePublicCaSet: false\n minTlsVersion: TLS_1_0\n trustConfig: ${defaultTrustConfig.id}\n tlsFeatureProfile: PROFILE_CUSTOM\n customTlsFeatures:\n - TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA\n - TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\n - TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA\n - TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\n - TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256\n - TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA\n - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\n - TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA\n - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\n - TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256\n - TLS_RSA_WITH_3DES_EDE_CBC_SHA\n - TLS_RSA_WITH_AES_128_CBC_SHA\n - TLS_RSA_WITH_AES_128_GCM_SHA256\n - TLS_RSA_WITH_AES_256_CBC_SHA\n - TLS_RSA_WITH_AES_256_GCM_SHA384\n options:\n dependson:\n - ${defaultAuthority}\n - ${defaultCaPoolIamMember}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTlsInspectionPolicy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/tlsInspectionPolicies/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, TlsInspectionPolicy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networksecurity/tlsInspectionPolicy:TlsInspectionPolicy default projects/{{project}}/locations/{{location}}/tlsInspectionPolicies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networksecurity/tlsInspectionPolicy:TlsInspectionPolicy default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networksecurity/tlsInspectionPolicy:TlsInspectionPolicy default {{location}}/{{name}}\n```\n\n", + "description": "The TlsInspectionPolicy resource contains references to CA pools in Certificate Authority Service and associated metadata.\n\n\nTo get more information about TlsInspectionPolicy, see:\n\n* [API documentation](https://cloud.google.com/secure-web-proxy/docs/reference/network-security/rest/v1/projects.locations.tlsInspectionPolicies)\n* How-to Guides\n * [Use TlsInspectionPolicy](https://cloud.google.com/secure-web-proxy/docs/tls-inspection-overview)\n\n## Example Usage\n\n### Network Security Tls Inspection Policy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.certificateauthority.CaPool(\"default\", {\n name: \"my-basic-ca-pool\",\n location: \"us-central1\",\n tier: \"DEVOPS\",\n publishingOptions: {\n publishCaCert: false,\n publishCrl: false,\n },\n issuancePolicy: {\n maximumLifetime: \"1209600s\",\n baselineValues: {\n caOptions: {\n isCa: false,\n },\n keyUsage: {\n baseKeyUsage: {},\n extendedKeyUsage: {\n serverAuth: true,\n },\n },\n },\n },\n});\nconst defaultAuthority = new gcp.certificateauthority.Authority(\"default\", {\n pool: _default.name,\n certificateAuthorityId: \"my-basic-certificate-authority\",\n location: \"us-central1\",\n lifetime: \"86400s\",\n type: \"SELF_SIGNED\",\n deletionProtection: false,\n skipGracePeriod: true,\n ignoreActiveCertificatesOnDeletion: true,\n config: {\n subjectConfig: {\n subject: {\n organization: \"Test LLC\",\n commonName: \"my-ca\",\n },\n },\n x509Config: {\n caOptions: {\n isCa: true,\n },\n keyUsage: {\n baseKeyUsage: {\n certSign: true,\n crlSign: true,\n },\n extendedKeyUsage: {\n serverAuth: false,\n },\n },\n },\n },\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n});\nconst project = gcp.organizations.getProject({});\nconst tlsInspectionPermission = new gcp.certificateauthority.CaPoolIamMember(\"tls_inspection_permission\", {\n caPool: _default.id,\n role: \"roles/privateca.certificateManager\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-networksecurity.iam.gserviceaccount.com`),\n});\nconst defaultTlsInspectionPolicy = new gcp.networksecurity.TlsInspectionPolicy(\"default\", {\n name: \"my-tls-inspection-policy\",\n location: \"us-central1\",\n caPool: _default.id,\n excludePublicCaSet: false,\n}, {\n dependsOn: [\n _default,\n defaultAuthority,\n tlsInspectionPermission,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.certificateauthority.CaPool(\"default\",\n name=\"my-basic-ca-pool\",\n location=\"us-central1\",\n tier=\"DEVOPS\",\n publishing_options={\n \"publish_ca_cert\": False,\n \"publish_crl\": False,\n },\n issuance_policy={\n \"maximum_lifetime\": \"1209600s\",\n \"baseline_values\": {\n \"ca_options\": {\n \"is_ca\": False,\n },\n \"key_usage\": {\n \"base_key_usage\": {},\n \"extended_key_usage\": {\n \"server_auth\": True,\n },\n },\n },\n })\ndefault_authority = gcp.certificateauthority.Authority(\"default\",\n pool=default.name,\n certificate_authority_id=\"my-basic-certificate-authority\",\n location=\"us-central1\",\n lifetime=\"86400s\",\n type=\"SELF_SIGNED\",\n deletion_protection=False,\n skip_grace_period=True,\n ignore_active_certificates_on_deletion=True,\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"Test LLC\",\n \"common_name\": \"my-ca\",\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": False,\n },\n },\n },\n },\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n })\nproject = gcp.organizations.get_project()\ntls_inspection_permission = gcp.certificateauthority.CaPoolIamMember(\"tls_inspection_permission\",\n ca_pool=default.id,\n role=\"roles/privateca.certificateManager\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-networksecurity.iam.gserviceaccount.com\")\ndefault_tls_inspection_policy = gcp.networksecurity.TlsInspectionPolicy(\"default\",\n name=\"my-tls-inspection-policy\",\n location=\"us-central1\",\n ca_pool=default.id,\n exclude_public_ca_set=False,\n opts = pulumi.ResourceOptions(depends_on=[\n default,\n default_authority,\n tls_inspection_permission,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateAuthority.CaPool(\"default\", new()\n {\n Name = \"my-basic-ca-pool\",\n Location = \"us-central1\",\n Tier = \"DEVOPS\",\n PublishingOptions = new Gcp.CertificateAuthority.Inputs.CaPoolPublishingOptionsArgs\n {\n PublishCaCert = false,\n PublishCrl = false,\n },\n IssuancePolicy = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyArgs\n {\n MaximumLifetime = \"1209600s\",\n BaselineValues = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesCaOptionsArgs\n {\n IsCa = false,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageArgs\n {\n BaseKeyUsage = null,\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n },\n },\n },\n },\n });\n\n var defaultAuthority = new Gcp.CertificateAuthority.Authority(\"default\", new()\n {\n Pool = @default.Name,\n CertificateAuthorityId = \"my-basic-certificate-authority\",\n Location = \"us-central1\",\n Lifetime = \"86400s\",\n Type = \"SELF_SIGNED\",\n DeletionProtection = false,\n SkipGracePeriod = true,\n IgnoreActiveCertificatesOnDeletion = true,\n Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectArgs\n {\n Organization = \"Test LLC\",\n CommonName = \"my-ca\",\n },\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigCaOptionsArgs\n {\n IsCa = true,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n CertSign = true,\n CrlSign = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = false,\n },\n },\n },\n },\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n Algorithm = \"RSA_PKCS1_4096_SHA256\",\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var tlsInspectionPermission = new Gcp.CertificateAuthority.CaPoolIamMember(\"tls_inspection_permission\", new()\n {\n CaPool = @default.Id,\n Role = \"roles/privateca.certificateManager\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-networksecurity.iam.gserviceaccount.com\",\n });\n\n var defaultTlsInspectionPolicy = new Gcp.NetworkSecurity.TlsInspectionPolicy(\"default\", new()\n {\n Name = \"my-tls-inspection-policy\",\n Location = \"us-central1\",\n CaPool = @default.Id,\n ExcludePublicCaSet = false,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @default,\n defaultAuthority,\n tlsInspectionPermission,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := certificateauthority.NewCaPool(ctx, \"default\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tName: pulumi.String(\"my-basic-ca-pool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTier: pulumi.String(\"DEVOPS\"),\n\t\t\tPublishingOptions: \u0026certificateauthority.CaPoolPublishingOptionsArgs{\n\t\t\t\tPublishCaCert: pulumi.Bool(false),\n\t\t\t\tPublishCrl: pulumi.Bool(false),\n\t\t\t},\n\t\t\tIssuancePolicy: \u0026certificateauthority.CaPoolIssuancePolicyArgs{\n\t\t\t\tMaximumLifetime: pulumi.String(\"1209600s\"),\n\t\t\t\tBaselineValues: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(false),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesKeyUsageBaseKeyUsageArgs{},\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tServerAuth: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultAuthority, err := certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tPool: _default.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-basic-certificate-authority\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLifetime: pulumi.String(\"86400s\"),\n\t\t\tType: pulumi.String(\"SELF_SIGNED\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tSkipGracePeriod: pulumi.Bool(true),\n\t\t\tIgnoreActiveCertificatesOnDeletion: pulumi.Bool(true),\n\t\t\tConfig: \u0026certificateauthority.AuthorityConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.AuthorityConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tOrganization: pulumi.String(\"Test LLC\"),\n\t\t\t\t\t\tCommonName: pulumi.String(\"my-ca\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tX509Config: \u0026certificateauthority.AuthorityConfigX509ConfigArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.AuthorityConfigX509ConfigCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs{\n\t\t\t\t\t\t\tCertSign: pulumi.Bool(true),\n\t\t\t\t\t\t\tCrlSign: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tServerAuth: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"RSA_PKCS1_4096_SHA256\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttlsInspectionPermission, err := certificateauthority.NewCaPoolIamMember(ctx, \"tls_inspection_permission\", \u0026certificateauthority.CaPoolIamMemberArgs{\n\t\t\tCaPool: _default.ID(),\n\t\t\tRole: pulumi.String(\"roles/privateca.certificateManager\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-networksecurity.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networksecurity.NewTlsInspectionPolicy(ctx, \"default\", \u0026networksecurity.TlsInspectionPolicyArgs{\n\t\t\tName: pulumi.String(\"my-tls-inspection-policy\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tCaPool: _default.ID(),\n\t\t\tExcludePublicCaSet: pulumi.Bool(false),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\t_default,\n\t\t\tdefaultAuthority,\n\t\t\ttlsInspectionPermission,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificateauthority.CaPool;\nimport com.pulumi.gcp.certificateauthority.CaPoolArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolPublishingOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.Authority;\nimport com.pulumi.gcp.certificateauthority.AuthorityArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityKeySpecArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamMember;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamMemberArgs;\nimport com.pulumi.gcp.networksecurity.TlsInspectionPolicy;\nimport com.pulumi.gcp.networksecurity.TlsInspectionPolicyArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new CaPool(\"default\", CaPoolArgs.builder()\n .name(\"my-basic-ca-pool\")\n .location(\"us-central1\")\n .tier(\"DEVOPS\")\n .publishingOptions(CaPoolPublishingOptionsArgs.builder()\n .publishCaCert(false)\n .publishCrl(false)\n .build())\n .issuancePolicy(CaPoolIssuancePolicyArgs.builder()\n .maximumLifetime(\"1209600s\")\n .baselineValues(CaPoolIssuancePolicyBaselineValuesArgs.builder()\n .caOptions(CaPoolIssuancePolicyBaselineValuesCaOptionsArgs.builder()\n .isCa(false)\n .build())\n .keyUsage(CaPoolIssuancePolicyBaselineValuesKeyUsageArgs.builder()\n .baseKeyUsage()\n .extendedKeyUsage(CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .build())\n .build())\n .build())\n .build())\n .build());\n\n var defaultAuthority = new Authority(\"defaultAuthority\", AuthorityArgs.builder()\n .pool(default_.name())\n .certificateAuthorityId(\"my-basic-certificate-authority\")\n .location(\"us-central1\")\n .lifetime(\"86400s\")\n .type(\"SELF_SIGNED\")\n .deletionProtection(false)\n .skipGracePeriod(true)\n .ignoreActiveCertificatesOnDeletion(true)\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"Test LLC\")\n .commonName(\"my-ca\")\n .build())\n .build())\n .x509Config(AuthorityConfigX509ConfigArgs.builder()\n .caOptions(AuthorityConfigX509ConfigCaOptionsArgs.builder()\n .isCa(true)\n .build())\n .keyUsage(AuthorityConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .certSign(true)\n .crlSign(true)\n .build())\n .extendedKeyUsage(AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(false)\n .build())\n .build())\n .build())\n .build())\n .keySpec(AuthorityKeySpecArgs.builder()\n .algorithm(\"RSA_PKCS1_4096_SHA256\")\n .build())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var tlsInspectionPermission = new CaPoolIamMember(\"tlsInspectionPermission\", CaPoolIamMemberArgs.builder()\n .caPool(default_.id())\n .role(\"roles/privateca.certificateManager\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-networksecurity.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var defaultTlsInspectionPolicy = new TlsInspectionPolicy(\"defaultTlsInspectionPolicy\", TlsInspectionPolicyArgs.builder()\n .name(\"my-tls-inspection-policy\")\n .location(\"us-central1\")\n .caPool(default_.id())\n .excludePublicCaSet(false)\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n default_,\n defaultAuthority,\n tlsInspectionPermission)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificateauthority:CaPool\n properties:\n name: my-basic-ca-pool\n location: us-central1\n tier: DEVOPS\n publishingOptions:\n publishCaCert: false\n publishCrl: false\n issuancePolicy:\n maximumLifetime: 1209600s\n baselineValues:\n caOptions:\n isCa: false\n keyUsage:\n baseKeyUsage: {}\n extendedKeyUsage:\n serverAuth: true\n defaultAuthority:\n type: gcp:certificateauthority:Authority\n name: default\n properties:\n pool: ${default.name}\n certificateAuthorityId: my-basic-certificate-authority\n location: us-central1\n lifetime: 86400s\n type: SELF_SIGNED\n deletionProtection: false\n skipGracePeriod: true\n ignoreActiveCertificatesOnDeletion: true\n config:\n subjectConfig:\n subject:\n organization: Test LLC\n commonName: my-ca\n x509Config:\n caOptions:\n isCa: true\n keyUsage:\n baseKeyUsage:\n certSign: true\n crlSign: true\n extendedKeyUsage:\n serverAuth: false\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n tlsInspectionPermission:\n type: gcp:certificateauthority:CaPoolIamMember\n name: tls_inspection_permission\n properties:\n caPool: ${default.id}\n role: roles/privateca.certificateManager\n member: serviceAccount:service-${project.number}@gcp-sa-networksecurity.iam.gserviceaccount.com\n defaultTlsInspectionPolicy:\n type: gcp:networksecurity:TlsInspectionPolicy\n name: default\n properties:\n name: my-tls-inspection-policy\n location: us-central1\n caPool: ${default.id}\n excludePublicCaSet: false\n options:\n dependson:\n - ${default}\n - ${defaultAuthority}\n - ${tlsInspectionPermission}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Security Tls Inspection Policy Custom\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst _default = new gcp.certificateauthority.CaPool(\"default\", {\n name: \"my-basic-ca-pool\",\n location: \"us-central1\",\n tier: \"DEVOPS\",\n publishingOptions: {\n publishCaCert: false,\n publishCrl: false,\n },\n issuancePolicy: {\n maximumLifetime: \"1209600s\",\n baselineValues: {\n caOptions: {\n isCa: false,\n },\n keyUsage: {\n baseKeyUsage: {},\n extendedKeyUsage: {\n serverAuth: true,\n },\n },\n },\n },\n});\nconst defaultAuthority = new gcp.certificateauthority.Authority(\"default\", {\n pool: _default.name,\n certificateAuthorityId: \"my-basic-certificate-authority\",\n location: \"us-central1\",\n lifetime: \"86400s\",\n type: \"SELF_SIGNED\",\n deletionProtection: false,\n skipGracePeriod: true,\n ignoreActiveCertificatesOnDeletion: true,\n config: {\n subjectConfig: {\n subject: {\n organization: \"Test LLC\",\n commonName: \"my-ca\",\n },\n },\n x509Config: {\n caOptions: {\n isCa: true,\n },\n keyUsage: {\n baseKeyUsage: {\n certSign: true,\n crlSign: true,\n },\n extendedKeyUsage: {\n serverAuth: false,\n },\n },\n },\n },\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n});\nconst nsSa = new gcp.projects.ServiceIdentity(\"ns_sa\", {service: \"networksecurity.googleapis.com\"});\nconst defaultCaPoolIamMember = new gcp.certificateauthority.CaPoolIamMember(\"default\", {\n caPool: _default.id,\n role: \"roles/privateca.certificateManager\",\n member: nsSa.member,\n});\nconst defaultTrustConfig = new gcp.certificatemanager.TrustConfig(\"default\", {\n name: \"my-trust-config\",\n description: \"sample trust config description\",\n location: \"us-central1\",\n trustStores: [{\n trustAnchors: [{\n pemCertificate: std.file({\n input: \"test-fixtures/ca_cert.pem\",\n }).then(invoke =\u003e invoke.result),\n }],\n intermediateCas: [{\n pemCertificate: std.file({\n input: \"test-fixtures/ca_cert.pem\",\n }).then(invoke =\u003e invoke.result),\n }],\n }],\n});\nconst defaultTlsInspectionPolicy = new gcp.networksecurity.TlsInspectionPolicy(\"default\", {\n name: \"my-tls-inspection-policy\",\n location: \"us-central1\",\n caPool: _default.id,\n excludePublicCaSet: false,\n minTlsVersion: \"TLS_1_0\",\n trustConfig: defaultTrustConfig.id,\n tlsFeatureProfile: \"PROFILE_CUSTOM\",\n customTlsFeatures: [\n \"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA\",\n \"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA\",\n \"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\",\n \"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256\",\n \"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA\",\n \"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA\",\n \"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\",\n \"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256\",\n \"TLS_RSA_WITH_3DES_EDE_CBC_SHA\",\n \"TLS_RSA_WITH_AES_128_CBC_SHA\",\n \"TLS_RSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_RSA_WITH_AES_256_CBC_SHA\",\n \"TLS_RSA_WITH_AES_256_GCM_SHA384\",\n ],\n}, {\n dependsOn: [\n defaultAuthority,\n defaultCaPoolIamMember,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault = gcp.certificateauthority.CaPool(\"default\",\n name=\"my-basic-ca-pool\",\n location=\"us-central1\",\n tier=\"DEVOPS\",\n publishing_options={\n \"publish_ca_cert\": False,\n \"publish_crl\": False,\n },\n issuance_policy={\n \"maximum_lifetime\": \"1209600s\",\n \"baseline_values\": {\n \"ca_options\": {\n \"is_ca\": False,\n },\n \"key_usage\": {\n \"base_key_usage\": {},\n \"extended_key_usage\": {\n \"server_auth\": True,\n },\n },\n },\n })\ndefault_authority = gcp.certificateauthority.Authority(\"default\",\n pool=default.name,\n certificate_authority_id=\"my-basic-certificate-authority\",\n location=\"us-central1\",\n lifetime=\"86400s\",\n type=\"SELF_SIGNED\",\n deletion_protection=False,\n skip_grace_period=True,\n ignore_active_certificates_on_deletion=True,\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"Test LLC\",\n \"common_name\": \"my-ca\",\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": False,\n },\n },\n },\n },\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n })\nns_sa = gcp.projects.ServiceIdentity(\"ns_sa\", service=\"networksecurity.googleapis.com\")\ndefault_ca_pool_iam_member = gcp.certificateauthority.CaPoolIamMember(\"default\",\n ca_pool=default.id,\n role=\"roles/privateca.certificateManager\",\n member=ns_sa.member)\ndefault_trust_config = gcp.certificatemanager.TrustConfig(\"default\",\n name=\"my-trust-config\",\n description=\"sample trust config description\",\n location=\"us-central1\",\n trust_stores=[{\n \"trust_anchors\": [{\n \"pem_certificate\": std.file(input=\"test-fixtures/ca_cert.pem\").result,\n }],\n \"intermediate_cas\": [{\n \"pem_certificate\": std.file(input=\"test-fixtures/ca_cert.pem\").result,\n }],\n }])\ndefault_tls_inspection_policy = gcp.networksecurity.TlsInspectionPolicy(\"default\",\n name=\"my-tls-inspection-policy\",\n location=\"us-central1\",\n ca_pool=default.id,\n exclude_public_ca_set=False,\n min_tls_version=\"TLS_1_0\",\n trust_config=default_trust_config.id,\n tls_feature_profile=\"PROFILE_CUSTOM\",\n custom_tls_features=[\n \"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA\",\n \"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA\",\n \"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\",\n \"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256\",\n \"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA\",\n \"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA\",\n \"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\",\n \"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256\",\n \"TLS_RSA_WITH_3DES_EDE_CBC_SHA\",\n \"TLS_RSA_WITH_AES_128_CBC_SHA\",\n \"TLS_RSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_RSA_WITH_AES_256_CBC_SHA\",\n \"TLS_RSA_WITH_AES_256_GCM_SHA384\",\n ],\n opts = pulumi.ResourceOptions(depends_on=[\n default_authority,\n default_ca_pool_iam_member,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateAuthority.CaPool(\"default\", new()\n {\n Name = \"my-basic-ca-pool\",\n Location = \"us-central1\",\n Tier = \"DEVOPS\",\n PublishingOptions = new Gcp.CertificateAuthority.Inputs.CaPoolPublishingOptionsArgs\n {\n PublishCaCert = false,\n PublishCrl = false,\n },\n IssuancePolicy = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyArgs\n {\n MaximumLifetime = \"1209600s\",\n BaselineValues = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesCaOptionsArgs\n {\n IsCa = false,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageArgs\n {\n BaseKeyUsage = null,\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n },\n },\n },\n },\n });\n\n var defaultAuthority = new Gcp.CertificateAuthority.Authority(\"default\", new()\n {\n Pool = @default.Name,\n CertificateAuthorityId = \"my-basic-certificate-authority\",\n Location = \"us-central1\",\n Lifetime = \"86400s\",\n Type = \"SELF_SIGNED\",\n DeletionProtection = false,\n SkipGracePeriod = true,\n IgnoreActiveCertificatesOnDeletion = true,\n Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectArgs\n {\n Organization = \"Test LLC\",\n CommonName = \"my-ca\",\n },\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigCaOptionsArgs\n {\n IsCa = true,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n CertSign = true,\n CrlSign = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = false,\n },\n },\n },\n },\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n Algorithm = \"RSA_PKCS1_4096_SHA256\",\n },\n });\n\n var nsSa = new Gcp.Projects.ServiceIdentity(\"ns_sa\", new()\n {\n Service = \"networksecurity.googleapis.com\",\n });\n\n var defaultCaPoolIamMember = new Gcp.CertificateAuthority.CaPoolIamMember(\"default\", new()\n {\n CaPool = @default.Id,\n Role = \"roles/privateca.certificateManager\",\n Member = nsSa.Member,\n });\n\n var defaultTrustConfig = new Gcp.CertificateManager.TrustConfig(\"default\", new()\n {\n Name = \"my-trust-config\",\n Description = \"sample trust config description\",\n Location = \"us-central1\",\n TrustStores = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreArgs\n {\n TrustAnchors = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreTrustAnchorArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/ca_cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n IntermediateCas = new[]\n {\n new Gcp.CertificateManager.Inputs.TrustConfigTrustStoreIntermediateCaArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/ca_cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n },\n },\n });\n\n var defaultTlsInspectionPolicy = new Gcp.NetworkSecurity.TlsInspectionPolicy(\"default\", new()\n {\n Name = \"my-tls-inspection-policy\",\n Location = \"us-central1\",\n CaPool = @default.Id,\n ExcludePublicCaSet = false,\n MinTlsVersion = \"TLS_1_0\",\n TrustConfig = defaultTrustConfig.Id,\n TlsFeatureProfile = \"PROFILE_CUSTOM\",\n CustomTlsFeatures = new[]\n {\n \"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA\",\n \"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA\",\n \"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\",\n \"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256\",\n \"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA\",\n \"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA\",\n \"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\",\n \"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256\",\n \"TLS_RSA_WITH_3DES_EDE_CBC_SHA\",\n \"TLS_RSA_WITH_AES_128_CBC_SHA\",\n \"TLS_RSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_RSA_WITH_AES_256_CBC_SHA\",\n \"TLS_RSA_WITH_AES_256_GCM_SHA384\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n defaultAuthority,\n defaultCaPoolIamMember,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := certificateauthority.NewCaPool(ctx, \"default\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tName: pulumi.String(\"my-basic-ca-pool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTier: pulumi.String(\"DEVOPS\"),\n\t\t\tPublishingOptions: \u0026certificateauthority.CaPoolPublishingOptionsArgs{\n\t\t\t\tPublishCaCert: pulumi.Bool(false),\n\t\t\t\tPublishCrl: pulumi.Bool(false),\n\t\t\t},\n\t\t\tIssuancePolicy: \u0026certificateauthority.CaPoolIssuancePolicyArgs{\n\t\t\t\tMaximumLifetime: pulumi.String(\"1209600s\"),\n\t\t\t\tBaselineValues: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(false),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesKeyUsageBaseKeyUsageArgs{},\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tServerAuth: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultAuthority, err := certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tPool: _default.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-basic-certificate-authority\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLifetime: pulumi.String(\"86400s\"),\n\t\t\tType: pulumi.String(\"SELF_SIGNED\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tSkipGracePeriod: pulumi.Bool(true),\n\t\t\tIgnoreActiveCertificatesOnDeletion: pulumi.Bool(true),\n\t\t\tConfig: \u0026certificateauthority.AuthorityConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.AuthorityConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tOrganization: pulumi.String(\"Test LLC\"),\n\t\t\t\t\t\tCommonName: pulumi.String(\"my-ca\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tX509Config: \u0026certificateauthority.AuthorityConfigX509ConfigArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.AuthorityConfigX509ConfigCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs{\n\t\t\t\t\t\t\tCertSign: pulumi.Bool(true),\n\t\t\t\t\t\t\tCrlSign: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tServerAuth: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"RSA_PKCS1_4096_SHA256\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnsSa, err := projects.NewServiceIdentity(ctx, \"ns_sa\", \u0026projects.ServiceIdentityArgs{\n\t\t\tService: pulumi.String(\"networksecurity.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultCaPoolIamMember, err := certificateauthority.NewCaPoolIamMember(ctx, \"default\", \u0026certificateauthority.CaPoolIamMemberArgs{\n\t\t\tCaPool: _default.ID(),\n\t\t\tRole: pulumi.String(\"roles/privateca.certificateManager\"),\n\t\t\tMember: nsSa.Member,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/ca_cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/ca_cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultTrustConfig, err := certificatemanager.NewTrustConfig(ctx, \"default\", \u0026certificatemanager.TrustConfigArgs{\n\t\t\tName: pulumi.String(\"my-trust-config\"),\n\t\t\tDescription: pulumi.String(\"sample trust config description\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTrustStores: certificatemanager.TrustConfigTrustStoreArray{\n\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreArgs{\n\t\t\t\t\tTrustAnchors: certificatemanager.TrustConfigTrustStoreTrustAnchorArray{\n\t\t\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreTrustAnchorArgs{\n\t\t\t\t\t\t\tPemCertificate: pulumi.String(invokeFile.Result),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tIntermediateCas: certificatemanager.TrustConfigTrustStoreIntermediateCaArray{\n\t\t\t\t\t\t\u0026certificatemanager.TrustConfigTrustStoreIntermediateCaArgs{\n\t\t\t\t\t\t\tPemCertificate: pulumi.String(invokeFile1.Result),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networksecurity.NewTlsInspectionPolicy(ctx, \"default\", \u0026networksecurity.TlsInspectionPolicyArgs{\n\t\t\tName: pulumi.String(\"my-tls-inspection-policy\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tCaPool: _default.ID(),\n\t\t\tExcludePublicCaSet: pulumi.Bool(false),\n\t\t\tMinTlsVersion: pulumi.String(\"TLS_1_0\"),\n\t\t\tTrustConfig: defaultTrustConfig.ID(),\n\t\t\tTlsFeatureProfile: pulumi.String(\"PROFILE_CUSTOM\"),\n\t\t\tCustomTlsFeatures: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA\"),\n\t\t\t\tpulumi.String(\"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\"),\n\t\t\t\tpulumi.String(\"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA\"),\n\t\t\t\tpulumi.String(\"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\"),\n\t\t\t\tpulumi.String(\"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256\"),\n\t\t\t\tpulumi.String(\"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA\"),\n\t\t\t\tpulumi.String(\"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\"),\n\t\t\t\tpulumi.String(\"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA\"),\n\t\t\t\tpulumi.String(\"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\"),\n\t\t\t\tpulumi.String(\"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256\"),\n\t\t\t\tpulumi.String(\"TLS_RSA_WITH_3DES_EDE_CBC_SHA\"),\n\t\t\t\tpulumi.String(\"TLS_RSA_WITH_AES_128_CBC_SHA\"),\n\t\t\t\tpulumi.String(\"TLS_RSA_WITH_AES_128_GCM_SHA256\"),\n\t\t\t\tpulumi.String(\"TLS_RSA_WITH_AES_256_CBC_SHA\"),\n\t\t\t\tpulumi.String(\"TLS_RSA_WITH_AES_256_GCM_SHA384\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdefaultAuthority,\n\t\t\tdefaultCaPoolIamMember,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificateauthority.CaPool;\nimport com.pulumi.gcp.certificateauthority.CaPoolArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolPublishingOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.Authority;\nimport com.pulumi.gcp.certificateauthority.AuthorityArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityKeySpecArgs;\nimport com.pulumi.gcp.projects.ServiceIdentity;\nimport com.pulumi.gcp.projects.ServiceIdentityArgs;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamMember;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamMemberArgs;\nimport com.pulumi.gcp.certificatemanager.TrustConfig;\nimport com.pulumi.gcp.certificatemanager.TrustConfigArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.TrustConfigTrustStoreArgs;\nimport com.pulumi.gcp.networksecurity.TlsInspectionPolicy;\nimport com.pulumi.gcp.networksecurity.TlsInspectionPolicyArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new CaPool(\"default\", CaPoolArgs.builder()\n .name(\"my-basic-ca-pool\")\n .location(\"us-central1\")\n .tier(\"DEVOPS\")\n .publishingOptions(CaPoolPublishingOptionsArgs.builder()\n .publishCaCert(false)\n .publishCrl(false)\n .build())\n .issuancePolicy(CaPoolIssuancePolicyArgs.builder()\n .maximumLifetime(\"1209600s\")\n .baselineValues(CaPoolIssuancePolicyBaselineValuesArgs.builder()\n .caOptions(CaPoolIssuancePolicyBaselineValuesCaOptionsArgs.builder()\n .isCa(false)\n .build())\n .keyUsage(CaPoolIssuancePolicyBaselineValuesKeyUsageArgs.builder()\n .baseKeyUsage()\n .extendedKeyUsage(CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .build())\n .build())\n .build())\n .build())\n .build());\n\n var defaultAuthority = new Authority(\"defaultAuthority\", AuthorityArgs.builder()\n .pool(default_.name())\n .certificateAuthorityId(\"my-basic-certificate-authority\")\n .location(\"us-central1\")\n .lifetime(\"86400s\")\n .type(\"SELF_SIGNED\")\n .deletionProtection(false)\n .skipGracePeriod(true)\n .ignoreActiveCertificatesOnDeletion(true)\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"Test LLC\")\n .commonName(\"my-ca\")\n .build())\n .build())\n .x509Config(AuthorityConfigX509ConfigArgs.builder()\n .caOptions(AuthorityConfigX509ConfigCaOptionsArgs.builder()\n .isCa(true)\n .build())\n .keyUsage(AuthorityConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .certSign(true)\n .crlSign(true)\n .build())\n .extendedKeyUsage(AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(false)\n .build())\n .build())\n .build())\n .build())\n .keySpec(AuthorityKeySpecArgs.builder()\n .algorithm(\"RSA_PKCS1_4096_SHA256\")\n .build())\n .build());\n\n var nsSa = new ServiceIdentity(\"nsSa\", ServiceIdentityArgs.builder()\n .service(\"networksecurity.googleapis.com\")\n .build());\n\n var defaultCaPoolIamMember = new CaPoolIamMember(\"defaultCaPoolIamMember\", CaPoolIamMemberArgs.builder()\n .caPool(default_.id())\n .role(\"roles/privateca.certificateManager\")\n .member(nsSa.member())\n .build());\n\n var defaultTrustConfig = new TrustConfig(\"defaultTrustConfig\", TrustConfigArgs.builder()\n .name(\"my-trust-config\")\n .description(\"sample trust config description\")\n .location(\"us-central1\")\n .trustStores(TrustConfigTrustStoreArgs.builder()\n .trustAnchors(TrustConfigTrustStoreTrustAnchorArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/ca_cert.pem\")\n .build()).result())\n .build())\n .intermediateCas(TrustConfigTrustStoreIntermediateCaArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/ca_cert.pem\")\n .build()).result())\n .build())\n .build())\n .build());\n\n var defaultTlsInspectionPolicy = new TlsInspectionPolicy(\"defaultTlsInspectionPolicy\", TlsInspectionPolicyArgs.builder()\n .name(\"my-tls-inspection-policy\")\n .location(\"us-central1\")\n .caPool(default_.id())\n .excludePublicCaSet(false)\n .minTlsVersion(\"TLS_1_0\")\n .trustConfig(defaultTrustConfig.id())\n .tlsFeatureProfile(\"PROFILE_CUSTOM\")\n .customTlsFeatures( \n \"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA\",\n \"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA\",\n \"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\",\n \"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256\",\n \"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA\",\n \"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA\",\n \"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\",\n \"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256\",\n \"TLS_RSA_WITH_3DES_EDE_CBC_SHA\",\n \"TLS_RSA_WITH_AES_128_CBC_SHA\",\n \"TLS_RSA_WITH_AES_128_GCM_SHA256\",\n \"TLS_RSA_WITH_AES_256_CBC_SHA\",\n \"TLS_RSA_WITH_AES_256_GCM_SHA384\")\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n defaultAuthority,\n defaultCaPoolIamMember)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificateauthority:CaPool\n properties:\n name: my-basic-ca-pool\n location: us-central1\n tier: DEVOPS\n publishingOptions:\n publishCaCert: false\n publishCrl: false\n issuancePolicy:\n maximumLifetime: 1209600s\n baselineValues:\n caOptions:\n isCa: false\n keyUsage:\n baseKeyUsage: {}\n extendedKeyUsage:\n serverAuth: true\n defaultAuthority:\n type: gcp:certificateauthority:Authority\n name: default\n properties:\n pool: ${default.name}\n certificateAuthorityId: my-basic-certificate-authority\n location: us-central1\n lifetime: 86400s\n type: SELF_SIGNED\n deletionProtection: false\n skipGracePeriod: true\n ignoreActiveCertificatesOnDeletion: true\n config:\n subjectConfig:\n subject:\n organization: Test LLC\n commonName: my-ca\n x509Config:\n caOptions:\n isCa: true\n keyUsage:\n baseKeyUsage:\n certSign: true\n crlSign: true\n extendedKeyUsage:\n serverAuth: false\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n nsSa:\n type: gcp:projects:ServiceIdentity\n name: ns_sa\n properties:\n service: networksecurity.googleapis.com\n defaultCaPoolIamMember:\n type: gcp:certificateauthority:CaPoolIamMember\n name: default\n properties:\n caPool: ${default.id}\n role: roles/privateca.certificateManager\n member: ${nsSa.member}\n defaultTrustConfig:\n type: gcp:certificatemanager:TrustConfig\n name: default\n properties:\n name: my-trust-config\n description: sample trust config description\n location: us-central1\n trustStores:\n - trustAnchors:\n - pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/ca_cert.pem\n Return: result\n intermediateCas:\n - pemCertificate:\n fn::invoke:\n Function: std:file\n Arguments:\n input: test-fixtures/ca_cert.pem\n Return: result\n defaultTlsInspectionPolicy:\n type: gcp:networksecurity:TlsInspectionPolicy\n name: default\n properties:\n name: my-tls-inspection-policy\n location: us-central1\n caPool: ${default.id}\n excludePublicCaSet: false\n minTlsVersion: TLS_1_0\n trustConfig: ${defaultTrustConfig.id}\n tlsFeatureProfile: PROFILE_CUSTOM\n customTlsFeatures:\n - TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA\n - TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\n - TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA\n - TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\n - TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256\n - TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA\n - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\n - TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA\n - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\n - TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256\n - TLS_RSA_WITH_3DES_EDE_CBC_SHA\n - TLS_RSA_WITH_AES_128_CBC_SHA\n - TLS_RSA_WITH_AES_128_GCM_SHA256\n - TLS_RSA_WITH_AES_256_CBC_SHA\n - TLS_RSA_WITH_AES_256_GCM_SHA384\n options:\n dependson:\n - ${defaultAuthority}\n - ${defaultCaPoolIamMember}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTlsInspectionPolicy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/tlsInspectionPolicies/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, TlsInspectionPolicy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networksecurity/tlsInspectionPolicy:TlsInspectionPolicy default projects/{{project}}/locations/{{location}}/tlsInspectionPolicies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networksecurity/tlsInspectionPolicy:TlsInspectionPolicy default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networksecurity/tlsInspectionPolicy:TlsInspectionPolicy default {{location}}/{{name}}\n```\n\n", "properties": { "caPool": { "type": "string", @@ -228011,7 +228011,7 @@ } }, "gcp:networkservices/edgeCacheKeyset:EdgeCacheKeyset": { - "description": "EdgeCacheKeyset represents a collection of public keys used for validating signed requests.\n\n\nTo get more information about EdgeCacheKeyset, see:\n\n* [API documentation](https://cloud.google.com/media-cdn/docs/reference/rest/v1/projects.locations.edgeCacheKeysets)\n* How-to Guides\n * [Create keysets](https://cloud.google.com/media-cdn/docs/create-keyset)\n\n\n\n## Example Usage\n\n### Network Services Edge Cache Keyset Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.EdgeCacheKeyset(\"default\", {\n name: \"my-keyset\",\n description: \"The default keyset\",\n publicKeys: [\n {\n id: \"my-public-key\",\n value: \"FHsTyFHNmvNpw4o7-rp-M1yqMyBF8vXSBRkZtkQ0RKY\",\n },\n {\n id: \"my-public-key-2\",\n value: \"hzd03llxB1u5FOLKFkZ6_wCJqC7jtN0bg7xlBqS6WVM\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.EdgeCacheKeyset(\"default\",\n name=\"my-keyset\",\n description=\"The default keyset\",\n public_keys=[\n {\n \"id\": \"my-public-key\",\n \"value\": \"FHsTyFHNmvNpw4o7-rp-M1yqMyBF8vXSBRkZtkQ0RKY\",\n },\n {\n \"id\": \"my-public-key-2\",\n \"value\": \"hzd03llxB1u5FOLKFkZ6_wCJqC7jtN0bg7xlBqS6WVM\",\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.NetworkServices.EdgeCacheKeyset(\"default\", new()\n {\n Name = \"my-keyset\",\n Description = \"The default keyset\",\n PublicKeys = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheKeysetPublicKeyArgs\n {\n Id = \"my-public-key\",\n Value = \"FHsTyFHNmvNpw4o7-rp-M1yqMyBF8vXSBRkZtkQ0RKY\",\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheKeysetPublicKeyArgs\n {\n Id = \"my-public-key-2\",\n Value = \"hzd03llxB1u5FOLKFkZ6_wCJqC7jtN0bg7xlBqS6WVM\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networkservices.NewEdgeCacheKeyset(ctx, \"default\", \u0026networkservices.EdgeCacheKeysetArgs{\n\t\t\tName: pulumi.String(\"my-keyset\"),\n\t\t\tDescription: pulumi.String(\"The default keyset\"),\n\t\t\tPublicKeys: networkservices.EdgeCacheKeysetPublicKeyArray{\n\t\t\t\t\u0026networkservices.EdgeCacheKeysetPublicKeyArgs{\n\t\t\t\t\tId: pulumi.String(\"my-public-key\"),\n\t\t\t\t\tValue: pulumi.String(\"FHsTyFHNmvNpw4o7-rp-M1yqMyBF8vXSBRkZtkQ0RKY\"),\n\t\t\t\t},\n\t\t\t\t\u0026networkservices.EdgeCacheKeysetPublicKeyArgs{\n\t\t\t\t\tId: pulumi.String(\"my-public-key-2\"),\n\t\t\t\t\tValue: pulumi.String(\"hzd03llxB1u5FOLKFkZ6_wCJqC7jtN0bg7xlBqS6WVM\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networkservices.EdgeCacheKeyset;\nimport com.pulumi.gcp.networkservices.EdgeCacheKeysetArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheKeysetPublicKeyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new EdgeCacheKeyset(\"default\", EdgeCacheKeysetArgs.builder()\n .name(\"my-keyset\")\n .description(\"The default keyset\")\n .publicKeys( \n EdgeCacheKeysetPublicKeyArgs.builder()\n .id(\"my-public-key\")\n .value(\"FHsTyFHNmvNpw4o7-rp-M1yqMyBF8vXSBRkZtkQ0RKY\")\n .build(),\n EdgeCacheKeysetPublicKeyArgs.builder()\n .id(\"my-public-key-2\")\n .value(\"hzd03llxB1u5FOLKFkZ6_wCJqC7jtN0bg7xlBqS6WVM\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:EdgeCacheKeyset\n properties:\n name: my-keyset\n description: The default keyset\n publicKeys:\n - id: my-public-key\n value: FHsTyFHNmvNpw4o7-rp-M1yqMyBF8vXSBRkZtkQ0RKY\n - id: my-public-key-2\n value: hzd03llxB1u5FOLKFkZ6_wCJqC7jtN0bg7xlBqS6WVM\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Edge Cache Keyset Dual Token\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret_basic = new gcp.secretmanager.Secret(\"secret-basic\", {\n secretId: \"secret-name\",\n replication: {\n auto: {},\n },\n});\nconst secret_version_basic = new gcp.secretmanager.SecretVersion(\"secret-version-basic\", {\n secret: secret_basic.id,\n secretData: \"secret-data\",\n});\nconst _default = new gcp.networkservices.EdgeCacheKeyset(\"default\", {\n name: \"my-keyset\",\n description: \"The default keyset\",\n publicKeys: [{\n id: \"my-public-key\",\n managed: true,\n }],\n validationSharedKeys: [{\n secretVersion: secret_version_basic.id,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret_basic = gcp.secretmanager.Secret(\"secret-basic\",\n secret_id=\"secret-name\",\n replication={\n \"auto\": {},\n })\nsecret_version_basic = gcp.secretmanager.SecretVersion(\"secret-version-basic\",\n secret=secret_basic.id,\n secret_data=\"secret-data\")\ndefault = gcp.networkservices.EdgeCacheKeyset(\"default\",\n name=\"my-keyset\",\n description=\"The default keyset\",\n public_keys=[{\n \"id\": \"my-public-key\",\n \"managed\": True,\n }],\n validation_shared_keys=[{\n \"secret_version\": secret_version_basic.id,\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var secret_basic = new Gcp.SecretManager.Secret(\"secret-basic\", new()\n {\n SecretId = \"secret-name\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var secret_version_basic = new Gcp.SecretManager.SecretVersion(\"secret-version-basic\", new()\n {\n Secret = secret_basic.Id,\n SecretData = \"secret-data\",\n });\n\n var @default = new Gcp.NetworkServices.EdgeCacheKeyset(\"default\", new()\n {\n Name = \"my-keyset\",\n Description = \"The default keyset\",\n PublicKeys = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheKeysetPublicKeyArgs\n {\n Id = \"my-public-key\",\n Managed = true,\n },\n },\n ValidationSharedKeys = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheKeysetValidationSharedKeyArgs\n {\n SecretVersion = secret_version_basic.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := secretmanager.NewSecret(ctx, \"secret-basic\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-name\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"secret-version-basic\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret_basic.ID(),\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewEdgeCacheKeyset(ctx, \"default\", \u0026networkservices.EdgeCacheKeysetArgs{\n\t\t\tName: pulumi.String(\"my-keyset\"),\n\t\t\tDescription: pulumi.String(\"The default keyset\"),\n\t\t\tPublicKeys: networkservices.EdgeCacheKeysetPublicKeyArray{\n\t\t\t\t\u0026networkservices.EdgeCacheKeysetPublicKeyArgs{\n\t\t\t\t\tId: pulumi.String(\"my-public-key\"),\n\t\t\t\t\tManaged: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tValidationSharedKeys: networkservices.EdgeCacheKeysetValidationSharedKeyArray{\n\t\t\t\t\u0026networkservices.EdgeCacheKeysetValidationSharedKeyArgs{\n\t\t\t\t\tSecretVersion: secret_version_basic.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheKeyset;\nimport com.pulumi.gcp.networkservices.EdgeCacheKeysetArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheKeysetPublicKeyArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheKeysetValidationSharedKeyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var secret_basic = new Secret(\"secret-basic\", SecretArgs.builder()\n .secretId(\"secret-name\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var secret_version_basic = new SecretVersion(\"secret-version-basic\", SecretVersionArgs.builder()\n .secret(secret_basic.id())\n .secretData(\"secret-data\")\n .build());\n\n var default_ = new EdgeCacheKeyset(\"default\", EdgeCacheKeysetArgs.builder()\n .name(\"my-keyset\")\n .description(\"The default keyset\")\n .publicKeys(EdgeCacheKeysetPublicKeyArgs.builder()\n .id(\"my-public-key\")\n .managed(true)\n .build())\n .validationSharedKeys(EdgeCacheKeysetValidationSharedKeyArgs.builder()\n .secretVersion(secret_version_basic.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-basic:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret-name\n replication:\n auto: {}\n secret-version-basic:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"secret-basic\"].id}\n secretData: secret-data\n default:\n type: gcp:networkservices:EdgeCacheKeyset\n properties:\n name: my-keyset\n description: The default keyset\n publicKeys:\n - id: my-public-key\n managed: true\n validationSharedKeys:\n - secretVersion: ${[\"secret-version-basic\"].id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nEdgeCacheKeyset can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/edgeCacheKeysets/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, EdgeCacheKeyset can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkservices/edgeCacheKeyset:EdgeCacheKeyset default projects/{{project}}/locations/global/edgeCacheKeysets/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/edgeCacheKeyset:EdgeCacheKeyset default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/edgeCacheKeyset:EdgeCacheKeyset default {{name}}\n```\n\n", + "description": "EdgeCacheKeyset represents a collection of public keys used for validating signed requests.\n\n\nTo get more information about EdgeCacheKeyset, see:\n\n* [API documentation](https://cloud.google.com/media-cdn/docs/reference/rest/v1/projects.locations.edgeCacheKeysets)\n* How-to Guides\n * [Create keysets](https://cloud.google.com/media-cdn/docs/create-keyset)\n\n\n\n## Example Usage\n\n### Network Services Edge Cache Keyset Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.EdgeCacheKeyset(\"default\", {\n name: \"my-keyset\",\n description: \"The default keyset\",\n publicKeys: [\n {\n id: \"my-public-key\",\n value: \"FHsTyFHNmvNpw4o7-rp-M1yqMyBF8vXSBRkZtkQ0RKY\",\n },\n {\n id: \"my-public-key-2\",\n value: \"hzd03llxB1u5FOLKFkZ6_wCJqC7jtN0bg7xlBqS6WVM\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.EdgeCacheKeyset(\"default\",\n name=\"my-keyset\",\n description=\"The default keyset\",\n public_keys=[\n {\n \"id\": \"my-public-key\",\n \"value\": \"FHsTyFHNmvNpw4o7-rp-M1yqMyBF8vXSBRkZtkQ0RKY\",\n },\n {\n \"id\": \"my-public-key-2\",\n \"value\": \"hzd03llxB1u5FOLKFkZ6_wCJqC7jtN0bg7xlBqS6WVM\",\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.NetworkServices.EdgeCacheKeyset(\"default\", new()\n {\n Name = \"my-keyset\",\n Description = \"The default keyset\",\n PublicKeys = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheKeysetPublicKeyArgs\n {\n Id = \"my-public-key\",\n Value = \"FHsTyFHNmvNpw4o7-rp-M1yqMyBF8vXSBRkZtkQ0RKY\",\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheKeysetPublicKeyArgs\n {\n Id = \"my-public-key-2\",\n Value = \"hzd03llxB1u5FOLKFkZ6_wCJqC7jtN0bg7xlBqS6WVM\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networkservices.NewEdgeCacheKeyset(ctx, \"default\", \u0026networkservices.EdgeCacheKeysetArgs{\n\t\t\tName: pulumi.String(\"my-keyset\"),\n\t\t\tDescription: pulumi.String(\"The default keyset\"),\n\t\t\tPublicKeys: networkservices.EdgeCacheKeysetPublicKeyArray{\n\t\t\t\t\u0026networkservices.EdgeCacheKeysetPublicKeyArgs{\n\t\t\t\t\tId: pulumi.String(\"my-public-key\"),\n\t\t\t\t\tValue: pulumi.String(\"FHsTyFHNmvNpw4o7-rp-M1yqMyBF8vXSBRkZtkQ0RKY\"),\n\t\t\t\t},\n\t\t\t\t\u0026networkservices.EdgeCacheKeysetPublicKeyArgs{\n\t\t\t\t\tId: pulumi.String(\"my-public-key-2\"),\n\t\t\t\t\tValue: pulumi.String(\"hzd03llxB1u5FOLKFkZ6_wCJqC7jtN0bg7xlBqS6WVM\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networkservices.EdgeCacheKeyset;\nimport com.pulumi.gcp.networkservices.EdgeCacheKeysetArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheKeysetPublicKeyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new EdgeCacheKeyset(\"default\", EdgeCacheKeysetArgs.builder()\n .name(\"my-keyset\")\n .description(\"The default keyset\")\n .publicKeys( \n EdgeCacheKeysetPublicKeyArgs.builder()\n .id(\"my-public-key\")\n .value(\"FHsTyFHNmvNpw4o7-rp-M1yqMyBF8vXSBRkZtkQ0RKY\")\n .build(),\n EdgeCacheKeysetPublicKeyArgs.builder()\n .id(\"my-public-key-2\")\n .value(\"hzd03llxB1u5FOLKFkZ6_wCJqC7jtN0bg7xlBqS6WVM\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:EdgeCacheKeyset\n properties:\n name: my-keyset\n description: The default keyset\n publicKeys:\n - id: my-public-key\n value: FHsTyFHNmvNpw4o7-rp-M1yqMyBF8vXSBRkZtkQ0RKY\n - id: my-public-key-2\n value: hzd03llxB1u5FOLKFkZ6_wCJqC7jtN0bg7xlBqS6WVM\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Edge Cache Keyset Dual Token\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret_basic = new gcp.secretmanager.Secret(\"secret-basic\", {\n secretId: \"secret-name\",\n replication: {\n auto: {},\n },\n});\nconst secret_version_basic = new gcp.secretmanager.SecretVersion(\"secret-version-basic\", {\n secret: secret_basic.id,\n secretData: \"secret-data\",\n});\nconst _default = new gcp.networkservices.EdgeCacheKeyset(\"default\", {\n name: \"my-keyset\",\n description: \"The default keyset\",\n publicKeys: [{\n id: \"my-public-key\",\n managed: true,\n }],\n validationSharedKeys: [{\n secretVersion: secret_version_basic.id,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret_basic = gcp.secretmanager.Secret(\"secret-basic\",\n secret_id=\"secret-name\",\n replication={\n \"auto\": {},\n })\nsecret_version_basic = gcp.secretmanager.SecretVersion(\"secret-version-basic\",\n secret=secret_basic.id,\n secret_data=\"secret-data\")\ndefault = gcp.networkservices.EdgeCacheKeyset(\"default\",\n name=\"my-keyset\",\n description=\"The default keyset\",\n public_keys=[{\n \"id\": \"my-public-key\",\n \"managed\": True,\n }],\n validation_shared_keys=[{\n \"secret_version\": secret_version_basic.id,\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var secret_basic = new Gcp.SecretManager.Secret(\"secret-basic\", new()\n {\n SecretId = \"secret-name\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var secret_version_basic = new Gcp.SecretManager.SecretVersion(\"secret-version-basic\", new()\n {\n Secret = secret_basic.Id,\n SecretData = \"secret-data\",\n });\n\n var @default = new Gcp.NetworkServices.EdgeCacheKeyset(\"default\", new()\n {\n Name = \"my-keyset\",\n Description = \"The default keyset\",\n PublicKeys = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheKeysetPublicKeyArgs\n {\n Id = \"my-public-key\",\n Managed = true,\n },\n },\n ValidationSharedKeys = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheKeysetValidationSharedKeyArgs\n {\n SecretVersion = secret_version_basic.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := secretmanager.NewSecret(ctx, \"secret-basic\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-name\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: \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, \"secret-version-basic\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret_basic.ID(),\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewEdgeCacheKeyset(ctx, \"default\", \u0026networkservices.EdgeCacheKeysetArgs{\n\t\t\tName: pulumi.String(\"my-keyset\"),\n\t\t\tDescription: pulumi.String(\"The default keyset\"),\n\t\t\tPublicKeys: networkservices.EdgeCacheKeysetPublicKeyArray{\n\t\t\t\t\u0026networkservices.EdgeCacheKeysetPublicKeyArgs{\n\t\t\t\t\tId: pulumi.String(\"my-public-key\"),\n\t\t\t\t\tManaged: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tValidationSharedKeys: networkservices.EdgeCacheKeysetValidationSharedKeyArray{\n\t\t\t\t\u0026networkservices.EdgeCacheKeysetValidationSharedKeyArgs{\n\t\t\t\t\tSecretVersion: secret_version_basic.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheKeyset;\nimport com.pulumi.gcp.networkservices.EdgeCacheKeysetArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheKeysetPublicKeyArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheKeysetValidationSharedKeyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var secret_basic = new Secret(\"secret-basic\", SecretArgs.builder()\n .secretId(\"secret-name\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var secret_version_basic = new SecretVersion(\"secret-version-basic\", SecretVersionArgs.builder()\n .secret(secret_basic.id())\n .secretData(\"secret-data\")\n .build());\n\n var default_ = new EdgeCacheKeyset(\"default\", EdgeCacheKeysetArgs.builder()\n .name(\"my-keyset\")\n .description(\"The default keyset\")\n .publicKeys(EdgeCacheKeysetPublicKeyArgs.builder()\n .id(\"my-public-key\")\n .managed(true)\n .build())\n .validationSharedKeys(EdgeCacheKeysetValidationSharedKeyArgs.builder()\n .secretVersion(secret_version_basic.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-basic:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret-name\n replication:\n auto: {}\n secret-version-basic:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"secret-basic\"].id}\n secretData: secret-data\n default:\n type: gcp:networkservices:EdgeCacheKeyset\n properties:\n name: my-keyset\n description: The default keyset\n publicKeys:\n - id: my-public-key\n managed: true\n validationSharedKeys:\n - secretVersion: ${[\"secret-version-basic\"].id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nEdgeCacheKeyset can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/edgeCacheKeysets/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, EdgeCacheKeyset can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkservices/edgeCacheKeyset:EdgeCacheKeyset default projects/{{project}}/locations/global/edgeCacheKeysets/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/edgeCacheKeyset:EdgeCacheKeyset default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/edgeCacheKeyset:EdgeCacheKeyset default {{name}}\n```\n\n", "properties": { "description": { "type": "string", @@ -228165,7 +228165,7 @@ } }, "gcp:networkservices/edgeCacheOrigin:EdgeCacheOrigin": { - "description": "EdgeCacheOrigin represents a HTTP-reachable backend for an EdgeCacheService.\n\n\nTo get more information about EdgeCacheOrigin, see:\n\n* [API documentation](https://cloud.google.com/media-cdn/docs/reference/rest/v1/projects.locations.edgeCacheOrigins)\n\n## Example Usage\n\n### Network Services Edge Cache Origin Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.EdgeCacheOrigin(\"default\", {\n name: \"my-origin\",\n originAddress: \"gs://media-edge-default\",\n description: \"The default bucket for media edge test\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.EdgeCacheOrigin(\"default\",\n name=\"my-origin\",\n origin_address=\"gs://media-edge-default\",\n description=\"The default bucket for media edge test\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.NetworkServices.EdgeCacheOrigin(\"default\", new()\n {\n Name = \"my-origin\",\n OriginAddress = \"gs://media-edge-default\",\n Description = \"The default bucket for media edge test\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networkservices.NewEdgeCacheOrigin(ctx, \"default\", \u0026networkservices.EdgeCacheOriginArgs{\n\t\t\tName: pulumi.String(\"my-origin\"),\n\t\t\tOriginAddress: pulumi.String(\"gs://media-edge-default\"),\n\t\t\tDescription: pulumi.String(\"The default bucket for media edge test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networkservices.EdgeCacheOrigin;\nimport com.pulumi.gcp.networkservices.EdgeCacheOriginArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new EdgeCacheOrigin(\"default\", EdgeCacheOriginArgs.builder()\n .name(\"my-origin\")\n .originAddress(\"gs://media-edge-default\")\n .description(\"The default bucket for media edge test\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:EdgeCacheOrigin\n properties:\n name: my-origin\n originAddress: gs://media-edge-default\n description: The default bucket for media edge test\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Edge Cache Origin Advanced\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst fallback = new gcp.networkservices.EdgeCacheOrigin(\"fallback\", {\n name: \"my-fallback\",\n originAddress: \"fallback.example.com\",\n description: \"The default bucket for media edge test\",\n maxAttempts: 3,\n protocol: \"HTTP\",\n port: 80,\n retryConditions: [\n \"CONNECT_FAILURE\",\n \"NOT_FOUND\",\n \"HTTP_5XX\",\n \"FORBIDDEN\",\n ],\n timeout: {\n connectTimeout: \"10s\",\n maxAttemptsTimeout: \"20s\",\n responseTimeout: \"60s\",\n readTimeout: \"5s\",\n },\n originOverrideAction: {\n urlRewrite: {\n hostRewrite: \"example.com\",\n },\n headerAction: {\n requestHeadersToAdds: [{\n headerName: \"x-header\",\n headerValue: \"value\",\n replace: true,\n }],\n },\n },\n originRedirect: {\n redirectConditions: [\n \"MOVED_PERMANENTLY\",\n \"FOUND\",\n \"SEE_OTHER\",\n \"TEMPORARY_REDIRECT\",\n \"PERMANENT_REDIRECT\",\n ],\n },\n});\nconst _default = new gcp.networkservices.EdgeCacheOrigin(\"default\", {\n name: \"my-origin\",\n originAddress: \"gs://media-edge-default\",\n failoverOrigin: fallback.id,\n description: \"The default bucket for media edge test\",\n maxAttempts: 2,\n labels: {\n a: \"b\",\n },\n timeout: {\n connectTimeout: \"10s\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfallback = gcp.networkservices.EdgeCacheOrigin(\"fallback\",\n name=\"my-fallback\",\n origin_address=\"fallback.example.com\",\n description=\"The default bucket for media edge test\",\n max_attempts=3,\n protocol=\"HTTP\",\n port=80,\n retry_conditions=[\n \"CONNECT_FAILURE\",\n \"NOT_FOUND\",\n \"HTTP_5XX\",\n \"FORBIDDEN\",\n ],\n timeout={\n \"connect_timeout\": \"10s\",\n \"max_attempts_timeout\": \"20s\",\n \"response_timeout\": \"60s\",\n \"read_timeout\": \"5s\",\n },\n origin_override_action={\n \"url_rewrite\": {\n \"host_rewrite\": \"example.com\",\n },\n \"header_action\": {\n \"request_headers_to_adds\": [{\n \"header_name\": \"x-header\",\n \"header_value\": \"value\",\n \"replace\": True,\n }],\n },\n },\n origin_redirect={\n \"redirect_conditions\": [\n \"MOVED_PERMANENTLY\",\n \"FOUND\",\n \"SEE_OTHER\",\n \"TEMPORARY_REDIRECT\",\n \"PERMANENT_REDIRECT\",\n ],\n })\ndefault = gcp.networkservices.EdgeCacheOrigin(\"default\",\n name=\"my-origin\",\n origin_address=\"gs://media-edge-default\",\n failover_origin=fallback.id,\n description=\"The default bucket for media edge test\",\n max_attempts=2,\n labels={\n \"a\": \"b\",\n },\n timeout={\n \"connect_timeout\": \"10s\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var fallback = new Gcp.NetworkServices.EdgeCacheOrigin(\"fallback\", new()\n {\n Name = \"my-fallback\",\n OriginAddress = \"fallback.example.com\",\n Description = \"The default bucket for media edge test\",\n MaxAttempts = 3,\n Protocol = \"HTTP\",\n Port = 80,\n RetryConditions = new[]\n {\n \"CONNECT_FAILURE\",\n \"NOT_FOUND\",\n \"HTTP_5XX\",\n \"FORBIDDEN\",\n },\n Timeout = new Gcp.NetworkServices.Inputs.EdgeCacheOriginTimeoutArgs\n {\n ConnectTimeout = \"10s\",\n MaxAttemptsTimeout = \"20s\",\n ResponseTimeout = \"60s\",\n ReadTimeout = \"5s\",\n },\n OriginOverrideAction = new Gcp.NetworkServices.Inputs.EdgeCacheOriginOriginOverrideActionArgs\n {\n UrlRewrite = new Gcp.NetworkServices.Inputs.EdgeCacheOriginOriginOverrideActionUrlRewriteArgs\n {\n HostRewrite = \"example.com\",\n },\n HeaderAction = new Gcp.NetworkServices.Inputs.EdgeCacheOriginOriginOverrideActionHeaderActionArgs\n {\n RequestHeadersToAdds = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheOriginOriginOverrideActionHeaderActionRequestHeadersToAddArgs\n {\n HeaderName = \"x-header\",\n HeaderValue = \"value\",\n Replace = true,\n },\n },\n },\n },\n OriginRedirect = new Gcp.NetworkServices.Inputs.EdgeCacheOriginOriginRedirectArgs\n {\n RedirectConditions = new[]\n {\n \"MOVED_PERMANENTLY\",\n \"FOUND\",\n \"SEE_OTHER\",\n \"TEMPORARY_REDIRECT\",\n \"PERMANENT_REDIRECT\",\n },\n },\n });\n\n var @default = new Gcp.NetworkServices.EdgeCacheOrigin(\"default\", new()\n {\n Name = \"my-origin\",\n OriginAddress = \"gs://media-edge-default\",\n FailoverOrigin = fallback.Id,\n Description = \"The default bucket for media edge test\",\n MaxAttempts = 2,\n Labels = \n {\n { \"a\", \"b\" },\n },\n Timeout = new Gcp.NetworkServices.Inputs.EdgeCacheOriginTimeoutArgs\n {\n ConnectTimeout = \"10s\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfallback, err := networkservices.NewEdgeCacheOrigin(ctx, \"fallback\", \u0026networkservices.EdgeCacheOriginArgs{\n\t\t\tName: pulumi.String(\"my-fallback\"),\n\t\t\tOriginAddress: pulumi.String(\"fallback.example.com\"),\n\t\t\tDescription: pulumi.String(\"The default bucket for media edge test\"),\n\t\t\tMaxAttempts: pulumi.Int(3),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tPort: pulumi.Int(80),\n\t\t\tRetryConditions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"CONNECT_FAILURE\"),\n\t\t\t\tpulumi.String(\"NOT_FOUND\"),\n\t\t\t\tpulumi.String(\"HTTP_5XX\"),\n\t\t\t\tpulumi.String(\"FORBIDDEN\"),\n\t\t\t},\n\t\t\tTimeout: \u0026networkservices.EdgeCacheOriginTimeoutArgs{\n\t\t\t\tConnectTimeout: pulumi.String(\"10s\"),\n\t\t\t\tMaxAttemptsTimeout: pulumi.String(\"20s\"),\n\t\t\t\tResponseTimeout: pulumi.String(\"60s\"),\n\t\t\t\tReadTimeout: pulumi.String(\"5s\"),\n\t\t\t},\n\t\t\tOriginOverrideAction: \u0026networkservices.EdgeCacheOriginOriginOverrideActionArgs{\n\t\t\t\tUrlRewrite: \u0026networkservices.EdgeCacheOriginOriginOverrideActionUrlRewriteArgs{\n\t\t\t\t\tHostRewrite: pulumi.String(\"example.com\"),\n\t\t\t\t},\n\t\t\t\tHeaderAction: \u0026networkservices.EdgeCacheOriginOriginOverrideActionHeaderActionArgs{\n\t\t\t\t\tRequestHeadersToAdds: networkservices.EdgeCacheOriginOriginOverrideActionHeaderActionRequestHeadersToAddArray{\n\t\t\t\t\t\t\u0026networkservices.EdgeCacheOriginOriginOverrideActionHeaderActionRequestHeadersToAddArgs{\n\t\t\t\t\t\t\tHeaderName: pulumi.String(\"x-header\"),\n\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"value\"),\n\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tOriginRedirect: \u0026networkservices.EdgeCacheOriginOriginRedirectArgs{\n\t\t\t\tRedirectConditions: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"MOVED_PERMANENTLY\"),\n\t\t\t\t\tpulumi.String(\"FOUND\"),\n\t\t\t\t\tpulumi.String(\"SEE_OTHER\"),\n\t\t\t\t\tpulumi.String(\"TEMPORARY_REDIRECT\"),\n\t\t\t\t\tpulumi.String(\"PERMANENT_REDIRECT\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewEdgeCacheOrigin(ctx, \"default\", \u0026networkservices.EdgeCacheOriginArgs{\n\t\t\tName: pulumi.String(\"my-origin\"),\n\t\t\tOriginAddress: pulumi.String(\"gs://media-edge-default\"),\n\t\t\tFailoverOrigin: fallback.ID(),\n\t\t\tDescription: pulumi.String(\"The default bucket for media edge test\"),\n\t\t\tMaxAttempts: pulumi.Int(2),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"a\": pulumi.String(\"b\"),\n\t\t\t},\n\t\t\tTimeout: \u0026networkservices.EdgeCacheOriginTimeoutArgs{\n\t\t\t\tConnectTimeout: pulumi.String(\"10s\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networkservices.EdgeCacheOrigin;\nimport com.pulumi.gcp.networkservices.EdgeCacheOriginArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheOriginTimeoutArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheOriginOriginOverrideActionArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheOriginOriginOverrideActionUrlRewriteArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheOriginOriginOverrideActionHeaderActionArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheOriginOriginRedirectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var fallback = new EdgeCacheOrigin(\"fallback\", EdgeCacheOriginArgs.builder()\n .name(\"my-fallback\")\n .originAddress(\"fallback.example.com\")\n .description(\"The default bucket for media edge test\")\n .maxAttempts(3)\n .protocol(\"HTTP\")\n .port(80)\n .retryConditions( \n \"CONNECT_FAILURE\",\n \"NOT_FOUND\",\n \"HTTP_5XX\",\n \"FORBIDDEN\")\n .timeout(EdgeCacheOriginTimeoutArgs.builder()\n .connectTimeout(\"10s\")\n .maxAttemptsTimeout(\"20s\")\n .responseTimeout(\"60s\")\n .readTimeout(\"5s\")\n .build())\n .originOverrideAction(EdgeCacheOriginOriginOverrideActionArgs.builder()\n .urlRewrite(EdgeCacheOriginOriginOverrideActionUrlRewriteArgs.builder()\n .hostRewrite(\"example.com\")\n .build())\n .headerAction(EdgeCacheOriginOriginOverrideActionHeaderActionArgs.builder()\n .requestHeadersToAdds(EdgeCacheOriginOriginOverrideActionHeaderActionRequestHeadersToAddArgs.builder()\n .headerName(\"x-header\")\n .headerValue(\"value\")\n .replace(true)\n .build())\n .build())\n .build())\n .originRedirect(EdgeCacheOriginOriginRedirectArgs.builder()\n .redirectConditions( \n \"MOVED_PERMANENTLY\",\n \"FOUND\",\n \"SEE_OTHER\",\n \"TEMPORARY_REDIRECT\",\n \"PERMANENT_REDIRECT\")\n .build())\n .build());\n\n var default_ = new EdgeCacheOrigin(\"default\", EdgeCacheOriginArgs.builder()\n .name(\"my-origin\")\n .originAddress(\"gs://media-edge-default\")\n .failoverOrigin(fallback.id())\n .description(\"The default bucket for media edge test\")\n .maxAttempts(2)\n .labels(Map.of(\"a\", \"b\"))\n .timeout(EdgeCacheOriginTimeoutArgs.builder()\n .connectTimeout(\"10s\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n fallback:\n type: gcp:networkservices:EdgeCacheOrigin\n properties:\n name: my-fallback\n originAddress: fallback.example.com\n description: The default bucket for media edge test\n maxAttempts: 3\n protocol: HTTP\n port: 80\n retryConditions:\n - CONNECT_FAILURE\n - NOT_FOUND\n - HTTP_5XX\n - FORBIDDEN\n timeout:\n connectTimeout: 10s\n maxAttemptsTimeout: 20s\n responseTimeout: 60s\n readTimeout: 5s\n originOverrideAction:\n urlRewrite:\n hostRewrite: example.com\n headerAction:\n requestHeadersToAdds:\n - headerName: x-header\n headerValue: value\n replace: true\n originRedirect:\n redirectConditions:\n - MOVED_PERMANENTLY\n - FOUND\n - SEE_OTHER\n - TEMPORARY_REDIRECT\n - PERMANENT_REDIRECT\n default:\n type: gcp:networkservices:EdgeCacheOrigin\n properties:\n name: my-origin\n originAddress: gs://media-edge-default\n failoverOrigin: ${fallback.id}\n description: The default bucket for media edge test\n maxAttempts: 2\n labels:\n a: b\n timeout:\n connectTimeout: 10s\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Edge Cache Origin V4auth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret_basic = new gcp.secretmanager.Secret(\"secret-basic\", {\n secretId: \"secret-name\",\n replication: {\n auto: {},\n },\n});\nconst secret_version_basic = new gcp.secretmanager.SecretVersion(\"secret-version-basic\", {\n secret: secret_basic.id,\n secretData: \"secret-data\",\n});\nconst _default = new gcp.networkservices.EdgeCacheOrigin(\"default\", {\n name: \"my-origin\",\n originAddress: \"gs://media-edge-default\",\n description: \"The default bucket for V4 authentication\",\n awsV4Authentication: {\n accessKeyId: \"ACCESSKEYID\",\n secretAccessKeyVersion: secret_version_basic.id,\n originRegion: \"auto\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret_basic = gcp.secretmanager.Secret(\"secret-basic\",\n secret_id=\"secret-name\",\n replication={\n \"auto\": {},\n })\nsecret_version_basic = gcp.secretmanager.SecretVersion(\"secret-version-basic\",\n secret=secret_basic.id,\n secret_data=\"secret-data\")\ndefault = gcp.networkservices.EdgeCacheOrigin(\"default\",\n name=\"my-origin\",\n origin_address=\"gs://media-edge-default\",\n description=\"The default bucket for V4 authentication\",\n aws_v4_authentication={\n \"access_key_id\": \"ACCESSKEYID\",\n \"secret_access_key_version\": secret_version_basic.id,\n \"origin_region\": \"auto\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var secret_basic = new Gcp.SecretManager.Secret(\"secret-basic\", new()\n {\n SecretId = \"secret-name\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var secret_version_basic = new Gcp.SecretManager.SecretVersion(\"secret-version-basic\", new()\n {\n Secret = secret_basic.Id,\n SecretData = \"secret-data\",\n });\n\n var @default = new Gcp.NetworkServices.EdgeCacheOrigin(\"default\", new()\n {\n Name = \"my-origin\",\n OriginAddress = \"gs://media-edge-default\",\n Description = \"The default bucket for V4 authentication\",\n AwsV4Authentication = new Gcp.NetworkServices.Inputs.EdgeCacheOriginAwsV4AuthenticationArgs\n {\n AccessKeyId = \"ACCESSKEYID\",\n SecretAccessKeyVersion = secret_version_basic.Id,\n OriginRegion = \"auto\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := secretmanager.NewSecret(ctx, \"secret-basic\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-name\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"secret-version-basic\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret_basic.ID(),\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewEdgeCacheOrigin(ctx, \"default\", \u0026networkservices.EdgeCacheOriginArgs{\n\t\t\tName: pulumi.String(\"my-origin\"),\n\t\t\tOriginAddress: pulumi.String(\"gs://media-edge-default\"),\n\t\t\tDescription: pulumi.String(\"The default bucket for V4 authentication\"),\n\t\t\tAwsV4Authentication: \u0026networkservices.EdgeCacheOriginAwsV4AuthenticationArgs{\n\t\t\t\tAccessKeyId: pulumi.String(\"ACCESSKEYID\"),\n\t\t\t\tSecretAccessKeyVersion: secret_version_basic.ID(),\n\t\t\t\tOriginRegion: pulumi.String(\"auto\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheOrigin;\nimport com.pulumi.gcp.networkservices.EdgeCacheOriginArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheOriginAwsV4AuthenticationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var secret_basic = new Secret(\"secret-basic\", SecretArgs.builder()\n .secretId(\"secret-name\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var secret_version_basic = new SecretVersion(\"secret-version-basic\", SecretVersionArgs.builder()\n .secret(secret_basic.id())\n .secretData(\"secret-data\")\n .build());\n\n var default_ = new EdgeCacheOrigin(\"default\", EdgeCacheOriginArgs.builder()\n .name(\"my-origin\")\n .originAddress(\"gs://media-edge-default\")\n .description(\"The default bucket for V4 authentication\")\n .awsV4Authentication(EdgeCacheOriginAwsV4AuthenticationArgs.builder()\n .accessKeyId(\"ACCESSKEYID\")\n .secretAccessKeyVersion(secret_version_basic.id())\n .originRegion(\"auto\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-basic:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret-name\n replication:\n auto: {}\n secret-version-basic:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"secret-basic\"].id}\n secretData: secret-data\n default:\n type: gcp:networkservices:EdgeCacheOrigin\n properties:\n name: my-origin\n originAddress: gs://media-edge-default\n description: The default bucket for V4 authentication\n awsV4Authentication:\n accessKeyId: ACCESSKEYID\n secretAccessKeyVersion: ${[\"secret-version-basic\"].id}\n originRegion: auto\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nEdgeCacheOrigin can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/edgeCacheOrigins/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, EdgeCacheOrigin can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkservices/edgeCacheOrigin:EdgeCacheOrigin default projects/{{project}}/locations/global/edgeCacheOrigins/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/edgeCacheOrigin:EdgeCacheOrigin default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/edgeCacheOrigin:EdgeCacheOrigin default {{name}}\n```\n\n", + "description": "EdgeCacheOrigin represents a HTTP-reachable backend for an EdgeCacheService.\n\n\nTo get more information about EdgeCacheOrigin, see:\n\n* [API documentation](https://cloud.google.com/media-cdn/docs/reference/rest/v1/projects.locations.edgeCacheOrigins)\n\n## Example Usage\n\n### Network Services Edge Cache Origin Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.EdgeCacheOrigin(\"default\", {\n name: \"my-origin\",\n originAddress: \"gs://media-edge-default\",\n description: \"The default bucket for media edge test\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.EdgeCacheOrigin(\"default\",\n name=\"my-origin\",\n origin_address=\"gs://media-edge-default\",\n description=\"The default bucket for media edge test\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.NetworkServices.EdgeCacheOrigin(\"default\", new()\n {\n Name = \"my-origin\",\n OriginAddress = \"gs://media-edge-default\",\n Description = \"The default bucket for media edge test\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networkservices.NewEdgeCacheOrigin(ctx, \"default\", \u0026networkservices.EdgeCacheOriginArgs{\n\t\t\tName: pulumi.String(\"my-origin\"),\n\t\t\tOriginAddress: pulumi.String(\"gs://media-edge-default\"),\n\t\t\tDescription: pulumi.String(\"The default bucket for media edge test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networkservices.EdgeCacheOrigin;\nimport com.pulumi.gcp.networkservices.EdgeCacheOriginArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new EdgeCacheOrigin(\"default\", EdgeCacheOriginArgs.builder()\n .name(\"my-origin\")\n .originAddress(\"gs://media-edge-default\")\n .description(\"The default bucket for media edge test\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:EdgeCacheOrigin\n properties:\n name: my-origin\n originAddress: gs://media-edge-default\n description: The default bucket for media edge test\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Edge Cache Origin Advanced\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst fallback = new gcp.networkservices.EdgeCacheOrigin(\"fallback\", {\n name: \"my-fallback\",\n originAddress: \"fallback.example.com\",\n description: \"The default bucket for media edge test\",\n maxAttempts: 3,\n protocol: \"HTTP\",\n port: 80,\n retryConditions: [\n \"CONNECT_FAILURE\",\n \"NOT_FOUND\",\n \"HTTP_5XX\",\n \"FORBIDDEN\",\n ],\n timeout: {\n connectTimeout: \"10s\",\n maxAttemptsTimeout: \"20s\",\n responseTimeout: \"60s\",\n readTimeout: \"5s\",\n },\n originOverrideAction: {\n urlRewrite: {\n hostRewrite: \"example.com\",\n },\n headerAction: {\n requestHeadersToAdds: [{\n headerName: \"x-header\",\n headerValue: \"value\",\n replace: true,\n }],\n },\n },\n originRedirect: {\n redirectConditions: [\n \"MOVED_PERMANENTLY\",\n \"FOUND\",\n \"SEE_OTHER\",\n \"TEMPORARY_REDIRECT\",\n \"PERMANENT_REDIRECT\",\n ],\n },\n});\nconst _default = new gcp.networkservices.EdgeCacheOrigin(\"default\", {\n name: \"my-origin\",\n originAddress: \"gs://media-edge-default\",\n failoverOrigin: fallback.id,\n description: \"The default bucket for media edge test\",\n maxAttempts: 2,\n labels: {\n a: \"b\",\n },\n timeout: {\n connectTimeout: \"10s\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfallback = gcp.networkservices.EdgeCacheOrigin(\"fallback\",\n name=\"my-fallback\",\n origin_address=\"fallback.example.com\",\n description=\"The default bucket for media edge test\",\n max_attempts=3,\n protocol=\"HTTP\",\n port=80,\n retry_conditions=[\n \"CONNECT_FAILURE\",\n \"NOT_FOUND\",\n \"HTTP_5XX\",\n \"FORBIDDEN\",\n ],\n timeout={\n \"connect_timeout\": \"10s\",\n \"max_attempts_timeout\": \"20s\",\n \"response_timeout\": \"60s\",\n \"read_timeout\": \"5s\",\n },\n origin_override_action={\n \"url_rewrite\": {\n \"host_rewrite\": \"example.com\",\n },\n \"header_action\": {\n \"request_headers_to_adds\": [{\n \"header_name\": \"x-header\",\n \"header_value\": \"value\",\n \"replace\": True,\n }],\n },\n },\n origin_redirect={\n \"redirect_conditions\": [\n \"MOVED_PERMANENTLY\",\n \"FOUND\",\n \"SEE_OTHER\",\n \"TEMPORARY_REDIRECT\",\n \"PERMANENT_REDIRECT\",\n ],\n })\ndefault = gcp.networkservices.EdgeCacheOrigin(\"default\",\n name=\"my-origin\",\n origin_address=\"gs://media-edge-default\",\n failover_origin=fallback.id,\n description=\"The default bucket for media edge test\",\n max_attempts=2,\n labels={\n \"a\": \"b\",\n },\n timeout={\n \"connect_timeout\": \"10s\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var fallback = new Gcp.NetworkServices.EdgeCacheOrigin(\"fallback\", new()\n {\n Name = \"my-fallback\",\n OriginAddress = \"fallback.example.com\",\n Description = \"The default bucket for media edge test\",\n MaxAttempts = 3,\n Protocol = \"HTTP\",\n Port = 80,\n RetryConditions = new[]\n {\n \"CONNECT_FAILURE\",\n \"NOT_FOUND\",\n \"HTTP_5XX\",\n \"FORBIDDEN\",\n },\n Timeout = new Gcp.NetworkServices.Inputs.EdgeCacheOriginTimeoutArgs\n {\n ConnectTimeout = \"10s\",\n MaxAttemptsTimeout = \"20s\",\n ResponseTimeout = \"60s\",\n ReadTimeout = \"5s\",\n },\n OriginOverrideAction = new Gcp.NetworkServices.Inputs.EdgeCacheOriginOriginOverrideActionArgs\n {\n UrlRewrite = new Gcp.NetworkServices.Inputs.EdgeCacheOriginOriginOverrideActionUrlRewriteArgs\n {\n HostRewrite = \"example.com\",\n },\n HeaderAction = new Gcp.NetworkServices.Inputs.EdgeCacheOriginOriginOverrideActionHeaderActionArgs\n {\n RequestHeadersToAdds = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheOriginOriginOverrideActionHeaderActionRequestHeadersToAddArgs\n {\n HeaderName = \"x-header\",\n HeaderValue = \"value\",\n Replace = true,\n },\n },\n },\n },\n OriginRedirect = new Gcp.NetworkServices.Inputs.EdgeCacheOriginOriginRedirectArgs\n {\n RedirectConditions = new[]\n {\n \"MOVED_PERMANENTLY\",\n \"FOUND\",\n \"SEE_OTHER\",\n \"TEMPORARY_REDIRECT\",\n \"PERMANENT_REDIRECT\",\n },\n },\n });\n\n var @default = new Gcp.NetworkServices.EdgeCacheOrigin(\"default\", new()\n {\n Name = \"my-origin\",\n OriginAddress = \"gs://media-edge-default\",\n FailoverOrigin = fallback.Id,\n Description = \"The default bucket for media edge test\",\n MaxAttempts = 2,\n Labels = \n {\n { \"a\", \"b\" },\n },\n Timeout = new Gcp.NetworkServices.Inputs.EdgeCacheOriginTimeoutArgs\n {\n ConnectTimeout = \"10s\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfallback, err := networkservices.NewEdgeCacheOrigin(ctx, \"fallback\", \u0026networkservices.EdgeCacheOriginArgs{\n\t\t\tName: pulumi.String(\"my-fallback\"),\n\t\t\tOriginAddress: pulumi.String(\"fallback.example.com\"),\n\t\t\tDescription: pulumi.String(\"The default bucket for media edge test\"),\n\t\t\tMaxAttempts: pulumi.Int(3),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tPort: pulumi.Int(80),\n\t\t\tRetryConditions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"CONNECT_FAILURE\"),\n\t\t\t\tpulumi.String(\"NOT_FOUND\"),\n\t\t\t\tpulumi.String(\"HTTP_5XX\"),\n\t\t\t\tpulumi.String(\"FORBIDDEN\"),\n\t\t\t},\n\t\t\tTimeout: \u0026networkservices.EdgeCacheOriginTimeoutArgs{\n\t\t\t\tConnectTimeout: pulumi.String(\"10s\"),\n\t\t\t\tMaxAttemptsTimeout: pulumi.String(\"20s\"),\n\t\t\t\tResponseTimeout: pulumi.String(\"60s\"),\n\t\t\t\tReadTimeout: pulumi.String(\"5s\"),\n\t\t\t},\n\t\t\tOriginOverrideAction: \u0026networkservices.EdgeCacheOriginOriginOverrideActionArgs{\n\t\t\t\tUrlRewrite: \u0026networkservices.EdgeCacheOriginOriginOverrideActionUrlRewriteArgs{\n\t\t\t\t\tHostRewrite: pulumi.String(\"example.com\"),\n\t\t\t\t},\n\t\t\t\tHeaderAction: \u0026networkservices.EdgeCacheOriginOriginOverrideActionHeaderActionArgs{\n\t\t\t\t\tRequestHeadersToAdds: networkservices.EdgeCacheOriginOriginOverrideActionHeaderActionRequestHeadersToAddArray{\n\t\t\t\t\t\t\u0026networkservices.EdgeCacheOriginOriginOverrideActionHeaderActionRequestHeadersToAddArgs{\n\t\t\t\t\t\t\tHeaderName: pulumi.String(\"x-header\"),\n\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"value\"),\n\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tOriginRedirect: \u0026networkservices.EdgeCacheOriginOriginRedirectArgs{\n\t\t\t\tRedirectConditions: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"MOVED_PERMANENTLY\"),\n\t\t\t\t\tpulumi.String(\"FOUND\"),\n\t\t\t\t\tpulumi.String(\"SEE_OTHER\"),\n\t\t\t\t\tpulumi.String(\"TEMPORARY_REDIRECT\"),\n\t\t\t\t\tpulumi.String(\"PERMANENT_REDIRECT\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewEdgeCacheOrigin(ctx, \"default\", \u0026networkservices.EdgeCacheOriginArgs{\n\t\t\tName: pulumi.String(\"my-origin\"),\n\t\t\tOriginAddress: pulumi.String(\"gs://media-edge-default\"),\n\t\t\tFailoverOrigin: fallback.ID(),\n\t\t\tDescription: pulumi.String(\"The default bucket for media edge test\"),\n\t\t\tMaxAttempts: pulumi.Int(2),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"a\": pulumi.String(\"b\"),\n\t\t\t},\n\t\t\tTimeout: \u0026networkservices.EdgeCacheOriginTimeoutArgs{\n\t\t\t\tConnectTimeout: pulumi.String(\"10s\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networkservices.EdgeCacheOrigin;\nimport com.pulumi.gcp.networkservices.EdgeCacheOriginArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheOriginTimeoutArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheOriginOriginOverrideActionArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheOriginOriginOverrideActionUrlRewriteArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheOriginOriginOverrideActionHeaderActionArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheOriginOriginRedirectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var fallback = new EdgeCacheOrigin(\"fallback\", EdgeCacheOriginArgs.builder()\n .name(\"my-fallback\")\n .originAddress(\"fallback.example.com\")\n .description(\"The default bucket for media edge test\")\n .maxAttempts(3)\n .protocol(\"HTTP\")\n .port(80)\n .retryConditions( \n \"CONNECT_FAILURE\",\n \"NOT_FOUND\",\n \"HTTP_5XX\",\n \"FORBIDDEN\")\n .timeout(EdgeCacheOriginTimeoutArgs.builder()\n .connectTimeout(\"10s\")\n .maxAttemptsTimeout(\"20s\")\n .responseTimeout(\"60s\")\n .readTimeout(\"5s\")\n .build())\n .originOverrideAction(EdgeCacheOriginOriginOverrideActionArgs.builder()\n .urlRewrite(EdgeCacheOriginOriginOverrideActionUrlRewriteArgs.builder()\n .hostRewrite(\"example.com\")\n .build())\n .headerAction(EdgeCacheOriginOriginOverrideActionHeaderActionArgs.builder()\n .requestHeadersToAdds(EdgeCacheOriginOriginOverrideActionHeaderActionRequestHeadersToAddArgs.builder()\n .headerName(\"x-header\")\n .headerValue(\"value\")\n .replace(true)\n .build())\n .build())\n .build())\n .originRedirect(EdgeCacheOriginOriginRedirectArgs.builder()\n .redirectConditions( \n \"MOVED_PERMANENTLY\",\n \"FOUND\",\n \"SEE_OTHER\",\n \"TEMPORARY_REDIRECT\",\n \"PERMANENT_REDIRECT\")\n .build())\n .build());\n\n var default_ = new EdgeCacheOrigin(\"default\", EdgeCacheOriginArgs.builder()\n .name(\"my-origin\")\n .originAddress(\"gs://media-edge-default\")\n .failoverOrigin(fallback.id())\n .description(\"The default bucket for media edge test\")\n .maxAttempts(2)\n .labels(Map.of(\"a\", \"b\"))\n .timeout(EdgeCacheOriginTimeoutArgs.builder()\n .connectTimeout(\"10s\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n fallback:\n type: gcp:networkservices:EdgeCacheOrigin\n properties:\n name: my-fallback\n originAddress: fallback.example.com\n description: The default bucket for media edge test\n maxAttempts: 3\n protocol: HTTP\n port: 80\n retryConditions:\n - CONNECT_FAILURE\n - NOT_FOUND\n - HTTP_5XX\n - FORBIDDEN\n timeout:\n connectTimeout: 10s\n maxAttemptsTimeout: 20s\n responseTimeout: 60s\n readTimeout: 5s\n originOverrideAction:\n urlRewrite:\n hostRewrite: example.com\n headerAction:\n requestHeadersToAdds:\n - headerName: x-header\n headerValue: value\n replace: true\n originRedirect:\n redirectConditions:\n - MOVED_PERMANENTLY\n - FOUND\n - SEE_OTHER\n - TEMPORARY_REDIRECT\n - PERMANENT_REDIRECT\n default:\n type: gcp:networkservices:EdgeCacheOrigin\n properties:\n name: my-origin\n originAddress: gs://media-edge-default\n failoverOrigin: ${fallback.id}\n description: The default bucket for media edge test\n maxAttempts: 2\n labels:\n a: b\n timeout:\n connectTimeout: 10s\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Edge Cache Origin V4auth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret_basic = new gcp.secretmanager.Secret(\"secret-basic\", {\n secretId: \"secret-name\",\n replication: {\n auto: {},\n },\n});\nconst secret_version_basic = new gcp.secretmanager.SecretVersion(\"secret-version-basic\", {\n secret: secret_basic.id,\n secretData: \"secret-data\",\n});\nconst _default = new gcp.networkservices.EdgeCacheOrigin(\"default\", {\n name: \"my-origin\",\n originAddress: \"gs://media-edge-default\",\n description: \"The default bucket for V4 authentication\",\n awsV4Authentication: {\n accessKeyId: \"ACCESSKEYID\",\n secretAccessKeyVersion: secret_version_basic.id,\n originRegion: \"auto\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret_basic = gcp.secretmanager.Secret(\"secret-basic\",\n secret_id=\"secret-name\",\n replication={\n \"auto\": {},\n })\nsecret_version_basic = gcp.secretmanager.SecretVersion(\"secret-version-basic\",\n secret=secret_basic.id,\n secret_data=\"secret-data\")\ndefault = gcp.networkservices.EdgeCacheOrigin(\"default\",\n name=\"my-origin\",\n origin_address=\"gs://media-edge-default\",\n description=\"The default bucket for V4 authentication\",\n aws_v4_authentication={\n \"access_key_id\": \"ACCESSKEYID\",\n \"secret_access_key_version\": secret_version_basic.id,\n \"origin_region\": \"auto\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var secret_basic = new Gcp.SecretManager.Secret(\"secret-basic\", new()\n {\n SecretId = \"secret-name\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var secret_version_basic = new Gcp.SecretManager.SecretVersion(\"secret-version-basic\", new()\n {\n Secret = secret_basic.Id,\n SecretData = \"secret-data\",\n });\n\n var @default = new Gcp.NetworkServices.EdgeCacheOrigin(\"default\", new()\n {\n Name = \"my-origin\",\n OriginAddress = \"gs://media-edge-default\",\n Description = \"The default bucket for V4 authentication\",\n AwsV4Authentication = new Gcp.NetworkServices.Inputs.EdgeCacheOriginAwsV4AuthenticationArgs\n {\n AccessKeyId = \"ACCESSKEYID\",\n SecretAccessKeyVersion = secret_version_basic.Id,\n OriginRegion = \"auto\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := secretmanager.NewSecret(ctx, \"secret-basic\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-name\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: \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, \"secret-version-basic\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret_basic.ID(),\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewEdgeCacheOrigin(ctx, \"default\", \u0026networkservices.EdgeCacheOriginArgs{\n\t\t\tName: pulumi.String(\"my-origin\"),\n\t\t\tOriginAddress: pulumi.String(\"gs://media-edge-default\"),\n\t\t\tDescription: pulumi.String(\"The default bucket for V4 authentication\"),\n\t\t\tAwsV4Authentication: \u0026networkservices.EdgeCacheOriginAwsV4AuthenticationArgs{\n\t\t\t\tAccessKeyId: pulumi.String(\"ACCESSKEYID\"),\n\t\t\t\tSecretAccessKeyVersion: secret_version_basic.ID(),\n\t\t\t\tOriginRegion: pulumi.String(\"auto\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheOrigin;\nimport com.pulumi.gcp.networkservices.EdgeCacheOriginArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheOriginAwsV4AuthenticationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var secret_basic = new Secret(\"secret-basic\", SecretArgs.builder()\n .secretId(\"secret-name\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var secret_version_basic = new SecretVersion(\"secret-version-basic\", SecretVersionArgs.builder()\n .secret(secret_basic.id())\n .secretData(\"secret-data\")\n .build());\n\n var default_ = new EdgeCacheOrigin(\"default\", EdgeCacheOriginArgs.builder()\n .name(\"my-origin\")\n .originAddress(\"gs://media-edge-default\")\n .description(\"The default bucket for V4 authentication\")\n .awsV4Authentication(EdgeCacheOriginAwsV4AuthenticationArgs.builder()\n .accessKeyId(\"ACCESSKEYID\")\n .secretAccessKeyVersion(secret_version_basic.id())\n .originRegion(\"auto\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-basic:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret-name\n replication:\n auto: {}\n secret-version-basic:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"secret-basic\"].id}\n secretData: secret-data\n default:\n type: gcp:networkservices:EdgeCacheOrigin\n properties:\n name: my-origin\n originAddress: gs://media-edge-default\n description: The default bucket for V4 authentication\n awsV4Authentication:\n accessKeyId: ACCESSKEYID\n secretAccessKeyVersion: ${[\"secret-version-basic\"].id}\n originRegion: auto\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nEdgeCacheOrigin can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/edgeCacheOrigins/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, EdgeCacheOrigin can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkservices/edgeCacheOrigin:EdgeCacheOrigin default projects/{{project}}/locations/global/edgeCacheOrigins/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/edgeCacheOrigin:EdgeCacheOrigin default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/edgeCacheOrigin:EdgeCacheOrigin default {{name}}\n```\n\n", "properties": { "awsV4Authentication": { "$ref": "#/types/gcp:networkservices/EdgeCacheOriginAwsV4Authentication:EdgeCacheOriginAwsV4Authentication", @@ -228413,7 +228413,7 @@ } }, "gcp:networkservices/edgeCacheService:EdgeCacheService": { - "description": "EdgeCacheService defines the IP addresses, protocols, security policies, cache policies and routing configuration.\n\n\n\n\u003e **Warning:** These resources require allow-listing to use, and are not openly available to all Cloud customers. Engage with your Cloud account team to discuss how to onboard.\n\n## Example Usage\n\n### Network Services Edge Cache Service Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dest = new gcp.storage.Bucket(\"dest\", {\n name: \"my-bucket\",\n location: \"US\",\n forceDestroy: true,\n});\nconst instance = new gcp.networkservices.EdgeCacheOrigin(\"instance\", {\n name: \"my-origin\",\n originAddress: dest.url,\n description: \"The default bucket for media edge test\",\n maxAttempts: 2,\n timeout: {\n connectTimeout: \"10s\",\n },\n});\nconst instanceEdgeCacheService = new gcp.networkservices.EdgeCacheService(\"instance\", {\n name: \"my-service\",\n description: \"some description\",\n routing: {\n hostRules: [{\n description: \"host rule description\",\n hosts: [\"sslcert.tf-test.club\"],\n pathMatcher: \"routes\",\n }],\n pathMatchers: [{\n name: \"routes\",\n routeRules: [{\n description: \"a route rule to match against\",\n priority: \"1\",\n matchRules: [{\n prefixMatch: \"/\",\n }],\n origin: instance.name,\n routeAction: {\n cdnPolicy: {\n cacheMode: \"CACHE_ALL_STATIC\",\n defaultTtl: \"3600s\",\n },\n },\n headerAction: {\n responseHeaderToAdds: [{\n headerName: \"x-cache-status\",\n headerValue: \"{cdn_cache_status}\",\n }],\n },\n }],\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndest = gcp.storage.Bucket(\"dest\",\n name=\"my-bucket\",\n location=\"US\",\n force_destroy=True)\ninstance = gcp.networkservices.EdgeCacheOrigin(\"instance\",\n name=\"my-origin\",\n origin_address=dest.url,\n description=\"The default bucket for media edge test\",\n max_attempts=2,\n timeout={\n \"connect_timeout\": \"10s\",\n })\ninstance_edge_cache_service = gcp.networkservices.EdgeCacheService(\"instance\",\n name=\"my-service\",\n description=\"some description\",\n routing={\n \"host_rules\": [{\n \"description\": \"host rule description\",\n \"hosts\": [\"sslcert.tf-test.club\"],\n \"path_matcher\": \"routes\",\n }],\n \"path_matchers\": [{\n \"name\": \"routes\",\n \"route_rules\": [{\n \"description\": \"a route rule to match against\",\n \"priority\": \"1\",\n \"match_rules\": [{\n \"prefix_match\": \"/\",\n }],\n \"origin\": instance.name,\n \"route_action\": {\n \"cdn_policy\": {\n \"cache_mode\": \"CACHE_ALL_STATIC\",\n \"default_ttl\": \"3600s\",\n },\n },\n \"header_action\": {\n \"response_header_to_adds\": [{\n \"header_name\": \"x-cache-status\",\n \"header_value\": \"{cdn_cache_status}\",\n }],\n },\n }],\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var dest = new Gcp.Storage.Bucket(\"dest\", new()\n {\n Name = \"my-bucket\",\n Location = \"US\",\n ForceDestroy = true,\n });\n\n var instance = new Gcp.NetworkServices.EdgeCacheOrigin(\"instance\", new()\n {\n Name = \"my-origin\",\n OriginAddress = dest.Url,\n Description = \"The default bucket for media edge test\",\n MaxAttempts = 2,\n Timeout = new Gcp.NetworkServices.Inputs.EdgeCacheOriginTimeoutArgs\n {\n ConnectTimeout = \"10s\",\n },\n });\n\n var instanceEdgeCacheService = new Gcp.NetworkServices.EdgeCacheService(\"instance\", new()\n {\n Name = \"my-service\",\n Description = \"some description\",\n Routing = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingArgs\n {\n HostRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingHostRuleArgs\n {\n Description = \"host rule description\",\n Hosts = new[]\n {\n \"sslcert.tf-test.club\",\n },\n PathMatcher = \"routes\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherArgs\n {\n Name = \"routes\",\n RouteRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs\n {\n Description = \"a route rule to match against\",\n Priority = \"1\",\n MatchRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n PrefixMatch = \"/\",\n },\n },\n Origin = instance.Name,\n RouteAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs\n {\n CdnPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs\n {\n CacheMode = \"CACHE_ALL_STATIC\",\n DefaultTtl = \"3600s\",\n },\n },\n HeaderAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs\n {\n ResponseHeaderToAdds = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs\n {\n HeaderName = \"x-cache-status\",\n HeaderValue = \"{cdn_cache_status}\",\n },\n },\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdest, err := storage.NewBucket(ctx, \"dest\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"my-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance, err := networkservices.NewEdgeCacheOrigin(ctx, \"instance\", \u0026networkservices.EdgeCacheOriginArgs{\n\t\t\tName: pulumi.String(\"my-origin\"),\n\t\t\tOriginAddress: dest.Url,\n\t\t\tDescription: pulumi.String(\"The default bucket for media edge test\"),\n\t\t\tMaxAttempts: pulumi.Int(2),\n\t\t\tTimeout: \u0026networkservices.EdgeCacheOriginTimeoutArgs{\n\t\t\t\tConnectTimeout: pulumi.String(\"10s\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewEdgeCacheService(ctx, \"instance\", \u0026networkservices.EdgeCacheServiceArgs{\n\t\t\tName: pulumi.String(\"my-service\"),\n\t\t\tDescription: pulumi.String(\"some description\"),\n\t\t\tRouting: \u0026networkservices.EdgeCacheServiceRoutingArgs{\n\t\t\t\tHostRules: networkservices.EdgeCacheServiceRoutingHostRuleArray{\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingHostRuleArgs{\n\t\t\t\t\t\tDescription: pulumi.String(\"host rule description\"),\n\t\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"sslcert.tf-test.club\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathMatcher: pulumi.String(\"routes\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPathMatchers: networkservices.EdgeCacheServiceRoutingPathMatcherArray{\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherArgs{\n\t\t\t\t\t\tName: pulumi.String(\"routes\"),\n\t\t\t\t\t\tRouteRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"a route rule to match against\"),\n\t\t\t\t\t\t\t\tPriority: pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\tMatchRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tPrefixMatch: pulumi.String(\"/\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tOrigin: instance.Name,\n\t\t\t\t\t\t\t\tRouteAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\t\tCdnPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tCacheMode: pulumi.String(\"CACHE_ALL_STATIC\"),\n\t\t\t\t\t\t\t\t\t\tDefaultTtl: pulumi.String(\"3600s\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tHeaderAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs{\n\t\t\t\t\t\t\t\t\tResponseHeaderToAdds: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArray{\n\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"x-cache-status\"),\n\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"{cdn_cache_status}\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheOrigin;\nimport com.pulumi.gcp.networkservices.EdgeCacheOriginArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheOriginTimeoutArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheService;\nimport com.pulumi.gcp.networkservices.EdgeCacheServiceArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheServiceRoutingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var dest = new Bucket(\"dest\", BucketArgs.builder()\n .name(\"my-bucket\")\n .location(\"US\")\n .forceDestroy(true)\n .build());\n\n var instance = new EdgeCacheOrigin(\"instance\", EdgeCacheOriginArgs.builder()\n .name(\"my-origin\")\n .originAddress(dest.url())\n .description(\"The default bucket for media edge test\")\n .maxAttempts(2)\n .timeout(EdgeCacheOriginTimeoutArgs.builder()\n .connectTimeout(\"10s\")\n .build())\n .build());\n\n var instanceEdgeCacheService = new EdgeCacheService(\"instanceEdgeCacheService\", EdgeCacheServiceArgs.builder()\n .name(\"my-service\")\n .description(\"some description\")\n .routing(EdgeCacheServiceRoutingArgs.builder()\n .hostRules(EdgeCacheServiceRoutingHostRuleArgs.builder()\n .description(\"host rule description\")\n .hosts(\"sslcert.tf-test.club\")\n .pathMatcher(\"routes\")\n .build())\n .pathMatchers(EdgeCacheServiceRoutingPathMatcherArgs.builder()\n .name(\"routes\")\n .routeRules(EdgeCacheServiceRoutingPathMatcherRouteRuleArgs.builder()\n .description(\"a route rule to match against\")\n .priority(1)\n .matchRules(EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .prefixMatch(\"/\")\n .build())\n .origin(instance.name())\n .routeAction(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs.builder()\n .cdnPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs.builder()\n .cacheMode(\"CACHE_ALL_STATIC\")\n .defaultTtl(\"3600s\")\n .build())\n .build())\n .headerAction(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs.builder()\n .responseHeaderToAdds(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs.builder()\n .headerName(\"x-cache-status\")\n .headerValue(\"{cdn_cache_status}\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dest:\n type: gcp:storage:Bucket\n properties:\n name: my-bucket\n location: US\n forceDestroy: true\n instance:\n type: gcp:networkservices:EdgeCacheOrigin\n properties:\n name: my-origin\n originAddress: ${dest.url}\n description: The default bucket for media edge test\n maxAttempts: 2\n timeout:\n connectTimeout: 10s\n instanceEdgeCacheService:\n type: gcp:networkservices:EdgeCacheService\n name: instance\n properties:\n name: my-service\n description: some description\n routing:\n hostRules:\n - description: host rule description\n hosts:\n - sslcert.tf-test.club\n pathMatcher: routes\n pathMatchers:\n - name: routes\n routeRules:\n - description: a route rule to match against\n priority: 1\n matchRules:\n - prefixMatch: /\n origin: ${instance.name}\n routeAction:\n cdnPolicy:\n cacheMode: CACHE_ALL_STATIC\n defaultTtl: 3600s\n headerAction:\n responseHeaderToAdds:\n - headerName: x-cache-status\n headerValue: '{cdn_cache_status}'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Edge Cache Service Advanced\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dest = new gcp.storage.Bucket(\"dest\", {\n name: \"my-bucket\",\n location: \"US\",\n forceDestroy: true,\n});\nconst google = new gcp.networkservices.EdgeCacheOrigin(\"google\", {\n name: \"origin-google\",\n originAddress: \"google.com\",\n description: \"The default bucket for media edge test\",\n maxAttempts: 2,\n timeout: {\n connectTimeout: \"10s\",\n },\n});\nconst instance = new gcp.networkservices.EdgeCacheOrigin(\"instance\", {\n name: \"my-origin\",\n originAddress: dest.url,\n description: \"The default bucket for media edge test\",\n maxAttempts: 2,\n timeout: {\n connectTimeout: \"10s\",\n },\n});\nconst instanceEdgeCacheService = new gcp.networkservices.EdgeCacheService(\"instance\", {\n name: \"my-service\",\n description: \"some description\",\n disableQuic: true,\n disableHttp2: true,\n labels: {\n a: \"b\",\n },\n routing: {\n hostRules: [\n {\n description: \"host rule description\",\n hosts: [\"sslcert.tf-test.club\"],\n pathMatcher: \"routes\",\n },\n {\n description: \"host rule2\",\n hosts: [\"sslcert.tf-test2.club\"],\n pathMatcher: \"routes\",\n },\n {\n description: \"host rule3\",\n hosts: [\"sslcert.tf-test3.club\"],\n pathMatcher: \"routesAdvanced\",\n },\n ],\n pathMatchers: [\n {\n name: \"routes\",\n routeRules: [{\n description: \"a route rule to match against\",\n priority: \"1\",\n matchRules: [{\n prefixMatch: \"/\",\n }],\n origin: instance.name,\n routeAction: {\n cdnPolicy: {\n cacheMode: \"CACHE_ALL_STATIC\",\n defaultTtl: \"3600s\",\n },\n },\n headerAction: {\n responseHeaderToAdds: [{\n headerName: \"x-cache-status\",\n headerValue: \"{cdn_cache_status}\",\n }],\n },\n }],\n },\n {\n name: \"routesAdvanced\",\n description: \"an advanced ruleset\",\n routeRules: [\n {\n description: \"an advanced route rule to match against\",\n priority: \"1\",\n matchRules: [\n {\n prefixMatch: \"/potato/\",\n queryParameterMatches: [\n {\n name: \"debug\",\n presentMatch: true,\n },\n {\n name: \"state\",\n exactMatch: \"debug\",\n },\n ],\n },\n {\n fullPathMatch: \"/apple\",\n },\n ],\n headerAction: {\n requestHeaderToAdds: [\n {\n headerName: \"debug\",\n headerValue: \"true\",\n replace: true,\n },\n {\n headerName: \"potato\",\n headerValue: \"plant\",\n },\n ],\n responseHeaderToAdds: [{\n headerName: \"potato\",\n headerValue: \"plant\",\n replace: true,\n }],\n requestHeaderToRemoves: [{\n headerName: \"prod\",\n }],\n responseHeaderToRemoves: [{\n headerName: \"prod\",\n }],\n },\n origin: instance.name,\n routeAction: {\n cdnPolicy: {\n cacheMode: \"CACHE_ALL_STATIC\",\n defaultTtl: \"3800s\",\n clientTtl: \"3600s\",\n maxTtl: \"9000s\",\n cacheKeyPolicy: {\n includeProtocol: true,\n excludeHost: true,\n includedQueryParameters: [\n \"apple\",\n \"dev\",\n \"santa\",\n \"claus\",\n ],\n includedHeaderNames: [\"banana\"],\n includedCookieNames: [\"orange\"],\n },\n negativeCaching: true,\n signedRequestMode: \"DISABLED\",\n negativeCachingPolicy: {\n \"500\": \"3000s\",\n },\n },\n urlRewrite: {\n pathPrefixRewrite: \"/dev\",\n hostRewrite: \"dev.club\",\n },\n corsPolicy: {\n maxAge: \"2500s\",\n allowCredentials: true,\n allowOrigins: [\"*\"],\n allowMethods: [\"GET\"],\n allowHeaders: [\"dev\"],\n exposeHeaders: [\"prod\"],\n },\n },\n },\n {\n description: \"a second route rule to match against\",\n priority: \"2\",\n matchRules: [{\n fullPathMatch: \"/yay\",\n }],\n origin: instance.name,\n routeAction: {\n cdnPolicy: {\n cacheMode: \"CACHE_ALL_STATIC\",\n defaultTtl: \"3600s\",\n cacheKeyPolicy: {\n excludedQueryParameters: [\"dev\"],\n },\n },\n corsPolicy: {\n maxAge: \"3000s\",\n allowHeaders: [\"dev\"],\n disabled: true,\n },\n },\n },\n ],\n },\n ],\n },\n logConfig: {\n enable: true,\n sampleRate: 0.01,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndest = gcp.storage.Bucket(\"dest\",\n name=\"my-bucket\",\n location=\"US\",\n force_destroy=True)\ngoogle = gcp.networkservices.EdgeCacheOrigin(\"google\",\n name=\"origin-google\",\n origin_address=\"google.com\",\n description=\"The default bucket for media edge test\",\n max_attempts=2,\n timeout={\n \"connect_timeout\": \"10s\",\n })\ninstance = gcp.networkservices.EdgeCacheOrigin(\"instance\",\n name=\"my-origin\",\n origin_address=dest.url,\n description=\"The default bucket for media edge test\",\n max_attempts=2,\n timeout={\n \"connect_timeout\": \"10s\",\n })\ninstance_edge_cache_service = gcp.networkservices.EdgeCacheService(\"instance\",\n name=\"my-service\",\n description=\"some description\",\n disable_quic=True,\n disable_http2=True,\n labels={\n \"a\": \"b\",\n },\n routing={\n \"host_rules\": [\n {\n \"description\": \"host rule description\",\n \"hosts\": [\"sslcert.tf-test.club\"],\n \"path_matcher\": \"routes\",\n },\n {\n \"description\": \"host rule2\",\n \"hosts\": [\"sslcert.tf-test2.club\"],\n \"path_matcher\": \"routes\",\n },\n {\n \"description\": \"host rule3\",\n \"hosts\": [\"sslcert.tf-test3.club\"],\n \"path_matcher\": \"routesAdvanced\",\n },\n ],\n \"path_matchers\": [\n {\n \"name\": \"routes\",\n \"route_rules\": [{\n \"description\": \"a route rule to match against\",\n \"priority\": \"1\",\n \"match_rules\": [{\n \"prefix_match\": \"/\",\n }],\n \"origin\": instance.name,\n \"route_action\": {\n \"cdn_policy\": {\n \"cache_mode\": \"CACHE_ALL_STATIC\",\n \"default_ttl\": \"3600s\",\n },\n },\n \"header_action\": {\n \"response_header_to_adds\": [{\n \"header_name\": \"x-cache-status\",\n \"header_value\": \"{cdn_cache_status}\",\n }],\n },\n }],\n },\n {\n \"name\": \"routesAdvanced\",\n \"description\": \"an advanced ruleset\",\n \"route_rules\": [\n {\n \"description\": \"an advanced route rule to match against\",\n \"priority\": \"1\",\n \"match_rules\": [\n {\n \"prefix_match\": \"/potato/\",\n \"query_parameter_matches\": [\n {\n \"name\": \"debug\",\n \"present_match\": True,\n },\n {\n \"name\": \"state\",\n \"exact_match\": \"debug\",\n },\n ],\n },\n {\n \"full_path_match\": \"/apple\",\n },\n ],\n \"header_action\": {\n \"request_header_to_adds\": [\n {\n \"header_name\": \"debug\",\n \"header_value\": \"true\",\n \"replace\": True,\n },\n {\n \"header_name\": \"potato\",\n \"header_value\": \"plant\",\n },\n ],\n \"response_header_to_adds\": [{\n \"header_name\": \"potato\",\n \"header_value\": \"plant\",\n \"replace\": True,\n }],\n \"request_header_to_removes\": [{\n \"header_name\": \"prod\",\n }],\n \"response_header_to_removes\": [{\n \"header_name\": \"prod\",\n }],\n },\n \"origin\": instance.name,\n \"route_action\": {\n \"cdn_policy\": {\n \"cache_mode\": \"CACHE_ALL_STATIC\",\n \"default_ttl\": \"3800s\",\n \"client_ttl\": \"3600s\",\n \"max_ttl\": \"9000s\",\n \"cache_key_policy\": {\n \"include_protocol\": True,\n \"exclude_host\": True,\n \"included_query_parameters\": [\n \"apple\",\n \"dev\",\n \"santa\",\n \"claus\",\n ],\n \"included_header_names\": [\"banana\"],\n \"included_cookie_names\": [\"orange\"],\n },\n \"negative_caching\": True,\n \"signed_request_mode\": \"DISABLED\",\n \"negative_caching_policy\": {\n \"_500\": \"3000s\",\n },\n },\n \"url_rewrite\": {\n \"path_prefix_rewrite\": \"/dev\",\n \"host_rewrite\": \"dev.club\",\n },\n \"cors_policy\": {\n \"max_age\": \"2500s\",\n \"allow_credentials\": True,\n \"allow_origins\": [\"*\"],\n \"allow_methods\": [\"GET\"],\n \"allow_headers\": [\"dev\"],\n \"expose_headers\": [\"prod\"],\n },\n },\n },\n {\n \"description\": \"a second route rule to match against\",\n \"priority\": \"2\",\n \"match_rules\": [{\n \"full_path_match\": \"/yay\",\n }],\n \"origin\": instance.name,\n \"route_action\": {\n \"cdn_policy\": {\n \"cache_mode\": \"CACHE_ALL_STATIC\",\n \"default_ttl\": \"3600s\",\n \"cache_key_policy\": {\n \"excluded_query_parameters\": [\"dev\"],\n },\n },\n \"cors_policy\": {\n \"max_age\": \"3000s\",\n \"allow_headers\": [\"dev\"],\n \"disabled\": True,\n },\n },\n },\n ],\n },\n ],\n },\n log_config={\n \"enable\": True,\n \"sample_rate\": 0.01,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var dest = new Gcp.Storage.Bucket(\"dest\", new()\n {\n Name = \"my-bucket\",\n Location = \"US\",\n ForceDestroy = true,\n });\n\n var google = new Gcp.NetworkServices.EdgeCacheOrigin(\"google\", new()\n {\n Name = \"origin-google\",\n OriginAddress = \"google.com\",\n Description = \"The default bucket for media edge test\",\n MaxAttempts = 2,\n Timeout = new Gcp.NetworkServices.Inputs.EdgeCacheOriginTimeoutArgs\n {\n ConnectTimeout = \"10s\",\n },\n });\n\n var instance = new Gcp.NetworkServices.EdgeCacheOrigin(\"instance\", new()\n {\n Name = \"my-origin\",\n OriginAddress = dest.Url,\n Description = \"The default bucket for media edge test\",\n MaxAttempts = 2,\n Timeout = new Gcp.NetworkServices.Inputs.EdgeCacheOriginTimeoutArgs\n {\n ConnectTimeout = \"10s\",\n },\n });\n\n var instanceEdgeCacheService = new Gcp.NetworkServices.EdgeCacheService(\"instance\", new()\n {\n Name = \"my-service\",\n Description = \"some description\",\n DisableQuic = true,\n DisableHttp2 = true,\n Labels = \n {\n { \"a\", \"b\" },\n },\n Routing = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingArgs\n {\n HostRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingHostRuleArgs\n {\n Description = \"host rule description\",\n Hosts = new[]\n {\n \"sslcert.tf-test.club\",\n },\n PathMatcher = \"routes\",\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingHostRuleArgs\n {\n Description = \"host rule2\",\n Hosts = new[]\n {\n \"sslcert.tf-test2.club\",\n },\n PathMatcher = \"routes\",\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingHostRuleArgs\n {\n Description = \"host rule3\",\n Hosts = new[]\n {\n \"sslcert.tf-test3.club\",\n },\n PathMatcher = \"routesAdvanced\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherArgs\n {\n Name = \"routes\",\n RouteRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs\n {\n Description = \"a route rule to match against\",\n Priority = \"1\",\n MatchRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n PrefixMatch = \"/\",\n },\n },\n Origin = instance.Name,\n RouteAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs\n {\n CdnPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs\n {\n CacheMode = \"CACHE_ALL_STATIC\",\n DefaultTtl = \"3600s\",\n },\n },\n HeaderAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs\n {\n ResponseHeaderToAdds = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs\n {\n HeaderName = \"x-cache-status\",\n HeaderValue = \"{cdn_cache_status}\",\n },\n },\n },\n },\n },\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherArgs\n {\n Name = \"routesAdvanced\",\n Description = \"an advanced ruleset\",\n RouteRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs\n {\n Description = \"an advanced route rule to match against\",\n Priority = \"1\",\n MatchRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n PrefixMatch = \"/potato/\",\n QueryParameterMatches = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs\n {\n Name = \"debug\",\n PresentMatch = true,\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs\n {\n Name = \"state\",\n ExactMatch = \"debug\",\n },\n },\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n FullPathMatch = \"/apple\",\n },\n },\n HeaderAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs\n {\n RequestHeaderToAdds = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToAddArgs\n {\n HeaderName = \"debug\",\n HeaderValue = \"true\",\n Replace = true,\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToAddArgs\n {\n HeaderName = \"potato\",\n HeaderValue = \"plant\",\n },\n },\n ResponseHeaderToAdds = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs\n {\n HeaderName = \"potato\",\n HeaderValue = \"plant\",\n Replace = true,\n },\n },\n RequestHeaderToRemoves = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToRemoveArgs\n {\n HeaderName = \"prod\",\n },\n },\n ResponseHeaderToRemoves = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToRemoveArgs\n {\n HeaderName = \"prod\",\n },\n },\n },\n Origin = instance.Name,\n RouteAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs\n {\n CdnPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs\n {\n CacheMode = \"CACHE_ALL_STATIC\",\n DefaultTtl = \"3800s\",\n ClientTtl = \"3600s\",\n MaxTtl = \"9000s\",\n CacheKeyPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyCacheKeyPolicyArgs\n {\n IncludeProtocol = true,\n ExcludeHost = true,\n IncludedQueryParameters = new[]\n {\n \"apple\",\n \"dev\",\n \"santa\",\n \"claus\",\n },\n IncludedHeaderNames = new[]\n {\n \"banana\",\n },\n IncludedCookieNames = new[]\n {\n \"orange\",\n },\n },\n NegativeCaching = true,\n SignedRequestMode = \"DISABLED\",\n NegativeCachingPolicy = \n {\n { \"500\", \"3000s\" },\n },\n },\n UrlRewrite = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionUrlRewriteArgs\n {\n PathPrefixRewrite = \"/dev\",\n HostRewrite = \"dev.club\",\n },\n CorsPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCorsPolicyArgs\n {\n MaxAge = \"2500s\",\n AllowCredentials = true,\n AllowOrigins = new[]\n {\n \"*\",\n },\n AllowMethods = new[]\n {\n \"GET\",\n },\n AllowHeaders = new[]\n {\n \"dev\",\n },\n ExposeHeaders = new[]\n {\n \"prod\",\n },\n },\n },\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs\n {\n Description = \"a second route rule to match against\",\n Priority = \"2\",\n MatchRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n FullPathMatch = \"/yay\",\n },\n },\n Origin = instance.Name,\n RouteAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs\n {\n CdnPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs\n {\n CacheMode = \"CACHE_ALL_STATIC\",\n DefaultTtl = \"3600s\",\n CacheKeyPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyCacheKeyPolicyArgs\n {\n ExcludedQueryParameters = new[]\n {\n \"dev\",\n },\n },\n },\n CorsPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCorsPolicyArgs\n {\n MaxAge = \"3000s\",\n AllowHeaders = new[]\n {\n \"dev\",\n },\n Disabled = true,\n },\n },\n },\n },\n },\n },\n },\n LogConfig = new Gcp.NetworkServices.Inputs.EdgeCacheServiceLogConfigArgs\n {\n Enable = true,\n SampleRate = 0.01,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdest, err := storage.NewBucket(ctx, \"dest\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"my-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewEdgeCacheOrigin(ctx, \"google\", \u0026networkservices.EdgeCacheOriginArgs{\n\t\t\tName: pulumi.String(\"origin-google\"),\n\t\t\tOriginAddress: pulumi.String(\"google.com\"),\n\t\t\tDescription: pulumi.String(\"The default bucket for media edge test\"),\n\t\t\tMaxAttempts: pulumi.Int(2),\n\t\t\tTimeout: \u0026networkservices.EdgeCacheOriginTimeoutArgs{\n\t\t\t\tConnectTimeout: pulumi.String(\"10s\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance, err := networkservices.NewEdgeCacheOrigin(ctx, \"instance\", \u0026networkservices.EdgeCacheOriginArgs{\n\t\t\tName: pulumi.String(\"my-origin\"),\n\t\t\tOriginAddress: dest.Url,\n\t\t\tDescription: pulumi.String(\"The default bucket for media edge test\"),\n\t\t\tMaxAttempts: pulumi.Int(2),\n\t\t\tTimeout: \u0026networkservices.EdgeCacheOriginTimeoutArgs{\n\t\t\t\tConnectTimeout: pulumi.String(\"10s\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewEdgeCacheService(ctx, \"instance\", \u0026networkservices.EdgeCacheServiceArgs{\n\t\t\tName: pulumi.String(\"my-service\"),\n\t\t\tDescription: pulumi.String(\"some description\"),\n\t\t\tDisableQuic: pulumi.Bool(true),\n\t\t\tDisableHttp2: pulumi.Bool(true),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"a\": pulumi.String(\"b\"),\n\t\t\t},\n\t\t\tRouting: \u0026networkservices.EdgeCacheServiceRoutingArgs{\n\t\t\t\tHostRules: networkservices.EdgeCacheServiceRoutingHostRuleArray{\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingHostRuleArgs{\n\t\t\t\t\t\tDescription: pulumi.String(\"host rule description\"),\n\t\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"sslcert.tf-test.club\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathMatcher: pulumi.String(\"routes\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingHostRuleArgs{\n\t\t\t\t\t\tDescription: pulumi.String(\"host rule2\"),\n\t\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"sslcert.tf-test2.club\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathMatcher: pulumi.String(\"routes\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingHostRuleArgs{\n\t\t\t\t\t\tDescription: pulumi.String(\"host rule3\"),\n\t\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"sslcert.tf-test3.club\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathMatcher: pulumi.String(\"routesAdvanced\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPathMatchers: networkservices.EdgeCacheServiceRoutingPathMatcherArray{\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherArgs{\n\t\t\t\t\t\tName: pulumi.String(\"routes\"),\n\t\t\t\t\t\tRouteRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"a route rule to match against\"),\n\t\t\t\t\t\t\t\tPriority: pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\tMatchRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tPrefixMatch: pulumi.String(\"/\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tOrigin: instance.Name,\n\t\t\t\t\t\t\t\tRouteAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\t\tCdnPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tCacheMode: pulumi.String(\"CACHE_ALL_STATIC\"),\n\t\t\t\t\t\t\t\t\t\tDefaultTtl: pulumi.String(\"3600s\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tHeaderAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs{\n\t\t\t\t\t\t\t\t\tResponseHeaderToAdds: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArray{\n\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"x-cache-status\"),\n\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"{cdn_cache_status}\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherArgs{\n\t\t\t\t\t\tName: pulumi.String(\"routesAdvanced\"),\n\t\t\t\t\t\tDescription: pulumi.String(\"an advanced ruleset\"),\n\t\t\t\t\t\tRouteRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"an advanced route rule to match against\"),\n\t\t\t\t\t\t\t\tPriority: pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\tMatchRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tPrefixMatch: pulumi.String(\"/potato/\"),\n\t\t\t\t\t\t\t\t\t\tQueryParameterMatches: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleQueryParameterMatchArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"debug\"),\n\t\t\t\t\t\t\t\t\t\t\t\tPresentMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"state\"),\n\t\t\t\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"debug\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tFullPathMatch: pulumi.String(\"/apple\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tHeaderAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs{\n\t\t\t\t\t\t\t\t\tRequestHeaderToAdds: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToAddArray{\n\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"debug\"),\n\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"true\"),\n\t\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"potato\"),\n\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"plant\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tResponseHeaderToAdds: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArray{\n\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"potato\"),\n\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"plant\"),\n\t\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tRequestHeaderToRemoves: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToRemoveArray{\n\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToRemoveArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"prod\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tResponseHeaderToRemoves: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToRemoveArray{\n\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToRemoveArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"prod\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tOrigin: instance.Name,\n\t\t\t\t\t\t\t\tRouteAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\t\tCdnPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tCacheMode: pulumi.String(\"CACHE_ALL_STATIC\"),\n\t\t\t\t\t\t\t\t\t\tDefaultTtl: pulumi.String(\"3800s\"),\n\t\t\t\t\t\t\t\t\t\tClientTtl: pulumi.String(\"3600s\"),\n\t\t\t\t\t\t\t\t\t\tMaxTtl: pulumi.String(\"9000s\"),\n\t\t\t\t\t\t\t\t\t\tCacheKeyPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyCacheKeyPolicyArgs{\n\t\t\t\t\t\t\t\t\t\t\tIncludeProtocol: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t\tExcludeHost: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t\tIncludedQueryParameters: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"apple\"),\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"dev\"),\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"santa\"),\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"claus\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tIncludedHeaderNames: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"banana\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tIncludedCookieNames: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"orange\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tNegativeCaching: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\tSignedRequestMode: pulumi.String(\"DISABLED\"),\n\t\t\t\t\t\t\t\t\t\tNegativeCachingPolicy: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\t\t\t\"500\": pulumi.String(\"3000s\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tUrlRewrite: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionUrlRewriteArgs{\n\t\t\t\t\t\t\t\t\t\tPathPrefixRewrite: pulumi.String(\"/dev\"),\n\t\t\t\t\t\t\t\t\t\tHostRewrite: pulumi.String(\"dev.club\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tCorsPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCorsPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tMaxAge: pulumi.String(\"2500s\"),\n\t\t\t\t\t\t\t\t\t\tAllowCredentials: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\tAllowOrigins: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"*\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tAllowMethods: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"GET\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tAllowHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"dev\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tExposeHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"prod\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"a second route rule to match against\"),\n\t\t\t\t\t\t\t\tPriority: pulumi.String(\"2\"),\n\t\t\t\t\t\t\t\tMatchRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tFullPathMatch: pulumi.String(\"/yay\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tOrigin: instance.Name,\n\t\t\t\t\t\t\t\tRouteAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\t\tCdnPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tCacheMode: pulumi.String(\"CACHE_ALL_STATIC\"),\n\t\t\t\t\t\t\t\t\t\tDefaultTtl: pulumi.String(\"3600s\"),\n\t\t\t\t\t\t\t\t\t\tCacheKeyPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyCacheKeyPolicyArgs{\n\t\t\t\t\t\t\t\t\t\t\tExcludedQueryParameters: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"dev\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tCorsPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCorsPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tMaxAge: pulumi.String(\"3000s\"),\n\t\t\t\t\t\t\t\t\t\tAllowHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"dev\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tDisabled: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLogConfig: \u0026networkservices.EdgeCacheServiceLogConfigArgs{\n\t\t\t\tEnable: pulumi.Bool(true),\n\t\t\t\tSampleRate: pulumi.Float64(0.01),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheOrigin;\nimport com.pulumi.gcp.networkservices.EdgeCacheOriginArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheOriginTimeoutArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheService;\nimport com.pulumi.gcp.networkservices.EdgeCacheServiceArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheServiceRoutingArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheServiceLogConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var dest = new Bucket(\"dest\", BucketArgs.builder()\n .name(\"my-bucket\")\n .location(\"US\")\n .forceDestroy(true)\n .build());\n\n var google = new EdgeCacheOrigin(\"google\", EdgeCacheOriginArgs.builder()\n .name(\"origin-google\")\n .originAddress(\"google.com\")\n .description(\"The default bucket for media edge test\")\n .maxAttempts(2)\n .timeout(EdgeCacheOriginTimeoutArgs.builder()\n .connectTimeout(\"10s\")\n .build())\n .build());\n\n var instance = new EdgeCacheOrigin(\"instance\", EdgeCacheOriginArgs.builder()\n .name(\"my-origin\")\n .originAddress(dest.url())\n .description(\"The default bucket for media edge test\")\n .maxAttempts(2)\n .timeout(EdgeCacheOriginTimeoutArgs.builder()\n .connectTimeout(\"10s\")\n .build())\n .build());\n\n var instanceEdgeCacheService = new EdgeCacheService(\"instanceEdgeCacheService\", EdgeCacheServiceArgs.builder()\n .name(\"my-service\")\n .description(\"some description\")\n .disableQuic(true)\n .disableHttp2(true)\n .labels(Map.of(\"a\", \"b\"))\n .routing(EdgeCacheServiceRoutingArgs.builder()\n .hostRules( \n EdgeCacheServiceRoutingHostRuleArgs.builder()\n .description(\"host rule description\")\n .hosts(\"sslcert.tf-test.club\")\n .pathMatcher(\"routes\")\n .build(),\n EdgeCacheServiceRoutingHostRuleArgs.builder()\n .description(\"host rule2\")\n .hosts(\"sslcert.tf-test2.club\")\n .pathMatcher(\"routes\")\n .build(),\n EdgeCacheServiceRoutingHostRuleArgs.builder()\n .description(\"host rule3\")\n .hosts(\"sslcert.tf-test3.club\")\n .pathMatcher(\"routesAdvanced\")\n .build())\n .pathMatchers( \n EdgeCacheServiceRoutingPathMatcherArgs.builder()\n .name(\"routes\")\n .routeRules(EdgeCacheServiceRoutingPathMatcherRouteRuleArgs.builder()\n .description(\"a route rule to match against\")\n .priority(1)\n .matchRules(EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .prefixMatch(\"/\")\n .build())\n .origin(instance.name())\n .routeAction(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs.builder()\n .cdnPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs.builder()\n .cacheMode(\"CACHE_ALL_STATIC\")\n .defaultTtl(\"3600s\")\n .build())\n .build())\n .headerAction(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs.builder()\n .responseHeaderToAdds(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs.builder()\n .headerName(\"x-cache-status\")\n .headerValue(\"{cdn_cache_status}\")\n .build())\n .build())\n .build())\n .build(),\n EdgeCacheServiceRoutingPathMatcherArgs.builder()\n .name(\"routesAdvanced\")\n .description(\"an advanced ruleset\")\n .routeRules( \n EdgeCacheServiceRoutingPathMatcherRouteRuleArgs.builder()\n .description(\"an advanced route rule to match against\")\n .priority(1)\n .matchRules( \n EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .prefixMatch(\"/potato/\")\n .queryParameterMatches( \n EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs.builder()\n .name(\"debug\")\n .presentMatch(true)\n .build(),\n EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs.builder()\n .name(\"state\")\n .exactMatch(\"debug\")\n .build())\n .build(),\n EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .fullPathMatch(\"/apple\")\n .build())\n .headerAction(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs.builder()\n .requestHeaderToAdds( \n EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToAddArgs.builder()\n .headerName(\"debug\")\n .headerValue(\"true\")\n .replace(true)\n .build(),\n EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToAddArgs.builder()\n .headerName(\"potato\")\n .headerValue(\"plant\")\n .build())\n .responseHeaderToAdds(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs.builder()\n .headerName(\"potato\")\n .headerValue(\"plant\")\n .replace(true)\n .build())\n .requestHeaderToRemoves(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToRemoveArgs.builder()\n .headerName(\"prod\")\n .build())\n .responseHeaderToRemoves(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToRemoveArgs.builder()\n .headerName(\"prod\")\n .build())\n .build())\n .origin(instance.name())\n .routeAction(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs.builder()\n .cdnPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs.builder()\n .cacheMode(\"CACHE_ALL_STATIC\")\n .defaultTtl(\"3800s\")\n .clientTtl(\"3600s\")\n .maxTtl(\"9000s\")\n .cacheKeyPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyCacheKeyPolicyArgs.builder()\n .includeProtocol(true)\n .excludeHost(true)\n .includedQueryParameters( \n \"apple\",\n \"dev\",\n \"santa\",\n \"claus\")\n .includedHeaderNames(\"banana\")\n .includedCookieNames(\"orange\")\n .build())\n .negativeCaching(true)\n .signedRequestMode(\"DISABLED\")\n .negativeCachingPolicy(Map.of(\"500\", \"3000s\"))\n .build())\n .urlRewrite(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionUrlRewriteArgs.builder()\n .pathPrefixRewrite(\"/dev\")\n .hostRewrite(\"dev.club\")\n .build())\n .corsPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCorsPolicyArgs.builder()\n .maxAge(\"2500s\")\n .allowCredentials(true)\n .allowOrigins(\"*\")\n .allowMethods(\"GET\")\n .allowHeaders(\"dev\")\n .exposeHeaders(\"prod\")\n .build())\n .build())\n .build(),\n EdgeCacheServiceRoutingPathMatcherRouteRuleArgs.builder()\n .description(\"a second route rule to match against\")\n .priority(2)\n .matchRules(EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .fullPathMatch(\"/yay\")\n .build())\n .origin(instance.name())\n .routeAction(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs.builder()\n .cdnPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs.builder()\n .cacheMode(\"CACHE_ALL_STATIC\")\n .defaultTtl(\"3600s\")\n .cacheKeyPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyCacheKeyPolicyArgs.builder()\n .excludedQueryParameters(\"dev\")\n .build())\n .build())\n .corsPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCorsPolicyArgs.builder()\n .maxAge(\"3000s\")\n .allowHeaders(\"dev\")\n .disabled(true)\n .build())\n .build())\n .build())\n .build())\n .build())\n .logConfig(EdgeCacheServiceLogConfigArgs.builder()\n .enable(true)\n .sampleRate(0.01)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dest:\n type: gcp:storage:Bucket\n properties:\n name: my-bucket\n location: US\n forceDestroy: true\n google:\n type: gcp:networkservices:EdgeCacheOrigin\n properties:\n name: origin-google\n originAddress: google.com\n description: The default bucket for media edge test\n maxAttempts: 2\n timeout:\n connectTimeout: 10s\n instance:\n type: gcp:networkservices:EdgeCacheOrigin\n properties:\n name: my-origin\n originAddress: ${dest.url}\n description: The default bucket for media edge test\n maxAttempts: 2\n timeout:\n connectTimeout: 10s\n instanceEdgeCacheService:\n type: gcp:networkservices:EdgeCacheService\n name: instance\n properties:\n name: my-service\n description: some description\n disableQuic: true\n disableHttp2: true\n labels:\n a: b\n routing:\n hostRules:\n - description: host rule description\n hosts:\n - sslcert.tf-test.club\n pathMatcher: routes\n - description: host rule2\n hosts:\n - sslcert.tf-test2.club\n pathMatcher: routes\n - description: host rule3\n hosts:\n - sslcert.tf-test3.club\n pathMatcher: routesAdvanced\n pathMatchers:\n - name: routes\n routeRules:\n - description: a route rule to match against\n priority: 1\n matchRules:\n - prefixMatch: /\n origin: ${instance.name}\n routeAction:\n cdnPolicy:\n cacheMode: CACHE_ALL_STATIC\n defaultTtl: 3600s\n headerAction:\n responseHeaderToAdds:\n - headerName: x-cache-status\n headerValue: '{cdn_cache_status}'\n - name: routesAdvanced\n description: an advanced ruleset\n routeRules:\n - description: an advanced route rule to match against\n priority: 1\n matchRules:\n - prefixMatch: /potato/\n queryParameterMatches:\n - name: debug\n presentMatch: true\n - name: state\n exactMatch: debug\n - fullPathMatch: /apple\n headerAction:\n requestHeaderToAdds:\n - headerName: debug\n headerValue: 'true'\n replace: true\n - headerName: potato\n headerValue: plant\n responseHeaderToAdds:\n - headerName: potato\n headerValue: plant\n replace: true\n requestHeaderToRemoves:\n - headerName: prod\n responseHeaderToRemoves:\n - headerName: prod\n origin: ${instance.name}\n routeAction:\n cdnPolicy:\n cacheMode: CACHE_ALL_STATIC\n defaultTtl: 3800s\n clientTtl: 3600s\n maxTtl: 9000s\n cacheKeyPolicy:\n includeProtocol: true\n excludeHost: true\n includedQueryParameters:\n - apple\n - dev\n - santa\n - claus\n includedHeaderNames:\n - banana\n includedCookieNames:\n - orange\n negativeCaching: true\n signedRequestMode: DISABLED\n negativeCachingPolicy:\n '500': 3000s\n urlRewrite:\n pathPrefixRewrite: /dev\n hostRewrite: dev.club\n corsPolicy:\n maxAge: 2500s\n allowCredentials: true\n allowOrigins:\n - '*'\n allowMethods:\n - GET\n allowHeaders:\n - dev\n exposeHeaders:\n - prod\n - description: a second route rule to match against\n priority: 2\n matchRules:\n - fullPathMatch: /yay\n origin: ${instance.name}\n routeAction:\n cdnPolicy:\n cacheMode: CACHE_ALL_STATIC\n defaultTtl: 3600s\n cacheKeyPolicy:\n excludedQueryParameters:\n - dev\n corsPolicy:\n maxAge: 3000s\n allowHeaders:\n - dev\n disabled: true\n logConfig:\n enable: true\n sampleRate: 0.01\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Edge Cache Service Dual Token\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret_basic = new gcp.secretmanager.Secret(\"secret-basic\", {\n secretId: \"secret-name\",\n replication: {\n auto: {},\n },\n});\nconst secret_version_basic = new gcp.secretmanager.SecretVersion(\"secret-version-basic\", {\n secret: secret_basic.id,\n secretData: \"secret-data\",\n});\nconst keyset = new gcp.networkservices.EdgeCacheKeyset(\"keyset\", {\n name: \"keyset-name\",\n description: \"The default keyset\",\n publicKeys: [{\n id: \"my-public-key\",\n managed: true,\n }],\n validationSharedKeys: [{\n secretVersion: secret_version_basic.id,\n }],\n});\nconst instance = new gcp.networkservices.EdgeCacheOrigin(\"instance\", {\n name: \"my-origin\",\n originAddress: \"gs://media-edge-default\",\n description: \"The default bucket for media edge test\",\n});\nconst instanceEdgeCacheService = new gcp.networkservices.EdgeCacheService(\"instance\", {\n name: \"my-service\",\n description: \"some description\",\n routing: {\n hostRules: [{\n description: \"host rule description\",\n hosts: [\"sslcert.tf-test.club\"],\n pathMatcher: \"routes\",\n }],\n pathMatchers: [{\n name: \"routes\",\n routeRules: [\n {\n description: \"a route rule to match against master playlist\",\n priority: \"1\",\n matchRules: [{\n pathTemplateMatch: \"/master.m3u8\",\n }],\n origin: instance.name,\n routeAction: {\n cdnPolicy: {\n signedRequestMode: \"REQUIRE_TOKENS\",\n signedRequestKeyset: keyset.id,\n signedTokenOptions: {\n tokenQueryParameter: \"edge-cache-token\",\n },\n signedRequestMaximumExpirationTtl: \"600s\",\n addSignatures: {\n actions: \"GENERATE_COOKIE\",\n keyset: keyset.id,\n copiedParameters: [\n \"PathGlobs\",\n \"SessionID\",\n ],\n },\n },\n },\n },\n {\n description: \"a route rule to match against all playlists\",\n priority: \"2\",\n matchRules: [{\n pathTemplateMatch: \"/*.m3u8\",\n }],\n origin: instance.name,\n routeAction: {\n cdnPolicy: {\n signedRequestMode: \"REQUIRE_TOKENS\",\n signedRequestKeyset: keyset.id,\n signedTokenOptions: {\n tokenQueryParameter: \"hdnts\",\n allowedSignatureAlgorithms: [\n \"ED25519\",\n \"HMAC_SHA_256\",\n \"HMAC_SHA1\",\n ],\n },\n addSignatures: {\n actions: \"GENERATE_TOKEN_HLS_COOKIELESS\",\n keyset: keyset.id,\n tokenTtl: \"1200s\",\n tokenQueryParameter: \"hdntl\",\n copiedParameters: [\"URLPrefix\"],\n },\n },\n },\n },\n {\n description: \"a route rule to match against\",\n priority: \"3\",\n matchRules: [{\n pathTemplateMatch: \"/**.m3u8\",\n }],\n origin: instance.name,\n routeAction: {\n cdnPolicy: {\n signedRequestMode: \"REQUIRE_TOKENS\",\n signedRequestKeyset: keyset.id,\n signedTokenOptions: {\n tokenQueryParameter: \"hdntl\",\n },\n addSignatures: {\n actions: \"PROPAGATE_TOKEN_HLS_COOKIELESS\",\n tokenQueryParameter: \"hdntl\",\n },\n },\n },\n },\n ],\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret_basic = gcp.secretmanager.Secret(\"secret-basic\",\n secret_id=\"secret-name\",\n replication={\n \"auto\": {},\n })\nsecret_version_basic = gcp.secretmanager.SecretVersion(\"secret-version-basic\",\n secret=secret_basic.id,\n secret_data=\"secret-data\")\nkeyset = gcp.networkservices.EdgeCacheKeyset(\"keyset\",\n name=\"keyset-name\",\n description=\"The default keyset\",\n public_keys=[{\n \"id\": \"my-public-key\",\n \"managed\": True,\n }],\n validation_shared_keys=[{\n \"secret_version\": secret_version_basic.id,\n }])\ninstance = gcp.networkservices.EdgeCacheOrigin(\"instance\",\n name=\"my-origin\",\n origin_address=\"gs://media-edge-default\",\n description=\"The default bucket for media edge test\")\ninstance_edge_cache_service = gcp.networkservices.EdgeCacheService(\"instance\",\n name=\"my-service\",\n description=\"some description\",\n routing={\n \"host_rules\": [{\n \"description\": \"host rule description\",\n \"hosts\": [\"sslcert.tf-test.club\"],\n \"path_matcher\": \"routes\",\n }],\n \"path_matchers\": [{\n \"name\": \"routes\",\n \"route_rules\": [\n {\n \"description\": \"a route rule to match against master playlist\",\n \"priority\": \"1\",\n \"match_rules\": [{\n \"path_template_match\": \"/master.m3u8\",\n }],\n \"origin\": instance.name,\n \"route_action\": {\n \"cdn_policy\": {\n \"signed_request_mode\": \"REQUIRE_TOKENS\",\n \"signed_request_keyset\": keyset.id,\n \"signed_token_options\": {\n \"token_query_parameter\": \"edge-cache-token\",\n },\n \"signed_request_maximum_expiration_ttl\": \"600s\",\n \"add_signatures\": {\n \"actions\": \"GENERATE_COOKIE\",\n \"keyset\": keyset.id,\n \"copied_parameters\": [\n \"PathGlobs\",\n \"SessionID\",\n ],\n },\n },\n },\n },\n {\n \"description\": \"a route rule to match against all playlists\",\n \"priority\": \"2\",\n \"match_rules\": [{\n \"path_template_match\": \"/*.m3u8\",\n }],\n \"origin\": instance.name,\n \"route_action\": {\n \"cdn_policy\": {\n \"signed_request_mode\": \"REQUIRE_TOKENS\",\n \"signed_request_keyset\": keyset.id,\n \"signed_token_options\": {\n \"token_query_parameter\": \"hdnts\",\n \"allowed_signature_algorithms\": [\n \"ED25519\",\n \"HMAC_SHA_256\",\n \"HMAC_SHA1\",\n ],\n },\n \"add_signatures\": {\n \"actions\": \"GENERATE_TOKEN_HLS_COOKIELESS\",\n \"keyset\": keyset.id,\n \"token_ttl\": \"1200s\",\n \"token_query_parameter\": \"hdntl\",\n \"copied_parameters\": [\"URLPrefix\"],\n },\n },\n },\n },\n {\n \"description\": \"a route rule to match against\",\n \"priority\": \"3\",\n \"match_rules\": [{\n \"path_template_match\": \"/**.m3u8\",\n }],\n \"origin\": instance.name,\n \"route_action\": {\n \"cdn_policy\": {\n \"signed_request_mode\": \"REQUIRE_TOKENS\",\n \"signed_request_keyset\": keyset.id,\n \"signed_token_options\": {\n \"token_query_parameter\": \"hdntl\",\n },\n \"add_signatures\": {\n \"actions\": \"PROPAGATE_TOKEN_HLS_COOKIELESS\",\n \"token_query_parameter\": \"hdntl\",\n },\n },\n },\n },\n ],\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var secret_basic = new Gcp.SecretManager.Secret(\"secret-basic\", new()\n {\n SecretId = \"secret-name\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var secret_version_basic = new Gcp.SecretManager.SecretVersion(\"secret-version-basic\", new()\n {\n Secret = secret_basic.Id,\n SecretData = \"secret-data\",\n });\n\n var keyset = new Gcp.NetworkServices.EdgeCacheKeyset(\"keyset\", new()\n {\n Name = \"keyset-name\",\n Description = \"The default keyset\",\n PublicKeys = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheKeysetPublicKeyArgs\n {\n Id = \"my-public-key\",\n Managed = true,\n },\n },\n ValidationSharedKeys = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheKeysetValidationSharedKeyArgs\n {\n SecretVersion = secret_version_basic.Id,\n },\n },\n });\n\n var instance = new Gcp.NetworkServices.EdgeCacheOrigin(\"instance\", new()\n {\n Name = \"my-origin\",\n OriginAddress = \"gs://media-edge-default\",\n Description = \"The default bucket for media edge test\",\n });\n\n var instanceEdgeCacheService = new Gcp.NetworkServices.EdgeCacheService(\"instance\", new()\n {\n Name = \"my-service\",\n Description = \"some description\",\n Routing = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingArgs\n {\n HostRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingHostRuleArgs\n {\n Description = \"host rule description\",\n Hosts = new[]\n {\n \"sslcert.tf-test.club\",\n },\n PathMatcher = \"routes\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherArgs\n {\n Name = \"routes\",\n RouteRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs\n {\n Description = \"a route rule to match against master playlist\",\n Priority = \"1\",\n MatchRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n PathTemplateMatch = \"/master.m3u8\",\n },\n },\n Origin = instance.Name,\n RouteAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs\n {\n CdnPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs\n {\n SignedRequestMode = \"REQUIRE_TOKENS\",\n SignedRequestKeyset = keyset.Id,\n SignedTokenOptions = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs\n {\n TokenQueryParameter = \"edge-cache-token\",\n },\n SignedRequestMaximumExpirationTtl = \"600s\",\n AddSignatures = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs\n {\n Actions = \"GENERATE_COOKIE\",\n Keyset = keyset.Id,\n CopiedParameters = new[]\n {\n \"PathGlobs\",\n \"SessionID\",\n },\n },\n },\n },\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs\n {\n Description = \"a route rule to match against all playlists\",\n Priority = \"2\",\n MatchRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n PathTemplateMatch = \"/*.m3u8\",\n },\n },\n Origin = instance.Name,\n RouteAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs\n {\n CdnPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs\n {\n SignedRequestMode = \"REQUIRE_TOKENS\",\n SignedRequestKeyset = keyset.Id,\n SignedTokenOptions = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs\n {\n TokenQueryParameter = \"hdnts\",\n AllowedSignatureAlgorithms = new[]\n {\n \"ED25519\",\n \"HMAC_SHA_256\",\n \"HMAC_SHA1\",\n },\n },\n AddSignatures = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs\n {\n Actions = \"GENERATE_TOKEN_HLS_COOKIELESS\",\n Keyset = keyset.Id,\n TokenTtl = \"1200s\",\n TokenQueryParameter = \"hdntl\",\n CopiedParameters = new[]\n {\n \"URLPrefix\",\n },\n },\n },\n },\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs\n {\n Description = \"a route rule to match against\",\n Priority = \"3\",\n MatchRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n PathTemplateMatch = \"/**.m3u8\",\n },\n },\n Origin = instance.Name,\n RouteAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs\n {\n CdnPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs\n {\n SignedRequestMode = \"REQUIRE_TOKENS\",\n SignedRequestKeyset = keyset.Id,\n SignedTokenOptions = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs\n {\n TokenQueryParameter = \"hdntl\",\n },\n AddSignatures = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs\n {\n Actions = \"PROPAGATE_TOKEN_HLS_COOKIELESS\",\n TokenQueryParameter = \"hdntl\",\n },\n },\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := secretmanager.NewSecret(ctx, \"secret-basic\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-name\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"secret-version-basic\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret_basic.ID(),\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkeyset, err := networkservices.NewEdgeCacheKeyset(ctx, \"keyset\", \u0026networkservices.EdgeCacheKeysetArgs{\n\t\t\tName: pulumi.String(\"keyset-name\"),\n\t\t\tDescription: pulumi.String(\"The default keyset\"),\n\t\t\tPublicKeys: networkservices.EdgeCacheKeysetPublicKeyArray{\n\t\t\t\t\u0026networkservices.EdgeCacheKeysetPublicKeyArgs{\n\t\t\t\t\tId: pulumi.String(\"my-public-key\"),\n\t\t\t\t\tManaged: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tValidationSharedKeys: networkservices.EdgeCacheKeysetValidationSharedKeyArray{\n\t\t\t\t\u0026networkservices.EdgeCacheKeysetValidationSharedKeyArgs{\n\t\t\t\t\tSecretVersion: secret_version_basic.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance, err := networkservices.NewEdgeCacheOrigin(ctx, \"instance\", \u0026networkservices.EdgeCacheOriginArgs{\n\t\t\tName: pulumi.String(\"my-origin\"),\n\t\t\tOriginAddress: pulumi.String(\"gs://media-edge-default\"),\n\t\t\tDescription: pulumi.String(\"The default bucket for media edge test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewEdgeCacheService(ctx, \"instance\", \u0026networkservices.EdgeCacheServiceArgs{\n\t\t\tName: pulumi.String(\"my-service\"),\n\t\t\tDescription: pulumi.String(\"some description\"),\n\t\t\tRouting: \u0026networkservices.EdgeCacheServiceRoutingArgs{\n\t\t\t\tHostRules: networkservices.EdgeCacheServiceRoutingHostRuleArray{\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingHostRuleArgs{\n\t\t\t\t\t\tDescription: pulumi.String(\"host rule description\"),\n\t\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"sslcert.tf-test.club\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathMatcher: pulumi.String(\"routes\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPathMatchers: networkservices.EdgeCacheServiceRoutingPathMatcherArray{\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherArgs{\n\t\t\t\t\t\tName: pulumi.String(\"routes\"),\n\t\t\t\t\t\tRouteRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"a route rule to match against master playlist\"),\n\t\t\t\t\t\t\t\tPriority: pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\tMatchRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tPathTemplateMatch: pulumi.String(\"/master.m3u8\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tOrigin: instance.Name,\n\t\t\t\t\t\t\t\tRouteAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\t\tCdnPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tSignedRequestMode: pulumi.String(\"REQUIRE_TOKENS\"),\n\t\t\t\t\t\t\t\t\t\tSignedRequestKeyset: keyset.ID(),\n\t\t\t\t\t\t\t\t\t\tSignedTokenOptions: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs{\n\t\t\t\t\t\t\t\t\t\t\tTokenQueryParameter: pulumi.String(\"edge-cache-token\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tSignedRequestMaximumExpirationTtl: pulumi.String(\"600s\"),\n\t\t\t\t\t\t\t\t\t\tAddSignatures: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs{\n\t\t\t\t\t\t\t\t\t\t\tActions: pulumi.String(\"GENERATE_COOKIE\"),\n\t\t\t\t\t\t\t\t\t\t\tKeyset: keyset.ID(),\n\t\t\t\t\t\t\t\t\t\t\tCopiedParameters: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"PathGlobs\"),\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"SessionID\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"a route rule to match against all playlists\"),\n\t\t\t\t\t\t\t\tPriority: pulumi.String(\"2\"),\n\t\t\t\t\t\t\t\tMatchRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tPathTemplateMatch: pulumi.String(\"/*.m3u8\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tOrigin: instance.Name,\n\t\t\t\t\t\t\t\tRouteAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\t\tCdnPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tSignedRequestMode: pulumi.String(\"REQUIRE_TOKENS\"),\n\t\t\t\t\t\t\t\t\t\tSignedRequestKeyset: keyset.ID(),\n\t\t\t\t\t\t\t\t\t\tSignedTokenOptions: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs{\n\t\t\t\t\t\t\t\t\t\t\tTokenQueryParameter: pulumi.String(\"hdnts\"),\n\t\t\t\t\t\t\t\t\t\t\tAllowedSignatureAlgorithms: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"ED25519\"),\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"HMAC_SHA_256\"),\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"HMAC_SHA1\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tAddSignatures: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs{\n\t\t\t\t\t\t\t\t\t\t\tActions: pulumi.String(\"GENERATE_TOKEN_HLS_COOKIELESS\"),\n\t\t\t\t\t\t\t\t\t\t\tKeyset: keyset.ID(),\n\t\t\t\t\t\t\t\t\t\t\tTokenTtl: pulumi.String(\"1200s\"),\n\t\t\t\t\t\t\t\t\t\t\tTokenQueryParameter: pulumi.String(\"hdntl\"),\n\t\t\t\t\t\t\t\t\t\t\tCopiedParameters: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"URLPrefix\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"a route rule to match against\"),\n\t\t\t\t\t\t\t\tPriority: pulumi.String(\"3\"),\n\t\t\t\t\t\t\t\tMatchRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tPathTemplateMatch: pulumi.String(\"/**.m3u8\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tOrigin: instance.Name,\n\t\t\t\t\t\t\t\tRouteAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\t\tCdnPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tSignedRequestMode: pulumi.String(\"REQUIRE_TOKENS\"),\n\t\t\t\t\t\t\t\t\t\tSignedRequestKeyset: keyset.ID(),\n\t\t\t\t\t\t\t\t\t\tSignedTokenOptions: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs{\n\t\t\t\t\t\t\t\t\t\t\tTokenQueryParameter: pulumi.String(\"hdntl\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tAddSignatures: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs{\n\t\t\t\t\t\t\t\t\t\t\tActions: pulumi.String(\"PROPAGATE_TOKEN_HLS_COOKIELESS\"),\n\t\t\t\t\t\t\t\t\t\t\tTokenQueryParameter: pulumi.String(\"hdntl\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheKeyset;\nimport com.pulumi.gcp.networkservices.EdgeCacheKeysetArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheKeysetPublicKeyArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheKeysetValidationSharedKeyArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheOrigin;\nimport com.pulumi.gcp.networkservices.EdgeCacheOriginArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheService;\nimport com.pulumi.gcp.networkservices.EdgeCacheServiceArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheServiceRoutingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var secret_basic = new Secret(\"secret-basic\", SecretArgs.builder()\n .secretId(\"secret-name\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var secret_version_basic = new SecretVersion(\"secret-version-basic\", SecretVersionArgs.builder()\n .secret(secret_basic.id())\n .secretData(\"secret-data\")\n .build());\n\n var keyset = new EdgeCacheKeyset(\"keyset\", EdgeCacheKeysetArgs.builder()\n .name(\"keyset-name\")\n .description(\"The default keyset\")\n .publicKeys(EdgeCacheKeysetPublicKeyArgs.builder()\n .id(\"my-public-key\")\n .managed(true)\n .build())\n .validationSharedKeys(EdgeCacheKeysetValidationSharedKeyArgs.builder()\n .secretVersion(secret_version_basic.id())\n .build())\n .build());\n\n var instance = new EdgeCacheOrigin(\"instance\", EdgeCacheOriginArgs.builder()\n .name(\"my-origin\")\n .originAddress(\"gs://media-edge-default\")\n .description(\"The default bucket for media edge test\")\n .build());\n\n var instanceEdgeCacheService = new EdgeCacheService(\"instanceEdgeCacheService\", EdgeCacheServiceArgs.builder()\n .name(\"my-service\")\n .description(\"some description\")\n .routing(EdgeCacheServiceRoutingArgs.builder()\n .hostRules(EdgeCacheServiceRoutingHostRuleArgs.builder()\n .description(\"host rule description\")\n .hosts(\"sslcert.tf-test.club\")\n .pathMatcher(\"routes\")\n .build())\n .pathMatchers(EdgeCacheServiceRoutingPathMatcherArgs.builder()\n .name(\"routes\")\n .routeRules( \n EdgeCacheServiceRoutingPathMatcherRouteRuleArgs.builder()\n .description(\"a route rule to match against master playlist\")\n .priority(1)\n .matchRules(EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .pathTemplateMatch(\"/master.m3u8\")\n .build())\n .origin(instance.name())\n .routeAction(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs.builder()\n .cdnPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs.builder()\n .signedRequestMode(\"REQUIRE_TOKENS\")\n .signedRequestKeyset(keyset.id())\n .signedTokenOptions(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs.builder()\n .tokenQueryParameter(\"edge-cache-token\")\n .build())\n .signedRequestMaximumExpirationTtl(\"600s\")\n .addSignatures(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs.builder()\n .actions(\"GENERATE_COOKIE\")\n .keyset(keyset.id())\n .copiedParameters( \n \"PathGlobs\",\n \"SessionID\")\n .build())\n .build())\n .build())\n .build(),\n EdgeCacheServiceRoutingPathMatcherRouteRuleArgs.builder()\n .description(\"a route rule to match against all playlists\")\n .priority(2)\n .matchRules(EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .pathTemplateMatch(\"/*.m3u8\")\n .build())\n .origin(instance.name())\n .routeAction(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs.builder()\n .cdnPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs.builder()\n .signedRequestMode(\"REQUIRE_TOKENS\")\n .signedRequestKeyset(keyset.id())\n .signedTokenOptions(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs.builder()\n .tokenQueryParameter(\"hdnts\")\n .allowedSignatureAlgorithms( \n \"ED25519\",\n \"HMAC_SHA_256\",\n \"HMAC_SHA1\")\n .build())\n .addSignatures(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs.builder()\n .actions(\"GENERATE_TOKEN_HLS_COOKIELESS\")\n .keyset(keyset.id())\n .tokenTtl(\"1200s\")\n .tokenQueryParameter(\"hdntl\")\n .copiedParameters(\"URLPrefix\")\n .build())\n .build())\n .build())\n .build(),\n EdgeCacheServiceRoutingPathMatcherRouteRuleArgs.builder()\n .description(\"a route rule to match against\")\n .priority(3)\n .matchRules(EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .pathTemplateMatch(\"/**.m3u8\")\n .build())\n .origin(instance.name())\n .routeAction(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs.builder()\n .cdnPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs.builder()\n .signedRequestMode(\"REQUIRE_TOKENS\")\n .signedRequestKeyset(keyset.id())\n .signedTokenOptions(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs.builder()\n .tokenQueryParameter(\"hdntl\")\n .build())\n .addSignatures(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs.builder()\n .actions(\"PROPAGATE_TOKEN_HLS_COOKIELESS\")\n .tokenQueryParameter(\"hdntl\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-basic:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret-name\n replication:\n auto: {}\n secret-version-basic:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"secret-basic\"].id}\n secretData: secret-data\n keyset:\n type: gcp:networkservices:EdgeCacheKeyset\n properties:\n name: keyset-name\n description: The default keyset\n publicKeys:\n - id: my-public-key\n managed: true\n validationSharedKeys:\n - secretVersion: ${[\"secret-version-basic\"].id}\n instance:\n type: gcp:networkservices:EdgeCacheOrigin\n properties:\n name: my-origin\n originAddress: gs://media-edge-default\n description: The default bucket for media edge test\n instanceEdgeCacheService:\n type: gcp:networkservices:EdgeCacheService\n name: instance\n properties:\n name: my-service\n description: some description\n routing:\n hostRules:\n - description: host rule description\n hosts:\n - sslcert.tf-test.club\n pathMatcher: routes\n pathMatchers:\n - name: routes\n routeRules:\n - description: a route rule to match against master playlist\n priority: 1\n matchRules:\n - pathTemplateMatch: /master.m3u8\n origin: ${instance.name}\n routeAction:\n cdnPolicy:\n signedRequestMode: REQUIRE_TOKENS\n signedRequestKeyset: ${keyset.id}\n signedTokenOptions:\n tokenQueryParameter: edge-cache-token\n signedRequestMaximumExpirationTtl: 600s\n addSignatures:\n actions: GENERATE_COOKIE\n keyset: ${keyset.id}\n copiedParameters:\n - PathGlobs\n - SessionID\n - description: a route rule to match against all playlists\n priority: 2\n matchRules:\n - pathTemplateMatch: /*.m3u8\n origin: ${instance.name}\n routeAction:\n cdnPolicy:\n signedRequestMode: REQUIRE_TOKENS\n signedRequestKeyset: ${keyset.id}\n signedTokenOptions:\n tokenQueryParameter: hdnts\n allowedSignatureAlgorithms:\n - ED25519\n - HMAC_SHA_256\n - HMAC_SHA1\n addSignatures:\n actions: GENERATE_TOKEN_HLS_COOKIELESS\n keyset: ${keyset.id}\n tokenTtl: 1200s\n tokenQueryParameter: hdntl\n copiedParameters:\n - URLPrefix\n - description: a route rule to match against\n priority: 3\n matchRules:\n - pathTemplateMatch: /**.m3u8\n origin: ${instance.name}\n routeAction:\n cdnPolicy:\n signedRequestMode: REQUIRE_TOKENS\n signedRequestKeyset: ${keyset.id}\n signedTokenOptions:\n tokenQueryParameter: hdntl\n addSignatures:\n actions: PROPAGATE_TOKEN_HLS_COOKIELESS\n tokenQueryParameter: hdntl\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nEdgeCacheService can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/edgeCacheServices/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, EdgeCacheService can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkservices/edgeCacheService:EdgeCacheService default projects/{{project}}/locations/global/edgeCacheServices/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/edgeCacheService:EdgeCacheService default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/edgeCacheService:EdgeCacheService default {{name}}\n```\n\n", + "description": "EdgeCacheService defines the IP addresses, protocols, security policies, cache policies and routing configuration.\n\n\n\n\u003e **Warning:** These resources require allow-listing to use, and are not openly available to all Cloud customers. Engage with your Cloud account team to discuss how to onboard.\n\n## Example Usage\n\n### Network Services Edge Cache Service Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dest = new gcp.storage.Bucket(\"dest\", {\n name: \"my-bucket\",\n location: \"US\",\n forceDestroy: true,\n});\nconst instance = new gcp.networkservices.EdgeCacheOrigin(\"instance\", {\n name: \"my-origin\",\n originAddress: dest.url,\n description: \"The default bucket for media edge test\",\n maxAttempts: 2,\n timeout: {\n connectTimeout: \"10s\",\n },\n});\nconst instanceEdgeCacheService = new gcp.networkservices.EdgeCacheService(\"instance\", {\n name: \"my-service\",\n description: \"some description\",\n routing: {\n hostRules: [{\n description: \"host rule description\",\n hosts: [\"sslcert.tf-test.club\"],\n pathMatcher: \"routes\",\n }],\n pathMatchers: [{\n name: \"routes\",\n routeRules: [{\n description: \"a route rule to match against\",\n priority: \"1\",\n matchRules: [{\n prefixMatch: \"/\",\n }],\n origin: instance.name,\n routeAction: {\n cdnPolicy: {\n cacheMode: \"CACHE_ALL_STATIC\",\n defaultTtl: \"3600s\",\n },\n },\n headerAction: {\n responseHeaderToAdds: [{\n headerName: \"x-cache-status\",\n headerValue: \"{cdn_cache_status}\",\n }],\n },\n }],\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndest = gcp.storage.Bucket(\"dest\",\n name=\"my-bucket\",\n location=\"US\",\n force_destroy=True)\ninstance = gcp.networkservices.EdgeCacheOrigin(\"instance\",\n name=\"my-origin\",\n origin_address=dest.url,\n description=\"The default bucket for media edge test\",\n max_attempts=2,\n timeout={\n \"connect_timeout\": \"10s\",\n })\ninstance_edge_cache_service = gcp.networkservices.EdgeCacheService(\"instance\",\n name=\"my-service\",\n description=\"some description\",\n routing={\n \"host_rules\": [{\n \"description\": \"host rule description\",\n \"hosts\": [\"sslcert.tf-test.club\"],\n \"path_matcher\": \"routes\",\n }],\n \"path_matchers\": [{\n \"name\": \"routes\",\n \"route_rules\": [{\n \"description\": \"a route rule to match against\",\n \"priority\": \"1\",\n \"match_rules\": [{\n \"prefix_match\": \"/\",\n }],\n \"origin\": instance.name,\n \"route_action\": {\n \"cdn_policy\": {\n \"cache_mode\": \"CACHE_ALL_STATIC\",\n \"default_ttl\": \"3600s\",\n },\n },\n \"header_action\": {\n \"response_header_to_adds\": [{\n \"header_name\": \"x-cache-status\",\n \"header_value\": \"{cdn_cache_status}\",\n }],\n },\n }],\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var dest = new Gcp.Storage.Bucket(\"dest\", new()\n {\n Name = \"my-bucket\",\n Location = \"US\",\n ForceDestroy = true,\n });\n\n var instance = new Gcp.NetworkServices.EdgeCacheOrigin(\"instance\", new()\n {\n Name = \"my-origin\",\n OriginAddress = dest.Url,\n Description = \"The default bucket for media edge test\",\n MaxAttempts = 2,\n Timeout = new Gcp.NetworkServices.Inputs.EdgeCacheOriginTimeoutArgs\n {\n ConnectTimeout = \"10s\",\n },\n });\n\n var instanceEdgeCacheService = new Gcp.NetworkServices.EdgeCacheService(\"instance\", new()\n {\n Name = \"my-service\",\n Description = \"some description\",\n Routing = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingArgs\n {\n HostRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingHostRuleArgs\n {\n Description = \"host rule description\",\n Hosts = new[]\n {\n \"sslcert.tf-test.club\",\n },\n PathMatcher = \"routes\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherArgs\n {\n Name = \"routes\",\n RouteRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs\n {\n Description = \"a route rule to match against\",\n Priority = \"1\",\n MatchRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n PrefixMatch = \"/\",\n },\n },\n Origin = instance.Name,\n RouteAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs\n {\n CdnPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs\n {\n CacheMode = \"CACHE_ALL_STATIC\",\n DefaultTtl = \"3600s\",\n },\n },\n HeaderAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs\n {\n ResponseHeaderToAdds = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs\n {\n HeaderName = \"x-cache-status\",\n HeaderValue = \"{cdn_cache_status}\",\n },\n },\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdest, err := storage.NewBucket(ctx, \"dest\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"my-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance, err := networkservices.NewEdgeCacheOrigin(ctx, \"instance\", \u0026networkservices.EdgeCacheOriginArgs{\n\t\t\tName: pulumi.String(\"my-origin\"),\n\t\t\tOriginAddress: dest.Url,\n\t\t\tDescription: pulumi.String(\"The default bucket for media edge test\"),\n\t\t\tMaxAttempts: pulumi.Int(2),\n\t\t\tTimeout: \u0026networkservices.EdgeCacheOriginTimeoutArgs{\n\t\t\t\tConnectTimeout: pulumi.String(\"10s\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewEdgeCacheService(ctx, \"instance\", \u0026networkservices.EdgeCacheServiceArgs{\n\t\t\tName: pulumi.String(\"my-service\"),\n\t\t\tDescription: pulumi.String(\"some description\"),\n\t\t\tRouting: \u0026networkservices.EdgeCacheServiceRoutingArgs{\n\t\t\t\tHostRules: networkservices.EdgeCacheServiceRoutingHostRuleArray{\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingHostRuleArgs{\n\t\t\t\t\t\tDescription: pulumi.String(\"host rule description\"),\n\t\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"sslcert.tf-test.club\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathMatcher: pulumi.String(\"routes\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPathMatchers: networkservices.EdgeCacheServiceRoutingPathMatcherArray{\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherArgs{\n\t\t\t\t\t\tName: pulumi.String(\"routes\"),\n\t\t\t\t\t\tRouteRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"a route rule to match against\"),\n\t\t\t\t\t\t\t\tPriority: pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\tMatchRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tPrefixMatch: pulumi.String(\"/\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tOrigin: instance.Name,\n\t\t\t\t\t\t\t\tRouteAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\t\tCdnPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tCacheMode: pulumi.String(\"CACHE_ALL_STATIC\"),\n\t\t\t\t\t\t\t\t\t\tDefaultTtl: pulumi.String(\"3600s\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tHeaderAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs{\n\t\t\t\t\t\t\t\t\tResponseHeaderToAdds: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArray{\n\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"x-cache-status\"),\n\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"{cdn_cache_status}\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheOrigin;\nimport com.pulumi.gcp.networkservices.EdgeCacheOriginArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheOriginTimeoutArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheService;\nimport com.pulumi.gcp.networkservices.EdgeCacheServiceArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheServiceRoutingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var dest = new Bucket(\"dest\", BucketArgs.builder()\n .name(\"my-bucket\")\n .location(\"US\")\n .forceDestroy(true)\n .build());\n\n var instance = new EdgeCacheOrigin(\"instance\", EdgeCacheOriginArgs.builder()\n .name(\"my-origin\")\n .originAddress(dest.url())\n .description(\"The default bucket for media edge test\")\n .maxAttempts(2)\n .timeout(EdgeCacheOriginTimeoutArgs.builder()\n .connectTimeout(\"10s\")\n .build())\n .build());\n\n var instanceEdgeCacheService = new EdgeCacheService(\"instanceEdgeCacheService\", EdgeCacheServiceArgs.builder()\n .name(\"my-service\")\n .description(\"some description\")\n .routing(EdgeCacheServiceRoutingArgs.builder()\n .hostRules(EdgeCacheServiceRoutingHostRuleArgs.builder()\n .description(\"host rule description\")\n .hosts(\"sslcert.tf-test.club\")\n .pathMatcher(\"routes\")\n .build())\n .pathMatchers(EdgeCacheServiceRoutingPathMatcherArgs.builder()\n .name(\"routes\")\n .routeRules(EdgeCacheServiceRoutingPathMatcherRouteRuleArgs.builder()\n .description(\"a route rule to match against\")\n .priority(1)\n .matchRules(EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .prefixMatch(\"/\")\n .build())\n .origin(instance.name())\n .routeAction(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs.builder()\n .cdnPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs.builder()\n .cacheMode(\"CACHE_ALL_STATIC\")\n .defaultTtl(\"3600s\")\n .build())\n .build())\n .headerAction(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs.builder()\n .responseHeaderToAdds(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs.builder()\n .headerName(\"x-cache-status\")\n .headerValue(\"{cdn_cache_status}\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dest:\n type: gcp:storage:Bucket\n properties:\n name: my-bucket\n location: US\n forceDestroy: true\n instance:\n type: gcp:networkservices:EdgeCacheOrigin\n properties:\n name: my-origin\n originAddress: ${dest.url}\n description: The default bucket for media edge test\n maxAttempts: 2\n timeout:\n connectTimeout: 10s\n instanceEdgeCacheService:\n type: gcp:networkservices:EdgeCacheService\n name: instance\n properties:\n name: my-service\n description: some description\n routing:\n hostRules:\n - description: host rule description\n hosts:\n - sslcert.tf-test.club\n pathMatcher: routes\n pathMatchers:\n - name: routes\n routeRules:\n - description: a route rule to match against\n priority: 1\n matchRules:\n - prefixMatch: /\n origin: ${instance.name}\n routeAction:\n cdnPolicy:\n cacheMode: CACHE_ALL_STATIC\n defaultTtl: 3600s\n headerAction:\n responseHeaderToAdds:\n - headerName: x-cache-status\n headerValue: '{cdn_cache_status}'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Edge Cache Service Advanced\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dest = new gcp.storage.Bucket(\"dest\", {\n name: \"my-bucket\",\n location: \"US\",\n forceDestroy: true,\n});\nconst google = new gcp.networkservices.EdgeCacheOrigin(\"google\", {\n name: \"origin-google\",\n originAddress: \"google.com\",\n description: \"The default bucket for media edge test\",\n maxAttempts: 2,\n timeout: {\n connectTimeout: \"10s\",\n },\n});\nconst instance = new gcp.networkservices.EdgeCacheOrigin(\"instance\", {\n name: \"my-origin\",\n originAddress: dest.url,\n description: \"The default bucket for media edge test\",\n maxAttempts: 2,\n timeout: {\n connectTimeout: \"10s\",\n },\n});\nconst instanceEdgeCacheService = new gcp.networkservices.EdgeCacheService(\"instance\", {\n name: \"my-service\",\n description: \"some description\",\n disableQuic: true,\n disableHttp2: true,\n labels: {\n a: \"b\",\n },\n routing: {\n hostRules: [\n {\n description: \"host rule description\",\n hosts: [\"sslcert.tf-test.club\"],\n pathMatcher: \"routes\",\n },\n {\n description: \"host rule2\",\n hosts: [\"sslcert.tf-test2.club\"],\n pathMatcher: \"routes\",\n },\n {\n description: \"host rule3\",\n hosts: [\"sslcert.tf-test3.club\"],\n pathMatcher: \"routesAdvanced\",\n },\n ],\n pathMatchers: [\n {\n name: \"routes\",\n routeRules: [{\n description: \"a route rule to match against\",\n priority: \"1\",\n matchRules: [{\n prefixMatch: \"/\",\n }],\n origin: instance.name,\n routeAction: {\n cdnPolicy: {\n cacheMode: \"CACHE_ALL_STATIC\",\n defaultTtl: \"3600s\",\n },\n },\n headerAction: {\n responseHeaderToAdds: [{\n headerName: \"x-cache-status\",\n headerValue: \"{cdn_cache_status}\",\n }],\n },\n }],\n },\n {\n name: \"routesAdvanced\",\n description: \"an advanced ruleset\",\n routeRules: [\n {\n description: \"an advanced route rule to match against\",\n priority: \"1\",\n matchRules: [\n {\n prefixMatch: \"/potato/\",\n queryParameterMatches: [\n {\n name: \"debug\",\n presentMatch: true,\n },\n {\n name: \"state\",\n exactMatch: \"debug\",\n },\n ],\n },\n {\n fullPathMatch: \"/apple\",\n },\n ],\n headerAction: {\n requestHeaderToAdds: [\n {\n headerName: \"debug\",\n headerValue: \"true\",\n replace: true,\n },\n {\n headerName: \"potato\",\n headerValue: \"plant\",\n },\n ],\n responseHeaderToAdds: [{\n headerName: \"potato\",\n headerValue: \"plant\",\n replace: true,\n }],\n requestHeaderToRemoves: [{\n headerName: \"prod\",\n }],\n responseHeaderToRemoves: [{\n headerName: \"prod\",\n }],\n },\n origin: instance.name,\n routeAction: {\n cdnPolicy: {\n cacheMode: \"CACHE_ALL_STATIC\",\n defaultTtl: \"3800s\",\n clientTtl: \"3600s\",\n maxTtl: \"9000s\",\n cacheKeyPolicy: {\n includeProtocol: true,\n excludeHost: true,\n includedQueryParameters: [\n \"apple\",\n \"dev\",\n \"santa\",\n \"claus\",\n ],\n includedHeaderNames: [\"banana\"],\n includedCookieNames: [\"orange\"],\n },\n negativeCaching: true,\n signedRequestMode: \"DISABLED\",\n negativeCachingPolicy: {\n \"500\": \"3000s\",\n },\n },\n urlRewrite: {\n pathPrefixRewrite: \"/dev\",\n hostRewrite: \"dev.club\",\n },\n corsPolicy: {\n maxAge: \"2500s\",\n allowCredentials: true,\n allowOrigins: [\"*\"],\n allowMethods: [\"GET\"],\n allowHeaders: [\"dev\"],\n exposeHeaders: [\"prod\"],\n },\n },\n },\n {\n description: \"a second route rule to match against\",\n priority: \"2\",\n matchRules: [{\n fullPathMatch: \"/yay\",\n }],\n origin: instance.name,\n routeAction: {\n cdnPolicy: {\n cacheMode: \"CACHE_ALL_STATIC\",\n defaultTtl: \"3600s\",\n cacheKeyPolicy: {\n excludedQueryParameters: [\"dev\"],\n },\n },\n corsPolicy: {\n maxAge: \"3000s\",\n allowHeaders: [\"dev\"],\n disabled: true,\n },\n },\n },\n ],\n },\n ],\n },\n logConfig: {\n enable: true,\n sampleRate: 0.01,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndest = gcp.storage.Bucket(\"dest\",\n name=\"my-bucket\",\n location=\"US\",\n force_destroy=True)\ngoogle = gcp.networkservices.EdgeCacheOrigin(\"google\",\n name=\"origin-google\",\n origin_address=\"google.com\",\n description=\"The default bucket for media edge test\",\n max_attempts=2,\n timeout={\n \"connect_timeout\": \"10s\",\n })\ninstance = gcp.networkservices.EdgeCacheOrigin(\"instance\",\n name=\"my-origin\",\n origin_address=dest.url,\n description=\"The default bucket for media edge test\",\n max_attempts=2,\n timeout={\n \"connect_timeout\": \"10s\",\n })\ninstance_edge_cache_service = gcp.networkservices.EdgeCacheService(\"instance\",\n name=\"my-service\",\n description=\"some description\",\n disable_quic=True,\n disable_http2=True,\n labels={\n \"a\": \"b\",\n },\n routing={\n \"host_rules\": [\n {\n \"description\": \"host rule description\",\n \"hosts\": [\"sslcert.tf-test.club\"],\n \"path_matcher\": \"routes\",\n },\n {\n \"description\": \"host rule2\",\n \"hosts\": [\"sslcert.tf-test2.club\"],\n \"path_matcher\": \"routes\",\n },\n {\n \"description\": \"host rule3\",\n \"hosts\": [\"sslcert.tf-test3.club\"],\n \"path_matcher\": \"routesAdvanced\",\n },\n ],\n \"path_matchers\": [\n {\n \"name\": \"routes\",\n \"route_rules\": [{\n \"description\": \"a route rule to match against\",\n \"priority\": \"1\",\n \"match_rules\": [{\n \"prefix_match\": \"/\",\n }],\n \"origin\": instance.name,\n \"route_action\": {\n \"cdn_policy\": {\n \"cache_mode\": \"CACHE_ALL_STATIC\",\n \"default_ttl\": \"3600s\",\n },\n },\n \"header_action\": {\n \"response_header_to_adds\": [{\n \"header_name\": \"x-cache-status\",\n \"header_value\": \"{cdn_cache_status}\",\n }],\n },\n }],\n },\n {\n \"name\": \"routesAdvanced\",\n \"description\": \"an advanced ruleset\",\n \"route_rules\": [\n {\n \"description\": \"an advanced route rule to match against\",\n \"priority\": \"1\",\n \"match_rules\": [\n {\n \"prefix_match\": \"/potato/\",\n \"query_parameter_matches\": [\n {\n \"name\": \"debug\",\n \"present_match\": True,\n },\n {\n \"name\": \"state\",\n \"exact_match\": \"debug\",\n },\n ],\n },\n {\n \"full_path_match\": \"/apple\",\n },\n ],\n \"header_action\": {\n \"request_header_to_adds\": [\n {\n \"header_name\": \"debug\",\n \"header_value\": \"true\",\n \"replace\": True,\n },\n {\n \"header_name\": \"potato\",\n \"header_value\": \"plant\",\n },\n ],\n \"response_header_to_adds\": [{\n \"header_name\": \"potato\",\n \"header_value\": \"plant\",\n \"replace\": True,\n }],\n \"request_header_to_removes\": [{\n \"header_name\": \"prod\",\n }],\n \"response_header_to_removes\": [{\n \"header_name\": \"prod\",\n }],\n },\n \"origin\": instance.name,\n \"route_action\": {\n \"cdn_policy\": {\n \"cache_mode\": \"CACHE_ALL_STATIC\",\n \"default_ttl\": \"3800s\",\n \"client_ttl\": \"3600s\",\n \"max_ttl\": \"9000s\",\n \"cache_key_policy\": {\n \"include_protocol\": True,\n \"exclude_host\": True,\n \"included_query_parameters\": [\n \"apple\",\n \"dev\",\n \"santa\",\n \"claus\",\n ],\n \"included_header_names\": [\"banana\"],\n \"included_cookie_names\": [\"orange\"],\n },\n \"negative_caching\": True,\n \"signed_request_mode\": \"DISABLED\",\n \"negative_caching_policy\": {\n \"500\": \"3000s\",\n },\n },\n \"url_rewrite\": {\n \"path_prefix_rewrite\": \"/dev\",\n \"host_rewrite\": \"dev.club\",\n },\n \"cors_policy\": {\n \"max_age\": \"2500s\",\n \"allow_credentials\": True,\n \"allow_origins\": [\"*\"],\n \"allow_methods\": [\"GET\"],\n \"allow_headers\": [\"dev\"],\n \"expose_headers\": [\"prod\"],\n },\n },\n },\n {\n \"description\": \"a second route rule to match against\",\n \"priority\": \"2\",\n \"match_rules\": [{\n \"full_path_match\": \"/yay\",\n }],\n \"origin\": instance.name,\n \"route_action\": {\n \"cdn_policy\": {\n \"cache_mode\": \"CACHE_ALL_STATIC\",\n \"default_ttl\": \"3600s\",\n \"cache_key_policy\": {\n \"excluded_query_parameters\": [\"dev\"],\n },\n },\n \"cors_policy\": {\n \"max_age\": \"3000s\",\n \"allow_headers\": [\"dev\"],\n \"disabled\": True,\n },\n },\n },\n ],\n },\n ],\n },\n log_config={\n \"enable\": True,\n \"sample_rate\": 0.01,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var dest = new Gcp.Storage.Bucket(\"dest\", new()\n {\n Name = \"my-bucket\",\n Location = \"US\",\n ForceDestroy = true,\n });\n\n var google = new Gcp.NetworkServices.EdgeCacheOrigin(\"google\", new()\n {\n Name = \"origin-google\",\n OriginAddress = \"google.com\",\n Description = \"The default bucket for media edge test\",\n MaxAttempts = 2,\n Timeout = new Gcp.NetworkServices.Inputs.EdgeCacheOriginTimeoutArgs\n {\n ConnectTimeout = \"10s\",\n },\n });\n\n var instance = new Gcp.NetworkServices.EdgeCacheOrigin(\"instance\", new()\n {\n Name = \"my-origin\",\n OriginAddress = dest.Url,\n Description = \"The default bucket for media edge test\",\n MaxAttempts = 2,\n Timeout = new Gcp.NetworkServices.Inputs.EdgeCacheOriginTimeoutArgs\n {\n ConnectTimeout = \"10s\",\n },\n });\n\n var instanceEdgeCacheService = new Gcp.NetworkServices.EdgeCacheService(\"instance\", new()\n {\n Name = \"my-service\",\n Description = \"some description\",\n DisableQuic = true,\n DisableHttp2 = true,\n Labels = \n {\n { \"a\", \"b\" },\n },\n Routing = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingArgs\n {\n HostRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingHostRuleArgs\n {\n Description = \"host rule description\",\n Hosts = new[]\n {\n \"sslcert.tf-test.club\",\n },\n PathMatcher = \"routes\",\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingHostRuleArgs\n {\n Description = \"host rule2\",\n Hosts = new[]\n {\n \"sslcert.tf-test2.club\",\n },\n PathMatcher = \"routes\",\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingHostRuleArgs\n {\n Description = \"host rule3\",\n Hosts = new[]\n {\n \"sslcert.tf-test3.club\",\n },\n PathMatcher = \"routesAdvanced\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherArgs\n {\n Name = \"routes\",\n RouteRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs\n {\n Description = \"a route rule to match against\",\n Priority = \"1\",\n MatchRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n PrefixMatch = \"/\",\n },\n },\n Origin = instance.Name,\n RouteAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs\n {\n CdnPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs\n {\n CacheMode = \"CACHE_ALL_STATIC\",\n DefaultTtl = \"3600s\",\n },\n },\n HeaderAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs\n {\n ResponseHeaderToAdds = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs\n {\n HeaderName = \"x-cache-status\",\n HeaderValue = \"{cdn_cache_status}\",\n },\n },\n },\n },\n },\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherArgs\n {\n Name = \"routesAdvanced\",\n Description = \"an advanced ruleset\",\n RouteRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs\n {\n Description = \"an advanced route rule to match against\",\n Priority = \"1\",\n MatchRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n PrefixMatch = \"/potato/\",\n QueryParameterMatches = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs\n {\n Name = \"debug\",\n PresentMatch = true,\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs\n {\n Name = \"state\",\n ExactMatch = \"debug\",\n },\n },\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n FullPathMatch = \"/apple\",\n },\n },\n HeaderAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs\n {\n RequestHeaderToAdds = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToAddArgs\n {\n HeaderName = \"debug\",\n HeaderValue = \"true\",\n Replace = true,\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToAddArgs\n {\n HeaderName = \"potato\",\n HeaderValue = \"plant\",\n },\n },\n ResponseHeaderToAdds = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs\n {\n HeaderName = \"potato\",\n HeaderValue = \"plant\",\n Replace = true,\n },\n },\n RequestHeaderToRemoves = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToRemoveArgs\n {\n HeaderName = \"prod\",\n },\n },\n ResponseHeaderToRemoves = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToRemoveArgs\n {\n HeaderName = \"prod\",\n },\n },\n },\n Origin = instance.Name,\n RouteAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs\n {\n CdnPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs\n {\n CacheMode = \"CACHE_ALL_STATIC\",\n DefaultTtl = \"3800s\",\n ClientTtl = \"3600s\",\n MaxTtl = \"9000s\",\n CacheKeyPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyCacheKeyPolicyArgs\n {\n IncludeProtocol = true,\n ExcludeHost = true,\n IncludedQueryParameters = new[]\n {\n \"apple\",\n \"dev\",\n \"santa\",\n \"claus\",\n },\n IncludedHeaderNames = new[]\n {\n \"banana\",\n },\n IncludedCookieNames = new[]\n {\n \"orange\",\n },\n },\n NegativeCaching = true,\n SignedRequestMode = \"DISABLED\",\n NegativeCachingPolicy = \n {\n { \"500\", \"3000s\" },\n },\n },\n UrlRewrite = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionUrlRewriteArgs\n {\n PathPrefixRewrite = \"/dev\",\n HostRewrite = \"dev.club\",\n },\n CorsPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCorsPolicyArgs\n {\n MaxAge = \"2500s\",\n AllowCredentials = true,\n AllowOrigins = new[]\n {\n \"*\",\n },\n AllowMethods = new[]\n {\n \"GET\",\n },\n AllowHeaders = new[]\n {\n \"dev\",\n },\n ExposeHeaders = new[]\n {\n \"prod\",\n },\n },\n },\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs\n {\n Description = \"a second route rule to match against\",\n Priority = \"2\",\n MatchRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n FullPathMatch = \"/yay\",\n },\n },\n Origin = instance.Name,\n RouteAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs\n {\n CdnPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs\n {\n CacheMode = \"CACHE_ALL_STATIC\",\n DefaultTtl = \"3600s\",\n CacheKeyPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyCacheKeyPolicyArgs\n {\n ExcludedQueryParameters = new[]\n {\n \"dev\",\n },\n },\n },\n CorsPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCorsPolicyArgs\n {\n MaxAge = \"3000s\",\n AllowHeaders = new[]\n {\n \"dev\",\n },\n Disabled = true,\n },\n },\n },\n },\n },\n },\n },\n LogConfig = new Gcp.NetworkServices.Inputs.EdgeCacheServiceLogConfigArgs\n {\n Enable = true,\n SampleRate = 0.01,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdest, err := storage.NewBucket(ctx, \"dest\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"my-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewEdgeCacheOrigin(ctx, \"google\", \u0026networkservices.EdgeCacheOriginArgs{\n\t\t\tName: pulumi.String(\"origin-google\"),\n\t\t\tOriginAddress: pulumi.String(\"google.com\"),\n\t\t\tDescription: pulumi.String(\"The default bucket for media edge test\"),\n\t\t\tMaxAttempts: pulumi.Int(2),\n\t\t\tTimeout: \u0026networkservices.EdgeCacheOriginTimeoutArgs{\n\t\t\t\tConnectTimeout: pulumi.String(\"10s\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance, err := networkservices.NewEdgeCacheOrigin(ctx, \"instance\", \u0026networkservices.EdgeCacheOriginArgs{\n\t\t\tName: pulumi.String(\"my-origin\"),\n\t\t\tOriginAddress: dest.Url,\n\t\t\tDescription: pulumi.String(\"The default bucket for media edge test\"),\n\t\t\tMaxAttempts: pulumi.Int(2),\n\t\t\tTimeout: \u0026networkservices.EdgeCacheOriginTimeoutArgs{\n\t\t\t\tConnectTimeout: pulumi.String(\"10s\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewEdgeCacheService(ctx, \"instance\", \u0026networkservices.EdgeCacheServiceArgs{\n\t\t\tName: pulumi.String(\"my-service\"),\n\t\t\tDescription: pulumi.String(\"some description\"),\n\t\t\tDisableQuic: pulumi.Bool(true),\n\t\t\tDisableHttp2: pulumi.Bool(true),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"a\": pulumi.String(\"b\"),\n\t\t\t},\n\t\t\tRouting: \u0026networkservices.EdgeCacheServiceRoutingArgs{\n\t\t\t\tHostRules: networkservices.EdgeCacheServiceRoutingHostRuleArray{\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingHostRuleArgs{\n\t\t\t\t\t\tDescription: pulumi.String(\"host rule description\"),\n\t\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"sslcert.tf-test.club\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathMatcher: pulumi.String(\"routes\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingHostRuleArgs{\n\t\t\t\t\t\tDescription: pulumi.String(\"host rule2\"),\n\t\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"sslcert.tf-test2.club\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathMatcher: pulumi.String(\"routes\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingHostRuleArgs{\n\t\t\t\t\t\tDescription: pulumi.String(\"host rule3\"),\n\t\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"sslcert.tf-test3.club\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathMatcher: pulumi.String(\"routesAdvanced\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPathMatchers: networkservices.EdgeCacheServiceRoutingPathMatcherArray{\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherArgs{\n\t\t\t\t\t\tName: pulumi.String(\"routes\"),\n\t\t\t\t\t\tRouteRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"a route rule to match against\"),\n\t\t\t\t\t\t\t\tPriority: pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\tMatchRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tPrefixMatch: pulumi.String(\"/\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tOrigin: instance.Name,\n\t\t\t\t\t\t\t\tRouteAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\t\tCdnPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tCacheMode: pulumi.String(\"CACHE_ALL_STATIC\"),\n\t\t\t\t\t\t\t\t\t\tDefaultTtl: pulumi.String(\"3600s\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tHeaderAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs{\n\t\t\t\t\t\t\t\t\tResponseHeaderToAdds: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArray{\n\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"x-cache-status\"),\n\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"{cdn_cache_status}\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherArgs{\n\t\t\t\t\t\tName: pulumi.String(\"routesAdvanced\"),\n\t\t\t\t\t\tDescription: pulumi.String(\"an advanced ruleset\"),\n\t\t\t\t\t\tRouteRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"an advanced route rule to match against\"),\n\t\t\t\t\t\t\t\tPriority: pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\tMatchRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tPrefixMatch: pulumi.String(\"/potato/\"),\n\t\t\t\t\t\t\t\t\t\tQueryParameterMatches: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleQueryParameterMatchArray{\n\t\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"debug\"),\n\t\t\t\t\t\t\t\t\t\t\t\tPresentMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"state\"),\n\t\t\t\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"debug\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tFullPathMatch: pulumi.String(\"/apple\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tHeaderAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs{\n\t\t\t\t\t\t\t\t\tRequestHeaderToAdds: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToAddArray{\n\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"debug\"),\n\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"true\"),\n\t\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"potato\"),\n\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"plant\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tResponseHeaderToAdds: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArray{\n\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"potato\"),\n\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"plant\"),\n\t\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tRequestHeaderToRemoves: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToRemoveArray{\n\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToRemoveArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"prod\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tResponseHeaderToRemoves: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToRemoveArray{\n\t\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToRemoveArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"prod\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tOrigin: instance.Name,\n\t\t\t\t\t\t\t\tRouteAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\t\tCdnPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tCacheMode: pulumi.String(\"CACHE_ALL_STATIC\"),\n\t\t\t\t\t\t\t\t\t\tDefaultTtl: pulumi.String(\"3800s\"),\n\t\t\t\t\t\t\t\t\t\tClientTtl: pulumi.String(\"3600s\"),\n\t\t\t\t\t\t\t\t\t\tMaxTtl: pulumi.String(\"9000s\"),\n\t\t\t\t\t\t\t\t\t\tCacheKeyPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyCacheKeyPolicyArgs{\n\t\t\t\t\t\t\t\t\t\t\tIncludeProtocol: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t\tExcludeHost: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t\tIncludedQueryParameters: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"apple\"),\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"dev\"),\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"santa\"),\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"claus\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tIncludedHeaderNames: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"banana\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tIncludedCookieNames: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"orange\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tNegativeCaching: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\tSignedRequestMode: pulumi.String(\"DISABLED\"),\n\t\t\t\t\t\t\t\t\t\tNegativeCachingPolicy: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\t\t\t\"500\": pulumi.String(\"3000s\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tUrlRewrite: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionUrlRewriteArgs{\n\t\t\t\t\t\t\t\t\t\tPathPrefixRewrite: pulumi.String(\"/dev\"),\n\t\t\t\t\t\t\t\t\t\tHostRewrite: pulumi.String(\"dev.club\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tCorsPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCorsPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tMaxAge: pulumi.String(\"2500s\"),\n\t\t\t\t\t\t\t\t\t\tAllowCredentials: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\tAllowOrigins: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"*\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tAllowMethods: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"GET\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tAllowHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"dev\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tExposeHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"prod\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"a second route rule to match against\"),\n\t\t\t\t\t\t\t\tPriority: pulumi.String(\"2\"),\n\t\t\t\t\t\t\t\tMatchRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tFullPathMatch: pulumi.String(\"/yay\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tOrigin: instance.Name,\n\t\t\t\t\t\t\t\tRouteAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\t\tCdnPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tCacheMode: pulumi.String(\"CACHE_ALL_STATIC\"),\n\t\t\t\t\t\t\t\t\t\tDefaultTtl: pulumi.String(\"3600s\"),\n\t\t\t\t\t\t\t\t\t\tCacheKeyPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyCacheKeyPolicyArgs{\n\t\t\t\t\t\t\t\t\t\t\tExcludedQueryParameters: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"dev\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tCorsPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCorsPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tMaxAge: pulumi.String(\"3000s\"),\n\t\t\t\t\t\t\t\t\t\tAllowHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"dev\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tDisabled: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLogConfig: \u0026networkservices.EdgeCacheServiceLogConfigArgs{\n\t\t\t\tEnable: pulumi.Bool(true),\n\t\t\t\tSampleRate: pulumi.Float64(0.01),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheOrigin;\nimport com.pulumi.gcp.networkservices.EdgeCacheOriginArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheOriginTimeoutArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheService;\nimport com.pulumi.gcp.networkservices.EdgeCacheServiceArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheServiceRoutingArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheServiceLogConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var dest = new Bucket(\"dest\", BucketArgs.builder()\n .name(\"my-bucket\")\n .location(\"US\")\n .forceDestroy(true)\n .build());\n\n var google = new EdgeCacheOrigin(\"google\", EdgeCacheOriginArgs.builder()\n .name(\"origin-google\")\n .originAddress(\"google.com\")\n .description(\"The default bucket for media edge test\")\n .maxAttempts(2)\n .timeout(EdgeCacheOriginTimeoutArgs.builder()\n .connectTimeout(\"10s\")\n .build())\n .build());\n\n var instance = new EdgeCacheOrigin(\"instance\", EdgeCacheOriginArgs.builder()\n .name(\"my-origin\")\n .originAddress(dest.url())\n .description(\"The default bucket for media edge test\")\n .maxAttempts(2)\n .timeout(EdgeCacheOriginTimeoutArgs.builder()\n .connectTimeout(\"10s\")\n .build())\n .build());\n\n var instanceEdgeCacheService = new EdgeCacheService(\"instanceEdgeCacheService\", EdgeCacheServiceArgs.builder()\n .name(\"my-service\")\n .description(\"some description\")\n .disableQuic(true)\n .disableHttp2(true)\n .labels(Map.of(\"a\", \"b\"))\n .routing(EdgeCacheServiceRoutingArgs.builder()\n .hostRules( \n EdgeCacheServiceRoutingHostRuleArgs.builder()\n .description(\"host rule description\")\n .hosts(\"sslcert.tf-test.club\")\n .pathMatcher(\"routes\")\n .build(),\n EdgeCacheServiceRoutingHostRuleArgs.builder()\n .description(\"host rule2\")\n .hosts(\"sslcert.tf-test2.club\")\n .pathMatcher(\"routes\")\n .build(),\n EdgeCacheServiceRoutingHostRuleArgs.builder()\n .description(\"host rule3\")\n .hosts(\"sslcert.tf-test3.club\")\n .pathMatcher(\"routesAdvanced\")\n .build())\n .pathMatchers( \n EdgeCacheServiceRoutingPathMatcherArgs.builder()\n .name(\"routes\")\n .routeRules(EdgeCacheServiceRoutingPathMatcherRouteRuleArgs.builder()\n .description(\"a route rule to match against\")\n .priority(1)\n .matchRules(EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .prefixMatch(\"/\")\n .build())\n .origin(instance.name())\n .routeAction(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs.builder()\n .cdnPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs.builder()\n .cacheMode(\"CACHE_ALL_STATIC\")\n .defaultTtl(\"3600s\")\n .build())\n .build())\n .headerAction(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs.builder()\n .responseHeaderToAdds(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs.builder()\n .headerName(\"x-cache-status\")\n .headerValue(\"{cdn_cache_status}\")\n .build())\n .build())\n .build())\n .build(),\n EdgeCacheServiceRoutingPathMatcherArgs.builder()\n .name(\"routesAdvanced\")\n .description(\"an advanced ruleset\")\n .routeRules( \n EdgeCacheServiceRoutingPathMatcherRouteRuleArgs.builder()\n .description(\"an advanced route rule to match against\")\n .priority(1)\n .matchRules( \n EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .prefixMatch(\"/potato/\")\n .queryParameterMatches( \n EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs.builder()\n .name(\"debug\")\n .presentMatch(true)\n .build(),\n EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs.builder()\n .name(\"state\")\n .exactMatch(\"debug\")\n .build())\n .build(),\n EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .fullPathMatch(\"/apple\")\n .build())\n .headerAction(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionArgs.builder()\n .requestHeaderToAdds( \n EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToAddArgs.builder()\n .headerName(\"debug\")\n .headerValue(\"true\")\n .replace(true)\n .build(),\n EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToAddArgs.builder()\n .headerName(\"potato\")\n .headerValue(\"plant\")\n .build())\n .responseHeaderToAdds(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToAddArgs.builder()\n .headerName(\"potato\")\n .headerValue(\"plant\")\n .replace(true)\n .build())\n .requestHeaderToRemoves(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionRequestHeaderToRemoveArgs.builder()\n .headerName(\"prod\")\n .build())\n .responseHeaderToRemoves(EdgeCacheServiceRoutingPathMatcherRouteRuleHeaderActionResponseHeaderToRemoveArgs.builder()\n .headerName(\"prod\")\n .build())\n .build())\n .origin(instance.name())\n .routeAction(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs.builder()\n .cdnPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs.builder()\n .cacheMode(\"CACHE_ALL_STATIC\")\n .defaultTtl(\"3800s\")\n .clientTtl(\"3600s\")\n .maxTtl(\"9000s\")\n .cacheKeyPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyCacheKeyPolicyArgs.builder()\n .includeProtocol(true)\n .excludeHost(true)\n .includedQueryParameters( \n \"apple\",\n \"dev\",\n \"santa\",\n \"claus\")\n .includedHeaderNames(\"banana\")\n .includedCookieNames(\"orange\")\n .build())\n .negativeCaching(true)\n .signedRequestMode(\"DISABLED\")\n .negativeCachingPolicy(Map.of(\"500\", \"3000s\"))\n .build())\n .urlRewrite(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionUrlRewriteArgs.builder()\n .pathPrefixRewrite(\"/dev\")\n .hostRewrite(\"dev.club\")\n .build())\n .corsPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCorsPolicyArgs.builder()\n .maxAge(\"2500s\")\n .allowCredentials(true)\n .allowOrigins(\"*\")\n .allowMethods(\"GET\")\n .allowHeaders(\"dev\")\n .exposeHeaders(\"prod\")\n .build())\n .build())\n .build(),\n EdgeCacheServiceRoutingPathMatcherRouteRuleArgs.builder()\n .description(\"a second route rule to match against\")\n .priority(2)\n .matchRules(EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .fullPathMatch(\"/yay\")\n .build())\n .origin(instance.name())\n .routeAction(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs.builder()\n .cdnPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs.builder()\n .cacheMode(\"CACHE_ALL_STATIC\")\n .defaultTtl(\"3600s\")\n .cacheKeyPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyCacheKeyPolicyArgs.builder()\n .excludedQueryParameters(\"dev\")\n .build())\n .build())\n .corsPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCorsPolicyArgs.builder()\n .maxAge(\"3000s\")\n .allowHeaders(\"dev\")\n .disabled(true)\n .build())\n .build())\n .build())\n .build())\n .build())\n .logConfig(EdgeCacheServiceLogConfigArgs.builder()\n .enable(true)\n .sampleRate(0.01)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dest:\n type: gcp:storage:Bucket\n properties:\n name: my-bucket\n location: US\n forceDestroy: true\n google:\n type: gcp:networkservices:EdgeCacheOrigin\n properties:\n name: origin-google\n originAddress: google.com\n description: The default bucket for media edge test\n maxAttempts: 2\n timeout:\n connectTimeout: 10s\n instance:\n type: gcp:networkservices:EdgeCacheOrigin\n properties:\n name: my-origin\n originAddress: ${dest.url}\n description: The default bucket for media edge test\n maxAttempts: 2\n timeout:\n connectTimeout: 10s\n instanceEdgeCacheService:\n type: gcp:networkservices:EdgeCacheService\n name: instance\n properties:\n name: my-service\n description: some description\n disableQuic: true\n disableHttp2: true\n labels:\n a: b\n routing:\n hostRules:\n - description: host rule description\n hosts:\n - sslcert.tf-test.club\n pathMatcher: routes\n - description: host rule2\n hosts:\n - sslcert.tf-test2.club\n pathMatcher: routes\n - description: host rule3\n hosts:\n - sslcert.tf-test3.club\n pathMatcher: routesAdvanced\n pathMatchers:\n - name: routes\n routeRules:\n - description: a route rule to match against\n priority: 1\n matchRules:\n - prefixMatch: /\n origin: ${instance.name}\n routeAction:\n cdnPolicy:\n cacheMode: CACHE_ALL_STATIC\n defaultTtl: 3600s\n headerAction:\n responseHeaderToAdds:\n - headerName: x-cache-status\n headerValue: '{cdn_cache_status}'\n - name: routesAdvanced\n description: an advanced ruleset\n routeRules:\n - description: an advanced route rule to match against\n priority: 1\n matchRules:\n - prefixMatch: /potato/\n queryParameterMatches:\n - name: debug\n presentMatch: true\n - name: state\n exactMatch: debug\n - fullPathMatch: /apple\n headerAction:\n requestHeaderToAdds:\n - headerName: debug\n headerValue: 'true'\n replace: true\n - headerName: potato\n headerValue: plant\n responseHeaderToAdds:\n - headerName: potato\n headerValue: plant\n replace: true\n requestHeaderToRemoves:\n - headerName: prod\n responseHeaderToRemoves:\n - headerName: prod\n origin: ${instance.name}\n routeAction:\n cdnPolicy:\n cacheMode: CACHE_ALL_STATIC\n defaultTtl: 3800s\n clientTtl: 3600s\n maxTtl: 9000s\n cacheKeyPolicy:\n includeProtocol: true\n excludeHost: true\n includedQueryParameters:\n - apple\n - dev\n - santa\n - claus\n includedHeaderNames:\n - banana\n includedCookieNames:\n - orange\n negativeCaching: true\n signedRequestMode: DISABLED\n negativeCachingPolicy:\n '500': 3000s\n urlRewrite:\n pathPrefixRewrite: /dev\n hostRewrite: dev.club\n corsPolicy:\n maxAge: 2500s\n allowCredentials: true\n allowOrigins:\n - '*'\n allowMethods:\n - GET\n allowHeaders:\n - dev\n exposeHeaders:\n - prod\n - description: a second route rule to match against\n priority: 2\n matchRules:\n - fullPathMatch: /yay\n origin: ${instance.name}\n routeAction:\n cdnPolicy:\n cacheMode: CACHE_ALL_STATIC\n defaultTtl: 3600s\n cacheKeyPolicy:\n excludedQueryParameters:\n - dev\n corsPolicy:\n maxAge: 3000s\n allowHeaders:\n - dev\n disabled: true\n logConfig:\n enable: true\n sampleRate: 0.01\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Edge Cache Service Dual Token\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret_basic = new gcp.secretmanager.Secret(\"secret-basic\", {\n secretId: \"secret-name\",\n replication: {\n auto: {},\n },\n});\nconst secret_version_basic = new gcp.secretmanager.SecretVersion(\"secret-version-basic\", {\n secret: secret_basic.id,\n secretData: \"secret-data\",\n});\nconst keyset = new gcp.networkservices.EdgeCacheKeyset(\"keyset\", {\n name: \"keyset-name\",\n description: \"The default keyset\",\n publicKeys: [{\n id: \"my-public-key\",\n managed: true,\n }],\n validationSharedKeys: [{\n secretVersion: secret_version_basic.id,\n }],\n});\nconst instance = new gcp.networkservices.EdgeCacheOrigin(\"instance\", {\n name: \"my-origin\",\n originAddress: \"gs://media-edge-default\",\n description: \"The default bucket for media edge test\",\n});\nconst instanceEdgeCacheService = new gcp.networkservices.EdgeCacheService(\"instance\", {\n name: \"my-service\",\n description: \"some description\",\n routing: {\n hostRules: [{\n description: \"host rule description\",\n hosts: [\"sslcert.tf-test.club\"],\n pathMatcher: \"routes\",\n }],\n pathMatchers: [{\n name: \"routes\",\n routeRules: [\n {\n description: \"a route rule to match against master playlist\",\n priority: \"1\",\n matchRules: [{\n pathTemplateMatch: \"/master.m3u8\",\n }],\n origin: instance.name,\n routeAction: {\n cdnPolicy: {\n signedRequestMode: \"REQUIRE_TOKENS\",\n signedRequestKeyset: keyset.id,\n signedTokenOptions: {\n tokenQueryParameter: \"edge-cache-token\",\n },\n signedRequestMaximumExpirationTtl: \"600s\",\n addSignatures: {\n actions: \"GENERATE_COOKIE\",\n keyset: keyset.id,\n copiedParameters: [\n \"PathGlobs\",\n \"SessionID\",\n ],\n },\n },\n },\n },\n {\n description: \"a route rule to match against all playlists\",\n priority: \"2\",\n matchRules: [{\n pathTemplateMatch: \"/*.m3u8\",\n }],\n origin: instance.name,\n routeAction: {\n cdnPolicy: {\n signedRequestMode: \"REQUIRE_TOKENS\",\n signedRequestKeyset: keyset.id,\n signedTokenOptions: {\n tokenQueryParameter: \"hdnts\",\n allowedSignatureAlgorithms: [\n \"ED25519\",\n \"HMAC_SHA_256\",\n \"HMAC_SHA1\",\n ],\n },\n addSignatures: {\n actions: \"GENERATE_TOKEN_HLS_COOKIELESS\",\n keyset: keyset.id,\n tokenTtl: \"1200s\",\n tokenQueryParameter: \"hdntl\",\n copiedParameters: [\"URLPrefix\"],\n },\n },\n },\n },\n {\n description: \"a route rule to match against\",\n priority: \"3\",\n matchRules: [{\n pathTemplateMatch: \"/**.m3u8\",\n }],\n origin: instance.name,\n routeAction: {\n cdnPolicy: {\n signedRequestMode: \"REQUIRE_TOKENS\",\n signedRequestKeyset: keyset.id,\n signedTokenOptions: {\n tokenQueryParameter: \"hdntl\",\n },\n addSignatures: {\n actions: \"PROPAGATE_TOKEN_HLS_COOKIELESS\",\n tokenQueryParameter: \"hdntl\",\n },\n },\n },\n },\n ],\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret_basic = gcp.secretmanager.Secret(\"secret-basic\",\n secret_id=\"secret-name\",\n replication={\n \"auto\": {},\n })\nsecret_version_basic = gcp.secretmanager.SecretVersion(\"secret-version-basic\",\n secret=secret_basic.id,\n secret_data=\"secret-data\")\nkeyset = gcp.networkservices.EdgeCacheKeyset(\"keyset\",\n name=\"keyset-name\",\n description=\"The default keyset\",\n public_keys=[{\n \"id\": \"my-public-key\",\n \"managed\": True,\n }],\n validation_shared_keys=[{\n \"secret_version\": secret_version_basic.id,\n }])\ninstance = gcp.networkservices.EdgeCacheOrigin(\"instance\",\n name=\"my-origin\",\n origin_address=\"gs://media-edge-default\",\n description=\"The default bucket for media edge test\")\ninstance_edge_cache_service = gcp.networkservices.EdgeCacheService(\"instance\",\n name=\"my-service\",\n description=\"some description\",\n routing={\n \"host_rules\": [{\n \"description\": \"host rule description\",\n \"hosts\": [\"sslcert.tf-test.club\"],\n \"path_matcher\": \"routes\",\n }],\n \"path_matchers\": [{\n \"name\": \"routes\",\n \"route_rules\": [\n {\n \"description\": \"a route rule to match against master playlist\",\n \"priority\": \"1\",\n \"match_rules\": [{\n \"path_template_match\": \"/master.m3u8\",\n }],\n \"origin\": instance.name,\n \"route_action\": {\n \"cdn_policy\": {\n \"signed_request_mode\": \"REQUIRE_TOKENS\",\n \"signed_request_keyset\": keyset.id,\n \"signed_token_options\": {\n \"token_query_parameter\": \"edge-cache-token\",\n },\n \"signed_request_maximum_expiration_ttl\": \"600s\",\n \"add_signatures\": {\n \"actions\": \"GENERATE_COOKIE\",\n \"keyset\": keyset.id,\n \"copied_parameters\": [\n \"PathGlobs\",\n \"SessionID\",\n ],\n },\n },\n },\n },\n {\n \"description\": \"a route rule to match against all playlists\",\n \"priority\": \"2\",\n \"match_rules\": [{\n \"path_template_match\": \"/*.m3u8\",\n }],\n \"origin\": instance.name,\n \"route_action\": {\n \"cdn_policy\": {\n \"signed_request_mode\": \"REQUIRE_TOKENS\",\n \"signed_request_keyset\": keyset.id,\n \"signed_token_options\": {\n \"token_query_parameter\": \"hdnts\",\n \"allowed_signature_algorithms\": [\n \"ED25519\",\n \"HMAC_SHA_256\",\n \"HMAC_SHA1\",\n ],\n },\n \"add_signatures\": {\n \"actions\": \"GENERATE_TOKEN_HLS_COOKIELESS\",\n \"keyset\": keyset.id,\n \"token_ttl\": \"1200s\",\n \"token_query_parameter\": \"hdntl\",\n \"copied_parameters\": [\"URLPrefix\"],\n },\n },\n },\n },\n {\n \"description\": \"a route rule to match against\",\n \"priority\": \"3\",\n \"match_rules\": [{\n \"path_template_match\": \"/**.m3u8\",\n }],\n \"origin\": instance.name,\n \"route_action\": {\n \"cdn_policy\": {\n \"signed_request_mode\": \"REQUIRE_TOKENS\",\n \"signed_request_keyset\": keyset.id,\n \"signed_token_options\": {\n \"token_query_parameter\": \"hdntl\",\n },\n \"add_signatures\": {\n \"actions\": \"PROPAGATE_TOKEN_HLS_COOKIELESS\",\n \"token_query_parameter\": \"hdntl\",\n },\n },\n },\n },\n ],\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var secret_basic = new Gcp.SecretManager.Secret(\"secret-basic\", new()\n {\n SecretId = \"secret-name\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var secret_version_basic = new Gcp.SecretManager.SecretVersion(\"secret-version-basic\", new()\n {\n Secret = secret_basic.Id,\n SecretData = \"secret-data\",\n });\n\n var keyset = new Gcp.NetworkServices.EdgeCacheKeyset(\"keyset\", new()\n {\n Name = \"keyset-name\",\n Description = \"The default keyset\",\n PublicKeys = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheKeysetPublicKeyArgs\n {\n Id = \"my-public-key\",\n Managed = true,\n },\n },\n ValidationSharedKeys = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheKeysetValidationSharedKeyArgs\n {\n SecretVersion = secret_version_basic.Id,\n },\n },\n });\n\n var instance = new Gcp.NetworkServices.EdgeCacheOrigin(\"instance\", new()\n {\n Name = \"my-origin\",\n OriginAddress = \"gs://media-edge-default\",\n Description = \"The default bucket for media edge test\",\n });\n\n var instanceEdgeCacheService = new Gcp.NetworkServices.EdgeCacheService(\"instance\", new()\n {\n Name = \"my-service\",\n Description = \"some description\",\n Routing = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingArgs\n {\n HostRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingHostRuleArgs\n {\n Description = \"host rule description\",\n Hosts = new[]\n {\n \"sslcert.tf-test.club\",\n },\n PathMatcher = \"routes\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherArgs\n {\n Name = \"routes\",\n RouteRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs\n {\n Description = \"a route rule to match against master playlist\",\n Priority = \"1\",\n MatchRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n PathTemplateMatch = \"/master.m3u8\",\n },\n },\n Origin = instance.Name,\n RouteAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs\n {\n CdnPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs\n {\n SignedRequestMode = \"REQUIRE_TOKENS\",\n SignedRequestKeyset = keyset.Id,\n SignedTokenOptions = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs\n {\n TokenQueryParameter = \"edge-cache-token\",\n },\n SignedRequestMaximumExpirationTtl = \"600s\",\n AddSignatures = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs\n {\n Actions = \"GENERATE_COOKIE\",\n Keyset = keyset.Id,\n CopiedParameters = new[]\n {\n \"PathGlobs\",\n \"SessionID\",\n },\n },\n },\n },\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs\n {\n Description = \"a route rule to match against all playlists\",\n Priority = \"2\",\n MatchRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n PathTemplateMatch = \"/*.m3u8\",\n },\n },\n Origin = instance.Name,\n RouteAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs\n {\n CdnPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs\n {\n SignedRequestMode = \"REQUIRE_TOKENS\",\n SignedRequestKeyset = keyset.Id,\n SignedTokenOptions = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs\n {\n TokenQueryParameter = \"hdnts\",\n AllowedSignatureAlgorithms = new[]\n {\n \"ED25519\",\n \"HMAC_SHA_256\",\n \"HMAC_SHA1\",\n },\n },\n AddSignatures = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs\n {\n Actions = \"GENERATE_TOKEN_HLS_COOKIELESS\",\n Keyset = keyset.Id,\n TokenTtl = \"1200s\",\n TokenQueryParameter = \"hdntl\",\n CopiedParameters = new[]\n {\n \"URLPrefix\",\n },\n },\n },\n },\n },\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs\n {\n Description = \"a route rule to match against\",\n Priority = \"3\",\n MatchRules = new[]\n {\n new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs\n {\n PathTemplateMatch = \"/**.m3u8\",\n },\n },\n Origin = instance.Name,\n RouteAction = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs\n {\n CdnPolicy = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs\n {\n SignedRequestMode = \"REQUIRE_TOKENS\",\n SignedRequestKeyset = keyset.Id,\n SignedTokenOptions = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs\n {\n TokenQueryParameter = \"hdntl\",\n },\n AddSignatures = new Gcp.NetworkServices.Inputs.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs\n {\n Actions = \"PROPAGATE_TOKEN_HLS_COOKIELESS\",\n TokenQueryParameter = \"hdntl\",\n },\n },\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := secretmanager.NewSecret(ctx, \"secret-basic\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-name\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: \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, \"secret-version-basic\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret_basic.ID(),\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkeyset, err := networkservices.NewEdgeCacheKeyset(ctx, \"keyset\", \u0026networkservices.EdgeCacheKeysetArgs{\n\t\t\tName: pulumi.String(\"keyset-name\"),\n\t\t\tDescription: pulumi.String(\"The default keyset\"),\n\t\t\tPublicKeys: networkservices.EdgeCacheKeysetPublicKeyArray{\n\t\t\t\t\u0026networkservices.EdgeCacheKeysetPublicKeyArgs{\n\t\t\t\t\tId: pulumi.String(\"my-public-key\"),\n\t\t\t\t\tManaged: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tValidationSharedKeys: networkservices.EdgeCacheKeysetValidationSharedKeyArray{\n\t\t\t\t\u0026networkservices.EdgeCacheKeysetValidationSharedKeyArgs{\n\t\t\t\t\tSecretVersion: secret_version_basic.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance, err := networkservices.NewEdgeCacheOrigin(ctx, \"instance\", \u0026networkservices.EdgeCacheOriginArgs{\n\t\t\tName: pulumi.String(\"my-origin\"),\n\t\t\tOriginAddress: pulumi.String(\"gs://media-edge-default\"),\n\t\t\tDescription: pulumi.String(\"The default bucket for media edge test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewEdgeCacheService(ctx, \"instance\", \u0026networkservices.EdgeCacheServiceArgs{\n\t\t\tName: pulumi.String(\"my-service\"),\n\t\t\tDescription: pulumi.String(\"some description\"),\n\t\t\tRouting: \u0026networkservices.EdgeCacheServiceRoutingArgs{\n\t\t\t\tHostRules: networkservices.EdgeCacheServiceRoutingHostRuleArray{\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingHostRuleArgs{\n\t\t\t\t\t\tDescription: pulumi.String(\"host rule description\"),\n\t\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"sslcert.tf-test.club\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPathMatcher: pulumi.String(\"routes\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPathMatchers: networkservices.EdgeCacheServiceRoutingPathMatcherArray{\n\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherArgs{\n\t\t\t\t\t\tName: pulumi.String(\"routes\"),\n\t\t\t\t\t\tRouteRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"a route rule to match against master playlist\"),\n\t\t\t\t\t\t\t\tPriority: pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\tMatchRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tPathTemplateMatch: pulumi.String(\"/master.m3u8\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tOrigin: instance.Name,\n\t\t\t\t\t\t\t\tRouteAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\t\tCdnPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tSignedRequestMode: pulumi.String(\"REQUIRE_TOKENS\"),\n\t\t\t\t\t\t\t\t\t\tSignedRequestKeyset: keyset.ID(),\n\t\t\t\t\t\t\t\t\t\tSignedTokenOptions: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs{\n\t\t\t\t\t\t\t\t\t\t\tTokenQueryParameter: pulumi.String(\"edge-cache-token\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tSignedRequestMaximumExpirationTtl: pulumi.String(\"600s\"),\n\t\t\t\t\t\t\t\t\t\tAddSignatures: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs{\n\t\t\t\t\t\t\t\t\t\t\tActions: pulumi.String(\"GENERATE_COOKIE\"),\n\t\t\t\t\t\t\t\t\t\t\tKeyset: keyset.ID(),\n\t\t\t\t\t\t\t\t\t\t\tCopiedParameters: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"PathGlobs\"),\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"SessionID\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"a route rule to match against all playlists\"),\n\t\t\t\t\t\t\t\tPriority: pulumi.String(\"2\"),\n\t\t\t\t\t\t\t\tMatchRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tPathTemplateMatch: pulumi.String(\"/*.m3u8\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tOrigin: instance.Name,\n\t\t\t\t\t\t\t\tRouteAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\t\tCdnPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tSignedRequestMode: pulumi.String(\"REQUIRE_TOKENS\"),\n\t\t\t\t\t\t\t\t\t\tSignedRequestKeyset: keyset.ID(),\n\t\t\t\t\t\t\t\t\t\tSignedTokenOptions: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs{\n\t\t\t\t\t\t\t\t\t\t\tTokenQueryParameter: pulumi.String(\"hdnts\"),\n\t\t\t\t\t\t\t\t\t\t\tAllowedSignatureAlgorithms: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"ED25519\"),\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"HMAC_SHA_256\"),\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"HMAC_SHA1\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tAddSignatures: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs{\n\t\t\t\t\t\t\t\t\t\t\tActions: pulumi.String(\"GENERATE_TOKEN_HLS_COOKIELESS\"),\n\t\t\t\t\t\t\t\t\t\t\tKeyset: keyset.ID(),\n\t\t\t\t\t\t\t\t\t\t\tTokenTtl: pulumi.String(\"1200s\"),\n\t\t\t\t\t\t\t\t\t\t\tTokenQueryParameter: pulumi.String(\"hdntl\"),\n\t\t\t\t\t\t\t\t\t\t\tCopiedParameters: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"URLPrefix\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\t\tDescription: pulumi.String(\"a route rule to match against\"),\n\t\t\t\t\t\t\t\tPriority: pulumi.String(\"3\"),\n\t\t\t\t\t\t\t\tMatchRules: networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\t\u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\t\tPathTemplateMatch: pulumi.String(\"/**.m3u8\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tOrigin: instance.Name,\n\t\t\t\t\t\t\t\tRouteAction: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\t\tCdnPolicy: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs{\n\t\t\t\t\t\t\t\t\t\tSignedRequestMode: pulumi.String(\"REQUIRE_TOKENS\"),\n\t\t\t\t\t\t\t\t\t\tSignedRequestKeyset: keyset.ID(),\n\t\t\t\t\t\t\t\t\t\tSignedTokenOptions: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs{\n\t\t\t\t\t\t\t\t\t\t\tTokenQueryParameter: pulumi.String(\"hdntl\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tAddSignatures: \u0026networkservices.EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs{\n\t\t\t\t\t\t\t\t\t\t\tActions: pulumi.String(\"PROPAGATE_TOKEN_HLS_COOKIELESS\"),\n\t\t\t\t\t\t\t\t\t\t\tTokenQueryParameter: pulumi.String(\"hdntl\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheKeyset;\nimport com.pulumi.gcp.networkservices.EdgeCacheKeysetArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheKeysetPublicKeyArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheKeysetValidationSharedKeyArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheOrigin;\nimport com.pulumi.gcp.networkservices.EdgeCacheOriginArgs;\nimport com.pulumi.gcp.networkservices.EdgeCacheService;\nimport com.pulumi.gcp.networkservices.EdgeCacheServiceArgs;\nimport com.pulumi.gcp.networkservices.inputs.EdgeCacheServiceRoutingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var secret_basic = new Secret(\"secret-basic\", SecretArgs.builder()\n .secretId(\"secret-name\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var secret_version_basic = new SecretVersion(\"secret-version-basic\", SecretVersionArgs.builder()\n .secret(secret_basic.id())\n .secretData(\"secret-data\")\n .build());\n\n var keyset = new EdgeCacheKeyset(\"keyset\", EdgeCacheKeysetArgs.builder()\n .name(\"keyset-name\")\n .description(\"The default keyset\")\n .publicKeys(EdgeCacheKeysetPublicKeyArgs.builder()\n .id(\"my-public-key\")\n .managed(true)\n .build())\n .validationSharedKeys(EdgeCacheKeysetValidationSharedKeyArgs.builder()\n .secretVersion(secret_version_basic.id())\n .build())\n .build());\n\n var instance = new EdgeCacheOrigin(\"instance\", EdgeCacheOriginArgs.builder()\n .name(\"my-origin\")\n .originAddress(\"gs://media-edge-default\")\n .description(\"The default bucket for media edge test\")\n .build());\n\n var instanceEdgeCacheService = new EdgeCacheService(\"instanceEdgeCacheService\", EdgeCacheServiceArgs.builder()\n .name(\"my-service\")\n .description(\"some description\")\n .routing(EdgeCacheServiceRoutingArgs.builder()\n .hostRules(EdgeCacheServiceRoutingHostRuleArgs.builder()\n .description(\"host rule description\")\n .hosts(\"sslcert.tf-test.club\")\n .pathMatcher(\"routes\")\n .build())\n .pathMatchers(EdgeCacheServiceRoutingPathMatcherArgs.builder()\n .name(\"routes\")\n .routeRules( \n EdgeCacheServiceRoutingPathMatcherRouteRuleArgs.builder()\n .description(\"a route rule to match against master playlist\")\n .priority(1)\n .matchRules(EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .pathTemplateMatch(\"/master.m3u8\")\n .build())\n .origin(instance.name())\n .routeAction(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs.builder()\n .cdnPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs.builder()\n .signedRequestMode(\"REQUIRE_TOKENS\")\n .signedRequestKeyset(keyset.id())\n .signedTokenOptions(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs.builder()\n .tokenQueryParameter(\"edge-cache-token\")\n .build())\n .signedRequestMaximumExpirationTtl(\"600s\")\n .addSignatures(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs.builder()\n .actions(\"GENERATE_COOKIE\")\n .keyset(keyset.id())\n .copiedParameters( \n \"PathGlobs\",\n \"SessionID\")\n .build())\n .build())\n .build())\n .build(),\n EdgeCacheServiceRoutingPathMatcherRouteRuleArgs.builder()\n .description(\"a route rule to match against all playlists\")\n .priority(2)\n .matchRules(EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .pathTemplateMatch(\"/*.m3u8\")\n .build())\n .origin(instance.name())\n .routeAction(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs.builder()\n .cdnPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs.builder()\n .signedRequestMode(\"REQUIRE_TOKENS\")\n .signedRequestKeyset(keyset.id())\n .signedTokenOptions(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs.builder()\n .tokenQueryParameter(\"hdnts\")\n .allowedSignatureAlgorithms( \n \"ED25519\",\n \"HMAC_SHA_256\",\n \"HMAC_SHA1\")\n .build())\n .addSignatures(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs.builder()\n .actions(\"GENERATE_TOKEN_HLS_COOKIELESS\")\n .keyset(keyset.id())\n .tokenTtl(\"1200s\")\n .tokenQueryParameter(\"hdntl\")\n .copiedParameters(\"URLPrefix\")\n .build())\n .build())\n .build())\n .build(),\n EdgeCacheServiceRoutingPathMatcherRouteRuleArgs.builder()\n .description(\"a route rule to match against\")\n .priority(3)\n .matchRules(EdgeCacheServiceRoutingPathMatcherRouteRuleMatchRuleArgs.builder()\n .pathTemplateMatch(\"/**.m3u8\")\n .build())\n .origin(instance.name())\n .routeAction(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionArgs.builder()\n .cdnPolicy(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyArgs.builder()\n .signedRequestMode(\"REQUIRE_TOKENS\")\n .signedRequestKeyset(keyset.id())\n .signedTokenOptions(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicySignedTokenOptionsArgs.builder()\n .tokenQueryParameter(\"hdntl\")\n .build())\n .addSignatures(EdgeCacheServiceRoutingPathMatcherRouteRuleRouteActionCdnPolicyAddSignaturesArgs.builder()\n .actions(\"PROPAGATE_TOKEN_HLS_COOKIELESS\")\n .tokenQueryParameter(\"hdntl\")\n .build())\n .build())\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-basic:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret-name\n replication:\n auto: {}\n secret-version-basic:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"secret-basic\"].id}\n secretData: secret-data\n keyset:\n type: gcp:networkservices:EdgeCacheKeyset\n properties:\n name: keyset-name\n description: The default keyset\n publicKeys:\n - id: my-public-key\n managed: true\n validationSharedKeys:\n - secretVersion: ${[\"secret-version-basic\"].id}\n instance:\n type: gcp:networkservices:EdgeCacheOrigin\n properties:\n name: my-origin\n originAddress: gs://media-edge-default\n description: The default bucket for media edge test\n instanceEdgeCacheService:\n type: gcp:networkservices:EdgeCacheService\n name: instance\n properties:\n name: my-service\n description: some description\n routing:\n hostRules:\n - description: host rule description\n hosts:\n - sslcert.tf-test.club\n pathMatcher: routes\n pathMatchers:\n - name: routes\n routeRules:\n - description: a route rule to match against master playlist\n priority: 1\n matchRules:\n - pathTemplateMatch: /master.m3u8\n origin: ${instance.name}\n routeAction:\n cdnPolicy:\n signedRequestMode: REQUIRE_TOKENS\n signedRequestKeyset: ${keyset.id}\n signedTokenOptions:\n tokenQueryParameter: edge-cache-token\n signedRequestMaximumExpirationTtl: 600s\n addSignatures:\n actions: GENERATE_COOKIE\n keyset: ${keyset.id}\n copiedParameters:\n - PathGlobs\n - SessionID\n - description: a route rule to match against all playlists\n priority: 2\n matchRules:\n - pathTemplateMatch: /*.m3u8\n origin: ${instance.name}\n routeAction:\n cdnPolicy:\n signedRequestMode: REQUIRE_TOKENS\n signedRequestKeyset: ${keyset.id}\n signedTokenOptions:\n tokenQueryParameter: hdnts\n allowedSignatureAlgorithms:\n - ED25519\n - HMAC_SHA_256\n - HMAC_SHA1\n addSignatures:\n actions: GENERATE_TOKEN_HLS_COOKIELESS\n keyset: ${keyset.id}\n tokenTtl: 1200s\n tokenQueryParameter: hdntl\n copiedParameters:\n - URLPrefix\n - description: a route rule to match against\n priority: 3\n matchRules:\n - pathTemplateMatch: /**.m3u8\n origin: ${instance.name}\n routeAction:\n cdnPolicy:\n signedRequestMode: REQUIRE_TOKENS\n signedRequestKeyset: ${keyset.id}\n signedTokenOptions:\n tokenQueryParameter: hdntl\n addSignatures:\n actions: PROPAGATE_TOKEN_HLS_COOKIELESS\n tokenQueryParameter: hdntl\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nEdgeCacheService can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/edgeCacheServices/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, EdgeCacheService can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkservices/edgeCacheService:EdgeCacheService default projects/{{project}}/locations/global/edgeCacheServices/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/edgeCacheService:EdgeCacheService default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/edgeCacheService:EdgeCacheService default {{name}}\n```\n\n", "properties": { "description": { "type": "string", @@ -229409,7 +229409,7 @@ } }, "gcp:networkservices/httpRoute:HttpRoute": { - "description": "## Example Usage\n\n### Network Services Http Route Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.HttpRoute(\"default\", {\n name: \"my-http-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n hostnames: [\"example\"],\n rules: [{\n matches: [{\n queryParameters: [{\n queryParameter: \"key\",\n exactMatch: \"value\",\n }],\n fullPathMatch: \"example\",\n }],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.HttpRoute(\"default\",\n name=\"my-http-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n hostnames=[\"example\"],\n rules=[{\n \"matches\": [{\n \"query_parameters\": [{\n \"query_parameter\": \"key\",\n \"exact_match\": \"value\",\n }],\n \"full_path_match\": \"example\",\n }],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.NetworkServices.HttpRoute(\"default\", new()\n {\n Name = \"my-http-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Hostnames = new[]\n {\n \"example\",\n },\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleArgs\n {\n Matches = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchArgs\n {\n QueryParameters = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchQueryParameterArgs\n {\n QueryParameter = \"key\",\n ExactMatch = \"value\",\n },\n },\n FullPathMatch = \"example\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networkservices.NewHttpRoute(ctx, \"default\", \u0026networkservices.HttpRouteArgs{\n\t\t\tName: pulumi.String(\"my-http-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tHostnames: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"example\"),\n\t\t\t},\n\t\t\tRules: networkservices.HttpRouteRuleArray{\n\t\t\t\t\u0026networkservices.HttpRouteRuleArgs{\n\t\t\t\t\tMatches: networkservices.HttpRouteRuleMatchArray{\n\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchArgs{\n\t\t\t\t\t\t\tQueryParameters: networkservices.HttpRouteRuleMatchQueryParameterArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchQueryParameterArgs{\n\t\t\t\t\t\t\t\t\tQueryParameter: pulumi.String(\"key\"),\n\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"value\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tFullPathMatch: pulumi.String(\"example\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networkservices.HttpRoute;\nimport com.pulumi.gcp.networkservices.HttpRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HttpRoute(\"default\", HttpRouteArgs.builder()\n .name(\"my-http-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .hostnames(\"example\")\n .rules(HttpRouteRuleArgs.builder()\n .matches(HttpRouteRuleMatchArgs.builder()\n .queryParameters(HttpRouteRuleMatchQueryParameterArgs.builder()\n .queryParameter(\"key\")\n .exactMatch(\"value\")\n .build())\n .fullPathMatch(\"example\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:HttpRoute\n properties:\n name: my-http-route\n labels:\n foo: bar\n description: my description\n hostnames:\n - example\n rules:\n - matches:\n - queryParameters:\n - queryParameter: key\n exactMatch: value\n fullPathMatch: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Http Route Matches And Actions\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.HttpRoute(\"default\", {\n name: \"my-http-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n hostnames: [\"example\"],\n rules: [{\n matches: [\n {\n headers: [{\n header: \"header\",\n invertMatch: false,\n regexMatch: \"header-value\",\n }],\n queryParameters: [{\n queryParameter: \"key\",\n exactMatch: \"value\",\n }],\n prefixMatch: \"example\",\n ignoreCase: false,\n },\n {\n headers: [{\n header: \"header\",\n invertMatch: false,\n presentMatch: true,\n }],\n queryParameters: [{\n queryParameter: \"key\",\n regexMatch: \"value\",\n }],\n regexMatch: \"example\",\n ignoreCase: false,\n },\n {\n headers: [{\n header: \"header\",\n invertMatch: false,\n presentMatch: true,\n }],\n queryParameters: [{\n queryParameter: \"key\",\n presentMatch: true,\n }],\n fullPathMatch: \"example\",\n ignoreCase: false,\n },\n ],\n action: {\n redirect: {\n hostRedirect: \"new-host\",\n pathRedirect: \"new-path\",\n prefixRewrite: \"new-prefix\",\n httpsRedirect: true,\n stripQuery: true,\n portRedirect: 8081,\n },\n urlRewrite: {\n pathPrefixRewrite: \"new-prefix\",\n hostRewrite: \"new-host\",\n },\n retryPolicy: {\n retryConditions: [\"server_error\"],\n numRetries: 1,\n perTryTimeout: \"1s\",\n },\n requestMirrorPolicy: {\n destination: {\n serviceName: \"new\",\n weight: 1,\n },\n },\n corsPolicy: {\n allowOrigins: [\"example\"],\n allowMethods: [\n \"GET\",\n \"PUT\",\n ],\n allowHeaders: [\n \"version\",\n \"type\",\n ],\n exposeHeaders: [\n \"version\",\n \"type\",\n ],\n maxAge: \"1s\",\n allowCredentials: true,\n disabled: false,\n },\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.HttpRoute(\"default\",\n name=\"my-http-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n hostnames=[\"example\"],\n rules=[{\n \"matches\": [\n {\n \"headers\": [{\n \"header\": \"header\",\n \"invert_match\": False,\n \"regex_match\": \"header-value\",\n }],\n \"query_parameters\": [{\n \"query_parameter\": \"key\",\n \"exact_match\": \"value\",\n }],\n \"prefix_match\": \"example\",\n \"ignore_case\": False,\n },\n {\n \"headers\": [{\n \"header\": \"header\",\n \"invert_match\": False,\n \"present_match\": True,\n }],\n \"query_parameters\": [{\n \"query_parameter\": \"key\",\n \"regex_match\": \"value\",\n }],\n \"regex_match\": \"example\",\n \"ignore_case\": False,\n },\n {\n \"headers\": [{\n \"header\": \"header\",\n \"invert_match\": False,\n \"present_match\": True,\n }],\n \"query_parameters\": [{\n \"query_parameter\": \"key\",\n \"present_match\": True,\n }],\n \"full_path_match\": \"example\",\n \"ignore_case\": False,\n },\n ],\n \"action\": {\n \"redirect\": {\n \"host_redirect\": \"new-host\",\n \"path_redirect\": \"new-path\",\n \"prefix_rewrite\": \"new-prefix\",\n \"https_redirect\": True,\n \"strip_query\": True,\n \"port_redirect\": 8081,\n },\n \"url_rewrite\": {\n \"path_prefix_rewrite\": \"new-prefix\",\n \"host_rewrite\": \"new-host\",\n },\n \"retry_policy\": {\n \"retry_conditions\": [\"server_error\"],\n \"num_retries\": 1,\n \"per_try_timeout\": \"1s\",\n },\n \"request_mirror_policy\": {\n \"destination\": {\n \"service_name\": \"new\",\n \"weight\": 1,\n },\n },\n \"cors_policy\": {\n \"allow_origins\": [\"example\"],\n \"allow_methods\": [\n \"GET\",\n \"PUT\",\n ],\n \"allow_headers\": [\n \"version\",\n \"type\",\n ],\n \"expose_headers\": [\n \"version\",\n \"type\",\n ],\n \"max_age\": \"1s\",\n \"allow_credentials\": True,\n \"disabled\": False,\n },\n },\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.NetworkServices.HttpRoute(\"default\", new()\n {\n Name = \"my-http-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Hostnames = new[]\n {\n \"example\",\n },\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleArgs\n {\n Matches = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchArgs\n {\n Headers = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchHeaderArgs\n {\n Header = \"header\",\n InvertMatch = false,\n RegexMatch = \"header-value\",\n },\n },\n QueryParameters = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchQueryParameterArgs\n {\n QueryParameter = \"key\",\n ExactMatch = \"value\",\n },\n },\n PrefixMatch = \"example\",\n IgnoreCase = false,\n },\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchArgs\n {\n Headers = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchHeaderArgs\n {\n Header = \"header\",\n InvertMatch = false,\n PresentMatch = true,\n },\n },\n QueryParameters = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchQueryParameterArgs\n {\n QueryParameter = \"key\",\n RegexMatch = \"value\",\n },\n },\n RegexMatch = \"example\",\n IgnoreCase = false,\n },\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchArgs\n {\n Headers = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchHeaderArgs\n {\n Header = \"header\",\n InvertMatch = false,\n PresentMatch = true,\n },\n },\n QueryParameters = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchQueryParameterArgs\n {\n QueryParameter = \"key\",\n PresentMatch = true,\n },\n },\n FullPathMatch = \"example\",\n IgnoreCase = false,\n },\n },\n Action = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionArgs\n {\n Redirect = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRedirectArgs\n {\n HostRedirect = \"new-host\",\n PathRedirect = \"new-path\",\n PrefixRewrite = \"new-prefix\",\n HttpsRedirect = true,\n StripQuery = true,\n PortRedirect = 8081,\n },\n UrlRewrite = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionUrlRewriteArgs\n {\n PathPrefixRewrite = \"new-prefix\",\n HostRewrite = \"new-host\",\n },\n RetryPolicy = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRetryPolicyArgs\n {\n RetryConditions = new[]\n {\n \"server_error\",\n },\n NumRetries = 1,\n PerTryTimeout = \"1s\",\n },\n RequestMirrorPolicy = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRequestMirrorPolicyArgs\n {\n Destination = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRequestMirrorPolicyDestinationArgs\n {\n ServiceName = \"new\",\n Weight = 1,\n },\n },\n CorsPolicy = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionCorsPolicyArgs\n {\n AllowOrigins = new[]\n {\n \"example\",\n },\n AllowMethods = new[]\n {\n \"GET\",\n \"PUT\",\n },\n AllowHeaders = new[]\n {\n \"version\",\n \"type\",\n },\n ExposeHeaders = new[]\n {\n \"version\",\n \"type\",\n },\n MaxAge = \"1s\",\n AllowCredentials = true,\n Disabled = false,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networkservices.NewHttpRoute(ctx, \"default\", \u0026networkservices.HttpRouteArgs{\n\t\t\tName: pulumi.String(\"my-http-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tHostnames: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"example\"),\n\t\t\t},\n\t\t\tRules: networkservices.HttpRouteRuleArray{\n\t\t\t\t\u0026networkservices.HttpRouteRuleArgs{\n\t\t\t\t\tMatches: networkservices.HttpRouteRuleMatchArray{\n\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchArgs{\n\t\t\t\t\t\t\tHeaders: networkservices.HttpRouteRuleMatchHeaderArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchHeaderArgs{\n\t\t\t\t\t\t\t\t\tHeader: pulumi.String(\"header\"),\n\t\t\t\t\t\t\t\t\tInvertMatch: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\tRegexMatch: pulumi.String(\"header-value\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tQueryParameters: networkservices.HttpRouteRuleMatchQueryParameterArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchQueryParameterArgs{\n\t\t\t\t\t\t\t\t\tQueryParameter: pulumi.String(\"key\"),\n\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"value\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tPrefixMatch: pulumi.String(\"example\"),\n\t\t\t\t\t\t\tIgnoreCase: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchArgs{\n\t\t\t\t\t\t\tHeaders: networkservices.HttpRouteRuleMatchHeaderArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchHeaderArgs{\n\t\t\t\t\t\t\t\t\tHeader: pulumi.String(\"header\"),\n\t\t\t\t\t\t\t\t\tInvertMatch: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\tPresentMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tQueryParameters: networkservices.HttpRouteRuleMatchQueryParameterArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchQueryParameterArgs{\n\t\t\t\t\t\t\t\t\tQueryParameter: pulumi.String(\"key\"),\n\t\t\t\t\t\t\t\t\tRegexMatch: pulumi.String(\"value\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRegexMatch: pulumi.String(\"example\"),\n\t\t\t\t\t\t\tIgnoreCase: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchArgs{\n\t\t\t\t\t\t\tHeaders: networkservices.HttpRouteRuleMatchHeaderArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchHeaderArgs{\n\t\t\t\t\t\t\t\t\tHeader: pulumi.String(\"header\"),\n\t\t\t\t\t\t\t\t\tInvertMatch: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\tPresentMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tQueryParameters: networkservices.HttpRouteRuleMatchQueryParameterArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchQueryParameterArgs{\n\t\t\t\t\t\t\t\t\tQueryParameter: pulumi.String(\"key\"),\n\t\t\t\t\t\t\t\t\tPresentMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tFullPathMatch: pulumi.String(\"example\"),\n\t\t\t\t\t\t\tIgnoreCase: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tAction: \u0026networkservices.HttpRouteRuleActionArgs{\n\t\t\t\t\t\tRedirect: \u0026networkservices.HttpRouteRuleActionRedirectArgs{\n\t\t\t\t\t\t\tHostRedirect: pulumi.String(\"new-host\"),\n\t\t\t\t\t\t\tPathRedirect: pulumi.String(\"new-path\"),\n\t\t\t\t\t\t\tPrefixRewrite: pulumi.String(\"new-prefix\"),\n\t\t\t\t\t\t\tHttpsRedirect: pulumi.Bool(true),\n\t\t\t\t\t\t\tStripQuery: pulumi.Bool(true),\n\t\t\t\t\t\t\tPortRedirect: pulumi.Int(8081),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tUrlRewrite: \u0026networkservices.HttpRouteRuleActionUrlRewriteArgs{\n\t\t\t\t\t\t\tPathPrefixRewrite: pulumi.String(\"new-prefix\"),\n\t\t\t\t\t\t\tHostRewrite: pulumi.String(\"new-host\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRetryPolicy: \u0026networkservices.HttpRouteRuleActionRetryPolicyArgs{\n\t\t\t\t\t\t\tRetryConditions: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"server_error\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tNumRetries: pulumi.Int(1),\n\t\t\t\t\t\t\tPerTryTimeout: pulumi.String(\"1s\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRequestMirrorPolicy: \u0026networkservices.HttpRouteRuleActionRequestMirrorPolicyArgs{\n\t\t\t\t\t\t\tDestination: \u0026networkservices.HttpRouteRuleActionRequestMirrorPolicyDestinationArgs{\n\t\t\t\t\t\t\t\tServiceName: pulumi.String(\"new\"),\n\t\t\t\t\t\t\t\tWeight: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tCorsPolicy: \u0026networkservices.HttpRouteRuleActionCorsPolicyArgs{\n\t\t\t\t\t\t\tAllowOrigins: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"example\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAllowMethods: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"GET\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"PUT\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAllowHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"version\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"type\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tExposeHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"version\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"type\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tMaxAge: pulumi.String(\"1s\"),\n\t\t\t\t\t\t\tAllowCredentials: pulumi.Bool(true),\n\t\t\t\t\t\t\tDisabled: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networkservices.HttpRoute;\nimport com.pulumi.gcp.networkservices.HttpRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRedirectArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionUrlRewriteArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRetryPolicyArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRequestMirrorPolicyArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRequestMirrorPolicyDestinationArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionCorsPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HttpRoute(\"default\", HttpRouteArgs.builder()\n .name(\"my-http-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .hostnames(\"example\")\n .rules(HttpRouteRuleArgs.builder()\n .matches( \n HttpRouteRuleMatchArgs.builder()\n .headers(HttpRouteRuleMatchHeaderArgs.builder()\n .header(\"header\")\n .invertMatch(false)\n .regexMatch(\"header-value\")\n .build())\n .queryParameters(HttpRouteRuleMatchQueryParameterArgs.builder()\n .queryParameter(\"key\")\n .exactMatch(\"value\")\n .build())\n .prefixMatch(\"example\")\n .ignoreCase(false)\n .build(),\n HttpRouteRuleMatchArgs.builder()\n .headers(HttpRouteRuleMatchHeaderArgs.builder()\n .header(\"header\")\n .invertMatch(false)\n .presentMatch(true)\n .build())\n .queryParameters(HttpRouteRuleMatchQueryParameterArgs.builder()\n .queryParameter(\"key\")\n .regexMatch(\"value\")\n .build())\n .regexMatch(\"example\")\n .ignoreCase(false)\n .build(),\n HttpRouteRuleMatchArgs.builder()\n .headers(HttpRouteRuleMatchHeaderArgs.builder()\n .header(\"header\")\n .invertMatch(false)\n .presentMatch(true)\n .build())\n .queryParameters(HttpRouteRuleMatchQueryParameterArgs.builder()\n .queryParameter(\"key\")\n .presentMatch(true)\n .build())\n .fullPathMatch(\"example\")\n .ignoreCase(false)\n .build())\n .action(HttpRouteRuleActionArgs.builder()\n .redirect(HttpRouteRuleActionRedirectArgs.builder()\n .hostRedirect(\"new-host\")\n .pathRedirect(\"new-path\")\n .prefixRewrite(\"new-prefix\")\n .httpsRedirect(true)\n .stripQuery(true)\n .portRedirect(8081)\n .build())\n .urlRewrite(HttpRouteRuleActionUrlRewriteArgs.builder()\n .pathPrefixRewrite(\"new-prefix\")\n .hostRewrite(\"new-host\")\n .build())\n .retryPolicy(HttpRouteRuleActionRetryPolicyArgs.builder()\n .retryConditions(\"server_error\")\n .numRetries(1)\n .perTryTimeout(\"1s\")\n .build())\n .requestMirrorPolicy(HttpRouteRuleActionRequestMirrorPolicyArgs.builder()\n .destination(HttpRouteRuleActionRequestMirrorPolicyDestinationArgs.builder()\n .serviceName(\"new\")\n .weight(1)\n .build())\n .build())\n .corsPolicy(HttpRouteRuleActionCorsPolicyArgs.builder()\n .allowOrigins(\"example\")\n .allowMethods( \n \"GET\",\n \"PUT\")\n .allowHeaders( \n \"version\",\n \"type\")\n .exposeHeaders( \n \"version\",\n \"type\")\n .maxAge(\"1s\")\n .allowCredentials(true)\n .disabled(false)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:HttpRoute\n properties:\n name: my-http-route\n labels:\n foo: bar\n description: my description\n hostnames:\n - example\n rules:\n - matches:\n - headers:\n - header: header\n invertMatch: false\n regexMatch: header-value\n queryParameters:\n - queryParameter: key\n exactMatch: value\n prefixMatch: example\n ignoreCase: false\n - headers:\n - header: header\n invertMatch: false\n presentMatch: true\n queryParameters:\n - queryParameter: key\n regexMatch: value\n regexMatch: example\n ignoreCase: false\n - headers:\n - header: header\n invertMatch: false\n presentMatch: true\n queryParameters:\n - queryParameter: key\n presentMatch: true\n fullPathMatch: example\n ignoreCase: false\n action:\n redirect:\n hostRedirect: new-host\n pathRedirect: new-path\n prefixRewrite: new-prefix\n httpsRedirect: true\n stripQuery: true\n portRedirect: 8081\n urlRewrite:\n pathPrefixRewrite: new-prefix\n hostRewrite: new-host\n retryPolicy:\n retryConditions:\n - server_error\n numRetries: 1\n perTryTimeout: 1s\n requestMirrorPolicy:\n destination:\n serviceName: new\n weight: 1\n corsPolicy:\n allowOrigins:\n - example\n allowMethods:\n - GET\n - PUT\n allowHeaders:\n - version\n - type\n exposeHeaders:\n - version\n - type\n maxAge: 1s\n allowCredentials: true\n disabled: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Http Route Actions\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.HttpRoute(\"default\", {\n name: \"my-http-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n hostnames: [\"example\"],\n rules: [{\n action: {\n faultInjectionPolicy: {\n delay: {\n fixedDelay: \"1s\",\n percentage: 1,\n },\n abort: {\n httpStatus: 500,\n percentage: 1,\n },\n },\n urlRewrite: {\n pathPrefixRewrite: \"new-prefix\",\n hostRewrite: \"new-host\",\n },\n retryPolicy: {\n retryConditions: [\"server_error\"],\n numRetries: 1,\n perTryTimeout: \"1s\",\n },\n requestMirrorPolicy: {\n destination: {\n serviceName: \"new\",\n weight: 1,\n },\n },\n corsPolicy: {\n allowOrigins: [\"example\"],\n allowMethods: [\n \"GET\",\n \"PUT\",\n ],\n allowHeaders: [\n \"version\",\n \"type\",\n ],\n exposeHeaders: [\n \"version\",\n \"type\",\n ],\n maxAge: \"1s\",\n allowCredentials: true,\n disabled: false,\n },\n requestHeaderModifier: {\n set: {\n version: \"1\",\n type: \"json\",\n },\n add: {\n \"minor-version\": \"1\",\n },\n removes: [\"arg\"],\n },\n responseHeaderModifier: {\n set: {\n version: \"1\",\n type: \"json\",\n },\n add: {\n \"minor-version\": \"1\",\n },\n removes: [\"removearg\"],\n },\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.HttpRoute(\"default\",\n name=\"my-http-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n hostnames=[\"example\"],\n rules=[{\n \"action\": {\n \"fault_injection_policy\": {\n \"delay\": {\n \"fixed_delay\": \"1s\",\n \"percentage\": 1,\n },\n \"abort\": {\n \"http_status\": 500,\n \"percentage\": 1,\n },\n },\n \"url_rewrite\": {\n \"path_prefix_rewrite\": \"new-prefix\",\n \"host_rewrite\": \"new-host\",\n },\n \"retry_policy\": {\n \"retry_conditions\": [\"server_error\"],\n \"num_retries\": 1,\n \"per_try_timeout\": \"1s\",\n },\n \"request_mirror_policy\": {\n \"destination\": {\n \"service_name\": \"new\",\n \"weight\": 1,\n },\n },\n \"cors_policy\": {\n \"allow_origins\": [\"example\"],\n \"allow_methods\": [\n \"GET\",\n \"PUT\",\n ],\n \"allow_headers\": [\n \"version\",\n \"type\",\n ],\n \"expose_headers\": [\n \"version\",\n \"type\",\n ],\n \"max_age\": \"1s\",\n \"allow_credentials\": True,\n \"disabled\": False,\n },\n \"request_header_modifier\": {\n \"set\": {\n \"version\": \"1\",\n \"type\": \"json\",\n },\n \"add\": {\n \"minor_version\": \"1\",\n },\n \"removes\": [\"arg\"],\n },\n \"response_header_modifier\": {\n \"set\": {\n \"version\": \"1\",\n \"type\": \"json\",\n },\n \"add\": {\n \"minor_version\": \"1\",\n },\n \"removes\": [\"removearg\"],\n },\n },\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.NetworkServices.HttpRoute(\"default\", new()\n {\n Name = \"my-http-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Hostnames = new[]\n {\n \"example\",\n },\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleArgs\n {\n Action = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionArgs\n {\n FaultInjectionPolicy = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionFaultInjectionPolicyArgs\n {\n Delay = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionFaultInjectionPolicyDelayArgs\n {\n FixedDelay = \"1s\",\n Percentage = 1,\n },\n Abort = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionFaultInjectionPolicyAbortArgs\n {\n HttpStatus = 500,\n Percentage = 1,\n },\n },\n UrlRewrite = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionUrlRewriteArgs\n {\n PathPrefixRewrite = \"new-prefix\",\n HostRewrite = \"new-host\",\n },\n RetryPolicy = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRetryPolicyArgs\n {\n RetryConditions = new[]\n {\n \"server_error\",\n },\n NumRetries = 1,\n PerTryTimeout = \"1s\",\n },\n RequestMirrorPolicy = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRequestMirrorPolicyArgs\n {\n Destination = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRequestMirrorPolicyDestinationArgs\n {\n ServiceName = \"new\",\n Weight = 1,\n },\n },\n CorsPolicy = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionCorsPolicyArgs\n {\n AllowOrigins = new[]\n {\n \"example\",\n },\n AllowMethods = new[]\n {\n \"GET\",\n \"PUT\",\n },\n AllowHeaders = new[]\n {\n \"version\",\n \"type\",\n },\n ExposeHeaders = new[]\n {\n \"version\",\n \"type\",\n },\n MaxAge = \"1s\",\n AllowCredentials = true,\n Disabled = false,\n },\n RequestHeaderModifier = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRequestHeaderModifierArgs\n {\n Set = \n {\n { \"version\", \"1\" },\n { \"type\", \"json\" },\n },\n Add = \n {\n { \"minor-version\", \"1\" },\n },\n Removes = new[]\n {\n \"arg\",\n },\n },\n ResponseHeaderModifier = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionResponseHeaderModifierArgs\n {\n Set = \n {\n { \"version\", \"1\" },\n { \"type\", \"json\" },\n },\n Add = \n {\n { \"minor-version\", \"1\" },\n },\n Removes = new[]\n {\n \"removearg\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networkservices.NewHttpRoute(ctx, \"default\", \u0026networkservices.HttpRouteArgs{\n\t\t\tName: pulumi.String(\"my-http-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tHostnames: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"example\"),\n\t\t\t},\n\t\t\tRules: networkservices.HttpRouteRuleArray{\n\t\t\t\t\u0026networkservices.HttpRouteRuleArgs{\n\t\t\t\t\tAction: \u0026networkservices.HttpRouteRuleActionArgs{\n\t\t\t\t\t\tFaultInjectionPolicy: \u0026networkservices.HttpRouteRuleActionFaultInjectionPolicyArgs{\n\t\t\t\t\t\t\tDelay: \u0026networkservices.HttpRouteRuleActionFaultInjectionPolicyDelayArgs{\n\t\t\t\t\t\t\t\tFixedDelay: pulumi.String(\"1s\"),\n\t\t\t\t\t\t\t\tPercentage: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAbort: \u0026networkservices.HttpRouteRuleActionFaultInjectionPolicyAbortArgs{\n\t\t\t\t\t\t\t\tHttpStatus: pulumi.Int(500),\n\t\t\t\t\t\t\t\tPercentage: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tUrlRewrite: \u0026networkservices.HttpRouteRuleActionUrlRewriteArgs{\n\t\t\t\t\t\t\tPathPrefixRewrite: pulumi.String(\"new-prefix\"),\n\t\t\t\t\t\t\tHostRewrite: pulumi.String(\"new-host\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRetryPolicy: \u0026networkservices.HttpRouteRuleActionRetryPolicyArgs{\n\t\t\t\t\t\t\tRetryConditions: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"server_error\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tNumRetries: pulumi.Int(1),\n\t\t\t\t\t\t\tPerTryTimeout: pulumi.String(\"1s\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRequestMirrorPolicy: \u0026networkservices.HttpRouteRuleActionRequestMirrorPolicyArgs{\n\t\t\t\t\t\t\tDestination: \u0026networkservices.HttpRouteRuleActionRequestMirrorPolicyDestinationArgs{\n\t\t\t\t\t\t\t\tServiceName: pulumi.String(\"new\"),\n\t\t\t\t\t\t\t\tWeight: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tCorsPolicy: \u0026networkservices.HttpRouteRuleActionCorsPolicyArgs{\n\t\t\t\t\t\t\tAllowOrigins: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"example\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAllowMethods: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"GET\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"PUT\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAllowHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"version\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"type\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tExposeHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"version\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"type\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tMaxAge: pulumi.String(\"1s\"),\n\t\t\t\t\t\t\tAllowCredentials: pulumi.Bool(true),\n\t\t\t\t\t\t\tDisabled: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRequestHeaderModifier: \u0026networkservices.HttpRouteRuleActionRequestHeaderModifierArgs{\n\t\t\t\t\t\t\tSet: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\"version\": pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\t\"type\": pulumi.String(\"json\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAdd: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\"minor-version\": pulumi.String(\"1\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"arg\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tResponseHeaderModifier: \u0026networkservices.HttpRouteRuleActionResponseHeaderModifierArgs{\n\t\t\t\t\t\t\tSet: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\"version\": pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\t\"type\": pulumi.String(\"json\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAdd: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\"minor-version\": pulumi.String(\"1\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"removearg\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networkservices.HttpRoute;\nimport com.pulumi.gcp.networkservices.HttpRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionFaultInjectionPolicyArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionFaultInjectionPolicyDelayArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionFaultInjectionPolicyAbortArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionUrlRewriteArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRetryPolicyArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRequestMirrorPolicyArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRequestMirrorPolicyDestinationArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionCorsPolicyArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRequestHeaderModifierArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionResponseHeaderModifierArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HttpRoute(\"default\", HttpRouteArgs.builder()\n .name(\"my-http-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .hostnames(\"example\")\n .rules(HttpRouteRuleArgs.builder()\n .action(HttpRouteRuleActionArgs.builder()\n .faultInjectionPolicy(HttpRouteRuleActionFaultInjectionPolicyArgs.builder()\n .delay(HttpRouteRuleActionFaultInjectionPolicyDelayArgs.builder()\n .fixedDelay(\"1s\")\n .percentage(1)\n .build())\n .abort(HttpRouteRuleActionFaultInjectionPolicyAbortArgs.builder()\n .httpStatus(500)\n .percentage(1)\n .build())\n .build())\n .urlRewrite(HttpRouteRuleActionUrlRewriteArgs.builder()\n .pathPrefixRewrite(\"new-prefix\")\n .hostRewrite(\"new-host\")\n .build())\n .retryPolicy(HttpRouteRuleActionRetryPolicyArgs.builder()\n .retryConditions(\"server_error\")\n .numRetries(1)\n .perTryTimeout(\"1s\")\n .build())\n .requestMirrorPolicy(HttpRouteRuleActionRequestMirrorPolicyArgs.builder()\n .destination(HttpRouteRuleActionRequestMirrorPolicyDestinationArgs.builder()\n .serviceName(\"new\")\n .weight(1)\n .build())\n .build())\n .corsPolicy(HttpRouteRuleActionCorsPolicyArgs.builder()\n .allowOrigins(\"example\")\n .allowMethods( \n \"GET\",\n \"PUT\")\n .allowHeaders( \n \"version\",\n \"type\")\n .exposeHeaders( \n \"version\",\n \"type\")\n .maxAge(\"1s\")\n .allowCredentials(true)\n .disabled(false)\n .build())\n .requestHeaderModifier(HttpRouteRuleActionRequestHeaderModifierArgs.builder()\n .set(Map.ofEntries(\n Map.entry(\"version\", \"1\"),\n Map.entry(\"type\", \"json\")\n ))\n .add(Map.of(\"minor-version\", \"1\"))\n .removes(\"arg\")\n .build())\n .responseHeaderModifier(HttpRouteRuleActionResponseHeaderModifierArgs.builder()\n .set(Map.ofEntries(\n Map.entry(\"version\", \"1\"),\n Map.entry(\"type\", \"json\")\n ))\n .add(Map.of(\"minor-version\", \"1\"))\n .removes(\"removearg\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:HttpRoute\n properties:\n name: my-http-route\n labels:\n foo: bar\n description: my description\n hostnames:\n - example\n rules:\n - action:\n faultInjectionPolicy:\n delay:\n fixedDelay: 1s\n percentage: 1\n abort:\n httpStatus: 500\n percentage: 1\n urlRewrite:\n pathPrefixRewrite: new-prefix\n hostRewrite: new-host\n retryPolicy:\n retryConditions:\n - server_error\n numRetries: 1\n perTryTimeout: 1s\n requestMirrorPolicy:\n destination:\n serviceName: new\n weight: 1\n corsPolicy:\n allowOrigins:\n - example\n allowMethods:\n - GET\n - PUT\n allowHeaders:\n - version\n - type\n exposeHeaders:\n - version\n - type\n maxAge: 1s\n allowCredentials: true\n disabled: false\n requestHeaderModifier:\n set:\n version: '1'\n type: json\n add:\n minor-version: '1'\n removes:\n - arg\n responseHeaderModifier:\n set:\n version: '1'\n type: json\n add:\n minor-version: '1'\n removes:\n - removearg\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Http Route Mesh Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.Mesh(\"default\", {\n name: \"my-http-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n});\nconst defaultHttpRoute = new gcp.networkservices.HttpRoute(\"default\", {\n name: \"my-http-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n hostnames: [\"example\"],\n meshes: [_default.id],\n rules: [{\n matches: [{\n queryParameters: [{\n queryParameter: \"key\",\n exactMatch: \"value\",\n }],\n fullPathMatch: \"example\",\n }],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.Mesh(\"default\",\n name=\"my-http-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\")\ndefault_http_route = gcp.networkservices.HttpRoute(\"default\",\n name=\"my-http-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n hostnames=[\"example\"],\n meshes=[default.id],\n rules=[{\n \"matches\": [{\n \"query_parameters\": [{\n \"query_parameter\": \"key\",\n \"exact_match\": \"value\",\n }],\n \"full_path_match\": \"example\",\n }],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.NetworkServices.Mesh(\"default\", new()\n {\n Name = \"my-http-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n });\n\n var defaultHttpRoute = new Gcp.NetworkServices.HttpRoute(\"default\", new()\n {\n Name = \"my-http-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Hostnames = new[]\n {\n \"example\",\n },\n Meshes = new[]\n {\n @default.Id,\n },\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleArgs\n {\n Matches = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchArgs\n {\n QueryParameters = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchQueryParameterArgs\n {\n QueryParameter = \"key\",\n ExactMatch = \"value\",\n },\n },\n FullPathMatch = \"example\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networkservices.NewMesh(ctx, \"default\", \u0026networkservices.MeshArgs{\n\t\t\tName: pulumi.String(\"my-http-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewHttpRoute(ctx, \"default\", \u0026networkservices.HttpRouteArgs{\n\t\t\tName: pulumi.String(\"my-http-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tHostnames: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"example\"),\n\t\t\t},\n\t\t\tMeshes: pulumi.StringArray{\n\t\t\t\t_default.ID(),\n\t\t\t},\n\t\t\tRules: networkservices.HttpRouteRuleArray{\n\t\t\t\t\u0026networkservices.HttpRouteRuleArgs{\n\t\t\t\t\tMatches: networkservices.HttpRouteRuleMatchArray{\n\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchArgs{\n\t\t\t\t\t\t\tQueryParameters: networkservices.HttpRouteRuleMatchQueryParameterArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchQueryParameterArgs{\n\t\t\t\t\t\t\t\t\tQueryParameter: pulumi.String(\"key\"),\n\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"value\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tFullPathMatch: pulumi.String(\"example\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networkservices.Mesh;\nimport com.pulumi.gcp.networkservices.MeshArgs;\nimport com.pulumi.gcp.networkservices.HttpRoute;\nimport com.pulumi.gcp.networkservices.HttpRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Mesh(\"default\", MeshArgs.builder()\n .name(\"my-http-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .build());\n\n var defaultHttpRoute = new HttpRoute(\"defaultHttpRoute\", HttpRouteArgs.builder()\n .name(\"my-http-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .hostnames(\"example\")\n .meshes(default_.id())\n .rules(HttpRouteRuleArgs.builder()\n .matches(HttpRouteRuleMatchArgs.builder()\n .queryParameters(HttpRouteRuleMatchQueryParameterArgs.builder()\n .queryParameter(\"key\")\n .exactMatch(\"value\")\n .build())\n .fullPathMatch(\"example\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:Mesh\n properties:\n name: my-http-route\n labels:\n foo: bar\n description: my description\n defaultHttpRoute:\n type: gcp:networkservices:HttpRoute\n name: default\n properties:\n name: my-http-route\n labels:\n foo: bar\n description: my description\n hostnames:\n - example\n meshes:\n - ${default.id}\n rules:\n - matches:\n - queryParameters:\n - queryParameter: key\n exactMatch: value\n fullPathMatch: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nHttpRoute can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/httpRoutes/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, HttpRoute can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkservices/httpRoute:HttpRoute default projects/{{project}}/locations/global/httpRoutes/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/httpRoute:HttpRoute default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/httpRoute:HttpRoute default {{name}}\n```\n\n", + "description": "## Example Usage\n\n### Network Services Http Route Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.HttpRoute(\"default\", {\n name: \"my-http-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n hostnames: [\"example\"],\n rules: [{\n matches: [{\n queryParameters: [{\n queryParameter: \"key\",\n exactMatch: \"value\",\n }],\n fullPathMatch: \"example\",\n }],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.HttpRoute(\"default\",\n name=\"my-http-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n hostnames=[\"example\"],\n rules=[{\n \"matches\": [{\n \"query_parameters\": [{\n \"query_parameter\": \"key\",\n \"exact_match\": \"value\",\n }],\n \"full_path_match\": \"example\",\n }],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.NetworkServices.HttpRoute(\"default\", new()\n {\n Name = \"my-http-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Hostnames = new[]\n {\n \"example\",\n },\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleArgs\n {\n Matches = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchArgs\n {\n QueryParameters = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchQueryParameterArgs\n {\n QueryParameter = \"key\",\n ExactMatch = \"value\",\n },\n },\n FullPathMatch = \"example\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networkservices.NewHttpRoute(ctx, \"default\", \u0026networkservices.HttpRouteArgs{\n\t\t\tName: pulumi.String(\"my-http-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tHostnames: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"example\"),\n\t\t\t},\n\t\t\tRules: networkservices.HttpRouteRuleArray{\n\t\t\t\t\u0026networkservices.HttpRouteRuleArgs{\n\t\t\t\t\tMatches: networkservices.HttpRouteRuleMatchArray{\n\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchArgs{\n\t\t\t\t\t\t\tQueryParameters: networkservices.HttpRouteRuleMatchQueryParameterArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchQueryParameterArgs{\n\t\t\t\t\t\t\t\t\tQueryParameter: pulumi.String(\"key\"),\n\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"value\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tFullPathMatch: pulumi.String(\"example\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networkservices.HttpRoute;\nimport com.pulumi.gcp.networkservices.HttpRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HttpRoute(\"default\", HttpRouteArgs.builder()\n .name(\"my-http-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .hostnames(\"example\")\n .rules(HttpRouteRuleArgs.builder()\n .matches(HttpRouteRuleMatchArgs.builder()\n .queryParameters(HttpRouteRuleMatchQueryParameterArgs.builder()\n .queryParameter(\"key\")\n .exactMatch(\"value\")\n .build())\n .fullPathMatch(\"example\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:HttpRoute\n properties:\n name: my-http-route\n labels:\n foo: bar\n description: my description\n hostnames:\n - example\n rules:\n - matches:\n - queryParameters:\n - queryParameter: key\n exactMatch: value\n fullPathMatch: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Http Route Matches And Actions\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.HttpRoute(\"default\", {\n name: \"my-http-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n hostnames: [\"example\"],\n rules: [{\n matches: [\n {\n headers: [{\n header: \"header\",\n invertMatch: false,\n regexMatch: \"header-value\",\n }],\n queryParameters: [{\n queryParameter: \"key\",\n exactMatch: \"value\",\n }],\n prefixMatch: \"example\",\n ignoreCase: false,\n },\n {\n headers: [{\n header: \"header\",\n invertMatch: false,\n presentMatch: true,\n }],\n queryParameters: [{\n queryParameter: \"key\",\n regexMatch: \"value\",\n }],\n regexMatch: \"example\",\n ignoreCase: false,\n },\n {\n headers: [{\n header: \"header\",\n invertMatch: false,\n presentMatch: true,\n }],\n queryParameters: [{\n queryParameter: \"key\",\n presentMatch: true,\n }],\n fullPathMatch: \"example\",\n ignoreCase: false,\n },\n ],\n action: {\n redirect: {\n hostRedirect: \"new-host\",\n pathRedirect: \"new-path\",\n prefixRewrite: \"new-prefix\",\n httpsRedirect: true,\n stripQuery: true,\n portRedirect: 8081,\n },\n urlRewrite: {\n pathPrefixRewrite: \"new-prefix\",\n hostRewrite: \"new-host\",\n },\n retryPolicy: {\n retryConditions: [\"server_error\"],\n numRetries: 1,\n perTryTimeout: \"1s\",\n },\n requestMirrorPolicy: {\n destination: {\n serviceName: \"new\",\n weight: 1,\n },\n },\n corsPolicy: {\n allowOrigins: [\"example\"],\n allowMethods: [\n \"GET\",\n \"PUT\",\n ],\n allowHeaders: [\n \"version\",\n \"type\",\n ],\n exposeHeaders: [\n \"version\",\n \"type\",\n ],\n maxAge: \"1s\",\n allowCredentials: true,\n disabled: false,\n },\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.HttpRoute(\"default\",\n name=\"my-http-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n hostnames=[\"example\"],\n rules=[{\n \"matches\": [\n {\n \"headers\": [{\n \"header\": \"header\",\n \"invert_match\": False,\n \"regex_match\": \"header-value\",\n }],\n \"query_parameters\": [{\n \"query_parameter\": \"key\",\n \"exact_match\": \"value\",\n }],\n \"prefix_match\": \"example\",\n \"ignore_case\": False,\n },\n {\n \"headers\": [{\n \"header\": \"header\",\n \"invert_match\": False,\n \"present_match\": True,\n }],\n \"query_parameters\": [{\n \"query_parameter\": \"key\",\n \"regex_match\": \"value\",\n }],\n \"regex_match\": \"example\",\n \"ignore_case\": False,\n },\n {\n \"headers\": [{\n \"header\": \"header\",\n \"invert_match\": False,\n \"present_match\": True,\n }],\n \"query_parameters\": [{\n \"query_parameter\": \"key\",\n \"present_match\": True,\n }],\n \"full_path_match\": \"example\",\n \"ignore_case\": False,\n },\n ],\n \"action\": {\n \"redirect\": {\n \"host_redirect\": \"new-host\",\n \"path_redirect\": \"new-path\",\n \"prefix_rewrite\": \"new-prefix\",\n \"https_redirect\": True,\n \"strip_query\": True,\n \"port_redirect\": 8081,\n },\n \"url_rewrite\": {\n \"path_prefix_rewrite\": \"new-prefix\",\n \"host_rewrite\": \"new-host\",\n },\n \"retry_policy\": {\n \"retry_conditions\": [\"server_error\"],\n \"num_retries\": 1,\n \"per_try_timeout\": \"1s\",\n },\n \"request_mirror_policy\": {\n \"destination\": {\n \"service_name\": \"new\",\n \"weight\": 1,\n },\n },\n \"cors_policy\": {\n \"allow_origins\": [\"example\"],\n \"allow_methods\": [\n \"GET\",\n \"PUT\",\n ],\n \"allow_headers\": [\n \"version\",\n \"type\",\n ],\n \"expose_headers\": [\n \"version\",\n \"type\",\n ],\n \"max_age\": \"1s\",\n \"allow_credentials\": True,\n \"disabled\": False,\n },\n },\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.NetworkServices.HttpRoute(\"default\", new()\n {\n Name = \"my-http-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Hostnames = new[]\n {\n \"example\",\n },\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleArgs\n {\n Matches = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchArgs\n {\n Headers = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchHeaderArgs\n {\n Header = \"header\",\n InvertMatch = false,\n RegexMatch = \"header-value\",\n },\n },\n QueryParameters = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchQueryParameterArgs\n {\n QueryParameter = \"key\",\n ExactMatch = \"value\",\n },\n },\n PrefixMatch = \"example\",\n IgnoreCase = false,\n },\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchArgs\n {\n Headers = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchHeaderArgs\n {\n Header = \"header\",\n InvertMatch = false,\n PresentMatch = true,\n },\n },\n QueryParameters = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchQueryParameterArgs\n {\n QueryParameter = \"key\",\n RegexMatch = \"value\",\n },\n },\n RegexMatch = \"example\",\n IgnoreCase = false,\n },\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchArgs\n {\n Headers = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchHeaderArgs\n {\n Header = \"header\",\n InvertMatch = false,\n PresentMatch = true,\n },\n },\n QueryParameters = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchQueryParameterArgs\n {\n QueryParameter = \"key\",\n PresentMatch = true,\n },\n },\n FullPathMatch = \"example\",\n IgnoreCase = false,\n },\n },\n Action = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionArgs\n {\n Redirect = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRedirectArgs\n {\n HostRedirect = \"new-host\",\n PathRedirect = \"new-path\",\n PrefixRewrite = \"new-prefix\",\n HttpsRedirect = true,\n StripQuery = true,\n PortRedirect = 8081,\n },\n UrlRewrite = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionUrlRewriteArgs\n {\n PathPrefixRewrite = \"new-prefix\",\n HostRewrite = \"new-host\",\n },\n RetryPolicy = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRetryPolicyArgs\n {\n RetryConditions = new[]\n {\n \"server_error\",\n },\n NumRetries = 1,\n PerTryTimeout = \"1s\",\n },\n RequestMirrorPolicy = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRequestMirrorPolicyArgs\n {\n Destination = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRequestMirrorPolicyDestinationArgs\n {\n ServiceName = \"new\",\n Weight = 1,\n },\n },\n CorsPolicy = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionCorsPolicyArgs\n {\n AllowOrigins = new[]\n {\n \"example\",\n },\n AllowMethods = new[]\n {\n \"GET\",\n \"PUT\",\n },\n AllowHeaders = new[]\n {\n \"version\",\n \"type\",\n },\n ExposeHeaders = new[]\n {\n \"version\",\n \"type\",\n },\n MaxAge = \"1s\",\n AllowCredentials = true,\n Disabled = false,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networkservices.NewHttpRoute(ctx, \"default\", \u0026networkservices.HttpRouteArgs{\n\t\t\tName: pulumi.String(\"my-http-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tHostnames: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"example\"),\n\t\t\t},\n\t\t\tRules: networkservices.HttpRouteRuleArray{\n\t\t\t\t\u0026networkservices.HttpRouteRuleArgs{\n\t\t\t\t\tMatches: networkservices.HttpRouteRuleMatchArray{\n\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchArgs{\n\t\t\t\t\t\t\tHeaders: networkservices.HttpRouteRuleMatchHeaderArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchHeaderArgs{\n\t\t\t\t\t\t\t\t\tHeader: pulumi.String(\"header\"),\n\t\t\t\t\t\t\t\t\tInvertMatch: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\tRegexMatch: pulumi.String(\"header-value\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tQueryParameters: networkservices.HttpRouteRuleMatchQueryParameterArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchQueryParameterArgs{\n\t\t\t\t\t\t\t\t\tQueryParameter: pulumi.String(\"key\"),\n\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"value\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tPrefixMatch: pulumi.String(\"example\"),\n\t\t\t\t\t\t\tIgnoreCase: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchArgs{\n\t\t\t\t\t\t\tHeaders: networkservices.HttpRouteRuleMatchHeaderArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchHeaderArgs{\n\t\t\t\t\t\t\t\t\tHeader: pulumi.String(\"header\"),\n\t\t\t\t\t\t\t\t\tInvertMatch: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\tPresentMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tQueryParameters: networkservices.HttpRouteRuleMatchQueryParameterArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchQueryParameterArgs{\n\t\t\t\t\t\t\t\t\tQueryParameter: pulumi.String(\"key\"),\n\t\t\t\t\t\t\t\t\tRegexMatch: pulumi.String(\"value\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRegexMatch: pulumi.String(\"example\"),\n\t\t\t\t\t\t\tIgnoreCase: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchArgs{\n\t\t\t\t\t\t\tHeaders: networkservices.HttpRouteRuleMatchHeaderArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchHeaderArgs{\n\t\t\t\t\t\t\t\t\tHeader: pulumi.String(\"header\"),\n\t\t\t\t\t\t\t\t\tInvertMatch: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\tPresentMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tQueryParameters: networkservices.HttpRouteRuleMatchQueryParameterArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchQueryParameterArgs{\n\t\t\t\t\t\t\t\t\tQueryParameter: pulumi.String(\"key\"),\n\t\t\t\t\t\t\t\t\tPresentMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tFullPathMatch: pulumi.String(\"example\"),\n\t\t\t\t\t\t\tIgnoreCase: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tAction: \u0026networkservices.HttpRouteRuleActionArgs{\n\t\t\t\t\t\tRedirect: \u0026networkservices.HttpRouteRuleActionRedirectArgs{\n\t\t\t\t\t\t\tHostRedirect: pulumi.String(\"new-host\"),\n\t\t\t\t\t\t\tPathRedirect: pulumi.String(\"new-path\"),\n\t\t\t\t\t\t\tPrefixRewrite: pulumi.String(\"new-prefix\"),\n\t\t\t\t\t\t\tHttpsRedirect: pulumi.Bool(true),\n\t\t\t\t\t\t\tStripQuery: pulumi.Bool(true),\n\t\t\t\t\t\t\tPortRedirect: pulumi.Int(8081),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tUrlRewrite: \u0026networkservices.HttpRouteRuleActionUrlRewriteArgs{\n\t\t\t\t\t\t\tPathPrefixRewrite: pulumi.String(\"new-prefix\"),\n\t\t\t\t\t\t\tHostRewrite: pulumi.String(\"new-host\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRetryPolicy: \u0026networkservices.HttpRouteRuleActionRetryPolicyArgs{\n\t\t\t\t\t\t\tRetryConditions: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"server_error\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tNumRetries: pulumi.Int(1),\n\t\t\t\t\t\t\tPerTryTimeout: pulumi.String(\"1s\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRequestMirrorPolicy: \u0026networkservices.HttpRouteRuleActionRequestMirrorPolicyArgs{\n\t\t\t\t\t\t\tDestination: \u0026networkservices.HttpRouteRuleActionRequestMirrorPolicyDestinationArgs{\n\t\t\t\t\t\t\t\tServiceName: pulumi.String(\"new\"),\n\t\t\t\t\t\t\t\tWeight: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tCorsPolicy: \u0026networkservices.HttpRouteRuleActionCorsPolicyArgs{\n\t\t\t\t\t\t\tAllowOrigins: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"example\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAllowMethods: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"GET\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"PUT\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAllowHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"version\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"type\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tExposeHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"version\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"type\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tMaxAge: pulumi.String(\"1s\"),\n\t\t\t\t\t\t\tAllowCredentials: pulumi.Bool(true),\n\t\t\t\t\t\t\tDisabled: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networkservices.HttpRoute;\nimport com.pulumi.gcp.networkservices.HttpRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRedirectArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionUrlRewriteArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRetryPolicyArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRequestMirrorPolicyArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRequestMirrorPolicyDestinationArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionCorsPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HttpRoute(\"default\", HttpRouteArgs.builder()\n .name(\"my-http-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .hostnames(\"example\")\n .rules(HttpRouteRuleArgs.builder()\n .matches( \n HttpRouteRuleMatchArgs.builder()\n .headers(HttpRouteRuleMatchHeaderArgs.builder()\n .header(\"header\")\n .invertMatch(false)\n .regexMatch(\"header-value\")\n .build())\n .queryParameters(HttpRouteRuleMatchQueryParameterArgs.builder()\n .queryParameter(\"key\")\n .exactMatch(\"value\")\n .build())\n .prefixMatch(\"example\")\n .ignoreCase(false)\n .build(),\n HttpRouteRuleMatchArgs.builder()\n .headers(HttpRouteRuleMatchHeaderArgs.builder()\n .header(\"header\")\n .invertMatch(false)\n .presentMatch(true)\n .build())\n .queryParameters(HttpRouteRuleMatchQueryParameterArgs.builder()\n .queryParameter(\"key\")\n .regexMatch(\"value\")\n .build())\n .regexMatch(\"example\")\n .ignoreCase(false)\n .build(),\n HttpRouteRuleMatchArgs.builder()\n .headers(HttpRouteRuleMatchHeaderArgs.builder()\n .header(\"header\")\n .invertMatch(false)\n .presentMatch(true)\n .build())\n .queryParameters(HttpRouteRuleMatchQueryParameterArgs.builder()\n .queryParameter(\"key\")\n .presentMatch(true)\n .build())\n .fullPathMatch(\"example\")\n .ignoreCase(false)\n .build())\n .action(HttpRouteRuleActionArgs.builder()\n .redirect(HttpRouteRuleActionRedirectArgs.builder()\n .hostRedirect(\"new-host\")\n .pathRedirect(\"new-path\")\n .prefixRewrite(\"new-prefix\")\n .httpsRedirect(true)\n .stripQuery(true)\n .portRedirect(8081)\n .build())\n .urlRewrite(HttpRouteRuleActionUrlRewriteArgs.builder()\n .pathPrefixRewrite(\"new-prefix\")\n .hostRewrite(\"new-host\")\n .build())\n .retryPolicy(HttpRouteRuleActionRetryPolicyArgs.builder()\n .retryConditions(\"server_error\")\n .numRetries(1)\n .perTryTimeout(\"1s\")\n .build())\n .requestMirrorPolicy(HttpRouteRuleActionRequestMirrorPolicyArgs.builder()\n .destination(HttpRouteRuleActionRequestMirrorPolicyDestinationArgs.builder()\n .serviceName(\"new\")\n .weight(1)\n .build())\n .build())\n .corsPolicy(HttpRouteRuleActionCorsPolicyArgs.builder()\n .allowOrigins(\"example\")\n .allowMethods( \n \"GET\",\n \"PUT\")\n .allowHeaders( \n \"version\",\n \"type\")\n .exposeHeaders( \n \"version\",\n \"type\")\n .maxAge(\"1s\")\n .allowCredentials(true)\n .disabled(false)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:HttpRoute\n properties:\n name: my-http-route\n labels:\n foo: bar\n description: my description\n hostnames:\n - example\n rules:\n - matches:\n - headers:\n - header: header\n invertMatch: false\n regexMatch: header-value\n queryParameters:\n - queryParameter: key\n exactMatch: value\n prefixMatch: example\n ignoreCase: false\n - headers:\n - header: header\n invertMatch: false\n presentMatch: true\n queryParameters:\n - queryParameter: key\n regexMatch: value\n regexMatch: example\n ignoreCase: false\n - headers:\n - header: header\n invertMatch: false\n presentMatch: true\n queryParameters:\n - queryParameter: key\n presentMatch: true\n fullPathMatch: example\n ignoreCase: false\n action:\n redirect:\n hostRedirect: new-host\n pathRedirect: new-path\n prefixRewrite: new-prefix\n httpsRedirect: true\n stripQuery: true\n portRedirect: 8081\n urlRewrite:\n pathPrefixRewrite: new-prefix\n hostRewrite: new-host\n retryPolicy:\n retryConditions:\n - server_error\n numRetries: 1\n perTryTimeout: 1s\n requestMirrorPolicy:\n destination:\n serviceName: new\n weight: 1\n corsPolicy:\n allowOrigins:\n - example\n allowMethods:\n - GET\n - PUT\n allowHeaders:\n - version\n - type\n exposeHeaders:\n - version\n - type\n maxAge: 1s\n allowCredentials: true\n disabled: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Http Route Actions\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.HttpRoute(\"default\", {\n name: \"my-http-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n hostnames: [\"example\"],\n rules: [{\n action: {\n faultInjectionPolicy: {\n delay: {\n fixedDelay: \"1s\",\n percentage: 1,\n },\n abort: {\n httpStatus: 500,\n percentage: 1,\n },\n },\n urlRewrite: {\n pathPrefixRewrite: \"new-prefix\",\n hostRewrite: \"new-host\",\n },\n retryPolicy: {\n retryConditions: [\"server_error\"],\n numRetries: 1,\n perTryTimeout: \"1s\",\n },\n requestMirrorPolicy: {\n destination: {\n serviceName: \"new\",\n weight: 1,\n },\n },\n corsPolicy: {\n allowOrigins: [\"example\"],\n allowMethods: [\n \"GET\",\n \"PUT\",\n ],\n allowHeaders: [\n \"version\",\n \"type\",\n ],\n exposeHeaders: [\n \"version\",\n \"type\",\n ],\n maxAge: \"1s\",\n allowCredentials: true,\n disabled: false,\n },\n requestHeaderModifier: {\n set: {\n version: \"1\",\n type: \"json\",\n },\n add: {\n \"minor-version\": \"1\",\n },\n removes: [\"arg\"],\n },\n responseHeaderModifier: {\n set: {\n version: \"1\",\n type: \"json\",\n },\n add: {\n \"minor-version\": \"1\",\n },\n removes: [\"removearg\"],\n },\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.HttpRoute(\"default\",\n name=\"my-http-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n hostnames=[\"example\"],\n rules=[{\n \"action\": {\n \"fault_injection_policy\": {\n \"delay\": {\n \"fixed_delay\": \"1s\",\n \"percentage\": 1,\n },\n \"abort\": {\n \"http_status\": 500,\n \"percentage\": 1,\n },\n },\n \"url_rewrite\": {\n \"path_prefix_rewrite\": \"new-prefix\",\n \"host_rewrite\": \"new-host\",\n },\n \"retry_policy\": {\n \"retry_conditions\": [\"server_error\"],\n \"num_retries\": 1,\n \"per_try_timeout\": \"1s\",\n },\n \"request_mirror_policy\": {\n \"destination\": {\n \"service_name\": \"new\",\n \"weight\": 1,\n },\n },\n \"cors_policy\": {\n \"allow_origins\": [\"example\"],\n \"allow_methods\": [\n \"GET\",\n \"PUT\",\n ],\n \"allow_headers\": [\n \"version\",\n \"type\",\n ],\n \"expose_headers\": [\n \"version\",\n \"type\",\n ],\n \"max_age\": \"1s\",\n \"allow_credentials\": True,\n \"disabled\": False,\n },\n \"request_header_modifier\": {\n \"set\": {\n \"version\": \"1\",\n \"type\": \"json\",\n },\n \"add\": {\n \"minor-version\": \"1\",\n },\n \"removes\": [\"arg\"],\n },\n \"response_header_modifier\": {\n \"set\": {\n \"version\": \"1\",\n \"type\": \"json\",\n },\n \"add\": {\n \"minor-version\": \"1\",\n },\n \"removes\": [\"removearg\"],\n },\n },\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.NetworkServices.HttpRoute(\"default\", new()\n {\n Name = \"my-http-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Hostnames = new[]\n {\n \"example\",\n },\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleArgs\n {\n Action = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionArgs\n {\n FaultInjectionPolicy = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionFaultInjectionPolicyArgs\n {\n Delay = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionFaultInjectionPolicyDelayArgs\n {\n FixedDelay = \"1s\",\n Percentage = 1,\n },\n Abort = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionFaultInjectionPolicyAbortArgs\n {\n HttpStatus = 500,\n Percentage = 1,\n },\n },\n UrlRewrite = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionUrlRewriteArgs\n {\n PathPrefixRewrite = \"new-prefix\",\n HostRewrite = \"new-host\",\n },\n RetryPolicy = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRetryPolicyArgs\n {\n RetryConditions = new[]\n {\n \"server_error\",\n },\n NumRetries = 1,\n PerTryTimeout = \"1s\",\n },\n RequestMirrorPolicy = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRequestMirrorPolicyArgs\n {\n Destination = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRequestMirrorPolicyDestinationArgs\n {\n ServiceName = \"new\",\n Weight = 1,\n },\n },\n CorsPolicy = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionCorsPolicyArgs\n {\n AllowOrigins = new[]\n {\n \"example\",\n },\n AllowMethods = new[]\n {\n \"GET\",\n \"PUT\",\n },\n AllowHeaders = new[]\n {\n \"version\",\n \"type\",\n },\n ExposeHeaders = new[]\n {\n \"version\",\n \"type\",\n },\n MaxAge = \"1s\",\n AllowCredentials = true,\n Disabled = false,\n },\n RequestHeaderModifier = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionRequestHeaderModifierArgs\n {\n Set = \n {\n { \"version\", \"1\" },\n { \"type\", \"json\" },\n },\n Add = \n {\n { \"minor-version\", \"1\" },\n },\n Removes = new[]\n {\n \"arg\",\n },\n },\n ResponseHeaderModifier = new Gcp.NetworkServices.Inputs.HttpRouteRuleActionResponseHeaderModifierArgs\n {\n Set = \n {\n { \"version\", \"1\" },\n { \"type\", \"json\" },\n },\n Add = \n {\n { \"minor-version\", \"1\" },\n },\n Removes = new[]\n {\n \"removearg\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networkservices.NewHttpRoute(ctx, \"default\", \u0026networkservices.HttpRouteArgs{\n\t\t\tName: pulumi.String(\"my-http-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tHostnames: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"example\"),\n\t\t\t},\n\t\t\tRules: networkservices.HttpRouteRuleArray{\n\t\t\t\t\u0026networkservices.HttpRouteRuleArgs{\n\t\t\t\t\tAction: \u0026networkservices.HttpRouteRuleActionArgs{\n\t\t\t\t\t\tFaultInjectionPolicy: \u0026networkservices.HttpRouteRuleActionFaultInjectionPolicyArgs{\n\t\t\t\t\t\t\tDelay: \u0026networkservices.HttpRouteRuleActionFaultInjectionPolicyDelayArgs{\n\t\t\t\t\t\t\t\tFixedDelay: pulumi.String(\"1s\"),\n\t\t\t\t\t\t\t\tPercentage: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAbort: \u0026networkservices.HttpRouteRuleActionFaultInjectionPolicyAbortArgs{\n\t\t\t\t\t\t\t\tHttpStatus: pulumi.Int(500),\n\t\t\t\t\t\t\t\tPercentage: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tUrlRewrite: \u0026networkservices.HttpRouteRuleActionUrlRewriteArgs{\n\t\t\t\t\t\t\tPathPrefixRewrite: pulumi.String(\"new-prefix\"),\n\t\t\t\t\t\t\tHostRewrite: pulumi.String(\"new-host\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRetryPolicy: \u0026networkservices.HttpRouteRuleActionRetryPolicyArgs{\n\t\t\t\t\t\t\tRetryConditions: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"server_error\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tNumRetries: pulumi.Int(1),\n\t\t\t\t\t\t\tPerTryTimeout: pulumi.String(\"1s\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRequestMirrorPolicy: \u0026networkservices.HttpRouteRuleActionRequestMirrorPolicyArgs{\n\t\t\t\t\t\t\tDestination: \u0026networkservices.HttpRouteRuleActionRequestMirrorPolicyDestinationArgs{\n\t\t\t\t\t\t\t\tServiceName: pulumi.String(\"new\"),\n\t\t\t\t\t\t\t\tWeight: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tCorsPolicy: \u0026networkservices.HttpRouteRuleActionCorsPolicyArgs{\n\t\t\t\t\t\t\tAllowOrigins: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"example\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAllowMethods: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"GET\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"PUT\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAllowHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"version\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"type\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tExposeHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"version\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"type\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tMaxAge: pulumi.String(\"1s\"),\n\t\t\t\t\t\t\tAllowCredentials: pulumi.Bool(true),\n\t\t\t\t\t\t\tDisabled: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRequestHeaderModifier: \u0026networkservices.HttpRouteRuleActionRequestHeaderModifierArgs{\n\t\t\t\t\t\t\tSet: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\"version\": pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\t\"type\": pulumi.String(\"json\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAdd: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\"minor-version\": pulumi.String(\"1\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"arg\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tResponseHeaderModifier: \u0026networkservices.HttpRouteRuleActionResponseHeaderModifierArgs{\n\t\t\t\t\t\t\tSet: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\"version\": pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\t\"type\": pulumi.String(\"json\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAdd: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\"minor-version\": pulumi.String(\"1\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"removearg\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networkservices.HttpRoute;\nimport com.pulumi.gcp.networkservices.HttpRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionFaultInjectionPolicyArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionFaultInjectionPolicyDelayArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionFaultInjectionPolicyAbortArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionUrlRewriteArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRetryPolicyArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRequestMirrorPolicyArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRequestMirrorPolicyDestinationArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionCorsPolicyArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionRequestHeaderModifierArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleActionResponseHeaderModifierArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HttpRoute(\"default\", HttpRouteArgs.builder()\n .name(\"my-http-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .hostnames(\"example\")\n .rules(HttpRouteRuleArgs.builder()\n .action(HttpRouteRuleActionArgs.builder()\n .faultInjectionPolicy(HttpRouteRuleActionFaultInjectionPolicyArgs.builder()\n .delay(HttpRouteRuleActionFaultInjectionPolicyDelayArgs.builder()\n .fixedDelay(\"1s\")\n .percentage(1)\n .build())\n .abort(HttpRouteRuleActionFaultInjectionPolicyAbortArgs.builder()\n .httpStatus(500)\n .percentage(1)\n .build())\n .build())\n .urlRewrite(HttpRouteRuleActionUrlRewriteArgs.builder()\n .pathPrefixRewrite(\"new-prefix\")\n .hostRewrite(\"new-host\")\n .build())\n .retryPolicy(HttpRouteRuleActionRetryPolicyArgs.builder()\n .retryConditions(\"server_error\")\n .numRetries(1)\n .perTryTimeout(\"1s\")\n .build())\n .requestMirrorPolicy(HttpRouteRuleActionRequestMirrorPolicyArgs.builder()\n .destination(HttpRouteRuleActionRequestMirrorPolicyDestinationArgs.builder()\n .serviceName(\"new\")\n .weight(1)\n .build())\n .build())\n .corsPolicy(HttpRouteRuleActionCorsPolicyArgs.builder()\n .allowOrigins(\"example\")\n .allowMethods( \n \"GET\",\n \"PUT\")\n .allowHeaders( \n \"version\",\n \"type\")\n .exposeHeaders( \n \"version\",\n \"type\")\n .maxAge(\"1s\")\n .allowCredentials(true)\n .disabled(false)\n .build())\n .requestHeaderModifier(HttpRouteRuleActionRequestHeaderModifierArgs.builder()\n .set(Map.ofEntries(\n Map.entry(\"version\", \"1\"),\n Map.entry(\"type\", \"json\")\n ))\n .add(Map.of(\"minor-version\", \"1\"))\n .removes(\"arg\")\n .build())\n .responseHeaderModifier(HttpRouteRuleActionResponseHeaderModifierArgs.builder()\n .set(Map.ofEntries(\n Map.entry(\"version\", \"1\"),\n Map.entry(\"type\", \"json\")\n ))\n .add(Map.of(\"minor-version\", \"1\"))\n .removes(\"removearg\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:HttpRoute\n properties:\n name: my-http-route\n labels:\n foo: bar\n description: my description\n hostnames:\n - example\n rules:\n - action:\n faultInjectionPolicy:\n delay:\n fixedDelay: 1s\n percentage: 1\n abort:\n httpStatus: 500\n percentage: 1\n urlRewrite:\n pathPrefixRewrite: new-prefix\n hostRewrite: new-host\n retryPolicy:\n retryConditions:\n - server_error\n numRetries: 1\n perTryTimeout: 1s\n requestMirrorPolicy:\n destination:\n serviceName: new\n weight: 1\n corsPolicy:\n allowOrigins:\n - example\n allowMethods:\n - GET\n - PUT\n allowHeaders:\n - version\n - type\n exposeHeaders:\n - version\n - type\n maxAge: 1s\n allowCredentials: true\n disabled: false\n requestHeaderModifier:\n set:\n version: '1'\n type: json\n add:\n minor-version: '1'\n removes:\n - arg\n responseHeaderModifier:\n set:\n version: '1'\n type: json\n add:\n minor-version: '1'\n removes:\n - removearg\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Http Route Mesh Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.Mesh(\"default\", {\n name: \"my-http-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n});\nconst defaultHttpRoute = new gcp.networkservices.HttpRoute(\"default\", {\n name: \"my-http-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n hostnames: [\"example\"],\n meshes: [_default.id],\n rules: [{\n matches: [{\n queryParameters: [{\n queryParameter: \"key\",\n exactMatch: \"value\",\n }],\n fullPathMatch: \"example\",\n }],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.Mesh(\"default\",\n name=\"my-http-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\")\ndefault_http_route = gcp.networkservices.HttpRoute(\"default\",\n name=\"my-http-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n hostnames=[\"example\"],\n meshes=[default.id],\n rules=[{\n \"matches\": [{\n \"query_parameters\": [{\n \"query_parameter\": \"key\",\n \"exact_match\": \"value\",\n }],\n \"full_path_match\": \"example\",\n }],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.NetworkServices.Mesh(\"default\", new()\n {\n Name = \"my-http-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n });\n\n var defaultHttpRoute = new Gcp.NetworkServices.HttpRoute(\"default\", new()\n {\n Name = \"my-http-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Hostnames = new[]\n {\n \"example\",\n },\n Meshes = new[]\n {\n @default.Id,\n },\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleArgs\n {\n Matches = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchArgs\n {\n QueryParameters = new[]\n {\n new Gcp.NetworkServices.Inputs.HttpRouteRuleMatchQueryParameterArgs\n {\n QueryParameter = \"key\",\n ExactMatch = \"value\",\n },\n },\n FullPathMatch = \"example\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkservices\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := networkservices.NewMesh(ctx, \"default\", \u0026networkservices.MeshArgs{\n\t\t\tName: pulumi.String(\"my-http-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewHttpRoute(ctx, \"default\", \u0026networkservices.HttpRouteArgs{\n\t\t\tName: pulumi.String(\"my-http-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tHostnames: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"example\"),\n\t\t\t},\n\t\t\tMeshes: pulumi.StringArray{\n\t\t\t\t_default.ID(),\n\t\t\t},\n\t\t\tRules: networkservices.HttpRouteRuleArray{\n\t\t\t\t\u0026networkservices.HttpRouteRuleArgs{\n\t\t\t\t\tMatches: networkservices.HttpRouteRuleMatchArray{\n\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchArgs{\n\t\t\t\t\t\t\tQueryParameters: networkservices.HttpRouteRuleMatchQueryParameterArray{\n\t\t\t\t\t\t\t\t\u0026networkservices.HttpRouteRuleMatchQueryParameterArgs{\n\t\t\t\t\t\t\t\t\tQueryParameter: pulumi.String(\"key\"),\n\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"value\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tFullPathMatch: pulumi.String(\"example\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networkservices.Mesh;\nimport com.pulumi.gcp.networkservices.MeshArgs;\nimport com.pulumi.gcp.networkservices.HttpRoute;\nimport com.pulumi.gcp.networkservices.HttpRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.HttpRouteRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Mesh(\"default\", MeshArgs.builder()\n .name(\"my-http-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .build());\n\n var defaultHttpRoute = new HttpRoute(\"defaultHttpRoute\", HttpRouteArgs.builder()\n .name(\"my-http-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .hostnames(\"example\")\n .meshes(default_.id())\n .rules(HttpRouteRuleArgs.builder()\n .matches(HttpRouteRuleMatchArgs.builder()\n .queryParameters(HttpRouteRuleMatchQueryParameterArgs.builder()\n .queryParameter(\"key\")\n .exactMatch(\"value\")\n .build())\n .fullPathMatch(\"example\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:Mesh\n properties:\n name: my-http-route\n labels:\n foo: bar\n description: my description\n defaultHttpRoute:\n type: gcp:networkservices:HttpRoute\n name: default\n properties:\n name: my-http-route\n labels:\n foo: bar\n description: my description\n hostnames:\n - example\n meshes:\n - ${default.id}\n rules:\n - matches:\n - queryParameters:\n - queryParameter: key\n exactMatch: value\n fullPathMatch: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nHttpRoute can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/httpRoutes/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, HttpRoute can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkservices/httpRoute:HttpRoute default projects/{{project}}/locations/global/httpRoutes/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/httpRoute:HttpRoute default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/httpRoute:HttpRoute default {{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -233834,7 +233834,7 @@ } }, "gcp:osconfig/osPolicyAssignment:OsPolicyAssignment": { - "description": "OS policy assignment is an API resource that is used to apply a set of OS\npolicies to a dynamically targeted group of Compute Engine VM instances. An OS\npolicy is used to define the desired state configuration for a Compute Engine VM\ninstance through a set of configuration resources that provide capabilities such\nas installing or removing software packages, or executing a script. For more\ninformation about the OS policy resource definitions and examples, see\n[OS policy and OS policy assignment](https://cloud.google.com/compute/docs/os-configuration-management/working-with-os-policies).\n\nTo get more information about OSPolicyAssignment, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/osconfig/rest/v1/projects.locations.osPolicyAssignments)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/os-configuration-management/create-os-policy-assignment)\n\n## Example Usage\n\n### Os Config Os Policy Assignment Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.osconfig.OsPolicyAssignment(\"primary\", {\n instanceFilter: {\n all: false,\n exclusionLabels: [{\n labels: {\n \"label-two\": \"value-two\",\n },\n }],\n inclusionLabels: [{\n labels: {\n \"label-one\": \"value-one\",\n },\n }],\n inventories: [{\n osShortName: \"centos\",\n osVersion: \"8.*\",\n }],\n },\n location: \"us-central1-a\",\n name: \"policy-assignment\",\n osPolicies: [{\n id: \"policy\",\n mode: \"VALIDATION\",\n resourceGroups: [{\n resources: [\n {\n id: \"apt-to-yum\",\n repository: {\n apt: {\n archiveType: \"DEB\",\n components: [\"doc\"],\n distribution: \"debian\",\n uri: \"https://atl.mirrors.clouvider.net/debian\",\n gpgKey: \".gnupg/pubring.kbx\",\n },\n },\n },\n {\n id: \"exec1\",\n exec: {\n validate: {\n interpreter: \"SHELL\",\n args: [\"arg1\"],\n file: {\n localPath: \"$HOME/script.sh\",\n },\n outputFilePath: \"$HOME/out\",\n },\n enforce: {\n interpreter: \"SHELL\",\n args: [\"arg1\"],\n file: {\n allowInsecure: true,\n remote: {\n uri: \"https://www.example.com/script.sh\",\n sha256Checksum: \"c7938fed83afdccbb0e86a2a2e4cad7d5035012ca3214b4a61268393635c3063\",\n },\n },\n outputFilePath: \"$HOME/out\",\n },\n },\n },\n ],\n inventoryFilters: [{\n osShortName: \"centos\",\n osVersion: \"8.*\",\n }],\n }],\n allowNoResourceGroupMatch: false,\n description: \"A test os policy\",\n }],\n rollout: {\n disruptionBudget: {\n percent: 100,\n },\n minWaitDuration: \"3s\",\n },\n description: \"A test os policy assignment\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.osconfig.OsPolicyAssignment(\"primary\",\n instance_filter={\n \"all\": False,\n \"exclusion_labels\": [{\n \"labels\": {\n \"label_two\": \"value-two\",\n },\n }],\n \"inclusion_labels\": [{\n \"labels\": {\n \"label_one\": \"value-one\",\n },\n }],\n \"inventories\": [{\n \"os_short_name\": \"centos\",\n \"os_version\": \"8.*\",\n }],\n },\n location=\"us-central1-a\",\n name=\"policy-assignment\",\n os_policies=[{\n \"id\": \"policy\",\n \"mode\": \"VALIDATION\",\n \"resource_groups\": [{\n \"resources\": [\n {\n \"id\": \"apt-to-yum\",\n \"repository\": {\n \"apt\": {\n \"archive_type\": \"DEB\",\n \"components\": [\"doc\"],\n \"distribution\": \"debian\",\n \"uri\": \"https://atl.mirrors.clouvider.net/debian\",\n \"gpg_key\": \".gnupg/pubring.kbx\",\n },\n },\n },\n {\n \"id\": \"exec1\",\n \"exec_\": {\n \"validate\": {\n \"interpreter\": \"SHELL\",\n \"args\": [\"arg1\"],\n \"file\": {\n \"local_path\": \"$HOME/script.sh\",\n },\n \"output_file_path\": \"$HOME/out\",\n },\n \"enforce\": {\n \"interpreter\": \"SHELL\",\n \"args\": [\"arg1\"],\n \"file\": {\n \"allow_insecure\": True,\n \"remote\": {\n \"uri\": \"https://www.example.com/script.sh\",\n \"sha256_checksum\": \"c7938fed83afdccbb0e86a2a2e4cad7d5035012ca3214b4a61268393635c3063\",\n },\n },\n \"output_file_path\": \"$HOME/out\",\n },\n },\n },\n ],\n \"inventory_filters\": [{\n \"os_short_name\": \"centos\",\n \"os_version\": \"8.*\",\n }],\n }],\n \"allow_no_resource_group_match\": False,\n \"description\": \"A test os policy\",\n }],\n rollout={\n \"disruption_budget\": {\n \"percent\": 100,\n },\n \"min_wait_duration\": \"3s\",\n },\n description=\"A test os policy assignment\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.OsConfig.OsPolicyAssignment(\"primary\", new()\n {\n InstanceFilter = new Gcp.OsConfig.Inputs.OsPolicyAssignmentInstanceFilterArgs\n {\n All = false,\n ExclusionLabels = new[]\n {\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentInstanceFilterExclusionLabelArgs\n {\n Labels = \n {\n { \"label-two\", \"value-two\" },\n },\n },\n },\n InclusionLabels = new[]\n {\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentInstanceFilterInclusionLabelArgs\n {\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n },\n },\n Inventories = new[]\n {\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentInstanceFilterInventoryArgs\n {\n OsShortName = \"centos\",\n OsVersion = \"8.*\",\n },\n },\n },\n Location = \"us-central1-a\",\n Name = \"policy-assignment\",\n OsPolicies = new[]\n {\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyArgs\n {\n Id = \"policy\",\n Mode = \"VALIDATION\",\n ResourceGroups = new[]\n {\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupArgs\n {\n Resources = new[]\n {\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceArgs\n {\n Id = \"apt-to-yum\",\n Repository = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceRepositoryArgs\n {\n Apt = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceRepositoryAptArgs\n {\n ArchiveType = \"DEB\",\n Components = new[]\n {\n \"doc\",\n },\n Distribution = \"debian\",\n Uri = \"https://atl.mirrors.clouvider.net/debian\",\n GpgKey = \".gnupg/pubring.kbx\",\n },\n },\n },\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceArgs\n {\n Id = \"exec1\",\n Exec = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceExecArgs\n {\n Validate = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateArgs\n {\n Interpreter = \"SHELL\",\n Args = new[]\n {\n \"arg1\",\n },\n File = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateFileArgs\n {\n LocalPath = \"$HOME/script.sh\",\n },\n OutputFilePath = \"$HOME/out\",\n },\n Enforce = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceArgs\n {\n Interpreter = \"SHELL\",\n Args = new[]\n {\n \"arg1\",\n },\n File = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceFileArgs\n {\n AllowInsecure = true,\n Remote = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceFileRemoteArgs\n {\n Uri = \"https://www.example.com/script.sh\",\n Sha256Checksum = \"c7938fed83afdccbb0e86a2a2e4cad7d5035012ca3214b4a61268393635c3063\",\n },\n },\n OutputFilePath = \"$HOME/out\",\n },\n },\n },\n },\n InventoryFilters = new[]\n {\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupInventoryFilterArgs\n {\n OsShortName = \"centos\",\n OsVersion = \"8.*\",\n },\n },\n },\n },\n AllowNoResourceGroupMatch = false,\n Description = \"A test os policy\",\n },\n },\n Rollout = new Gcp.OsConfig.Inputs.OsPolicyAssignmentRolloutArgs\n {\n DisruptionBudget = new Gcp.OsConfig.Inputs.OsPolicyAssignmentRolloutDisruptionBudgetArgs\n {\n Percent = 100,\n },\n MinWaitDuration = \"3s\",\n },\n Description = \"A test os policy assignment\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/osconfig\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := osconfig.NewOsPolicyAssignment(ctx, \"primary\", \u0026osconfig.OsPolicyAssignmentArgs{\n\t\t\tInstanceFilter: \u0026osconfig.OsPolicyAssignmentInstanceFilterArgs{\n\t\t\t\tAll: pulumi.Bool(false),\n\t\t\t\tExclusionLabels: osconfig.OsPolicyAssignmentInstanceFilterExclusionLabelArray{\n\t\t\t\t\t\u0026osconfig.OsPolicyAssignmentInstanceFilterExclusionLabelArgs{\n\t\t\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\t\t\"label-two\": pulumi.String(\"value-two\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tInclusionLabels: osconfig.OsPolicyAssignmentInstanceFilterInclusionLabelArray{\n\t\t\t\t\t\u0026osconfig.OsPolicyAssignmentInstanceFilterInclusionLabelArgs{\n\t\t\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tInventories: osconfig.OsPolicyAssignmentInstanceFilterInventoryArray{\n\t\t\t\t\t\u0026osconfig.OsPolicyAssignmentInstanceFilterInventoryArgs{\n\t\t\t\t\t\tOsShortName: pulumi.String(\"centos\"),\n\t\t\t\t\t\tOsVersion: pulumi.String(\"8.*\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tName: pulumi.String(\"policy-assignment\"),\n\t\t\tOsPolicies: osconfig.OsPolicyAssignmentOsPolicyArray{\n\t\t\t\t\u0026osconfig.OsPolicyAssignmentOsPolicyArgs{\n\t\t\t\t\tId: pulumi.String(\"policy\"),\n\t\t\t\t\tMode: pulumi.String(\"VALIDATION\"),\n\t\t\t\t\tResourceGroups: osconfig.OsPolicyAssignmentOsPolicyResourceGroupArray{\n\t\t\t\t\t\t\u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupArgs{\n\t\t\t\t\t\t\tResources: osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceArray{\n\t\t\t\t\t\t\t\t\u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceArgs{\n\t\t\t\t\t\t\t\t\tId: pulumi.String(\"apt-to-yum\"),\n\t\t\t\t\t\t\t\t\tRepository: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceRepositoryArgs{\n\t\t\t\t\t\t\t\t\t\tApt: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceRepositoryAptArgs{\n\t\t\t\t\t\t\t\t\t\t\tArchiveType: pulumi.String(\"DEB\"),\n\t\t\t\t\t\t\t\t\t\t\tComponents: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"doc\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tDistribution: pulumi.String(\"debian\"),\n\t\t\t\t\t\t\t\t\t\t\tUri: pulumi.String(\"https://atl.mirrors.clouvider.net/debian\"),\n\t\t\t\t\t\t\t\t\t\t\tGpgKey: pulumi.String(\".gnupg/pubring.kbx\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceArgs{\n\t\t\t\t\t\t\t\t\tId: pulumi.String(\"exec1\"),\n\t\t\t\t\t\t\t\t\tExec: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceExecArgs{\n\t\t\t\t\t\t\t\t\t\tValidate: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateArgs{\n\t\t\t\t\t\t\t\t\t\t\tInterpreter: pulumi.String(\"SHELL\"),\n\t\t\t\t\t\t\t\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"arg1\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tFile: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateFileArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tLocalPath: pulumi.String(\"$HOME/script.sh\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tOutputFilePath: pulumi.String(\"$HOME/out\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tEnforce: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceArgs{\n\t\t\t\t\t\t\t\t\t\t\tInterpreter: pulumi.String(\"SHELL\"),\n\t\t\t\t\t\t\t\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"arg1\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tFile: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceFileArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tAllowInsecure: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t\t\tRemote: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceFileRemoteArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tUri: pulumi.String(\"https://www.example.com/script.sh\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tSha256Checksum: pulumi.String(\"c7938fed83afdccbb0e86a2a2e4cad7d5035012ca3214b4a61268393635c3063\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tOutputFilePath: pulumi.String(\"$HOME/out\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tInventoryFilters: osconfig.OsPolicyAssignmentOsPolicyResourceGroupInventoryFilterArray{\n\t\t\t\t\t\t\t\t\u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupInventoryFilterArgs{\n\t\t\t\t\t\t\t\t\tOsShortName: pulumi.String(\"centos\"),\n\t\t\t\t\t\t\t\t\tOsVersion: pulumi.String(\"8.*\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tAllowNoResourceGroupMatch: pulumi.Bool(false),\n\t\t\t\t\tDescription: pulumi.String(\"A test os policy\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tRollout: \u0026osconfig.OsPolicyAssignmentRolloutArgs{\n\t\t\t\tDisruptionBudget: \u0026osconfig.OsPolicyAssignmentRolloutDisruptionBudgetArgs{\n\t\t\t\t\tPercent: pulumi.Int(100),\n\t\t\t\t},\n\t\t\t\tMinWaitDuration: pulumi.String(\"3s\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"A test os policy assignment\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.osconfig.OsPolicyAssignment;\nimport com.pulumi.gcp.osconfig.OsPolicyAssignmentArgs;\nimport com.pulumi.gcp.osconfig.inputs.OsPolicyAssignmentInstanceFilterArgs;\nimport com.pulumi.gcp.osconfig.inputs.OsPolicyAssignmentOsPolicyArgs;\nimport com.pulumi.gcp.osconfig.inputs.OsPolicyAssignmentRolloutArgs;\nimport com.pulumi.gcp.osconfig.inputs.OsPolicyAssignmentRolloutDisruptionBudgetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new OsPolicyAssignment(\"primary\", OsPolicyAssignmentArgs.builder()\n .instanceFilter(OsPolicyAssignmentInstanceFilterArgs.builder()\n .all(false)\n .exclusionLabels(OsPolicyAssignmentInstanceFilterExclusionLabelArgs.builder()\n .labels(Map.of(\"label-two\", \"value-two\"))\n .build())\n .inclusionLabels(OsPolicyAssignmentInstanceFilterInclusionLabelArgs.builder()\n .labels(Map.of(\"label-one\", \"value-one\"))\n .build())\n .inventories(OsPolicyAssignmentInstanceFilterInventoryArgs.builder()\n .osShortName(\"centos\")\n .osVersion(\"8.*\")\n .build())\n .build())\n .location(\"us-central1-a\")\n .name(\"policy-assignment\")\n .osPolicies(OsPolicyAssignmentOsPolicyArgs.builder()\n .id(\"policy\")\n .mode(\"VALIDATION\")\n .resourceGroups(OsPolicyAssignmentOsPolicyResourceGroupArgs.builder()\n .resources( \n OsPolicyAssignmentOsPolicyResourceGroupResourceArgs.builder()\n .id(\"apt-to-yum\")\n .repository(OsPolicyAssignmentOsPolicyResourceGroupResourceRepositoryArgs.builder()\n .apt(OsPolicyAssignmentOsPolicyResourceGroupResourceRepositoryAptArgs.builder()\n .archiveType(\"DEB\")\n .components(\"doc\")\n .distribution(\"debian\")\n .uri(\"https://atl.mirrors.clouvider.net/debian\")\n .gpgKey(\".gnupg/pubring.kbx\")\n .build())\n .build())\n .build(),\n OsPolicyAssignmentOsPolicyResourceGroupResourceArgs.builder()\n .id(\"exec1\")\n .exec(OsPolicyAssignmentOsPolicyResourceGroupResourceExecArgs.builder()\n .validate(OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateArgs.builder()\n .interpreter(\"SHELL\")\n .args(\"arg1\")\n .file(OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateFileArgs.builder()\n .localPath(\"$HOME/script.sh\")\n .build())\n .outputFilePath(\"$HOME/out\")\n .build())\n .enforce(OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceArgs.builder()\n .interpreter(\"SHELL\")\n .args(\"arg1\")\n .file(OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceFileArgs.builder()\n .allowInsecure(true)\n .remote(OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceFileRemoteArgs.builder()\n .uri(\"https://www.example.com/script.sh\")\n .sha256Checksum(\"c7938fed83afdccbb0e86a2a2e4cad7d5035012ca3214b4a61268393635c3063\")\n .build())\n .build())\n .outputFilePath(\"$HOME/out\")\n .build())\n .build())\n .build())\n .inventoryFilters(OsPolicyAssignmentOsPolicyResourceGroupInventoryFilterArgs.builder()\n .osShortName(\"centos\")\n .osVersion(\"8.*\")\n .build())\n .build())\n .allowNoResourceGroupMatch(false)\n .description(\"A test os policy\")\n .build())\n .rollout(OsPolicyAssignmentRolloutArgs.builder()\n .disruptionBudget(OsPolicyAssignmentRolloutDisruptionBudgetArgs.builder()\n .percent(100)\n .build())\n .minWaitDuration(\"3s\")\n .build())\n .description(\"A test os policy assignment\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:osconfig:OsPolicyAssignment\n properties:\n instanceFilter:\n all: false\n exclusionLabels:\n - labels:\n label-two: value-two\n inclusionLabels:\n - labels:\n label-one: value-one\n inventories:\n - osShortName: centos\n osVersion: 8.*\n location: us-central1-a\n name: policy-assignment\n osPolicies:\n - id: policy\n mode: VALIDATION\n resourceGroups:\n - resources:\n - id: apt-to-yum\n repository:\n apt:\n archiveType: DEB\n components:\n - doc\n distribution: debian\n uri: https://atl.mirrors.clouvider.net/debian\n gpgKey: .gnupg/pubring.kbx\n - id: exec1\n exec:\n validate:\n interpreter: SHELL\n args:\n - arg1\n file:\n localPath: $HOME/script.sh\n outputFilePath: $HOME/out\n enforce:\n interpreter: SHELL\n args:\n - arg1\n file:\n allowInsecure: true\n remote:\n uri: https://www.example.com/script.sh\n sha256Checksum: c7938fed83afdccbb0e86a2a2e4cad7d5035012ca3214b4a61268393635c3063\n outputFilePath: $HOME/out\n inventoryFilters:\n - osShortName: centos\n osVersion: 8.*\n allowNoResourceGroupMatch: false\n description: A test os policy\n rollout:\n disruptionBudget:\n percent: 100\n minWaitDuration: 3s\n description: A test os policy assignment\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nOSPolicyAssignment can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/osPolicyAssignments/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, OSPolicyAssignment can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:osconfig/osPolicyAssignment:OsPolicyAssignment default projects/{{project}}/locations/{{location}}/osPolicyAssignments/{{name}}\n```\n\n```sh\n$ pulumi import gcp:osconfig/osPolicyAssignment:OsPolicyAssignment default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:osconfig/osPolicyAssignment:OsPolicyAssignment default {{location}}/{{name}}\n```\n\n", + "description": "OS policy assignment is an API resource that is used to apply a set of OS\npolicies to a dynamically targeted group of Compute Engine VM instances. An OS\npolicy is used to define the desired state configuration for a Compute Engine VM\ninstance through a set of configuration resources that provide capabilities such\nas installing or removing software packages, or executing a script. For more\ninformation about the OS policy resource definitions and examples, see\n[OS policy and OS policy assignment](https://cloud.google.com/compute/docs/os-configuration-management/working-with-os-policies).\n\nTo get more information about OSPolicyAssignment, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/osconfig/rest/v1/projects.locations.osPolicyAssignments)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/os-configuration-management/create-os-policy-assignment)\n\n## Example Usage\n\n### Os Config Os Policy Assignment Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.osconfig.OsPolicyAssignment(\"primary\", {\n instanceFilter: {\n all: false,\n exclusionLabels: [{\n labels: {\n \"label-two\": \"value-two\",\n },\n }],\n inclusionLabels: [{\n labels: {\n \"label-one\": \"value-one\",\n },\n }],\n inventories: [{\n osShortName: \"centos\",\n osVersion: \"8.*\",\n }],\n },\n location: \"us-central1-a\",\n name: \"policy-assignment\",\n osPolicies: [{\n id: \"policy\",\n mode: \"VALIDATION\",\n resourceGroups: [{\n resources: [\n {\n id: \"apt-to-yum\",\n repository: {\n apt: {\n archiveType: \"DEB\",\n components: [\"doc\"],\n distribution: \"debian\",\n uri: \"https://atl.mirrors.clouvider.net/debian\",\n gpgKey: \".gnupg/pubring.kbx\",\n },\n },\n },\n {\n id: \"exec1\",\n exec: {\n validate: {\n interpreter: \"SHELL\",\n args: [\"arg1\"],\n file: {\n localPath: \"$HOME/script.sh\",\n },\n outputFilePath: \"$HOME/out\",\n },\n enforce: {\n interpreter: \"SHELL\",\n args: [\"arg1\"],\n file: {\n allowInsecure: true,\n remote: {\n uri: \"https://www.example.com/script.sh\",\n sha256Checksum: \"c7938fed83afdccbb0e86a2a2e4cad7d5035012ca3214b4a61268393635c3063\",\n },\n },\n outputFilePath: \"$HOME/out\",\n },\n },\n },\n ],\n inventoryFilters: [{\n osShortName: \"centos\",\n osVersion: \"8.*\",\n }],\n }],\n allowNoResourceGroupMatch: false,\n description: \"A test os policy\",\n }],\n rollout: {\n disruptionBudget: {\n percent: 100,\n },\n minWaitDuration: \"3s\",\n },\n description: \"A test os policy assignment\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.osconfig.OsPolicyAssignment(\"primary\",\n instance_filter={\n \"all\": False,\n \"exclusion_labels\": [{\n \"labels\": {\n \"label-two\": \"value-two\",\n },\n }],\n \"inclusion_labels\": [{\n \"labels\": {\n \"label-one\": \"value-one\",\n },\n }],\n \"inventories\": [{\n \"os_short_name\": \"centos\",\n \"os_version\": \"8.*\",\n }],\n },\n location=\"us-central1-a\",\n name=\"policy-assignment\",\n os_policies=[{\n \"id\": \"policy\",\n \"mode\": \"VALIDATION\",\n \"resource_groups\": [{\n \"resources\": [\n {\n \"id\": \"apt-to-yum\",\n \"repository\": {\n \"apt\": {\n \"archive_type\": \"DEB\",\n \"components\": [\"doc\"],\n \"distribution\": \"debian\",\n \"uri\": \"https://atl.mirrors.clouvider.net/debian\",\n \"gpg_key\": \".gnupg/pubring.kbx\",\n },\n },\n },\n {\n \"id\": \"exec1\",\n \"exec_\": {\n \"validate\": {\n \"interpreter\": \"SHELL\",\n \"args\": [\"arg1\"],\n \"file\": {\n \"local_path\": \"$HOME/script.sh\",\n },\n \"output_file_path\": \"$HOME/out\",\n },\n \"enforce\": {\n \"interpreter\": \"SHELL\",\n \"args\": [\"arg1\"],\n \"file\": {\n \"allow_insecure\": True,\n \"remote\": {\n \"uri\": \"https://www.example.com/script.sh\",\n \"sha256_checksum\": \"c7938fed83afdccbb0e86a2a2e4cad7d5035012ca3214b4a61268393635c3063\",\n },\n },\n \"output_file_path\": \"$HOME/out\",\n },\n },\n },\n ],\n \"inventory_filters\": [{\n \"os_short_name\": \"centos\",\n \"os_version\": \"8.*\",\n }],\n }],\n \"allow_no_resource_group_match\": False,\n \"description\": \"A test os policy\",\n }],\n rollout={\n \"disruption_budget\": {\n \"percent\": 100,\n },\n \"min_wait_duration\": \"3s\",\n },\n description=\"A test os policy assignment\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.OsConfig.OsPolicyAssignment(\"primary\", new()\n {\n InstanceFilter = new Gcp.OsConfig.Inputs.OsPolicyAssignmentInstanceFilterArgs\n {\n All = false,\n ExclusionLabels = new[]\n {\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentInstanceFilterExclusionLabelArgs\n {\n Labels = \n {\n { \"label-two\", \"value-two\" },\n },\n },\n },\n InclusionLabels = new[]\n {\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentInstanceFilterInclusionLabelArgs\n {\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n },\n },\n Inventories = new[]\n {\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentInstanceFilterInventoryArgs\n {\n OsShortName = \"centos\",\n OsVersion = \"8.*\",\n },\n },\n },\n Location = \"us-central1-a\",\n Name = \"policy-assignment\",\n OsPolicies = new[]\n {\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyArgs\n {\n Id = \"policy\",\n Mode = \"VALIDATION\",\n ResourceGroups = new[]\n {\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupArgs\n {\n Resources = new[]\n {\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceArgs\n {\n Id = \"apt-to-yum\",\n Repository = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceRepositoryArgs\n {\n Apt = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceRepositoryAptArgs\n {\n ArchiveType = \"DEB\",\n Components = new[]\n {\n \"doc\",\n },\n Distribution = \"debian\",\n Uri = \"https://atl.mirrors.clouvider.net/debian\",\n GpgKey = \".gnupg/pubring.kbx\",\n },\n },\n },\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceArgs\n {\n Id = \"exec1\",\n Exec = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceExecArgs\n {\n Validate = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateArgs\n {\n Interpreter = \"SHELL\",\n Args = new[]\n {\n \"arg1\",\n },\n File = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateFileArgs\n {\n LocalPath = \"$HOME/script.sh\",\n },\n OutputFilePath = \"$HOME/out\",\n },\n Enforce = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceArgs\n {\n Interpreter = \"SHELL\",\n Args = new[]\n {\n \"arg1\",\n },\n File = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceFileArgs\n {\n AllowInsecure = true,\n Remote = new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceFileRemoteArgs\n {\n Uri = \"https://www.example.com/script.sh\",\n Sha256Checksum = \"c7938fed83afdccbb0e86a2a2e4cad7d5035012ca3214b4a61268393635c3063\",\n },\n },\n OutputFilePath = \"$HOME/out\",\n },\n },\n },\n },\n InventoryFilters = new[]\n {\n new Gcp.OsConfig.Inputs.OsPolicyAssignmentOsPolicyResourceGroupInventoryFilterArgs\n {\n OsShortName = \"centos\",\n OsVersion = \"8.*\",\n },\n },\n },\n },\n AllowNoResourceGroupMatch = false,\n Description = \"A test os policy\",\n },\n },\n Rollout = new Gcp.OsConfig.Inputs.OsPolicyAssignmentRolloutArgs\n {\n DisruptionBudget = new Gcp.OsConfig.Inputs.OsPolicyAssignmentRolloutDisruptionBudgetArgs\n {\n Percent = 100,\n },\n MinWaitDuration = \"3s\",\n },\n Description = \"A test os policy assignment\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/osconfig\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := osconfig.NewOsPolicyAssignment(ctx, \"primary\", \u0026osconfig.OsPolicyAssignmentArgs{\n\t\t\tInstanceFilter: \u0026osconfig.OsPolicyAssignmentInstanceFilterArgs{\n\t\t\t\tAll: pulumi.Bool(false),\n\t\t\t\tExclusionLabels: osconfig.OsPolicyAssignmentInstanceFilterExclusionLabelArray{\n\t\t\t\t\t\u0026osconfig.OsPolicyAssignmentInstanceFilterExclusionLabelArgs{\n\t\t\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\t\t\"label-two\": pulumi.String(\"value-two\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tInclusionLabels: osconfig.OsPolicyAssignmentInstanceFilterInclusionLabelArray{\n\t\t\t\t\t\u0026osconfig.OsPolicyAssignmentInstanceFilterInclusionLabelArgs{\n\t\t\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tInventories: osconfig.OsPolicyAssignmentInstanceFilterInventoryArray{\n\t\t\t\t\t\u0026osconfig.OsPolicyAssignmentInstanceFilterInventoryArgs{\n\t\t\t\t\t\tOsShortName: pulumi.String(\"centos\"),\n\t\t\t\t\t\tOsVersion: pulumi.String(\"8.*\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tName: pulumi.String(\"policy-assignment\"),\n\t\t\tOsPolicies: osconfig.OsPolicyAssignmentOsPolicyArray{\n\t\t\t\t\u0026osconfig.OsPolicyAssignmentOsPolicyArgs{\n\t\t\t\t\tId: pulumi.String(\"policy\"),\n\t\t\t\t\tMode: pulumi.String(\"VALIDATION\"),\n\t\t\t\t\tResourceGroups: osconfig.OsPolicyAssignmentOsPolicyResourceGroupArray{\n\t\t\t\t\t\t\u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupArgs{\n\t\t\t\t\t\t\tResources: osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceArray{\n\t\t\t\t\t\t\t\t\u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceArgs{\n\t\t\t\t\t\t\t\t\tId: pulumi.String(\"apt-to-yum\"),\n\t\t\t\t\t\t\t\t\tRepository: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceRepositoryArgs{\n\t\t\t\t\t\t\t\t\t\tApt: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceRepositoryAptArgs{\n\t\t\t\t\t\t\t\t\t\t\tArchiveType: pulumi.String(\"DEB\"),\n\t\t\t\t\t\t\t\t\t\t\tComponents: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"doc\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tDistribution: pulumi.String(\"debian\"),\n\t\t\t\t\t\t\t\t\t\t\tUri: pulumi.String(\"https://atl.mirrors.clouvider.net/debian\"),\n\t\t\t\t\t\t\t\t\t\t\tGpgKey: pulumi.String(\".gnupg/pubring.kbx\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceArgs{\n\t\t\t\t\t\t\t\t\tId: pulumi.String(\"exec1\"),\n\t\t\t\t\t\t\t\t\tExec: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceExecArgs{\n\t\t\t\t\t\t\t\t\t\tValidate: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateArgs{\n\t\t\t\t\t\t\t\t\t\t\tInterpreter: pulumi.String(\"SHELL\"),\n\t\t\t\t\t\t\t\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"arg1\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tFile: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateFileArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tLocalPath: pulumi.String(\"$HOME/script.sh\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tOutputFilePath: pulumi.String(\"$HOME/out\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tEnforce: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceArgs{\n\t\t\t\t\t\t\t\t\t\t\tInterpreter: pulumi.String(\"SHELL\"),\n\t\t\t\t\t\t\t\t\t\t\tArgs: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"arg1\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tFile: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceFileArgs{\n\t\t\t\t\t\t\t\t\t\t\t\tAllowInsecure: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t\t\tRemote: \u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceFileRemoteArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tUri: pulumi.String(\"https://www.example.com/script.sh\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tSha256Checksum: pulumi.String(\"c7938fed83afdccbb0e86a2a2e4cad7d5035012ca3214b4a61268393635c3063\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tOutputFilePath: pulumi.String(\"$HOME/out\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tInventoryFilters: osconfig.OsPolicyAssignmentOsPolicyResourceGroupInventoryFilterArray{\n\t\t\t\t\t\t\t\t\u0026osconfig.OsPolicyAssignmentOsPolicyResourceGroupInventoryFilterArgs{\n\t\t\t\t\t\t\t\t\tOsShortName: pulumi.String(\"centos\"),\n\t\t\t\t\t\t\t\t\tOsVersion: pulumi.String(\"8.*\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tAllowNoResourceGroupMatch: pulumi.Bool(false),\n\t\t\t\t\tDescription: pulumi.String(\"A test os policy\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tRollout: \u0026osconfig.OsPolicyAssignmentRolloutArgs{\n\t\t\t\tDisruptionBudget: \u0026osconfig.OsPolicyAssignmentRolloutDisruptionBudgetArgs{\n\t\t\t\t\tPercent: pulumi.Int(100),\n\t\t\t\t},\n\t\t\t\tMinWaitDuration: pulumi.String(\"3s\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"A test os policy assignment\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.osconfig.OsPolicyAssignment;\nimport com.pulumi.gcp.osconfig.OsPolicyAssignmentArgs;\nimport com.pulumi.gcp.osconfig.inputs.OsPolicyAssignmentInstanceFilterArgs;\nimport com.pulumi.gcp.osconfig.inputs.OsPolicyAssignmentOsPolicyArgs;\nimport com.pulumi.gcp.osconfig.inputs.OsPolicyAssignmentRolloutArgs;\nimport com.pulumi.gcp.osconfig.inputs.OsPolicyAssignmentRolloutDisruptionBudgetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new OsPolicyAssignment(\"primary\", OsPolicyAssignmentArgs.builder()\n .instanceFilter(OsPolicyAssignmentInstanceFilterArgs.builder()\n .all(false)\n .exclusionLabels(OsPolicyAssignmentInstanceFilterExclusionLabelArgs.builder()\n .labels(Map.of(\"label-two\", \"value-two\"))\n .build())\n .inclusionLabels(OsPolicyAssignmentInstanceFilterInclusionLabelArgs.builder()\n .labels(Map.of(\"label-one\", \"value-one\"))\n .build())\n .inventories(OsPolicyAssignmentInstanceFilterInventoryArgs.builder()\n .osShortName(\"centos\")\n .osVersion(\"8.*\")\n .build())\n .build())\n .location(\"us-central1-a\")\n .name(\"policy-assignment\")\n .osPolicies(OsPolicyAssignmentOsPolicyArgs.builder()\n .id(\"policy\")\n .mode(\"VALIDATION\")\n .resourceGroups(OsPolicyAssignmentOsPolicyResourceGroupArgs.builder()\n .resources( \n OsPolicyAssignmentOsPolicyResourceGroupResourceArgs.builder()\n .id(\"apt-to-yum\")\n .repository(OsPolicyAssignmentOsPolicyResourceGroupResourceRepositoryArgs.builder()\n .apt(OsPolicyAssignmentOsPolicyResourceGroupResourceRepositoryAptArgs.builder()\n .archiveType(\"DEB\")\n .components(\"doc\")\n .distribution(\"debian\")\n .uri(\"https://atl.mirrors.clouvider.net/debian\")\n .gpgKey(\".gnupg/pubring.kbx\")\n .build())\n .build())\n .build(),\n OsPolicyAssignmentOsPolicyResourceGroupResourceArgs.builder()\n .id(\"exec1\")\n .exec(OsPolicyAssignmentOsPolicyResourceGroupResourceExecArgs.builder()\n .validate(OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateArgs.builder()\n .interpreter(\"SHELL\")\n .args(\"arg1\")\n .file(OsPolicyAssignmentOsPolicyResourceGroupResourceExecValidateFileArgs.builder()\n .localPath(\"$HOME/script.sh\")\n .build())\n .outputFilePath(\"$HOME/out\")\n .build())\n .enforce(OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceArgs.builder()\n .interpreter(\"SHELL\")\n .args(\"arg1\")\n .file(OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceFileArgs.builder()\n .allowInsecure(true)\n .remote(OsPolicyAssignmentOsPolicyResourceGroupResourceExecEnforceFileRemoteArgs.builder()\n .uri(\"https://www.example.com/script.sh\")\n .sha256Checksum(\"c7938fed83afdccbb0e86a2a2e4cad7d5035012ca3214b4a61268393635c3063\")\n .build())\n .build())\n .outputFilePath(\"$HOME/out\")\n .build())\n .build())\n .build())\n .inventoryFilters(OsPolicyAssignmentOsPolicyResourceGroupInventoryFilterArgs.builder()\n .osShortName(\"centos\")\n .osVersion(\"8.*\")\n .build())\n .build())\n .allowNoResourceGroupMatch(false)\n .description(\"A test os policy\")\n .build())\n .rollout(OsPolicyAssignmentRolloutArgs.builder()\n .disruptionBudget(OsPolicyAssignmentRolloutDisruptionBudgetArgs.builder()\n .percent(100)\n .build())\n .minWaitDuration(\"3s\")\n .build())\n .description(\"A test os policy assignment\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:osconfig:OsPolicyAssignment\n properties:\n instanceFilter:\n all: false\n exclusionLabels:\n - labels:\n label-two: value-two\n inclusionLabels:\n - labels:\n label-one: value-one\n inventories:\n - osShortName: centos\n osVersion: 8.*\n location: us-central1-a\n name: policy-assignment\n osPolicies:\n - id: policy\n mode: VALIDATION\n resourceGroups:\n - resources:\n - id: apt-to-yum\n repository:\n apt:\n archiveType: DEB\n components:\n - doc\n distribution: debian\n uri: https://atl.mirrors.clouvider.net/debian\n gpgKey: .gnupg/pubring.kbx\n - id: exec1\n exec:\n validate:\n interpreter: SHELL\n args:\n - arg1\n file:\n localPath: $HOME/script.sh\n outputFilePath: $HOME/out\n enforce:\n interpreter: SHELL\n args:\n - arg1\n file:\n allowInsecure: true\n remote:\n uri: https://www.example.com/script.sh\n sha256Checksum: c7938fed83afdccbb0e86a2a2e4cad7d5035012ca3214b4a61268393635c3063\n outputFilePath: $HOME/out\n inventoryFilters:\n - osShortName: centos\n osVersion: 8.*\n allowNoResourceGroupMatch: false\n description: A test os policy\n rollout:\n disruptionBudget:\n percent: 100\n minWaitDuration: 3s\n description: A test os policy assignment\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nOSPolicyAssignment can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/osPolicyAssignments/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, OSPolicyAssignment can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:osconfig/osPolicyAssignment:OsPolicyAssignment default projects/{{project}}/locations/{{location}}/osPolicyAssignments/{{name}}\n```\n\n```sh\n$ pulumi import gcp:osconfig/osPolicyAssignment:OsPolicyAssignment default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:osconfig/osPolicyAssignment:OsPolicyAssignment default {{location}}/{{name}}\n```\n\n", "properties": { "baseline": { "type": "boolean", @@ -234044,7 +234044,7 @@ } }, "gcp:osconfig/patchDeployment:PatchDeployment": { - "description": "Patch deployments are configurations that individual patch jobs use to complete a patch.\nThese configurations include instance filter, package repository settings, and a schedule.\n\n\nTo get more information about PatchDeployment, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/osconfig/rest)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/os-patch-management)\n\n## Example Usage\n\n### Os Config Patch Deployment Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst patch = new gcp.osconfig.PatchDeployment(\"patch\", {\n patchDeploymentId: \"patch-deploy\",\n instanceFilter: {\n all: true,\n },\n oneTimeSchedule: {\n executeTime: \"2999-10-10T10:10:10.045123456Z\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npatch = gcp.osconfig.PatchDeployment(\"patch\",\n patch_deployment_id=\"patch-deploy\",\n instance_filter={\n \"all\": True,\n },\n one_time_schedule={\n \"execute_time\": \"2999-10-10T10:10:10.045123456Z\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var patch = new Gcp.OsConfig.PatchDeployment(\"patch\", new()\n {\n PatchDeploymentId = \"patch-deploy\",\n InstanceFilter = new Gcp.OsConfig.Inputs.PatchDeploymentInstanceFilterArgs\n {\n All = true,\n },\n OneTimeSchedule = new Gcp.OsConfig.Inputs.PatchDeploymentOneTimeScheduleArgs\n {\n ExecuteTime = \"2999-10-10T10:10:10.045123456Z\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/osconfig\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := osconfig.NewPatchDeployment(ctx, \"patch\", \u0026osconfig.PatchDeploymentArgs{\n\t\t\tPatchDeploymentId: pulumi.String(\"patch-deploy\"),\n\t\t\tInstanceFilter: \u0026osconfig.PatchDeploymentInstanceFilterArgs{\n\t\t\t\tAll: pulumi.Bool(true),\n\t\t\t},\n\t\t\tOneTimeSchedule: \u0026osconfig.PatchDeploymentOneTimeScheduleArgs{\n\t\t\t\tExecuteTime: pulumi.String(\"2999-10-10T10:10:10.045123456Z\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.osconfig.PatchDeployment;\nimport com.pulumi.gcp.osconfig.PatchDeploymentArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentInstanceFilterArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentOneTimeScheduleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var patch = new PatchDeployment(\"patch\", PatchDeploymentArgs.builder()\n .patchDeploymentId(\"patch-deploy\")\n .instanceFilter(PatchDeploymentInstanceFilterArgs.builder()\n .all(true)\n .build())\n .oneTimeSchedule(PatchDeploymentOneTimeScheduleArgs.builder()\n .executeTime(\"2999-10-10T10:10:10.045123456Z\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n patch:\n type: gcp:osconfig:PatchDeployment\n properties:\n patchDeploymentId: patch-deploy\n instanceFilter:\n all: true\n oneTimeSchedule:\n executeTime: 2999-10-10T10:10:10.045123456Z\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Os Config Patch Deployment Daily\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst patch = new gcp.osconfig.PatchDeployment(\"patch\", {\n patchDeploymentId: \"patch-deploy\",\n instanceFilter: {\n all: true,\n },\n recurringSchedule: {\n timeZone: {\n id: \"America/New_York\",\n },\n timeOfDay: {\n hours: 0,\n minutes: 30,\n seconds: 30,\n nanos: 20,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npatch = gcp.osconfig.PatchDeployment(\"patch\",\n patch_deployment_id=\"patch-deploy\",\n instance_filter={\n \"all\": True,\n },\n recurring_schedule={\n \"time_zone\": {\n \"id\": \"America/New_York\",\n },\n \"time_of_day\": {\n \"hours\": 0,\n \"minutes\": 30,\n \"seconds\": 30,\n \"nanos\": 20,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var patch = new Gcp.OsConfig.PatchDeployment(\"patch\", new()\n {\n PatchDeploymentId = \"patch-deploy\",\n InstanceFilter = new Gcp.OsConfig.Inputs.PatchDeploymentInstanceFilterArgs\n {\n All = true,\n },\n RecurringSchedule = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleArgs\n {\n TimeZone = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleTimeZoneArgs\n {\n Id = \"America/New_York\",\n },\n TimeOfDay = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleTimeOfDayArgs\n {\n Hours = 0,\n Minutes = 30,\n Seconds = 30,\n Nanos = 20,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/osconfig\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := osconfig.NewPatchDeployment(ctx, \"patch\", \u0026osconfig.PatchDeploymentArgs{\n\t\t\tPatchDeploymentId: pulumi.String(\"patch-deploy\"),\n\t\t\tInstanceFilter: \u0026osconfig.PatchDeploymentInstanceFilterArgs{\n\t\t\t\tAll: pulumi.Bool(true),\n\t\t\t},\n\t\t\tRecurringSchedule: \u0026osconfig.PatchDeploymentRecurringScheduleArgs{\n\t\t\t\tTimeZone: \u0026osconfig.PatchDeploymentRecurringScheduleTimeZoneArgs{\n\t\t\t\t\tId: pulumi.String(\"America/New_York\"),\n\t\t\t\t},\n\t\t\t\tTimeOfDay: \u0026osconfig.PatchDeploymentRecurringScheduleTimeOfDayArgs{\n\t\t\t\t\tHours: pulumi.Int(0),\n\t\t\t\t\tMinutes: pulumi.Int(30),\n\t\t\t\t\tSeconds: pulumi.Int(30),\n\t\t\t\t\tNanos: pulumi.Int(20),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.osconfig.PatchDeployment;\nimport com.pulumi.gcp.osconfig.PatchDeploymentArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentInstanceFilterArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleTimeZoneArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleTimeOfDayArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var patch = new PatchDeployment(\"patch\", PatchDeploymentArgs.builder()\n .patchDeploymentId(\"patch-deploy\")\n .instanceFilter(PatchDeploymentInstanceFilterArgs.builder()\n .all(true)\n .build())\n .recurringSchedule(PatchDeploymentRecurringScheduleArgs.builder()\n .timeZone(PatchDeploymentRecurringScheduleTimeZoneArgs.builder()\n .id(\"America/New_York\")\n .build())\n .timeOfDay(PatchDeploymentRecurringScheduleTimeOfDayArgs.builder()\n .hours(0)\n .minutes(30)\n .seconds(30)\n .nanos(20)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n patch:\n type: gcp:osconfig:PatchDeployment\n properties:\n patchDeploymentId: patch-deploy\n instanceFilter:\n all: true\n recurringSchedule:\n timeZone:\n id: America/New_York\n timeOfDay:\n hours: 0\n minutes: 30\n seconds: 30\n nanos: 20\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Os Config Patch Deployment Daily Midnight\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst patch = new gcp.osconfig.PatchDeployment(\"patch\", {\n patchDeploymentId: \"patch-deploy\",\n instanceFilter: {\n all: true,\n },\n recurringSchedule: {\n timeZone: {\n id: \"America/New_York\",\n },\n timeOfDay: {\n hours: 0,\n minutes: 0,\n seconds: 0,\n nanos: 0,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npatch = gcp.osconfig.PatchDeployment(\"patch\",\n patch_deployment_id=\"patch-deploy\",\n instance_filter={\n \"all\": True,\n },\n recurring_schedule={\n \"time_zone\": {\n \"id\": \"America/New_York\",\n },\n \"time_of_day\": {\n \"hours\": 0,\n \"minutes\": 0,\n \"seconds\": 0,\n \"nanos\": 0,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var patch = new Gcp.OsConfig.PatchDeployment(\"patch\", new()\n {\n PatchDeploymentId = \"patch-deploy\",\n InstanceFilter = new Gcp.OsConfig.Inputs.PatchDeploymentInstanceFilterArgs\n {\n All = true,\n },\n RecurringSchedule = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleArgs\n {\n TimeZone = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleTimeZoneArgs\n {\n Id = \"America/New_York\",\n },\n TimeOfDay = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleTimeOfDayArgs\n {\n Hours = 0,\n Minutes = 0,\n Seconds = 0,\n Nanos = 0,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/osconfig\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := osconfig.NewPatchDeployment(ctx, \"patch\", \u0026osconfig.PatchDeploymentArgs{\n\t\t\tPatchDeploymentId: pulumi.String(\"patch-deploy\"),\n\t\t\tInstanceFilter: \u0026osconfig.PatchDeploymentInstanceFilterArgs{\n\t\t\t\tAll: pulumi.Bool(true),\n\t\t\t},\n\t\t\tRecurringSchedule: \u0026osconfig.PatchDeploymentRecurringScheduleArgs{\n\t\t\t\tTimeZone: \u0026osconfig.PatchDeploymentRecurringScheduleTimeZoneArgs{\n\t\t\t\t\tId: pulumi.String(\"America/New_York\"),\n\t\t\t\t},\n\t\t\t\tTimeOfDay: \u0026osconfig.PatchDeploymentRecurringScheduleTimeOfDayArgs{\n\t\t\t\t\tHours: pulumi.Int(0),\n\t\t\t\t\tMinutes: pulumi.Int(0),\n\t\t\t\t\tSeconds: pulumi.Int(0),\n\t\t\t\t\tNanos: pulumi.Int(0),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.osconfig.PatchDeployment;\nimport com.pulumi.gcp.osconfig.PatchDeploymentArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentInstanceFilterArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleTimeZoneArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleTimeOfDayArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var patch = new PatchDeployment(\"patch\", PatchDeploymentArgs.builder()\n .patchDeploymentId(\"patch-deploy\")\n .instanceFilter(PatchDeploymentInstanceFilterArgs.builder()\n .all(true)\n .build())\n .recurringSchedule(PatchDeploymentRecurringScheduleArgs.builder()\n .timeZone(PatchDeploymentRecurringScheduleTimeZoneArgs.builder()\n .id(\"America/New_York\")\n .build())\n .timeOfDay(PatchDeploymentRecurringScheduleTimeOfDayArgs.builder()\n .hours(0)\n .minutes(0)\n .seconds(0)\n .nanos(0)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n patch:\n type: gcp:osconfig:PatchDeployment\n properties:\n patchDeploymentId: patch-deploy\n instanceFilter:\n all: true\n recurringSchedule:\n timeZone:\n id: America/New_York\n timeOfDay:\n hours: 0\n minutes: 0\n seconds: 0\n nanos: 0\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Os Config Patch Deployment Instance\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst foobar = new gcp.compute.Instance(\"foobar\", {\n name: \"patch-deploy-inst\",\n machineType: \"e2-medium\",\n zone: \"us-central1-a\",\n canIpForward: false,\n tags: [\n \"foo\",\n \"bar\",\n ],\n bootDisk: {\n initializeParams: {\n image: myImage.then(myImage =\u003e myImage.selfLink),\n },\n },\n networkInterfaces: [{\n network: \"default\",\n }],\n metadata: {\n foo: \"bar\",\n },\n});\nconst patch = new gcp.osconfig.PatchDeployment(\"patch\", {\n patchDeploymentId: \"patch-deploy\",\n instanceFilter: {\n instances: [foobar.id],\n },\n patchConfig: {\n yum: {\n security: true,\n minimal: true,\n excludes: [\"bash\"],\n },\n },\n recurringSchedule: {\n timeZone: {\n id: \"America/New_York\",\n },\n timeOfDay: {\n hours: 0,\n minutes: 30,\n seconds: 30,\n nanos: 20,\n },\n monthly: {\n monthDay: 1,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\nfoobar = gcp.compute.Instance(\"foobar\",\n name=\"patch-deploy-inst\",\n machine_type=\"e2-medium\",\n zone=\"us-central1-a\",\n can_ip_forward=False,\n tags=[\n \"foo\",\n \"bar\",\n ],\n boot_disk={\n \"initialize_params\": {\n \"image\": my_image.self_link,\n },\n },\n network_interfaces=[{\n \"network\": \"default\",\n }],\n metadata={\n \"foo\": \"bar\",\n })\npatch = gcp.osconfig.PatchDeployment(\"patch\",\n patch_deployment_id=\"patch-deploy\",\n instance_filter={\n \"instances\": [foobar.id],\n },\n patch_config={\n \"yum\": {\n \"security\": True,\n \"minimal\": True,\n \"excludes\": [\"bash\"],\n },\n },\n recurring_schedule={\n \"time_zone\": {\n \"id\": \"America/New_York\",\n },\n \"time_of_day\": {\n \"hours\": 0,\n \"minutes\": 30,\n \"seconds\": 30,\n \"nanos\": 20,\n },\n \"monthly\": {\n \"month_day\": 1,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var myImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var foobar = new Gcp.Compute.Instance(\"foobar\", new()\n {\n Name = \"patch-deploy-inst\",\n MachineType = \"e2-medium\",\n Zone = \"us-central1-a\",\n CanIpForward = false,\n Tags = new[]\n {\n \"foo\",\n \"bar\",\n },\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = myImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n },\n Metadata = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n var patch = new Gcp.OsConfig.PatchDeployment(\"patch\", new()\n {\n PatchDeploymentId = \"patch-deploy\",\n InstanceFilter = new Gcp.OsConfig.Inputs.PatchDeploymentInstanceFilterArgs\n {\n Instances = new[]\n {\n foobar.Id,\n },\n },\n PatchConfig = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigArgs\n {\n Yum = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigYumArgs\n {\n Security = true,\n Minimal = true,\n Excludes = new[]\n {\n \"bash\",\n },\n },\n },\n RecurringSchedule = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleArgs\n {\n TimeZone = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleTimeZoneArgs\n {\n Id = \"America/New_York\",\n },\n TimeOfDay = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleTimeOfDayArgs\n {\n Hours = 0,\n Minutes = 30,\n Seconds = 30,\n Nanos = 20,\n },\n Monthly = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleMonthlyArgs\n {\n MonthDay = 1,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/osconfig\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfoobar, err := compute.NewInstance(ctx, \"foobar\", \u0026compute.InstanceArgs{\n\t\t\tName: pulumi.String(\"patch-deploy-inst\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tCanIpForward: pulumi.Bool(false),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(myImage.SelfLink),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = osconfig.NewPatchDeployment(ctx, \"patch\", \u0026osconfig.PatchDeploymentArgs{\n\t\t\tPatchDeploymentId: pulumi.String(\"patch-deploy\"),\n\t\t\tInstanceFilter: \u0026osconfig.PatchDeploymentInstanceFilterArgs{\n\t\t\t\tInstances: pulumi.StringArray{\n\t\t\t\t\tfoobar.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPatchConfig: \u0026osconfig.PatchDeploymentPatchConfigArgs{\n\t\t\t\tYum: \u0026osconfig.PatchDeploymentPatchConfigYumArgs{\n\t\t\t\t\tSecurity: pulumi.Bool(true),\n\t\t\t\t\tMinimal: pulumi.Bool(true),\n\t\t\t\t\tExcludes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"bash\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tRecurringSchedule: \u0026osconfig.PatchDeploymentRecurringScheduleArgs{\n\t\t\t\tTimeZone: \u0026osconfig.PatchDeploymentRecurringScheduleTimeZoneArgs{\n\t\t\t\t\tId: pulumi.String(\"America/New_York\"),\n\t\t\t\t},\n\t\t\t\tTimeOfDay: \u0026osconfig.PatchDeploymentRecurringScheduleTimeOfDayArgs{\n\t\t\t\t\tHours: pulumi.Int(0),\n\t\t\t\t\tMinutes: pulumi.Int(30),\n\t\t\t\t\tSeconds: pulumi.Int(30),\n\t\t\t\t\tNanos: pulumi.Int(20),\n\t\t\t\t},\n\t\t\t\tMonthly: \u0026osconfig.PatchDeploymentRecurringScheduleMonthlyArgs{\n\t\t\t\t\tMonthDay: pulumi.Int(1),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.osconfig.PatchDeployment;\nimport com.pulumi.gcp.osconfig.PatchDeploymentArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentInstanceFilterArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentPatchConfigArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentPatchConfigYumArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleTimeZoneArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleTimeOfDayArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleMonthlyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var myImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var foobar = new Instance(\"foobar\", InstanceArgs.builder()\n .name(\"patch-deploy-inst\")\n .machineType(\"e2-medium\")\n .zone(\"us-central1-a\")\n .canIpForward(false)\n .tags( \n \"foo\",\n \"bar\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(myImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .build())\n .build())\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build())\n .metadata(Map.of(\"foo\", \"bar\"))\n .build());\n\n var patch = new PatchDeployment(\"patch\", PatchDeploymentArgs.builder()\n .patchDeploymentId(\"patch-deploy\")\n .instanceFilter(PatchDeploymentInstanceFilterArgs.builder()\n .instances(foobar.id())\n .build())\n .patchConfig(PatchDeploymentPatchConfigArgs.builder()\n .yum(PatchDeploymentPatchConfigYumArgs.builder()\n .security(true)\n .minimal(true)\n .excludes(\"bash\")\n .build())\n .build())\n .recurringSchedule(PatchDeploymentRecurringScheduleArgs.builder()\n .timeZone(PatchDeploymentRecurringScheduleTimeZoneArgs.builder()\n .id(\"America/New_York\")\n .build())\n .timeOfDay(PatchDeploymentRecurringScheduleTimeOfDayArgs.builder()\n .hours(0)\n .minutes(30)\n .seconds(30)\n .nanos(20)\n .build())\n .monthly(PatchDeploymentRecurringScheduleMonthlyArgs.builder()\n .monthDay(1)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foobar:\n type: gcp:compute:Instance\n properties:\n name: patch-deploy-inst\n machineType: e2-medium\n zone: us-central1-a\n canIpForward: false\n tags:\n - foo\n - bar\n bootDisk:\n initializeParams:\n image: ${myImage.selfLink}\n networkInterfaces:\n - network: default\n metadata:\n foo: bar\n patch:\n type: gcp:osconfig:PatchDeployment\n properties:\n patchDeploymentId: patch-deploy\n instanceFilter:\n instances:\n - ${foobar.id}\n patchConfig:\n yum:\n security: true\n minimal: true\n excludes:\n - bash\n recurringSchedule:\n timeZone:\n id: America/New_York\n timeOfDay:\n hours: 0\n minutes: 30\n seconds: 30\n nanos: 20\n monthly:\n monthDay: 1\nvariables:\n myImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Os Config Patch Deployment Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst patch = new gcp.osconfig.PatchDeployment(\"patch\", {\n patchDeploymentId: \"patch-deploy\",\n instanceFilter: {\n groupLabels: [{\n labels: {\n env: \"dev\",\n app: \"web\",\n },\n }],\n instanceNamePrefixes: [\"test-\"],\n zones: [\n \"us-central1-a\",\n \"us-central-1c\",\n ],\n },\n patchConfig: {\n migInstancesAllowed: true,\n rebootConfig: \"ALWAYS\",\n apt: {\n type: \"DIST\",\n excludes: [\"python\"],\n },\n yum: {\n security: true,\n minimal: true,\n excludes: [\"bash\"],\n },\n goo: {\n enabled: true,\n },\n zypper: {\n categories: [\"security\"],\n },\n windowsUpdate: {\n classifications: [\n \"CRITICAL\",\n \"SECURITY\",\n \"UPDATE\",\n ],\n excludes: [\"5012170\"],\n },\n preStep: {\n linuxExecStepConfig: {\n allowedSuccessCodes: [\n 0,\n 3,\n ],\n localPath: \"/tmp/pre_patch_script.sh\",\n },\n windowsExecStepConfig: {\n interpreter: \"SHELL\",\n allowedSuccessCodes: [\n 0,\n 2,\n ],\n localPath: \"C:\\\\Users\\\\user\\\\pre-patch-script.cmd\",\n },\n },\n postStep: {\n linuxExecStepConfig: {\n gcsObject: {\n bucket: \"my-patch-scripts\",\n generationNumber: \"1523477886880\",\n object: \"linux/post_patch_script\",\n },\n },\n windowsExecStepConfig: {\n interpreter: \"POWERSHELL\",\n gcsObject: {\n bucket: \"my-patch-scripts\",\n generationNumber: \"135920493447\",\n object: \"windows/post_patch_script.ps1\",\n },\n },\n },\n },\n duration: \"10s\",\n recurringSchedule: {\n timeZone: {\n id: \"America/New_York\",\n },\n timeOfDay: {\n hours: 0,\n minutes: 30,\n seconds: 30,\n nanos: 20,\n },\n monthly: {\n weekDayOfMonth: {\n weekOrdinal: -1,\n dayOfWeek: \"TUESDAY\",\n dayOffset: 3,\n },\n },\n },\n rollout: {\n mode: \"ZONE_BY_ZONE\",\n disruptionBudget: {\n fixed: 1,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npatch = gcp.osconfig.PatchDeployment(\"patch\",\n patch_deployment_id=\"patch-deploy\",\n instance_filter={\n \"group_labels\": [{\n \"labels\": {\n \"env\": \"dev\",\n \"app\": \"web\",\n },\n }],\n \"instance_name_prefixes\": [\"test-\"],\n \"zones\": [\n \"us-central1-a\",\n \"us-central-1c\",\n ],\n },\n patch_config={\n \"mig_instances_allowed\": True,\n \"reboot_config\": \"ALWAYS\",\n \"apt\": {\n \"type\": \"DIST\",\n \"excludes\": [\"python\"],\n },\n \"yum\": {\n \"security\": True,\n \"minimal\": True,\n \"excludes\": [\"bash\"],\n },\n \"goo\": {\n \"enabled\": True,\n },\n \"zypper\": {\n \"categories\": [\"security\"],\n },\n \"windows_update\": {\n \"classifications\": [\n \"CRITICAL\",\n \"SECURITY\",\n \"UPDATE\",\n ],\n \"excludes\": [\"5012170\"],\n },\n \"pre_step\": {\n \"linux_exec_step_config\": {\n \"allowed_success_codes\": [\n 0,\n 3,\n ],\n \"local_path\": \"/tmp/pre_patch_script.sh\",\n },\n \"windows_exec_step_config\": {\n \"interpreter\": \"SHELL\",\n \"allowed_success_codes\": [\n 0,\n 2,\n ],\n \"local_path\": \"C:\\\\Users\\\\user\\\\pre-patch-script.cmd\",\n },\n },\n \"post_step\": {\n \"linux_exec_step_config\": {\n \"gcs_object\": {\n \"bucket\": \"my-patch-scripts\",\n \"generation_number\": \"1523477886880\",\n \"object\": \"linux/post_patch_script\",\n },\n },\n \"windows_exec_step_config\": {\n \"interpreter\": \"POWERSHELL\",\n \"gcs_object\": {\n \"bucket\": \"my-patch-scripts\",\n \"generation_number\": \"135920493447\",\n \"object\": \"windows/post_patch_script.ps1\",\n },\n },\n },\n },\n duration=\"10s\",\n recurring_schedule={\n \"time_zone\": {\n \"id\": \"America/New_York\",\n },\n \"time_of_day\": {\n \"hours\": 0,\n \"minutes\": 30,\n \"seconds\": 30,\n \"nanos\": 20,\n },\n \"monthly\": {\n \"week_day_of_month\": {\n \"week_ordinal\": -1,\n \"day_of_week\": \"TUESDAY\",\n \"day_offset\": 3,\n },\n },\n },\n rollout={\n \"mode\": \"ZONE_BY_ZONE\",\n \"disruption_budget\": {\n \"fixed\": 1,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var patch = new Gcp.OsConfig.PatchDeployment(\"patch\", new()\n {\n PatchDeploymentId = \"patch-deploy\",\n InstanceFilter = new Gcp.OsConfig.Inputs.PatchDeploymentInstanceFilterArgs\n {\n GroupLabels = new[]\n {\n new Gcp.OsConfig.Inputs.PatchDeploymentInstanceFilterGroupLabelArgs\n {\n Labels = \n {\n { \"env\", \"dev\" },\n { \"app\", \"web\" },\n },\n },\n },\n InstanceNamePrefixes = new[]\n {\n \"test-\",\n },\n Zones = new[]\n {\n \"us-central1-a\",\n \"us-central-1c\",\n },\n },\n PatchConfig = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigArgs\n {\n MigInstancesAllowed = true,\n RebootConfig = \"ALWAYS\",\n Apt = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigAptArgs\n {\n Type = \"DIST\",\n Excludes = new[]\n {\n \"python\",\n },\n },\n Yum = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigYumArgs\n {\n Security = true,\n Minimal = true,\n Excludes = new[]\n {\n \"bash\",\n },\n },\n Goo = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigGooArgs\n {\n Enabled = true,\n },\n Zypper = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigZypperArgs\n {\n Categories = new[]\n {\n \"security\",\n },\n },\n WindowsUpdate = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigWindowsUpdateArgs\n {\n Classifications = new[]\n {\n \"CRITICAL\",\n \"SECURITY\",\n \"UPDATE\",\n },\n Excludes = new[]\n {\n \"5012170\",\n },\n },\n PreStep = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigPreStepArgs\n {\n LinuxExecStepConfig = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigPreStepLinuxExecStepConfigArgs\n {\n AllowedSuccessCodes = new[]\n {\n 0,\n 3,\n },\n LocalPath = \"/tmp/pre_patch_script.sh\",\n },\n WindowsExecStepConfig = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigPreStepWindowsExecStepConfigArgs\n {\n Interpreter = \"SHELL\",\n AllowedSuccessCodes = new[]\n {\n 0,\n 2,\n },\n LocalPath = \"C:\\\\Users\\\\user\\\\pre-patch-script.cmd\",\n },\n },\n PostStep = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigPostStepArgs\n {\n LinuxExecStepConfig = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigPostStepLinuxExecStepConfigArgs\n {\n GcsObject = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigPostStepLinuxExecStepConfigGcsObjectArgs\n {\n Bucket = \"my-patch-scripts\",\n GenerationNumber = \"1523477886880\",\n Object = \"linux/post_patch_script\",\n },\n },\n WindowsExecStepConfig = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigPostStepWindowsExecStepConfigArgs\n {\n Interpreter = \"POWERSHELL\",\n GcsObject = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigPostStepWindowsExecStepConfigGcsObjectArgs\n {\n Bucket = \"my-patch-scripts\",\n GenerationNumber = \"135920493447\",\n Object = \"windows/post_patch_script.ps1\",\n },\n },\n },\n },\n Duration = \"10s\",\n RecurringSchedule = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleArgs\n {\n TimeZone = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleTimeZoneArgs\n {\n Id = \"America/New_York\",\n },\n TimeOfDay = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleTimeOfDayArgs\n {\n Hours = 0,\n Minutes = 30,\n Seconds = 30,\n Nanos = 20,\n },\n Monthly = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleMonthlyArgs\n {\n WeekDayOfMonth = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleMonthlyWeekDayOfMonthArgs\n {\n WeekOrdinal = -1,\n DayOfWeek = \"TUESDAY\",\n DayOffset = 3,\n },\n },\n },\n Rollout = new Gcp.OsConfig.Inputs.PatchDeploymentRolloutArgs\n {\n Mode = \"ZONE_BY_ZONE\",\n DisruptionBudget = new Gcp.OsConfig.Inputs.PatchDeploymentRolloutDisruptionBudgetArgs\n {\n Fixed = 1,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/osconfig\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := osconfig.NewPatchDeployment(ctx, \"patch\", \u0026osconfig.PatchDeploymentArgs{\n\t\t\tPatchDeploymentId: pulumi.String(\"patch-deploy\"),\n\t\t\tInstanceFilter: \u0026osconfig.PatchDeploymentInstanceFilterArgs{\n\t\t\t\tGroupLabels: osconfig.PatchDeploymentInstanceFilterGroupLabelArray{\n\t\t\t\t\t\u0026osconfig.PatchDeploymentInstanceFilterGroupLabelArgs{\n\t\t\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\t\t\"env\": pulumi.String(\"dev\"),\n\t\t\t\t\t\t\t\"app\": pulumi.String(\"web\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tInstanceNamePrefixes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"test-\"),\n\t\t\t\t},\n\t\t\t\tZones: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"us-central1-a\"),\n\t\t\t\t\tpulumi.String(\"us-central-1c\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPatchConfig: \u0026osconfig.PatchDeploymentPatchConfigArgs{\n\t\t\t\tMigInstancesAllowed: pulumi.Bool(true),\n\t\t\t\tRebootConfig: pulumi.String(\"ALWAYS\"),\n\t\t\t\tApt: \u0026osconfig.PatchDeploymentPatchConfigAptArgs{\n\t\t\t\t\tType: pulumi.String(\"DIST\"),\n\t\t\t\t\tExcludes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"python\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tYum: \u0026osconfig.PatchDeploymentPatchConfigYumArgs{\n\t\t\t\t\tSecurity: pulumi.Bool(true),\n\t\t\t\t\tMinimal: pulumi.Bool(true),\n\t\t\t\t\tExcludes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"bash\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tGoo: \u0026osconfig.PatchDeploymentPatchConfigGooArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tZypper: \u0026osconfig.PatchDeploymentPatchConfigZypperArgs{\n\t\t\t\t\tCategories: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"security\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tWindowsUpdate: \u0026osconfig.PatchDeploymentPatchConfigWindowsUpdateArgs{\n\t\t\t\t\tClassifications: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"CRITICAL\"),\n\t\t\t\t\t\tpulumi.String(\"SECURITY\"),\n\t\t\t\t\t\tpulumi.String(\"UPDATE\"),\n\t\t\t\t\t},\n\t\t\t\t\tExcludes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"5012170\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPreStep: \u0026osconfig.PatchDeploymentPatchConfigPreStepArgs{\n\t\t\t\t\tLinuxExecStepConfig: \u0026osconfig.PatchDeploymentPatchConfigPreStepLinuxExecStepConfigArgs{\n\t\t\t\t\t\tAllowedSuccessCodes: pulumi.IntArray{\n\t\t\t\t\t\t\tpulumi.Int(0),\n\t\t\t\t\t\t\tpulumi.Int(3),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tLocalPath: pulumi.String(\"/tmp/pre_patch_script.sh\"),\n\t\t\t\t\t},\n\t\t\t\t\tWindowsExecStepConfig: \u0026osconfig.PatchDeploymentPatchConfigPreStepWindowsExecStepConfigArgs{\n\t\t\t\t\t\tInterpreter: pulumi.String(\"SHELL\"),\n\t\t\t\t\t\tAllowedSuccessCodes: pulumi.IntArray{\n\t\t\t\t\t\t\tpulumi.Int(0),\n\t\t\t\t\t\t\tpulumi.Int(2),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tLocalPath: pulumi.String(\"C:\\\\Users\\\\user\\\\pre-patch-script.cmd\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPostStep: \u0026osconfig.PatchDeploymentPatchConfigPostStepArgs{\n\t\t\t\t\tLinuxExecStepConfig: \u0026osconfig.PatchDeploymentPatchConfigPostStepLinuxExecStepConfigArgs{\n\t\t\t\t\t\tGcsObject: \u0026osconfig.PatchDeploymentPatchConfigPostStepLinuxExecStepConfigGcsObjectArgs{\n\t\t\t\t\t\t\tBucket: pulumi.String(\"my-patch-scripts\"),\n\t\t\t\t\t\t\tGenerationNumber: pulumi.String(\"1523477886880\"),\n\t\t\t\t\t\t\tObject: pulumi.String(\"linux/post_patch_script\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tWindowsExecStepConfig: \u0026osconfig.PatchDeploymentPatchConfigPostStepWindowsExecStepConfigArgs{\n\t\t\t\t\t\tInterpreter: pulumi.String(\"POWERSHELL\"),\n\t\t\t\t\t\tGcsObject: \u0026osconfig.PatchDeploymentPatchConfigPostStepWindowsExecStepConfigGcsObjectArgs{\n\t\t\t\t\t\t\tBucket: pulumi.String(\"my-patch-scripts\"),\n\t\t\t\t\t\t\tGenerationNumber: pulumi.String(\"135920493447\"),\n\t\t\t\t\t\t\tObject: pulumi.String(\"windows/post_patch_script.ps1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDuration: pulumi.String(\"10s\"),\n\t\t\tRecurringSchedule: \u0026osconfig.PatchDeploymentRecurringScheduleArgs{\n\t\t\t\tTimeZone: \u0026osconfig.PatchDeploymentRecurringScheduleTimeZoneArgs{\n\t\t\t\t\tId: pulumi.String(\"America/New_York\"),\n\t\t\t\t},\n\t\t\t\tTimeOfDay: \u0026osconfig.PatchDeploymentRecurringScheduleTimeOfDayArgs{\n\t\t\t\t\tHours: pulumi.Int(0),\n\t\t\t\t\tMinutes: pulumi.Int(30),\n\t\t\t\t\tSeconds: pulumi.Int(30),\n\t\t\t\t\tNanos: pulumi.Int(20),\n\t\t\t\t},\n\t\t\t\tMonthly: \u0026osconfig.PatchDeploymentRecurringScheduleMonthlyArgs{\n\t\t\t\t\tWeekDayOfMonth: \u0026osconfig.PatchDeploymentRecurringScheduleMonthlyWeekDayOfMonthArgs{\n\t\t\t\t\t\tWeekOrdinal: int(-1),\n\t\t\t\t\t\tDayOfWeek: pulumi.String(\"TUESDAY\"),\n\t\t\t\t\t\tDayOffset: pulumi.Int(3),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tRollout: \u0026osconfig.PatchDeploymentRolloutArgs{\n\t\t\t\tMode: pulumi.String(\"ZONE_BY_ZONE\"),\n\t\t\t\tDisruptionBudget: \u0026osconfig.PatchDeploymentRolloutDisruptionBudgetArgs{\n\t\t\t\t\tFixed: pulumi.Int(1),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```yaml\nresources:\n patch:\n type: gcp:osconfig:PatchDeployment\n properties:\n patchDeploymentId: patch-deploy\n instanceFilter:\n groupLabels:\n - labels:\n env: dev\n app: web\n instanceNamePrefixes:\n - test-\n zones:\n - us-central1-a\n - us-central-1c\n patchConfig:\n migInstancesAllowed: true\n rebootConfig: ALWAYS\n apt:\n type: DIST\n excludes:\n - python\n yum:\n security: true\n minimal: true\n excludes:\n - bash\n goo:\n enabled: true\n zypper:\n categories:\n - security\n windowsUpdate:\n classifications:\n - CRITICAL\n - SECURITY\n - UPDATE\n excludes:\n - '5012170'\n preStep:\n linuxExecStepConfig:\n allowedSuccessCodes:\n - 0\n - 3\n localPath: /tmp/pre_patch_script.sh\n windowsExecStepConfig:\n interpreter: SHELL\n allowedSuccessCodes:\n - 0\n - 2\n localPath: C:\\Users\\user\\pre-patch-script.cmd\n postStep:\n linuxExecStepConfig:\n gcsObject:\n bucket: my-patch-scripts\n generationNumber: '1523477886880'\n object: linux/post_patch_script\n windowsExecStepConfig:\n interpreter: POWERSHELL\n gcsObject:\n bucket: my-patch-scripts\n generationNumber: '135920493447'\n object: windows/post_patch_script.ps1\n duration: 10s\n recurringSchedule:\n timeZone:\n id: America/New_York\n timeOfDay:\n hours: 0\n minutes: 30\n seconds: 30\n nanos: 20\n monthly:\n weekDayOfMonth:\n weekOrdinal: -1\n dayOfWeek: TUESDAY\n dayOffset: 3\n rollout:\n mode: ZONE_BY_ZONE\n disruptionBudget:\n fixed: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPatchDeployment can be imported using any of these accepted formats:\n\n* `projects/{{project}}/patchDeployments/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, PatchDeployment can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:osconfig/patchDeployment:PatchDeployment default projects/{{project}}/patchDeployments/{{name}}\n```\n\n```sh\n$ pulumi import gcp:osconfig/patchDeployment:PatchDeployment default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:osconfig/patchDeployment:PatchDeployment default {{name}}\n```\n\n", + "description": "Patch deployments are configurations that individual patch jobs use to complete a patch.\nThese configurations include instance filter, package repository settings, and a schedule.\n\n\nTo get more information about PatchDeployment, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/osconfig/rest)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/os-patch-management)\n\n## Example Usage\n\n### Os Config Patch Deployment Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst patch = new gcp.osconfig.PatchDeployment(\"patch\", {\n patchDeploymentId: \"patch-deploy\",\n instanceFilter: {\n all: true,\n },\n oneTimeSchedule: {\n executeTime: \"2999-10-10T10:10:10.045123456Z\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npatch = gcp.osconfig.PatchDeployment(\"patch\",\n patch_deployment_id=\"patch-deploy\",\n instance_filter={\n \"all\": True,\n },\n one_time_schedule={\n \"execute_time\": \"2999-10-10T10:10:10.045123456Z\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var patch = new Gcp.OsConfig.PatchDeployment(\"patch\", new()\n {\n PatchDeploymentId = \"patch-deploy\",\n InstanceFilter = new Gcp.OsConfig.Inputs.PatchDeploymentInstanceFilterArgs\n {\n All = true,\n },\n OneTimeSchedule = new Gcp.OsConfig.Inputs.PatchDeploymentOneTimeScheduleArgs\n {\n ExecuteTime = \"2999-10-10T10:10:10.045123456Z\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/osconfig\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := osconfig.NewPatchDeployment(ctx, \"patch\", \u0026osconfig.PatchDeploymentArgs{\n\t\t\tPatchDeploymentId: pulumi.String(\"patch-deploy\"),\n\t\t\tInstanceFilter: \u0026osconfig.PatchDeploymentInstanceFilterArgs{\n\t\t\t\tAll: pulumi.Bool(true),\n\t\t\t},\n\t\t\tOneTimeSchedule: \u0026osconfig.PatchDeploymentOneTimeScheduleArgs{\n\t\t\t\tExecuteTime: pulumi.String(\"2999-10-10T10:10:10.045123456Z\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.osconfig.PatchDeployment;\nimport com.pulumi.gcp.osconfig.PatchDeploymentArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentInstanceFilterArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentOneTimeScheduleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var patch = new PatchDeployment(\"patch\", PatchDeploymentArgs.builder()\n .patchDeploymentId(\"patch-deploy\")\n .instanceFilter(PatchDeploymentInstanceFilterArgs.builder()\n .all(true)\n .build())\n .oneTimeSchedule(PatchDeploymentOneTimeScheduleArgs.builder()\n .executeTime(\"2999-10-10T10:10:10.045123456Z\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n patch:\n type: gcp:osconfig:PatchDeployment\n properties:\n patchDeploymentId: patch-deploy\n instanceFilter:\n all: true\n oneTimeSchedule:\n executeTime: 2999-10-10T10:10:10.045123456Z\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Os Config Patch Deployment Daily\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst patch = new gcp.osconfig.PatchDeployment(\"patch\", {\n patchDeploymentId: \"patch-deploy\",\n instanceFilter: {\n all: true,\n },\n recurringSchedule: {\n timeZone: {\n id: \"America/New_York\",\n },\n timeOfDay: {\n hours: 0,\n minutes: 30,\n seconds: 30,\n nanos: 20,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npatch = gcp.osconfig.PatchDeployment(\"patch\",\n patch_deployment_id=\"patch-deploy\",\n instance_filter={\n \"all\": True,\n },\n recurring_schedule={\n \"time_zone\": {\n \"id\": \"America/New_York\",\n },\n \"time_of_day\": {\n \"hours\": 0,\n \"minutes\": 30,\n \"seconds\": 30,\n \"nanos\": 20,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var patch = new Gcp.OsConfig.PatchDeployment(\"patch\", new()\n {\n PatchDeploymentId = \"patch-deploy\",\n InstanceFilter = new Gcp.OsConfig.Inputs.PatchDeploymentInstanceFilterArgs\n {\n All = true,\n },\n RecurringSchedule = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleArgs\n {\n TimeZone = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleTimeZoneArgs\n {\n Id = \"America/New_York\",\n },\n TimeOfDay = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleTimeOfDayArgs\n {\n Hours = 0,\n Minutes = 30,\n Seconds = 30,\n Nanos = 20,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/osconfig\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := osconfig.NewPatchDeployment(ctx, \"patch\", \u0026osconfig.PatchDeploymentArgs{\n\t\t\tPatchDeploymentId: pulumi.String(\"patch-deploy\"),\n\t\t\tInstanceFilter: \u0026osconfig.PatchDeploymentInstanceFilterArgs{\n\t\t\t\tAll: pulumi.Bool(true),\n\t\t\t},\n\t\t\tRecurringSchedule: \u0026osconfig.PatchDeploymentRecurringScheduleArgs{\n\t\t\t\tTimeZone: \u0026osconfig.PatchDeploymentRecurringScheduleTimeZoneArgs{\n\t\t\t\t\tId: pulumi.String(\"America/New_York\"),\n\t\t\t\t},\n\t\t\t\tTimeOfDay: \u0026osconfig.PatchDeploymentRecurringScheduleTimeOfDayArgs{\n\t\t\t\t\tHours: pulumi.Int(0),\n\t\t\t\t\tMinutes: pulumi.Int(30),\n\t\t\t\t\tSeconds: pulumi.Int(30),\n\t\t\t\t\tNanos: pulumi.Int(20),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.osconfig.PatchDeployment;\nimport com.pulumi.gcp.osconfig.PatchDeploymentArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentInstanceFilterArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleTimeZoneArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleTimeOfDayArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var patch = new PatchDeployment(\"patch\", PatchDeploymentArgs.builder()\n .patchDeploymentId(\"patch-deploy\")\n .instanceFilter(PatchDeploymentInstanceFilterArgs.builder()\n .all(true)\n .build())\n .recurringSchedule(PatchDeploymentRecurringScheduleArgs.builder()\n .timeZone(PatchDeploymentRecurringScheduleTimeZoneArgs.builder()\n .id(\"America/New_York\")\n .build())\n .timeOfDay(PatchDeploymentRecurringScheduleTimeOfDayArgs.builder()\n .hours(0)\n .minutes(30)\n .seconds(30)\n .nanos(20)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n patch:\n type: gcp:osconfig:PatchDeployment\n properties:\n patchDeploymentId: patch-deploy\n instanceFilter:\n all: true\n recurringSchedule:\n timeZone:\n id: America/New_York\n timeOfDay:\n hours: 0\n minutes: 30\n seconds: 30\n nanos: 20\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Os Config Patch Deployment Daily Midnight\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst patch = new gcp.osconfig.PatchDeployment(\"patch\", {\n patchDeploymentId: \"patch-deploy\",\n instanceFilter: {\n all: true,\n },\n recurringSchedule: {\n timeZone: {\n id: \"America/New_York\",\n },\n timeOfDay: {\n hours: 0,\n minutes: 0,\n seconds: 0,\n nanos: 0,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npatch = gcp.osconfig.PatchDeployment(\"patch\",\n patch_deployment_id=\"patch-deploy\",\n instance_filter={\n \"all\": True,\n },\n recurring_schedule={\n \"time_zone\": {\n \"id\": \"America/New_York\",\n },\n \"time_of_day\": {\n \"hours\": 0,\n \"minutes\": 0,\n \"seconds\": 0,\n \"nanos\": 0,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var patch = new Gcp.OsConfig.PatchDeployment(\"patch\", new()\n {\n PatchDeploymentId = \"patch-deploy\",\n InstanceFilter = new Gcp.OsConfig.Inputs.PatchDeploymentInstanceFilterArgs\n {\n All = true,\n },\n RecurringSchedule = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleArgs\n {\n TimeZone = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleTimeZoneArgs\n {\n Id = \"America/New_York\",\n },\n TimeOfDay = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleTimeOfDayArgs\n {\n Hours = 0,\n Minutes = 0,\n Seconds = 0,\n Nanos = 0,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/osconfig\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := osconfig.NewPatchDeployment(ctx, \"patch\", \u0026osconfig.PatchDeploymentArgs{\n\t\t\tPatchDeploymentId: pulumi.String(\"patch-deploy\"),\n\t\t\tInstanceFilter: \u0026osconfig.PatchDeploymentInstanceFilterArgs{\n\t\t\t\tAll: pulumi.Bool(true),\n\t\t\t},\n\t\t\tRecurringSchedule: \u0026osconfig.PatchDeploymentRecurringScheduleArgs{\n\t\t\t\tTimeZone: \u0026osconfig.PatchDeploymentRecurringScheduleTimeZoneArgs{\n\t\t\t\t\tId: pulumi.String(\"America/New_York\"),\n\t\t\t\t},\n\t\t\t\tTimeOfDay: \u0026osconfig.PatchDeploymentRecurringScheduleTimeOfDayArgs{\n\t\t\t\t\tHours: pulumi.Int(0),\n\t\t\t\t\tMinutes: pulumi.Int(0),\n\t\t\t\t\tSeconds: pulumi.Int(0),\n\t\t\t\t\tNanos: pulumi.Int(0),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.osconfig.PatchDeployment;\nimport com.pulumi.gcp.osconfig.PatchDeploymentArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentInstanceFilterArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleTimeZoneArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleTimeOfDayArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var patch = new PatchDeployment(\"patch\", PatchDeploymentArgs.builder()\n .patchDeploymentId(\"patch-deploy\")\n .instanceFilter(PatchDeploymentInstanceFilterArgs.builder()\n .all(true)\n .build())\n .recurringSchedule(PatchDeploymentRecurringScheduleArgs.builder()\n .timeZone(PatchDeploymentRecurringScheduleTimeZoneArgs.builder()\n .id(\"America/New_York\")\n .build())\n .timeOfDay(PatchDeploymentRecurringScheduleTimeOfDayArgs.builder()\n .hours(0)\n .minutes(0)\n .seconds(0)\n .nanos(0)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n patch:\n type: gcp:osconfig:PatchDeployment\n properties:\n patchDeploymentId: patch-deploy\n instanceFilter:\n all: true\n recurringSchedule:\n timeZone:\n id: America/New_York\n timeOfDay:\n hours: 0\n minutes: 0\n seconds: 0\n nanos: 0\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Os Config Patch Deployment Instance\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst foobar = new gcp.compute.Instance(\"foobar\", {\n name: \"patch-deploy-inst\",\n machineType: \"e2-medium\",\n zone: \"us-central1-a\",\n canIpForward: false,\n tags: [\n \"foo\",\n \"bar\",\n ],\n bootDisk: {\n initializeParams: {\n image: myImage.then(myImage =\u003e myImage.selfLink),\n },\n },\n networkInterfaces: [{\n network: \"default\",\n }],\n metadata: {\n foo: \"bar\",\n },\n});\nconst patch = new gcp.osconfig.PatchDeployment(\"patch\", {\n patchDeploymentId: \"patch-deploy\",\n instanceFilter: {\n instances: [foobar.id],\n },\n patchConfig: {\n yum: {\n security: true,\n minimal: true,\n excludes: [\"bash\"],\n },\n },\n recurringSchedule: {\n timeZone: {\n id: \"America/New_York\",\n },\n timeOfDay: {\n hours: 0,\n minutes: 30,\n seconds: 30,\n nanos: 20,\n },\n monthly: {\n monthDay: 1,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\nfoobar = gcp.compute.Instance(\"foobar\",\n name=\"patch-deploy-inst\",\n machine_type=\"e2-medium\",\n zone=\"us-central1-a\",\n can_ip_forward=False,\n tags=[\n \"foo\",\n \"bar\",\n ],\n boot_disk={\n \"initialize_params\": {\n \"image\": my_image.self_link,\n },\n },\n network_interfaces=[{\n \"network\": \"default\",\n }],\n metadata={\n \"foo\": \"bar\",\n })\npatch = gcp.osconfig.PatchDeployment(\"patch\",\n patch_deployment_id=\"patch-deploy\",\n instance_filter={\n \"instances\": [foobar.id],\n },\n patch_config={\n \"yum\": {\n \"security\": True,\n \"minimal\": True,\n \"excludes\": [\"bash\"],\n },\n },\n recurring_schedule={\n \"time_zone\": {\n \"id\": \"America/New_York\",\n },\n \"time_of_day\": {\n \"hours\": 0,\n \"minutes\": 30,\n \"seconds\": 30,\n \"nanos\": 20,\n },\n \"monthly\": {\n \"month_day\": 1,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var myImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var foobar = new Gcp.Compute.Instance(\"foobar\", new()\n {\n Name = \"patch-deploy-inst\",\n MachineType = \"e2-medium\",\n Zone = \"us-central1-a\",\n CanIpForward = false,\n Tags = new[]\n {\n \"foo\",\n \"bar\",\n },\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = myImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n },\n Metadata = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n var patch = new Gcp.OsConfig.PatchDeployment(\"patch\", new()\n {\n PatchDeploymentId = \"patch-deploy\",\n InstanceFilter = new Gcp.OsConfig.Inputs.PatchDeploymentInstanceFilterArgs\n {\n Instances = new[]\n {\n foobar.Id,\n },\n },\n PatchConfig = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigArgs\n {\n Yum = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigYumArgs\n {\n Security = true,\n Minimal = true,\n Excludes = new[]\n {\n \"bash\",\n },\n },\n },\n RecurringSchedule = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleArgs\n {\n TimeZone = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleTimeZoneArgs\n {\n Id = \"America/New_York\",\n },\n TimeOfDay = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleTimeOfDayArgs\n {\n Hours = 0,\n Minutes = 30,\n Seconds = 30,\n Nanos = 20,\n },\n Monthly = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleMonthlyArgs\n {\n MonthDay = 1,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/osconfig\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfoobar, err := compute.NewInstance(ctx, \"foobar\", \u0026compute.InstanceArgs{\n\t\t\tName: pulumi.String(\"patch-deploy-inst\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tCanIpForward: pulumi.Bool(false),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(myImage.SelfLink),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = osconfig.NewPatchDeployment(ctx, \"patch\", \u0026osconfig.PatchDeploymentArgs{\n\t\t\tPatchDeploymentId: pulumi.String(\"patch-deploy\"),\n\t\t\tInstanceFilter: \u0026osconfig.PatchDeploymentInstanceFilterArgs{\n\t\t\t\tInstances: pulumi.StringArray{\n\t\t\t\t\tfoobar.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPatchConfig: \u0026osconfig.PatchDeploymentPatchConfigArgs{\n\t\t\t\tYum: \u0026osconfig.PatchDeploymentPatchConfigYumArgs{\n\t\t\t\t\tSecurity: pulumi.Bool(true),\n\t\t\t\t\tMinimal: pulumi.Bool(true),\n\t\t\t\t\tExcludes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"bash\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tRecurringSchedule: \u0026osconfig.PatchDeploymentRecurringScheduleArgs{\n\t\t\t\tTimeZone: \u0026osconfig.PatchDeploymentRecurringScheduleTimeZoneArgs{\n\t\t\t\t\tId: pulumi.String(\"America/New_York\"),\n\t\t\t\t},\n\t\t\t\tTimeOfDay: \u0026osconfig.PatchDeploymentRecurringScheduleTimeOfDayArgs{\n\t\t\t\t\tHours: pulumi.Int(0),\n\t\t\t\t\tMinutes: pulumi.Int(30),\n\t\t\t\t\tSeconds: pulumi.Int(30),\n\t\t\t\t\tNanos: pulumi.Int(20),\n\t\t\t\t},\n\t\t\t\tMonthly: \u0026osconfig.PatchDeploymentRecurringScheduleMonthlyArgs{\n\t\t\t\t\tMonthDay: pulumi.Int(1),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.osconfig.PatchDeployment;\nimport com.pulumi.gcp.osconfig.PatchDeploymentArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentInstanceFilterArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentPatchConfigArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentPatchConfigYumArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleTimeZoneArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleTimeOfDayArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleMonthlyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var myImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var foobar = new Instance(\"foobar\", InstanceArgs.builder()\n .name(\"patch-deploy-inst\")\n .machineType(\"e2-medium\")\n .zone(\"us-central1-a\")\n .canIpForward(false)\n .tags( \n \"foo\",\n \"bar\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(myImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .build())\n .build())\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build())\n .metadata(Map.of(\"foo\", \"bar\"))\n .build());\n\n var patch = new PatchDeployment(\"patch\", PatchDeploymentArgs.builder()\n .patchDeploymentId(\"patch-deploy\")\n .instanceFilter(PatchDeploymentInstanceFilterArgs.builder()\n .instances(foobar.id())\n .build())\n .patchConfig(PatchDeploymentPatchConfigArgs.builder()\n .yum(PatchDeploymentPatchConfigYumArgs.builder()\n .security(true)\n .minimal(true)\n .excludes(\"bash\")\n .build())\n .build())\n .recurringSchedule(PatchDeploymentRecurringScheduleArgs.builder()\n .timeZone(PatchDeploymentRecurringScheduleTimeZoneArgs.builder()\n .id(\"America/New_York\")\n .build())\n .timeOfDay(PatchDeploymentRecurringScheduleTimeOfDayArgs.builder()\n .hours(0)\n .minutes(30)\n .seconds(30)\n .nanos(20)\n .build())\n .monthly(PatchDeploymentRecurringScheduleMonthlyArgs.builder()\n .monthDay(1)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foobar:\n type: gcp:compute:Instance\n properties:\n name: patch-deploy-inst\n machineType: e2-medium\n zone: us-central1-a\n canIpForward: false\n tags:\n - foo\n - bar\n bootDisk:\n initializeParams:\n image: ${myImage.selfLink}\n networkInterfaces:\n - network: default\n metadata:\n foo: bar\n patch:\n type: gcp:osconfig:PatchDeployment\n properties:\n patchDeploymentId: patch-deploy\n instanceFilter:\n instances:\n - ${foobar.id}\n patchConfig:\n yum:\n security: true\n minimal: true\n excludes:\n - bash\n recurringSchedule:\n timeZone:\n id: America/New_York\n timeOfDay:\n hours: 0\n minutes: 30\n seconds: 30\n nanos: 20\n monthly:\n monthDay: 1\nvariables:\n myImage:\n fn::invoke:\n Function: gcp:compute:getImage\n Arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Os Config Patch Deployment Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst patch = new gcp.osconfig.PatchDeployment(\"patch\", {\n patchDeploymentId: \"patch-deploy\",\n instanceFilter: {\n groupLabels: [{\n labels: {\n env: \"dev\",\n app: \"web\",\n },\n }],\n instanceNamePrefixes: [\"test-\"],\n zones: [\n \"us-central1-a\",\n \"us-central-1c\",\n ],\n },\n patchConfig: {\n migInstancesAllowed: true,\n rebootConfig: \"ALWAYS\",\n apt: {\n type: \"DIST\",\n excludes: [\"python\"],\n },\n yum: {\n security: true,\n minimal: true,\n excludes: [\"bash\"],\n },\n goo: {\n enabled: true,\n },\n zypper: {\n categories: [\"security\"],\n },\n windowsUpdate: {\n classifications: [\n \"CRITICAL\",\n \"SECURITY\",\n \"UPDATE\",\n ],\n excludes: [\"5012170\"],\n },\n preStep: {\n linuxExecStepConfig: {\n allowedSuccessCodes: [\n 0,\n 3,\n ],\n localPath: \"/tmp/pre_patch_script.sh\",\n },\n windowsExecStepConfig: {\n interpreter: \"SHELL\",\n allowedSuccessCodes: [\n 0,\n 2,\n ],\n localPath: \"C:\\\\Users\\\\user\\\\pre-patch-script.cmd\",\n },\n },\n postStep: {\n linuxExecStepConfig: {\n gcsObject: {\n bucket: \"my-patch-scripts\",\n generationNumber: \"1523477886880\",\n object: \"linux/post_patch_script\",\n },\n },\n windowsExecStepConfig: {\n interpreter: \"POWERSHELL\",\n gcsObject: {\n bucket: \"my-patch-scripts\",\n generationNumber: \"135920493447\",\n object: \"windows/post_patch_script.ps1\",\n },\n },\n },\n },\n duration: \"10s\",\n recurringSchedule: {\n timeZone: {\n id: \"America/New_York\",\n },\n timeOfDay: {\n hours: 0,\n minutes: 30,\n seconds: 30,\n nanos: 20,\n },\n monthly: {\n weekDayOfMonth: {\n weekOrdinal: -1,\n dayOfWeek: \"TUESDAY\",\n dayOffset: 3,\n },\n },\n },\n rollout: {\n mode: \"ZONE_BY_ZONE\",\n disruptionBudget: {\n fixed: 1,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npatch = gcp.osconfig.PatchDeployment(\"patch\",\n patch_deployment_id=\"patch-deploy\",\n instance_filter={\n \"group_labels\": [{\n \"labels\": {\n \"env\": \"dev\",\n \"app\": \"web\",\n },\n }],\n \"instance_name_prefixes\": [\"test-\"],\n \"zones\": [\n \"us-central1-a\",\n \"us-central-1c\",\n ],\n },\n patch_config={\n \"mig_instances_allowed\": True,\n \"reboot_config\": \"ALWAYS\",\n \"apt\": {\n \"type\": \"DIST\",\n \"excludes\": [\"python\"],\n },\n \"yum\": {\n \"security\": True,\n \"minimal\": True,\n \"excludes\": [\"bash\"],\n },\n \"goo\": {\n \"enabled\": True,\n },\n \"zypper\": {\n \"categories\": [\"security\"],\n },\n \"windows_update\": {\n \"classifications\": [\n \"CRITICAL\",\n \"SECURITY\",\n \"UPDATE\",\n ],\n \"excludes\": [\"5012170\"],\n },\n \"pre_step\": {\n \"linux_exec_step_config\": {\n \"allowed_success_codes\": [\n 0,\n 3,\n ],\n \"local_path\": \"/tmp/pre_patch_script.sh\",\n },\n \"windows_exec_step_config\": {\n \"interpreter\": \"SHELL\",\n \"allowed_success_codes\": [\n 0,\n 2,\n ],\n \"local_path\": \"C:\\\\Users\\\\user\\\\pre-patch-script.cmd\",\n },\n },\n \"post_step\": {\n \"linux_exec_step_config\": {\n \"gcs_object\": {\n \"bucket\": \"my-patch-scripts\",\n \"generation_number\": \"1523477886880\",\n \"object\": \"linux/post_patch_script\",\n },\n },\n \"windows_exec_step_config\": {\n \"interpreter\": \"POWERSHELL\",\n \"gcs_object\": {\n \"bucket\": \"my-patch-scripts\",\n \"generation_number\": \"135920493447\",\n \"object\": \"windows/post_patch_script.ps1\",\n },\n },\n },\n },\n duration=\"10s\",\n recurring_schedule={\n \"time_zone\": {\n \"id\": \"America/New_York\",\n },\n \"time_of_day\": {\n \"hours\": 0,\n \"minutes\": 30,\n \"seconds\": 30,\n \"nanos\": 20,\n },\n \"monthly\": {\n \"week_day_of_month\": {\n \"week_ordinal\": -1,\n \"day_of_week\": \"TUESDAY\",\n \"day_offset\": 3,\n },\n },\n },\n rollout={\n \"mode\": \"ZONE_BY_ZONE\",\n \"disruption_budget\": {\n \"fixed\": 1,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var patch = new Gcp.OsConfig.PatchDeployment(\"patch\", new()\n {\n PatchDeploymentId = \"patch-deploy\",\n InstanceFilter = new Gcp.OsConfig.Inputs.PatchDeploymentInstanceFilterArgs\n {\n GroupLabels = new[]\n {\n new Gcp.OsConfig.Inputs.PatchDeploymentInstanceFilterGroupLabelArgs\n {\n Labels = \n {\n { \"env\", \"dev\" },\n { \"app\", \"web\" },\n },\n },\n },\n InstanceNamePrefixes = new[]\n {\n \"test-\",\n },\n Zones = new[]\n {\n \"us-central1-a\",\n \"us-central-1c\",\n },\n },\n PatchConfig = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigArgs\n {\n MigInstancesAllowed = true,\n RebootConfig = \"ALWAYS\",\n Apt = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigAptArgs\n {\n Type = \"DIST\",\n Excludes = new[]\n {\n \"python\",\n },\n },\n Yum = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigYumArgs\n {\n Security = true,\n Minimal = true,\n Excludes = new[]\n {\n \"bash\",\n },\n },\n Goo = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigGooArgs\n {\n Enabled = true,\n },\n Zypper = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigZypperArgs\n {\n Categories = new[]\n {\n \"security\",\n },\n },\n WindowsUpdate = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigWindowsUpdateArgs\n {\n Classifications = new[]\n {\n \"CRITICAL\",\n \"SECURITY\",\n \"UPDATE\",\n },\n Excludes = new[]\n {\n \"5012170\",\n },\n },\n PreStep = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigPreStepArgs\n {\n LinuxExecStepConfig = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigPreStepLinuxExecStepConfigArgs\n {\n AllowedSuccessCodes = new[]\n {\n 0,\n 3,\n },\n LocalPath = \"/tmp/pre_patch_script.sh\",\n },\n WindowsExecStepConfig = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigPreStepWindowsExecStepConfigArgs\n {\n Interpreter = \"SHELL\",\n AllowedSuccessCodes = new[]\n {\n 0,\n 2,\n },\n LocalPath = \"C:\\\\Users\\\\user\\\\pre-patch-script.cmd\",\n },\n },\n PostStep = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigPostStepArgs\n {\n LinuxExecStepConfig = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigPostStepLinuxExecStepConfigArgs\n {\n GcsObject = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigPostStepLinuxExecStepConfigGcsObjectArgs\n {\n Bucket = \"my-patch-scripts\",\n GenerationNumber = \"1523477886880\",\n Object = \"linux/post_patch_script\",\n },\n },\n WindowsExecStepConfig = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigPostStepWindowsExecStepConfigArgs\n {\n Interpreter = \"POWERSHELL\",\n GcsObject = new Gcp.OsConfig.Inputs.PatchDeploymentPatchConfigPostStepWindowsExecStepConfigGcsObjectArgs\n {\n Bucket = \"my-patch-scripts\",\n GenerationNumber = \"135920493447\",\n Object = \"windows/post_patch_script.ps1\",\n },\n },\n },\n },\n Duration = \"10s\",\n RecurringSchedule = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleArgs\n {\n TimeZone = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleTimeZoneArgs\n {\n Id = \"America/New_York\",\n },\n TimeOfDay = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleTimeOfDayArgs\n {\n Hours = 0,\n Minutes = 30,\n Seconds = 30,\n Nanos = 20,\n },\n Monthly = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleMonthlyArgs\n {\n WeekDayOfMonth = new Gcp.OsConfig.Inputs.PatchDeploymentRecurringScheduleMonthlyWeekDayOfMonthArgs\n {\n WeekOrdinal = -1,\n DayOfWeek = \"TUESDAY\",\n DayOffset = 3,\n },\n },\n },\n Rollout = new Gcp.OsConfig.Inputs.PatchDeploymentRolloutArgs\n {\n Mode = \"ZONE_BY_ZONE\",\n DisruptionBudget = new Gcp.OsConfig.Inputs.PatchDeploymentRolloutDisruptionBudgetArgs\n {\n Fixed = 1,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/osconfig\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := osconfig.NewPatchDeployment(ctx, \"patch\", \u0026osconfig.PatchDeploymentArgs{\n\t\t\tPatchDeploymentId: pulumi.String(\"patch-deploy\"),\n\t\t\tInstanceFilter: \u0026osconfig.PatchDeploymentInstanceFilterArgs{\n\t\t\t\tGroupLabels: osconfig.PatchDeploymentInstanceFilterGroupLabelArray{\n\t\t\t\t\t\u0026osconfig.PatchDeploymentInstanceFilterGroupLabelArgs{\n\t\t\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\t\t\"env\": pulumi.String(\"dev\"),\n\t\t\t\t\t\t\t\"app\": pulumi.String(\"web\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tInstanceNamePrefixes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"test-\"),\n\t\t\t\t},\n\t\t\t\tZones: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"us-central1-a\"),\n\t\t\t\t\tpulumi.String(\"us-central-1c\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPatchConfig: \u0026osconfig.PatchDeploymentPatchConfigArgs{\n\t\t\t\tMigInstancesAllowed: pulumi.Bool(true),\n\t\t\t\tRebootConfig: pulumi.String(\"ALWAYS\"),\n\t\t\t\tApt: \u0026osconfig.PatchDeploymentPatchConfigAptArgs{\n\t\t\t\t\tType: pulumi.String(\"DIST\"),\n\t\t\t\t\tExcludes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"python\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tYum: \u0026osconfig.PatchDeploymentPatchConfigYumArgs{\n\t\t\t\t\tSecurity: pulumi.Bool(true),\n\t\t\t\t\tMinimal: pulumi.Bool(true),\n\t\t\t\t\tExcludes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"bash\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tGoo: \u0026osconfig.PatchDeploymentPatchConfigGooArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tZypper: \u0026osconfig.PatchDeploymentPatchConfigZypperArgs{\n\t\t\t\t\tCategories: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"security\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tWindowsUpdate: \u0026osconfig.PatchDeploymentPatchConfigWindowsUpdateArgs{\n\t\t\t\t\tClassifications: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"CRITICAL\"),\n\t\t\t\t\t\tpulumi.String(\"SECURITY\"),\n\t\t\t\t\t\tpulumi.String(\"UPDATE\"),\n\t\t\t\t\t},\n\t\t\t\t\tExcludes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"5012170\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPreStep: \u0026osconfig.PatchDeploymentPatchConfigPreStepArgs{\n\t\t\t\t\tLinuxExecStepConfig: \u0026osconfig.PatchDeploymentPatchConfigPreStepLinuxExecStepConfigArgs{\n\t\t\t\t\t\tAllowedSuccessCodes: pulumi.IntArray{\n\t\t\t\t\t\t\tpulumi.Int(0),\n\t\t\t\t\t\t\tpulumi.Int(3),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tLocalPath: pulumi.String(\"/tmp/pre_patch_script.sh\"),\n\t\t\t\t\t},\n\t\t\t\t\tWindowsExecStepConfig: \u0026osconfig.PatchDeploymentPatchConfigPreStepWindowsExecStepConfigArgs{\n\t\t\t\t\t\tInterpreter: pulumi.String(\"SHELL\"),\n\t\t\t\t\t\tAllowedSuccessCodes: pulumi.IntArray{\n\t\t\t\t\t\t\tpulumi.Int(0),\n\t\t\t\t\t\t\tpulumi.Int(2),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tLocalPath: pulumi.String(\"C:\\\\Users\\\\user\\\\pre-patch-script.cmd\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPostStep: \u0026osconfig.PatchDeploymentPatchConfigPostStepArgs{\n\t\t\t\t\tLinuxExecStepConfig: \u0026osconfig.PatchDeploymentPatchConfigPostStepLinuxExecStepConfigArgs{\n\t\t\t\t\t\tGcsObject: \u0026osconfig.PatchDeploymentPatchConfigPostStepLinuxExecStepConfigGcsObjectArgs{\n\t\t\t\t\t\t\tBucket: pulumi.String(\"my-patch-scripts\"),\n\t\t\t\t\t\t\tGenerationNumber: pulumi.String(\"1523477886880\"),\n\t\t\t\t\t\t\tObject: pulumi.String(\"linux/post_patch_script\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tWindowsExecStepConfig: \u0026osconfig.PatchDeploymentPatchConfigPostStepWindowsExecStepConfigArgs{\n\t\t\t\t\t\tInterpreter: pulumi.String(\"POWERSHELL\"),\n\t\t\t\t\t\tGcsObject: \u0026osconfig.PatchDeploymentPatchConfigPostStepWindowsExecStepConfigGcsObjectArgs{\n\t\t\t\t\t\t\tBucket: pulumi.String(\"my-patch-scripts\"),\n\t\t\t\t\t\t\tGenerationNumber: pulumi.String(\"135920493447\"),\n\t\t\t\t\t\t\tObject: pulumi.String(\"windows/post_patch_script.ps1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDuration: pulumi.String(\"10s\"),\n\t\t\tRecurringSchedule: \u0026osconfig.PatchDeploymentRecurringScheduleArgs{\n\t\t\t\tTimeZone: \u0026osconfig.PatchDeploymentRecurringScheduleTimeZoneArgs{\n\t\t\t\t\tId: pulumi.String(\"America/New_York\"),\n\t\t\t\t},\n\t\t\t\tTimeOfDay: \u0026osconfig.PatchDeploymentRecurringScheduleTimeOfDayArgs{\n\t\t\t\t\tHours: pulumi.Int(0),\n\t\t\t\t\tMinutes: pulumi.Int(30),\n\t\t\t\t\tSeconds: pulumi.Int(30),\n\t\t\t\t\tNanos: pulumi.Int(20),\n\t\t\t\t},\n\t\t\t\tMonthly: \u0026osconfig.PatchDeploymentRecurringScheduleMonthlyArgs{\n\t\t\t\t\tWeekDayOfMonth: \u0026osconfig.PatchDeploymentRecurringScheduleMonthlyWeekDayOfMonthArgs{\n\t\t\t\t\t\tWeekOrdinal: pulumi.Int(-1),\n\t\t\t\t\t\tDayOfWeek: pulumi.String(\"TUESDAY\"),\n\t\t\t\t\t\tDayOffset: pulumi.Int(3),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tRollout: \u0026osconfig.PatchDeploymentRolloutArgs{\n\t\t\t\tMode: pulumi.String(\"ZONE_BY_ZONE\"),\n\t\t\t\tDisruptionBudget: \u0026osconfig.PatchDeploymentRolloutDisruptionBudgetArgs{\n\t\t\t\t\tFixed: pulumi.Int(1),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.osconfig.PatchDeployment;\nimport com.pulumi.gcp.osconfig.PatchDeploymentArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentInstanceFilterArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentPatchConfigArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentPatchConfigAptArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentPatchConfigYumArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentPatchConfigGooArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentPatchConfigZypperArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentPatchConfigWindowsUpdateArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentPatchConfigPreStepArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentPatchConfigPreStepLinuxExecStepConfigArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentPatchConfigPreStepWindowsExecStepConfigArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentPatchConfigPostStepArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentPatchConfigPostStepLinuxExecStepConfigArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentPatchConfigPostStepLinuxExecStepConfigGcsObjectArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentPatchConfigPostStepWindowsExecStepConfigArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentPatchConfigPostStepWindowsExecStepConfigGcsObjectArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleTimeZoneArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleTimeOfDayArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleMonthlyArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleMonthlyWeekDayOfMonthArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentRolloutArgs;\nimport com.pulumi.gcp.osconfig.inputs.PatchDeploymentRolloutDisruptionBudgetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var patch = new PatchDeployment(\"patch\", PatchDeploymentArgs.builder()\n .patchDeploymentId(\"patch-deploy\")\n .instanceFilter(PatchDeploymentInstanceFilterArgs.builder()\n .groupLabels(PatchDeploymentInstanceFilterGroupLabelArgs.builder()\n .labels(Map.ofEntries(\n Map.entry(\"env\", \"dev\"),\n Map.entry(\"app\", \"web\")\n ))\n .build())\n .instanceNamePrefixes(\"test-\")\n .zones( \n \"us-central1-a\",\n \"us-central-1c\")\n .build())\n .patchConfig(PatchDeploymentPatchConfigArgs.builder()\n .migInstancesAllowed(true)\n .rebootConfig(\"ALWAYS\")\n .apt(PatchDeploymentPatchConfigAptArgs.builder()\n .type(\"DIST\")\n .excludes(\"python\")\n .build())\n .yum(PatchDeploymentPatchConfigYumArgs.builder()\n .security(true)\n .minimal(true)\n .excludes(\"bash\")\n .build())\n .goo(PatchDeploymentPatchConfigGooArgs.builder()\n .enabled(true)\n .build())\n .zypper(PatchDeploymentPatchConfigZypperArgs.builder()\n .categories(\"security\")\n .build())\n .windowsUpdate(PatchDeploymentPatchConfigWindowsUpdateArgs.builder()\n .classifications( \n \"CRITICAL\",\n \"SECURITY\",\n \"UPDATE\")\n .excludes(\"5012170\")\n .build())\n .preStep(PatchDeploymentPatchConfigPreStepArgs.builder()\n .linuxExecStepConfig(PatchDeploymentPatchConfigPreStepLinuxExecStepConfigArgs.builder()\n .allowedSuccessCodes( \n 0,\n 3)\n .localPath(\"/tmp/pre_patch_script.sh\")\n .build())\n .windowsExecStepConfig(PatchDeploymentPatchConfigPreStepWindowsExecStepConfigArgs.builder()\n .interpreter(\"SHELL\")\n .allowedSuccessCodes( \n 0,\n 2)\n .localPath(\"C:\\\\Users\\\\user\\\\pre-patch-script.cmd\")\n .build())\n .build())\n .postStep(PatchDeploymentPatchConfigPostStepArgs.builder()\n .linuxExecStepConfig(PatchDeploymentPatchConfigPostStepLinuxExecStepConfigArgs.builder()\n .gcsObject(PatchDeploymentPatchConfigPostStepLinuxExecStepConfigGcsObjectArgs.builder()\n .bucket(\"my-patch-scripts\")\n .generationNumber(\"1523477886880\")\n .object(\"linux/post_patch_script\")\n .build())\n .build())\n .windowsExecStepConfig(PatchDeploymentPatchConfigPostStepWindowsExecStepConfigArgs.builder()\n .interpreter(\"POWERSHELL\")\n .gcsObject(PatchDeploymentPatchConfigPostStepWindowsExecStepConfigGcsObjectArgs.builder()\n .bucket(\"my-patch-scripts\")\n .generationNumber(\"135920493447\")\n .object(\"windows/post_patch_script.ps1\")\n .build())\n .build())\n .build())\n .build())\n .duration(\"10s\")\n .recurringSchedule(PatchDeploymentRecurringScheduleArgs.builder()\n .timeZone(PatchDeploymentRecurringScheduleTimeZoneArgs.builder()\n .id(\"America/New_York\")\n .build())\n .timeOfDay(PatchDeploymentRecurringScheduleTimeOfDayArgs.builder()\n .hours(0)\n .minutes(30)\n .seconds(30)\n .nanos(20)\n .build())\n .monthly(PatchDeploymentRecurringScheduleMonthlyArgs.builder()\n .weekDayOfMonth(PatchDeploymentRecurringScheduleMonthlyWeekDayOfMonthArgs.builder()\n .weekOrdinal(-1)\n .dayOfWeek(\"TUESDAY\")\n .dayOffset(3)\n .build())\n .build())\n .build())\n .rollout(PatchDeploymentRolloutArgs.builder()\n .mode(\"ZONE_BY_ZONE\")\n .disruptionBudget(PatchDeploymentRolloutDisruptionBudgetArgs.builder()\n .fixed(1)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n patch:\n type: gcp:osconfig:PatchDeployment\n properties:\n patchDeploymentId: patch-deploy\n instanceFilter:\n groupLabels:\n - labels:\n env: dev\n app: web\n instanceNamePrefixes:\n - test-\n zones:\n - us-central1-a\n - us-central-1c\n patchConfig:\n migInstancesAllowed: true\n rebootConfig: ALWAYS\n apt:\n type: DIST\n excludes:\n - python\n yum:\n security: true\n minimal: true\n excludes:\n - bash\n goo:\n enabled: true\n zypper:\n categories:\n - security\n windowsUpdate:\n classifications:\n - CRITICAL\n - SECURITY\n - UPDATE\n excludes:\n - '5012170'\n preStep:\n linuxExecStepConfig:\n allowedSuccessCodes:\n - 0\n - 3\n localPath: /tmp/pre_patch_script.sh\n windowsExecStepConfig:\n interpreter: SHELL\n allowedSuccessCodes:\n - 0\n - 2\n localPath: C:\\Users\\user\\pre-patch-script.cmd\n postStep:\n linuxExecStepConfig:\n gcsObject:\n bucket: my-patch-scripts\n generationNumber: '1523477886880'\n object: linux/post_patch_script\n windowsExecStepConfig:\n interpreter: POWERSHELL\n gcsObject:\n bucket: my-patch-scripts\n generationNumber: '135920493447'\n object: windows/post_patch_script.ps1\n duration: 10s\n recurringSchedule:\n timeZone:\n id: America/New_York\n timeOfDay:\n hours: 0\n minutes: 30\n seconds: 30\n nanos: 20\n monthly:\n weekDayOfMonth:\n weekOrdinal: -1\n dayOfWeek: TUESDAY\n dayOffset: 3\n rollout:\n mode: ZONE_BY_ZONE\n disruptionBudget:\n fixed: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPatchDeployment can be imported using any of these accepted formats:\n\n* `projects/{{project}}/patchDeployments/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, PatchDeployment can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:osconfig/patchDeployment:PatchDeployment default projects/{{project}}/patchDeployments/{{name}}\n```\n\n```sh\n$ pulumi import gcp:osconfig/patchDeployment:PatchDeployment default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:osconfig/patchDeployment:PatchDeployment default {{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -234225,7 +234225,7 @@ } }, "gcp:oslogin/sshPublicKey:SshPublicKey": { - "description": "The SSH public key information associated with a Google account.\n\n\nTo get more information about SSHPublicKey, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/oslogin/rest/v1/users.sshPublicKeys)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/oslogin)\n\n## Example Usage\n\n### Os Login Ssh Key Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst me = gcp.organizations.getClientOpenIdUserInfo({});\nconst cache = new gcp.oslogin.SshPublicKey(\"cache\", {\n user: me.then(me =\u003e me.email),\n key: std.file({\n input: \"path/to/id_rsa.pub\",\n }).then(invoke =\u003e invoke.result),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nme = gcp.organizations.get_client_open_id_user_info()\ncache = gcp.oslogin.SshPublicKey(\"cache\",\n user=me.email,\n key=std.file(input=\"path/to/id_rsa.pub\").result)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var me = Gcp.Organizations.GetClientOpenIdUserInfo.Invoke();\n\n var cache = new Gcp.OsLogin.SshPublicKey(\"cache\", new()\n {\n User = me.Apply(getClientOpenIdUserInfoResult =\u003e getClientOpenIdUserInfoResult.Email),\n Key = Std.File.Invoke(new()\n {\n Input = \"path/to/id_rsa.pub\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/oslogin\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tme, err := organizations.GetClientOpenIdUserInfo(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/id_rsa.pub\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = oslogin.NewSshPublicKey(ctx, \"cache\", \u0026oslogin.SshPublicKeyArgs{\n\t\t\tUser: pulumi.String(me.Email),\n\t\t\tKey: pulumi.String(invokeFile.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.oslogin.SshPublicKey;\nimport com.pulumi.gcp.oslogin.SshPublicKeyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var me = OrganizationsFunctions.getClientOpenIdUserInfo();\n\n var cache = new SshPublicKey(\"cache\", SshPublicKeyArgs.builder()\n .user(me.applyValue(getClientOpenIdUserInfoResult -\u003e getClientOpenIdUserInfoResult.email()))\n .key(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/id_rsa.pub\")\n .build()).result())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cache:\n type: gcp:oslogin:SshPublicKey\n properties:\n user: ${me.email}\n key:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/id_rsa.pub\n Return: result\nvariables:\n me:\n fn::invoke:\n Function: gcp:organizations:getClientOpenIdUserInfo\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSSHPublicKey can be imported using any of these accepted formats:\n\n* `users/{{user}}/sshPublicKeys/{{fingerprint}}`\n\n* `{{user}}/{{fingerprint}}`\n\nWhen using the `pulumi import` command, SSHPublicKey can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:oslogin/sshPublicKey:SshPublicKey default users/{{user}}/sshPublicKeys/{{fingerprint}}\n```\n\n```sh\n$ pulumi import gcp:oslogin/sshPublicKey:SshPublicKey default {{user}}/{{fingerprint}}\n```\n\n", + "description": "The SSH public key information associated with a Google account.\n\n\nTo get more information about SSHPublicKey, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/oslogin/rest/v1/users.sshPublicKeys)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/oslogin)\n\n## Example Usage\n\n### Os Login Ssh Key Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst me = gcp.organizations.getClientOpenIdUserInfo({});\nconst cache = new gcp.oslogin.SshPublicKey(\"cache\", {\n user: me.then(me =\u003e me.email),\n key: std.file({\n input: \"path/to/id_rsa.pub\",\n }).then(invoke =\u003e invoke.result),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nme = gcp.organizations.get_client_open_id_user_info()\ncache = gcp.oslogin.SshPublicKey(\"cache\",\n user=me.email,\n key=std.file(input=\"path/to/id_rsa.pub\").result)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var me = Gcp.Organizations.GetClientOpenIdUserInfo.Invoke();\n\n var cache = new Gcp.OsLogin.SshPublicKey(\"cache\", new()\n {\n User = me.Apply(getClientOpenIdUserInfoResult =\u003e getClientOpenIdUserInfoResult.Email),\n Key = Std.File.Invoke(new()\n {\n Input = \"path/to/id_rsa.pub\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/oslogin\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tme, err := organizations.GetClientOpenIdUserInfo(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/id_rsa.pub\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = oslogin.NewSshPublicKey(ctx, \"cache\", \u0026oslogin.SshPublicKeyArgs{\n\t\t\tUser: pulumi.String(me.Email),\n\t\t\tKey: pulumi.String(invokeFile.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.oslogin.SshPublicKey;\nimport com.pulumi.gcp.oslogin.SshPublicKeyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var me = OrganizationsFunctions.getClientOpenIdUserInfo();\n\n var cache = new SshPublicKey(\"cache\", SshPublicKeyArgs.builder()\n .user(me.applyValue(getClientOpenIdUserInfoResult -\u003e getClientOpenIdUserInfoResult.email()))\n .key(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/id_rsa.pub\")\n .build()).result())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cache:\n type: gcp:oslogin:SshPublicKey\n properties:\n user: ${me.email}\n key:\n fn::invoke:\n Function: std:file\n Arguments:\n input: path/to/id_rsa.pub\n Return: result\nvariables:\n me:\n fn::invoke:\n Function: gcp:organizations:getClientOpenIdUserInfo\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSSHPublicKey can be imported using any of these accepted formats:\n\n* `users/{{user}}/sshPublicKeys/{{fingerprint}}`\n\n* `{{user}}/{{fingerprint}}`\n\nWhen using the `pulumi import` command, SSHPublicKey can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:oslogin/sshPublicKey:SshPublicKey default users/{{user}}/sshPublicKeys/{{fingerprint}}\n```\n\n```sh\n$ pulumi import gcp:oslogin/sshPublicKey:SshPublicKey default {{user}}/{{fingerprint}}\n```\n\n", "properties": { "expirationTimeUsec": { "type": "string", @@ -234577,7 +234577,7 @@ } }, "gcp:privilegedaccessmanager/entitlement:entitlement": { - "description": "An Entitlement defines the eligibility of a set of users to obtain a predefined access for some time possibly after going through an approval workflow.\n\n\n\n## Example Usage\n\n### Privileged Access Manager Entitlement Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst tfentitlement = new gcp.privilegedaccessmanager.Entitlement(\"tfentitlement\", {\n entitlementId: \"example-entitlement\",\n location: \"global\",\n maxRequestDuration: \"43200s\",\n parent: \"projects/my-project-name\",\n requesterJustificationConfig: {\n unstructured: {},\n },\n eligibleUsers: [{\n principals: [\"group:test@google.com\"],\n }],\n privilegedAccess: {\n gcpIamAccess: {\n roleBindings: [{\n role: \"roles/storage.admin\",\n conditionExpression: \"request.time \u003c timestamp(\\\"2024-04-23T18:30:00.000Z\\\")\",\n }],\n resource: \"//cloudresourcemanager.googleapis.com/projects/my-project-name\",\n resourceType: \"cloudresourcemanager.googleapis.com/Project\",\n },\n },\n additionalNotificationTargets: {\n adminEmailRecipients: [\"user@example.com\"],\n requesterEmailRecipients: [\"user@example.com\"],\n },\n approvalWorkflow: {\n manualApprovals: {\n requireApproverJustification: true,\n steps: [{\n approvalsNeeded: 1,\n approverEmailRecipients: [\"user@example.com\"],\n approvers: {\n principals: [\"group:test@google.com\"],\n },\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntfentitlement = gcp.privilegedaccessmanager.Entitlement(\"tfentitlement\",\n entitlement_id=\"example-entitlement\",\n location=\"global\",\n max_request_duration=\"43200s\",\n parent=\"projects/my-project-name\",\n requester_justification_config={\n \"unstructured\": {},\n },\n eligible_users=[{\n \"principals\": [\"group:test@google.com\"],\n }],\n privileged_access={\n \"gcp_iam_access\": {\n \"role_bindings\": [{\n \"role\": \"roles/storage.admin\",\n \"condition_expression\": \"request.time \u003c timestamp(\\\"2024-04-23T18:30:00.000Z\\\")\",\n }],\n \"resource\": \"//cloudresourcemanager.googleapis.com/projects/my-project-name\",\n \"resource_type\": \"cloudresourcemanager.googleapis.com/Project\",\n },\n },\n additional_notification_targets={\n \"admin_email_recipients\": [\"user@example.com\"],\n \"requester_email_recipients\": [\"user@example.com\"],\n },\n approval_workflow={\n \"manual_approvals\": {\n \"require_approver_justification\": True,\n \"steps\": [{\n \"approvals_needed\": 1,\n \"approver_email_recipients\": [\"user@example.com\"],\n \"approvers\": {\n \"principals\": [\"group:test@google.com\"],\n },\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var tfentitlement = new Gcp.PrivilegedAccessManager.Entitlement(\"tfentitlement\", new()\n {\n EntitlementId = \"example-entitlement\",\n Location = \"global\",\n MaxRequestDuration = \"43200s\",\n Parent = \"projects/my-project-name\",\n RequesterJustificationConfig = new Gcp.PrivilegedAccessManager.Inputs.EntitlementRequesterJustificationConfigArgs\n {\n Unstructured = null,\n },\n EligibleUsers = new[]\n {\n new Gcp.PrivilegedAccessManager.Inputs.EntitlementEligibleUserArgs\n {\n Principals = new[]\n {\n \"group:test@google.com\",\n },\n },\n },\n PrivilegedAccess = new Gcp.PrivilegedAccessManager.Inputs.EntitlementPrivilegedAccessArgs\n {\n GcpIamAccess = new Gcp.PrivilegedAccessManager.Inputs.EntitlementPrivilegedAccessGcpIamAccessArgs\n {\n RoleBindings = new[]\n {\n new Gcp.PrivilegedAccessManager.Inputs.EntitlementPrivilegedAccessGcpIamAccessRoleBindingArgs\n {\n Role = \"roles/storage.admin\",\n ConditionExpression = \"request.time \u003c timestamp(\\\"2024-04-23T18:30:00.000Z\\\")\",\n },\n },\n Resource = \"//cloudresourcemanager.googleapis.com/projects/my-project-name\",\n ResourceType = \"cloudresourcemanager.googleapis.com/Project\",\n },\n },\n AdditionalNotificationTargets = new Gcp.PrivilegedAccessManager.Inputs.EntitlementAdditionalNotificationTargetsArgs\n {\n AdminEmailRecipients = new[]\n {\n \"user@example.com\",\n },\n RequesterEmailRecipients = new[]\n {\n \"user@example.com\",\n },\n },\n ApprovalWorkflow = new Gcp.PrivilegedAccessManager.Inputs.EntitlementApprovalWorkflowArgs\n {\n ManualApprovals = new Gcp.PrivilegedAccessManager.Inputs.EntitlementApprovalWorkflowManualApprovalsArgs\n {\n RequireApproverJustification = true,\n Steps = new[]\n {\n new Gcp.PrivilegedAccessManager.Inputs.EntitlementApprovalWorkflowManualApprovalsStepArgs\n {\n ApprovalsNeeded = 1,\n ApproverEmailRecipients = new[]\n {\n \"user@example.com\",\n },\n Approvers = new Gcp.PrivilegedAccessManager.Inputs.EntitlementApprovalWorkflowManualApprovalsStepApproversArgs\n {\n Principals = new[]\n {\n \"group:test@google.com\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/privilegedaccessmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := privilegedaccessmanager.Newentitlement(ctx, \"tfentitlement\", \u0026privilegedaccessmanager.entitlementArgs{\n\t\t\tEntitlementId: pulumi.String(\"example-entitlement\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tMaxRequestDuration: pulumi.String(\"43200s\"),\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tRequesterJustificationConfig: \u0026privilegedaccessmanager.EntitlementRequesterJustificationConfigArgs{\n\t\t\t\tUnstructured: nil,\n\t\t\t},\n\t\t\tEligibleUsers: privilegedaccessmanager.EntitlementEligibleUserArray{\n\t\t\t\t\u0026privilegedaccessmanager.EntitlementEligibleUserArgs{\n\t\t\t\t\tPrincipals: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"group:test@google.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tPrivilegedAccess: \u0026privilegedaccessmanager.EntitlementPrivilegedAccessArgs{\n\t\t\t\tGcpIamAccess: \u0026privilegedaccessmanager.EntitlementPrivilegedAccessGcpIamAccessArgs{\n\t\t\t\t\tRoleBindings: privilegedaccessmanager.EntitlementPrivilegedAccessGcpIamAccessRoleBindingArray{\n\t\t\t\t\t\t\u0026privilegedaccessmanager.EntitlementPrivilegedAccessGcpIamAccessRoleBindingArgs{\n\t\t\t\t\t\t\tRole: pulumi.String(\"roles/storage.admin\"),\n\t\t\t\t\t\t\tConditionExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2024-04-23T18:30:00.000Z\\\")\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tResource: pulumi.String(\"//cloudresourcemanager.googleapis.com/projects/my-project-name\"),\n\t\t\t\t\tResourceType: pulumi.String(\"cloudresourcemanager.googleapis.com/Project\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAdditionalNotificationTargets: \u0026privilegedaccessmanager.EntitlementAdditionalNotificationTargetsArgs{\n\t\t\t\tAdminEmailRecipients: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"user@example.com\"),\n\t\t\t\t},\n\t\t\t\tRequesterEmailRecipients: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"user@example.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tApprovalWorkflow: \u0026privilegedaccessmanager.EntitlementApprovalWorkflowArgs{\n\t\t\t\tManualApprovals: \u0026privilegedaccessmanager.EntitlementApprovalWorkflowManualApprovalsArgs{\n\t\t\t\t\tRequireApproverJustification: pulumi.Bool(true),\n\t\t\t\t\tSteps: privilegedaccessmanager.EntitlementApprovalWorkflowManualApprovalsStepArray{\n\t\t\t\t\t\t\u0026privilegedaccessmanager.EntitlementApprovalWorkflowManualApprovalsStepArgs{\n\t\t\t\t\t\t\tApprovalsNeeded: pulumi.Int(1),\n\t\t\t\t\t\t\tApproverEmailRecipients: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"user@example.com\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tApprovers: \u0026privilegedaccessmanager.EntitlementApprovalWorkflowManualApprovalsStepApproversArgs{\n\t\t\t\t\t\t\t\tPrincipals: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"group:test@google.com\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.privilegedaccessmanager.entitlement;\nimport com.pulumi.gcp.privilegedaccessmanager.EntitlementArgs;\nimport com.pulumi.gcp.privilegedaccessmanager.inputs.EntitlementRequesterJustificationConfigArgs;\nimport com.pulumi.gcp.privilegedaccessmanager.inputs.EntitlementRequesterJustificationConfigUnstructuredArgs;\nimport com.pulumi.gcp.privilegedaccessmanager.inputs.EntitlementEligibleUserArgs;\nimport com.pulumi.gcp.privilegedaccessmanager.inputs.EntitlementPrivilegedAccessArgs;\nimport com.pulumi.gcp.privilegedaccessmanager.inputs.EntitlementPrivilegedAccessGcpIamAccessArgs;\nimport com.pulumi.gcp.privilegedaccessmanager.inputs.EntitlementAdditionalNotificationTargetsArgs;\nimport com.pulumi.gcp.privilegedaccessmanager.inputs.EntitlementApprovalWorkflowArgs;\nimport com.pulumi.gcp.privilegedaccessmanager.inputs.EntitlementApprovalWorkflowManualApprovalsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var tfentitlement = new Entitlement(\"tfentitlement\", EntitlementArgs.builder()\n .entitlementId(\"example-entitlement\")\n .location(\"global\")\n .maxRequestDuration(\"43200s\")\n .parent(\"projects/my-project-name\")\n .requesterJustificationConfig(EntitlementRequesterJustificationConfigArgs.builder()\n .unstructured()\n .build())\n .eligibleUsers(EntitlementEligibleUserArgs.builder()\n .principals(\"group:test@google.com\")\n .build())\n .privilegedAccess(EntitlementPrivilegedAccessArgs.builder()\n .gcpIamAccess(EntitlementPrivilegedAccessGcpIamAccessArgs.builder()\n .roleBindings(EntitlementPrivilegedAccessGcpIamAccessRoleBindingArgs.builder()\n .role(\"roles/storage.admin\")\n .conditionExpression(\"request.time \u003c timestamp(\\\"2024-04-23T18:30:00.000Z\\\")\")\n .build())\n .resource(\"//cloudresourcemanager.googleapis.com/projects/my-project-name\")\n .resourceType(\"cloudresourcemanager.googleapis.com/Project\")\n .build())\n .build())\n .additionalNotificationTargets(EntitlementAdditionalNotificationTargetsArgs.builder()\n .adminEmailRecipients(\"user@example.com\")\n .requesterEmailRecipients(\"user@example.com\")\n .build())\n .approvalWorkflow(EntitlementApprovalWorkflowArgs.builder()\n .manualApprovals(EntitlementApprovalWorkflowManualApprovalsArgs.builder()\n .requireApproverJustification(true)\n .steps(EntitlementApprovalWorkflowManualApprovalsStepArgs.builder()\n .approvalsNeeded(1)\n .approverEmailRecipients(\"user@example.com\")\n .approvers(EntitlementApprovalWorkflowManualApprovalsStepApproversArgs.builder()\n .principals(\"group:test@google.com\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tfentitlement:\n type: gcp:privilegedaccessmanager:entitlement\n properties:\n entitlementId: example-entitlement\n location: global\n maxRequestDuration: 43200s\n parent: projects/my-project-name\n requesterJustificationConfig:\n unstructured: {}\n eligibleUsers:\n - principals:\n - group:test@google.com\n privilegedAccess:\n gcpIamAccess:\n roleBindings:\n - role: roles/storage.admin\n conditionExpression: request.time \u003c timestamp(\"2024-04-23T18:30:00.000Z\")\n resource: //cloudresourcemanager.googleapis.com/projects/my-project-name\n resourceType: cloudresourcemanager.googleapis.com/Project\n additionalNotificationTargets:\n adminEmailRecipients:\n - user@example.com\n requesterEmailRecipients:\n - user@example.com\n approvalWorkflow:\n manualApprovals:\n requireApproverJustification: true\n steps:\n - approvalsNeeded: 1\n approverEmailRecipients:\n - user@example.com\n approvers:\n principals:\n - group:test@google.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nEntitlement can be imported using any of these accepted formats:\n\n* `{{parent}}/locations/{{location}}/entitlements/{{entitlement_id}}`\n\nWhen using the `pulumi import` command, Entitlement can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:privilegedaccessmanager/entitlement:entitlement default {{parent}}/locations/{{location}}/entitlements/{{entitlement_id}}\n```\n\n", + "description": "An Entitlement defines the eligibility of a set of users to obtain a predefined access for some time possibly after going through an approval workflow.\n\n\n\n## Example Usage\n\n### Privileged Access Manager Entitlement Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst tfentitlement = new gcp.privilegedaccessmanager.Entitlement(\"tfentitlement\", {\n entitlementId: \"example-entitlement\",\n location: \"global\",\n maxRequestDuration: \"43200s\",\n parent: \"projects/my-project-name\",\n requesterJustificationConfig: {\n unstructured: {},\n },\n eligibleUsers: [{\n principals: [\"group:test@google.com\"],\n }],\n privilegedAccess: {\n gcpIamAccess: {\n roleBindings: [{\n role: \"roles/storage.admin\",\n conditionExpression: \"request.time \u003c timestamp(\\\"2024-04-23T18:30:00.000Z\\\")\",\n }],\n resource: \"//cloudresourcemanager.googleapis.com/projects/my-project-name\",\n resourceType: \"cloudresourcemanager.googleapis.com/Project\",\n },\n },\n additionalNotificationTargets: {\n adminEmailRecipients: [\"user@example.com\"],\n requesterEmailRecipients: [\"user@example.com\"],\n },\n approvalWorkflow: {\n manualApprovals: {\n requireApproverJustification: true,\n steps: [{\n approvalsNeeded: 1,\n approverEmailRecipients: [\"user@example.com\"],\n approvers: {\n principals: [\"group:test@google.com\"],\n },\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntfentitlement = gcp.privilegedaccessmanager.Entitlement(\"tfentitlement\",\n entitlement_id=\"example-entitlement\",\n location=\"global\",\n max_request_duration=\"43200s\",\n parent=\"projects/my-project-name\",\n requester_justification_config={\n \"unstructured\": {},\n },\n eligible_users=[{\n \"principals\": [\"group:test@google.com\"],\n }],\n privileged_access={\n \"gcp_iam_access\": {\n \"role_bindings\": [{\n \"role\": \"roles/storage.admin\",\n \"condition_expression\": \"request.time \u003c timestamp(\\\"2024-04-23T18:30:00.000Z\\\")\",\n }],\n \"resource\": \"//cloudresourcemanager.googleapis.com/projects/my-project-name\",\n \"resource_type\": \"cloudresourcemanager.googleapis.com/Project\",\n },\n },\n additional_notification_targets={\n \"admin_email_recipients\": [\"user@example.com\"],\n \"requester_email_recipients\": [\"user@example.com\"],\n },\n approval_workflow={\n \"manual_approvals\": {\n \"require_approver_justification\": True,\n \"steps\": [{\n \"approvals_needed\": 1,\n \"approver_email_recipients\": [\"user@example.com\"],\n \"approvers\": {\n \"principals\": [\"group:test@google.com\"],\n },\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var tfentitlement = new Gcp.PrivilegedAccessManager.Entitlement(\"tfentitlement\", new()\n {\n EntitlementId = \"example-entitlement\",\n Location = \"global\",\n MaxRequestDuration = \"43200s\",\n Parent = \"projects/my-project-name\",\n RequesterJustificationConfig = new Gcp.PrivilegedAccessManager.Inputs.EntitlementRequesterJustificationConfigArgs\n {\n Unstructured = null,\n },\n EligibleUsers = new[]\n {\n new Gcp.PrivilegedAccessManager.Inputs.EntitlementEligibleUserArgs\n {\n Principals = new[]\n {\n \"group:test@google.com\",\n },\n },\n },\n PrivilegedAccess = new Gcp.PrivilegedAccessManager.Inputs.EntitlementPrivilegedAccessArgs\n {\n GcpIamAccess = new Gcp.PrivilegedAccessManager.Inputs.EntitlementPrivilegedAccessGcpIamAccessArgs\n {\n RoleBindings = new[]\n {\n new Gcp.PrivilegedAccessManager.Inputs.EntitlementPrivilegedAccessGcpIamAccessRoleBindingArgs\n {\n Role = \"roles/storage.admin\",\n ConditionExpression = \"request.time \u003c timestamp(\\\"2024-04-23T18:30:00.000Z\\\")\",\n },\n },\n Resource = \"//cloudresourcemanager.googleapis.com/projects/my-project-name\",\n ResourceType = \"cloudresourcemanager.googleapis.com/Project\",\n },\n },\n AdditionalNotificationTargets = new Gcp.PrivilegedAccessManager.Inputs.EntitlementAdditionalNotificationTargetsArgs\n {\n AdminEmailRecipients = new[]\n {\n \"user@example.com\",\n },\n RequesterEmailRecipients = new[]\n {\n \"user@example.com\",\n },\n },\n ApprovalWorkflow = new Gcp.PrivilegedAccessManager.Inputs.EntitlementApprovalWorkflowArgs\n {\n ManualApprovals = new Gcp.PrivilegedAccessManager.Inputs.EntitlementApprovalWorkflowManualApprovalsArgs\n {\n RequireApproverJustification = true,\n Steps = new[]\n {\n new Gcp.PrivilegedAccessManager.Inputs.EntitlementApprovalWorkflowManualApprovalsStepArgs\n {\n ApprovalsNeeded = 1,\n ApproverEmailRecipients = new[]\n {\n \"user@example.com\",\n },\n Approvers = new Gcp.PrivilegedAccessManager.Inputs.EntitlementApprovalWorkflowManualApprovalsStepApproversArgs\n {\n Principals = new[]\n {\n \"group:test@google.com\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/privilegedaccessmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := privilegedaccessmanager.Newentitlement(ctx, \"tfentitlement\", \u0026privilegedaccessmanager.entitlementArgs{\n\t\t\tEntitlementId: pulumi.String(\"example-entitlement\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tMaxRequestDuration: pulumi.String(\"43200s\"),\n\t\t\tParent: pulumi.String(\"projects/my-project-name\"),\n\t\t\tRequesterJustificationConfig: \u0026privilegedaccessmanager.EntitlementRequesterJustificationConfigArgs{\n\t\t\t\tUnstructured: \u0026privilegedaccessmanager.EntitlementRequesterJustificationConfigUnstructuredArgs{},\n\t\t\t},\n\t\t\tEligibleUsers: privilegedaccessmanager.EntitlementEligibleUserArray{\n\t\t\t\t\u0026privilegedaccessmanager.EntitlementEligibleUserArgs{\n\t\t\t\t\tPrincipals: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"group:test@google.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tPrivilegedAccess: \u0026privilegedaccessmanager.EntitlementPrivilegedAccessArgs{\n\t\t\t\tGcpIamAccess: \u0026privilegedaccessmanager.EntitlementPrivilegedAccessGcpIamAccessArgs{\n\t\t\t\t\tRoleBindings: privilegedaccessmanager.EntitlementPrivilegedAccessGcpIamAccessRoleBindingArray{\n\t\t\t\t\t\t\u0026privilegedaccessmanager.EntitlementPrivilegedAccessGcpIamAccessRoleBindingArgs{\n\t\t\t\t\t\t\tRole: pulumi.String(\"roles/storage.admin\"),\n\t\t\t\t\t\t\tConditionExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2024-04-23T18:30:00.000Z\\\")\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tResource: pulumi.String(\"//cloudresourcemanager.googleapis.com/projects/my-project-name\"),\n\t\t\t\t\tResourceType: pulumi.String(\"cloudresourcemanager.googleapis.com/Project\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAdditionalNotificationTargets: \u0026privilegedaccessmanager.EntitlementAdditionalNotificationTargetsArgs{\n\t\t\t\tAdminEmailRecipients: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"user@example.com\"),\n\t\t\t\t},\n\t\t\t\tRequesterEmailRecipients: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"user@example.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tApprovalWorkflow: \u0026privilegedaccessmanager.EntitlementApprovalWorkflowArgs{\n\t\t\t\tManualApprovals: \u0026privilegedaccessmanager.EntitlementApprovalWorkflowManualApprovalsArgs{\n\t\t\t\t\tRequireApproverJustification: pulumi.Bool(true),\n\t\t\t\t\tSteps: privilegedaccessmanager.EntitlementApprovalWorkflowManualApprovalsStepArray{\n\t\t\t\t\t\t\u0026privilegedaccessmanager.EntitlementApprovalWorkflowManualApprovalsStepArgs{\n\t\t\t\t\t\t\tApprovalsNeeded: pulumi.Int(1),\n\t\t\t\t\t\t\tApproverEmailRecipients: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"user@example.com\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tApprovers: \u0026privilegedaccessmanager.EntitlementApprovalWorkflowManualApprovalsStepApproversArgs{\n\t\t\t\t\t\t\t\tPrincipals: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"group:test@google.com\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.privilegedaccessmanager.entitlement;\nimport com.pulumi.gcp.privilegedaccessmanager.EntitlementArgs;\nimport com.pulumi.gcp.privilegedaccessmanager.inputs.EntitlementRequesterJustificationConfigArgs;\nimport com.pulumi.gcp.privilegedaccessmanager.inputs.EntitlementRequesterJustificationConfigUnstructuredArgs;\nimport com.pulumi.gcp.privilegedaccessmanager.inputs.EntitlementEligibleUserArgs;\nimport com.pulumi.gcp.privilegedaccessmanager.inputs.EntitlementPrivilegedAccessArgs;\nimport com.pulumi.gcp.privilegedaccessmanager.inputs.EntitlementPrivilegedAccessGcpIamAccessArgs;\nimport com.pulumi.gcp.privilegedaccessmanager.inputs.EntitlementAdditionalNotificationTargetsArgs;\nimport com.pulumi.gcp.privilegedaccessmanager.inputs.EntitlementApprovalWorkflowArgs;\nimport com.pulumi.gcp.privilegedaccessmanager.inputs.EntitlementApprovalWorkflowManualApprovalsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var tfentitlement = new Entitlement(\"tfentitlement\", EntitlementArgs.builder()\n .entitlementId(\"example-entitlement\")\n .location(\"global\")\n .maxRequestDuration(\"43200s\")\n .parent(\"projects/my-project-name\")\n .requesterJustificationConfig(EntitlementRequesterJustificationConfigArgs.builder()\n .unstructured()\n .build())\n .eligibleUsers(EntitlementEligibleUserArgs.builder()\n .principals(\"group:test@google.com\")\n .build())\n .privilegedAccess(EntitlementPrivilegedAccessArgs.builder()\n .gcpIamAccess(EntitlementPrivilegedAccessGcpIamAccessArgs.builder()\n .roleBindings(EntitlementPrivilegedAccessGcpIamAccessRoleBindingArgs.builder()\n .role(\"roles/storage.admin\")\n .conditionExpression(\"request.time \u003c timestamp(\\\"2024-04-23T18:30:00.000Z\\\")\")\n .build())\n .resource(\"//cloudresourcemanager.googleapis.com/projects/my-project-name\")\n .resourceType(\"cloudresourcemanager.googleapis.com/Project\")\n .build())\n .build())\n .additionalNotificationTargets(EntitlementAdditionalNotificationTargetsArgs.builder()\n .adminEmailRecipients(\"user@example.com\")\n .requesterEmailRecipients(\"user@example.com\")\n .build())\n .approvalWorkflow(EntitlementApprovalWorkflowArgs.builder()\n .manualApprovals(EntitlementApprovalWorkflowManualApprovalsArgs.builder()\n .requireApproverJustification(true)\n .steps(EntitlementApprovalWorkflowManualApprovalsStepArgs.builder()\n .approvalsNeeded(1)\n .approverEmailRecipients(\"user@example.com\")\n .approvers(EntitlementApprovalWorkflowManualApprovalsStepApproversArgs.builder()\n .principals(\"group:test@google.com\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tfentitlement:\n type: gcp:privilegedaccessmanager:entitlement\n properties:\n entitlementId: example-entitlement\n location: global\n maxRequestDuration: 43200s\n parent: projects/my-project-name\n requesterJustificationConfig:\n unstructured: {}\n eligibleUsers:\n - principals:\n - group:test@google.com\n privilegedAccess:\n gcpIamAccess:\n roleBindings:\n - role: roles/storage.admin\n conditionExpression: request.time \u003c timestamp(\"2024-04-23T18:30:00.000Z\")\n resource: //cloudresourcemanager.googleapis.com/projects/my-project-name\n resourceType: cloudresourcemanager.googleapis.com/Project\n additionalNotificationTargets:\n adminEmailRecipients:\n - user@example.com\n requesterEmailRecipients:\n - user@example.com\n approvalWorkflow:\n manualApprovals:\n requireApproverJustification: true\n steps:\n - approvalsNeeded: 1\n approverEmailRecipients:\n - user@example.com\n approvers:\n principals:\n - group:test@google.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nEntitlement can be imported using any of these accepted formats:\n\n* `{{parent}}/locations/{{location}}/entitlements/{{entitlement_id}}`\n\nWhen using the `pulumi import` command, Entitlement can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:privilegedaccessmanager/entitlement:entitlement default {{parent}}/locations/{{location}}/entitlements/{{entitlement_id}}\n```\n\n", "properties": { "additionalNotificationTargets": { "$ref": "#/types/gcp:privilegedaccessmanager/entitlementAdditionalNotificationTargets:entitlementAdditionalNotificationTargets", @@ -235529,7 +235529,7 @@ } }, "gcp:projects/iamMemberRemove:IamMemberRemove": { - "description": "Ensures that a member:role pairing does not exist in a project's IAM policy. \n\nOn create, this resource will modify the policy to remove the `member` from the\n`role`. If the membership is ever re-added, the next refresh will clear this\nresource from state, proposing re-adding it to correct the membership. Import is\nnot supported- this resource will acquire the current policy and modify it as\npart of creating the resource.\n\nThis resource will conflict with `gcp.projects.IAMPolicy` and\n`gcp.projects.IAMBinding` resources that share a role, as well as\n`gcp.projects.IAMMember` resources that target the same membership. When\nmultiple resources conflict the final state is not guaranteed to include or omit\nthe membership. Subsequent `pulumi up` calls will always show a diff\nuntil the configuration is corrected.\n\nFor more information see\n[the official documentation](https://cloud.google.com/iam/docs/granting-changing-revoking-access)\nand\n[API reference](https://cloud.google.com/resource-manager/reference/rest/v1/projects/setIamPolicy).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst targetProject = gcp.organizations.getProject({});\nconst foo = new gcp.projects.IamMemberRemove(\"foo\", {\n role: \"roles/editor\",\n project: targetProjectGoogleProject.projectId,\n member: `serviceAccount:${targetProjectGoogleProject.number}-compute@developer.gserviceaccount.com`,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntarget_project = gcp.organizations.get_project()\nfoo = gcp.projects.IamMemberRemove(\"foo\",\n role=\"roles/editor\",\n project=target_project_google_project[\"projectId\"],\n member=f\"serviceAccount:{target_project_google_project['number']}-compute@developer.gserviceaccount.com\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var targetProject = Gcp.Organizations.GetProject.Invoke();\n\n var foo = new Gcp.Projects.IamMemberRemove(\"foo\", new()\n {\n Role = \"roles/editor\",\n Project = targetProjectGoogleProject.ProjectId,\n Member = $\"serviceAccount:{targetProjectGoogleProject.Number}-compute@developer.gserviceaccount.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIamMemberRemove(ctx, \"foo\", \u0026projects.IamMemberRemoveArgs{\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tProject: pulumi.Any(targetProjectGoogleProject.ProjectId),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:%v-compute@developer.gserviceaccount.com\", targetProjectGoogleProject.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.projects.IamMemberRemove;\nimport com.pulumi.gcp.projects.IamMemberRemoveArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var targetProject = OrganizationsFunctions.getProject();\n\n var foo = new IamMemberRemove(\"foo\", IamMemberRemoveArgs.builder()\n .role(\"roles/editor\")\n .project(targetProjectGoogleProject.projectId())\n .member(String.format(\"serviceAccount:%s-compute@developer.gserviceaccount.com\", targetProjectGoogleProject.number()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foo:\n type: gcp:projects:IamMemberRemove\n properties:\n role: roles/editor\n project: ${targetProjectGoogleProject.projectId}\n member: serviceAccount:${targetProjectGoogleProject.number}-compute@developer.gserviceaccount.com\nvariables:\n targetProject:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Ensures that a member:role pairing does not exist in a project's IAM policy. \n\nOn create, this resource will modify the policy to remove the `member` from the\n`role`. If the membership is ever re-added, the next refresh will clear this\nresource from state, proposing re-adding it to correct the membership. Import is\nnot supported- this resource will acquire the current policy and modify it as\npart of creating the resource.\n\nThis resource will conflict with `gcp.projects.IAMPolicy` and\n`gcp.projects.IAMBinding` resources that share a role, as well as\n`gcp.projects.IAMMember` resources that target the same membership. When\nmultiple resources conflict the final state is not guaranteed to include or omit\nthe membership. Subsequent `pulumi up` calls will always show a diff\nuntil the configuration is corrected.\n\nFor more information see\n[the official documentation](https://cloud.google.com/iam/docs/granting-changing-revoking-access)\nand\n[API reference](https://cloud.google.com/resource-manager/reference/rest/v1/projects/setIamPolicy).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst targetProject = gcp.organizations.getProject({});\nconst foo = new gcp.projects.IamMemberRemove(\"foo\", {\n role: \"roles/editor\",\n project: targetProjectGoogleProject.projectId,\n member: `serviceAccount:${targetProjectGoogleProject.number}-compute@developer.gserviceaccount.com`,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntarget_project = gcp.organizations.get_project()\nfoo = gcp.projects.IamMemberRemove(\"foo\",\n role=\"roles/editor\",\n project=target_project_google_project[\"projectId\"],\n member=f\"serviceAccount:{target_project_google_project['number']}-compute@developer.gserviceaccount.com\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var targetProject = Gcp.Organizations.GetProject.Invoke();\n\n var foo = new Gcp.Projects.IamMemberRemove(\"foo\", new()\n {\n Role = \"roles/editor\",\n Project = targetProjectGoogleProject.ProjectId,\n Member = $\"serviceAccount:{targetProjectGoogleProject.Number}-compute@developer.gserviceaccount.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIamMemberRemove(ctx, \"foo\", \u0026projects.IamMemberRemoveArgs{\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tProject: pulumi.Any(targetProjectGoogleProject.ProjectId),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:%v-compute@developer.gserviceaccount.com\", targetProjectGoogleProject.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.projects.IamMemberRemove;\nimport com.pulumi.gcp.projects.IamMemberRemoveArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var targetProject = OrganizationsFunctions.getProject();\n\n var foo = new IamMemberRemove(\"foo\", IamMemberRemoveArgs.builder()\n .role(\"roles/editor\")\n .project(targetProjectGoogleProject.projectId())\n .member(String.format(\"serviceAccount:%s-compute@developer.gserviceaccount.com\", targetProjectGoogleProject.number()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foo:\n type: gcp:projects:IamMemberRemove\n properties:\n role: roles/editor\n project: ${targetProjectGoogleProject.projectId}\n member: serviceAccount:${targetProjectGoogleProject.number}-compute@developer.gserviceaccount.com\nvariables:\n targetProject:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "properties": { "member": { "type": "string", @@ -235806,7 +235806,7 @@ } }, "gcp:projects/serviceIdentity:ServiceIdentity": { - "description": "Generate service identity for a service.\n\n\u003e **Note:** Once created, this resource cannot be updated or destroyed. These\nactions are a no-op.\n\n\u003e **Note:** This resource can be used to retrieve the emails of the [Google-managed service accounts](https://cloud.google.com/iam/docs/service-agents) \nof the APIs that Google has configured with a Service Identity. You can run `gcloud beta services identity create --service SERVICE_NAME.googleapis.com` to\nverify if an API supports this.\n\nTo get more information about Service Identity, see:\n\n* [API documentation](https://cloud.google.com/service-usage/docs/reference/rest/v1beta1/services/generateServiceIdentity)\n\n## Example Usage\n\n### Service Identity Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst hcSa = new gcp.projects.ServiceIdentity(\"hc_sa\", {\n project: project.then(project =\u003e project.projectId),\n service: \"healthcare.googleapis.com\",\n});\nconst hcSaBqJobuser = new gcp.projects.IAMMember(\"hc_sa_bq_jobuser\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/bigquery.jobUser\",\n member: hcSa.member,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nhc_sa = gcp.projects.ServiceIdentity(\"hc_sa\",\n project=project.project_id,\n service=\"healthcare.googleapis.com\")\nhc_sa_bq_jobuser = gcp.projects.IAMMember(\"hc_sa_bq_jobuser\",\n project=project.project_id,\n role=\"roles/bigquery.jobUser\",\n member=hc_sa.member)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var hcSa = new Gcp.Projects.ServiceIdentity(\"hc_sa\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Service = \"healthcare.googleapis.com\",\n });\n\n var hcSaBqJobuser = new Gcp.Projects.IAMMember(\"hc_sa_bq_jobuser\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/bigquery.jobUser\",\n Member = hcSa.Member,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/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\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thcSa, err := projects.NewServiceIdentity(ctx, \"hc_sa\", \u0026projects.ServiceIdentityArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tService: pulumi.String(\"healthcare.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, \"hc_sa_bq_jobuser\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/bigquery.jobUser\"),\n\t\t\tMember: hcSa.Member,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.projects.ServiceIdentity;\nimport com.pulumi.gcp.projects.ServiceIdentityArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var hcSa = new ServiceIdentity(\"hcSa\", ServiceIdentityArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .service(\"healthcare.googleapis.com\")\n .build());\n\n var hcSaBqJobuser = new IAMMember(\"hcSaBqJobuser\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/bigquery.jobUser\")\n .member(hcSa.member())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n hcSa:\n type: gcp:projects:ServiceIdentity\n name: hc_sa\n properties:\n project: ${project.projectId}\n service: healthcare.googleapis.com\n hcSaBqJobuser:\n type: gcp:projects:IAMMember\n name: hc_sa_bq_jobuser\n properties:\n project: ${project.projectId}\n role: roles/bigquery.jobUser\n member: ${hcSa.member}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource does not support import.\n\n", + "description": "Generate service identity for a service.\n\n\u003e **Note:** Once created, this resource cannot be updated or destroyed. These\nactions are a no-op.\n\n\u003e **Note:** This resource can be used to retrieve the emails of the [Google-managed service accounts](https://cloud.google.com/iam/docs/service-agents) \nof the APIs that Google has configured with a Service Identity. You can run `gcloud beta services identity create --service SERVICE_NAME.googleapis.com` to\nverify if an API supports this.\n\nTo get more information about Service Identity, see:\n\n* [API documentation](https://cloud.google.com/service-usage/docs/reference/rest/v1beta1/services/generateServiceIdentity)\n\n## Example Usage\n\n### Service Identity Basic\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst hcSa = new gcp.projects.ServiceIdentity(\"hc_sa\", {\n project: project.then(project =\u003e project.projectId),\n service: \"healthcare.googleapis.com\",\n});\nconst hcSaBqJobuser = new gcp.projects.IAMMember(\"hc_sa_bq_jobuser\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/bigquery.jobUser\",\n member: hcSa.member,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nhc_sa = gcp.projects.ServiceIdentity(\"hc_sa\",\n project=project.project_id,\n service=\"healthcare.googleapis.com\")\nhc_sa_bq_jobuser = gcp.projects.IAMMember(\"hc_sa_bq_jobuser\",\n project=project.project_id,\n role=\"roles/bigquery.jobUser\",\n member=hc_sa.member)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var hcSa = new Gcp.Projects.ServiceIdentity(\"hc_sa\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Service = \"healthcare.googleapis.com\",\n });\n\n var hcSaBqJobuser = new Gcp.Projects.IAMMember(\"hc_sa_bq_jobuser\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/bigquery.jobUser\",\n Member = hcSa.Member,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/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\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thcSa, err := projects.NewServiceIdentity(ctx, \"hc_sa\", \u0026projects.ServiceIdentityArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tService: pulumi.String(\"healthcare.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, \"hc_sa_bq_jobuser\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/bigquery.jobUser\"),\n\t\t\tMember: hcSa.Member,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.projects.ServiceIdentity;\nimport com.pulumi.gcp.projects.ServiceIdentityArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var hcSa = new ServiceIdentity(\"hcSa\", ServiceIdentityArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .service(\"healthcare.googleapis.com\")\n .build());\n\n var hcSaBqJobuser = new IAMMember(\"hcSaBqJobuser\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/bigquery.jobUser\")\n .member(hcSa.member())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n hcSa:\n type: gcp:projects:ServiceIdentity\n name: hc_sa\n properties:\n project: ${project.projectId}\n service: healthcare.googleapis.com\n hcSaBqJobuser:\n type: gcp:projects:IAMMember\n name: hc_sa_bq_jobuser\n properties:\n project: ${project.projectId}\n role: roles/bigquery.jobUser\n member: ${hcSa.member}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource does not support import.\n\n", "properties": { "email": { "type": "string", @@ -235934,7 +235934,7 @@ } }, "gcp:pubsub/liteReservation:LiteReservation": { - "description": "A named resource representing a shared pool of capacity.\n\n\nTo get more information about Reservation, see:\n\n* [API documentation](https://cloud.google.com/pubsub/lite/docs/reference/rest/v1/admin.projects.locations.reservations)\n* How-to Guides\n * [Managing Reservations](https://cloud.google.com/pubsub/lite/docs/reservations)\n\n## Example Usage\n\n### Pubsub Lite Reservation Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example = new gcp.pubsub.LiteReservation(\"example\", {\n name: \"example-reservation\",\n project: project.then(project =\u003e project.number),\n throughputCapacity: 2,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample = gcp.pubsub.LiteReservation(\"example\",\n name=\"example-reservation\",\n project=project.number,\n throughput_capacity=2)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var example = new Gcp.PubSub.LiteReservation(\"example\", new()\n {\n Name = \"example-reservation\",\n Project = project.Apply(getProjectResult =\u003e getProjectResult.Number),\n ThroughputCapacity = 2,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewLiteReservation(ctx, \"example\", \u0026pubsub.LiteReservationArgs{\n\t\t\tName: pulumi.String(\"example-reservation\"),\n\t\t\tProject: pulumi.String(project.Number),\n\t\t\tThroughputCapacity: pulumi.Int(2),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.pubsub.LiteReservation;\nimport com.pulumi.gcp.pubsub.LiteReservationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var example = new LiteReservation(\"example\", LiteReservationArgs.builder()\n .name(\"example-reservation\")\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.number()))\n .throughputCapacity(2)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:LiteReservation\n properties:\n name: example-reservation\n project: ${project.number}\n throughputCapacity: 2\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nReservation can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/reservations/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Reservation can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:pubsub/liteReservation:LiteReservation default projects/{{project}}/locations/{{region}}/reservations/{{name}}\n```\n\n```sh\n$ pulumi import gcp:pubsub/liteReservation:LiteReservation default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:pubsub/liteReservation:LiteReservation default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:pubsub/liteReservation:LiteReservation default {{name}}\n```\n\n", + "description": "A named resource representing a shared pool of capacity.\n\n\nTo get more information about Reservation, see:\n\n* [API documentation](https://cloud.google.com/pubsub/lite/docs/reference/rest/v1/admin.projects.locations.reservations)\n* How-to Guides\n * [Managing Reservations](https://cloud.google.com/pubsub/lite/docs/reservations)\n\n## Example Usage\n\n### Pubsub Lite Reservation Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example = new gcp.pubsub.LiteReservation(\"example\", {\n name: \"example-reservation\",\n project: project.then(project =\u003e project.number),\n throughputCapacity: 2,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample = gcp.pubsub.LiteReservation(\"example\",\n name=\"example-reservation\",\n project=project.number,\n throughput_capacity=2)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var example = new Gcp.PubSub.LiteReservation(\"example\", new()\n {\n Name = \"example-reservation\",\n Project = project.Apply(getProjectResult =\u003e getProjectResult.Number),\n ThroughputCapacity = 2,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewLiteReservation(ctx, \"example\", \u0026pubsub.LiteReservationArgs{\n\t\t\tName: pulumi.String(\"example-reservation\"),\n\t\t\tProject: pulumi.String(project.Number),\n\t\t\tThroughputCapacity: pulumi.Int(2),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.pubsub.LiteReservation;\nimport com.pulumi.gcp.pubsub.LiteReservationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var example = new LiteReservation(\"example\", LiteReservationArgs.builder()\n .name(\"example-reservation\")\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.number()))\n .throughputCapacity(2)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:LiteReservation\n properties:\n name: example-reservation\n project: ${project.number}\n throughputCapacity: 2\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nReservation can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/reservations/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Reservation can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:pubsub/liteReservation:LiteReservation default projects/{{project}}/locations/{{region}}/reservations/{{name}}\n```\n\n```sh\n$ pulumi import gcp:pubsub/liteReservation:LiteReservation default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:pubsub/liteReservation:LiteReservation default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:pubsub/liteReservation:LiteReservation default {{name}}\n```\n\n", "properties": { "name": { "type": "string", @@ -236007,7 +236007,7 @@ } }, "gcp:pubsub/liteSubscription:LiteSubscription": { - "description": "A named resource representing the stream of messages from a single,\nspecific topic, to be delivered to the subscribing application.\n\n\nTo get more information about Subscription, see:\n\n* [API documentation](https://cloud.google.com/pubsub/lite/docs/reference/rest/v1/admin.projects.locations.subscriptions)\n* How-to Guides\n * [Managing Subscriptions](https://cloud.google.com/pubsub/lite/docs/subscriptions)\n\n## Example Usage\n\n### Pubsub Lite Subscription Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example = new gcp.pubsub.LiteTopic(\"example\", {\n name: \"example-topic\",\n project: project.then(project =\u003e project.number),\n partitionConfig: {\n count: 1,\n capacity: {\n publishMibPerSec: 4,\n subscribeMibPerSec: 8,\n },\n },\n retentionConfig: {\n perPartitionBytes: \"32212254720\",\n },\n});\nconst exampleLiteSubscription = new gcp.pubsub.LiteSubscription(\"example\", {\n name: \"example-subscription\",\n topic: example.name,\n deliveryConfig: {\n deliveryRequirement: \"DELIVER_AFTER_STORED\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample = gcp.pubsub.LiteTopic(\"example\",\n name=\"example-topic\",\n project=project.number,\n partition_config={\n \"count\": 1,\n \"capacity\": {\n \"publish_mib_per_sec\": 4,\n \"subscribe_mib_per_sec\": 8,\n },\n },\n retention_config={\n \"per_partition_bytes\": \"32212254720\",\n })\nexample_lite_subscription = gcp.pubsub.LiteSubscription(\"example\",\n name=\"example-subscription\",\n topic=example.name,\n delivery_config={\n \"delivery_requirement\": \"DELIVER_AFTER_STORED\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var example = new Gcp.PubSub.LiteTopic(\"example\", new()\n {\n Name = \"example-topic\",\n Project = project.Apply(getProjectResult =\u003e getProjectResult.Number),\n PartitionConfig = new Gcp.PubSub.Inputs.LiteTopicPartitionConfigArgs\n {\n Count = 1,\n Capacity = new Gcp.PubSub.Inputs.LiteTopicPartitionConfigCapacityArgs\n {\n PublishMibPerSec = 4,\n SubscribeMibPerSec = 8,\n },\n },\n RetentionConfig = new Gcp.PubSub.Inputs.LiteTopicRetentionConfigArgs\n {\n PerPartitionBytes = \"32212254720\",\n },\n });\n\n var exampleLiteSubscription = new Gcp.PubSub.LiteSubscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = example.Name,\n DeliveryConfig = new Gcp.PubSub.Inputs.LiteSubscriptionDeliveryConfigArgs\n {\n DeliveryRequirement = \"DELIVER_AFTER_STORED\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := pubsub.NewLiteTopic(ctx, \"example\", \u0026pubsub.LiteTopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t\tProject: pulumi.String(project.Number),\n\t\t\tPartitionConfig: \u0026pubsub.LiteTopicPartitionConfigArgs{\n\t\t\t\tCount: pulumi.Int(1),\n\t\t\t\tCapacity: \u0026pubsub.LiteTopicPartitionConfigCapacityArgs{\n\t\t\t\t\tPublishMibPerSec: pulumi.Int(4),\n\t\t\t\t\tSubscribeMibPerSec: pulumi.Int(8),\n\t\t\t\t},\n\t\t\t},\n\t\t\tRetentionConfig: \u0026pubsub.LiteTopicRetentionConfigArgs{\n\t\t\t\tPerPartitionBytes: pulumi.String(\"32212254720\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewLiteSubscription(ctx, \"example\", \u0026pubsub.LiteSubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: example.Name,\n\t\t\tDeliveryConfig: \u0026pubsub.LiteSubscriptionDeliveryConfigArgs{\n\t\t\t\tDeliveryRequirement: pulumi.String(\"DELIVER_AFTER_STORED\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.pubsub.LiteTopic;\nimport com.pulumi.gcp.pubsub.LiteTopicArgs;\nimport com.pulumi.gcp.pubsub.inputs.LiteTopicPartitionConfigArgs;\nimport com.pulumi.gcp.pubsub.inputs.LiteTopicPartitionConfigCapacityArgs;\nimport com.pulumi.gcp.pubsub.inputs.LiteTopicRetentionConfigArgs;\nimport com.pulumi.gcp.pubsub.LiteSubscription;\nimport com.pulumi.gcp.pubsub.LiteSubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.LiteSubscriptionDeliveryConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var example = new LiteTopic(\"example\", LiteTopicArgs.builder()\n .name(\"example-topic\")\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.number()))\n .partitionConfig(LiteTopicPartitionConfigArgs.builder()\n .count(1)\n .capacity(LiteTopicPartitionConfigCapacityArgs.builder()\n .publishMibPerSec(4)\n .subscribeMibPerSec(8)\n .build())\n .build())\n .retentionConfig(LiteTopicRetentionConfigArgs.builder()\n .perPartitionBytes(32212254720)\n .build())\n .build());\n\n var exampleLiteSubscription = new LiteSubscription(\"exampleLiteSubscription\", LiteSubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(example.name())\n .deliveryConfig(LiteSubscriptionDeliveryConfigArgs.builder()\n .deliveryRequirement(\"DELIVER_AFTER_STORED\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:LiteTopic\n properties:\n name: example-topic\n project: ${project.number}\n partitionConfig:\n count: 1\n capacity:\n publishMibPerSec: 4\n subscribeMibPerSec: 8\n retentionConfig:\n perPartitionBytes: 3.221225472e+10\n exampleLiteSubscription:\n type: gcp:pubsub:LiteSubscription\n name: example\n properties:\n name: example-subscription\n topic: ${example.name}\n deliveryConfig:\n deliveryRequirement: DELIVER_AFTER_STORED\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSubscription can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{zone}}/subscriptions/{{name}}`\n\n* `{{project}}/{{zone}}/{{name}}`\n\n* `{{zone}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Subscription can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:pubsub/liteSubscription:LiteSubscription default projects/{{project}}/locations/{{zone}}/subscriptions/{{name}}\n```\n\n```sh\n$ pulumi import gcp:pubsub/liteSubscription:LiteSubscription default {{project}}/{{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:pubsub/liteSubscription:LiteSubscription default {{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:pubsub/liteSubscription:LiteSubscription default {{name}}\n```\n\n", + "description": "A named resource representing the stream of messages from a single,\nspecific topic, to be delivered to the subscribing application.\n\n\nTo get more information about Subscription, see:\n\n* [API documentation](https://cloud.google.com/pubsub/lite/docs/reference/rest/v1/admin.projects.locations.subscriptions)\n* How-to Guides\n * [Managing Subscriptions](https://cloud.google.com/pubsub/lite/docs/subscriptions)\n\n## Example Usage\n\n### Pubsub Lite Subscription Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example = new gcp.pubsub.LiteTopic(\"example\", {\n name: \"example-topic\",\n project: project.then(project =\u003e project.number),\n partitionConfig: {\n count: 1,\n capacity: {\n publishMibPerSec: 4,\n subscribeMibPerSec: 8,\n },\n },\n retentionConfig: {\n perPartitionBytes: \"32212254720\",\n },\n});\nconst exampleLiteSubscription = new gcp.pubsub.LiteSubscription(\"example\", {\n name: \"example-subscription\",\n topic: example.name,\n deliveryConfig: {\n deliveryRequirement: \"DELIVER_AFTER_STORED\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample = gcp.pubsub.LiteTopic(\"example\",\n name=\"example-topic\",\n project=project.number,\n partition_config={\n \"count\": 1,\n \"capacity\": {\n \"publish_mib_per_sec\": 4,\n \"subscribe_mib_per_sec\": 8,\n },\n },\n retention_config={\n \"per_partition_bytes\": \"32212254720\",\n })\nexample_lite_subscription = gcp.pubsub.LiteSubscription(\"example\",\n name=\"example-subscription\",\n topic=example.name,\n delivery_config={\n \"delivery_requirement\": \"DELIVER_AFTER_STORED\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var example = new Gcp.PubSub.LiteTopic(\"example\", new()\n {\n Name = \"example-topic\",\n Project = project.Apply(getProjectResult =\u003e getProjectResult.Number),\n PartitionConfig = new Gcp.PubSub.Inputs.LiteTopicPartitionConfigArgs\n {\n Count = 1,\n Capacity = new Gcp.PubSub.Inputs.LiteTopicPartitionConfigCapacityArgs\n {\n PublishMibPerSec = 4,\n SubscribeMibPerSec = 8,\n },\n },\n RetentionConfig = new Gcp.PubSub.Inputs.LiteTopicRetentionConfigArgs\n {\n PerPartitionBytes = \"32212254720\",\n },\n });\n\n var exampleLiteSubscription = new Gcp.PubSub.LiteSubscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = example.Name,\n DeliveryConfig = new Gcp.PubSub.Inputs.LiteSubscriptionDeliveryConfigArgs\n {\n DeliveryRequirement = \"DELIVER_AFTER_STORED\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := pubsub.NewLiteTopic(ctx, \"example\", \u0026pubsub.LiteTopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t\tProject: pulumi.String(project.Number),\n\t\t\tPartitionConfig: \u0026pubsub.LiteTopicPartitionConfigArgs{\n\t\t\t\tCount: pulumi.Int(1),\n\t\t\t\tCapacity: \u0026pubsub.LiteTopicPartitionConfigCapacityArgs{\n\t\t\t\t\tPublishMibPerSec: pulumi.Int(4),\n\t\t\t\t\tSubscribeMibPerSec: pulumi.Int(8),\n\t\t\t\t},\n\t\t\t},\n\t\t\tRetentionConfig: \u0026pubsub.LiteTopicRetentionConfigArgs{\n\t\t\t\tPerPartitionBytes: pulumi.String(\"32212254720\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewLiteSubscription(ctx, \"example\", \u0026pubsub.LiteSubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: example.Name,\n\t\t\tDeliveryConfig: \u0026pubsub.LiteSubscriptionDeliveryConfigArgs{\n\t\t\t\tDeliveryRequirement: pulumi.String(\"DELIVER_AFTER_STORED\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.pubsub.LiteTopic;\nimport com.pulumi.gcp.pubsub.LiteTopicArgs;\nimport com.pulumi.gcp.pubsub.inputs.LiteTopicPartitionConfigArgs;\nimport com.pulumi.gcp.pubsub.inputs.LiteTopicPartitionConfigCapacityArgs;\nimport com.pulumi.gcp.pubsub.inputs.LiteTopicRetentionConfigArgs;\nimport com.pulumi.gcp.pubsub.LiteSubscription;\nimport com.pulumi.gcp.pubsub.LiteSubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.LiteSubscriptionDeliveryConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var example = new LiteTopic(\"example\", LiteTopicArgs.builder()\n .name(\"example-topic\")\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.number()))\n .partitionConfig(LiteTopicPartitionConfigArgs.builder()\n .count(1)\n .capacity(LiteTopicPartitionConfigCapacityArgs.builder()\n .publishMibPerSec(4)\n .subscribeMibPerSec(8)\n .build())\n .build())\n .retentionConfig(LiteTopicRetentionConfigArgs.builder()\n .perPartitionBytes(32212254720)\n .build())\n .build());\n\n var exampleLiteSubscription = new LiteSubscription(\"exampleLiteSubscription\", LiteSubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(example.name())\n .deliveryConfig(LiteSubscriptionDeliveryConfigArgs.builder()\n .deliveryRequirement(\"DELIVER_AFTER_STORED\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:LiteTopic\n properties:\n name: example-topic\n project: ${project.number}\n partitionConfig:\n count: 1\n capacity:\n publishMibPerSec: 4\n subscribeMibPerSec: 8\n retentionConfig:\n perPartitionBytes: 3.221225472e+10\n exampleLiteSubscription:\n type: gcp:pubsub:LiteSubscription\n name: example\n properties:\n name: example-subscription\n topic: ${example.name}\n deliveryConfig:\n deliveryRequirement: DELIVER_AFTER_STORED\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSubscription can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{zone}}/subscriptions/{{name}}`\n\n* `{{project}}/{{zone}}/{{name}}`\n\n* `{{zone}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Subscription can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:pubsub/liteSubscription:LiteSubscription default projects/{{project}}/locations/{{zone}}/subscriptions/{{name}}\n```\n\n```sh\n$ pulumi import gcp:pubsub/liteSubscription:LiteSubscription default {{project}}/{{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:pubsub/liteSubscription:LiteSubscription default {{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:pubsub/liteSubscription:LiteSubscription default {{name}}\n```\n\n", "properties": { "deliveryConfig": { "$ref": "#/types/gcp:pubsub/LiteSubscriptionDeliveryConfig:LiteSubscriptionDeliveryConfig", @@ -236106,7 +236106,7 @@ } }, "gcp:pubsub/liteTopic:LiteTopic": { - "description": "A named resource to which messages are sent by publishers.\n\n\nTo get more information about Topic, see:\n\n* [API documentation](https://cloud.google.com/pubsub/lite/docs/reference/rest/v1/admin.projects.locations.topics)\n* How-to Guides\n * [Managing Topics](https://cloud.google.com/pubsub/lite/docs/topics)\n\n## Example Usage\n\n### Pubsub Lite Topic Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example = new gcp.pubsub.LiteReservation(\"example\", {\n name: \"example-reservation\",\n project: project.then(project =\u003e project.number),\n throughputCapacity: 2,\n});\nconst exampleLiteTopic = new gcp.pubsub.LiteTopic(\"example\", {\n name: \"example-topic\",\n project: project.then(project =\u003e project.number),\n partitionConfig: {\n count: 1,\n capacity: {\n publishMibPerSec: 4,\n subscribeMibPerSec: 8,\n },\n },\n retentionConfig: {\n perPartitionBytes: \"32212254720\",\n },\n reservationConfig: {\n throughputReservation: example.name,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample = gcp.pubsub.LiteReservation(\"example\",\n name=\"example-reservation\",\n project=project.number,\n throughput_capacity=2)\nexample_lite_topic = gcp.pubsub.LiteTopic(\"example\",\n name=\"example-topic\",\n project=project.number,\n partition_config={\n \"count\": 1,\n \"capacity\": {\n \"publish_mib_per_sec\": 4,\n \"subscribe_mib_per_sec\": 8,\n },\n },\n retention_config={\n \"per_partition_bytes\": \"32212254720\",\n },\n reservation_config={\n \"throughput_reservation\": example.name,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var example = new Gcp.PubSub.LiteReservation(\"example\", new()\n {\n Name = \"example-reservation\",\n Project = project.Apply(getProjectResult =\u003e getProjectResult.Number),\n ThroughputCapacity = 2,\n });\n\n var exampleLiteTopic = new Gcp.PubSub.LiteTopic(\"example\", new()\n {\n Name = \"example-topic\",\n Project = project.Apply(getProjectResult =\u003e getProjectResult.Number),\n PartitionConfig = new Gcp.PubSub.Inputs.LiteTopicPartitionConfigArgs\n {\n Count = 1,\n Capacity = new Gcp.PubSub.Inputs.LiteTopicPartitionConfigCapacityArgs\n {\n PublishMibPerSec = 4,\n SubscribeMibPerSec = 8,\n },\n },\n RetentionConfig = new Gcp.PubSub.Inputs.LiteTopicRetentionConfigArgs\n {\n PerPartitionBytes = \"32212254720\",\n },\n ReservationConfig = new Gcp.PubSub.Inputs.LiteTopicReservationConfigArgs\n {\n ThroughputReservation = example.Name,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := pubsub.NewLiteReservation(ctx, \"example\", \u0026pubsub.LiteReservationArgs{\n\t\t\tName: pulumi.String(\"example-reservation\"),\n\t\t\tProject: pulumi.String(project.Number),\n\t\t\tThroughputCapacity: pulumi.Int(2),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewLiteTopic(ctx, \"example\", \u0026pubsub.LiteTopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t\tProject: pulumi.String(project.Number),\n\t\t\tPartitionConfig: \u0026pubsub.LiteTopicPartitionConfigArgs{\n\t\t\t\tCount: pulumi.Int(1),\n\t\t\t\tCapacity: \u0026pubsub.LiteTopicPartitionConfigCapacityArgs{\n\t\t\t\t\tPublishMibPerSec: pulumi.Int(4),\n\t\t\t\t\tSubscribeMibPerSec: pulumi.Int(8),\n\t\t\t\t},\n\t\t\t},\n\t\t\tRetentionConfig: \u0026pubsub.LiteTopicRetentionConfigArgs{\n\t\t\t\tPerPartitionBytes: pulumi.String(\"32212254720\"),\n\t\t\t},\n\t\t\tReservationConfig: \u0026pubsub.LiteTopicReservationConfigArgs{\n\t\t\t\tThroughputReservation: example.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.pubsub.LiteReservation;\nimport com.pulumi.gcp.pubsub.LiteReservationArgs;\nimport com.pulumi.gcp.pubsub.LiteTopic;\nimport com.pulumi.gcp.pubsub.LiteTopicArgs;\nimport com.pulumi.gcp.pubsub.inputs.LiteTopicPartitionConfigArgs;\nimport com.pulumi.gcp.pubsub.inputs.LiteTopicPartitionConfigCapacityArgs;\nimport com.pulumi.gcp.pubsub.inputs.LiteTopicRetentionConfigArgs;\nimport com.pulumi.gcp.pubsub.inputs.LiteTopicReservationConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var example = new LiteReservation(\"example\", LiteReservationArgs.builder()\n .name(\"example-reservation\")\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.number()))\n .throughputCapacity(2)\n .build());\n\n var exampleLiteTopic = new LiteTopic(\"exampleLiteTopic\", LiteTopicArgs.builder()\n .name(\"example-topic\")\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.number()))\n .partitionConfig(LiteTopicPartitionConfigArgs.builder()\n .count(1)\n .capacity(LiteTopicPartitionConfigCapacityArgs.builder()\n .publishMibPerSec(4)\n .subscribeMibPerSec(8)\n .build())\n .build())\n .retentionConfig(LiteTopicRetentionConfigArgs.builder()\n .perPartitionBytes(32212254720)\n .build())\n .reservationConfig(LiteTopicReservationConfigArgs.builder()\n .throughputReservation(example.name())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:LiteReservation\n properties:\n name: example-reservation\n project: ${project.number}\n throughputCapacity: 2\n exampleLiteTopic:\n type: gcp:pubsub:LiteTopic\n name: example\n properties:\n name: example-topic\n project: ${project.number}\n partitionConfig:\n count: 1\n capacity:\n publishMibPerSec: 4\n subscribeMibPerSec: 8\n retentionConfig:\n perPartitionBytes: 3.221225472e+10\n reservationConfig:\n throughputReservation: ${example.name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTopic can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{zone}}/topics/{{name}}`\n\n* `{{project}}/{{zone}}/{{name}}`\n\n* `{{zone}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Topic can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:pubsub/liteTopic:LiteTopic default projects/{{project}}/locations/{{zone}}/topics/{{name}}\n```\n\n```sh\n$ pulumi import gcp:pubsub/liteTopic:LiteTopic default {{project}}/{{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:pubsub/liteTopic:LiteTopic default {{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:pubsub/liteTopic:LiteTopic default {{name}}\n```\n\n", + "description": "A named resource to which messages are sent by publishers.\n\n\nTo get more information about Topic, see:\n\n* [API documentation](https://cloud.google.com/pubsub/lite/docs/reference/rest/v1/admin.projects.locations.topics)\n* How-to Guides\n * [Managing Topics](https://cloud.google.com/pubsub/lite/docs/topics)\n\n## Example Usage\n\n### Pubsub Lite Topic Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example = new gcp.pubsub.LiteReservation(\"example\", {\n name: \"example-reservation\",\n project: project.then(project =\u003e project.number),\n throughputCapacity: 2,\n});\nconst exampleLiteTopic = new gcp.pubsub.LiteTopic(\"example\", {\n name: \"example-topic\",\n project: project.then(project =\u003e project.number),\n partitionConfig: {\n count: 1,\n capacity: {\n publishMibPerSec: 4,\n subscribeMibPerSec: 8,\n },\n },\n retentionConfig: {\n perPartitionBytes: \"32212254720\",\n },\n reservationConfig: {\n throughputReservation: example.name,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample = gcp.pubsub.LiteReservation(\"example\",\n name=\"example-reservation\",\n project=project.number,\n throughput_capacity=2)\nexample_lite_topic = gcp.pubsub.LiteTopic(\"example\",\n name=\"example-topic\",\n project=project.number,\n partition_config={\n \"count\": 1,\n \"capacity\": {\n \"publish_mib_per_sec\": 4,\n \"subscribe_mib_per_sec\": 8,\n },\n },\n retention_config={\n \"per_partition_bytes\": \"32212254720\",\n },\n reservation_config={\n \"throughput_reservation\": example.name,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var example = new Gcp.PubSub.LiteReservation(\"example\", new()\n {\n Name = \"example-reservation\",\n Project = project.Apply(getProjectResult =\u003e getProjectResult.Number),\n ThroughputCapacity = 2,\n });\n\n var exampleLiteTopic = new Gcp.PubSub.LiteTopic(\"example\", new()\n {\n Name = \"example-topic\",\n Project = project.Apply(getProjectResult =\u003e getProjectResult.Number),\n PartitionConfig = new Gcp.PubSub.Inputs.LiteTopicPartitionConfigArgs\n {\n Count = 1,\n Capacity = new Gcp.PubSub.Inputs.LiteTopicPartitionConfigCapacityArgs\n {\n PublishMibPerSec = 4,\n SubscribeMibPerSec = 8,\n },\n },\n RetentionConfig = new Gcp.PubSub.Inputs.LiteTopicRetentionConfigArgs\n {\n PerPartitionBytes = \"32212254720\",\n },\n ReservationConfig = new Gcp.PubSub.Inputs.LiteTopicReservationConfigArgs\n {\n ThroughputReservation = example.Name,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := pubsub.NewLiteReservation(ctx, \"example\", \u0026pubsub.LiteReservationArgs{\n\t\t\tName: pulumi.String(\"example-reservation\"),\n\t\t\tProject: pulumi.String(project.Number),\n\t\t\tThroughputCapacity: pulumi.Int(2),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewLiteTopic(ctx, \"example\", \u0026pubsub.LiteTopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t\tProject: pulumi.String(project.Number),\n\t\t\tPartitionConfig: \u0026pubsub.LiteTopicPartitionConfigArgs{\n\t\t\t\tCount: pulumi.Int(1),\n\t\t\t\tCapacity: \u0026pubsub.LiteTopicPartitionConfigCapacityArgs{\n\t\t\t\t\tPublishMibPerSec: pulumi.Int(4),\n\t\t\t\t\tSubscribeMibPerSec: pulumi.Int(8),\n\t\t\t\t},\n\t\t\t},\n\t\t\tRetentionConfig: \u0026pubsub.LiteTopicRetentionConfigArgs{\n\t\t\t\tPerPartitionBytes: pulumi.String(\"32212254720\"),\n\t\t\t},\n\t\t\tReservationConfig: \u0026pubsub.LiteTopicReservationConfigArgs{\n\t\t\t\tThroughputReservation: example.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.pubsub.LiteReservation;\nimport com.pulumi.gcp.pubsub.LiteReservationArgs;\nimport com.pulumi.gcp.pubsub.LiteTopic;\nimport com.pulumi.gcp.pubsub.LiteTopicArgs;\nimport com.pulumi.gcp.pubsub.inputs.LiteTopicPartitionConfigArgs;\nimport com.pulumi.gcp.pubsub.inputs.LiteTopicPartitionConfigCapacityArgs;\nimport com.pulumi.gcp.pubsub.inputs.LiteTopicRetentionConfigArgs;\nimport com.pulumi.gcp.pubsub.inputs.LiteTopicReservationConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var example = new LiteReservation(\"example\", LiteReservationArgs.builder()\n .name(\"example-reservation\")\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.number()))\n .throughputCapacity(2)\n .build());\n\n var exampleLiteTopic = new LiteTopic(\"exampleLiteTopic\", LiteTopicArgs.builder()\n .name(\"example-topic\")\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.number()))\n .partitionConfig(LiteTopicPartitionConfigArgs.builder()\n .count(1)\n .capacity(LiteTopicPartitionConfigCapacityArgs.builder()\n .publishMibPerSec(4)\n .subscribeMibPerSec(8)\n .build())\n .build())\n .retentionConfig(LiteTopicRetentionConfigArgs.builder()\n .perPartitionBytes(32212254720)\n .build())\n .reservationConfig(LiteTopicReservationConfigArgs.builder()\n .throughputReservation(example.name())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:LiteReservation\n properties:\n name: example-reservation\n project: ${project.number}\n throughputCapacity: 2\n exampleLiteTopic:\n type: gcp:pubsub:LiteTopic\n name: example\n properties:\n name: example-topic\n project: ${project.number}\n partitionConfig:\n count: 1\n capacity:\n publishMibPerSec: 4\n subscribeMibPerSec: 8\n retentionConfig:\n perPartitionBytes: 3.221225472e+10\n reservationConfig:\n throughputReservation: ${example.name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTopic can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{zone}}/topics/{{name}}`\n\n* `{{project}}/{{zone}}/{{name}}`\n\n* `{{zone}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Topic can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:pubsub/liteTopic:LiteTopic default projects/{{project}}/locations/{{zone}}/topics/{{name}}\n```\n\n```sh\n$ pulumi import gcp:pubsub/liteTopic:LiteTopic default {{project}}/{{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:pubsub/liteTopic:LiteTopic default {{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:pubsub/liteTopic:LiteTopic default {{name}}\n```\n\n", "properties": { "name": { "type": "string", @@ -236558,7 +236558,7 @@ } }, "gcp:pubsub/subscription:Subscription": { - "description": "A named resource representing the stream of messages from a single,\nspecific topic, to be delivered to the subscribing application.\n\n\nTo get more information about Subscription, see:\n\n* [API documentation](https://cloud.google.com/pubsub/docs/reference/rest/v1/projects.subscriptions)\n* How-to Guides\n * [Managing Subscriptions](https://cloud.google.com/pubsub/docs/admin#managing_subscriptions)\n\n\u003e **Note:** You can retrieve the email of the Google Managed Pub/Sub Service Account used for forwarding\nby using the `gcp.projects.ServiceIdentity` resource.\n\n## Example Usage\n\n### Pubsub Subscription Push\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: example.id,\n ackDeadlineSeconds: 20,\n labels: {\n foo: \"bar\",\n },\n pushConfig: {\n pushEndpoint: \"https://example.com/push\",\n attributes: {\n \"x-goog-version\": \"v1\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example.id,\n ack_deadline_seconds=20,\n labels={\n \"foo\": \"bar\",\n },\n push_config={\n \"push_endpoint\": \"https://example.com/push\",\n \"attributes\": {\n \"x_goog_version\": \"v1\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = example.Id,\n AckDeadlineSeconds = 20,\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n PushConfig = new Gcp.PubSub.Inputs.SubscriptionPushConfigArgs\n {\n PushEndpoint = \"https://example.com/push\",\n Attributes = \n {\n { \"x-goog-version\", \"v1\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: example.ID(),\n\t\t\tAckDeadlineSeconds: pulumi.Int(20),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tPushConfig: \u0026pubsub.SubscriptionPushConfigArgs{\n\t\t\t\tPushEndpoint: pulumi.String(\"https://example.com/push\"),\n\t\t\t\tAttributes: pulumi.StringMap{\n\t\t\t\t\t\"x-goog-version\": pulumi.String(\"v1\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionPushConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(example.id())\n .ackDeadlineSeconds(20)\n .labels(Map.of(\"foo\", \"bar\"))\n .pushConfig(SubscriptionPushConfigArgs.builder()\n .pushEndpoint(\"https://example.com/push\")\n .attributes(Map.of(\"x-goog-version\", \"v1\"))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${example.id}\n ackDeadlineSeconds: 20\n labels:\n foo: bar\n pushConfig:\n pushEndpoint: https://example.com/push\n attributes:\n x-goog-version: v1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Pull\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: example.id,\n labels: {\n foo: \"bar\",\n },\n messageRetentionDuration: \"1200s\",\n retainAckedMessages: true,\n ackDeadlineSeconds: 20,\n expirationPolicy: {\n ttl: \"300000.5s\",\n },\n retryPolicy: {\n minimumBackoff: \"10s\",\n },\n enableMessageOrdering: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example.id,\n labels={\n \"foo\": \"bar\",\n },\n message_retention_duration=\"1200s\",\n retain_acked_messages=True,\n ack_deadline_seconds=20,\n expiration_policy={\n \"ttl\": \"300000.5s\",\n },\n retry_policy={\n \"minimum_backoff\": \"10s\",\n },\n enable_message_ordering=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = example.Id,\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n MessageRetentionDuration = \"1200s\",\n RetainAckedMessages = true,\n AckDeadlineSeconds = 20,\n ExpirationPolicy = new Gcp.PubSub.Inputs.SubscriptionExpirationPolicyArgs\n {\n Ttl = \"300000.5s\",\n },\n RetryPolicy = new Gcp.PubSub.Inputs.SubscriptionRetryPolicyArgs\n {\n MinimumBackoff = \"10s\",\n },\n EnableMessageOrdering = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: example.ID(),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tMessageRetentionDuration: pulumi.String(\"1200s\"),\n\t\t\tRetainAckedMessages: pulumi.Bool(true),\n\t\t\tAckDeadlineSeconds: pulumi.Int(20),\n\t\t\tExpirationPolicy: \u0026pubsub.SubscriptionExpirationPolicyArgs{\n\t\t\t\tTtl: pulumi.String(\"300000.5s\"),\n\t\t\t},\n\t\t\tRetryPolicy: \u0026pubsub.SubscriptionRetryPolicyArgs{\n\t\t\t\tMinimumBackoff: pulumi.String(\"10s\"),\n\t\t\t},\n\t\t\tEnableMessageOrdering: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionExpirationPolicyArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionRetryPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(example.id())\n .labels(Map.of(\"foo\", \"bar\"))\n .messageRetentionDuration(\"1200s\")\n .retainAckedMessages(true)\n .ackDeadlineSeconds(20)\n .expirationPolicy(SubscriptionExpirationPolicyArgs.builder()\n .ttl(\"300000.5s\")\n .build())\n .retryPolicy(SubscriptionRetryPolicyArgs.builder()\n .minimumBackoff(\"10s\")\n .build())\n .enableMessageOrdering(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${example.id}\n labels:\n foo: bar\n messageRetentionDuration: 1200s\n retainAckedMessages: true\n ackDeadlineSeconds: 20\n expirationPolicy:\n ttl: 300000.5s\n retryPolicy:\n minimumBackoff: 10s\n enableMessageOrdering: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Pull Filter\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: example.id,\n labels: {\n foo: \"bar\",\n },\n filter: ` attributes.foo = \"foo\"\n AND attributes.bar = \"bar\"\n`,\n ackDeadlineSeconds: 20,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example.id,\n labels={\n \"foo\": \"bar\",\n },\n filter=\"\"\" attributes.foo = \"foo\"\n AND attributes.bar = \"bar\"\n\"\"\",\n ack_deadline_seconds=20)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = example.Id,\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Filter = @\" attributes.foo = \"\"foo\"\"\n AND attributes.bar = \"\"bar\"\"\n\",\n AckDeadlineSeconds = 20,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: example.ID(),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tFilter: pulumi.String(\" attributes.foo = \\\"foo\\\"\\n AND attributes.bar = \\\"bar\\\"\\n\"),\n\t\t\tAckDeadlineSeconds: pulumi.Int(20),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(example.id())\n .labels(Map.of(\"foo\", \"bar\"))\n .filter(\"\"\"\n attributes.foo = \"foo\"\n AND attributes.bar = \"bar\"\n \"\"\")\n .ackDeadlineSeconds(20)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${example.id}\n labels:\n foo: bar\n filter: |2\n attributes.foo = \"foo\"\n AND attributes.bar = \"bar\"\n ackDeadlineSeconds: 20\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Dead Letter\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst exampleDeadLetter = new gcp.pubsub.Topic(\"example_dead_letter\", {name: \"example-topic-dead-letter\"});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: example.id,\n deadLetterPolicy: {\n deadLetterTopic: exampleDeadLetter.id,\n maxDeliveryAttempts: 10,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nexample_dead_letter = gcp.pubsub.Topic(\"example_dead_letter\", name=\"example-topic-dead-letter\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example.id,\n dead_letter_policy={\n \"dead_letter_topic\": example_dead_letter.id,\n \"max_delivery_attempts\": 10,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var exampleDeadLetter = new Gcp.PubSub.Topic(\"example_dead_letter\", new()\n {\n Name = \"example-topic-dead-letter\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = example.Id,\n DeadLetterPolicy = new Gcp.PubSub.Inputs.SubscriptionDeadLetterPolicyArgs\n {\n DeadLetterTopic = exampleDeadLetter.Id,\n MaxDeliveryAttempts = 10,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleDeadLetter, err := pubsub.NewTopic(ctx, \"example_dead_letter\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic-dead-letter\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: example.ID(),\n\t\t\tDeadLetterPolicy: \u0026pubsub.SubscriptionDeadLetterPolicyArgs{\n\t\t\t\tDeadLetterTopic: exampleDeadLetter.ID(),\n\t\t\t\tMaxDeliveryAttempts: pulumi.Int(10),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionDeadLetterPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n var exampleDeadLetter = new Topic(\"exampleDeadLetter\", TopicArgs.builder()\n .name(\"example-topic-dead-letter\")\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(example.id())\n .deadLetterPolicy(SubscriptionDeadLetterPolicyArgs.builder()\n .deadLetterTopic(exampleDeadLetter.id())\n .maxDeliveryAttempts(10)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n exampleDeadLetter:\n type: gcp:pubsub:Topic\n name: example_dead_letter\n properties:\n name: example-topic-dead-letter\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${example.id}\n deadLetterPolicy:\n deadLetterTopic: ${exampleDeadLetter.id}\n maxDeliveryAttempts: 10\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Push Bq\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst project = gcp.organizations.getProject({});\nconst viewer = new gcp.projects.IAMMember(\"viewer\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/bigquery.metadataViewer\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com`),\n});\nconst editor = new gcp.projects.IAMMember(\"editor\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/bigquery.dataEditor\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com`),\n});\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"example_dataset\"});\nconst testTable = new gcp.bigquery.Table(\"test\", {\n deletionProtection: false,\n tableId: \"example_table\",\n datasetId: test.datasetId,\n schema: `[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n`,\n});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: example.id,\n bigqueryConfig: {\n table: pulumi.interpolate`${testTable.project}.${testTable.datasetId}.${testTable.tableId}`,\n },\n}, {\n dependsOn: [\n viewer,\n editor,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nproject = gcp.organizations.get_project()\nviewer = gcp.projects.IAMMember(\"viewer\",\n project=project.project_id,\n role=\"roles/bigquery.metadataViewer\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\")\neditor = gcp.projects.IAMMember(\"editor\",\n project=project.project_id,\n role=\"roles/bigquery.dataEditor\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\")\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"example_dataset\")\ntest_table = gcp.bigquery.Table(\"test\",\n deletion_protection=False,\n table_id=\"example_table\",\n dataset_id=test.dataset_id,\n schema=\"\"\"[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n\"\"\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example.id,\n bigquery_config={\n \"table\": pulumi.Output.all(\n project=test_table.project,\n dataset_id=test_table.dataset_id,\n table_id=test_table.table_id\n).apply(lambda resolved_outputs: f\"{resolved_outputs['project']}.{resolved_outputs['dataset_id']}.{resolved_outputs['table_id']}\")\n,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n viewer,\n editor,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var viewer = new Gcp.Projects.IAMMember(\"viewer\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/bigquery.metadataViewer\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-pubsub.iam.gserviceaccount.com\",\n });\n\n var editor = new Gcp.Projects.IAMMember(\"editor\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/bigquery.dataEditor\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-pubsub.iam.gserviceaccount.com\",\n });\n\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"example_dataset\",\n });\n\n var testTable = new Gcp.BigQuery.Table(\"test\", new()\n {\n DeletionProtection = false,\n TableId = \"example_table\",\n DatasetId = test.DatasetId,\n Schema = @\"[\n {\n \"\"name\"\": \"\"data\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"description\"\": \"\"The data\"\"\n }\n]\n\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = example.Id,\n BigqueryConfig = new Gcp.PubSub.Inputs.SubscriptionBigqueryConfigArgs\n {\n Table = Output.Tuple(testTable.Project, testTable.DatasetId, testTable.TableId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n var tableId = values.Item3;\n return $\"{project}.{datasetId}.{tableId}\";\n }),\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n viewer,\n editor,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tviewer, err := projects.NewIAMMember(ctx, \"viewer\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/bigquery.metadataViewer\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-pubsub.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\teditor, err := projects.NewIAMMember(ctx, \"editor\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/bigquery.dataEditor\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-pubsub.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestTable, err := bigquery.NewTable(ctx, \"test\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTableId: pulumi.String(\"example_table\"),\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tSchema: pulumi.String(`[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: example.ID(),\n\t\t\tBigqueryConfig: \u0026pubsub.SubscriptionBigqueryConfigArgs{\n\t\t\t\tTable: pulumi.All(testTable.Project, testTable.DatasetId, testTable.TableId).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tproject := _args[0].(string)\n\t\t\t\t\tdatasetId := _args[1].(string)\n\t\t\t\t\ttableId := _args[2].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"%v.%v.%v\", project, datasetId, tableId), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tviewer,\n\t\t\teditor,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionBigqueryConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var viewer = new IAMMember(\"viewer\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/bigquery.metadataViewer\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-pubsub.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var editor = new IAMMember(\"editor\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/bigquery.dataEditor\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-pubsub.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"example_dataset\")\n .build());\n\n var testTable = new Table(\"testTable\", TableArgs.builder()\n .deletionProtection(false)\n .tableId(\"example_table\")\n .datasetId(test.datasetId())\n .schema(\"\"\"\n[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n \"\"\")\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(example.id())\n .bigqueryConfig(SubscriptionBigqueryConfigArgs.builder()\n .table(Output.tuple(testTable.project(), testTable.datasetId(), testTable.tableId()).applyValue(values -\u003e {\n var project = values.t1;\n var datasetId = values.t2;\n var tableId = values.t3;\n return String.format(\"%s.%s.%s\", project.applyValue(getProjectResult -\u003e getProjectResult),datasetId,tableId);\n }))\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n viewer,\n editor)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${example.id}\n bigqueryConfig:\n table: ${testTable.project}.${testTable.datasetId}.${testTable.tableId}\n options:\n dependson:\n - ${viewer}\n - ${editor}\n viewer:\n type: gcp:projects:IAMMember\n properties:\n project: ${project.projectId}\n role: roles/bigquery.metadataViewer\n member: serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\n editor:\n type: gcp:projects:IAMMember\n properties:\n project: ${project.projectId}\n role: roles/bigquery.dataEditor\n member: serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n testTable:\n type: gcp:bigquery:Table\n name: test\n properties:\n deletionProtection: false\n tableId: example_table\n datasetId: ${test.datasetId}\n schema: |\n [\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n ]\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Push Bq Table Schema\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst project = gcp.organizations.getProject({});\nconst viewer = new gcp.projects.IAMMember(\"viewer\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/bigquery.metadataViewer\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com`),\n});\nconst editor = new gcp.projects.IAMMember(\"editor\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/bigquery.dataEditor\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com`),\n});\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"example_dataset\"});\nconst testTable = new gcp.bigquery.Table(\"test\", {\n deletionProtection: false,\n tableId: \"example_table\",\n datasetId: test.datasetId,\n schema: `[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n`,\n});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: example.id,\n bigqueryConfig: {\n table: pulumi.interpolate`${testTable.project}.${testTable.datasetId}.${testTable.tableId}`,\n useTableSchema: true,\n },\n}, {\n dependsOn: [\n viewer,\n editor,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nproject = gcp.organizations.get_project()\nviewer = gcp.projects.IAMMember(\"viewer\",\n project=project.project_id,\n role=\"roles/bigquery.metadataViewer\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\")\neditor = gcp.projects.IAMMember(\"editor\",\n project=project.project_id,\n role=\"roles/bigquery.dataEditor\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\")\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"example_dataset\")\ntest_table = gcp.bigquery.Table(\"test\",\n deletion_protection=False,\n table_id=\"example_table\",\n dataset_id=test.dataset_id,\n schema=\"\"\"[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n\"\"\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example.id,\n bigquery_config={\n \"table\": pulumi.Output.all(\n project=test_table.project,\n dataset_id=test_table.dataset_id,\n table_id=test_table.table_id\n).apply(lambda resolved_outputs: f\"{resolved_outputs['project']}.{resolved_outputs['dataset_id']}.{resolved_outputs['table_id']}\")\n,\n \"use_table_schema\": True,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n viewer,\n editor,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var viewer = new Gcp.Projects.IAMMember(\"viewer\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/bigquery.metadataViewer\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-pubsub.iam.gserviceaccount.com\",\n });\n\n var editor = new Gcp.Projects.IAMMember(\"editor\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/bigquery.dataEditor\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-pubsub.iam.gserviceaccount.com\",\n });\n\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"example_dataset\",\n });\n\n var testTable = new Gcp.BigQuery.Table(\"test\", new()\n {\n DeletionProtection = false,\n TableId = \"example_table\",\n DatasetId = test.DatasetId,\n Schema = @\"[\n {\n \"\"name\"\": \"\"data\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"description\"\": \"\"The data\"\"\n }\n]\n\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = example.Id,\n BigqueryConfig = new Gcp.PubSub.Inputs.SubscriptionBigqueryConfigArgs\n {\n Table = Output.Tuple(testTable.Project, testTable.DatasetId, testTable.TableId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n var tableId = values.Item3;\n return $\"{project}.{datasetId}.{tableId}\";\n }),\n UseTableSchema = true,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n viewer,\n editor,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tviewer, err := projects.NewIAMMember(ctx, \"viewer\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/bigquery.metadataViewer\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-pubsub.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\teditor, err := projects.NewIAMMember(ctx, \"editor\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/bigquery.dataEditor\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-pubsub.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestTable, err := bigquery.NewTable(ctx, \"test\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTableId: pulumi.String(\"example_table\"),\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tSchema: pulumi.String(`[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: example.ID(),\n\t\t\tBigqueryConfig: \u0026pubsub.SubscriptionBigqueryConfigArgs{\n\t\t\t\tTable: pulumi.All(testTable.Project, testTable.DatasetId, testTable.TableId).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tproject := _args[0].(string)\n\t\t\t\t\tdatasetId := _args[1].(string)\n\t\t\t\t\ttableId := _args[2].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"%v.%v.%v\", project, datasetId, tableId), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tUseTableSchema: pulumi.Bool(true),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tviewer,\n\t\t\teditor,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionBigqueryConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var viewer = new IAMMember(\"viewer\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/bigquery.metadataViewer\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-pubsub.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var editor = new IAMMember(\"editor\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/bigquery.dataEditor\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-pubsub.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"example_dataset\")\n .build());\n\n var testTable = new Table(\"testTable\", TableArgs.builder()\n .deletionProtection(false)\n .tableId(\"example_table\")\n .datasetId(test.datasetId())\n .schema(\"\"\"\n[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n \"\"\")\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(example.id())\n .bigqueryConfig(SubscriptionBigqueryConfigArgs.builder()\n .table(Output.tuple(testTable.project(), testTable.datasetId(), testTable.tableId()).applyValue(values -\u003e {\n var project = values.t1;\n var datasetId = values.t2;\n var tableId = values.t3;\n return String.format(\"%s.%s.%s\", project.applyValue(getProjectResult -\u003e getProjectResult),datasetId,tableId);\n }))\n .useTableSchema(true)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n viewer,\n editor)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${example.id}\n bigqueryConfig:\n table: ${testTable.project}.${testTable.datasetId}.${testTable.tableId}\n useTableSchema: true\n options:\n dependson:\n - ${viewer}\n - ${editor}\n viewer:\n type: gcp:projects:IAMMember\n properties:\n project: ${project.projectId}\n role: roles/bigquery.metadataViewer\n member: serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\n editor:\n type: gcp:projects:IAMMember\n properties:\n project: ${project.projectId}\n role: roles/bigquery.dataEditor\n member: serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n testTable:\n type: gcp:bigquery:Table\n name: test\n properties:\n deletionProtection: false\n tableId: example_table\n datasetId: ${test.datasetId}\n schema: |\n [\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n ]\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Push Bq Service Account\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst bqWriteServiceAccount = new gcp.serviceaccount.Account(\"bq_write_service_account\", {\n accountId: \"example-bqw\",\n displayName: \"BQ Write Service Account\",\n});\nconst project = gcp.organizations.getProject({});\nconst viewer = new gcp.projects.IAMMember(\"viewer\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/bigquery.metadataViewer\",\n member: pulumi.interpolate`serviceAccount:${bqWriteServiceAccount.email}`,\n});\nconst editor = new gcp.projects.IAMMember(\"editor\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/bigquery.dataEditor\",\n member: pulumi.interpolate`serviceAccount:${bqWriteServiceAccount.email}`,\n});\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"example_dataset\"});\nconst testTable = new gcp.bigquery.Table(\"test\", {\n deletionProtection: false,\n tableId: \"example_table\",\n datasetId: test.datasetId,\n schema: `[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n`,\n});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: example.id,\n bigqueryConfig: {\n table: pulumi.interpolate`${testTable.project}.${testTable.datasetId}.${testTable.tableId}`,\n serviceAccountEmail: bqWriteServiceAccount.email,\n },\n}, {\n dependsOn: [\n bqWriteServiceAccount,\n viewer,\n editor,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nbq_write_service_account = gcp.serviceaccount.Account(\"bq_write_service_account\",\n account_id=\"example-bqw\",\n display_name=\"BQ Write Service Account\")\nproject = gcp.organizations.get_project()\nviewer = gcp.projects.IAMMember(\"viewer\",\n project=project.project_id,\n role=\"roles/bigquery.metadataViewer\",\n member=bq_write_service_account.email.apply(lambda email: f\"serviceAccount:{email}\"))\neditor = gcp.projects.IAMMember(\"editor\",\n project=project.project_id,\n role=\"roles/bigquery.dataEditor\",\n member=bq_write_service_account.email.apply(lambda email: f\"serviceAccount:{email}\"))\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"example_dataset\")\ntest_table = gcp.bigquery.Table(\"test\",\n deletion_protection=False,\n table_id=\"example_table\",\n dataset_id=test.dataset_id,\n schema=\"\"\"[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n\"\"\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example.id,\n bigquery_config={\n \"table\": pulumi.Output.all(\n project=test_table.project,\n dataset_id=test_table.dataset_id,\n table_id=test_table.table_id\n).apply(lambda resolved_outputs: f\"{resolved_outputs['project']}.{resolved_outputs['dataset_id']}.{resolved_outputs['table_id']}\")\n,\n \"service_account_email\": bq_write_service_account.email,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n bq_write_service_account,\n viewer,\n editor,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var bqWriteServiceAccount = new Gcp.ServiceAccount.Account(\"bq_write_service_account\", new()\n {\n AccountId = \"example-bqw\",\n DisplayName = \"BQ Write Service Account\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var viewer = new Gcp.Projects.IAMMember(\"viewer\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/bigquery.metadataViewer\",\n Member = bqWriteServiceAccount.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var editor = new Gcp.Projects.IAMMember(\"editor\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/bigquery.dataEditor\",\n Member = bqWriteServiceAccount.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"example_dataset\",\n });\n\n var testTable = new Gcp.BigQuery.Table(\"test\", new()\n {\n DeletionProtection = false,\n TableId = \"example_table\",\n DatasetId = test.DatasetId,\n Schema = @\"[\n {\n \"\"name\"\": \"\"data\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"description\"\": \"\"The data\"\"\n }\n]\n\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = example.Id,\n BigqueryConfig = new Gcp.PubSub.Inputs.SubscriptionBigqueryConfigArgs\n {\n Table = Output.Tuple(testTable.Project, testTable.DatasetId, testTable.TableId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n var tableId = values.Item3;\n return $\"{project}.{datasetId}.{tableId}\";\n }),\n ServiceAccountEmail = bqWriteServiceAccount.Email,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n bqWriteServiceAccount,\n viewer,\n editor,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbqWriteServiceAccount, err := serviceaccount.NewAccount(ctx, \"bq_write_service_account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"example-bqw\"),\n\t\t\tDisplayName: pulumi.String(\"BQ Write Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tviewer, err := projects.NewIAMMember(ctx, \"viewer\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/bigquery.metadataViewer\"),\n\t\t\tMember: bqWriteServiceAccount.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\teditor, err := projects.NewIAMMember(ctx, \"editor\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/bigquery.dataEditor\"),\n\t\t\tMember: bqWriteServiceAccount.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestTable, err := bigquery.NewTable(ctx, \"test\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTableId: pulumi.String(\"example_table\"),\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tSchema: pulumi.String(`[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: example.ID(),\n\t\t\tBigqueryConfig: \u0026pubsub.SubscriptionBigqueryConfigArgs{\n\t\t\t\tTable: pulumi.All(testTable.Project, testTable.DatasetId, testTable.TableId).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tproject := _args[0].(string)\n\t\t\t\t\tdatasetId := _args[1].(string)\n\t\t\t\t\ttableId := _args[2].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"%v.%v.%v\", project, datasetId, tableId), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tServiceAccountEmail: bqWriteServiceAccount.Email,\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tbqWriteServiceAccount,\n\t\t\tviewer,\n\t\t\teditor,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionBigqueryConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n var bqWriteServiceAccount = new Account(\"bqWriteServiceAccount\", AccountArgs.builder()\n .accountId(\"example-bqw\")\n .displayName(\"BQ Write Service Account\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var viewer = new IAMMember(\"viewer\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/bigquery.metadataViewer\")\n .member(bqWriteServiceAccount.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var editor = new IAMMember(\"editor\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/bigquery.dataEditor\")\n .member(bqWriteServiceAccount.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"example_dataset\")\n .build());\n\n var testTable = new Table(\"testTable\", TableArgs.builder()\n .deletionProtection(false)\n .tableId(\"example_table\")\n .datasetId(test.datasetId())\n .schema(\"\"\"\n[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n \"\"\")\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(example.id())\n .bigqueryConfig(SubscriptionBigqueryConfigArgs.builder()\n .table(Output.tuple(testTable.project(), testTable.datasetId(), testTable.tableId()).applyValue(values -\u003e {\n var project = values.t1;\n var datasetId = values.t2;\n var tableId = values.t3;\n return String.format(\"%s.%s.%s\", project.applyValue(getProjectResult -\u003e getProjectResult),datasetId,tableId);\n }))\n .serviceAccountEmail(bqWriteServiceAccount.email())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n bqWriteServiceAccount,\n viewer,\n editor)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${example.id}\n bigqueryConfig:\n table: ${testTable.project}.${testTable.datasetId}.${testTable.tableId}\n serviceAccountEmail: ${bqWriteServiceAccount.email}\n options:\n dependson:\n - ${bqWriteServiceAccount}\n - ${viewer}\n - ${editor}\n bqWriteServiceAccount:\n type: gcp:serviceaccount:Account\n name: bq_write_service_account\n properties:\n accountId: example-bqw\n displayName: BQ Write Service Account\n viewer:\n type: gcp:projects:IAMMember\n properties:\n project: ${project.projectId}\n role: roles/bigquery.metadataViewer\n member: serviceAccount:${bqWriteServiceAccount.email}\n editor:\n type: gcp:projects:IAMMember\n properties:\n project: ${project.projectId}\n role: roles/bigquery.dataEditor\n member: serviceAccount:${bqWriteServiceAccount.email}\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n testTable:\n type: gcp:bigquery:Table\n name: test\n properties:\n deletionProtection: false\n tableId: example_table\n datasetId: ${test.datasetId}\n schema: |\n [\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n ]\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Push Cloudstorage\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.storage.Bucket(\"example\", {\n name: \"example-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst exampleTopic = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst project = gcp.organizations.getProject({});\nconst admin = new gcp.storage.BucketIAMMember(\"admin\", {\n bucket: example.name,\n role: \"roles/storage.admin\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com`),\n});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: exampleTopic.id,\n cloudStorageConfig: {\n bucket: example.name,\n filenamePrefix: \"pre-\",\n filenameSuffix: \"-_91980\",\n filenameDatetimeFormat: \"YYYY-MM-DD/hh_mm_ssZ\",\n maxBytes: 1000,\n maxDuration: \"300s\",\n maxMessages: 1000,\n },\n}, {\n dependsOn: [\n example,\n admin,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.storage.Bucket(\"example\",\n name=\"example-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nexample_topic = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nproject = gcp.organizations.get_project()\nadmin = gcp.storage.BucketIAMMember(\"admin\",\n bucket=example.name,\n role=\"roles/storage.admin\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example_topic.id,\n cloud_storage_config={\n \"bucket\": example.name,\n \"filename_prefix\": \"pre-\",\n \"filename_suffix\": \"-_91980\",\n \"filename_datetime_format\": \"YYYY-MM-DD/hh_mm_ssZ\",\n \"max_bytes\": 1000,\n \"max_duration\": \"300s\",\n \"max_messages\": 1000,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n example,\n admin,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.Storage.Bucket(\"example\", new()\n {\n Name = \"example-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var exampleTopic = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var admin = new Gcp.Storage.BucketIAMMember(\"admin\", new()\n {\n Bucket = example.Name,\n Role = \"roles/storage.admin\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-pubsub.iam.gserviceaccount.com\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = exampleTopic.Id,\n CloudStorageConfig = new Gcp.PubSub.Inputs.SubscriptionCloudStorageConfigArgs\n {\n Bucket = example.Name,\n FilenamePrefix = \"pre-\",\n FilenameSuffix = \"-_91980\",\n FilenameDatetimeFormat = \"YYYY-MM-DD/hh_mm_ssZ\",\n MaxBytes = 1000,\n MaxDuration = \"300s\",\n MaxMessages = 1000,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n example,\n admin,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := storage.NewBucket(ctx, \"example\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"example-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleTopic, err := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tadmin, err := storage.NewBucketIAMMember(ctx, \"admin\", \u0026storage.BucketIAMMemberArgs{\n\t\t\tBucket: example.Name,\n\t\t\tRole: pulumi.String(\"roles/storage.admin\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-pubsub.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: exampleTopic.ID(),\n\t\t\tCloudStorageConfig: \u0026pubsub.SubscriptionCloudStorageConfigArgs{\n\t\t\t\tBucket: example.Name,\n\t\t\t\tFilenamePrefix: pulumi.String(\"pre-\"),\n\t\t\t\tFilenameSuffix: pulumi.String(\"-_91980\"),\n\t\t\t\tFilenameDatetimeFormat: pulumi.String(\"YYYY-MM-DD/hh_mm_ssZ\"),\n\t\t\t\tMaxBytes: pulumi.Int(1000),\n\t\t\t\tMaxDuration: pulumi.String(\"300s\"),\n\t\t\t\tMaxMessages: pulumi.Int(1000),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texample,\n\t\t\tadmin,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.storage.BucketIAMMember;\nimport com.pulumi.gcp.storage.BucketIAMMemberArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionCloudStorageConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Bucket(\"example\", BucketArgs.builder()\n .name(\"example-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var exampleTopic = new Topic(\"exampleTopic\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var admin = new BucketIAMMember(\"admin\", BucketIAMMemberArgs.builder()\n .bucket(example.name())\n .role(\"roles/storage.admin\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-pubsub.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(exampleTopic.id())\n .cloudStorageConfig(SubscriptionCloudStorageConfigArgs.builder()\n .bucket(example.name())\n .filenamePrefix(\"pre-\")\n .filenameSuffix(\"-_91980\")\n .filenameDatetimeFormat(\"YYYY-MM-DD/hh_mm_ssZ\")\n .maxBytes(1000)\n .maxDuration(\"300s\")\n .maxMessages(1000)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n example,\n admin)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:storage:Bucket\n properties:\n name: example-bucket\n location: US\n uniformBucketLevelAccess: true\n exampleTopic:\n type: gcp:pubsub:Topic\n name: example\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${exampleTopic.id}\n cloudStorageConfig:\n bucket: ${example.name}\n filenamePrefix: pre-\n filenameSuffix: -_91980\n filenameDatetimeFormat: YYYY-MM-DD/hh_mm_ssZ\n maxBytes: 1000\n maxDuration: 300s\n maxMessages: 1000\n options:\n dependson:\n - ${example}\n - ${admin}\n admin:\n type: gcp:storage:BucketIAMMember\n properties:\n bucket: ${example.name}\n role: roles/storage.admin\n member: serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Push Cloudstorage Avro\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.storage.Bucket(\"example\", {\n name: \"example-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst exampleTopic = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst project = gcp.organizations.getProject({});\nconst admin = new gcp.storage.BucketIAMMember(\"admin\", {\n bucket: example.name,\n role: \"roles/storage.admin\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com`),\n});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: exampleTopic.id,\n cloudStorageConfig: {\n bucket: example.name,\n filenamePrefix: \"pre-\",\n filenameSuffix: \"-_37118\",\n filenameDatetimeFormat: \"YYYY-MM-DD/hh_mm_ssZ\",\n maxBytes: 1000,\n maxDuration: \"300s\",\n maxMessages: 1000,\n avroConfig: {\n writeMetadata: true,\n useTopicSchema: true,\n },\n },\n}, {\n dependsOn: [\n example,\n admin,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.storage.Bucket(\"example\",\n name=\"example-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nexample_topic = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nproject = gcp.organizations.get_project()\nadmin = gcp.storage.BucketIAMMember(\"admin\",\n bucket=example.name,\n role=\"roles/storage.admin\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example_topic.id,\n cloud_storage_config={\n \"bucket\": example.name,\n \"filename_prefix\": \"pre-\",\n \"filename_suffix\": \"-_37118\",\n \"filename_datetime_format\": \"YYYY-MM-DD/hh_mm_ssZ\",\n \"max_bytes\": 1000,\n \"max_duration\": \"300s\",\n \"max_messages\": 1000,\n \"avro_config\": {\n \"write_metadata\": True,\n \"use_topic_schema\": True,\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[\n example,\n admin,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.Storage.Bucket(\"example\", new()\n {\n Name = \"example-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var exampleTopic = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var admin = new Gcp.Storage.BucketIAMMember(\"admin\", new()\n {\n Bucket = example.Name,\n Role = \"roles/storage.admin\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-pubsub.iam.gserviceaccount.com\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = exampleTopic.Id,\n CloudStorageConfig = new Gcp.PubSub.Inputs.SubscriptionCloudStorageConfigArgs\n {\n Bucket = example.Name,\n FilenamePrefix = \"pre-\",\n FilenameSuffix = \"-_37118\",\n FilenameDatetimeFormat = \"YYYY-MM-DD/hh_mm_ssZ\",\n MaxBytes = 1000,\n MaxDuration = \"300s\",\n MaxMessages = 1000,\n AvroConfig = new Gcp.PubSub.Inputs.SubscriptionCloudStorageConfigAvroConfigArgs\n {\n WriteMetadata = true,\n UseTopicSchema = true,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n example,\n admin,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := storage.NewBucket(ctx, \"example\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"example-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleTopic, err := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tadmin, err := storage.NewBucketIAMMember(ctx, \"admin\", \u0026storage.BucketIAMMemberArgs{\n\t\t\tBucket: example.Name,\n\t\t\tRole: pulumi.String(\"roles/storage.admin\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-pubsub.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: exampleTopic.ID(),\n\t\t\tCloudStorageConfig: \u0026pubsub.SubscriptionCloudStorageConfigArgs{\n\t\t\t\tBucket: example.Name,\n\t\t\t\tFilenamePrefix: pulumi.String(\"pre-\"),\n\t\t\t\tFilenameSuffix: pulumi.String(\"-_37118\"),\n\t\t\t\tFilenameDatetimeFormat: pulumi.String(\"YYYY-MM-DD/hh_mm_ssZ\"),\n\t\t\t\tMaxBytes: pulumi.Int(1000),\n\t\t\t\tMaxDuration: pulumi.String(\"300s\"),\n\t\t\t\tMaxMessages: pulumi.Int(1000),\n\t\t\t\tAvroConfig: \u0026pubsub.SubscriptionCloudStorageConfigAvroConfigArgs{\n\t\t\t\t\tWriteMetadata: pulumi.Bool(true),\n\t\t\t\t\tUseTopicSchema: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texample,\n\t\t\tadmin,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.storage.BucketIAMMember;\nimport com.pulumi.gcp.storage.BucketIAMMemberArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionCloudStorageConfigArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionCloudStorageConfigAvroConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Bucket(\"example\", BucketArgs.builder()\n .name(\"example-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var exampleTopic = new Topic(\"exampleTopic\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var admin = new BucketIAMMember(\"admin\", BucketIAMMemberArgs.builder()\n .bucket(example.name())\n .role(\"roles/storage.admin\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-pubsub.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(exampleTopic.id())\n .cloudStorageConfig(SubscriptionCloudStorageConfigArgs.builder()\n .bucket(example.name())\n .filenamePrefix(\"pre-\")\n .filenameSuffix(\"-_37118\")\n .filenameDatetimeFormat(\"YYYY-MM-DD/hh_mm_ssZ\")\n .maxBytes(1000)\n .maxDuration(\"300s\")\n .maxMessages(1000)\n .avroConfig(SubscriptionCloudStorageConfigAvroConfigArgs.builder()\n .writeMetadata(true)\n .useTopicSchema(true)\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n example,\n admin)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:storage:Bucket\n properties:\n name: example-bucket\n location: US\n uniformBucketLevelAccess: true\n exampleTopic:\n type: gcp:pubsub:Topic\n name: example\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${exampleTopic.id}\n cloudStorageConfig:\n bucket: ${example.name}\n filenamePrefix: pre-\n filenameSuffix: -_37118\n filenameDatetimeFormat: YYYY-MM-DD/hh_mm_ssZ\n maxBytes: 1000\n maxDuration: 300s\n maxMessages: 1000\n avroConfig:\n writeMetadata: true\n useTopicSchema: true\n options:\n dependson:\n - ${example}\n - ${admin}\n admin:\n type: gcp:storage:BucketIAMMember\n properties:\n bucket: ${example.name}\n role: roles/storage.admin\n member: serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Push Cloudstorage Service Account\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.storage.Bucket(\"example\", {\n name: \"example-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst exampleTopic = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst storageWriteServiceAccount = new gcp.serviceaccount.Account(\"storage_write_service_account\", {\n accountId: \"example-stw\",\n displayName: \"Storage Write Service Account\",\n});\nconst admin = new gcp.storage.BucketIAMMember(\"admin\", {\n bucket: example.name,\n role: \"roles/storage.admin\",\n member: pulumi.interpolate`serviceAccount:${storageWriteServiceAccount.email}`,\n});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: exampleTopic.id,\n cloudStorageConfig: {\n bucket: example.name,\n filenamePrefix: \"pre-\",\n filenameSuffix: \"-_80332\",\n filenameDatetimeFormat: \"YYYY-MM-DD/hh_mm_ssZ\",\n maxBytes: 1000,\n maxDuration: \"300s\",\n serviceAccountEmail: storageWriteServiceAccount.email,\n },\n}, {\n dependsOn: [\n storageWriteServiceAccount,\n example,\n admin,\n ],\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.storage.Bucket(\"example\",\n name=\"example-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nexample_topic = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nstorage_write_service_account = gcp.serviceaccount.Account(\"storage_write_service_account\",\n account_id=\"example-stw\",\n display_name=\"Storage Write Service Account\")\nadmin = gcp.storage.BucketIAMMember(\"admin\",\n bucket=example.name,\n role=\"roles/storage.admin\",\n member=storage_write_service_account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example_topic.id,\n cloud_storage_config={\n \"bucket\": example.name,\n \"filename_prefix\": \"pre-\",\n \"filename_suffix\": \"-_80332\",\n \"filename_datetime_format\": \"YYYY-MM-DD/hh_mm_ssZ\",\n \"max_bytes\": 1000,\n \"max_duration\": \"300s\",\n \"service_account_email\": storage_write_service_account.email,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n storage_write_service_account,\n example,\n admin,\n ]))\nproject = gcp.organizations.get_project()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.Storage.Bucket(\"example\", new()\n {\n Name = \"example-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var exampleTopic = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var storageWriteServiceAccount = new Gcp.ServiceAccount.Account(\"storage_write_service_account\", new()\n {\n AccountId = \"example-stw\",\n DisplayName = \"Storage Write Service Account\",\n });\n\n var admin = new Gcp.Storage.BucketIAMMember(\"admin\", new()\n {\n Bucket = example.Name,\n Role = \"roles/storage.admin\",\n Member = storageWriteServiceAccount.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = exampleTopic.Id,\n CloudStorageConfig = new Gcp.PubSub.Inputs.SubscriptionCloudStorageConfigArgs\n {\n Bucket = example.Name,\n FilenamePrefix = \"pre-\",\n FilenameSuffix = \"-_80332\",\n FilenameDatetimeFormat = \"YYYY-MM-DD/hh_mm_ssZ\",\n MaxBytes = 1000,\n MaxDuration = \"300s\",\n ServiceAccountEmail = storageWriteServiceAccount.Email,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n storageWriteServiceAccount,\n example,\n admin,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := storage.NewBucket(ctx, \"example\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"example-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleTopic, err := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tstorageWriteServiceAccount, err := serviceaccount.NewAccount(ctx, \"storage_write_service_account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"example-stw\"),\n\t\t\tDisplayName: pulumi.String(\"Storage Write Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tadmin, err := storage.NewBucketIAMMember(ctx, \"admin\", \u0026storage.BucketIAMMemberArgs{\n\t\t\tBucket: example.Name,\n\t\t\tRole: pulumi.String(\"roles/storage.admin\"),\n\t\t\tMember: storageWriteServiceAccount.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: exampleTopic.ID(),\n\t\t\tCloudStorageConfig: \u0026pubsub.SubscriptionCloudStorageConfigArgs{\n\t\t\t\tBucket: example.Name,\n\t\t\t\tFilenamePrefix: pulumi.String(\"pre-\"),\n\t\t\t\tFilenameSuffix: pulumi.String(\"-_80332\"),\n\t\t\t\tFilenameDatetimeFormat: pulumi.String(\"YYYY-MM-DD/hh_mm_ssZ\"),\n\t\t\t\tMaxBytes: pulumi.Int(1000),\n\t\t\t\tMaxDuration: pulumi.String(\"300s\"),\n\t\t\t\tServiceAccountEmail: storageWriteServiceAccount.Email,\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tstorageWriteServiceAccount,\n\t\t\texample,\n\t\t\tadmin,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.storage.BucketIAMMember;\nimport com.pulumi.gcp.storage.BucketIAMMemberArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionCloudStorageConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Bucket(\"example\", BucketArgs.builder()\n .name(\"example-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var exampleTopic = new Topic(\"exampleTopic\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n var storageWriteServiceAccount = new Account(\"storageWriteServiceAccount\", AccountArgs.builder()\n .accountId(\"example-stw\")\n .displayName(\"Storage Write Service Account\")\n .build());\n\n var admin = new BucketIAMMember(\"admin\", BucketIAMMemberArgs.builder()\n .bucket(example.name())\n .role(\"roles/storage.admin\")\n .member(storageWriteServiceAccount.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(exampleTopic.id())\n .cloudStorageConfig(SubscriptionCloudStorageConfigArgs.builder()\n .bucket(example.name())\n .filenamePrefix(\"pre-\")\n .filenameSuffix(\"-_80332\")\n .filenameDatetimeFormat(\"YYYY-MM-DD/hh_mm_ssZ\")\n .maxBytes(1000)\n .maxDuration(\"300s\")\n .serviceAccountEmail(storageWriteServiceAccount.email())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n storageWriteServiceAccount,\n example,\n admin)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:storage:Bucket\n properties:\n name: example-bucket\n location: US\n uniformBucketLevelAccess: true\n exampleTopic:\n type: gcp:pubsub:Topic\n name: example\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${exampleTopic.id}\n cloudStorageConfig:\n bucket: ${example.name}\n filenamePrefix: pre-\n filenameSuffix: -_80332\n filenameDatetimeFormat: YYYY-MM-DD/hh_mm_ssZ\n maxBytes: 1000\n maxDuration: 300s\n serviceAccountEmail: ${storageWriteServiceAccount.email}\n options:\n dependson:\n - ${storageWriteServiceAccount}\n - ${example}\n - ${admin}\n storageWriteServiceAccount:\n type: gcp:serviceaccount:Account\n name: storage_write_service_account\n properties:\n accountId: example-stw\n displayName: Storage Write Service Account\n admin:\n type: gcp:storage:BucketIAMMember\n properties:\n bucket: ${example.name}\n role: roles/storage.admin\n member: serviceAccount:${storageWriteServiceAccount.email}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSubscription can be imported using any of these accepted formats:\n\n* `projects/{{project}}/subscriptions/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Subscription can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:pubsub/subscription:Subscription default projects/{{project}}/subscriptions/{{name}}\n```\n\n```sh\n$ pulumi import gcp:pubsub/subscription:Subscription default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:pubsub/subscription:Subscription default {{name}}\n```\n\n", + "description": "A named resource representing the stream of messages from a single,\nspecific topic, to be delivered to the subscribing application.\n\n\nTo get more information about Subscription, see:\n\n* [API documentation](https://cloud.google.com/pubsub/docs/reference/rest/v1/projects.subscriptions)\n* How-to Guides\n * [Managing Subscriptions](https://cloud.google.com/pubsub/docs/admin#managing_subscriptions)\n\n\u003e **Note:** You can retrieve the email of the Google Managed Pub/Sub Service Account used for forwarding\nby using the `gcp.projects.ServiceIdentity` resource.\n\n## Example Usage\n\n### Pubsub Subscription Push\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: example.id,\n ackDeadlineSeconds: 20,\n labels: {\n foo: \"bar\",\n },\n pushConfig: {\n pushEndpoint: \"https://example.com/push\",\n attributes: {\n \"x-goog-version\": \"v1\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example.id,\n ack_deadline_seconds=20,\n labels={\n \"foo\": \"bar\",\n },\n push_config={\n \"push_endpoint\": \"https://example.com/push\",\n \"attributes\": {\n \"x-goog-version\": \"v1\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = example.Id,\n AckDeadlineSeconds = 20,\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n PushConfig = new Gcp.PubSub.Inputs.SubscriptionPushConfigArgs\n {\n PushEndpoint = \"https://example.com/push\",\n Attributes = \n {\n { \"x-goog-version\", \"v1\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: example.ID(),\n\t\t\tAckDeadlineSeconds: pulumi.Int(20),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tPushConfig: \u0026pubsub.SubscriptionPushConfigArgs{\n\t\t\t\tPushEndpoint: pulumi.String(\"https://example.com/push\"),\n\t\t\t\tAttributes: pulumi.StringMap{\n\t\t\t\t\t\"x-goog-version\": pulumi.String(\"v1\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionPushConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(example.id())\n .ackDeadlineSeconds(20)\n .labels(Map.of(\"foo\", \"bar\"))\n .pushConfig(SubscriptionPushConfigArgs.builder()\n .pushEndpoint(\"https://example.com/push\")\n .attributes(Map.of(\"x-goog-version\", \"v1\"))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${example.id}\n ackDeadlineSeconds: 20\n labels:\n foo: bar\n pushConfig:\n pushEndpoint: https://example.com/push\n attributes:\n x-goog-version: v1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Pull\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: example.id,\n labels: {\n foo: \"bar\",\n },\n messageRetentionDuration: \"1200s\",\n retainAckedMessages: true,\n ackDeadlineSeconds: 20,\n expirationPolicy: {\n ttl: \"300000.5s\",\n },\n retryPolicy: {\n minimumBackoff: \"10s\",\n },\n enableMessageOrdering: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example.id,\n labels={\n \"foo\": \"bar\",\n },\n message_retention_duration=\"1200s\",\n retain_acked_messages=True,\n ack_deadline_seconds=20,\n expiration_policy={\n \"ttl\": \"300000.5s\",\n },\n retry_policy={\n \"minimum_backoff\": \"10s\",\n },\n enable_message_ordering=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = example.Id,\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n MessageRetentionDuration = \"1200s\",\n RetainAckedMessages = true,\n AckDeadlineSeconds = 20,\n ExpirationPolicy = new Gcp.PubSub.Inputs.SubscriptionExpirationPolicyArgs\n {\n Ttl = \"300000.5s\",\n },\n RetryPolicy = new Gcp.PubSub.Inputs.SubscriptionRetryPolicyArgs\n {\n MinimumBackoff = \"10s\",\n },\n EnableMessageOrdering = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: example.ID(),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tMessageRetentionDuration: pulumi.String(\"1200s\"),\n\t\t\tRetainAckedMessages: pulumi.Bool(true),\n\t\t\tAckDeadlineSeconds: pulumi.Int(20),\n\t\t\tExpirationPolicy: \u0026pubsub.SubscriptionExpirationPolicyArgs{\n\t\t\t\tTtl: pulumi.String(\"300000.5s\"),\n\t\t\t},\n\t\t\tRetryPolicy: \u0026pubsub.SubscriptionRetryPolicyArgs{\n\t\t\t\tMinimumBackoff: pulumi.String(\"10s\"),\n\t\t\t},\n\t\t\tEnableMessageOrdering: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionExpirationPolicyArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionRetryPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(example.id())\n .labels(Map.of(\"foo\", \"bar\"))\n .messageRetentionDuration(\"1200s\")\n .retainAckedMessages(true)\n .ackDeadlineSeconds(20)\n .expirationPolicy(SubscriptionExpirationPolicyArgs.builder()\n .ttl(\"300000.5s\")\n .build())\n .retryPolicy(SubscriptionRetryPolicyArgs.builder()\n .minimumBackoff(\"10s\")\n .build())\n .enableMessageOrdering(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${example.id}\n labels:\n foo: bar\n messageRetentionDuration: 1200s\n retainAckedMessages: true\n ackDeadlineSeconds: 20\n expirationPolicy:\n ttl: 300000.5s\n retryPolicy:\n minimumBackoff: 10s\n enableMessageOrdering: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Pull Filter\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: example.id,\n labels: {\n foo: \"bar\",\n },\n filter: ` attributes.foo = \"foo\"\n AND attributes.bar = \"bar\"\n`,\n ackDeadlineSeconds: 20,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example.id,\n labels={\n \"foo\": \"bar\",\n },\n filter=\"\"\" attributes.foo = \"foo\"\n AND attributes.bar = \"bar\"\n\"\"\",\n ack_deadline_seconds=20)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = example.Id,\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Filter = @\" attributes.foo = \"\"foo\"\"\n AND attributes.bar = \"\"bar\"\"\n\",\n AckDeadlineSeconds = 20,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: example.ID(),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tFilter: pulumi.String(\" attributes.foo = \\\"foo\\\"\\n AND attributes.bar = \\\"bar\\\"\\n\"),\n\t\t\tAckDeadlineSeconds: pulumi.Int(20),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(example.id())\n .labels(Map.of(\"foo\", \"bar\"))\n .filter(\"\"\"\n attributes.foo = \"foo\"\n AND attributes.bar = \"bar\"\n \"\"\")\n .ackDeadlineSeconds(20)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${example.id}\n labels:\n foo: bar\n filter: |2\n attributes.foo = \"foo\"\n AND attributes.bar = \"bar\"\n ackDeadlineSeconds: 20\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Dead Letter\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst exampleDeadLetter = new gcp.pubsub.Topic(\"example_dead_letter\", {name: \"example-topic-dead-letter\"});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: example.id,\n deadLetterPolicy: {\n deadLetterTopic: exampleDeadLetter.id,\n maxDeliveryAttempts: 10,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nexample_dead_letter = gcp.pubsub.Topic(\"example_dead_letter\", name=\"example-topic-dead-letter\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example.id,\n dead_letter_policy={\n \"dead_letter_topic\": example_dead_letter.id,\n \"max_delivery_attempts\": 10,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var exampleDeadLetter = new Gcp.PubSub.Topic(\"example_dead_letter\", new()\n {\n Name = \"example-topic-dead-letter\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = example.Id,\n DeadLetterPolicy = new Gcp.PubSub.Inputs.SubscriptionDeadLetterPolicyArgs\n {\n DeadLetterTopic = exampleDeadLetter.Id,\n MaxDeliveryAttempts = 10,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleDeadLetter, err := pubsub.NewTopic(ctx, \"example_dead_letter\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic-dead-letter\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: example.ID(),\n\t\t\tDeadLetterPolicy: \u0026pubsub.SubscriptionDeadLetterPolicyArgs{\n\t\t\t\tDeadLetterTopic: exampleDeadLetter.ID(),\n\t\t\t\tMaxDeliveryAttempts: pulumi.Int(10),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionDeadLetterPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n var exampleDeadLetter = new Topic(\"exampleDeadLetter\", TopicArgs.builder()\n .name(\"example-topic-dead-letter\")\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(example.id())\n .deadLetterPolicy(SubscriptionDeadLetterPolicyArgs.builder()\n .deadLetterTopic(exampleDeadLetter.id())\n .maxDeliveryAttempts(10)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n exampleDeadLetter:\n type: gcp:pubsub:Topic\n name: example_dead_letter\n properties:\n name: example-topic-dead-letter\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${example.id}\n deadLetterPolicy:\n deadLetterTopic: ${exampleDeadLetter.id}\n maxDeliveryAttempts: 10\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Push Bq\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst project = gcp.organizations.getProject({});\nconst viewer = new gcp.projects.IAMMember(\"viewer\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/bigquery.metadataViewer\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com`),\n});\nconst editor = new gcp.projects.IAMMember(\"editor\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/bigquery.dataEditor\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com`),\n});\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"example_dataset\"});\nconst testTable = new gcp.bigquery.Table(\"test\", {\n deletionProtection: false,\n tableId: \"example_table\",\n datasetId: test.datasetId,\n schema: `[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n`,\n});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: example.id,\n bigqueryConfig: {\n table: pulumi.interpolate`${testTable.project}.${testTable.datasetId}.${testTable.tableId}`,\n },\n}, {\n dependsOn: [\n viewer,\n editor,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nproject = gcp.organizations.get_project()\nviewer = gcp.projects.IAMMember(\"viewer\",\n project=project.project_id,\n role=\"roles/bigquery.metadataViewer\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\")\neditor = gcp.projects.IAMMember(\"editor\",\n project=project.project_id,\n role=\"roles/bigquery.dataEditor\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\")\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"example_dataset\")\ntest_table = gcp.bigquery.Table(\"test\",\n deletion_protection=False,\n table_id=\"example_table\",\n dataset_id=test.dataset_id,\n schema=\"\"\"[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n\"\"\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example.id,\n bigquery_config={\n \"table\": pulumi.Output.all(\n project=test_table.project,\n dataset_id=test_table.dataset_id,\n table_id=test_table.table_id\n).apply(lambda resolved_outputs: f\"{resolved_outputs['project']}.{resolved_outputs['dataset_id']}.{resolved_outputs['table_id']}\")\n,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n viewer,\n editor,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var viewer = new Gcp.Projects.IAMMember(\"viewer\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/bigquery.metadataViewer\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-pubsub.iam.gserviceaccount.com\",\n });\n\n var editor = new Gcp.Projects.IAMMember(\"editor\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/bigquery.dataEditor\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-pubsub.iam.gserviceaccount.com\",\n });\n\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"example_dataset\",\n });\n\n var testTable = new Gcp.BigQuery.Table(\"test\", new()\n {\n DeletionProtection = false,\n TableId = \"example_table\",\n DatasetId = test.DatasetId,\n Schema = @\"[\n {\n \"\"name\"\": \"\"data\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"description\"\": \"\"The data\"\"\n }\n]\n\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = example.Id,\n BigqueryConfig = new Gcp.PubSub.Inputs.SubscriptionBigqueryConfigArgs\n {\n Table = Output.Tuple(testTable.Project, testTable.DatasetId, testTable.TableId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n var tableId = values.Item3;\n return $\"{project}.{datasetId}.{tableId}\";\n }),\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n viewer,\n editor,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tviewer, err := projects.NewIAMMember(ctx, \"viewer\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/bigquery.metadataViewer\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-pubsub.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\teditor, err := projects.NewIAMMember(ctx, \"editor\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/bigquery.dataEditor\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-pubsub.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestTable, err := bigquery.NewTable(ctx, \"test\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTableId: pulumi.String(\"example_table\"),\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tSchema: pulumi.String(`[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: example.ID(),\n\t\t\tBigqueryConfig: \u0026pubsub.SubscriptionBigqueryConfigArgs{\n\t\t\t\tTable: pulumi.All(testTable.Project, testTable.DatasetId, testTable.TableId).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tproject := _args[0].(string)\n\t\t\t\t\tdatasetId := _args[1].(string)\n\t\t\t\t\ttableId := _args[2].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"%v.%v.%v\", project, datasetId, tableId), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tviewer,\n\t\t\teditor,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionBigqueryConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var viewer = new IAMMember(\"viewer\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/bigquery.metadataViewer\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-pubsub.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var editor = new IAMMember(\"editor\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/bigquery.dataEditor\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-pubsub.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"example_dataset\")\n .build());\n\n var testTable = new Table(\"testTable\", TableArgs.builder()\n .deletionProtection(false)\n .tableId(\"example_table\")\n .datasetId(test.datasetId())\n .schema(\"\"\"\n[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n \"\"\")\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(example.id())\n .bigqueryConfig(SubscriptionBigqueryConfigArgs.builder()\n .table(Output.tuple(testTable.project(), testTable.datasetId(), testTable.tableId()).applyValue(values -\u003e {\n var project = values.t1;\n var datasetId = values.t2;\n var tableId = values.t3;\n return String.format(\"%s.%s.%s\", project.applyValue(getProjectResult -\u003e getProjectResult),datasetId,tableId);\n }))\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n viewer,\n editor)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${example.id}\n bigqueryConfig:\n table: ${testTable.project}.${testTable.datasetId}.${testTable.tableId}\n options:\n dependson:\n - ${viewer}\n - ${editor}\n viewer:\n type: gcp:projects:IAMMember\n properties:\n project: ${project.projectId}\n role: roles/bigquery.metadataViewer\n member: serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\n editor:\n type: gcp:projects:IAMMember\n properties:\n project: ${project.projectId}\n role: roles/bigquery.dataEditor\n member: serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n testTable:\n type: gcp:bigquery:Table\n name: test\n properties:\n deletionProtection: false\n tableId: example_table\n datasetId: ${test.datasetId}\n schema: |\n [\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n ]\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Push Bq Table Schema\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst project = gcp.organizations.getProject({});\nconst viewer = new gcp.projects.IAMMember(\"viewer\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/bigquery.metadataViewer\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com`),\n});\nconst editor = new gcp.projects.IAMMember(\"editor\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/bigquery.dataEditor\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com`),\n});\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"example_dataset\"});\nconst testTable = new gcp.bigquery.Table(\"test\", {\n deletionProtection: false,\n tableId: \"example_table\",\n datasetId: test.datasetId,\n schema: `[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n`,\n});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: example.id,\n bigqueryConfig: {\n table: pulumi.interpolate`${testTable.project}.${testTable.datasetId}.${testTable.tableId}`,\n useTableSchema: true,\n },\n}, {\n dependsOn: [\n viewer,\n editor,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nproject = gcp.organizations.get_project()\nviewer = gcp.projects.IAMMember(\"viewer\",\n project=project.project_id,\n role=\"roles/bigquery.metadataViewer\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\")\neditor = gcp.projects.IAMMember(\"editor\",\n project=project.project_id,\n role=\"roles/bigquery.dataEditor\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\")\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"example_dataset\")\ntest_table = gcp.bigquery.Table(\"test\",\n deletion_protection=False,\n table_id=\"example_table\",\n dataset_id=test.dataset_id,\n schema=\"\"\"[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n\"\"\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example.id,\n bigquery_config={\n \"table\": pulumi.Output.all(\n project=test_table.project,\n dataset_id=test_table.dataset_id,\n table_id=test_table.table_id\n).apply(lambda resolved_outputs: f\"{resolved_outputs['project']}.{resolved_outputs['dataset_id']}.{resolved_outputs['table_id']}\")\n,\n \"use_table_schema\": True,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n viewer,\n editor,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var viewer = new Gcp.Projects.IAMMember(\"viewer\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/bigquery.metadataViewer\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-pubsub.iam.gserviceaccount.com\",\n });\n\n var editor = new Gcp.Projects.IAMMember(\"editor\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/bigquery.dataEditor\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-pubsub.iam.gserviceaccount.com\",\n });\n\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"example_dataset\",\n });\n\n var testTable = new Gcp.BigQuery.Table(\"test\", new()\n {\n DeletionProtection = false,\n TableId = \"example_table\",\n DatasetId = test.DatasetId,\n Schema = @\"[\n {\n \"\"name\"\": \"\"data\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"description\"\": \"\"The data\"\"\n }\n]\n\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = example.Id,\n BigqueryConfig = new Gcp.PubSub.Inputs.SubscriptionBigqueryConfigArgs\n {\n Table = Output.Tuple(testTable.Project, testTable.DatasetId, testTable.TableId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n var tableId = values.Item3;\n return $\"{project}.{datasetId}.{tableId}\";\n }),\n UseTableSchema = true,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n viewer,\n editor,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tviewer, err := projects.NewIAMMember(ctx, \"viewer\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/bigquery.metadataViewer\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-pubsub.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\teditor, err := projects.NewIAMMember(ctx, \"editor\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/bigquery.dataEditor\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-pubsub.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestTable, err := bigquery.NewTable(ctx, \"test\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTableId: pulumi.String(\"example_table\"),\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tSchema: pulumi.String(`[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: example.ID(),\n\t\t\tBigqueryConfig: \u0026pubsub.SubscriptionBigqueryConfigArgs{\n\t\t\t\tTable: pulumi.All(testTable.Project, testTable.DatasetId, testTable.TableId).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tproject := _args[0].(string)\n\t\t\t\t\tdatasetId := _args[1].(string)\n\t\t\t\t\ttableId := _args[2].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"%v.%v.%v\", project, datasetId, tableId), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tUseTableSchema: pulumi.Bool(true),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tviewer,\n\t\t\teditor,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionBigqueryConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var viewer = new IAMMember(\"viewer\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/bigquery.metadataViewer\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-pubsub.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var editor = new IAMMember(\"editor\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/bigquery.dataEditor\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-pubsub.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"example_dataset\")\n .build());\n\n var testTable = new Table(\"testTable\", TableArgs.builder()\n .deletionProtection(false)\n .tableId(\"example_table\")\n .datasetId(test.datasetId())\n .schema(\"\"\"\n[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n \"\"\")\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(example.id())\n .bigqueryConfig(SubscriptionBigqueryConfigArgs.builder()\n .table(Output.tuple(testTable.project(), testTable.datasetId(), testTable.tableId()).applyValue(values -\u003e {\n var project = values.t1;\n var datasetId = values.t2;\n var tableId = values.t3;\n return String.format(\"%s.%s.%s\", project.applyValue(getProjectResult -\u003e getProjectResult),datasetId,tableId);\n }))\n .useTableSchema(true)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n viewer,\n editor)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${example.id}\n bigqueryConfig:\n table: ${testTable.project}.${testTable.datasetId}.${testTable.tableId}\n useTableSchema: true\n options:\n dependson:\n - ${viewer}\n - ${editor}\n viewer:\n type: gcp:projects:IAMMember\n properties:\n project: ${project.projectId}\n role: roles/bigquery.metadataViewer\n member: serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\n editor:\n type: gcp:projects:IAMMember\n properties:\n project: ${project.projectId}\n role: roles/bigquery.dataEditor\n member: serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n testTable:\n type: gcp:bigquery:Table\n name: test\n properties:\n deletionProtection: false\n tableId: example_table\n datasetId: ${test.datasetId}\n schema: |\n [\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n ]\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Push Bq Service Account\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst bqWriteServiceAccount = new gcp.serviceaccount.Account(\"bq_write_service_account\", {\n accountId: \"example-bqw\",\n displayName: \"BQ Write Service Account\",\n});\nconst project = gcp.organizations.getProject({});\nconst viewer = new gcp.projects.IAMMember(\"viewer\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/bigquery.metadataViewer\",\n member: pulumi.interpolate`serviceAccount:${bqWriteServiceAccount.email}`,\n});\nconst editor = new gcp.projects.IAMMember(\"editor\", {\n project: project.then(project =\u003e project.projectId),\n role: \"roles/bigquery.dataEditor\",\n member: pulumi.interpolate`serviceAccount:${bqWriteServiceAccount.email}`,\n});\nconst test = new gcp.bigquery.Dataset(\"test\", {datasetId: \"example_dataset\"});\nconst testTable = new gcp.bigquery.Table(\"test\", {\n deletionProtection: false,\n tableId: \"example_table\",\n datasetId: test.datasetId,\n schema: `[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n`,\n});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: example.id,\n bigqueryConfig: {\n table: pulumi.interpolate`${testTable.project}.${testTable.datasetId}.${testTable.tableId}`,\n serviceAccountEmail: bqWriteServiceAccount.email,\n },\n}, {\n dependsOn: [\n bqWriteServiceAccount,\n viewer,\n editor,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nbq_write_service_account = gcp.serviceaccount.Account(\"bq_write_service_account\",\n account_id=\"example-bqw\",\n display_name=\"BQ Write Service Account\")\nproject = gcp.organizations.get_project()\nviewer = gcp.projects.IAMMember(\"viewer\",\n project=project.project_id,\n role=\"roles/bigquery.metadataViewer\",\n member=bq_write_service_account.email.apply(lambda email: f\"serviceAccount:{email}\"))\neditor = gcp.projects.IAMMember(\"editor\",\n project=project.project_id,\n role=\"roles/bigquery.dataEditor\",\n member=bq_write_service_account.email.apply(lambda email: f\"serviceAccount:{email}\"))\ntest = gcp.bigquery.Dataset(\"test\", dataset_id=\"example_dataset\")\ntest_table = gcp.bigquery.Table(\"test\",\n deletion_protection=False,\n table_id=\"example_table\",\n dataset_id=test.dataset_id,\n schema=\"\"\"[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n\"\"\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example.id,\n bigquery_config={\n \"table\": pulumi.Output.all(\n project=test_table.project,\n dataset_id=test_table.dataset_id,\n table_id=test_table.table_id\n).apply(lambda resolved_outputs: f\"{resolved_outputs['project']}.{resolved_outputs['dataset_id']}.{resolved_outputs['table_id']}\")\n,\n \"service_account_email\": bq_write_service_account.email,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n bq_write_service_account,\n viewer,\n editor,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var bqWriteServiceAccount = new Gcp.ServiceAccount.Account(\"bq_write_service_account\", new()\n {\n AccountId = \"example-bqw\",\n DisplayName = \"BQ Write Service Account\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var viewer = new Gcp.Projects.IAMMember(\"viewer\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/bigquery.metadataViewer\",\n Member = bqWriteServiceAccount.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var editor = new Gcp.Projects.IAMMember(\"editor\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Role = \"roles/bigquery.dataEditor\",\n Member = bqWriteServiceAccount.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var test = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"example_dataset\",\n });\n\n var testTable = new Gcp.BigQuery.Table(\"test\", new()\n {\n DeletionProtection = false,\n TableId = \"example_table\",\n DatasetId = test.DatasetId,\n Schema = @\"[\n {\n \"\"name\"\": \"\"data\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"description\"\": \"\"The data\"\"\n }\n]\n\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = example.Id,\n BigqueryConfig = new Gcp.PubSub.Inputs.SubscriptionBigqueryConfigArgs\n {\n Table = Output.Tuple(testTable.Project, testTable.DatasetId, testTable.TableId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n var tableId = values.Item3;\n return $\"{project}.{datasetId}.{tableId}\";\n }),\n ServiceAccountEmail = bqWriteServiceAccount.Email,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n bqWriteServiceAccount,\n viewer,\n editor,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbqWriteServiceAccount, err := serviceaccount.NewAccount(ctx, \"bq_write_service_account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"example-bqw\"),\n\t\t\tDisplayName: pulumi.String(\"BQ Write Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tviewer, err := projects.NewIAMMember(ctx, \"viewer\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/bigquery.metadataViewer\"),\n\t\t\tMember: bqWriteServiceAccount.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\teditor, err := projects.NewIAMMember(ctx, \"editor\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tRole: pulumi.String(\"roles/bigquery.dataEditor\"),\n\t\t\tMember: bqWriteServiceAccount.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttest, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_dataset\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestTable, err := bigquery.NewTable(ctx, \"test\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTableId: pulumi.String(\"example_table\"),\n\t\t\tDatasetId: test.DatasetId,\n\t\t\tSchema: pulumi.String(`[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: example.ID(),\n\t\t\tBigqueryConfig: \u0026pubsub.SubscriptionBigqueryConfigArgs{\n\t\t\t\tTable: pulumi.All(testTable.Project, testTable.DatasetId, testTable.TableId).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tproject := _args[0].(string)\n\t\t\t\t\tdatasetId := _args[1].(string)\n\t\t\t\t\ttableId := _args[2].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"%v.%v.%v\", project, datasetId, tableId), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tServiceAccountEmail: bqWriteServiceAccount.Email,\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tbqWriteServiceAccount,\n\t\t\tviewer,\n\t\t\teditor,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionBigqueryConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Topic(\"example\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n var bqWriteServiceAccount = new Account(\"bqWriteServiceAccount\", AccountArgs.builder()\n .accountId(\"example-bqw\")\n .displayName(\"BQ Write Service Account\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var viewer = new IAMMember(\"viewer\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/bigquery.metadataViewer\")\n .member(bqWriteServiceAccount.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var editor = new IAMMember(\"editor\", IAMMemberArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .role(\"roles/bigquery.dataEditor\")\n .member(bqWriteServiceAccount.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var test = new Dataset(\"test\", DatasetArgs.builder()\n .datasetId(\"example_dataset\")\n .build());\n\n var testTable = new Table(\"testTable\", TableArgs.builder()\n .deletionProtection(false)\n .tableId(\"example_table\")\n .datasetId(test.datasetId())\n .schema(\"\"\"\n[\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n]\n \"\"\")\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(example.id())\n .bigqueryConfig(SubscriptionBigqueryConfigArgs.builder()\n .table(Output.tuple(testTable.project(), testTable.datasetId(), testTable.tableId()).applyValue(values -\u003e {\n var project = values.t1;\n var datasetId = values.t2;\n var tableId = values.t3;\n return String.format(\"%s.%s.%s\", project.applyValue(getProjectResult -\u003e getProjectResult),datasetId,tableId);\n }))\n .serviceAccountEmail(bqWriteServiceAccount.email())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n bqWriteServiceAccount,\n viewer,\n editor)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:pubsub:Topic\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${example.id}\n bigqueryConfig:\n table: ${testTable.project}.${testTable.datasetId}.${testTable.tableId}\n serviceAccountEmail: ${bqWriteServiceAccount.email}\n options:\n dependson:\n - ${bqWriteServiceAccount}\n - ${viewer}\n - ${editor}\n bqWriteServiceAccount:\n type: gcp:serviceaccount:Account\n name: bq_write_service_account\n properties:\n accountId: example-bqw\n displayName: BQ Write Service Account\n viewer:\n type: gcp:projects:IAMMember\n properties:\n project: ${project.projectId}\n role: roles/bigquery.metadataViewer\n member: serviceAccount:${bqWriteServiceAccount.email}\n editor:\n type: gcp:projects:IAMMember\n properties:\n project: ${project.projectId}\n role: roles/bigquery.dataEditor\n member: serviceAccount:${bqWriteServiceAccount.email}\n test:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_dataset\n testTable:\n type: gcp:bigquery:Table\n name: test\n properties:\n deletionProtection: false\n tableId: example_table\n datasetId: ${test.datasetId}\n schema: |\n [\n {\n \"name\": \"data\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The data\"\n }\n ]\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Push Cloudstorage\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.storage.Bucket(\"example\", {\n name: \"example-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst exampleTopic = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst project = gcp.organizations.getProject({});\nconst admin = new gcp.storage.BucketIAMMember(\"admin\", {\n bucket: example.name,\n role: \"roles/storage.admin\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com`),\n});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: exampleTopic.id,\n cloudStorageConfig: {\n bucket: example.name,\n filenamePrefix: \"pre-\",\n filenameSuffix: \"-_91980\",\n filenameDatetimeFormat: \"YYYY-MM-DD/hh_mm_ssZ\",\n maxBytes: 1000,\n maxDuration: \"300s\",\n maxMessages: 1000,\n },\n}, {\n dependsOn: [\n example,\n admin,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.storage.Bucket(\"example\",\n name=\"example-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nexample_topic = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nproject = gcp.organizations.get_project()\nadmin = gcp.storage.BucketIAMMember(\"admin\",\n bucket=example.name,\n role=\"roles/storage.admin\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example_topic.id,\n cloud_storage_config={\n \"bucket\": example.name,\n \"filename_prefix\": \"pre-\",\n \"filename_suffix\": \"-_91980\",\n \"filename_datetime_format\": \"YYYY-MM-DD/hh_mm_ssZ\",\n \"max_bytes\": 1000,\n \"max_duration\": \"300s\",\n \"max_messages\": 1000,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n example,\n admin,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.Storage.Bucket(\"example\", new()\n {\n Name = \"example-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var exampleTopic = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var admin = new Gcp.Storage.BucketIAMMember(\"admin\", new()\n {\n Bucket = example.Name,\n Role = \"roles/storage.admin\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-pubsub.iam.gserviceaccount.com\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = exampleTopic.Id,\n CloudStorageConfig = new Gcp.PubSub.Inputs.SubscriptionCloudStorageConfigArgs\n {\n Bucket = example.Name,\n FilenamePrefix = \"pre-\",\n FilenameSuffix = \"-_91980\",\n FilenameDatetimeFormat = \"YYYY-MM-DD/hh_mm_ssZ\",\n MaxBytes = 1000,\n MaxDuration = \"300s\",\n MaxMessages = 1000,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n example,\n admin,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := storage.NewBucket(ctx, \"example\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"example-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleTopic, err := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tadmin, err := storage.NewBucketIAMMember(ctx, \"admin\", \u0026storage.BucketIAMMemberArgs{\n\t\t\tBucket: example.Name,\n\t\t\tRole: pulumi.String(\"roles/storage.admin\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-pubsub.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: exampleTopic.ID(),\n\t\t\tCloudStorageConfig: \u0026pubsub.SubscriptionCloudStorageConfigArgs{\n\t\t\t\tBucket: example.Name,\n\t\t\t\tFilenamePrefix: pulumi.String(\"pre-\"),\n\t\t\t\tFilenameSuffix: pulumi.String(\"-_91980\"),\n\t\t\t\tFilenameDatetimeFormat: pulumi.String(\"YYYY-MM-DD/hh_mm_ssZ\"),\n\t\t\t\tMaxBytes: pulumi.Int(1000),\n\t\t\t\tMaxDuration: pulumi.String(\"300s\"),\n\t\t\t\tMaxMessages: pulumi.Int(1000),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texample,\n\t\t\tadmin,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.storage.BucketIAMMember;\nimport com.pulumi.gcp.storage.BucketIAMMemberArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionCloudStorageConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Bucket(\"example\", BucketArgs.builder()\n .name(\"example-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var exampleTopic = new Topic(\"exampleTopic\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var admin = new BucketIAMMember(\"admin\", BucketIAMMemberArgs.builder()\n .bucket(example.name())\n .role(\"roles/storage.admin\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-pubsub.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(exampleTopic.id())\n .cloudStorageConfig(SubscriptionCloudStorageConfigArgs.builder()\n .bucket(example.name())\n .filenamePrefix(\"pre-\")\n .filenameSuffix(\"-_91980\")\n .filenameDatetimeFormat(\"YYYY-MM-DD/hh_mm_ssZ\")\n .maxBytes(1000)\n .maxDuration(\"300s\")\n .maxMessages(1000)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n example,\n admin)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:storage:Bucket\n properties:\n name: example-bucket\n location: US\n uniformBucketLevelAccess: true\n exampleTopic:\n type: gcp:pubsub:Topic\n name: example\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${exampleTopic.id}\n cloudStorageConfig:\n bucket: ${example.name}\n filenamePrefix: pre-\n filenameSuffix: -_91980\n filenameDatetimeFormat: YYYY-MM-DD/hh_mm_ssZ\n maxBytes: 1000\n maxDuration: 300s\n maxMessages: 1000\n options:\n dependson:\n - ${example}\n - ${admin}\n admin:\n type: gcp:storage:BucketIAMMember\n properties:\n bucket: ${example.name}\n role: roles/storage.admin\n member: serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Push Cloudstorage Avro\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.storage.Bucket(\"example\", {\n name: \"example-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst exampleTopic = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst project = gcp.organizations.getProject({});\nconst admin = new gcp.storage.BucketIAMMember(\"admin\", {\n bucket: example.name,\n role: \"roles/storage.admin\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com`),\n});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: exampleTopic.id,\n cloudStorageConfig: {\n bucket: example.name,\n filenamePrefix: \"pre-\",\n filenameSuffix: \"-_37118\",\n filenameDatetimeFormat: \"YYYY-MM-DD/hh_mm_ssZ\",\n maxBytes: 1000,\n maxDuration: \"300s\",\n maxMessages: 1000,\n avroConfig: {\n writeMetadata: true,\n useTopicSchema: true,\n },\n },\n}, {\n dependsOn: [\n example,\n admin,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.storage.Bucket(\"example\",\n name=\"example-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nexample_topic = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nproject = gcp.organizations.get_project()\nadmin = gcp.storage.BucketIAMMember(\"admin\",\n bucket=example.name,\n role=\"roles/storage.admin\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\")\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example_topic.id,\n cloud_storage_config={\n \"bucket\": example.name,\n \"filename_prefix\": \"pre-\",\n \"filename_suffix\": \"-_37118\",\n \"filename_datetime_format\": \"YYYY-MM-DD/hh_mm_ssZ\",\n \"max_bytes\": 1000,\n \"max_duration\": \"300s\",\n \"max_messages\": 1000,\n \"avro_config\": {\n \"write_metadata\": True,\n \"use_topic_schema\": True,\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[\n example,\n admin,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.Storage.Bucket(\"example\", new()\n {\n Name = \"example-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var exampleTopic = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var admin = new Gcp.Storage.BucketIAMMember(\"admin\", new()\n {\n Bucket = example.Name,\n Role = \"roles/storage.admin\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-pubsub.iam.gserviceaccount.com\",\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = exampleTopic.Id,\n CloudStorageConfig = new Gcp.PubSub.Inputs.SubscriptionCloudStorageConfigArgs\n {\n Bucket = example.Name,\n FilenamePrefix = \"pre-\",\n FilenameSuffix = \"-_37118\",\n FilenameDatetimeFormat = \"YYYY-MM-DD/hh_mm_ssZ\",\n MaxBytes = 1000,\n MaxDuration = \"300s\",\n MaxMessages = 1000,\n AvroConfig = new Gcp.PubSub.Inputs.SubscriptionCloudStorageConfigAvroConfigArgs\n {\n WriteMetadata = true,\n UseTopicSchema = true,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n example,\n admin,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := storage.NewBucket(ctx, \"example\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"example-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleTopic, err := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tadmin, err := storage.NewBucketIAMMember(ctx, \"admin\", \u0026storage.BucketIAMMemberArgs{\n\t\t\tBucket: example.Name,\n\t\t\tRole: pulumi.String(\"roles/storage.admin\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-pubsub.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: exampleTopic.ID(),\n\t\t\tCloudStorageConfig: \u0026pubsub.SubscriptionCloudStorageConfigArgs{\n\t\t\t\tBucket: example.Name,\n\t\t\t\tFilenamePrefix: pulumi.String(\"pre-\"),\n\t\t\t\tFilenameSuffix: pulumi.String(\"-_37118\"),\n\t\t\t\tFilenameDatetimeFormat: pulumi.String(\"YYYY-MM-DD/hh_mm_ssZ\"),\n\t\t\t\tMaxBytes: pulumi.Int(1000),\n\t\t\t\tMaxDuration: pulumi.String(\"300s\"),\n\t\t\t\tMaxMessages: pulumi.Int(1000),\n\t\t\t\tAvroConfig: \u0026pubsub.SubscriptionCloudStorageConfigAvroConfigArgs{\n\t\t\t\t\tWriteMetadata: pulumi.Bool(true),\n\t\t\t\t\tUseTopicSchema: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texample,\n\t\t\tadmin,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.storage.BucketIAMMember;\nimport com.pulumi.gcp.storage.BucketIAMMemberArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionCloudStorageConfigArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionCloudStorageConfigAvroConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Bucket(\"example\", BucketArgs.builder()\n .name(\"example-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var exampleTopic = new Topic(\"exampleTopic\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var admin = new BucketIAMMember(\"admin\", BucketIAMMemberArgs.builder()\n .bucket(example.name())\n .role(\"roles/storage.admin\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-pubsub.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(exampleTopic.id())\n .cloudStorageConfig(SubscriptionCloudStorageConfigArgs.builder()\n .bucket(example.name())\n .filenamePrefix(\"pre-\")\n .filenameSuffix(\"-_37118\")\n .filenameDatetimeFormat(\"YYYY-MM-DD/hh_mm_ssZ\")\n .maxBytes(1000)\n .maxDuration(\"300s\")\n .maxMessages(1000)\n .avroConfig(SubscriptionCloudStorageConfigAvroConfigArgs.builder()\n .writeMetadata(true)\n .useTopicSchema(true)\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n example,\n admin)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:storage:Bucket\n properties:\n name: example-bucket\n location: US\n uniformBucketLevelAccess: true\n exampleTopic:\n type: gcp:pubsub:Topic\n name: example\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${exampleTopic.id}\n cloudStorageConfig:\n bucket: ${example.name}\n filenamePrefix: pre-\n filenameSuffix: -_37118\n filenameDatetimeFormat: YYYY-MM-DD/hh_mm_ssZ\n maxBytes: 1000\n maxDuration: 300s\n maxMessages: 1000\n avroConfig:\n writeMetadata: true\n useTopicSchema: true\n options:\n dependson:\n - ${example}\n - ${admin}\n admin:\n type: gcp:storage:BucketIAMMember\n properties:\n bucket: ${example.name}\n role: roles/storage.admin\n member: serviceAccount:service-${project.number}@gcp-sa-pubsub.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Pubsub Subscription Push Cloudstorage Service Account\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example = new gcp.storage.Bucket(\"example\", {\n name: \"example-bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst exampleTopic = new gcp.pubsub.Topic(\"example\", {name: \"example-topic\"});\nconst storageWriteServiceAccount = new gcp.serviceaccount.Account(\"storage_write_service_account\", {\n accountId: \"example-stw\",\n displayName: \"Storage Write Service Account\",\n});\nconst admin = new gcp.storage.BucketIAMMember(\"admin\", {\n bucket: example.name,\n role: \"roles/storage.admin\",\n member: pulumi.interpolate`serviceAccount:${storageWriteServiceAccount.email}`,\n});\nconst exampleSubscription = new gcp.pubsub.Subscription(\"example\", {\n name: \"example-subscription\",\n topic: exampleTopic.id,\n cloudStorageConfig: {\n bucket: example.name,\n filenamePrefix: \"pre-\",\n filenameSuffix: \"-_80332\",\n filenameDatetimeFormat: \"YYYY-MM-DD/hh_mm_ssZ\",\n maxBytes: 1000,\n maxDuration: \"300s\",\n serviceAccountEmail: storageWriteServiceAccount.email,\n },\n}, {\n dependsOn: [\n storageWriteServiceAccount,\n example,\n admin,\n ],\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.storage.Bucket(\"example\",\n name=\"example-bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\nexample_topic = gcp.pubsub.Topic(\"example\", name=\"example-topic\")\nstorage_write_service_account = gcp.serviceaccount.Account(\"storage_write_service_account\",\n account_id=\"example-stw\",\n display_name=\"Storage Write Service Account\")\nadmin = gcp.storage.BucketIAMMember(\"admin\",\n bucket=example.name,\n role=\"roles/storage.admin\",\n member=storage_write_service_account.email.apply(lambda email: f\"serviceAccount:{email}\"))\nexample_subscription = gcp.pubsub.Subscription(\"example\",\n name=\"example-subscription\",\n topic=example_topic.id,\n cloud_storage_config={\n \"bucket\": example.name,\n \"filename_prefix\": \"pre-\",\n \"filename_suffix\": \"-_80332\",\n \"filename_datetime_format\": \"YYYY-MM-DD/hh_mm_ssZ\",\n \"max_bytes\": 1000,\n \"max_duration\": \"300s\",\n \"service_account_email\": storage_write_service_account.email,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n storage_write_service_account,\n example,\n admin,\n ]))\nproject = gcp.organizations.get_project()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.Storage.Bucket(\"example\", new()\n {\n Name = \"example-bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var exampleTopic = new Gcp.PubSub.Topic(\"example\", new()\n {\n Name = \"example-topic\",\n });\n\n var storageWriteServiceAccount = new Gcp.ServiceAccount.Account(\"storage_write_service_account\", new()\n {\n AccountId = \"example-stw\",\n DisplayName = \"Storage Write Service Account\",\n });\n\n var admin = new Gcp.Storage.BucketIAMMember(\"admin\", new()\n {\n Bucket = example.Name,\n Role = \"roles/storage.admin\",\n Member = storageWriteServiceAccount.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var exampleSubscription = new Gcp.PubSub.Subscription(\"example\", new()\n {\n Name = \"example-subscription\",\n Topic = exampleTopic.Id,\n CloudStorageConfig = new Gcp.PubSub.Inputs.SubscriptionCloudStorageConfigArgs\n {\n Bucket = example.Name,\n FilenamePrefix = \"pre-\",\n FilenameSuffix = \"-_80332\",\n FilenameDatetimeFormat = \"YYYY-MM-DD/hh_mm_ssZ\",\n MaxBytes = 1000,\n MaxDuration = \"300s\",\n ServiceAccountEmail = storageWriteServiceAccount.Email,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n storageWriteServiceAccount,\n example,\n admin,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := storage.NewBucket(ctx, \"example\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"example-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleTopic, err := pubsub.NewTopic(ctx, \"example\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"example-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tstorageWriteServiceAccount, err := serviceaccount.NewAccount(ctx, \"storage_write_service_account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"example-stw\"),\n\t\t\tDisplayName: pulumi.String(\"Storage Write Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tadmin, err := storage.NewBucketIAMMember(ctx, \"admin\", \u0026storage.BucketIAMMemberArgs{\n\t\t\tBucket: example.Name,\n\t\t\tRole: pulumi.String(\"roles/storage.admin\"),\n\t\t\tMember: storageWriteServiceAccount.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewSubscription(ctx, \"example\", \u0026pubsub.SubscriptionArgs{\n\t\t\tName: pulumi.String(\"example-subscription\"),\n\t\t\tTopic: exampleTopic.ID(),\n\t\t\tCloudStorageConfig: \u0026pubsub.SubscriptionCloudStorageConfigArgs{\n\t\t\t\tBucket: example.Name,\n\t\t\t\tFilenamePrefix: pulumi.String(\"pre-\"),\n\t\t\t\tFilenameSuffix: pulumi.String(\"-_80332\"),\n\t\t\t\tFilenameDatetimeFormat: pulumi.String(\"YYYY-MM-DD/hh_mm_ssZ\"),\n\t\t\t\tMaxBytes: pulumi.Int(1000),\n\t\t\t\tMaxDuration: pulumi.String(\"300s\"),\n\t\t\t\tServiceAccountEmail: storageWriteServiceAccount.Email,\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tstorageWriteServiceAccount,\n\t\t\texample,\n\t\t\tadmin,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.storage.BucketIAMMember;\nimport com.pulumi.gcp.storage.BucketIAMMemberArgs;\nimport com.pulumi.gcp.pubsub.Subscription;\nimport com.pulumi.gcp.pubsub.SubscriptionArgs;\nimport com.pulumi.gcp.pubsub.inputs.SubscriptionCloudStorageConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Bucket(\"example\", BucketArgs.builder()\n .name(\"example-bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var exampleTopic = new Topic(\"exampleTopic\", TopicArgs.builder()\n .name(\"example-topic\")\n .build());\n\n var storageWriteServiceAccount = new Account(\"storageWriteServiceAccount\", AccountArgs.builder()\n .accountId(\"example-stw\")\n .displayName(\"Storage Write Service Account\")\n .build());\n\n var admin = new BucketIAMMember(\"admin\", BucketIAMMemberArgs.builder()\n .bucket(example.name())\n .role(\"roles/storage.admin\")\n .member(storageWriteServiceAccount.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var exampleSubscription = new Subscription(\"exampleSubscription\", SubscriptionArgs.builder()\n .name(\"example-subscription\")\n .topic(exampleTopic.id())\n .cloudStorageConfig(SubscriptionCloudStorageConfigArgs.builder()\n .bucket(example.name())\n .filenamePrefix(\"pre-\")\n .filenameSuffix(\"-_80332\")\n .filenameDatetimeFormat(\"YYYY-MM-DD/hh_mm_ssZ\")\n .maxBytes(1000)\n .maxDuration(\"300s\")\n .serviceAccountEmail(storageWriteServiceAccount.email())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n storageWriteServiceAccount,\n example,\n admin)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:storage:Bucket\n properties:\n name: example-bucket\n location: US\n uniformBucketLevelAccess: true\n exampleTopic:\n type: gcp:pubsub:Topic\n name: example\n properties:\n name: example-topic\n exampleSubscription:\n type: gcp:pubsub:Subscription\n name: example\n properties:\n name: example-subscription\n topic: ${exampleTopic.id}\n cloudStorageConfig:\n bucket: ${example.name}\n filenamePrefix: pre-\n filenameSuffix: -_80332\n filenameDatetimeFormat: YYYY-MM-DD/hh_mm_ssZ\n maxBytes: 1000\n maxDuration: 300s\n serviceAccountEmail: ${storageWriteServiceAccount.email}\n options:\n dependson:\n - ${storageWriteServiceAccount}\n - ${example}\n - ${admin}\n storageWriteServiceAccount:\n type: gcp:serviceaccount:Account\n name: storage_write_service_account\n properties:\n accountId: example-stw\n displayName: Storage Write Service Account\n admin:\n type: gcp:storage:BucketIAMMember\n properties:\n bucket: ${example.name}\n role: roles/storage.admin\n member: serviceAccount:${storageWriteServiceAccount.email}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSubscription can be imported using any of these accepted formats:\n\n* `projects/{{project}}/subscriptions/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Subscription can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:pubsub/subscription:Subscription default projects/{{project}}/subscriptions/{{name}}\n```\n\n```sh\n$ pulumi import gcp:pubsub/subscription:Subscription default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:pubsub/subscription:Subscription default {{name}}\n```\n\n", "properties": { "ackDeadlineSeconds": { "type": "integer", @@ -237543,7 +237543,7 @@ } }, "gcp:recaptcha/enterpriseKey:EnterpriseKey": { - "description": "The RecaptchaEnterprise Key resource\n\n## Example Usage\n\n### Android_key\nA basic test of recaptcha enterprise key that can be used by Android apps\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.recaptcha.EnterpriseKey(\"primary\", {\n displayName: \"display-name-one\",\n androidSettings: {\n allowAllPackageNames: true,\n allowedPackageNames: [],\n },\n project: \"my-project-name\",\n testingOptions: {\n testingScore: 0.8,\n },\n labels: {\n \"label-one\": \"value-one\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.recaptcha.EnterpriseKey(\"primary\",\n display_name=\"display-name-one\",\n android_settings={\n \"allow_all_package_names\": True,\n \"allowed_package_names\": [],\n },\n project=\"my-project-name\",\n testing_options={\n \"testing_score\": 0.8,\n },\n labels={\n \"label-one\": \"value-one\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.Recaptcha.EnterpriseKey(\"primary\", new()\n {\n DisplayName = \"display-name-one\",\n AndroidSettings = new Gcp.Recaptcha.Inputs.EnterpriseKeyAndroidSettingsArgs\n {\n AllowAllPackageNames = true,\n AllowedPackageNames = new() { },\n },\n Project = \"my-project-name\",\n TestingOptions = new Gcp.Recaptcha.Inputs.EnterpriseKeyTestingOptionsArgs\n {\n TestingScore = 0.8,\n },\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/recaptcha\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := recaptcha.NewEnterpriseKey(ctx, \"primary\", \u0026recaptcha.EnterpriseKeyArgs{\n\t\t\tDisplayName: pulumi.String(\"display-name-one\"),\n\t\t\tAndroidSettings: \u0026recaptcha.EnterpriseKeyAndroidSettingsArgs{\n\t\t\t\tAllowAllPackageNames: pulumi.Bool(true),\n\t\t\t\tAllowedPackageNames: pulumi.StringArray{},\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tTestingOptions: \u0026recaptcha.EnterpriseKeyTestingOptionsArgs{\n\t\t\t\tTestingScore: pulumi.Float64(0.8),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.recaptcha.EnterpriseKey;\nimport com.pulumi.gcp.recaptcha.EnterpriseKeyArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyAndroidSettingsArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyTestingOptionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new EnterpriseKey(\"primary\", EnterpriseKeyArgs.builder()\n .displayName(\"display-name-one\")\n .androidSettings(EnterpriseKeyAndroidSettingsArgs.builder()\n .allowAllPackageNames(true)\n .allowedPackageNames()\n .build())\n .project(\"my-project-name\")\n .testingOptions(EnterpriseKeyTestingOptionsArgs.builder()\n .testingScore(0.8)\n .build())\n .labels(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:recaptcha:EnterpriseKey\n properties:\n displayName: display-name-one\n androidSettings:\n allowAllPackageNames: true\n allowedPackageNames: []\n project: my-project-name\n testingOptions:\n testingScore: 0.8\n labels:\n label-one: value-one\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Ios_key\nA basic test of recaptcha enterprise key that can be used by iOS apps\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.recaptcha.EnterpriseKey(\"primary\", {\n displayName: \"display-name-one\",\n iosSettings: {\n allowAllBundleIds: true,\n allowedBundleIds: [],\n },\n project: \"my-project-name\",\n testingOptions: {\n testingScore: 1,\n },\n labels: {\n \"label-one\": \"value-one\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.recaptcha.EnterpriseKey(\"primary\",\n display_name=\"display-name-one\",\n ios_settings={\n \"allow_all_bundle_ids\": True,\n \"allowed_bundle_ids\": [],\n },\n project=\"my-project-name\",\n testing_options={\n \"testing_score\": 1,\n },\n labels={\n \"label-one\": \"value-one\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.Recaptcha.EnterpriseKey(\"primary\", new()\n {\n DisplayName = \"display-name-one\",\n IosSettings = new Gcp.Recaptcha.Inputs.EnterpriseKeyIosSettingsArgs\n {\n AllowAllBundleIds = true,\n AllowedBundleIds = new() { },\n },\n Project = \"my-project-name\",\n TestingOptions = new Gcp.Recaptcha.Inputs.EnterpriseKeyTestingOptionsArgs\n {\n TestingScore = 1,\n },\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/recaptcha\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := recaptcha.NewEnterpriseKey(ctx, \"primary\", \u0026recaptcha.EnterpriseKeyArgs{\n\t\t\tDisplayName: pulumi.String(\"display-name-one\"),\n\t\t\tIosSettings: \u0026recaptcha.EnterpriseKeyIosSettingsArgs{\n\t\t\t\tAllowAllBundleIds: pulumi.Bool(true),\n\t\t\t\tAllowedBundleIds: pulumi.StringArray{},\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tTestingOptions: \u0026recaptcha.EnterpriseKeyTestingOptionsArgs{\n\t\t\t\tTestingScore: pulumi.Float64(1),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.recaptcha.EnterpriseKey;\nimport com.pulumi.gcp.recaptcha.EnterpriseKeyArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyIosSettingsArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyTestingOptionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new EnterpriseKey(\"primary\", EnterpriseKeyArgs.builder()\n .displayName(\"display-name-one\")\n .iosSettings(EnterpriseKeyIosSettingsArgs.builder()\n .allowAllBundleIds(true)\n .allowedBundleIds()\n .build())\n .project(\"my-project-name\")\n .testingOptions(EnterpriseKeyTestingOptionsArgs.builder()\n .testingScore(1)\n .build())\n .labels(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:recaptcha:EnterpriseKey\n properties:\n displayName: display-name-one\n iosSettings:\n allowAllBundleIds: true\n allowedBundleIds: []\n project: my-project-name\n testingOptions:\n testingScore: 1\n labels:\n label-one: value-one\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Minimal_key\nA minimal test of recaptcha enterprise key\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.recaptcha.EnterpriseKey(\"primary\", {\n displayName: \"display-name-one\",\n project: \"my-project-name\",\n webSettings: {\n integrationType: \"SCORE\",\n allowAllDomains: true,\n },\n labels: {},\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.recaptcha.EnterpriseKey(\"primary\",\n display_name=\"display-name-one\",\n project=\"my-project-name\",\n web_settings={\n \"integration_type\": \"SCORE\",\n \"allow_all_domains\": True,\n },\n labels={})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.Recaptcha.EnterpriseKey(\"primary\", new()\n {\n DisplayName = \"display-name-one\",\n Project = \"my-project-name\",\n WebSettings = new Gcp.Recaptcha.Inputs.EnterpriseKeyWebSettingsArgs\n {\n IntegrationType = \"SCORE\",\n AllowAllDomains = true,\n },\n Labels = null,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/recaptcha\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := recaptcha.NewEnterpriseKey(ctx, \"primary\", \u0026recaptcha.EnterpriseKeyArgs{\n\t\t\tDisplayName: pulumi.String(\"display-name-one\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tWebSettings: \u0026recaptcha.EnterpriseKeyWebSettingsArgs{\n\t\t\t\tIntegrationType: pulumi.String(\"SCORE\"),\n\t\t\t\tAllowAllDomains: pulumi.Bool(true),\n\t\t\t},\n\t\t\tLabels: nil,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.recaptcha.EnterpriseKey;\nimport com.pulumi.gcp.recaptcha.EnterpriseKeyArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyWebSettingsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new EnterpriseKey(\"primary\", EnterpriseKeyArgs.builder()\n .displayName(\"display-name-one\")\n .project(\"my-project-name\")\n .webSettings(EnterpriseKeyWebSettingsArgs.builder()\n .integrationType(\"SCORE\")\n .allowAllDomains(true)\n .build())\n .labels()\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:recaptcha:EnterpriseKey\n properties:\n displayName: display-name-one\n project: my-project-name\n webSettings:\n integrationType: SCORE\n allowAllDomains: true\n labels: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Waf_key\nA basic test of recaptcha enterprise key that includes WAF settings\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.recaptcha.EnterpriseKey(\"primary\", {\n displayName: \"display-name-one\",\n project: \"my-project-name\",\n testingOptions: {\n testingChallenge: \"NOCAPTCHA\",\n testingScore: 0.5,\n },\n wafSettings: {\n wafFeature: \"CHALLENGE_PAGE\",\n wafService: \"CA\",\n },\n webSettings: {\n integrationType: \"INVISIBLE\",\n allowAllDomains: true,\n allowedDomains: [],\n challengeSecurityPreference: \"USABILITY\",\n },\n labels: {\n \"label-one\": \"value-one\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.recaptcha.EnterpriseKey(\"primary\",\n display_name=\"display-name-one\",\n project=\"my-project-name\",\n testing_options={\n \"testing_challenge\": \"NOCAPTCHA\",\n \"testing_score\": 0.5,\n },\n waf_settings={\n \"waf_feature\": \"CHALLENGE_PAGE\",\n \"waf_service\": \"CA\",\n },\n web_settings={\n \"integration_type\": \"INVISIBLE\",\n \"allow_all_domains\": True,\n \"allowed_domains\": [],\n \"challenge_security_preference\": \"USABILITY\",\n },\n labels={\n \"label-one\": \"value-one\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.Recaptcha.EnterpriseKey(\"primary\", new()\n {\n DisplayName = \"display-name-one\",\n Project = \"my-project-name\",\n TestingOptions = new Gcp.Recaptcha.Inputs.EnterpriseKeyTestingOptionsArgs\n {\n TestingChallenge = \"NOCAPTCHA\",\n TestingScore = 0.5,\n },\n WafSettings = new Gcp.Recaptcha.Inputs.EnterpriseKeyWafSettingsArgs\n {\n WafFeature = \"CHALLENGE_PAGE\",\n WafService = \"CA\",\n },\n WebSettings = new Gcp.Recaptcha.Inputs.EnterpriseKeyWebSettingsArgs\n {\n IntegrationType = \"INVISIBLE\",\n AllowAllDomains = true,\n AllowedDomains = new() { },\n ChallengeSecurityPreference = \"USABILITY\",\n },\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/recaptcha\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := recaptcha.NewEnterpriseKey(ctx, \"primary\", \u0026recaptcha.EnterpriseKeyArgs{\n\t\t\tDisplayName: pulumi.String(\"display-name-one\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tTestingOptions: \u0026recaptcha.EnterpriseKeyTestingOptionsArgs{\n\t\t\t\tTestingChallenge: pulumi.String(\"NOCAPTCHA\"),\n\t\t\t\tTestingScore: pulumi.Float64(0.5),\n\t\t\t},\n\t\t\tWafSettings: \u0026recaptcha.EnterpriseKeyWafSettingsArgs{\n\t\t\t\tWafFeature: pulumi.String(\"CHALLENGE_PAGE\"),\n\t\t\t\tWafService: pulumi.String(\"CA\"),\n\t\t\t},\n\t\t\tWebSettings: \u0026recaptcha.EnterpriseKeyWebSettingsArgs{\n\t\t\t\tIntegrationType: pulumi.String(\"INVISIBLE\"),\n\t\t\t\tAllowAllDomains: pulumi.Bool(true),\n\t\t\t\tAllowedDomains: pulumi.StringArray{},\n\t\t\t\tChallengeSecurityPreference: pulumi.String(\"USABILITY\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.recaptcha.EnterpriseKey;\nimport com.pulumi.gcp.recaptcha.EnterpriseKeyArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyTestingOptionsArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyWafSettingsArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyWebSettingsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new EnterpriseKey(\"primary\", EnterpriseKeyArgs.builder()\n .displayName(\"display-name-one\")\n .project(\"my-project-name\")\n .testingOptions(EnterpriseKeyTestingOptionsArgs.builder()\n .testingChallenge(\"NOCAPTCHA\")\n .testingScore(0.5)\n .build())\n .wafSettings(EnterpriseKeyWafSettingsArgs.builder()\n .wafFeature(\"CHALLENGE_PAGE\")\n .wafService(\"CA\")\n .build())\n .webSettings(EnterpriseKeyWebSettingsArgs.builder()\n .integrationType(\"INVISIBLE\")\n .allowAllDomains(true)\n .allowedDomains()\n .challengeSecurityPreference(\"USABILITY\")\n .build())\n .labels(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:recaptcha:EnterpriseKey\n properties:\n displayName: display-name-one\n project: my-project-name\n testingOptions:\n testingChallenge: NOCAPTCHA\n testingScore: 0.5\n wafSettings:\n wafFeature: CHALLENGE_PAGE\n wafService: CA\n webSettings:\n integrationType: INVISIBLE\n allowAllDomains: true\n allowedDomains: []\n challengeSecurityPreference: USABILITY\n labels:\n label-one: value-one\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Web_key\nA basic test of recaptcha enterprise key that can be used by websites\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.recaptcha.EnterpriseKey(\"primary\", {\n displayName: \"display-name-one\",\n project: \"my-project-name\",\n testingOptions: {\n testingChallenge: \"NOCAPTCHA\",\n testingScore: 0.5,\n },\n webSettings: {\n integrationType: \"CHECKBOX\",\n allowAllDomains: true,\n allowedDomains: [],\n challengeSecurityPreference: \"USABILITY\",\n },\n labels: {\n \"label-one\": \"value-one\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.recaptcha.EnterpriseKey(\"primary\",\n display_name=\"display-name-one\",\n project=\"my-project-name\",\n testing_options={\n \"testing_challenge\": \"NOCAPTCHA\",\n \"testing_score\": 0.5,\n },\n web_settings={\n \"integration_type\": \"CHECKBOX\",\n \"allow_all_domains\": True,\n \"allowed_domains\": [],\n \"challenge_security_preference\": \"USABILITY\",\n },\n labels={\n \"label-one\": \"value-one\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.Recaptcha.EnterpriseKey(\"primary\", new()\n {\n DisplayName = \"display-name-one\",\n Project = \"my-project-name\",\n TestingOptions = new Gcp.Recaptcha.Inputs.EnterpriseKeyTestingOptionsArgs\n {\n TestingChallenge = \"NOCAPTCHA\",\n TestingScore = 0.5,\n },\n WebSettings = new Gcp.Recaptcha.Inputs.EnterpriseKeyWebSettingsArgs\n {\n IntegrationType = \"CHECKBOX\",\n AllowAllDomains = true,\n AllowedDomains = new() { },\n ChallengeSecurityPreference = \"USABILITY\",\n },\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/recaptcha\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := recaptcha.NewEnterpriseKey(ctx, \"primary\", \u0026recaptcha.EnterpriseKeyArgs{\n\t\t\tDisplayName: pulumi.String(\"display-name-one\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tTestingOptions: \u0026recaptcha.EnterpriseKeyTestingOptionsArgs{\n\t\t\t\tTestingChallenge: pulumi.String(\"NOCAPTCHA\"),\n\t\t\t\tTestingScore: pulumi.Float64(0.5),\n\t\t\t},\n\t\t\tWebSettings: \u0026recaptcha.EnterpriseKeyWebSettingsArgs{\n\t\t\t\tIntegrationType: pulumi.String(\"CHECKBOX\"),\n\t\t\t\tAllowAllDomains: pulumi.Bool(true),\n\t\t\t\tAllowedDomains: pulumi.StringArray{},\n\t\t\t\tChallengeSecurityPreference: pulumi.String(\"USABILITY\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.recaptcha.EnterpriseKey;\nimport com.pulumi.gcp.recaptcha.EnterpriseKeyArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyTestingOptionsArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyWebSettingsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new EnterpriseKey(\"primary\", EnterpriseKeyArgs.builder()\n .displayName(\"display-name-one\")\n .project(\"my-project-name\")\n .testingOptions(EnterpriseKeyTestingOptionsArgs.builder()\n .testingChallenge(\"NOCAPTCHA\")\n .testingScore(0.5)\n .build())\n .webSettings(EnterpriseKeyWebSettingsArgs.builder()\n .integrationType(\"CHECKBOX\")\n .allowAllDomains(true)\n .allowedDomains()\n .challengeSecurityPreference(\"USABILITY\")\n .build())\n .labels(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:recaptcha:EnterpriseKey\n properties:\n displayName: display-name-one\n project: my-project-name\n testingOptions:\n testingChallenge: NOCAPTCHA\n testingScore: 0.5\n webSettings:\n integrationType: CHECKBOX\n allowAllDomains: true\n allowedDomains: []\n challengeSecurityPreference: USABILITY\n labels:\n label-one: value-one\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Web_score_key\nA basic test of recaptcha enterprise key with score integration type that can be used by websites\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.recaptcha.EnterpriseKey(\"primary\", {\n displayName: \"display-name-one\",\n project: \"my-project-name\",\n testingOptions: {\n testingScore: 0.5,\n },\n webSettings: {\n integrationType: \"SCORE\",\n allowAllDomains: true,\n allowAmpTraffic: false,\n allowedDomains: [],\n },\n labels: {\n \"label-one\": \"value-one\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.recaptcha.EnterpriseKey(\"primary\",\n display_name=\"display-name-one\",\n project=\"my-project-name\",\n testing_options={\n \"testing_score\": 0.5,\n },\n web_settings={\n \"integration_type\": \"SCORE\",\n \"allow_all_domains\": True,\n \"allow_amp_traffic\": False,\n \"allowed_domains\": [],\n },\n labels={\n \"label-one\": \"value-one\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.Recaptcha.EnterpriseKey(\"primary\", new()\n {\n DisplayName = \"display-name-one\",\n Project = \"my-project-name\",\n TestingOptions = new Gcp.Recaptcha.Inputs.EnterpriseKeyTestingOptionsArgs\n {\n TestingScore = 0.5,\n },\n WebSettings = new Gcp.Recaptcha.Inputs.EnterpriseKeyWebSettingsArgs\n {\n IntegrationType = \"SCORE\",\n AllowAllDomains = true,\n AllowAmpTraffic = false,\n AllowedDomains = new() { },\n },\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/recaptcha\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := recaptcha.NewEnterpriseKey(ctx, \"primary\", \u0026recaptcha.EnterpriseKeyArgs{\n\t\t\tDisplayName: pulumi.String(\"display-name-one\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tTestingOptions: \u0026recaptcha.EnterpriseKeyTestingOptionsArgs{\n\t\t\t\tTestingScore: pulumi.Float64(0.5),\n\t\t\t},\n\t\t\tWebSettings: \u0026recaptcha.EnterpriseKeyWebSettingsArgs{\n\t\t\t\tIntegrationType: pulumi.String(\"SCORE\"),\n\t\t\t\tAllowAllDomains: pulumi.Bool(true),\n\t\t\t\tAllowAmpTraffic: pulumi.Bool(false),\n\t\t\t\tAllowedDomains: pulumi.StringArray{},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.recaptcha.EnterpriseKey;\nimport com.pulumi.gcp.recaptcha.EnterpriseKeyArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyTestingOptionsArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyWebSettingsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new EnterpriseKey(\"primary\", EnterpriseKeyArgs.builder()\n .displayName(\"display-name-one\")\n .project(\"my-project-name\")\n .testingOptions(EnterpriseKeyTestingOptionsArgs.builder()\n .testingScore(0.5)\n .build())\n .webSettings(EnterpriseKeyWebSettingsArgs.builder()\n .integrationType(\"SCORE\")\n .allowAllDomains(true)\n .allowAmpTraffic(false)\n .allowedDomains()\n .build())\n .labels(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:recaptcha:EnterpriseKey\n properties:\n displayName: display-name-one\n project: my-project-name\n testingOptions:\n testingScore: 0.5\n webSettings:\n integrationType: SCORE\n allowAllDomains: true\n allowAmpTraffic: false\n allowedDomains: []\n labels:\n label-one: value-one\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nKey can be imported using any of these accepted formats:\n\n* `projects/{{project}}/keys/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Key can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:recaptcha/enterpriseKey:EnterpriseKey default projects/{{project}}/keys/{{name}}\n```\n\n```sh\n$ pulumi import gcp:recaptcha/enterpriseKey:EnterpriseKey default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:recaptcha/enterpriseKey:EnterpriseKey default {{name}}\n```\n\n", + "description": "The RecaptchaEnterprise Key resource\n\n## Example Usage\n\n### Android_key\nA basic test of recaptcha enterprise key that can be used by Android apps\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.recaptcha.EnterpriseKey(\"primary\", {\n displayName: \"display-name-one\",\n androidSettings: {\n allowAllPackageNames: true,\n allowedPackageNames: [],\n },\n project: \"my-project-name\",\n testingOptions: {\n testingScore: 0.8,\n },\n labels: {\n \"label-one\": \"value-one\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.recaptcha.EnterpriseKey(\"primary\",\n display_name=\"display-name-one\",\n android_settings={\n \"allow_all_package_names\": True,\n \"allowed_package_names\": [],\n },\n project=\"my-project-name\",\n testing_options={\n \"testing_score\": 0.8,\n },\n labels={\n \"label-one\": \"value-one\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.Recaptcha.EnterpriseKey(\"primary\", new()\n {\n DisplayName = \"display-name-one\",\n AndroidSettings = new Gcp.Recaptcha.Inputs.EnterpriseKeyAndroidSettingsArgs\n {\n AllowAllPackageNames = true,\n AllowedPackageNames = new() { },\n },\n Project = \"my-project-name\",\n TestingOptions = new Gcp.Recaptcha.Inputs.EnterpriseKeyTestingOptionsArgs\n {\n TestingScore = 0.8,\n },\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/recaptcha\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := recaptcha.NewEnterpriseKey(ctx, \"primary\", \u0026recaptcha.EnterpriseKeyArgs{\n\t\t\tDisplayName: pulumi.String(\"display-name-one\"),\n\t\t\tAndroidSettings: \u0026recaptcha.EnterpriseKeyAndroidSettingsArgs{\n\t\t\t\tAllowAllPackageNames: pulumi.Bool(true),\n\t\t\t\tAllowedPackageNames: pulumi.StringArray{},\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tTestingOptions: \u0026recaptcha.EnterpriseKeyTestingOptionsArgs{\n\t\t\t\tTestingScore: pulumi.Float64(0.8),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.recaptcha.EnterpriseKey;\nimport com.pulumi.gcp.recaptcha.EnterpriseKeyArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyAndroidSettingsArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyTestingOptionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new EnterpriseKey(\"primary\", EnterpriseKeyArgs.builder()\n .displayName(\"display-name-one\")\n .androidSettings(EnterpriseKeyAndroidSettingsArgs.builder()\n .allowAllPackageNames(true)\n .allowedPackageNames()\n .build())\n .project(\"my-project-name\")\n .testingOptions(EnterpriseKeyTestingOptionsArgs.builder()\n .testingScore(0.8)\n .build())\n .labels(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:recaptcha:EnterpriseKey\n properties:\n displayName: display-name-one\n androidSettings:\n allowAllPackageNames: true\n allowedPackageNames: []\n project: my-project-name\n testingOptions:\n testingScore: 0.8\n labels:\n label-one: value-one\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Ios_key\nA basic test of recaptcha enterprise key that can be used by iOS apps\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.recaptcha.EnterpriseKey(\"primary\", {\n displayName: \"display-name-one\",\n iosSettings: {\n allowAllBundleIds: true,\n allowedBundleIds: [],\n },\n project: \"my-project-name\",\n testingOptions: {\n testingScore: 1,\n },\n labels: {\n \"label-one\": \"value-one\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.recaptcha.EnterpriseKey(\"primary\",\n display_name=\"display-name-one\",\n ios_settings={\n \"allow_all_bundle_ids\": True,\n \"allowed_bundle_ids\": [],\n },\n project=\"my-project-name\",\n testing_options={\n \"testing_score\": 1,\n },\n labels={\n \"label-one\": \"value-one\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.Recaptcha.EnterpriseKey(\"primary\", new()\n {\n DisplayName = \"display-name-one\",\n IosSettings = new Gcp.Recaptcha.Inputs.EnterpriseKeyIosSettingsArgs\n {\n AllowAllBundleIds = true,\n AllowedBundleIds = new() { },\n },\n Project = \"my-project-name\",\n TestingOptions = new Gcp.Recaptcha.Inputs.EnterpriseKeyTestingOptionsArgs\n {\n TestingScore = 1,\n },\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/recaptcha\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := recaptcha.NewEnterpriseKey(ctx, \"primary\", \u0026recaptcha.EnterpriseKeyArgs{\n\t\t\tDisplayName: pulumi.String(\"display-name-one\"),\n\t\t\tIosSettings: \u0026recaptcha.EnterpriseKeyIosSettingsArgs{\n\t\t\t\tAllowAllBundleIds: pulumi.Bool(true),\n\t\t\t\tAllowedBundleIds: pulumi.StringArray{},\n\t\t\t},\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tTestingOptions: \u0026recaptcha.EnterpriseKeyTestingOptionsArgs{\n\t\t\t\tTestingScore: pulumi.Float64(1),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.recaptcha.EnterpriseKey;\nimport com.pulumi.gcp.recaptcha.EnterpriseKeyArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyIosSettingsArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyTestingOptionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new EnterpriseKey(\"primary\", EnterpriseKeyArgs.builder()\n .displayName(\"display-name-one\")\n .iosSettings(EnterpriseKeyIosSettingsArgs.builder()\n .allowAllBundleIds(true)\n .allowedBundleIds()\n .build())\n .project(\"my-project-name\")\n .testingOptions(EnterpriseKeyTestingOptionsArgs.builder()\n .testingScore(1)\n .build())\n .labels(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:recaptcha:EnterpriseKey\n properties:\n displayName: display-name-one\n iosSettings:\n allowAllBundleIds: true\n allowedBundleIds: []\n project: my-project-name\n testingOptions:\n testingScore: 1\n labels:\n label-one: value-one\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Minimal_key\nA minimal test of recaptcha enterprise key\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.recaptcha.EnterpriseKey(\"primary\", {\n displayName: \"display-name-one\",\n project: \"my-project-name\",\n webSettings: {\n integrationType: \"SCORE\",\n allowAllDomains: true,\n },\n labels: {},\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.recaptcha.EnterpriseKey(\"primary\",\n display_name=\"display-name-one\",\n project=\"my-project-name\",\n web_settings={\n \"integration_type\": \"SCORE\",\n \"allow_all_domains\": True,\n },\n labels={})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.Recaptcha.EnterpriseKey(\"primary\", new()\n {\n DisplayName = \"display-name-one\",\n Project = \"my-project-name\",\n WebSettings = new Gcp.Recaptcha.Inputs.EnterpriseKeyWebSettingsArgs\n {\n IntegrationType = \"SCORE\",\n AllowAllDomains = true,\n },\n Labels = null,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/recaptcha\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := recaptcha.NewEnterpriseKey(ctx, \"primary\", \u0026recaptcha.EnterpriseKeyArgs{\n\t\t\tDisplayName: pulumi.String(\"display-name-one\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tWebSettings: \u0026recaptcha.EnterpriseKeyWebSettingsArgs{\n\t\t\t\tIntegrationType: pulumi.String(\"SCORE\"),\n\t\t\t\tAllowAllDomains: pulumi.Bool(true),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.recaptcha.EnterpriseKey;\nimport com.pulumi.gcp.recaptcha.EnterpriseKeyArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyWebSettingsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new EnterpriseKey(\"primary\", EnterpriseKeyArgs.builder()\n .displayName(\"display-name-one\")\n .project(\"my-project-name\")\n .webSettings(EnterpriseKeyWebSettingsArgs.builder()\n .integrationType(\"SCORE\")\n .allowAllDomains(true)\n .build())\n .labels()\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:recaptcha:EnterpriseKey\n properties:\n displayName: display-name-one\n project: my-project-name\n webSettings:\n integrationType: SCORE\n allowAllDomains: true\n labels: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Waf_key\nA basic test of recaptcha enterprise key that includes WAF settings\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.recaptcha.EnterpriseKey(\"primary\", {\n displayName: \"display-name-one\",\n project: \"my-project-name\",\n testingOptions: {\n testingChallenge: \"NOCAPTCHA\",\n testingScore: 0.5,\n },\n wafSettings: {\n wafFeature: \"CHALLENGE_PAGE\",\n wafService: \"CA\",\n },\n webSettings: {\n integrationType: \"INVISIBLE\",\n allowAllDomains: true,\n allowedDomains: [],\n challengeSecurityPreference: \"USABILITY\",\n },\n labels: {\n \"label-one\": \"value-one\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.recaptcha.EnterpriseKey(\"primary\",\n display_name=\"display-name-one\",\n project=\"my-project-name\",\n testing_options={\n \"testing_challenge\": \"NOCAPTCHA\",\n \"testing_score\": 0.5,\n },\n waf_settings={\n \"waf_feature\": \"CHALLENGE_PAGE\",\n \"waf_service\": \"CA\",\n },\n web_settings={\n \"integration_type\": \"INVISIBLE\",\n \"allow_all_domains\": True,\n \"allowed_domains\": [],\n \"challenge_security_preference\": \"USABILITY\",\n },\n labels={\n \"label-one\": \"value-one\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.Recaptcha.EnterpriseKey(\"primary\", new()\n {\n DisplayName = \"display-name-one\",\n Project = \"my-project-name\",\n TestingOptions = new Gcp.Recaptcha.Inputs.EnterpriseKeyTestingOptionsArgs\n {\n TestingChallenge = \"NOCAPTCHA\",\n TestingScore = 0.5,\n },\n WafSettings = new Gcp.Recaptcha.Inputs.EnterpriseKeyWafSettingsArgs\n {\n WafFeature = \"CHALLENGE_PAGE\",\n WafService = \"CA\",\n },\n WebSettings = new Gcp.Recaptcha.Inputs.EnterpriseKeyWebSettingsArgs\n {\n IntegrationType = \"INVISIBLE\",\n AllowAllDomains = true,\n AllowedDomains = new() { },\n ChallengeSecurityPreference = \"USABILITY\",\n },\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/recaptcha\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := recaptcha.NewEnterpriseKey(ctx, \"primary\", \u0026recaptcha.EnterpriseKeyArgs{\n\t\t\tDisplayName: pulumi.String(\"display-name-one\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tTestingOptions: \u0026recaptcha.EnterpriseKeyTestingOptionsArgs{\n\t\t\t\tTestingChallenge: pulumi.String(\"NOCAPTCHA\"),\n\t\t\t\tTestingScore: pulumi.Float64(0.5),\n\t\t\t},\n\t\t\tWafSettings: \u0026recaptcha.EnterpriseKeyWafSettingsArgs{\n\t\t\t\tWafFeature: pulumi.String(\"CHALLENGE_PAGE\"),\n\t\t\t\tWafService: pulumi.String(\"CA\"),\n\t\t\t},\n\t\t\tWebSettings: \u0026recaptcha.EnterpriseKeyWebSettingsArgs{\n\t\t\t\tIntegrationType: pulumi.String(\"INVISIBLE\"),\n\t\t\t\tAllowAllDomains: pulumi.Bool(true),\n\t\t\t\tAllowedDomains: pulumi.StringArray{},\n\t\t\t\tChallengeSecurityPreference: pulumi.String(\"USABILITY\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.recaptcha.EnterpriseKey;\nimport com.pulumi.gcp.recaptcha.EnterpriseKeyArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyTestingOptionsArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyWafSettingsArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyWebSettingsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new EnterpriseKey(\"primary\", EnterpriseKeyArgs.builder()\n .displayName(\"display-name-one\")\n .project(\"my-project-name\")\n .testingOptions(EnterpriseKeyTestingOptionsArgs.builder()\n .testingChallenge(\"NOCAPTCHA\")\n .testingScore(0.5)\n .build())\n .wafSettings(EnterpriseKeyWafSettingsArgs.builder()\n .wafFeature(\"CHALLENGE_PAGE\")\n .wafService(\"CA\")\n .build())\n .webSettings(EnterpriseKeyWebSettingsArgs.builder()\n .integrationType(\"INVISIBLE\")\n .allowAllDomains(true)\n .allowedDomains()\n .challengeSecurityPreference(\"USABILITY\")\n .build())\n .labels(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:recaptcha:EnterpriseKey\n properties:\n displayName: display-name-one\n project: my-project-name\n testingOptions:\n testingChallenge: NOCAPTCHA\n testingScore: 0.5\n wafSettings:\n wafFeature: CHALLENGE_PAGE\n wafService: CA\n webSettings:\n integrationType: INVISIBLE\n allowAllDomains: true\n allowedDomains: []\n challengeSecurityPreference: USABILITY\n labels:\n label-one: value-one\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Web_key\nA basic test of recaptcha enterprise key that can be used by websites\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.recaptcha.EnterpriseKey(\"primary\", {\n displayName: \"display-name-one\",\n project: \"my-project-name\",\n testingOptions: {\n testingChallenge: \"NOCAPTCHA\",\n testingScore: 0.5,\n },\n webSettings: {\n integrationType: \"CHECKBOX\",\n allowAllDomains: true,\n allowedDomains: [],\n challengeSecurityPreference: \"USABILITY\",\n },\n labels: {\n \"label-one\": \"value-one\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.recaptcha.EnterpriseKey(\"primary\",\n display_name=\"display-name-one\",\n project=\"my-project-name\",\n testing_options={\n \"testing_challenge\": \"NOCAPTCHA\",\n \"testing_score\": 0.5,\n },\n web_settings={\n \"integration_type\": \"CHECKBOX\",\n \"allow_all_domains\": True,\n \"allowed_domains\": [],\n \"challenge_security_preference\": \"USABILITY\",\n },\n labels={\n \"label-one\": \"value-one\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.Recaptcha.EnterpriseKey(\"primary\", new()\n {\n DisplayName = \"display-name-one\",\n Project = \"my-project-name\",\n TestingOptions = new Gcp.Recaptcha.Inputs.EnterpriseKeyTestingOptionsArgs\n {\n TestingChallenge = \"NOCAPTCHA\",\n TestingScore = 0.5,\n },\n WebSettings = new Gcp.Recaptcha.Inputs.EnterpriseKeyWebSettingsArgs\n {\n IntegrationType = \"CHECKBOX\",\n AllowAllDomains = true,\n AllowedDomains = new() { },\n ChallengeSecurityPreference = \"USABILITY\",\n },\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/recaptcha\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := recaptcha.NewEnterpriseKey(ctx, \"primary\", \u0026recaptcha.EnterpriseKeyArgs{\n\t\t\tDisplayName: pulumi.String(\"display-name-one\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tTestingOptions: \u0026recaptcha.EnterpriseKeyTestingOptionsArgs{\n\t\t\t\tTestingChallenge: pulumi.String(\"NOCAPTCHA\"),\n\t\t\t\tTestingScore: pulumi.Float64(0.5),\n\t\t\t},\n\t\t\tWebSettings: \u0026recaptcha.EnterpriseKeyWebSettingsArgs{\n\t\t\t\tIntegrationType: pulumi.String(\"CHECKBOX\"),\n\t\t\t\tAllowAllDomains: pulumi.Bool(true),\n\t\t\t\tAllowedDomains: pulumi.StringArray{},\n\t\t\t\tChallengeSecurityPreference: pulumi.String(\"USABILITY\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.recaptcha.EnterpriseKey;\nimport com.pulumi.gcp.recaptcha.EnterpriseKeyArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyTestingOptionsArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyWebSettingsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new EnterpriseKey(\"primary\", EnterpriseKeyArgs.builder()\n .displayName(\"display-name-one\")\n .project(\"my-project-name\")\n .testingOptions(EnterpriseKeyTestingOptionsArgs.builder()\n .testingChallenge(\"NOCAPTCHA\")\n .testingScore(0.5)\n .build())\n .webSettings(EnterpriseKeyWebSettingsArgs.builder()\n .integrationType(\"CHECKBOX\")\n .allowAllDomains(true)\n .allowedDomains()\n .challengeSecurityPreference(\"USABILITY\")\n .build())\n .labels(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:recaptcha:EnterpriseKey\n properties:\n displayName: display-name-one\n project: my-project-name\n testingOptions:\n testingChallenge: NOCAPTCHA\n testingScore: 0.5\n webSettings:\n integrationType: CHECKBOX\n allowAllDomains: true\n allowedDomains: []\n challengeSecurityPreference: USABILITY\n labels:\n label-one: value-one\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Web_score_key\nA basic test of recaptcha enterprise key with score integration type that can be used by websites\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary = new gcp.recaptcha.EnterpriseKey(\"primary\", {\n displayName: \"display-name-one\",\n project: \"my-project-name\",\n testingOptions: {\n testingScore: 0.5,\n },\n webSettings: {\n integrationType: \"SCORE\",\n allowAllDomains: true,\n allowAmpTraffic: false,\n allowedDomains: [],\n },\n labels: {\n \"label-one\": \"value-one\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary = gcp.recaptcha.EnterpriseKey(\"primary\",\n display_name=\"display-name-one\",\n project=\"my-project-name\",\n testing_options={\n \"testing_score\": 0.5,\n },\n web_settings={\n \"integration_type\": \"SCORE\",\n \"allow_all_domains\": True,\n \"allow_amp_traffic\": False,\n \"allowed_domains\": [],\n },\n labels={\n \"label-one\": \"value-one\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary = new Gcp.Recaptcha.EnterpriseKey(\"primary\", new()\n {\n DisplayName = \"display-name-one\",\n Project = \"my-project-name\",\n TestingOptions = new Gcp.Recaptcha.Inputs.EnterpriseKeyTestingOptionsArgs\n {\n TestingScore = 0.5,\n },\n WebSettings = new Gcp.Recaptcha.Inputs.EnterpriseKeyWebSettingsArgs\n {\n IntegrationType = \"SCORE\",\n AllowAllDomains = true,\n AllowAmpTraffic = false,\n AllowedDomains = new() { },\n },\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/recaptcha\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := recaptcha.NewEnterpriseKey(ctx, \"primary\", \u0026recaptcha.EnterpriseKeyArgs{\n\t\t\tDisplayName: pulumi.String(\"display-name-one\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tTestingOptions: \u0026recaptcha.EnterpriseKeyTestingOptionsArgs{\n\t\t\t\tTestingScore: pulumi.Float64(0.5),\n\t\t\t},\n\t\t\tWebSettings: \u0026recaptcha.EnterpriseKeyWebSettingsArgs{\n\t\t\t\tIntegrationType: pulumi.String(\"SCORE\"),\n\t\t\t\tAllowAllDomains: pulumi.Bool(true),\n\t\t\t\tAllowAmpTraffic: pulumi.Bool(false),\n\t\t\t\tAllowedDomains: pulumi.StringArray{},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.recaptcha.EnterpriseKey;\nimport com.pulumi.gcp.recaptcha.EnterpriseKeyArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyTestingOptionsArgs;\nimport com.pulumi.gcp.recaptcha.inputs.EnterpriseKeyWebSettingsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var primary = new EnterpriseKey(\"primary\", EnterpriseKeyArgs.builder()\n .displayName(\"display-name-one\")\n .project(\"my-project-name\")\n .testingOptions(EnterpriseKeyTestingOptionsArgs.builder()\n .testingScore(0.5)\n .build())\n .webSettings(EnterpriseKeyWebSettingsArgs.builder()\n .integrationType(\"SCORE\")\n .allowAllDomains(true)\n .allowAmpTraffic(false)\n .allowedDomains()\n .build())\n .labels(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:recaptcha:EnterpriseKey\n properties:\n displayName: display-name-one\n project: my-project-name\n testingOptions:\n testingScore: 0.5\n webSettings:\n integrationType: SCORE\n allowAllDomains: true\n allowAmpTraffic: false\n allowedDomains: []\n labels:\n label-one: value-one\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nKey can be imported using any of these accepted formats:\n\n* `projects/{{project}}/keys/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Key can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:recaptcha/enterpriseKey:EnterpriseKey default projects/{{project}}/keys/{{name}}\n```\n\n```sh\n$ pulumi import gcp:recaptcha/enterpriseKey:EnterpriseKey default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:recaptcha/enterpriseKey:EnterpriseKey default {{name}}\n```\n\n", "properties": { "androidSettings": { "$ref": "#/types/gcp:recaptcha/EnterpriseKeyAndroidSettings:EnterpriseKeyAndroidSettings", @@ -239084,7 +239084,7 @@ } }, "gcp:secretmanager/regionalSecret:RegionalSecret": { - "description": "A Regional Secret is a logical secret whose value and versions can be created and accessed within a region only.\n\n\nTo get more information about RegionalSecret, see:\n\n* [API documentation](https://cloud.google.com/secret-manager/docs/reference/rest/v1/projects.secrets)\n\n## Example Usage\n\n### Regional Secret Config Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst regional_secret_basic = new gcp.secretmanager.RegionalSecret(\"regional-secret-basic\", {\n secretId: \"tf-reg-secret\",\n location: \"us-central1\",\n labels: {\n label: \"my-label\",\n },\n annotations: {\n key1: \"value1\",\n key2: \"value2\",\n key3: \"value3\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nregional_secret_basic = gcp.secretmanager.RegionalSecret(\"regional-secret-basic\",\n secret_id=\"tf-reg-secret\",\n location=\"us-central1\",\n labels={\n \"label\": \"my-label\",\n },\n annotations={\n \"key1\": \"value1\",\n \"key2\": \"value2\",\n \"key3\": \"value3\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var regional_secret_basic = new Gcp.SecretManager.RegionalSecret(\"regional-secret-basic\", new()\n {\n SecretId = \"tf-reg-secret\",\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"my-label\" },\n },\n Annotations = \n {\n { \"key1\", \"value1\" },\n { \"key2\", \"value2\" },\n { \"key3\", \"value3\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := secretmanager.NewRegionalSecret(ctx, \"regional-secret-basic\", \u0026secretmanager.RegionalSecretArgs{\n\t\t\tSecretId: pulumi.String(\"tf-reg-secret\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"my-label\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"key1\": pulumi.String(\"value1\"),\n\t\t\t\t\"key2\": pulumi.String(\"value2\"),\n\t\t\t\t\"key3\": pulumi.String(\"value3\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.RegionalSecret;\nimport com.pulumi.gcp.secretmanager.RegionalSecretArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var regional_secret_basic = new RegionalSecret(\"regional-secret-basic\", RegionalSecretArgs.builder()\n .secretId(\"tf-reg-secret\")\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"my-label\"))\n .annotations(Map.ofEntries(\n Map.entry(\"key1\", \"value1\"),\n Map.entry(\"key2\", \"value2\"),\n Map.entry(\"key3\", \"value3\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regional-secret-basic:\n type: gcp:secretmanager:RegionalSecret\n properties:\n secretId: tf-reg-secret\n location: us-central1\n labels:\n label: my-label\n annotations:\n key1: value1\n key2: value2\n key3: value3\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Regional Secret With Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst kms_secret_binding = new gcp.kms.CryptoKeyIAMMember(\"kms-secret-binding\", {\n cryptoKeyId: \"kms-key\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-secretmanager.iam.gserviceaccount.com`),\n});\nconst regional_secret_with_cmek = new gcp.secretmanager.RegionalSecret(\"regional-secret-with-cmek\", {\n secretId: \"tf-reg-secret\",\n location: \"us-central1\",\n customerManagedEncryption: {\n kmsKeyName: \"kms-key\",\n },\n}, {\n dependsOn: [kms_secret_binding],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nkms_secret_binding = gcp.kms.CryptoKeyIAMMember(\"kms-secret-binding\",\n crypto_key_id=\"kms-key\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-secretmanager.iam.gserviceaccount.com\")\nregional_secret_with_cmek = gcp.secretmanager.RegionalSecret(\"regional-secret-with-cmek\",\n secret_id=\"tf-reg-secret\",\n location=\"us-central1\",\n customer_managed_encryption={\n \"kms_key_name\": \"kms-key\",\n },\n opts = pulumi.ResourceOptions(depends_on=[kms_secret_binding]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var kms_secret_binding = new Gcp.Kms.CryptoKeyIAMMember(\"kms-secret-binding\", new()\n {\n CryptoKeyId = \"kms-key\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-secretmanager.iam.gserviceaccount.com\",\n });\n\n var regional_secret_with_cmek = new Gcp.SecretManager.RegionalSecret(\"regional-secret-with-cmek\", new()\n {\n SecretId = \"tf-reg-secret\",\n Location = \"us-central1\",\n CustomerManagedEncryption = new Gcp.SecretManager.Inputs.RegionalSecretCustomerManagedEncryptionArgs\n {\n KmsKeyName = \"kms-key\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n kms_secret_binding,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kms.NewCryptoKeyIAMMember(ctx, \"kms-secret-binding\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"kms-key\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-secretmanager.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewRegionalSecret(ctx, \"regional-secret-with-cmek\", \u0026secretmanager.RegionalSecretArgs{\n\t\t\tSecretId: pulumi.String(\"tf-reg-secret\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tCustomerManagedEncryption: \u0026secretmanager.RegionalSecretCustomerManagedEncryptionArgs{\n\t\t\t\tKmsKeyName: pulumi.String(\"kms-key\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tkms_secret_binding,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.secretmanager.RegionalSecret;\nimport com.pulumi.gcp.secretmanager.RegionalSecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.RegionalSecretCustomerManagedEncryptionArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var kms_secret_binding = new CryptoKeyIAMMember(\"kms-secret-binding\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(\"kms-key\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-secretmanager.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var regional_secret_with_cmek = new RegionalSecret(\"regional-secret-with-cmek\", RegionalSecretArgs.builder()\n .secretId(\"tf-reg-secret\")\n .location(\"us-central1\")\n .customerManagedEncryption(RegionalSecretCustomerManagedEncryptionArgs.builder()\n .kmsKeyName(\"kms-key\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(kms_secret_binding)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n kms-secret-binding:\n type: gcp:kms:CryptoKeyIAMMember\n properties:\n cryptoKeyId: kms-key\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-secretmanager.iam.gserviceaccount.com\n regional-secret-with-cmek:\n type: gcp:secretmanager:RegionalSecret\n properties:\n secretId: tf-reg-secret\n location: us-central1\n customerManagedEncryption:\n kmsKeyName: kms-key\n options:\n dependson:\n - ${[\"kms-secret-binding\"]}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Regional Secret With Rotation\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"tf-topic\"});\nconst secretsManagerAccess = new gcp.pubsub.TopicIAMMember(\"secrets_manager_access\", {\n topic: topic.name,\n role: \"roles/pubsub.publisher\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-secretmanager.iam.gserviceaccount.com`),\n});\nconst regional_secret_with_rotation = new gcp.secretmanager.RegionalSecret(\"regional-secret-with-rotation\", {\n secretId: \"tf-reg-secret\",\n location: \"us-central1\",\n topics: [{\n name: topic.id,\n }],\n rotation: {\n rotationPeriod: \"3600s\",\n nextRotationTime: \"2045-11-30T00:00:00Z\",\n },\n}, {\n dependsOn: [secretsManagerAccess],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ntopic = gcp.pubsub.Topic(\"topic\", name=\"tf-topic\")\nsecrets_manager_access = gcp.pubsub.TopicIAMMember(\"secrets_manager_access\",\n topic=topic.name,\n role=\"roles/pubsub.publisher\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-secretmanager.iam.gserviceaccount.com\")\nregional_secret_with_rotation = gcp.secretmanager.RegionalSecret(\"regional-secret-with-rotation\",\n secret_id=\"tf-reg-secret\",\n location=\"us-central1\",\n topics=[{\n \"name\": topic.id,\n }],\n rotation={\n \"rotation_period\": \"3600s\",\n \"next_rotation_time\": \"2045-11-30T00:00:00Z\",\n },\n opts = pulumi.ResourceOptions(depends_on=[secrets_manager_access]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n Name = \"tf-topic\",\n });\n\n var secretsManagerAccess = new Gcp.PubSub.TopicIAMMember(\"secrets_manager_access\", new()\n {\n Topic = topic.Name,\n Role = \"roles/pubsub.publisher\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-secretmanager.iam.gserviceaccount.com\",\n });\n\n var regional_secret_with_rotation = new Gcp.SecretManager.RegionalSecret(\"regional-secret-with-rotation\", new()\n {\n SecretId = \"tf-reg-secret\",\n Location = \"us-central1\",\n Topics = new[]\n {\n new Gcp.SecretManager.Inputs.RegionalSecretTopicArgs\n {\n Name = topic.Id,\n },\n },\n Rotation = new Gcp.SecretManager.Inputs.RegionalSecretRotationArgs\n {\n RotationPeriod = \"3600s\",\n NextRotationTime = \"2045-11-30T00:00:00Z\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secretsManagerAccess,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttopic, err := pubsub.NewTopic(ctx, \"topic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"tf-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecretsManagerAccess, err := pubsub.NewTopicIAMMember(ctx, \"secrets_manager_access\", \u0026pubsub.TopicIAMMemberArgs{\n\t\t\tTopic: topic.Name,\n\t\t\tRole: pulumi.String(\"roles/pubsub.publisher\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-secretmanager.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewRegionalSecret(ctx, \"regional-secret-with-rotation\", \u0026secretmanager.RegionalSecretArgs{\n\t\t\tSecretId: pulumi.String(\"tf-reg-secret\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTopics: secretmanager.RegionalSecretTopicArray{\n\t\t\t\t\u0026secretmanager.RegionalSecretTopicArgs{\n\t\t\t\t\tName: topic.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tRotation: \u0026secretmanager.RegionalSecretRotationArgs{\n\t\t\t\tRotationPeriod: pulumi.String(\"3600s\"),\n\t\t\t\tNextRotationTime: pulumi.String(\"2045-11-30T00:00:00Z\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecretsManagerAccess,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.pubsub.TopicIAMMember;\nimport com.pulumi.gcp.pubsub.TopicIAMMemberArgs;\nimport com.pulumi.gcp.secretmanager.RegionalSecret;\nimport com.pulumi.gcp.secretmanager.RegionalSecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.RegionalSecretTopicArgs;\nimport com.pulumi.gcp.secretmanager.inputs.RegionalSecretRotationArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var topic = new Topic(\"topic\", TopicArgs.builder()\n .name(\"tf-topic\")\n .build());\n\n var secretsManagerAccess = new TopicIAMMember(\"secretsManagerAccess\", TopicIAMMemberArgs.builder()\n .topic(topic.name())\n .role(\"roles/pubsub.publisher\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-secretmanager.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var regional_secret_with_rotation = new RegionalSecret(\"regional-secret-with-rotation\", RegionalSecretArgs.builder()\n .secretId(\"tf-reg-secret\")\n .location(\"us-central1\")\n .topics(RegionalSecretTopicArgs.builder()\n .name(topic.id())\n .build())\n .rotation(RegionalSecretRotationArgs.builder()\n .rotationPeriod(\"3600s\")\n .nextRotationTime(\"2045-11-30T00:00:00Z\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(secretsManagerAccess)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: tf-topic\n secretsManagerAccess:\n type: gcp:pubsub:TopicIAMMember\n name: secrets_manager_access\n properties:\n topic: ${topic.name}\n role: roles/pubsub.publisher\n member: serviceAccount:service-${project.number}@gcp-sa-secretmanager.iam.gserviceaccount.com\n regional-secret-with-rotation:\n type: gcp:secretmanager:RegionalSecret\n properties:\n secretId: tf-reg-secret\n location: us-central1\n topics:\n - name: ${topic.id}\n rotation:\n rotationPeriod: 3600s\n nextRotationTime: 2045-11-30T00:00:00Z\n options:\n dependson:\n - ${secretsManagerAccess}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Regional Secret With Ttl\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst regional_secret_with_ttl = new gcp.secretmanager.RegionalSecret(\"regional-secret-with-ttl\", {\n secretId: \"tf-reg-secret\",\n location: \"us-central1\",\n labels: {\n label: \"my-label\",\n },\n annotations: {\n key1: \"value1\",\n key2: \"value2\",\n key3: \"value3\",\n },\n ttl: \"36000s\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nregional_secret_with_ttl = gcp.secretmanager.RegionalSecret(\"regional-secret-with-ttl\",\n secret_id=\"tf-reg-secret\",\n location=\"us-central1\",\n labels={\n \"label\": \"my-label\",\n },\n annotations={\n \"key1\": \"value1\",\n \"key2\": \"value2\",\n \"key3\": \"value3\",\n },\n ttl=\"36000s\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var regional_secret_with_ttl = new Gcp.SecretManager.RegionalSecret(\"regional-secret-with-ttl\", new()\n {\n SecretId = \"tf-reg-secret\",\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"my-label\" },\n },\n Annotations = \n {\n { \"key1\", \"value1\" },\n { \"key2\", \"value2\" },\n { \"key3\", \"value3\" },\n },\n Ttl = \"36000s\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := secretmanager.NewRegionalSecret(ctx, \"regional-secret-with-ttl\", \u0026secretmanager.RegionalSecretArgs{\n\t\t\tSecretId: pulumi.String(\"tf-reg-secret\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"my-label\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"key1\": pulumi.String(\"value1\"),\n\t\t\t\t\"key2\": pulumi.String(\"value2\"),\n\t\t\t\t\"key3\": pulumi.String(\"value3\"),\n\t\t\t},\n\t\t\tTtl: pulumi.String(\"36000s\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.RegionalSecret;\nimport com.pulumi.gcp.secretmanager.RegionalSecretArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var regional_secret_with_ttl = new RegionalSecret(\"regional-secret-with-ttl\", RegionalSecretArgs.builder()\n .secretId(\"tf-reg-secret\")\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"my-label\"))\n .annotations(Map.ofEntries(\n Map.entry(\"key1\", \"value1\"),\n Map.entry(\"key2\", \"value2\"),\n Map.entry(\"key3\", \"value3\")\n ))\n .ttl(\"36000s\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regional-secret-with-ttl:\n type: gcp:secretmanager:RegionalSecret\n properties:\n secretId: tf-reg-secret\n location: us-central1\n labels:\n label: my-label\n annotations:\n key1: value1\n key2: value2\n key3: value3\n ttl: 36000s\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Regional Secret With Expire Time\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst regional_secret_with_expire_time = new gcp.secretmanager.RegionalSecret(\"regional-secret-with-expire-time\", {\n secretId: \"tf-reg-secret\",\n location: \"us-central1\",\n labels: {\n label: \"my-label\",\n },\n annotations: {\n key1: \"value1\",\n key2: \"value2\",\n key3: \"value3\",\n },\n expireTime: \"2055-11-30T00:00:00Z\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nregional_secret_with_expire_time = gcp.secretmanager.RegionalSecret(\"regional-secret-with-expire-time\",\n secret_id=\"tf-reg-secret\",\n location=\"us-central1\",\n labels={\n \"label\": \"my-label\",\n },\n annotations={\n \"key1\": \"value1\",\n \"key2\": \"value2\",\n \"key3\": \"value3\",\n },\n expire_time=\"2055-11-30T00:00:00Z\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var regional_secret_with_expire_time = new Gcp.SecretManager.RegionalSecret(\"regional-secret-with-expire-time\", new()\n {\n SecretId = \"tf-reg-secret\",\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"my-label\" },\n },\n Annotations = \n {\n { \"key1\", \"value1\" },\n { \"key2\", \"value2\" },\n { \"key3\", \"value3\" },\n },\n ExpireTime = \"2055-11-30T00:00:00Z\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := secretmanager.NewRegionalSecret(ctx, \"regional-secret-with-expire-time\", \u0026secretmanager.RegionalSecretArgs{\n\t\t\tSecretId: pulumi.String(\"tf-reg-secret\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"my-label\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"key1\": pulumi.String(\"value1\"),\n\t\t\t\t\"key2\": pulumi.String(\"value2\"),\n\t\t\t\t\"key3\": pulumi.String(\"value3\"),\n\t\t\t},\n\t\t\tExpireTime: pulumi.String(\"2055-11-30T00:00:00Z\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.RegionalSecret;\nimport com.pulumi.gcp.secretmanager.RegionalSecretArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var regional_secret_with_expire_time = new RegionalSecret(\"regional-secret-with-expire-time\", RegionalSecretArgs.builder()\n .secretId(\"tf-reg-secret\")\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"my-label\"))\n .annotations(Map.ofEntries(\n Map.entry(\"key1\", \"value1\"),\n Map.entry(\"key2\", \"value2\"),\n Map.entry(\"key3\", \"value3\")\n ))\n .expireTime(\"2055-11-30T00:00:00Z\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regional-secret-with-expire-time:\n type: gcp:secretmanager:RegionalSecret\n properties:\n secretId: tf-reg-secret\n location: us-central1\n labels:\n label: my-label\n annotations:\n key1: value1\n key2: value2\n key3: value3\n expireTime: 2055-11-30T00:00:00Z\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Regional Secret With Version Destroy Ttl\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst regional_secret_with_version_destroy_ttl = new gcp.secretmanager.RegionalSecret(\"regional-secret-with-version-destroy-ttl\", {\n secretId: \"tf-reg-secret\",\n location: \"us-central1\",\n labels: {\n label: \"my-label\",\n },\n annotations: {\n key1: \"value1\",\n key2: \"value2\",\n key3: \"value3\",\n },\n versionDestroyTtl: \"86400s\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nregional_secret_with_version_destroy_ttl = gcp.secretmanager.RegionalSecret(\"regional-secret-with-version-destroy-ttl\",\n secret_id=\"tf-reg-secret\",\n location=\"us-central1\",\n labels={\n \"label\": \"my-label\",\n },\n annotations={\n \"key1\": \"value1\",\n \"key2\": \"value2\",\n \"key3\": \"value3\",\n },\n version_destroy_ttl=\"86400s\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var regional_secret_with_version_destroy_ttl = new Gcp.SecretManager.RegionalSecret(\"regional-secret-with-version-destroy-ttl\", new()\n {\n SecretId = \"tf-reg-secret\",\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"my-label\" },\n },\n Annotations = \n {\n { \"key1\", \"value1\" },\n { \"key2\", \"value2\" },\n { \"key3\", \"value3\" },\n },\n VersionDestroyTtl = \"86400s\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := secretmanager.NewRegionalSecret(ctx, \"regional-secret-with-version-destroy-ttl\", \u0026secretmanager.RegionalSecretArgs{\n\t\t\tSecretId: pulumi.String(\"tf-reg-secret\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"my-label\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"key1\": pulumi.String(\"value1\"),\n\t\t\t\t\"key2\": pulumi.String(\"value2\"),\n\t\t\t\t\"key3\": pulumi.String(\"value3\"),\n\t\t\t},\n\t\t\tVersionDestroyTtl: pulumi.String(\"86400s\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.RegionalSecret;\nimport com.pulumi.gcp.secretmanager.RegionalSecretArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var regional_secret_with_version_destroy_ttl = new RegionalSecret(\"regional-secret-with-version-destroy-ttl\", RegionalSecretArgs.builder()\n .secretId(\"tf-reg-secret\")\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"my-label\"))\n .annotations(Map.ofEntries(\n Map.entry(\"key1\", \"value1\"),\n Map.entry(\"key2\", \"value2\"),\n Map.entry(\"key3\", \"value3\")\n ))\n .versionDestroyTtl(\"86400s\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regional-secret-with-version-destroy-ttl:\n type: gcp:secretmanager:RegionalSecret\n properties:\n secretId: tf-reg-secret\n location: us-central1\n labels:\n label: my-label\n annotations:\n key1: value1\n key2: value2\n key3: value3\n versionDestroyTtl: 86400s\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRegionalSecret can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/secrets/{{secret_id}}`\n\n* `{{project}}/{{location}}/{{secret_id}}`\n\n* `{{location}}/{{secret_id}}`\n\nWhen using the `pulumi import` command, RegionalSecret can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:secretmanager/regionalSecret:RegionalSecret default projects/{{project}}/locations/{{location}}/secrets/{{secret_id}}\n```\n\n```sh\n$ pulumi import gcp:secretmanager/regionalSecret:RegionalSecret default {{project}}/{{location}}/{{secret_id}}\n```\n\n```sh\n$ pulumi import gcp:secretmanager/regionalSecret:RegionalSecret default {{location}}/{{secret_id}}\n```\n\n", + "description": "A Regional Secret is a logical secret whose value and versions can be created and accessed within a region only.\n\n\nTo get more information about RegionalSecret, see:\n\n* [API documentation](https://cloud.google.com/secret-manager/docs/reference/rest/v1/projects.secrets)\n\n## Example Usage\n\n### Regional Secret Config Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst regional_secret_basic = new gcp.secretmanager.RegionalSecret(\"regional-secret-basic\", {\n secretId: \"tf-reg-secret\",\n location: \"us-central1\",\n labels: {\n label: \"my-label\",\n },\n annotations: {\n key1: \"value1\",\n key2: \"value2\",\n key3: \"value3\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nregional_secret_basic = gcp.secretmanager.RegionalSecret(\"regional-secret-basic\",\n secret_id=\"tf-reg-secret\",\n location=\"us-central1\",\n labels={\n \"label\": \"my-label\",\n },\n annotations={\n \"key1\": \"value1\",\n \"key2\": \"value2\",\n \"key3\": \"value3\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var regional_secret_basic = new Gcp.SecretManager.RegionalSecret(\"regional-secret-basic\", new()\n {\n SecretId = \"tf-reg-secret\",\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"my-label\" },\n },\n Annotations = \n {\n { \"key1\", \"value1\" },\n { \"key2\", \"value2\" },\n { \"key3\", \"value3\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := secretmanager.NewRegionalSecret(ctx, \"regional-secret-basic\", \u0026secretmanager.RegionalSecretArgs{\n\t\t\tSecretId: pulumi.String(\"tf-reg-secret\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"my-label\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"key1\": pulumi.String(\"value1\"),\n\t\t\t\t\"key2\": pulumi.String(\"value2\"),\n\t\t\t\t\"key3\": pulumi.String(\"value3\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.RegionalSecret;\nimport com.pulumi.gcp.secretmanager.RegionalSecretArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var regional_secret_basic = new RegionalSecret(\"regional-secret-basic\", RegionalSecretArgs.builder()\n .secretId(\"tf-reg-secret\")\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"my-label\"))\n .annotations(Map.ofEntries(\n Map.entry(\"key1\", \"value1\"),\n Map.entry(\"key2\", \"value2\"),\n Map.entry(\"key3\", \"value3\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regional-secret-basic:\n type: gcp:secretmanager:RegionalSecret\n properties:\n secretId: tf-reg-secret\n location: us-central1\n labels:\n label: my-label\n annotations:\n key1: value1\n key2: value2\n key3: value3\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Regional Secret With Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst kms_secret_binding = new gcp.kms.CryptoKeyIAMMember(\"kms-secret-binding\", {\n cryptoKeyId: \"kms-key\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-secretmanager.iam.gserviceaccount.com`),\n});\nconst regional_secret_with_cmek = new gcp.secretmanager.RegionalSecret(\"regional-secret-with-cmek\", {\n secretId: \"tf-reg-secret\",\n location: \"us-central1\",\n customerManagedEncryption: {\n kmsKeyName: \"kms-key\",\n },\n}, {\n dependsOn: [kms_secret_binding],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nkms_secret_binding = gcp.kms.CryptoKeyIAMMember(\"kms-secret-binding\",\n crypto_key_id=\"kms-key\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-secretmanager.iam.gserviceaccount.com\")\nregional_secret_with_cmek = gcp.secretmanager.RegionalSecret(\"regional-secret-with-cmek\",\n secret_id=\"tf-reg-secret\",\n location=\"us-central1\",\n customer_managed_encryption={\n \"kms_key_name\": \"kms-key\",\n },\n opts = pulumi.ResourceOptions(depends_on=[kms_secret_binding]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var kms_secret_binding = new Gcp.Kms.CryptoKeyIAMMember(\"kms-secret-binding\", new()\n {\n CryptoKeyId = \"kms-key\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-secretmanager.iam.gserviceaccount.com\",\n });\n\n var regional_secret_with_cmek = new Gcp.SecretManager.RegionalSecret(\"regional-secret-with-cmek\", new()\n {\n SecretId = \"tf-reg-secret\",\n Location = \"us-central1\",\n CustomerManagedEncryption = new Gcp.SecretManager.Inputs.RegionalSecretCustomerManagedEncryptionArgs\n {\n KmsKeyName = \"kms-key\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n kms_secret_binding,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kms.NewCryptoKeyIAMMember(ctx, \"kms-secret-binding\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"kms-key\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-secretmanager.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewRegionalSecret(ctx, \"regional-secret-with-cmek\", \u0026secretmanager.RegionalSecretArgs{\n\t\t\tSecretId: pulumi.String(\"tf-reg-secret\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tCustomerManagedEncryption: \u0026secretmanager.RegionalSecretCustomerManagedEncryptionArgs{\n\t\t\t\tKmsKeyName: pulumi.String(\"kms-key\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tkms_secret_binding,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.secretmanager.RegionalSecret;\nimport com.pulumi.gcp.secretmanager.RegionalSecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.RegionalSecretCustomerManagedEncryptionArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var kms_secret_binding = new CryptoKeyIAMMember(\"kms-secret-binding\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(\"kms-key\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-secretmanager.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var regional_secret_with_cmek = new RegionalSecret(\"regional-secret-with-cmek\", RegionalSecretArgs.builder()\n .secretId(\"tf-reg-secret\")\n .location(\"us-central1\")\n .customerManagedEncryption(RegionalSecretCustomerManagedEncryptionArgs.builder()\n .kmsKeyName(\"kms-key\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(kms_secret_binding)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n kms-secret-binding:\n type: gcp:kms:CryptoKeyIAMMember\n properties:\n cryptoKeyId: kms-key\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-secretmanager.iam.gserviceaccount.com\n regional-secret-with-cmek:\n type: gcp:secretmanager:RegionalSecret\n properties:\n secretId: tf-reg-secret\n location: us-central1\n customerManagedEncryption:\n kmsKeyName: kms-key\n options:\n dependson:\n - ${[\"kms-secret-binding\"]}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Regional Secret With Rotation\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"tf-topic\"});\nconst secretsManagerAccess = new gcp.pubsub.TopicIAMMember(\"secrets_manager_access\", {\n topic: topic.name,\n role: \"roles/pubsub.publisher\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-secretmanager.iam.gserviceaccount.com`),\n});\nconst regional_secret_with_rotation = new gcp.secretmanager.RegionalSecret(\"regional-secret-with-rotation\", {\n secretId: \"tf-reg-secret\",\n location: \"us-central1\",\n topics: [{\n name: topic.id,\n }],\n rotation: {\n rotationPeriod: \"3600s\",\n nextRotationTime: \"2045-11-30T00:00:00Z\",\n },\n}, {\n dependsOn: [secretsManagerAccess],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ntopic = gcp.pubsub.Topic(\"topic\", name=\"tf-topic\")\nsecrets_manager_access = gcp.pubsub.TopicIAMMember(\"secrets_manager_access\",\n topic=topic.name,\n role=\"roles/pubsub.publisher\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-secretmanager.iam.gserviceaccount.com\")\nregional_secret_with_rotation = gcp.secretmanager.RegionalSecret(\"regional-secret-with-rotation\",\n secret_id=\"tf-reg-secret\",\n location=\"us-central1\",\n topics=[{\n \"name\": topic.id,\n }],\n rotation={\n \"rotation_period\": \"3600s\",\n \"next_rotation_time\": \"2045-11-30T00:00:00Z\",\n },\n opts = pulumi.ResourceOptions(depends_on=[secrets_manager_access]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n Name = \"tf-topic\",\n });\n\n var secretsManagerAccess = new Gcp.PubSub.TopicIAMMember(\"secrets_manager_access\", new()\n {\n Topic = topic.Name,\n Role = \"roles/pubsub.publisher\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-secretmanager.iam.gserviceaccount.com\",\n });\n\n var regional_secret_with_rotation = new Gcp.SecretManager.RegionalSecret(\"regional-secret-with-rotation\", new()\n {\n SecretId = \"tf-reg-secret\",\n Location = \"us-central1\",\n Topics = new[]\n {\n new Gcp.SecretManager.Inputs.RegionalSecretTopicArgs\n {\n Name = topic.Id,\n },\n },\n Rotation = new Gcp.SecretManager.Inputs.RegionalSecretRotationArgs\n {\n RotationPeriod = \"3600s\",\n NextRotationTime = \"2045-11-30T00:00:00Z\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secretsManagerAccess,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttopic, err := pubsub.NewTopic(ctx, \"topic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"tf-topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecretsManagerAccess, err := pubsub.NewTopicIAMMember(ctx, \"secrets_manager_access\", \u0026pubsub.TopicIAMMemberArgs{\n\t\t\tTopic: topic.Name,\n\t\t\tRole: pulumi.String(\"roles/pubsub.publisher\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-secretmanager.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewRegionalSecret(ctx, \"regional-secret-with-rotation\", \u0026secretmanager.RegionalSecretArgs{\n\t\t\tSecretId: pulumi.String(\"tf-reg-secret\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTopics: secretmanager.RegionalSecretTopicArray{\n\t\t\t\t\u0026secretmanager.RegionalSecretTopicArgs{\n\t\t\t\t\tName: topic.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tRotation: \u0026secretmanager.RegionalSecretRotationArgs{\n\t\t\t\tRotationPeriod: pulumi.String(\"3600s\"),\n\t\t\t\tNextRotationTime: pulumi.String(\"2045-11-30T00:00:00Z\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecretsManagerAccess,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.pubsub.TopicIAMMember;\nimport com.pulumi.gcp.pubsub.TopicIAMMemberArgs;\nimport com.pulumi.gcp.secretmanager.RegionalSecret;\nimport com.pulumi.gcp.secretmanager.RegionalSecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.RegionalSecretTopicArgs;\nimport com.pulumi.gcp.secretmanager.inputs.RegionalSecretRotationArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var topic = new Topic(\"topic\", TopicArgs.builder()\n .name(\"tf-topic\")\n .build());\n\n var secretsManagerAccess = new TopicIAMMember(\"secretsManagerAccess\", TopicIAMMemberArgs.builder()\n .topic(topic.name())\n .role(\"roles/pubsub.publisher\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-secretmanager.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var regional_secret_with_rotation = new RegionalSecret(\"regional-secret-with-rotation\", RegionalSecretArgs.builder()\n .secretId(\"tf-reg-secret\")\n .location(\"us-central1\")\n .topics(RegionalSecretTopicArgs.builder()\n .name(topic.id())\n .build())\n .rotation(RegionalSecretRotationArgs.builder()\n .rotationPeriod(\"3600s\")\n .nextRotationTime(\"2045-11-30T00:00:00Z\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(secretsManagerAccess)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: tf-topic\n secretsManagerAccess:\n type: gcp:pubsub:TopicIAMMember\n name: secrets_manager_access\n properties:\n topic: ${topic.name}\n role: roles/pubsub.publisher\n member: serviceAccount:service-${project.number}@gcp-sa-secretmanager.iam.gserviceaccount.com\n regional-secret-with-rotation:\n type: gcp:secretmanager:RegionalSecret\n properties:\n secretId: tf-reg-secret\n location: us-central1\n topics:\n - name: ${topic.id}\n rotation:\n rotationPeriod: 3600s\n nextRotationTime: 2045-11-30T00:00:00Z\n options:\n dependson:\n - ${secretsManagerAccess}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Regional Secret With Ttl\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst regional_secret_with_ttl = new gcp.secretmanager.RegionalSecret(\"regional-secret-with-ttl\", {\n secretId: \"tf-reg-secret\",\n location: \"us-central1\",\n labels: {\n label: \"my-label\",\n },\n annotations: {\n key1: \"value1\",\n key2: \"value2\",\n key3: \"value3\",\n },\n ttl: \"36000s\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nregional_secret_with_ttl = gcp.secretmanager.RegionalSecret(\"regional-secret-with-ttl\",\n secret_id=\"tf-reg-secret\",\n location=\"us-central1\",\n labels={\n \"label\": \"my-label\",\n },\n annotations={\n \"key1\": \"value1\",\n \"key2\": \"value2\",\n \"key3\": \"value3\",\n },\n ttl=\"36000s\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var regional_secret_with_ttl = new Gcp.SecretManager.RegionalSecret(\"regional-secret-with-ttl\", new()\n {\n SecretId = \"tf-reg-secret\",\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"my-label\" },\n },\n Annotations = \n {\n { \"key1\", \"value1\" },\n { \"key2\", \"value2\" },\n { \"key3\", \"value3\" },\n },\n Ttl = \"36000s\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := secretmanager.NewRegionalSecret(ctx, \"regional-secret-with-ttl\", \u0026secretmanager.RegionalSecretArgs{\n\t\t\tSecretId: pulumi.String(\"tf-reg-secret\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"my-label\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"key1\": pulumi.String(\"value1\"),\n\t\t\t\t\"key2\": pulumi.String(\"value2\"),\n\t\t\t\t\"key3\": pulumi.String(\"value3\"),\n\t\t\t},\n\t\t\tTtl: pulumi.String(\"36000s\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.RegionalSecret;\nimport com.pulumi.gcp.secretmanager.RegionalSecretArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var regional_secret_with_ttl = new RegionalSecret(\"regional-secret-with-ttl\", RegionalSecretArgs.builder()\n .secretId(\"tf-reg-secret\")\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"my-label\"))\n .annotations(Map.ofEntries(\n Map.entry(\"key1\", \"value1\"),\n Map.entry(\"key2\", \"value2\"),\n Map.entry(\"key3\", \"value3\")\n ))\n .ttl(\"36000s\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regional-secret-with-ttl:\n type: gcp:secretmanager:RegionalSecret\n properties:\n secretId: tf-reg-secret\n location: us-central1\n labels:\n label: my-label\n annotations:\n key1: value1\n key2: value2\n key3: value3\n ttl: 36000s\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Regional Secret With Expire Time\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst regional_secret_with_expire_time = new gcp.secretmanager.RegionalSecret(\"regional-secret-with-expire-time\", {\n secretId: \"tf-reg-secret\",\n location: \"us-central1\",\n labels: {\n label: \"my-label\",\n },\n annotations: {\n key1: \"value1\",\n key2: \"value2\",\n key3: \"value3\",\n },\n expireTime: \"2055-11-30T00:00:00Z\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nregional_secret_with_expire_time = gcp.secretmanager.RegionalSecret(\"regional-secret-with-expire-time\",\n secret_id=\"tf-reg-secret\",\n location=\"us-central1\",\n labels={\n \"label\": \"my-label\",\n },\n annotations={\n \"key1\": \"value1\",\n \"key2\": \"value2\",\n \"key3\": \"value3\",\n },\n expire_time=\"2055-11-30T00:00:00Z\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var regional_secret_with_expire_time = new Gcp.SecretManager.RegionalSecret(\"regional-secret-with-expire-time\", new()\n {\n SecretId = \"tf-reg-secret\",\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"my-label\" },\n },\n Annotations = \n {\n { \"key1\", \"value1\" },\n { \"key2\", \"value2\" },\n { \"key3\", \"value3\" },\n },\n ExpireTime = \"2055-11-30T00:00:00Z\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := secretmanager.NewRegionalSecret(ctx, \"regional-secret-with-expire-time\", \u0026secretmanager.RegionalSecretArgs{\n\t\t\tSecretId: pulumi.String(\"tf-reg-secret\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"my-label\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"key1\": pulumi.String(\"value1\"),\n\t\t\t\t\"key2\": pulumi.String(\"value2\"),\n\t\t\t\t\"key3\": pulumi.String(\"value3\"),\n\t\t\t},\n\t\t\tExpireTime: pulumi.String(\"2055-11-30T00:00:00Z\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.RegionalSecret;\nimport com.pulumi.gcp.secretmanager.RegionalSecretArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var regional_secret_with_expire_time = new RegionalSecret(\"regional-secret-with-expire-time\", RegionalSecretArgs.builder()\n .secretId(\"tf-reg-secret\")\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"my-label\"))\n .annotations(Map.ofEntries(\n Map.entry(\"key1\", \"value1\"),\n Map.entry(\"key2\", \"value2\"),\n Map.entry(\"key3\", \"value3\")\n ))\n .expireTime(\"2055-11-30T00:00:00Z\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regional-secret-with-expire-time:\n type: gcp:secretmanager:RegionalSecret\n properties:\n secretId: tf-reg-secret\n location: us-central1\n labels:\n label: my-label\n annotations:\n key1: value1\n key2: value2\n key3: value3\n expireTime: 2055-11-30T00:00:00Z\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Regional Secret With Version Destroy Ttl\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst regional_secret_with_version_destroy_ttl = new gcp.secretmanager.RegionalSecret(\"regional-secret-with-version-destroy-ttl\", {\n secretId: \"tf-reg-secret\",\n location: \"us-central1\",\n labels: {\n label: \"my-label\",\n },\n annotations: {\n key1: \"value1\",\n key2: \"value2\",\n key3: \"value3\",\n },\n versionDestroyTtl: \"86400s\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nregional_secret_with_version_destroy_ttl = gcp.secretmanager.RegionalSecret(\"regional-secret-with-version-destroy-ttl\",\n secret_id=\"tf-reg-secret\",\n location=\"us-central1\",\n labels={\n \"label\": \"my-label\",\n },\n annotations={\n \"key1\": \"value1\",\n \"key2\": \"value2\",\n \"key3\": \"value3\",\n },\n version_destroy_ttl=\"86400s\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var regional_secret_with_version_destroy_ttl = new Gcp.SecretManager.RegionalSecret(\"regional-secret-with-version-destroy-ttl\", new()\n {\n SecretId = \"tf-reg-secret\",\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"my-label\" },\n },\n Annotations = \n {\n { \"key1\", \"value1\" },\n { \"key2\", \"value2\" },\n { \"key3\", \"value3\" },\n },\n VersionDestroyTtl = \"86400s\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := secretmanager.NewRegionalSecret(ctx, \"regional-secret-with-version-destroy-ttl\", \u0026secretmanager.RegionalSecretArgs{\n\t\t\tSecretId: pulumi.String(\"tf-reg-secret\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"my-label\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"key1\": pulumi.String(\"value1\"),\n\t\t\t\t\"key2\": pulumi.String(\"value2\"),\n\t\t\t\t\"key3\": pulumi.String(\"value3\"),\n\t\t\t},\n\t\t\tVersionDestroyTtl: pulumi.String(\"86400s\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.RegionalSecret;\nimport com.pulumi.gcp.secretmanager.RegionalSecretArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var regional_secret_with_version_destroy_ttl = new RegionalSecret(\"regional-secret-with-version-destroy-ttl\", RegionalSecretArgs.builder()\n .secretId(\"tf-reg-secret\")\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"my-label\"))\n .annotations(Map.ofEntries(\n Map.entry(\"key1\", \"value1\"),\n Map.entry(\"key2\", \"value2\"),\n Map.entry(\"key3\", \"value3\")\n ))\n .versionDestroyTtl(\"86400s\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regional-secret-with-version-destroy-ttl:\n type: gcp:secretmanager:RegionalSecret\n properties:\n secretId: tf-reg-secret\n location: us-central1\n labels:\n label: my-label\n annotations:\n key1: value1\n key2: value2\n key3: value3\n versionDestroyTtl: 86400s\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRegionalSecret can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/secrets/{{secret_id}}`\n\n* `{{project}}/{{location}}/{{secret_id}}`\n\n* `{{location}}/{{secret_id}}`\n\nWhen using the `pulumi import` command, RegionalSecret can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:secretmanager/regionalSecret:RegionalSecret default projects/{{project}}/locations/{{location}}/secrets/{{secret_id}}\n```\n\n```sh\n$ pulumi import gcp:secretmanager/regionalSecret:RegionalSecret default {{project}}/{{location}}/{{secret_id}}\n```\n\n```sh\n$ pulumi import gcp:secretmanager/regionalSecret:RegionalSecret default {{location}}/{{secret_id}}\n```\n\n", "properties": { "annotations": { "type": "object", @@ -239828,7 +239828,7 @@ } }, "gcp:secretmanager/secret:Secret": { - "description": "A Secret is a logical secret whose value and versions can be accessed.\n\n\nTo get more information about Secret, see:\n\n* [API documentation](https://cloud.google.com/secret-manager/docs/reference/rest/v1/projects.secrets)\n\n## Example Usage\n\n### Secret Config Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret_basic = new gcp.secretmanager.Secret(\"secret-basic\", {\n secretId: \"secret\",\n labels: {\n label: \"my-label\",\n },\n replication: {\n userManaged: {\n replicas: [\n {\n location: \"us-central1\",\n },\n {\n location: \"us-east1\",\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret_basic = gcp.secretmanager.Secret(\"secret-basic\",\n secret_id=\"secret\",\n labels={\n \"label\": \"my-label\",\n },\n replication={\n \"user_managed\": {\n \"replicas\": [\n {\n \"location\": \"us-central1\",\n },\n {\n \"location\": \"us-east1\",\n },\n ],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var secret_basic = new Gcp.SecretManager.Secret(\"secret-basic\", new()\n {\n SecretId = \"secret\",\n Labels = \n {\n { \"label\", \"my-label\" },\n },\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n UserManaged = new Gcp.SecretManager.Inputs.SecretReplicationUserManagedArgs\n {\n Replicas = new[]\n {\n new Gcp.SecretManager.Inputs.SecretReplicationUserManagedReplicaArgs\n {\n Location = \"us-central1\",\n },\n new Gcp.SecretManager.Inputs.SecretReplicationUserManagedReplicaArgs\n {\n Location = \"us-east1\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := secretmanager.NewSecret(ctx, \"secret-basic\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"my-label\"),\n\t\t\t},\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tUserManaged: \u0026secretmanager.SecretReplicationUserManagedArgs{\n\t\t\t\t\tReplicas: secretmanager.SecretReplicationUserManagedReplicaArray{\n\t\t\t\t\t\t\u0026secretmanager.SecretReplicationUserManagedReplicaArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026secretmanager.SecretReplicationUserManagedReplicaArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-east1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationUserManagedArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var secret_basic = new Secret(\"secret-basic\", SecretArgs.builder()\n .secretId(\"secret\")\n .labels(Map.of(\"label\", \"my-label\"))\n .replication(SecretReplicationArgs.builder()\n .userManaged(SecretReplicationUserManagedArgs.builder()\n .replicas( \n SecretReplicationUserManagedReplicaArgs.builder()\n .location(\"us-central1\")\n .build(),\n SecretReplicationUserManagedReplicaArgs.builder()\n .location(\"us-east1\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-basic:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret\n labels:\n label: my-label\n replication:\n userManaged:\n replicas:\n - location: us-central1\n - location: us-east1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secret With Annotations\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret_with_annotations = new gcp.secretmanager.Secret(\"secret-with-annotations\", {\n secretId: \"secret\",\n labels: {\n label: \"my-label\",\n },\n annotations: {\n key1: \"someval\",\n key2: \"someval2\",\n key3: \"someval3\",\n key4: \"someval4\",\n key5: \"someval5\",\n },\n replication: {\n auto: {},\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret_with_annotations = gcp.secretmanager.Secret(\"secret-with-annotations\",\n secret_id=\"secret\",\n labels={\n \"label\": \"my-label\",\n },\n annotations={\n \"key1\": \"someval\",\n \"key2\": \"someval2\",\n \"key3\": \"someval3\",\n \"key4\": \"someval4\",\n \"key5\": \"someval5\",\n },\n replication={\n \"auto\": {},\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var secret_with_annotations = new Gcp.SecretManager.Secret(\"secret-with-annotations\", new()\n {\n SecretId = \"secret\",\n Labels = \n {\n { \"label\", \"my-label\" },\n },\n Annotations = \n {\n { \"key1\", \"someval\" },\n { \"key2\", \"someval2\" },\n { \"key3\", \"someval3\" },\n { \"key4\", \"someval4\" },\n { \"key5\", \"someval5\" },\n },\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := secretmanager.NewSecret(ctx, \"secret-with-annotations\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"my-label\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"key1\": pulumi.String(\"someval\"),\n\t\t\t\t\"key2\": pulumi.String(\"someval2\"),\n\t\t\t\t\"key3\": pulumi.String(\"someval3\"),\n\t\t\t\t\"key4\": pulumi.String(\"someval4\"),\n\t\t\t\t\"key5\": pulumi.String(\"someval5\"),\n\t\t\t},\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var secret_with_annotations = new Secret(\"secret-with-annotations\", SecretArgs.builder()\n .secretId(\"secret\")\n .labels(Map.of(\"label\", \"my-label\"))\n .annotations(Map.ofEntries(\n Map.entry(\"key1\", \"someval\"),\n Map.entry(\"key2\", \"someval2\"),\n Map.entry(\"key3\", \"someval3\"),\n Map.entry(\"key4\", \"someval4\"),\n Map.entry(\"key5\", \"someval5\")\n ))\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-with-annotations:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret\n labels:\n label: my-label\n annotations:\n key1: someval\n key2: someval2\n key3: someval3\n key4: someval4\n key5: someval5\n replication:\n auto: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secret With Version Destroy Ttl\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret_with_version_destroy_ttl = new gcp.secretmanager.Secret(\"secret-with-version-destroy-ttl\", {\n secretId: \"secret\",\n versionDestroyTtl: \"2592000s\",\n replication: {\n auto: {},\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret_with_version_destroy_ttl = gcp.secretmanager.Secret(\"secret-with-version-destroy-ttl\",\n secret_id=\"secret\",\n version_destroy_ttl=\"2592000s\",\n replication={\n \"auto\": {},\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var secret_with_version_destroy_ttl = new Gcp.SecretManager.Secret(\"secret-with-version-destroy-ttl\", new()\n {\n SecretId = \"secret\",\n VersionDestroyTtl = \"2592000s\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := secretmanager.NewSecret(ctx, \"secret-with-version-destroy-ttl\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret\"),\n\t\t\tVersionDestroyTtl: pulumi.String(\"2592000s\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var secret_with_version_destroy_ttl = new Secret(\"secret-with-version-destroy-ttl\", SecretArgs.builder()\n .secretId(\"secret\")\n .versionDestroyTtl(\"2592000s\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-with-version-destroy-ttl:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret\n versionDestroyTtl: 2592000s\n replication:\n auto: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secret With Automatic Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst kms_secret_binding = new gcp.kms.CryptoKeyIAMMember(\"kms-secret-binding\", {\n cryptoKeyId: \"kms-key\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-secretmanager.iam.gserviceaccount.com`),\n});\nconst secret_with_automatic_cmek = new gcp.secretmanager.Secret(\"secret-with-automatic-cmek\", {\n secretId: \"secret\",\n replication: {\n auto: {\n customerManagedEncryption: {\n kmsKeyName: \"kms-key\",\n },\n },\n },\n}, {\n dependsOn: [kms_secret_binding],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nkms_secret_binding = gcp.kms.CryptoKeyIAMMember(\"kms-secret-binding\",\n crypto_key_id=\"kms-key\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-secretmanager.iam.gserviceaccount.com\")\nsecret_with_automatic_cmek = gcp.secretmanager.Secret(\"secret-with-automatic-cmek\",\n secret_id=\"secret\",\n replication={\n \"auto\": {\n \"customer_managed_encryption\": {\n \"kms_key_name\": \"kms-key\",\n },\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[kms_secret_binding]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var kms_secret_binding = new Gcp.Kms.CryptoKeyIAMMember(\"kms-secret-binding\", new()\n {\n CryptoKeyId = \"kms-key\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-secretmanager.iam.gserviceaccount.com\",\n });\n\n var secret_with_automatic_cmek = new Gcp.SecretManager.Secret(\"secret-with-automatic-cmek\", new()\n {\n SecretId = \"secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = new Gcp.SecretManager.Inputs.SecretReplicationAutoArgs\n {\n CustomerManagedEncryption = new Gcp.SecretManager.Inputs.SecretReplicationAutoCustomerManagedEncryptionArgs\n {\n KmsKeyName = \"kms-key\",\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n kms_secret_binding,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kms.NewCryptoKeyIAMMember(ctx, \"kms-secret-binding\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"kms-key\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-secretmanager.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"secret-with-automatic-cmek\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: \u0026secretmanager.SecretReplicationAutoArgs{\n\t\t\t\t\tCustomerManagedEncryption: \u0026secretmanager.SecretReplicationAutoCustomerManagedEncryptionArgs{\n\t\t\t\t\t\tKmsKeyName: pulumi.String(\"kms-key\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tkms_secret_binding,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoCustomerManagedEncryptionArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var kms_secret_binding = new CryptoKeyIAMMember(\"kms-secret-binding\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(\"kms-key\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-secretmanager.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var secret_with_automatic_cmek = new Secret(\"secret-with-automatic-cmek\", SecretArgs.builder()\n .secretId(\"secret\")\n .replication(SecretReplicationArgs.builder()\n .auto(SecretReplicationAutoArgs.builder()\n .customerManagedEncryption(SecretReplicationAutoCustomerManagedEncryptionArgs.builder()\n .kmsKeyName(\"kms-key\")\n .build())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(kms_secret_binding)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n kms-secret-binding:\n type: gcp:kms:CryptoKeyIAMMember\n properties:\n cryptoKeyId: kms-key\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-secretmanager.iam.gserviceaccount.com\n secret-with-automatic-cmek:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret\n replication:\n auto:\n customerManagedEncryption:\n kmsKeyName: kms-key\n options:\n dependson:\n - ${[\"kms-secret-binding\"]}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSecret can be imported using any of these accepted formats:\n\n* `projects/{{project}}/secrets/{{secret_id}}`\n\n* `{{project}}/{{secret_id}}`\n\n* `{{secret_id}}`\n\nWhen using the `pulumi import` command, Secret can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:secretmanager/secret:Secret default projects/{{project}}/secrets/{{secret_id}}\n```\n\n```sh\n$ pulumi import gcp:secretmanager/secret:Secret default {{project}}/{{secret_id}}\n```\n\n```sh\n$ pulumi import gcp:secretmanager/secret:Secret default {{secret_id}}\n```\n\n", + "description": "A Secret is a logical secret whose value and versions can be accessed.\n\n\nTo get more information about Secret, see:\n\n* [API documentation](https://cloud.google.com/secret-manager/docs/reference/rest/v1/projects.secrets)\n\n## Example Usage\n\n### Secret Config Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret_basic = new gcp.secretmanager.Secret(\"secret-basic\", {\n secretId: \"secret\",\n labels: {\n label: \"my-label\",\n },\n replication: {\n userManaged: {\n replicas: [\n {\n location: \"us-central1\",\n },\n {\n location: \"us-east1\",\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret_basic = gcp.secretmanager.Secret(\"secret-basic\",\n secret_id=\"secret\",\n labels={\n \"label\": \"my-label\",\n },\n replication={\n \"user_managed\": {\n \"replicas\": [\n {\n \"location\": \"us-central1\",\n },\n {\n \"location\": \"us-east1\",\n },\n ],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var secret_basic = new Gcp.SecretManager.Secret(\"secret-basic\", new()\n {\n SecretId = \"secret\",\n Labels = \n {\n { \"label\", \"my-label\" },\n },\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n UserManaged = new Gcp.SecretManager.Inputs.SecretReplicationUserManagedArgs\n {\n Replicas = new[]\n {\n new Gcp.SecretManager.Inputs.SecretReplicationUserManagedReplicaArgs\n {\n Location = \"us-central1\",\n },\n new Gcp.SecretManager.Inputs.SecretReplicationUserManagedReplicaArgs\n {\n Location = \"us-east1\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := secretmanager.NewSecret(ctx, \"secret-basic\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"my-label\"),\n\t\t\t},\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tUserManaged: \u0026secretmanager.SecretReplicationUserManagedArgs{\n\t\t\t\t\tReplicas: secretmanager.SecretReplicationUserManagedReplicaArray{\n\t\t\t\t\t\t\u0026secretmanager.SecretReplicationUserManagedReplicaArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026secretmanager.SecretReplicationUserManagedReplicaArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-east1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationUserManagedArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var secret_basic = new Secret(\"secret-basic\", SecretArgs.builder()\n .secretId(\"secret\")\n .labels(Map.of(\"label\", \"my-label\"))\n .replication(SecretReplicationArgs.builder()\n .userManaged(SecretReplicationUserManagedArgs.builder()\n .replicas( \n SecretReplicationUserManagedReplicaArgs.builder()\n .location(\"us-central1\")\n .build(),\n SecretReplicationUserManagedReplicaArgs.builder()\n .location(\"us-east1\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-basic:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret\n labels:\n label: my-label\n replication:\n userManaged:\n replicas:\n - location: us-central1\n - location: us-east1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secret With Annotations\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret_with_annotations = new gcp.secretmanager.Secret(\"secret-with-annotations\", {\n secretId: \"secret\",\n labels: {\n label: \"my-label\",\n },\n annotations: {\n key1: \"someval\",\n key2: \"someval2\",\n key3: \"someval3\",\n key4: \"someval4\",\n key5: \"someval5\",\n },\n replication: {\n auto: {},\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret_with_annotations = gcp.secretmanager.Secret(\"secret-with-annotations\",\n secret_id=\"secret\",\n labels={\n \"label\": \"my-label\",\n },\n annotations={\n \"key1\": \"someval\",\n \"key2\": \"someval2\",\n \"key3\": \"someval3\",\n \"key4\": \"someval4\",\n \"key5\": \"someval5\",\n },\n replication={\n \"auto\": {},\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var secret_with_annotations = new Gcp.SecretManager.Secret(\"secret-with-annotations\", new()\n {\n SecretId = \"secret\",\n Labels = \n {\n { \"label\", \"my-label\" },\n },\n Annotations = \n {\n { \"key1\", \"someval\" },\n { \"key2\", \"someval2\" },\n { \"key3\", \"someval3\" },\n { \"key4\", \"someval4\" },\n { \"key5\", \"someval5\" },\n },\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := secretmanager.NewSecret(ctx, \"secret-with-annotations\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"my-label\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"key1\": pulumi.String(\"someval\"),\n\t\t\t\t\"key2\": pulumi.String(\"someval2\"),\n\t\t\t\t\"key3\": pulumi.String(\"someval3\"),\n\t\t\t\t\"key4\": pulumi.String(\"someval4\"),\n\t\t\t\t\"key5\": pulumi.String(\"someval5\"),\n\t\t\t},\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: \u0026secretmanager.SecretReplicationAutoArgs{},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var secret_with_annotations = new Secret(\"secret-with-annotations\", SecretArgs.builder()\n .secretId(\"secret\")\n .labels(Map.of(\"label\", \"my-label\"))\n .annotations(Map.ofEntries(\n Map.entry(\"key1\", \"someval\"),\n Map.entry(\"key2\", \"someval2\"),\n Map.entry(\"key3\", \"someval3\"),\n Map.entry(\"key4\", \"someval4\"),\n Map.entry(\"key5\", \"someval5\")\n ))\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-with-annotations:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret\n labels:\n label: my-label\n annotations:\n key1: someval\n key2: someval2\n key3: someval3\n key4: someval4\n key5: someval5\n replication:\n auto: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secret With Version Destroy Ttl\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret_with_version_destroy_ttl = new gcp.secretmanager.Secret(\"secret-with-version-destroy-ttl\", {\n secretId: \"secret\",\n versionDestroyTtl: \"2592000s\",\n replication: {\n auto: {},\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret_with_version_destroy_ttl = gcp.secretmanager.Secret(\"secret-with-version-destroy-ttl\",\n secret_id=\"secret\",\n version_destroy_ttl=\"2592000s\",\n replication={\n \"auto\": {},\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var secret_with_version_destroy_ttl = new Gcp.SecretManager.Secret(\"secret-with-version-destroy-ttl\", new()\n {\n SecretId = \"secret\",\n VersionDestroyTtl = \"2592000s\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := secretmanager.NewSecret(ctx, \"secret-with-version-destroy-ttl\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret\"),\n\t\t\tVersionDestroyTtl: pulumi.String(\"2592000s\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: \u0026secretmanager.SecretReplicationAutoArgs{},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var secret_with_version_destroy_ttl = new Secret(\"secret-with-version-destroy-ttl\", SecretArgs.builder()\n .secretId(\"secret\")\n .versionDestroyTtl(\"2592000s\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-with-version-destroy-ttl:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret\n versionDestroyTtl: 2592000s\n replication:\n auto: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secret With Automatic Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst kms_secret_binding = new gcp.kms.CryptoKeyIAMMember(\"kms-secret-binding\", {\n cryptoKeyId: \"kms-key\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-secretmanager.iam.gserviceaccount.com`),\n});\nconst secret_with_automatic_cmek = new gcp.secretmanager.Secret(\"secret-with-automatic-cmek\", {\n secretId: \"secret\",\n replication: {\n auto: {\n customerManagedEncryption: {\n kmsKeyName: \"kms-key\",\n },\n },\n },\n}, {\n dependsOn: [kms_secret_binding],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nkms_secret_binding = gcp.kms.CryptoKeyIAMMember(\"kms-secret-binding\",\n crypto_key_id=\"kms-key\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-secretmanager.iam.gserviceaccount.com\")\nsecret_with_automatic_cmek = gcp.secretmanager.Secret(\"secret-with-automatic-cmek\",\n secret_id=\"secret\",\n replication={\n \"auto\": {\n \"customer_managed_encryption\": {\n \"kms_key_name\": \"kms-key\",\n },\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[kms_secret_binding]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var kms_secret_binding = new Gcp.Kms.CryptoKeyIAMMember(\"kms-secret-binding\", new()\n {\n CryptoKeyId = \"kms-key\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-secretmanager.iam.gserviceaccount.com\",\n });\n\n var secret_with_automatic_cmek = new Gcp.SecretManager.Secret(\"secret-with-automatic-cmek\", new()\n {\n SecretId = \"secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = new Gcp.SecretManager.Inputs.SecretReplicationAutoArgs\n {\n CustomerManagedEncryption = new Gcp.SecretManager.Inputs.SecretReplicationAutoCustomerManagedEncryptionArgs\n {\n KmsKeyName = \"kms-key\",\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n kms_secret_binding,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kms.NewCryptoKeyIAMMember(ctx, \"kms-secret-binding\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"kms-key\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-secretmanager.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"secret-with-automatic-cmek\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: \u0026secretmanager.SecretReplicationAutoArgs{\n\t\t\t\t\tCustomerManagedEncryption: \u0026secretmanager.SecretReplicationAutoCustomerManagedEncryptionArgs{\n\t\t\t\t\t\tKmsKeyName: pulumi.String(\"kms-key\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tkms_secret_binding,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoCustomerManagedEncryptionArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var kms_secret_binding = new CryptoKeyIAMMember(\"kms-secret-binding\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(\"kms-key\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-secretmanager.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var secret_with_automatic_cmek = new Secret(\"secret-with-automatic-cmek\", SecretArgs.builder()\n .secretId(\"secret\")\n .replication(SecretReplicationArgs.builder()\n .auto(SecretReplicationAutoArgs.builder()\n .customerManagedEncryption(SecretReplicationAutoCustomerManagedEncryptionArgs.builder()\n .kmsKeyName(\"kms-key\")\n .build())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(kms_secret_binding)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n kms-secret-binding:\n type: gcp:kms:CryptoKeyIAMMember\n properties:\n cryptoKeyId: kms-key\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-secretmanager.iam.gserviceaccount.com\n secret-with-automatic-cmek:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret\n replication:\n auto:\n customerManagedEncryption:\n kmsKeyName: kms-key\n options:\n dependson:\n - ${[\"kms-secret-binding\"]}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSecret can be imported using any of these accepted formats:\n\n* `projects/{{project}}/secrets/{{secret_id}}`\n\n* `{{project}}/{{secret_id}}`\n\n* `{{secret_id}}`\n\nWhen using the `pulumi import` command, Secret can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:secretmanager/secret:Secret default projects/{{project}}/secrets/{{secret_id}}\n```\n\n```sh\n$ pulumi import gcp:secretmanager/secret:Secret default {{project}}/{{secret_id}}\n```\n\n```sh\n$ pulumi import gcp:secretmanager/secret:Secret default {{secret_id}}\n```\n\n", "properties": { "annotations": { "type": "object", @@ -240362,7 +240362,7 @@ } }, "gcp:secretmanager/secretVersion:SecretVersion": { - "description": "A secret version resource.\n\n\n\n\n\n## Example Usage\n\n### Secret Version Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret_basic = new gcp.secretmanager.Secret(\"secret-basic\", {\n secretId: \"secret-version\",\n labels: {\n label: \"my-label\",\n },\n replication: {\n auto: {},\n },\n});\nconst secret_version_basic = new gcp.secretmanager.SecretVersion(\"secret-version-basic\", {\n secret: secret_basic.id,\n secretData: \"secret-data\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret_basic = gcp.secretmanager.Secret(\"secret-basic\",\n secret_id=\"secret-version\",\n labels={\n \"label\": \"my-label\",\n },\n replication={\n \"auto\": {},\n })\nsecret_version_basic = gcp.secretmanager.SecretVersion(\"secret-version-basic\",\n secret=secret_basic.id,\n secret_data=\"secret-data\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var secret_basic = new Gcp.SecretManager.Secret(\"secret-basic\", new()\n {\n SecretId = \"secret-version\",\n Labels = \n {\n { \"label\", \"my-label\" },\n },\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var secret_version_basic = new Gcp.SecretManager.SecretVersion(\"secret-version-basic\", new()\n {\n Secret = secret_basic.Id,\n SecretData = \"secret-data\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := secretmanager.NewSecret(ctx, \"secret-basic\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-version\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"my-label\"),\n\t\t\t},\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: nil,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"secret-version-basic\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret_basic.ID(),\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var secret_basic = new Secret(\"secret-basic\", SecretArgs.builder()\n .secretId(\"secret-version\")\n .labels(Map.of(\"label\", \"my-label\"))\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var secret_version_basic = new SecretVersion(\"secret-version-basic\", SecretVersionArgs.builder()\n .secret(secret_basic.id())\n .secretData(\"secret-data\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-basic:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret-version\n labels:\n label: my-label\n replication:\n auto: {}\n secret-version-basic:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"secret-basic\"].id}\n secretData: secret-data\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secret Version Deletion Policy Abandon\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret_basic = new gcp.secretmanager.Secret(\"secret-basic\", {\n secretId: \"secret-version\",\n replication: {\n userManaged: {\n replicas: [{\n location: \"us-central1\",\n }],\n },\n },\n});\nconst secret_version_deletion_policy = new gcp.secretmanager.SecretVersion(\"secret-version-deletion-policy\", {\n secret: secret_basic.id,\n secretData: \"secret-data\",\n deletionPolicy: \"ABANDON\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret_basic = gcp.secretmanager.Secret(\"secret-basic\",\n secret_id=\"secret-version\",\n replication={\n \"user_managed\": {\n \"replicas\": [{\n \"location\": \"us-central1\",\n }],\n },\n })\nsecret_version_deletion_policy = gcp.secretmanager.SecretVersion(\"secret-version-deletion-policy\",\n secret=secret_basic.id,\n secret_data=\"secret-data\",\n deletion_policy=\"ABANDON\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var secret_basic = new Gcp.SecretManager.Secret(\"secret-basic\", new()\n {\n SecretId = \"secret-version\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n UserManaged = new Gcp.SecretManager.Inputs.SecretReplicationUserManagedArgs\n {\n Replicas = new[]\n {\n new Gcp.SecretManager.Inputs.SecretReplicationUserManagedReplicaArgs\n {\n Location = \"us-central1\",\n },\n },\n },\n },\n });\n\n var secret_version_deletion_policy = new Gcp.SecretManager.SecretVersion(\"secret-version-deletion-policy\", new()\n {\n Secret = secret_basic.Id,\n SecretData = \"secret-data\",\n DeletionPolicy = \"ABANDON\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := secretmanager.NewSecret(ctx, \"secret-basic\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-version\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tUserManaged: \u0026secretmanager.SecretReplicationUserManagedArgs{\n\t\t\t\t\tReplicas: secretmanager.SecretReplicationUserManagedReplicaArray{\n\t\t\t\t\t\t\u0026secretmanager.SecretReplicationUserManagedReplicaArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"secret-version-deletion-policy\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret_basic.ID(),\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t\tDeletionPolicy: pulumi.String(\"ABANDON\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationUserManagedArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var secret_basic = new Secret(\"secret-basic\", SecretArgs.builder()\n .secretId(\"secret-version\")\n .replication(SecretReplicationArgs.builder()\n .userManaged(SecretReplicationUserManagedArgs.builder()\n .replicas(SecretReplicationUserManagedReplicaArgs.builder()\n .location(\"us-central1\")\n .build())\n .build())\n .build())\n .build());\n\n var secret_version_deletion_policy = new SecretVersion(\"secret-version-deletion-policy\", SecretVersionArgs.builder()\n .secret(secret_basic.id())\n .secretData(\"secret-data\")\n .deletionPolicy(\"ABANDON\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-basic:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret-version\n replication:\n userManaged:\n replicas:\n - location: us-central1\n secret-version-deletion-policy:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"secret-basic\"].id}\n secretData: secret-data\n deletionPolicy: ABANDON\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secret Version Deletion Policy Disable\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret_basic = new gcp.secretmanager.Secret(\"secret-basic\", {\n secretId: \"secret-version\",\n replication: {\n userManaged: {\n replicas: [{\n location: \"us-central1\",\n }],\n },\n },\n});\nconst secret_version_deletion_policy = new gcp.secretmanager.SecretVersion(\"secret-version-deletion-policy\", {\n secret: secret_basic.id,\n secretData: \"secret-data\",\n deletionPolicy: \"DISABLE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret_basic = gcp.secretmanager.Secret(\"secret-basic\",\n secret_id=\"secret-version\",\n replication={\n \"user_managed\": {\n \"replicas\": [{\n \"location\": \"us-central1\",\n }],\n },\n })\nsecret_version_deletion_policy = gcp.secretmanager.SecretVersion(\"secret-version-deletion-policy\",\n secret=secret_basic.id,\n secret_data=\"secret-data\",\n deletion_policy=\"DISABLE\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var secret_basic = new Gcp.SecretManager.Secret(\"secret-basic\", new()\n {\n SecretId = \"secret-version\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n UserManaged = new Gcp.SecretManager.Inputs.SecretReplicationUserManagedArgs\n {\n Replicas = new[]\n {\n new Gcp.SecretManager.Inputs.SecretReplicationUserManagedReplicaArgs\n {\n Location = \"us-central1\",\n },\n },\n },\n },\n });\n\n var secret_version_deletion_policy = new Gcp.SecretManager.SecretVersion(\"secret-version-deletion-policy\", new()\n {\n Secret = secret_basic.Id,\n SecretData = \"secret-data\",\n DeletionPolicy = \"DISABLE\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := secretmanager.NewSecret(ctx, \"secret-basic\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-version\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tUserManaged: \u0026secretmanager.SecretReplicationUserManagedArgs{\n\t\t\t\t\tReplicas: secretmanager.SecretReplicationUserManagedReplicaArray{\n\t\t\t\t\t\t\u0026secretmanager.SecretReplicationUserManagedReplicaArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"secret-version-deletion-policy\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret_basic.ID(),\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DISABLE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationUserManagedArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var secret_basic = new Secret(\"secret-basic\", SecretArgs.builder()\n .secretId(\"secret-version\")\n .replication(SecretReplicationArgs.builder()\n .userManaged(SecretReplicationUserManagedArgs.builder()\n .replicas(SecretReplicationUserManagedReplicaArgs.builder()\n .location(\"us-central1\")\n .build())\n .build())\n .build())\n .build());\n\n var secret_version_deletion_policy = new SecretVersion(\"secret-version-deletion-policy\", SecretVersionArgs.builder()\n .secret(secret_basic.id())\n .secretData(\"secret-data\")\n .deletionPolicy(\"DISABLE\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-basic:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret-version\n replication:\n userManaged:\n replicas:\n - location: us-central1\n secret-version-deletion-policy:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"secret-basic\"].id}\n secretData: secret-data\n deletionPolicy: DISABLE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secret Version With Base64 String Secret Data\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst secret_basic = new gcp.secretmanager.Secret(\"secret-basic\", {\n secretId: \"secret-version\",\n replication: {\n userManaged: {\n replicas: [{\n location: \"us-central1\",\n }],\n },\n },\n});\nconst secret_version_base64 = new gcp.secretmanager.SecretVersion(\"secret-version-base64\", {\n secret: secret_basic.id,\n isSecretDataBase64: true,\n secretData: std.filebase64({\n input: \"secret-data.pfx\",\n }).then(invoke =\u003e invoke.result),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nsecret_basic = gcp.secretmanager.Secret(\"secret-basic\",\n secret_id=\"secret-version\",\n replication={\n \"user_managed\": {\n \"replicas\": [{\n \"location\": \"us-central1\",\n }],\n },\n })\nsecret_version_base64 = gcp.secretmanager.SecretVersion(\"secret-version-base64\",\n secret=secret_basic.id,\n is_secret_data_base64=True,\n secret_data=std.filebase64(input=\"secret-data.pfx\").result)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var secret_basic = new Gcp.SecretManager.Secret(\"secret-basic\", new()\n {\n SecretId = \"secret-version\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n UserManaged = new Gcp.SecretManager.Inputs.SecretReplicationUserManagedArgs\n {\n Replicas = new[]\n {\n new Gcp.SecretManager.Inputs.SecretReplicationUserManagedReplicaArgs\n {\n Location = \"us-central1\",\n },\n },\n },\n },\n });\n\n var secret_version_base64 = new Gcp.SecretManager.SecretVersion(\"secret-version-base64\", new()\n {\n Secret = secret_basic.Id,\n IsSecretDataBase64 = true,\n SecretData = Std.Filebase64.Invoke(new()\n {\n Input = \"secret-data.pfx\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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, \"secret-basic\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-version\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tUserManaged: \u0026secretmanager.SecretReplicationUserManagedArgs{\n\t\t\t\t\tReplicas: secretmanager.SecretReplicationUserManagedReplicaArray{\n\t\t\t\t\t\t\u0026secretmanager.SecretReplicationUserManagedReplicaArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFilebase64, err := std.Filebase64(ctx, \u0026std.Filebase64Args{\n\t\t\tInput: \"secret-data.pfx\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"secret-version-base64\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret_basic.ID(),\n\t\t\tIsSecretDataBase64: pulumi.Bool(true),\n\t\t\tSecretData: pulumi.String(invokeFilebase64.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationUserManagedArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var secret_basic = new Secret(\"secret-basic\", SecretArgs.builder()\n .secretId(\"secret-version\")\n .replication(SecretReplicationArgs.builder()\n .userManaged(SecretReplicationUserManagedArgs.builder()\n .replicas(SecretReplicationUserManagedReplicaArgs.builder()\n .location(\"us-central1\")\n .build())\n .build())\n .build())\n .build());\n\n var secret_version_base64 = new SecretVersion(\"secret-version-base64\", SecretVersionArgs.builder()\n .secret(secret_basic.id())\n .isSecretDataBase64(true)\n .secretData(StdFunctions.filebase64(Filebase64Args.builder()\n .input(\"secret-data.pfx\")\n .build()).result())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-basic:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret-version\n replication:\n userManaged:\n replicas:\n - location: us-central1\n secret-version-base64:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"secret-basic\"].id}\n isSecretDataBase64: true\n secretData:\n fn::invoke:\n Function: std:filebase64\n Arguments:\n input: secret-data.pfx\n Return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSecretVersion can be imported using any of these accepted formats:\n\n* `projects/{{project}}/secrets/{{secret_id}}/versions/{{version}}`\n\nWhen using the `pulumi import` command, SecretVersion can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:secretmanager/secretVersion:SecretVersion default projects/{{project}}/secrets/{{secret_id}}/versions/{{version}}\n```\n\n", + "description": "A secret version resource.\n\n\n\n\n\n## Example Usage\n\n### Secret Version Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret_basic = new gcp.secretmanager.Secret(\"secret-basic\", {\n secretId: \"secret-version\",\n labels: {\n label: \"my-label\",\n },\n replication: {\n auto: {},\n },\n});\nconst secret_version_basic = new gcp.secretmanager.SecretVersion(\"secret-version-basic\", {\n secret: secret_basic.id,\n secretData: \"secret-data\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret_basic = gcp.secretmanager.Secret(\"secret-basic\",\n secret_id=\"secret-version\",\n labels={\n \"label\": \"my-label\",\n },\n replication={\n \"auto\": {},\n })\nsecret_version_basic = gcp.secretmanager.SecretVersion(\"secret-version-basic\",\n secret=secret_basic.id,\n secret_data=\"secret-data\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var secret_basic = new Gcp.SecretManager.Secret(\"secret-basic\", new()\n {\n SecretId = \"secret-version\",\n Labels = \n {\n { \"label\", \"my-label\" },\n },\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var secret_version_basic = new Gcp.SecretManager.SecretVersion(\"secret-version-basic\", new()\n {\n Secret = secret_basic.Id,\n SecretData = \"secret-data\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := secretmanager.NewSecret(ctx, \"secret-basic\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-version\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"my-label\"),\n\t\t\t},\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: \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, \"secret-version-basic\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret_basic.ID(),\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var secret_basic = new Secret(\"secret-basic\", SecretArgs.builder()\n .secretId(\"secret-version\")\n .labels(Map.of(\"label\", \"my-label\"))\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var secret_version_basic = new SecretVersion(\"secret-version-basic\", SecretVersionArgs.builder()\n .secret(secret_basic.id())\n .secretData(\"secret-data\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-basic:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret-version\n labels:\n label: my-label\n replication:\n auto: {}\n secret-version-basic:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"secret-basic\"].id}\n secretData: secret-data\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secret Version Deletion Policy Abandon\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret_basic = new gcp.secretmanager.Secret(\"secret-basic\", {\n secretId: \"secret-version\",\n replication: {\n userManaged: {\n replicas: [{\n location: \"us-central1\",\n }],\n },\n },\n});\nconst secret_version_deletion_policy = new gcp.secretmanager.SecretVersion(\"secret-version-deletion-policy\", {\n secret: secret_basic.id,\n secretData: \"secret-data\",\n deletionPolicy: \"ABANDON\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret_basic = gcp.secretmanager.Secret(\"secret-basic\",\n secret_id=\"secret-version\",\n replication={\n \"user_managed\": {\n \"replicas\": [{\n \"location\": \"us-central1\",\n }],\n },\n })\nsecret_version_deletion_policy = gcp.secretmanager.SecretVersion(\"secret-version-deletion-policy\",\n secret=secret_basic.id,\n secret_data=\"secret-data\",\n deletion_policy=\"ABANDON\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var secret_basic = new Gcp.SecretManager.Secret(\"secret-basic\", new()\n {\n SecretId = \"secret-version\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n UserManaged = new Gcp.SecretManager.Inputs.SecretReplicationUserManagedArgs\n {\n Replicas = new[]\n {\n new Gcp.SecretManager.Inputs.SecretReplicationUserManagedReplicaArgs\n {\n Location = \"us-central1\",\n },\n },\n },\n },\n });\n\n var secret_version_deletion_policy = new Gcp.SecretManager.SecretVersion(\"secret-version-deletion-policy\", new()\n {\n Secret = secret_basic.Id,\n SecretData = \"secret-data\",\n DeletionPolicy = \"ABANDON\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := secretmanager.NewSecret(ctx, \"secret-basic\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-version\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tUserManaged: \u0026secretmanager.SecretReplicationUserManagedArgs{\n\t\t\t\t\tReplicas: secretmanager.SecretReplicationUserManagedReplicaArray{\n\t\t\t\t\t\t\u0026secretmanager.SecretReplicationUserManagedReplicaArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"secret-version-deletion-policy\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret_basic.ID(),\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t\tDeletionPolicy: pulumi.String(\"ABANDON\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationUserManagedArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var secret_basic = new Secret(\"secret-basic\", SecretArgs.builder()\n .secretId(\"secret-version\")\n .replication(SecretReplicationArgs.builder()\n .userManaged(SecretReplicationUserManagedArgs.builder()\n .replicas(SecretReplicationUserManagedReplicaArgs.builder()\n .location(\"us-central1\")\n .build())\n .build())\n .build())\n .build());\n\n var secret_version_deletion_policy = new SecretVersion(\"secret-version-deletion-policy\", SecretVersionArgs.builder()\n .secret(secret_basic.id())\n .secretData(\"secret-data\")\n .deletionPolicy(\"ABANDON\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-basic:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret-version\n replication:\n userManaged:\n replicas:\n - location: us-central1\n secret-version-deletion-policy:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"secret-basic\"].id}\n secretData: secret-data\n deletionPolicy: ABANDON\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secret Version Deletion Policy Disable\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secret_basic = new gcp.secretmanager.Secret(\"secret-basic\", {\n secretId: \"secret-version\",\n replication: {\n userManaged: {\n replicas: [{\n location: \"us-central1\",\n }],\n },\n },\n});\nconst secret_version_deletion_policy = new gcp.secretmanager.SecretVersion(\"secret-version-deletion-policy\", {\n secret: secret_basic.id,\n secretData: \"secret-data\",\n deletionPolicy: \"DISABLE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret_basic = gcp.secretmanager.Secret(\"secret-basic\",\n secret_id=\"secret-version\",\n replication={\n \"user_managed\": {\n \"replicas\": [{\n \"location\": \"us-central1\",\n }],\n },\n })\nsecret_version_deletion_policy = gcp.secretmanager.SecretVersion(\"secret-version-deletion-policy\",\n secret=secret_basic.id,\n secret_data=\"secret-data\",\n deletion_policy=\"DISABLE\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var secret_basic = new Gcp.SecretManager.Secret(\"secret-basic\", new()\n {\n SecretId = \"secret-version\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n UserManaged = new Gcp.SecretManager.Inputs.SecretReplicationUserManagedArgs\n {\n Replicas = new[]\n {\n new Gcp.SecretManager.Inputs.SecretReplicationUserManagedReplicaArgs\n {\n Location = \"us-central1\",\n },\n },\n },\n },\n });\n\n var secret_version_deletion_policy = new Gcp.SecretManager.SecretVersion(\"secret-version-deletion-policy\", new()\n {\n Secret = secret_basic.Id,\n SecretData = \"secret-data\",\n DeletionPolicy = \"DISABLE\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := secretmanager.NewSecret(ctx, \"secret-basic\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-version\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tUserManaged: \u0026secretmanager.SecretReplicationUserManagedArgs{\n\t\t\t\t\tReplicas: secretmanager.SecretReplicationUserManagedReplicaArray{\n\t\t\t\t\t\t\u0026secretmanager.SecretReplicationUserManagedReplicaArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"secret-version-deletion-policy\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret_basic.ID(),\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DISABLE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationUserManagedArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var secret_basic = new Secret(\"secret-basic\", SecretArgs.builder()\n .secretId(\"secret-version\")\n .replication(SecretReplicationArgs.builder()\n .userManaged(SecretReplicationUserManagedArgs.builder()\n .replicas(SecretReplicationUserManagedReplicaArgs.builder()\n .location(\"us-central1\")\n .build())\n .build())\n .build())\n .build());\n\n var secret_version_deletion_policy = new SecretVersion(\"secret-version-deletion-policy\", SecretVersionArgs.builder()\n .secret(secret_basic.id())\n .secretData(\"secret-data\")\n .deletionPolicy(\"DISABLE\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-basic:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret-version\n replication:\n userManaged:\n replicas:\n - location: us-central1\n secret-version-deletion-policy:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"secret-basic\"].id}\n secretData: secret-data\n deletionPolicy: DISABLE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secret Version With Base64 String Secret Data\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst secret_basic = new gcp.secretmanager.Secret(\"secret-basic\", {\n secretId: \"secret-version\",\n replication: {\n userManaged: {\n replicas: [{\n location: \"us-central1\",\n }],\n },\n },\n});\nconst secret_version_base64 = new gcp.secretmanager.SecretVersion(\"secret-version-base64\", {\n secret: secret_basic.id,\n isSecretDataBase64: true,\n secretData: std.filebase64({\n input: \"secret-data.pfx\",\n }).then(invoke =\u003e invoke.result),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nsecret_basic = gcp.secretmanager.Secret(\"secret-basic\",\n secret_id=\"secret-version\",\n replication={\n \"user_managed\": {\n \"replicas\": [{\n \"location\": \"us-central1\",\n }],\n },\n })\nsecret_version_base64 = gcp.secretmanager.SecretVersion(\"secret-version-base64\",\n secret=secret_basic.id,\n is_secret_data_base64=True,\n secret_data=std.filebase64(input=\"secret-data.pfx\").result)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var secret_basic = new Gcp.SecretManager.Secret(\"secret-basic\", new()\n {\n SecretId = \"secret-version\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n UserManaged = new Gcp.SecretManager.Inputs.SecretReplicationUserManagedArgs\n {\n Replicas = new[]\n {\n new Gcp.SecretManager.Inputs.SecretReplicationUserManagedReplicaArgs\n {\n Location = \"us-central1\",\n },\n },\n },\n },\n });\n\n var secret_version_base64 = new Gcp.SecretManager.SecretVersion(\"secret-version-base64\", new()\n {\n Secret = secret_basic.Id,\n IsSecretDataBase64 = true,\n SecretData = Std.Filebase64.Invoke(new()\n {\n Input = \"secret-data.pfx\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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, \"secret-basic\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-version\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tUserManaged: \u0026secretmanager.SecretReplicationUserManagedArgs{\n\t\t\t\t\tReplicas: secretmanager.SecretReplicationUserManagedReplicaArray{\n\t\t\t\t\t\t\u0026secretmanager.SecretReplicationUserManagedReplicaArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFilebase64, err := std.Filebase64(ctx, \u0026std.Filebase64Args{\n\t\t\tInput: \"secret-data.pfx\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"secret-version-base64\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: secret_basic.ID(),\n\t\t\tIsSecretDataBase64: pulumi.Bool(true),\n\t\t\tSecretData: pulumi.String(invokeFilebase64.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationUserManagedArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var secret_basic = new Secret(\"secret-basic\", SecretArgs.builder()\n .secretId(\"secret-version\")\n .replication(SecretReplicationArgs.builder()\n .userManaged(SecretReplicationUserManagedArgs.builder()\n .replicas(SecretReplicationUserManagedReplicaArgs.builder()\n .location(\"us-central1\")\n .build())\n .build())\n .build())\n .build());\n\n var secret_version_base64 = new SecretVersion(\"secret-version-base64\", SecretVersionArgs.builder()\n .secret(secret_basic.id())\n .isSecretDataBase64(true)\n .secretData(StdFunctions.filebase64(Filebase64Args.builder()\n .input(\"secret-data.pfx\")\n .build()).result())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-basic:\n type: gcp:secretmanager:Secret\n properties:\n secretId: secret-version\n replication:\n userManaged:\n replicas:\n - location: us-central1\n secret-version-base64:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"secret-basic\"].id}\n isSecretDataBase64: true\n secretData:\n fn::invoke:\n Function: std:filebase64\n Arguments:\n input: secret-data.pfx\n Return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSecretVersion can be imported using any of these accepted formats:\n\n* `projects/{{project}}/secrets/{{secret_id}}/versions/{{version}}`\n\nWhen using the `pulumi import` command, SecretVersion can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:secretmanager/secretVersion:SecretVersion default projects/{{project}}/secrets/{{secret_id}}/versions/{{version}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -240488,7 +240488,7 @@ } }, "gcp:securesourcemanager/instance:Instance": { - "description": "Instances are deployed to an available Google Cloud region and are accessible via their web interface.\n\n\nTo get more information about Instance, see:\n\n* [API documentation](https://cloud.google.com/secure-source-manager/docs/reference/rest/v1/projects.locations.instances)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/secure-source-manager/docs/create-instance)\n\n## Example Usage\n\n### Secure Source Manager Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.securesourcemanager.Instance(\"default\", {\n location: \"us-central1\",\n instanceId: \"my-instance\",\n labels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.securesourcemanager.Instance(\"default\",\n location=\"us-central1\",\n instance_id=\"my-instance\",\n labels={\n \"foo\": \"bar\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.SecureSourceManager.Instance(\"default\", new()\n {\n Location = \"us-central1\",\n InstanceId = \"my-instance\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/securesourcemanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := securesourcemanager.NewInstance(ctx, \"default\", \u0026securesourcemanager.InstanceArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInstanceId: pulumi.String(\"my-instance\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.securesourcemanager.Instance;\nimport com.pulumi.gcp.securesourcemanager.InstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Instance(\"default\", InstanceArgs.builder()\n .location(\"us-central1\")\n .instanceId(\"my-instance\")\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:securesourcemanager:Instance\n properties:\n location: us-central1\n instanceId: my-instance\n labels:\n foo: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secure Source Manager Instance Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"my-keyring\",\n location: \"us-central1\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"my-key\",\n keyRing: keyRing.id,\n});\nconst project = gcp.organizations.getProject({});\nconst cryptoKeyBinding = new gcp.kms.CryptoKeyIAMMember(\"crypto_key_binding\", {\n cryptoKeyId: cryptoKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com`),\n});\nconst _default = new gcp.securesourcemanager.Instance(\"default\", {\n location: \"us-central1\",\n instanceId: \"my-instance\",\n kmsKey: cryptoKey.id,\n}, {\n dependsOn: [cryptoKeyBinding],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"my-keyring\",\n location=\"us-central1\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"my-key\",\n key_ring=key_ring.id)\nproject = gcp.organizations.get_project()\ncrypto_key_binding = gcp.kms.CryptoKeyIAMMember(\"crypto_key_binding\",\n crypto_key_id=crypto_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com\")\ndefault = gcp.securesourcemanager.Instance(\"default\",\n location=\"us-central1\",\n instance_id=\"my-instance\",\n kms_key=crypto_key.id,\n opts = pulumi.ResourceOptions(depends_on=[crypto_key_binding]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"my-keyring\",\n Location = \"us-central1\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"my-key\",\n KeyRing = keyRing.Id,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cryptoKeyBinding = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key_binding\", new()\n {\n CryptoKeyId = cryptoKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-sourcemanager.iam.gserviceaccount.com\",\n });\n\n var @default = new Gcp.SecureSourceManager.Instance(\"default\", new()\n {\n Location = \"us-central1\",\n InstanceId = \"my-instance\",\n KmsKey = cryptoKey.Id,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cryptoKeyBinding,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/securesourcemanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"my-keyring\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"my-key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKeyBinding, err := kms.NewCryptoKeyIAMMember(ctx, \"crypto_key_binding\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: cryptoKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-sourcemanager.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = securesourcemanager.NewInstance(ctx, \"default\", \u0026securesourcemanager.InstanceArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInstanceId: pulumi.String(\"my-instance\"),\n\t\t\tKmsKey: cryptoKey.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcryptoKeyBinding,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.securesourcemanager.Instance;\nimport com.pulumi.gcp.securesourcemanager.InstanceArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"my-keyring\")\n .location(\"us-central1\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"my-key\")\n .keyRing(keyRing.id())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var cryptoKeyBinding = new CryptoKeyIAMMember(\"cryptoKeyBinding\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(cryptoKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-sourcemanager.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var default_ = new Instance(\"default\", InstanceArgs.builder()\n .location(\"us-central1\")\n .instanceId(\"my-instance\")\n .kmsKey(cryptoKey.id())\n .build(), CustomResourceOptions.builder()\n .dependsOn(cryptoKeyBinding)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: my-keyring\n location: us-central1\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: my-key\n keyRing: ${keyRing.id}\n cryptoKeyBinding:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key_binding\n properties:\n cryptoKeyId: ${cryptoKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com\n default:\n type: gcp:securesourcemanager:Instance\n properties:\n location: us-central1\n instanceId: my-instance\n kmsKey: ${cryptoKey.id}\n options:\n dependson:\n - ${cryptoKeyBinding}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secure Source Manager Instance Private\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\nconst caPool = new gcp.certificateauthority.CaPool(\"ca_pool\", {\n name: \"ca-pool\",\n location: \"us-central1\",\n tier: \"ENTERPRISE\",\n publishingOptions: {\n publishCaCert: true,\n publishCrl: true,\n },\n});\nconst rootCa = new gcp.certificateauthority.Authority(\"root_ca\", {\n pool: caPool.name,\n certificateAuthorityId: \"root-ca\",\n location: \"us-central1\",\n config: {\n subjectConfig: {\n subject: {\n organization: \"google\",\n commonName: \"my-certificate-authority\",\n },\n },\n x509Config: {\n caOptions: {\n isCa: true,\n },\n keyUsage: {\n baseKeyUsage: {\n certSign: true,\n crlSign: true,\n },\n extendedKeyUsage: {\n serverAuth: true,\n },\n },\n },\n },\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n deletionProtection: false,\n ignoreActiveCertificatesOnDeletion: true,\n skipGracePeriod: true,\n});\nconst project = gcp.organizations.getProject({});\nconst caPoolBinding = new gcp.certificateauthority.CaPoolIamBinding(\"ca_pool_binding\", {\n caPool: caPool.id,\n role: \"roles/privateca.certificateRequester\",\n members: [project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com`)],\n});\n// ca pool IAM permissions can take time to propagate\nconst wait120Seconds = new time.index.Sleep(\"wait_120_seconds\", {createDuration: \"120s\"}, {\n dependsOn: [caPoolBinding],\n});\nconst _default = new gcp.securesourcemanager.Instance(\"default\", {\n instanceId: \"my-instance\",\n location: \"us-central1\",\n privateConfig: {\n isPrivate: true,\n caPool: caPool.id,\n },\n}, {\n dependsOn: [\n rootCa,\n wait120Seconds,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\nca_pool = gcp.certificateauthority.CaPool(\"ca_pool\",\n name=\"ca-pool\",\n location=\"us-central1\",\n tier=\"ENTERPRISE\",\n publishing_options={\n \"publish_ca_cert\": True,\n \"publish_crl\": True,\n })\nroot_ca = gcp.certificateauthority.Authority(\"root_ca\",\n pool=ca_pool.name,\n certificate_authority_id=\"root-ca\",\n location=\"us-central1\",\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"google\",\n \"common_name\": \"my-certificate-authority\",\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": True,\n },\n },\n },\n },\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n },\n deletion_protection=False,\n ignore_active_certificates_on_deletion=True,\n skip_grace_period=True)\nproject = gcp.organizations.get_project()\nca_pool_binding = gcp.certificateauthority.CaPoolIamBinding(\"ca_pool_binding\",\n ca_pool=ca_pool.id,\n role=\"roles/privateca.certificateRequester\",\n members=[f\"serviceAccount:service-{project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com\"])\n# ca pool IAM permissions can take time to propagate\nwait120_seconds = time.index.Sleep(\"wait_120_seconds\", create_duration=120s,\nopts = pulumi.ResourceOptions(depends_on=[ca_pool_binding]))\ndefault = gcp.securesourcemanager.Instance(\"default\",\n instance_id=\"my-instance\",\n location=\"us-central1\",\n private_config={\n \"is_private\": True,\n \"ca_pool\": ca_pool.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n root_ca,\n wait120_seconds,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Time = Pulumi.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var caPool = new Gcp.CertificateAuthority.CaPool(\"ca_pool\", new()\n {\n Name = \"ca-pool\",\n Location = \"us-central1\",\n Tier = \"ENTERPRISE\",\n PublishingOptions = new Gcp.CertificateAuthority.Inputs.CaPoolPublishingOptionsArgs\n {\n PublishCaCert = true,\n PublishCrl = true,\n },\n });\n\n var rootCa = new Gcp.CertificateAuthority.Authority(\"root_ca\", new()\n {\n Pool = caPool.Name,\n CertificateAuthorityId = \"root-ca\",\n Location = \"us-central1\",\n Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectArgs\n {\n Organization = \"google\",\n CommonName = \"my-certificate-authority\",\n },\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigCaOptionsArgs\n {\n IsCa = true,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n CertSign = true,\n CrlSign = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n },\n },\n },\n },\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n Algorithm = \"RSA_PKCS1_4096_SHA256\",\n },\n DeletionProtection = false,\n IgnoreActiveCertificatesOnDeletion = true,\n SkipGracePeriod = true,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var caPoolBinding = new Gcp.CertificateAuthority.CaPoolIamBinding(\"ca_pool_binding\", new()\n {\n CaPool = caPool.Id,\n Role = \"roles/privateca.certificateRequester\",\n Members = new[]\n {\n $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-sourcemanager.iam.gserviceaccount.com\",\n },\n });\n\n // ca pool IAM permissions can take time to propagate\n var wait120Seconds = new Time.Index.Sleep(\"wait_120_seconds\", new()\n {\n CreateDuration = \"120s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n caPoolBinding,\n },\n });\n\n var @default = new Gcp.SecureSourceManager.Instance(\"default\", new()\n {\n InstanceId = \"my-instance\",\n Location = \"us-central1\",\n PrivateConfig = new Gcp.SecureSourceManager.Inputs.InstancePrivateConfigArgs\n {\n IsPrivate = true,\n CaPool = caPool.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n rootCa,\n wait120Seconds,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/securesourcemanager\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcaPool, err := certificateauthority.NewCaPool(ctx, \"ca_pool\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tName: pulumi.String(\"ca-pool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTier: pulumi.String(\"ENTERPRISE\"),\n\t\t\tPublishingOptions: \u0026certificateauthority.CaPoolPublishingOptionsArgs{\n\t\t\t\tPublishCaCert: pulumi.Bool(true),\n\t\t\t\tPublishCrl: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trootCa, err := certificateauthority.NewAuthority(ctx, \"root_ca\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tPool: caPool.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"root-ca\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConfig: \u0026certificateauthority.AuthorityConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.AuthorityConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tOrganization: pulumi.String(\"google\"),\n\t\t\t\t\t\tCommonName: pulumi.String(\"my-certificate-authority\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tX509Config: \u0026certificateauthority.AuthorityConfigX509ConfigArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.AuthorityConfigX509ConfigCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs{\n\t\t\t\t\t\t\tCertSign: pulumi.Bool(true),\n\t\t\t\t\t\t\tCrlSign: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tServerAuth: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"RSA_PKCS1_4096_SHA256\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tIgnoreActiveCertificatesOnDeletion: pulumi.Bool(true),\n\t\t\tSkipGracePeriod: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcaPoolBinding, err := certificateauthority.NewCaPoolIamBinding(ctx, \"ca_pool_binding\", \u0026certificateauthority.CaPoolIamBindingArgs{\n\t\t\tCaPool: caPool.ID(),\n\t\t\tRole: pulumi.String(\"roles/privateca.certificateRequester\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-sourcemanager.iam.gserviceaccount.com\", project.Number),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// ca pool IAM permissions can take time to propagate\n\t\twait120Seconds, err := time.NewSleep(ctx, \"wait_120_seconds\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"120s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcaPoolBinding,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = securesourcemanager.NewInstance(ctx, \"default\", \u0026securesourcemanager.InstanceArgs{\n\t\t\tInstanceId: pulumi.String(\"my-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPrivateConfig: \u0026securesourcemanager.InstancePrivateConfigArgs{\n\t\t\t\tIsPrivate: pulumi.Bool(true),\n\t\t\t\tCaPool: caPool.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\trootCa,\n\t\t\twait120Seconds,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificateauthority.CaPool;\nimport com.pulumi.gcp.certificateauthority.CaPoolArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolPublishingOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.Authority;\nimport com.pulumi.gcp.certificateauthority.AuthorityArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityKeySpecArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamBinding;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamBindingArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.securesourcemanager.Instance;\nimport com.pulumi.gcp.securesourcemanager.InstanceArgs;\nimport com.pulumi.gcp.securesourcemanager.inputs.InstancePrivateConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var caPool = new CaPool(\"caPool\", CaPoolArgs.builder()\n .name(\"ca-pool\")\n .location(\"us-central1\")\n .tier(\"ENTERPRISE\")\n .publishingOptions(CaPoolPublishingOptionsArgs.builder()\n .publishCaCert(true)\n .publishCrl(true)\n .build())\n .build());\n\n var rootCa = new Authority(\"rootCa\", AuthorityArgs.builder()\n .pool(caPool.name())\n .certificateAuthorityId(\"root-ca\")\n .location(\"us-central1\")\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"google\")\n .commonName(\"my-certificate-authority\")\n .build())\n .build())\n .x509Config(AuthorityConfigX509ConfigArgs.builder()\n .caOptions(AuthorityConfigX509ConfigCaOptionsArgs.builder()\n .isCa(true)\n .build())\n .keyUsage(AuthorityConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .certSign(true)\n .crlSign(true)\n .build())\n .extendedKeyUsage(AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .build())\n .build())\n .build())\n .build())\n .keySpec(AuthorityKeySpecArgs.builder()\n .algorithm(\"RSA_PKCS1_4096_SHA256\")\n .build())\n .deletionProtection(false)\n .ignoreActiveCertificatesOnDeletion(true)\n .skipGracePeriod(true)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var caPoolBinding = new CaPoolIamBinding(\"caPoolBinding\", CaPoolIamBindingArgs.builder()\n .caPool(caPool.id())\n .role(\"roles/privateca.certificateRequester\")\n .members(String.format(\"serviceAccount:service-%s@gcp-sa-sourcemanager.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n // ca pool IAM permissions can take time to propagate\n var wait120Seconds = new Sleep(\"wait120Seconds\", SleepArgs.builder()\n .createDuration(\"120s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(caPoolBinding)\n .build());\n\n var default_ = new Instance(\"default\", InstanceArgs.builder()\n .instanceId(\"my-instance\")\n .location(\"us-central1\")\n .privateConfig(InstancePrivateConfigArgs.builder()\n .isPrivate(true)\n .caPool(caPool.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n rootCa,\n wait120Seconds)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n caPool:\n type: gcp:certificateauthority:CaPool\n name: ca_pool\n properties:\n name: ca-pool\n location: us-central1\n tier: ENTERPRISE\n publishingOptions:\n publishCaCert: true\n publishCrl: true\n rootCa:\n type: gcp:certificateauthority:Authority\n name: root_ca\n properties:\n pool: ${caPool.name}\n certificateAuthorityId: root-ca\n location: us-central1\n config:\n subjectConfig:\n subject:\n organization: google\n commonName: my-certificate-authority\n x509Config:\n caOptions:\n isCa: true\n keyUsage:\n baseKeyUsage:\n certSign: true\n crlSign: true\n extendedKeyUsage:\n serverAuth: true\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n deletionProtection: false\n ignoreActiveCertificatesOnDeletion: true\n skipGracePeriod: true\n caPoolBinding:\n type: gcp:certificateauthority:CaPoolIamBinding\n name: ca_pool_binding\n properties:\n caPool: ${caPool.id}\n role: roles/privateca.certificateRequester\n members:\n - serviceAccount:service-${project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com\n default:\n type: gcp:securesourcemanager:Instance\n properties:\n instanceId: my-instance\n location: us-central1\n privateConfig:\n isPrivate: true\n caPool: ${caPool.id}\n options:\n dependson:\n - ${rootCa}\n - ${wait120Seconds}\n # ca pool IAM permissions can take time to propagate\n wait120Seconds:\n type: time:sleep\n name: wait_120_seconds\n properties:\n createDuration: 120s\n options:\n dependson:\n - ${caPoolBinding}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secure Source Manager Instance Private Psc Backend\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\nconst project = gcp.organizations.getProject({});\nconst caPool = new gcp.certificateauthority.CaPool(\"ca_pool\", {\n name: \"ca-pool\",\n location: \"us-central1\",\n tier: \"ENTERPRISE\",\n publishingOptions: {\n publishCaCert: true,\n publishCrl: true,\n },\n});\nconst rootCa = new gcp.certificateauthority.Authority(\"root_ca\", {\n pool: caPool.name,\n certificateAuthorityId: \"root-ca\",\n location: \"us-central1\",\n config: {\n subjectConfig: {\n subject: {\n organization: \"google\",\n commonName: \"my-certificate-authority\",\n },\n },\n x509Config: {\n caOptions: {\n isCa: true,\n },\n keyUsage: {\n baseKeyUsage: {\n certSign: true,\n crlSign: true,\n },\n extendedKeyUsage: {\n serverAuth: true,\n },\n },\n },\n },\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n deletionProtection: false,\n ignoreActiveCertificatesOnDeletion: true,\n skipGracePeriod: true,\n});\nconst caPoolBinding = new gcp.certificateauthority.CaPoolIamBinding(\"ca_pool_binding\", {\n caPool: caPool.id,\n role: \"roles/privateca.certificateRequester\",\n members: [project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com`)],\n});\n// ca pool IAM permissions can take time to propagate\nconst wait120Seconds = new time.index.Sleep(\"wait_120_seconds\", {createDuration: \"120s\"}, {\n dependsOn: [caPoolBinding],\n});\n// See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\nconst _default = new gcp.securesourcemanager.Instance(\"default\", {\n instanceId: \"my-instance\",\n location: \"us-central1\",\n privateConfig: {\n isPrivate: true,\n caPool: caPool.id,\n },\n}, {\n dependsOn: [\n rootCa,\n wait120Seconds,\n ],\n});\n// Connect SSM private instance with L4 proxy ILB.\nconst network = new gcp.compute.Network(\"network\", {\n name: \"my-network\",\n autoCreateSubnetworks: false,\n});\nconst subnet = new gcp.compute.Subnetwork(\"subnet\", {\n name: \"my-subnet\",\n region: \"us-central1\",\n network: network.id,\n ipCidrRange: \"10.0.1.0/24\",\n privateIpGoogleAccess: true,\n});\nconst pscNeg = new gcp.compute.RegionNetworkEndpointGroup(\"psc_neg\", {\n name: \"my-neg\",\n region: \"us-central1\",\n networkEndpointType: \"PRIVATE_SERVICE_CONNECT\",\n pscTargetService: _default.privateConfig.apply(privateConfig =\u003e privateConfig?.httpServiceAttachment),\n network: network.id,\n subnetwork: subnet.id,\n});\nconst backendService = new gcp.compute.RegionBackendService(\"backend_service\", {\n name: \"my-backend-service\",\n region: \"us-central1\",\n protocol: \"TCP\",\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n backends: [{\n group: pscNeg.id,\n balancingMode: \"UTILIZATION\",\n capacityScaler: 1,\n }],\n});\nconst proxySubnet = new gcp.compute.Subnetwork(\"proxy_subnet\", {\n name: \"my-proxy-subnet\",\n region: \"us-central1\",\n network: network.id,\n ipCidrRange: \"10.0.2.0/24\",\n purpose: \"REGIONAL_MANAGED_PROXY\",\n role: \"ACTIVE\",\n});\nconst targetProxy = new gcp.compute.RegionTargetTcpProxy(\"target_proxy\", {\n name: \"my-target-proxy\",\n region: \"us-central1\",\n backendService: backendService.id,\n});\nconst fwRuleTargetProxy = new gcp.compute.ForwardingRule(\"fw_rule_target_proxy\", {\n name: \"fw-rule-target-proxy\",\n region: \"us-central1\",\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n ipProtocol: \"TCP\",\n portRange: \"443\",\n target: targetProxy.id,\n network: network.id,\n subnetwork: subnet.id,\n networkTier: \"PREMIUM\",\n}, {\n dependsOn: [proxySubnet],\n});\nconst privateZone = new gcp.dns.ManagedZone(\"private_zone\", {\n name: \"my-dns-zone\",\n dnsName: \"p.sourcemanager.dev.\",\n visibility: \"private\",\n privateVisibilityConfig: {\n networks: [{\n networkUrl: network.id,\n }],\n },\n});\nconst ssmInstanceHtmlRecord = new gcp.dns.RecordSet(\"ssm_instance_html_record\", {\n name: _default.hostConfigs.apply(hostConfigs =\u003e `${hostConfigs[0].html}.`),\n type: \"A\",\n ttl: 300,\n managedZone: privateZone.name,\n rrdatas: [fwRuleTargetProxy.ipAddress],\n});\nconst ssmInstanceApiRecord = new gcp.dns.RecordSet(\"ssm_instance_api_record\", {\n name: _default.hostConfigs.apply(hostConfigs =\u003e `${hostConfigs[0].api}.`),\n type: \"A\",\n ttl: 300,\n managedZone: privateZone.name,\n rrdatas: [fwRuleTargetProxy.ipAddress],\n});\nconst ssmInstanceGitRecord = new gcp.dns.RecordSet(\"ssm_instance_git_record\", {\n name: _default.hostConfigs.apply(hostConfigs =\u003e `${hostConfigs[0].gitHttp}.`),\n type: \"A\",\n ttl: 300,\n managedZone: privateZone.name,\n rrdatas: [fwRuleTargetProxy.ipAddress],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\nproject = gcp.organizations.get_project()\nca_pool = gcp.certificateauthority.CaPool(\"ca_pool\",\n name=\"ca-pool\",\n location=\"us-central1\",\n tier=\"ENTERPRISE\",\n publishing_options={\n \"publish_ca_cert\": True,\n \"publish_crl\": True,\n })\nroot_ca = gcp.certificateauthority.Authority(\"root_ca\",\n pool=ca_pool.name,\n certificate_authority_id=\"root-ca\",\n location=\"us-central1\",\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"google\",\n \"common_name\": \"my-certificate-authority\",\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": True,\n },\n },\n },\n },\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n },\n deletion_protection=False,\n ignore_active_certificates_on_deletion=True,\n skip_grace_period=True)\nca_pool_binding = gcp.certificateauthority.CaPoolIamBinding(\"ca_pool_binding\",\n ca_pool=ca_pool.id,\n role=\"roles/privateca.certificateRequester\",\n members=[f\"serviceAccount:service-{project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com\"])\n# ca pool IAM permissions can take time to propagate\nwait120_seconds = time.index.Sleep(\"wait_120_seconds\", create_duration=120s,\nopts = pulumi.ResourceOptions(depends_on=[ca_pool_binding]))\n# See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\ndefault = gcp.securesourcemanager.Instance(\"default\",\n instance_id=\"my-instance\",\n location=\"us-central1\",\n private_config={\n \"is_private\": True,\n \"ca_pool\": ca_pool.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n root_ca,\n wait120_seconds,\n ]))\n# Connect SSM private instance with L4 proxy ILB.\nnetwork = gcp.compute.Network(\"network\",\n name=\"my-network\",\n auto_create_subnetworks=False)\nsubnet = gcp.compute.Subnetwork(\"subnet\",\n name=\"my-subnet\",\n region=\"us-central1\",\n network=network.id,\n ip_cidr_range=\"10.0.1.0/24\",\n private_ip_google_access=True)\npsc_neg = gcp.compute.RegionNetworkEndpointGroup(\"psc_neg\",\n name=\"my-neg\",\n region=\"us-central1\",\n network_endpoint_type=\"PRIVATE_SERVICE_CONNECT\",\n psc_target_service=default.private_config.http_service_attachment,\n network=network.id,\n subnetwork=subnet.id)\nbackend_service = gcp.compute.RegionBackendService(\"backend_service\",\n name=\"my-backend-service\",\n region=\"us-central1\",\n protocol=\"TCP\",\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n backends=[{\n \"group\": psc_neg.id,\n \"balancing_mode\": \"UTILIZATION\",\n \"capacity_scaler\": 1,\n }])\nproxy_subnet = gcp.compute.Subnetwork(\"proxy_subnet\",\n name=\"my-proxy-subnet\",\n region=\"us-central1\",\n network=network.id,\n ip_cidr_range=\"10.0.2.0/24\",\n purpose=\"REGIONAL_MANAGED_PROXY\",\n role=\"ACTIVE\")\ntarget_proxy = gcp.compute.RegionTargetTcpProxy(\"target_proxy\",\n name=\"my-target-proxy\",\n region=\"us-central1\",\n backend_service=backend_service.id)\nfw_rule_target_proxy = gcp.compute.ForwardingRule(\"fw_rule_target_proxy\",\n name=\"fw-rule-target-proxy\",\n region=\"us-central1\",\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n ip_protocol=\"TCP\",\n port_range=\"443\",\n target=target_proxy.id,\n network=network.id,\n subnetwork=subnet.id,\n network_tier=\"PREMIUM\",\n opts = pulumi.ResourceOptions(depends_on=[proxy_subnet]))\nprivate_zone = gcp.dns.ManagedZone(\"private_zone\",\n name=\"my-dns-zone\",\n dns_name=\"p.sourcemanager.dev.\",\n visibility=\"private\",\n private_visibility_config={\n \"networks\": [{\n \"network_url\": network.id,\n }],\n })\nssm_instance_html_record = gcp.dns.RecordSet(\"ssm_instance_html_record\",\n name=default.host_configs.apply(lambda host_configs: f\"{host_configs[0].html}.\"),\n type=\"A\",\n ttl=300,\n managed_zone=private_zone.name,\n rrdatas=[fw_rule_target_proxy.ip_address])\nssm_instance_api_record = gcp.dns.RecordSet(\"ssm_instance_api_record\",\n name=default.host_configs.apply(lambda host_configs: f\"{host_configs[0].api}.\"),\n type=\"A\",\n ttl=300,\n managed_zone=private_zone.name,\n rrdatas=[fw_rule_target_proxy.ip_address])\nssm_instance_git_record = gcp.dns.RecordSet(\"ssm_instance_git_record\",\n name=default.host_configs.apply(lambda host_configs: f\"{host_configs[0].git_http}.\"),\n type=\"A\",\n ttl=300,\n managed_zone=private_zone.name,\n rrdatas=[fw_rule_target_proxy.ip_address])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Time = Pulumi.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var caPool = new Gcp.CertificateAuthority.CaPool(\"ca_pool\", new()\n {\n Name = \"ca-pool\",\n Location = \"us-central1\",\n Tier = \"ENTERPRISE\",\n PublishingOptions = new Gcp.CertificateAuthority.Inputs.CaPoolPublishingOptionsArgs\n {\n PublishCaCert = true,\n PublishCrl = true,\n },\n });\n\n var rootCa = new Gcp.CertificateAuthority.Authority(\"root_ca\", new()\n {\n Pool = caPool.Name,\n CertificateAuthorityId = \"root-ca\",\n Location = \"us-central1\",\n Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectArgs\n {\n Organization = \"google\",\n CommonName = \"my-certificate-authority\",\n },\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigCaOptionsArgs\n {\n IsCa = true,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n CertSign = true,\n CrlSign = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n },\n },\n },\n },\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n Algorithm = \"RSA_PKCS1_4096_SHA256\",\n },\n DeletionProtection = false,\n IgnoreActiveCertificatesOnDeletion = true,\n SkipGracePeriod = true,\n });\n\n var caPoolBinding = new Gcp.CertificateAuthority.CaPoolIamBinding(\"ca_pool_binding\", new()\n {\n CaPool = caPool.Id,\n Role = \"roles/privateca.certificateRequester\",\n Members = new[]\n {\n $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-sourcemanager.iam.gserviceaccount.com\",\n },\n });\n\n // ca pool IAM permissions can take time to propagate\n var wait120Seconds = new Time.Index.Sleep(\"wait_120_seconds\", new()\n {\n CreateDuration = \"120s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n caPoolBinding,\n },\n });\n\n // See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\n var @default = new Gcp.SecureSourceManager.Instance(\"default\", new()\n {\n InstanceId = \"my-instance\",\n Location = \"us-central1\",\n PrivateConfig = new Gcp.SecureSourceManager.Inputs.InstancePrivateConfigArgs\n {\n IsPrivate = true,\n CaPool = caPool.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n rootCa,\n wait120Seconds,\n },\n });\n\n // Connect SSM private instance with L4 proxy ILB.\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"my-network\",\n AutoCreateSubnetworks = false,\n });\n\n var subnet = new Gcp.Compute.Subnetwork(\"subnet\", new()\n {\n Name = \"my-subnet\",\n Region = \"us-central1\",\n Network = network.Id,\n IpCidrRange = \"10.0.1.0/24\",\n PrivateIpGoogleAccess = true,\n });\n\n var pscNeg = new Gcp.Compute.RegionNetworkEndpointGroup(\"psc_neg\", new()\n {\n Name = \"my-neg\",\n Region = \"us-central1\",\n NetworkEndpointType = \"PRIVATE_SERVICE_CONNECT\",\n PscTargetService = @default.PrivateConfig.Apply(privateConfig =\u003e privateConfig?.HttpServiceAttachment),\n Network = network.Id,\n Subnetwork = subnet.Id,\n });\n\n var backendService = new Gcp.Compute.RegionBackendService(\"backend_service\", new()\n {\n Name = \"my-backend-service\",\n Region = \"us-central1\",\n Protocol = \"TCP\",\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n Backends = new[]\n {\n new Gcp.Compute.Inputs.RegionBackendServiceBackendArgs\n {\n Group = pscNeg.Id,\n BalancingMode = \"UTILIZATION\",\n CapacityScaler = 1,\n },\n },\n });\n\n var proxySubnet = new Gcp.Compute.Subnetwork(\"proxy_subnet\", new()\n {\n Name = \"my-proxy-subnet\",\n Region = \"us-central1\",\n Network = network.Id,\n IpCidrRange = \"10.0.2.0/24\",\n Purpose = \"REGIONAL_MANAGED_PROXY\",\n Role = \"ACTIVE\",\n });\n\n var targetProxy = new Gcp.Compute.RegionTargetTcpProxy(\"target_proxy\", new()\n {\n Name = \"my-target-proxy\",\n Region = \"us-central1\",\n BackendService = backendService.Id,\n });\n\n var fwRuleTargetProxy = new Gcp.Compute.ForwardingRule(\"fw_rule_target_proxy\", new()\n {\n Name = \"fw-rule-target-proxy\",\n Region = \"us-central1\",\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n IpProtocol = \"TCP\",\n PortRange = \"443\",\n Target = targetProxy.Id,\n Network = network.Id,\n Subnetwork = subnet.Id,\n NetworkTier = \"PREMIUM\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n proxySubnet,\n },\n });\n\n var privateZone = new Gcp.Dns.ManagedZone(\"private_zone\", new()\n {\n Name = \"my-dns-zone\",\n DnsName = \"p.sourcemanager.dev.\",\n Visibility = \"private\",\n PrivateVisibilityConfig = new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigArgs\n {\n Networks = new[]\n {\n new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigNetworkArgs\n {\n NetworkUrl = network.Id,\n },\n },\n },\n });\n\n var ssmInstanceHtmlRecord = new Gcp.Dns.RecordSet(\"ssm_instance_html_record\", new()\n {\n Name = @default.HostConfigs.Apply(hostConfigs =\u003e $\"{hostConfigs[0].Html}.\"),\n Type = \"A\",\n Ttl = 300,\n ManagedZone = privateZone.Name,\n Rrdatas = new[]\n {\n fwRuleTargetProxy.IpAddress,\n },\n });\n\n var ssmInstanceApiRecord = new Gcp.Dns.RecordSet(\"ssm_instance_api_record\", new()\n {\n Name = @default.HostConfigs.Apply(hostConfigs =\u003e $\"{hostConfigs[0].Api}.\"),\n Type = \"A\",\n Ttl = 300,\n ManagedZone = privateZone.Name,\n Rrdatas = new[]\n {\n fwRuleTargetProxy.IpAddress,\n },\n });\n\n var ssmInstanceGitRecord = new Gcp.Dns.RecordSet(\"ssm_instance_git_record\", new()\n {\n Name = @default.HostConfigs.Apply(hostConfigs =\u003e $\"{hostConfigs[0].GitHttp}.\"),\n Type = \"A\",\n Ttl = 300,\n ManagedZone = privateZone.Name,\n Rrdatas = new[]\n {\n fwRuleTargetProxy.IpAddress,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/securesourcemanager\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcaPool, err := certificateauthority.NewCaPool(ctx, \"ca_pool\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tName: pulumi.String(\"ca-pool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTier: pulumi.String(\"ENTERPRISE\"),\n\t\t\tPublishingOptions: \u0026certificateauthority.CaPoolPublishingOptionsArgs{\n\t\t\t\tPublishCaCert: pulumi.Bool(true),\n\t\t\t\tPublishCrl: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trootCa, err := certificateauthority.NewAuthority(ctx, \"root_ca\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tPool: caPool.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"root-ca\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConfig: \u0026certificateauthority.AuthorityConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.AuthorityConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tOrganization: pulumi.String(\"google\"),\n\t\t\t\t\t\tCommonName: pulumi.String(\"my-certificate-authority\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tX509Config: \u0026certificateauthority.AuthorityConfigX509ConfigArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.AuthorityConfigX509ConfigCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs{\n\t\t\t\t\t\t\tCertSign: pulumi.Bool(true),\n\t\t\t\t\t\t\tCrlSign: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tServerAuth: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"RSA_PKCS1_4096_SHA256\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tIgnoreActiveCertificatesOnDeletion: pulumi.Bool(true),\n\t\t\tSkipGracePeriod: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcaPoolBinding, err := certificateauthority.NewCaPoolIamBinding(ctx, \"ca_pool_binding\", \u0026certificateauthority.CaPoolIamBindingArgs{\n\t\t\tCaPool: caPool.ID(),\n\t\t\tRole: pulumi.String(\"roles/privateca.certificateRequester\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-sourcemanager.iam.gserviceaccount.com\", project.Number),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// ca pool IAM permissions can take time to propagate\n\t\twait120Seconds, err := time.NewSleep(ctx, \"wait_120_seconds\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"120s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcaPoolBinding,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\n\t\t_, err = securesourcemanager.NewInstance(ctx, \"default\", \u0026securesourcemanager.InstanceArgs{\n\t\t\tInstanceId: pulumi.String(\"my-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPrivateConfig: \u0026securesourcemanager.InstancePrivateConfigArgs{\n\t\t\t\tIsPrivate: pulumi.Bool(true),\n\t\t\t\tCaPool: caPool.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\trootCa,\n\t\t\twait120Seconds,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Connect SSM private instance with L4 proxy ILB.\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsubnet, err := compute.NewSubnetwork(ctx, \"subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"my-subnet\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.1.0/24\"),\n\t\t\tPrivateIpGoogleAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscNeg, err := compute.NewRegionNetworkEndpointGroup(ctx, \"psc_neg\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"my-neg\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetworkEndpointType: pulumi.String(\"PRIVATE_SERVICE_CONNECT\"),\n\t\t\tPscTargetService: pulumi.String(_default.PrivateConfig.ApplyT(func(privateConfig securesourcemanager.InstancePrivateConfig) (*string, error) {\n\t\t\t\treturn \u0026privateConfig.HttpServiceAttachment, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tNetwork: network.ID(),\n\t\t\tSubnetwork: subnet.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbackendService, err := compute.NewRegionBackendService(ctx, \"backend_service\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"my-backend-service\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tProtocol: pulumi.String(\"TCP\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tBackends: compute.RegionBackendServiceBackendArray{\n\t\t\t\t\u0026compute.RegionBackendServiceBackendArgs{\n\t\t\t\t\tGroup: pscNeg.ID(),\n\t\t\t\t\tBalancingMode: pulumi.String(\"UTILIZATION\"),\n\t\t\t\t\tCapacityScaler: pulumi.Float64(1),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproxySubnet, err := compute.NewSubnetwork(ctx, \"proxy_subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"my-proxy-subnet\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.2.0/24\"),\n\t\t\tPurpose: pulumi.String(\"REGIONAL_MANAGED_PROXY\"),\n\t\t\tRole: pulumi.String(\"ACTIVE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttargetProxy, err := compute.NewRegionTargetTcpProxy(ctx, \"target_proxy\", \u0026compute.RegionTargetTcpProxyArgs{\n\t\t\tName: pulumi.String(\"my-target-proxy\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tBackendService: backendService.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfwRuleTargetProxy, err := compute.NewForwardingRule(ctx, \"fw_rule_target_proxy\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"fw-rule-target-proxy\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tIpProtocol: pulumi.String(\"TCP\"),\n\t\t\tPortRange: pulumi.String(\"443\"),\n\t\t\tTarget: targetProxy.ID(),\n\t\t\tNetwork: network.ID(),\n\t\t\tSubnetwork: subnet.ID(),\n\t\t\tNetworkTier: pulumi.String(\"PREMIUM\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tproxySubnet,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateZone, err := dns.NewManagedZone(ctx, \"private_zone\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"my-dns-zone\"),\n\t\t\tDnsName: pulumi.String(\"p.sourcemanager.dev.\"),\n\t\t\tVisibility: pulumi.String(\"private\"),\n\t\t\tPrivateVisibilityConfig: \u0026dns.ManagedZonePrivateVisibilityConfigArgs{\n\t\t\t\tNetworks: dns.ManagedZonePrivateVisibilityConfigNetworkArray{\n\t\t\t\t\t\u0026dns.ManagedZonePrivateVisibilityConfigNetworkArgs{\n\t\t\t\t\t\tNetworkUrl: network.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"ssm_instance_html_record\", \u0026dns.RecordSetArgs{\n\t\t\tName: _default.HostConfigs.ApplyT(func(hostConfigs []securesourcemanager.InstanceHostConfig) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"%v.\", hostConfigs[0].Html), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tManagedZone: privateZone.Name,\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tfwRuleTargetProxy.IpAddress,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"ssm_instance_api_record\", \u0026dns.RecordSetArgs{\n\t\t\tName: _default.HostConfigs.ApplyT(func(hostConfigs []securesourcemanager.InstanceHostConfig) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"%v.\", hostConfigs[0].Api), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tManagedZone: privateZone.Name,\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tfwRuleTargetProxy.IpAddress,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"ssm_instance_git_record\", \u0026dns.RecordSetArgs{\n\t\t\tName: _default.HostConfigs.ApplyT(func(hostConfigs []securesourcemanager.InstanceHostConfig) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"%v.\", hostConfigs[0].GitHttp), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tManagedZone: privateZone.Name,\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tfwRuleTargetProxy.IpAddress,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.certificateauthority.CaPool;\nimport com.pulumi.gcp.certificateauthority.CaPoolArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolPublishingOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.Authority;\nimport com.pulumi.gcp.certificateauthority.AuthorityArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityKeySpecArgs;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamBinding;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamBindingArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.securesourcemanager.Instance;\nimport com.pulumi.gcp.securesourcemanager.InstanceArgs;\nimport com.pulumi.gcp.securesourcemanager.inputs.InstancePrivateConfigArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroup;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroupArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.inputs.RegionBackendServiceBackendArgs;\nimport com.pulumi.gcp.compute.RegionTargetTcpProxy;\nimport com.pulumi.gcp.compute.RegionTargetTcpProxyArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZonePrivateVisibilityConfigArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var caPool = new CaPool(\"caPool\", CaPoolArgs.builder()\n .name(\"ca-pool\")\n .location(\"us-central1\")\n .tier(\"ENTERPRISE\")\n .publishingOptions(CaPoolPublishingOptionsArgs.builder()\n .publishCaCert(true)\n .publishCrl(true)\n .build())\n .build());\n\n var rootCa = new Authority(\"rootCa\", AuthorityArgs.builder()\n .pool(caPool.name())\n .certificateAuthorityId(\"root-ca\")\n .location(\"us-central1\")\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"google\")\n .commonName(\"my-certificate-authority\")\n .build())\n .build())\n .x509Config(AuthorityConfigX509ConfigArgs.builder()\n .caOptions(AuthorityConfigX509ConfigCaOptionsArgs.builder()\n .isCa(true)\n .build())\n .keyUsage(AuthorityConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .certSign(true)\n .crlSign(true)\n .build())\n .extendedKeyUsage(AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .build())\n .build())\n .build())\n .build())\n .keySpec(AuthorityKeySpecArgs.builder()\n .algorithm(\"RSA_PKCS1_4096_SHA256\")\n .build())\n .deletionProtection(false)\n .ignoreActiveCertificatesOnDeletion(true)\n .skipGracePeriod(true)\n .build());\n\n var caPoolBinding = new CaPoolIamBinding(\"caPoolBinding\", CaPoolIamBindingArgs.builder()\n .caPool(caPool.id())\n .role(\"roles/privateca.certificateRequester\")\n .members(String.format(\"serviceAccount:service-%s@gcp-sa-sourcemanager.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n // ca pool IAM permissions can take time to propagate\n var wait120Seconds = new Sleep(\"wait120Seconds\", SleepArgs.builder()\n .createDuration(\"120s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(caPoolBinding)\n .build());\n\n // See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\n var default_ = new Instance(\"default\", InstanceArgs.builder()\n .instanceId(\"my-instance\")\n .location(\"us-central1\")\n .privateConfig(InstancePrivateConfigArgs.builder()\n .isPrivate(true)\n .caPool(caPool.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n rootCa,\n wait120Seconds)\n .build());\n\n // Connect SSM private instance with L4 proxy ILB.\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"my-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnet = new Subnetwork(\"subnet\", SubnetworkArgs.builder()\n .name(\"my-subnet\")\n .region(\"us-central1\")\n .network(network.id())\n .ipCidrRange(\"10.0.1.0/24\")\n .privateIpGoogleAccess(true)\n .build());\n\n var pscNeg = new RegionNetworkEndpointGroup(\"pscNeg\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"my-neg\")\n .region(\"us-central1\")\n .networkEndpointType(\"PRIVATE_SERVICE_CONNECT\")\n .pscTargetService(default_.privateConfig().applyValue(privateConfig -\u003e privateConfig.httpServiceAttachment()))\n .network(network.id())\n .subnetwork(subnet.id())\n .build());\n\n var backendService = new RegionBackendService(\"backendService\", RegionBackendServiceArgs.builder()\n .name(\"my-backend-service\")\n .region(\"us-central1\")\n .protocol(\"TCP\")\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .backends(RegionBackendServiceBackendArgs.builder()\n .group(pscNeg.id())\n .balancingMode(\"UTILIZATION\")\n .capacityScaler(1)\n .build())\n .build());\n\n var proxySubnet = new Subnetwork(\"proxySubnet\", SubnetworkArgs.builder()\n .name(\"my-proxy-subnet\")\n .region(\"us-central1\")\n .network(network.id())\n .ipCidrRange(\"10.0.2.0/24\")\n .purpose(\"REGIONAL_MANAGED_PROXY\")\n .role(\"ACTIVE\")\n .build());\n\n var targetProxy = new RegionTargetTcpProxy(\"targetProxy\", RegionTargetTcpProxyArgs.builder()\n .name(\"my-target-proxy\")\n .region(\"us-central1\")\n .backendService(backendService.id())\n .build());\n\n var fwRuleTargetProxy = new ForwardingRule(\"fwRuleTargetProxy\", ForwardingRuleArgs.builder()\n .name(\"fw-rule-target-proxy\")\n .region(\"us-central1\")\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .ipProtocol(\"TCP\")\n .portRange(\"443\")\n .target(targetProxy.id())\n .network(network.id())\n .subnetwork(subnet.id())\n .networkTier(\"PREMIUM\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(proxySubnet)\n .build());\n\n var privateZone = new ManagedZone(\"privateZone\", ManagedZoneArgs.builder()\n .name(\"my-dns-zone\")\n .dnsName(\"p.sourcemanager.dev.\")\n .visibility(\"private\")\n .privateVisibilityConfig(ManagedZonePrivateVisibilityConfigArgs.builder()\n .networks(ManagedZonePrivateVisibilityConfigNetworkArgs.builder()\n .networkUrl(network.id())\n .build())\n .build())\n .build());\n\n var ssmInstanceHtmlRecord = new RecordSet(\"ssmInstanceHtmlRecord\", RecordSetArgs.builder()\n .name(default_.hostConfigs().applyValue(hostConfigs -\u003e String.format(\"%s.\", hostConfigs[0].html())))\n .type(\"A\")\n .ttl(300)\n .managedZone(privateZone.name())\n .rrdatas(fwRuleTargetProxy.ipAddress())\n .build());\n\n var ssmInstanceApiRecord = new RecordSet(\"ssmInstanceApiRecord\", RecordSetArgs.builder()\n .name(default_.hostConfigs().applyValue(hostConfigs -\u003e String.format(\"%s.\", hostConfigs[0].api())))\n .type(\"A\")\n .ttl(300)\n .managedZone(privateZone.name())\n .rrdatas(fwRuleTargetProxy.ipAddress())\n .build());\n\n var ssmInstanceGitRecord = new RecordSet(\"ssmInstanceGitRecord\", RecordSetArgs.builder()\n .name(default_.hostConfigs().applyValue(hostConfigs -\u003e String.format(\"%s.\", hostConfigs[0].gitHttp())))\n .type(\"A\")\n .ttl(300)\n .managedZone(privateZone.name())\n .rrdatas(fwRuleTargetProxy.ipAddress())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n caPool:\n type: gcp:certificateauthority:CaPool\n name: ca_pool\n properties:\n name: ca-pool\n location: us-central1\n tier: ENTERPRISE\n publishingOptions:\n publishCaCert: true\n publishCrl: true\n rootCa:\n type: gcp:certificateauthority:Authority\n name: root_ca\n properties:\n pool: ${caPool.name}\n certificateAuthorityId: root-ca\n location: us-central1\n config:\n subjectConfig:\n subject:\n organization: google\n commonName: my-certificate-authority\n x509Config:\n caOptions:\n isCa: true\n keyUsage:\n baseKeyUsage:\n certSign: true\n crlSign: true\n extendedKeyUsage:\n serverAuth: true\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n deletionProtection: false\n ignoreActiveCertificatesOnDeletion: true\n skipGracePeriod: true\n caPoolBinding:\n type: gcp:certificateauthority:CaPoolIamBinding\n name: ca_pool_binding\n properties:\n caPool: ${caPool.id}\n role: roles/privateca.certificateRequester\n members:\n - serviceAccount:service-${project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com\n # See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\n default:\n type: gcp:securesourcemanager:Instance\n properties:\n instanceId: my-instance\n location: us-central1\n privateConfig:\n isPrivate: true\n caPool: ${caPool.id}\n options:\n dependson:\n - ${rootCa}\n - ${wait120Seconds}\n # ca pool IAM permissions can take time to propagate\n wait120Seconds:\n type: time:sleep\n name: wait_120_seconds\n properties:\n createDuration: 120s\n options:\n dependson:\n - ${caPoolBinding}\n # Connect SSM private instance with L4 proxy ILB.\n network:\n type: gcp:compute:Network\n properties:\n name: my-network\n autoCreateSubnetworks: false\n subnet:\n type: gcp:compute:Subnetwork\n properties:\n name: my-subnet\n region: us-central1\n network: ${network.id}\n ipCidrRange: 10.0.1.0/24\n privateIpGoogleAccess: true\n pscNeg:\n type: gcp:compute:RegionNetworkEndpointGroup\n name: psc_neg\n properties:\n name: my-neg\n region: us-central1\n networkEndpointType: PRIVATE_SERVICE_CONNECT\n pscTargetService: ${default.privateConfig.httpServiceAttachment}\n network: ${network.id}\n subnetwork: ${subnet.id}\n backendService:\n type: gcp:compute:RegionBackendService\n name: backend_service\n properties:\n name: my-backend-service\n region: us-central1\n protocol: TCP\n loadBalancingScheme: INTERNAL_MANAGED\n backends:\n - group: ${pscNeg.id}\n balancingMode: UTILIZATION\n capacityScaler: 1\n proxySubnet:\n type: gcp:compute:Subnetwork\n name: proxy_subnet\n properties:\n name: my-proxy-subnet\n region: us-central1\n network: ${network.id}\n ipCidrRange: 10.0.2.0/24\n purpose: REGIONAL_MANAGED_PROXY\n role: ACTIVE\n targetProxy:\n type: gcp:compute:RegionTargetTcpProxy\n name: target_proxy\n properties:\n name: my-target-proxy\n region: us-central1\n backendService: ${backendService.id}\n fwRuleTargetProxy:\n type: gcp:compute:ForwardingRule\n name: fw_rule_target_proxy\n properties:\n name: fw-rule-target-proxy\n region: us-central1\n loadBalancingScheme: INTERNAL_MANAGED\n ipProtocol: TCP\n portRange: '443'\n target: ${targetProxy.id}\n network: ${network.id}\n subnetwork: ${subnet.id}\n networkTier: PREMIUM\n options:\n dependson:\n - ${proxySubnet}\n privateZone:\n type: gcp:dns:ManagedZone\n name: private_zone\n properties:\n name: my-dns-zone\n dnsName: p.sourcemanager.dev.\n visibility: private\n privateVisibilityConfig:\n networks:\n - networkUrl: ${network.id}\n ssmInstanceHtmlRecord:\n type: gcp:dns:RecordSet\n name: ssm_instance_html_record\n properties:\n name: ${default.hostConfigs[0].html}.\n type: A\n ttl: 300\n managedZone: ${privateZone.name}\n rrdatas:\n - ${fwRuleTargetProxy.ipAddress}\n ssmInstanceApiRecord:\n type: gcp:dns:RecordSet\n name: ssm_instance_api_record\n properties:\n name: ${default.hostConfigs[0].api}.\n type: A\n ttl: 300\n managedZone: ${privateZone.name}\n rrdatas:\n - ${fwRuleTargetProxy.ipAddress}\n ssmInstanceGitRecord:\n type: gcp:dns:RecordSet\n name: ssm_instance_git_record\n properties:\n name: ${default.hostConfigs[0].gitHttp}.\n type: A\n ttl: 300\n managedZone: ${privateZone.name}\n rrdatas:\n - ${fwRuleTargetProxy.ipAddress}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secure Source Manager Instance Private Psc Endpoint\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\nconst project = gcp.organizations.getProject({});\nconst caPool = new gcp.certificateauthority.CaPool(\"ca_pool\", {\n name: \"ca-pool\",\n location: \"us-central1\",\n tier: \"ENTERPRISE\",\n publishingOptions: {\n publishCaCert: true,\n publishCrl: true,\n },\n});\nconst rootCa = new gcp.certificateauthority.Authority(\"root_ca\", {\n pool: caPool.name,\n certificateAuthorityId: \"root-ca\",\n location: \"us-central1\",\n config: {\n subjectConfig: {\n subject: {\n organization: \"google\",\n commonName: \"my-certificate-authority\",\n },\n },\n x509Config: {\n caOptions: {\n isCa: true,\n },\n keyUsage: {\n baseKeyUsage: {\n certSign: true,\n crlSign: true,\n },\n extendedKeyUsage: {\n serverAuth: true,\n },\n },\n },\n },\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n deletionProtection: false,\n ignoreActiveCertificatesOnDeletion: true,\n skipGracePeriod: true,\n});\nconst caPoolBinding = new gcp.certificateauthority.CaPoolIamBinding(\"ca_pool_binding\", {\n caPool: caPool.id,\n role: \"roles/privateca.certificateRequester\",\n members: [project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com`)],\n});\n// ca pool IAM permissions can take time to propagate\nconst wait120Seconds = new time.index.Sleep(\"wait_120_seconds\", {createDuration: \"120s\"}, {\n dependsOn: [caPoolBinding],\n});\n// See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\nconst _default = new gcp.securesourcemanager.Instance(\"default\", {\n instanceId: \"my-instance\",\n location: \"us-central1\",\n privateConfig: {\n isPrivate: true,\n caPool: caPool.id,\n },\n}, {\n dependsOn: [\n rootCa,\n wait120Seconds,\n ],\n});\n// Connect SSM private instance with endpoint.\nconst network = new gcp.compute.Network(\"network\", {\n name: \"my-network\",\n autoCreateSubnetworks: false,\n});\nconst subnet = new gcp.compute.Subnetwork(\"subnet\", {\n name: \"my-subnet\",\n region: \"us-central1\",\n network: network.id,\n ipCidrRange: \"10.0.60.0/24\",\n privateIpGoogleAccess: true,\n});\nconst address = new gcp.compute.Address(\"address\", {\n name: \"my-address\",\n region: \"us-central1\",\n address: \"10.0.60.100\",\n addressType: \"INTERNAL\",\n subnetwork: subnet.id,\n});\nconst fwRuleServiceAttachment = new gcp.compute.ForwardingRule(\"fw_rule_service_attachment\", {\n name: \"fw-rule-service-attachment\",\n region: \"us-central1\",\n loadBalancingScheme: \"\",\n ipAddress: address.id,\n network: network.id,\n target: _default.privateConfig.apply(privateConfig =\u003e privateConfig?.httpServiceAttachment),\n});\nconst privateZone = new gcp.dns.ManagedZone(\"private_zone\", {\n name: \"my-dns-zone\",\n dnsName: \"p.sourcemanager.dev.\",\n visibility: \"private\",\n privateVisibilityConfig: {\n networks: [{\n networkUrl: network.id,\n }],\n },\n});\nconst ssmInstanceHtmlRecord = new gcp.dns.RecordSet(\"ssm_instance_html_record\", {\n name: _default.hostConfigs.apply(hostConfigs =\u003e `${hostConfigs[0].html}.`),\n type: \"A\",\n ttl: 300,\n managedZone: privateZone.name,\n rrdatas: [fwRuleServiceAttachment.ipAddress],\n});\nconst ssmInstanceApiRecord = new gcp.dns.RecordSet(\"ssm_instance_api_record\", {\n name: _default.hostConfigs.apply(hostConfigs =\u003e `${hostConfigs[0].api}.`),\n type: \"A\",\n ttl: 300,\n managedZone: privateZone.name,\n rrdatas: [fwRuleServiceAttachment.ipAddress],\n});\nconst ssmInstanceGitRecord = new gcp.dns.RecordSet(\"ssm_instance_git_record\", {\n name: _default.hostConfigs.apply(hostConfigs =\u003e `${hostConfigs[0].gitHttp}.`),\n type: \"A\",\n ttl: 300,\n managedZone: privateZone.name,\n rrdatas: [fwRuleServiceAttachment.ipAddress],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\nproject = gcp.organizations.get_project()\nca_pool = gcp.certificateauthority.CaPool(\"ca_pool\",\n name=\"ca-pool\",\n location=\"us-central1\",\n tier=\"ENTERPRISE\",\n publishing_options={\n \"publish_ca_cert\": True,\n \"publish_crl\": True,\n })\nroot_ca = gcp.certificateauthority.Authority(\"root_ca\",\n pool=ca_pool.name,\n certificate_authority_id=\"root-ca\",\n location=\"us-central1\",\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"google\",\n \"common_name\": \"my-certificate-authority\",\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": True,\n },\n },\n },\n },\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n },\n deletion_protection=False,\n ignore_active_certificates_on_deletion=True,\n skip_grace_period=True)\nca_pool_binding = gcp.certificateauthority.CaPoolIamBinding(\"ca_pool_binding\",\n ca_pool=ca_pool.id,\n role=\"roles/privateca.certificateRequester\",\n members=[f\"serviceAccount:service-{project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com\"])\n# ca pool IAM permissions can take time to propagate\nwait120_seconds = time.index.Sleep(\"wait_120_seconds\", create_duration=120s,\nopts = pulumi.ResourceOptions(depends_on=[ca_pool_binding]))\n# See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\ndefault = gcp.securesourcemanager.Instance(\"default\",\n instance_id=\"my-instance\",\n location=\"us-central1\",\n private_config={\n \"is_private\": True,\n \"ca_pool\": ca_pool.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n root_ca,\n wait120_seconds,\n ]))\n# Connect SSM private instance with endpoint.\nnetwork = gcp.compute.Network(\"network\",\n name=\"my-network\",\n auto_create_subnetworks=False)\nsubnet = gcp.compute.Subnetwork(\"subnet\",\n name=\"my-subnet\",\n region=\"us-central1\",\n network=network.id,\n ip_cidr_range=\"10.0.60.0/24\",\n private_ip_google_access=True)\naddress = gcp.compute.Address(\"address\",\n name=\"my-address\",\n region=\"us-central1\",\n address=\"10.0.60.100\",\n address_type=\"INTERNAL\",\n subnetwork=subnet.id)\nfw_rule_service_attachment = gcp.compute.ForwardingRule(\"fw_rule_service_attachment\",\n name=\"fw-rule-service-attachment\",\n region=\"us-central1\",\n load_balancing_scheme=\"\",\n ip_address=address.id,\n network=network.id,\n target=default.private_config.http_service_attachment)\nprivate_zone = gcp.dns.ManagedZone(\"private_zone\",\n name=\"my-dns-zone\",\n dns_name=\"p.sourcemanager.dev.\",\n visibility=\"private\",\n private_visibility_config={\n \"networks\": [{\n \"network_url\": network.id,\n }],\n })\nssm_instance_html_record = gcp.dns.RecordSet(\"ssm_instance_html_record\",\n name=default.host_configs.apply(lambda host_configs: f\"{host_configs[0].html}.\"),\n type=\"A\",\n ttl=300,\n managed_zone=private_zone.name,\n rrdatas=[fw_rule_service_attachment.ip_address])\nssm_instance_api_record = gcp.dns.RecordSet(\"ssm_instance_api_record\",\n name=default.host_configs.apply(lambda host_configs: f\"{host_configs[0].api}.\"),\n type=\"A\",\n ttl=300,\n managed_zone=private_zone.name,\n rrdatas=[fw_rule_service_attachment.ip_address])\nssm_instance_git_record = gcp.dns.RecordSet(\"ssm_instance_git_record\",\n name=default.host_configs.apply(lambda host_configs: f\"{host_configs[0].git_http}.\"),\n type=\"A\",\n ttl=300,\n managed_zone=private_zone.name,\n rrdatas=[fw_rule_service_attachment.ip_address])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Time = Pulumi.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var caPool = new Gcp.CertificateAuthority.CaPool(\"ca_pool\", new()\n {\n Name = \"ca-pool\",\n Location = \"us-central1\",\n Tier = \"ENTERPRISE\",\n PublishingOptions = new Gcp.CertificateAuthority.Inputs.CaPoolPublishingOptionsArgs\n {\n PublishCaCert = true,\n PublishCrl = true,\n },\n });\n\n var rootCa = new Gcp.CertificateAuthority.Authority(\"root_ca\", new()\n {\n Pool = caPool.Name,\n CertificateAuthorityId = \"root-ca\",\n Location = \"us-central1\",\n Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectArgs\n {\n Organization = \"google\",\n CommonName = \"my-certificate-authority\",\n },\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigCaOptionsArgs\n {\n IsCa = true,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n CertSign = true,\n CrlSign = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n },\n },\n },\n },\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n Algorithm = \"RSA_PKCS1_4096_SHA256\",\n },\n DeletionProtection = false,\n IgnoreActiveCertificatesOnDeletion = true,\n SkipGracePeriod = true,\n });\n\n var caPoolBinding = new Gcp.CertificateAuthority.CaPoolIamBinding(\"ca_pool_binding\", new()\n {\n CaPool = caPool.Id,\n Role = \"roles/privateca.certificateRequester\",\n Members = new[]\n {\n $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-sourcemanager.iam.gserviceaccount.com\",\n },\n });\n\n // ca pool IAM permissions can take time to propagate\n var wait120Seconds = new Time.Index.Sleep(\"wait_120_seconds\", new()\n {\n CreateDuration = \"120s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n caPoolBinding,\n },\n });\n\n // See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\n var @default = new Gcp.SecureSourceManager.Instance(\"default\", new()\n {\n InstanceId = \"my-instance\",\n Location = \"us-central1\",\n PrivateConfig = new Gcp.SecureSourceManager.Inputs.InstancePrivateConfigArgs\n {\n IsPrivate = true,\n CaPool = caPool.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n rootCa,\n wait120Seconds,\n },\n });\n\n // Connect SSM private instance with endpoint.\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"my-network\",\n AutoCreateSubnetworks = false,\n });\n\n var subnet = new Gcp.Compute.Subnetwork(\"subnet\", new()\n {\n Name = \"my-subnet\",\n Region = \"us-central1\",\n Network = network.Id,\n IpCidrRange = \"10.0.60.0/24\",\n PrivateIpGoogleAccess = true,\n });\n\n var address = new Gcp.Compute.Address(\"address\", new()\n {\n Name = \"my-address\",\n Region = \"us-central1\",\n IPAddress = \"10.0.60.100\",\n AddressType = \"INTERNAL\",\n Subnetwork = subnet.Id,\n });\n\n var fwRuleServiceAttachment = new Gcp.Compute.ForwardingRule(\"fw_rule_service_attachment\", new()\n {\n Name = \"fw-rule-service-attachment\",\n Region = \"us-central1\",\n LoadBalancingScheme = \"\",\n IpAddress = address.Id,\n Network = network.Id,\n Target = @default.PrivateConfig.Apply(privateConfig =\u003e privateConfig?.HttpServiceAttachment),\n });\n\n var privateZone = new Gcp.Dns.ManagedZone(\"private_zone\", new()\n {\n Name = \"my-dns-zone\",\n DnsName = \"p.sourcemanager.dev.\",\n Visibility = \"private\",\n PrivateVisibilityConfig = new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigArgs\n {\n Networks = new[]\n {\n new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigNetworkArgs\n {\n NetworkUrl = network.Id,\n },\n },\n },\n });\n\n var ssmInstanceHtmlRecord = new Gcp.Dns.RecordSet(\"ssm_instance_html_record\", new()\n {\n Name = @default.HostConfigs.Apply(hostConfigs =\u003e $\"{hostConfigs[0].Html}.\"),\n Type = \"A\",\n Ttl = 300,\n ManagedZone = privateZone.Name,\n Rrdatas = new[]\n {\n fwRuleServiceAttachment.IpAddress,\n },\n });\n\n var ssmInstanceApiRecord = new Gcp.Dns.RecordSet(\"ssm_instance_api_record\", new()\n {\n Name = @default.HostConfigs.Apply(hostConfigs =\u003e $\"{hostConfigs[0].Api}.\"),\n Type = \"A\",\n Ttl = 300,\n ManagedZone = privateZone.Name,\n Rrdatas = new[]\n {\n fwRuleServiceAttachment.IpAddress,\n },\n });\n\n var ssmInstanceGitRecord = new Gcp.Dns.RecordSet(\"ssm_instance_git_record\", new()\n {\n Name = @default.HostConfigs.Apply(hostConfigs =\u003e $\"{hostConfigs[0].GitHttp}.\"),\n Type = \"A\",\n Ttl = 300,\n ManagedZone = privateZone.Name,\n Rrdatas = new[]\n {\n fwRuleServiceAttachment.IpAddress,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/securesourcemanager\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcaPool, err := certificateauthority.NewCaPool(ctx, \"ca_pool\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tName: pulumi.String(\"ca-pool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTier: pulumi.String(\"ENTERPRISE\"),\n\t\t\tPublishingOptions: \u0026certificateauthority.CaPoolPublishingOptionsArgs{\n\t\t\t\tPublishCaCert: pulumi.Bool(true),\n\t\t\t\tPublishCrl: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trootCa, err := certificateauthority.NewAuthority(ctx, \"root_ca\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tPool: caPool.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"root-ca\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConfig: \u0026certificateauthority.AuthorityConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.AuthorityConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tOrganization: pulumi.String(\"google\"),\n\t\t\t\t\t\tCommonName: pulumi.String(\"my-certificate-authority\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tX509Config: \u0026certificateauthority.AuthorityConfigX509ConfigArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.AuthorityConfigX509ConfigCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs{\n\t\t\t\t\t\t\tCertSign: pulumi.Bool(true),\n\t\t\t\t\t\t\tCrlSign: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tServerAuth: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"RSA_PKCS1_4096_SHA256\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tIgnoreActiveCertificatesOnDeletion: pulumi.Bool(true),\n\t\t\tSkipGracePeriod: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcaPoolBinding, err := certificateauthority.NewCaPoolIamBinding(ctx, \"ca_pool_binding\", \u0026certificateauthority.CaPoolIamBindingArgs{\n\t\t\tCaPool: caPool.ID(),\n\t\t\tRole: pulumi.String(\"roles/privateca.certificateRequester\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-sourcemanager.iam.gserviceaccount.com\", project.Number),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// ca pool IAM permissions can take time to propagate\n\t\twait120Seconds, err := time.NewSleep(ctx, \"wait_120_seconds\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"120s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcaPoolBinding,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\n\t\t_, err = securesourcemanager.NewInstance(ctx, \"default\", \u0026securesourcemanager.InstanceArgs{\n\t\t\tInstanceId: pulumi.String(\"my-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPrivateConfig: \u0026securesourcemanager.InstancePrivateConfigArgs{\n\t\t\t\tIsPrivate: pulumi.Bool(true),\n\t\t\t\tCaPool: caPool.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\trootCa,\n\t\t\twait120Seconds,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Connect SSM private instance with endpoint.\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsubnet, err := compute.NewSubnetwork(ctx, \"subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"my-subnet\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.60.0/24\"),\n\t\t\tPrivateIpGoogleAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taddress, err := compute.NewAddress(ctx, \"address\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"my-address\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tAddress: pulumi.String(\"10.0.60.100\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tSubnetwork: subnet.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfwRuleServiceAttachment, err := compute.NewForwardingRule(ctx, \"fw_rule_service_attachment\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"fw-rule-service-attachment\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"\"),\n\t\t\tIpAddress: address.ID(),\n\t\t\tNetwork: network.ID(),\n\t\t\tTarget: pulumi.String(_default.PrivateConfig.ApplyT(func(privateConfig securesourcemanager.InstancePrivateConfig) (*string, error) {\n\t\t\t\treturn \u0026privateConfig.HttpServiceAttachment, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateZone, err := dns.NewManagedZone(ctx, \"private_zone\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"my-dns-zone\"),\n\t\t\tDnsName: pulumi.String(\"p.sourcemanager.dev.\"),\n\t\t\tVisibility: pulumi.String(\"private\"),\n\t\t\tPrivateVisibilityConfig: \u0026dns.ManagedZonePrivateVisibilityConfigArgs{\n\t\t\t\tNetworks: dns.ManagedZonePrivateVisibilityConfigNetworkArray{\n\t\t\t\t\t\u0026dns.ManagedZonePrivateVisibilityConfigNetworkArgs{\n\t\t\t\t\t\tNetworkUrl: network.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"ssm_instance_html_record\", \u0026dns.RecordSetArgs{\n\t\t\tName: _default.HostConfigs.ApplyT(func(hostConfigs []securesourcemanager.InstanceHostConfig) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"%v.\", hostConfigs[0].Html), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tManagedZone: privateZone.Name,\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tfwRuleServiceAttachment.IpAddress,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"ssm_instance_api_record\", \u0026dns.RecordSetArgs{\n\t\t\tName: _default.HostConfigs.ApplyT(func(hostConfigs []securesourcemanager.InstanceHostConfig) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"%v.\", hostConfigs[0].Api), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tManagedZone: privateZone.Name,\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tfwRuleServiceAttachment.IpAddress,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"ssm_instance_git_record\", \u0026dns.RecordSetArgs{\n\t\t\tName: _default.HostConfigs.ApplyT(func(hostConfigs []securesourcemanager.InstanceHostConfig) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"%v.\", hostConfigs[0].GitHttp), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tManagedZone: privateZone.Name,\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tfwRuleServiceAttachment.IpAddress,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.certificateauthority.CaPool;\nimport com.pulumi.gcp.certificateauthority.CaPoolArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolPublishingOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.Authority;\nimport com.pulumi.gcp.certificateauthority.AuthorityArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityKeySpecArgs;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamBinding;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamBindingArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.securesourcemanager.Instance;\nimport com.pulumi.gcp.securesourcemanager.InstanceArgs;\nimport com.pulumi.gcp.securesourcemanager.inputs.InstancePrivateConfigArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZonePrivateVisibilityConfigArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var caPool = new CaPool(\"caPool\", CaPoolArgs.builder()\n .name(\"ca-pool\")\n .location(\"us-central1\")\n .tier(\"ENTERPRISE\")\n .publishingOptions(CaPoolPublishingOptionsArgs.builder()\n .publishCaCert(true)\n .publishCrl(true)\n .build())\n .build());\n\n var rootCa = new Authority(\"rootCa\", AuthorityArgs.builder()\n .pool(caPool.name())\n .certificateAuthorityId(\"root-ca\")\n .location(\"us-central1\")\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"google\")\n .commonName(\"my-certificate-authority\")\n .build())\n .build())\n .x509Config(AuthorityConfigX509ConfigArgs.builder()\n .caOptions(AuthorityConfigX509ConfigCaOptionsArgs.builder()\n .isCa(true)\n .build())\n .keyUsage(AuthorityConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .certSign(true)\n .crlSign(true)\n .build())\n .extendedKeyUsage(AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .build())\n .build())\n .build())\n .build())\n .keySpec(AuthorityKeySpecArgs.builder()\n .algorithm(\"RSA_PKCS1_4096_SHA256\")\n .build())\n .deletionProtection(false)\n .ignoreActiveCertificatesOnDeletion(true)\n .skipGracePeriod(true)\n .build());\n\n var caPoolBinding = new CaPoolIamBinding(\"caPoolBinding\", CaPoolIamBindingArgs.builder()\n .caPool(caPool.id())\n .role(\"roles/privateca.certificateRequester\")\n .members(String.format(\"serviceAccount:service-%s@gcp-sa-sourcemanager.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n // ca pool IAM permissions can take time to propagate\n var wait120Seconds = new Sleep(\"wait120Seconds\", SleepArgs.builder()\n .createDuration(\"120s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(caPoolBinding)\n .build());\n\n // See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\n var default_ = new Instance(\"default\", InstanceArgs.builder()\n .instanceId(\"my-instance\")\n .location(\"us-central1\")\n .privateConfig(InstancePrivateConfigArgs.builder()\n .isPrivate(true)\n .caPool(caPool.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n rootCa,\n wait120Seconds)\n .build());\n\n // Connect SSM private instance with endpoint.\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"my-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnet = new Subnetwork(\"subnet\", SubnetworkArgs.builder()\n .name(\"my-subnet\")\n .region(\"us-central1\")\n .network(network.id())\n .ipCidrRange(\"10.0.60.0/24\")\n .privateIpGoogleAccess(true)\n .build());\n\n var address = new Address(\"address\", AddressArgs.builder()\n .name(\"my-address\")\n .region(\"us-central1\")\n .address(\"10.0.60.100\")\n .addressType(\"INTERNAL\")\n .subnetwork(subnet.id())\n .build());\n\n var fwRuleServiceAttachment = new ForwardingRule(\"fwRuleServiceAttachment\", ForwardingRuleArgs.builder()\n .name(\"fw-rule-service-attachment\")\n .region(\"us-central1\")\n .loadBalancingScheme(\"\")\n .ipAddress(address.id())\n .network(network.id())\n .target(default_.privateConfig().applyValue(privateConfig -\u003e privateConfig.httpServiceAttachment()))\n .build());\n\n var privateZone = new ManagedZone(\"privateZone\", ManagedZoneArgs.builder()\n .name(\"my-dns-zone\")\n .dnsName(\"p.sourcemanager.dev.\")\n .visibility(\"private\")\n .privateVisibilityConfig(ManagedZonePrivateVisibilityConfigArgs.builder()\n .networks(ManagedZonePrivateVisibilityConfigNetworkArgs.builder()\n .networkUrl(network.id())\n .build())\n .build())\n .build());\n\n var ssmInstanceHtmlRecord = new RecordSet(\"ssmInstanceHtmlRecord\", RecordSetArgs.builder()\n .name(default_.hostConfigs().applyValue(hostConfigs -\u003e String.format(\"%s.\", hostConfigs[0].html())))\n .type(\"A\")\n .ttl(300)\n .managedZone(privateZone.name())\n .rrdatas(fwRuleServiceAttachment.ipAddress())\n .build());\n\n var ssmInstanceApiRecord = new RecordSet(\"ssmInstanceApiRecord\", RecordSetArgs.builder()\n .name(default_.hostConfigs().applyValue(hostConfigs -\u003e String.format(\"%s.\", hostConfigs[0].api())))\n .type(\"A\")\n .ttl(300)\n .managedZone(privateZone.name())\n .rrdatas(fwRuleServiceAttachment.ipAddress())\n .build());\n\n var ssmInstanceGitRecord = new RecordSet(\"ssmInstanceGitRecord\", RecordSetArgs.builder()\n .name(default_.hostConfigs().applyValue(hostConfigs -\u003e String.format(\"%s.\", hostConfigs[0].gitHttp())))\n .type(\"A\")\n .ttl(300)\n .managedZone(privateZone.name())\n .rrdatas(fwRuleServiceAttachment.ipAddress())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n caPool:\n type: gcp:certificateauthority:CaPool\n name: ca_pool\n properties:\n name: ca-pool\n location: us-central1\n tier: ENTERPRISE\n publishingOptions:\n publishCaCert: true\n publishCrl: true\n rootCa:\n type: gcp:certificateauthority:Authority\n name: root_ca\n properties:\n pool: ${caPool.name}\n certificateAuthorityId: root-ca\n location: us-central1\n config:\n subjectConfig:\n subject:\n organization: google\n commonName: my-certificate-authority\n x509Config:\n caOptions:\n isCa: true\n keyUsage:\n baseKeyUsage:\n certSign: true\n crlSign: true\n extendedKeyUsage:\n serverAuth: true\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n deletionProtection: false\n ignoreActiveCertificatesOnDeletion: true\n skipGracePeriod: true\n caPoolBinding:\n type: gcp:certificateauthority:CaPoolIamBinding\n name: ca_pool_binding\n properties:\n caPool: ${caPool.id}\n role: roles/privateca.certificateRequester\n members:\n - serviceAccount:service-${project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com\n # See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\n default:\n type: gcp:securesourcemanager:Instance\n properties:\n instanceId: my-instance\n location: us-central1\n privateConfig:\n isPrivate: true\n caPool: ${caPool.id}\n options:\n dependson:\n - ${rootCa}\n - ${wait120Seconds}\n # ca pool IAM permissions can take time to propagate\n wait120Seconds:\n type: time:sleep\n name: wait_120_seconds\n properties:\n createDuration: 120s\n options:\n dependson:\n - ${caPoolBinding}\n # Connect SSM private instance with endpoint.\n network:\n type: gcp:compute:Network\n properties:\n name: my-network\n autoCreateSubnetworks: false\n subnet:\n type: gcp:compute:Subnetwork\n properties:\n name: my-subnet\n region: us-central1\n network: ${network.id}\n ipCidrRange: 10.0.60.0/24\n privateIpGoogleAccess: true\n address:\n type: gcp:compute:Address\n properties:\n name: my-address\n region: us-central1\n address: 10.0.60.100\n addressType: INTERNAL\n subnetwork: ${subnet.id}\n fwRuleServiceAttachment:\n type: gcp:compute:ForwardingRule\n name: fw_rule_service_attachment\n properties:\n name: fw-rule-service-attachment\n region: us-central1\n loadBalancingScheme:\n ipAddress: ${address.id}\n network: ${network.id}\n target: ${default.privateConfig.httpServiceAttachment}\n privateZone:\n type: gcp:dns:ManagedZone\n name: private_zone\n properties:\n name: my-dns-zone\n dnsName: p.sourcemanager.dev.\n visibility: private\n privateVisibilityConfig:\n networks:\n - networkUrl: ${network.id}\n ssmInstanceHtmlRecord:\n type: gcp:dns:RecordSet\n name: ssm_instance_html_record\n properties:\n name: ${default.hostConfigs[0].html}.\n type: A\n ttl: 300\n managedZone: ${privateZone.name}\n rrdatas:\n - ${fwRuleServiceAttachment.ipAddress}\n ssmInstanceApiRecord:\n type: gcp:dns:RecordSet\n name: ssm_instance_api_record\n properties:\n name: ${default.hostConfigs[0].api}.\n type: A\n ttl: 300\n managedZone: ${privateZone.name}\n rrdatas:\n - ${fwRuleServiceAttachment.ipAddress}\n ssmInstanceGitRecord:\n type: gcp:dns:RecordSet\n name: ssm_instance_git_record\n properties:\n name: ${default.hostConfigs[0].gitHttp}.\n type: A\n ttl: 300\n managedZone: ${privateZone.name}\n rrdatas:\n - ${fwRuleServiceAttachment.ipAddress}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/instances/{{instance_id}}`\n\n* `{{project}}/{{location}}/{{instance_id}}`\n\n* `{{location}}/{{instance_id}}`\n\n* `{{instance_id}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:securesourcemanager/instance:Instance default projects/{{project}}/locations/{{location}}/instances/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:securesourcemanager/instance:Instance default {{project}}/{{location}}/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:securesourcemanager/instance:Instance default {{location}}/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:securesourcemanager/instance:Instance default {{instance_id}}\n```\n\n", + "description": "Instances are deployed to an available Google Cloud region and are accessible via their web interface.\n\n\nTo get more information about Instance, see:\n\n* [API documentation](https://cloud.google.com/secure-source-manager/docs/reference/rest/v1/projects.locations.instances)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/secure-source-manager/docs/create-instance)\n\n## Example Usage\n\n### Secure Source Manager Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.securesourcemanager.Instance(\"default\", {\n location: \"us-central1\",\n instanceId: \"my-instance\",\n labels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.securesourcemanager.Instance(\"default\",\n location=\"us-central1\",\n instance_id=\"my-instance\",\n labels={\n \"foo\": \"bar\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.SecureSourceManager.Instance(\"default\", new()\n {\n Location = \"us-central1\",\n InstanceId = \"my-instance\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/securesourcemanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := securesourcemanager.NewInstance(ctx, \"default\", \u0026securesourcemanager.InstanceArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInstanceId: pulumi.String(\"my-instance\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.securesourcemanager.Instance;\nimport com.pulumi.gcp.securesourcemanager.InstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Instance(\"default\", InstanceArgs.builder()\n .location(\"us-central1\")\n .instanceId(\"my-instance\")\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:securesourcemanager:Instance\n properties:\n location: us-central1\n instanceId: my-instance\n labels:\n foo: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secure Source Manager Instance Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"my-keyring\",\n location: \"us-central1\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"my-key\",\n keyRing: keyRing.id,\n});\nconst project = gcp.organizations.getProject({});\nconst cryptoKeyBinding = new gcp.kms.CryptoKeyIAMMember(\"crypto_key_binding\", {\n cryptoKeyId: cryptoKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com`),\n});\nconst _default = new gcp.securesourcemanager.Instance(\"default\", {\n location: \"us-central1\",\n instanceId: \"my-instance\",\n kmsKey: cryptoKey.id,\n}, {\n dependsOn: [cryptoKeyBinding],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"my-keyring\",\n location=\"us-central1\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"my-key\",\n key_ring=key_ring.id)\nproject = gcp.organizations.get_project()\ncrypto_key_binding = gcp.kms.CryptoKeyIAMMember(\"crypto_key_binding\",\n crypto_key_id=crypto_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com\")\ndefault = gcp.securesourcemanager.Instance(\"default\",\n location=\"us-central1\",\n instance_id=\"my-instance\",\n kms_key=crypto_key.id,\n opts = pulumi.ResourceOptions(depends_on=[crypto_key_binding]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"my-keyring\",\n Location = \"us-central1\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"my-key\",\n KeyRing = keyRing.Id,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cryptoKeyBinding = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key_binding\", new()\n {\n CryptoKeyId = cryptoKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-sourcemanager.iam.gserviceaccount.com\",\n });\n\n var @default = new Gcp.SecureSourceManager.Instance(\"default\", new()\n {\n Location = \"us-central1\",\n InstanceId = \"my-instance\",\n KmsKey = cryptoKey.Id,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cryptoKeyBinding,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/securesourcemanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"my-keyring\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"my-key\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKeyBinding, err := kms.NewCryptoKeyIAMMember(ctx, \"crypto_key_binding\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: cryptoKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-sourcemanager.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = securesourcemanager.NewInstance(ctx, \"default\", \u0026securesourcemanager.InstanceArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInstanceId: pulumi.String(\"my-instance\"),\n\t\t\tKmsKey: cryptoKey.ID(),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcryptoKeyBinding,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.securesourcemanager.Instance;\nimport com.pulumi.gcp.securesourcemanager.InstanceArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"my-keyring\")\n .location(\"us-central1\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"my-key\")\n .keyRing(keyRing.id())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var cryptoKeyBinding = new CryptoKeyIAMMember(\"cryptoKeyBinding\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(cryptoKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-sourcemanager.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var default_ = new Instance(\"default\", InstanceArgs.builder()\n .location(\"us-central1\")\n .instanceId(\"my-instance\")\n .kmsKey(cryptoKey.id())\n .build(), CustomResourceOptions.builder()\n .dependsOn(cryptoKeyBinding)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: my-keyring\n location: us-central1\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: my-key\n keyRing: ${keyRing.id}\n cryptoKeyBinding:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key_binding\n properties:\n cryptoKeyId: ${cryptoKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com\n default:\n type: gcp:securesourcemanager:Instance\n properties:\n location: us-central1\n instanceId: my-instance\n kmsKey: ${cryptoKey.id}\n options:\n dependson:\n - ${cryptoKeyBinding}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secure Source Manager Instance Private\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\nconst caPool = new gcp.certificateauthority.CaPool(\"ca_pool\", {\n name: \"ca-pool\",\n location: \"us-central1\",\n tier: \"ENTERPRISE\",\n publishingOptions: {\n publishCaCert: true,\n publishCrl: true,\n },\n});\nconst rootCa = new gcp.certificateauthority.Authority(\"root_ca\", {\n pool: caPool.name,\n certificateAuthorityId: \"root-ca\",\n location: \"us-central1\",\n config: {\n subjectConfig: {\n subject: {\n organization: \"google\",\n commonName: \"my-certificate-authority\",\n },\n },\n x509Config: {\n caOptions: {\n isCa: true,\n },\n keyUsage: {\n baseKeyUsage: {\n certSign: true,\n crlSign: true,\n },\n extendedKeyUsage: {\n serverAuth: true,\n },\n },\n },\n },\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n deletionProtection: false,\n ignoreActiveCertificatesOnDeletion: true,\n skipGracePeriod: true,\n});\nconst project = gcp.organizations.getProject({});\nconst caPoolBinding = new gcp.certificateauthority.CaPoolIamBinding(\"ca_pool_binding\", {\n caPool: caPool.id,\n role: \"roles/privateca.certificateRequester\",\n members: [project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com`)],\n});\n// ca pool IAM permissions can take time to propagate\nconst wait120Seconds = new time.index.Sleep(\"wait_120_seconds\", {createDuration: \"120s\"}, {\n dependsOn: [caPoolBinding],\n});\nconst _default = new gcp.securesourcemanager.Instance(\"default\", {\n instanceId: \"my-instance\",\n location: \"us-central1\",\n privateConfig: {\n isPrivate: true,\n caPool: caPool.id,\n },\n}, {\n dependsOn: [\n rootCa,\n wait120Seconds,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\nca_pool = gcp.certificateauthority.CaPool(\"ca_pool\",\n name=\"ca-pool\",\n location=\"us-central1\",\n tier=\"ENTERPRISE\",\n publishing_options={\n \"publish_ca_cert\": True,\n \"publish_crl\": True,\n })\nroot_ca = gcp.certificateauthority.Authority(\"root_ca\",\n pool=ca_pool.name,\n certificate_authority_id=\"root-ca\",\n location=\"us-central1\",\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"google\",\n \"common_name\": \"my-certificate-authority\",\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": True,\n },\n },\n },\n },\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n },\n deletion_protection=False,\n ignore_active_certificates_on_deletion=True,\n skip_grace_period=True)\nproject = gcp.organizations.get_project()\nca_pool_binding = gcp.certificateauthority.CaPoolIamBinding(\"ca_pool_binding\",\n ca_pool=ca_pool.id,\n role=\"roles/privateca.certificateRequester\",\n members=[f\"serviceAccount:service-{project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com\"])\n# ca pool IAM permissions can take time to propagate\nwait120_seconds = time.index.Sleep(\"wait_120_seconds\", create_duration=120s,\nopts = pulumi.ResourceOptions(depends_on=[ca_pool_binding]))\ndefault = gcp.securesourcemanager.Instance(\"default\",\n instance_id=\"my-instance\",\n location=\"us-central1\",\n private_config={\n \"is_private\": True,\n \"ca_pool\": ca_pool.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n root_ca,\n wait120_seconds,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Time = Pulumi.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var caPool = new Gcp.CertificateAuthority.CaPool(\"ca_pool\", new()\n {\n Name = \"ca-pool\",\n Location = \"us-central1\",\n Tier = \"ENTERPRISE\",\n PublishingOptions = new Gcp.CertificateAuthority.Inputs.CaPoolPublishingOptionsArgs\n {\n PublishCaCert = true,\n PublishCrl = true,\n },\n });\n\n var rootCa = new Gcp.CertificateAuthority.Authority(\"root_ca\", new()\n {\n Pool = caPool.Name,\n CertificateAuthorityId = \"root-ca\",\n Location = \"us-central1\",\n Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectArgs\n {\n Organization = \"google\",\n CommonName = \"my-certificate-authority\",\n },\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigCaOptionsArgs\n {\n IsCa = true,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n CertSign = true,\n CrlSign = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n },\n },\n },\n },\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n Algorithm = \"RSA_PKCS1_4096_SHA256\",\n },\n DeletionProtection = false,\n IgnoreActiveCertificatesOnDeletion = true,\n SkipGracePeriod = true,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var caPoolBinding = new Gcp.CertificateAuthority.CaPoolIamBinding(\"ca_pool_binding\", new()\n {\n CaPool = caPool.Id,\n Role = \"roles/privateca.certificateRequester\",\n Members = new[]\n {\n $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-sourcemanager.iam.gserviceaccount.com\",\n },\n });\n\n // ca pool IAM permissions can take time to propagate\n var wait120Seconds = new Time.Index.Sleep(\"wait_120_seconds\", new()\n {\n CreateDuration = \"120s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n caPoolBinding,\n },\n });\n\n var @default = new Gcp.SecureSourceManager.Instance(\"default\", new()\n {\n InstanceId = \"my-instance\",\n Location = \"us-central1\",\n PrivateConfig = new Gcp.SecureSourceManager.Inputs.InstancePrivateConfigArgs\n {\n IsPrivate = true,\n CaPool = caPool.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n rootCa,\n wait120Seconds,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/securesourcemanager\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcaPool, err := certificateauthority.NewCaPool(ctx, \"ca_pool\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tName: pulumi.String(\"ca-pool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTier: pulumi.String(\"ENTERPRISE\"),\n\t\t\tPublishingOptions: \u0026certificateauthority.CaPoolPublishingOptionsArgs{\n\t\t\t\tPublishCaCert: pulumi.Bool(true),\n\t\t\t\tPublishCrl: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trootCa, err := certificateauthority.NewAuthority(ctx, \"root_ca\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tPool: caPool.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"root-ca\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConfig: \u0026certificateauthority.AuthorityConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.AuthorityConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tOrganization: pulumi.String(\"google\"),\n\t\t\t\t\t\tCommonName: pulumi.String(\"my-certificate-authority\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tX509Config: \u0026certificateauthority.AuthorityConfigX509ConfigArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.AuthorityConfigX509ConfigCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs{\n\t\t\t\t\t\t\tCertSign: pulumi.Bool(true),\n\t\t\t\t\t\t\tCrlSign: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tServerAuth: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"RSA_PKCS1_4096_SHA256\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tIgnoreActiveCertificatesOnDeletion: pulumi.Bool(true),\n\t\t\tSkipGracePeriod: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcaPoolBinding, err := certificateauthority.NewCaPoolIamBinding(ctx, \"ca_pool_binding\", \u0026certificateauthority.CaPoolIamBindingArgs{\n\t\t\tCaPool: caPool.ID(),\n\t\t\tRole: pulumi.String(\"roles/privateca.certificateRequester\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-sourcemanager.iam.gserviceaccount.com\", project.Number),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// ca pool IAM permissions can take time to propagate\n\t\twait120Seconds, err := time.NewSleep(ctx, \"wait_120_seconds\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"120s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcaPoolBinding,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = securesourcemanager.NewInstance(ctx, \"default\", \u0026securesourcemanager.InstanceArgs{\n\t\t\tInstanceId: pulumi.String(\"my-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPrivateConfig: \u0026securesourcemanager.InstancePrivateConfigArgs{\n\t\t\t\tIsPrivate: pulumi.Bool(true),\n\t\t\t\tCaPool: caPool.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\trootCa,\n\t\t\twait120Seconds,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificateauthority.CaPool;\nimport com.pulumi.gcp.certificateauthority.CaPoolArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolPublishingOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.Authority;\nimport com.pulumi.gcp.certificateauthority.AuthorityArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityKeySpecArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamBinding;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamBindingArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.securesourcemanager.Instance;\nimport com.pulumi.gcp.securesourcemanager.InstanceArgs;\nimport com.pulumi.gcp.securesourcemanager.inputs.InstancePrivateConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var caPool = new CaPool(\"caPool\", CaPoolArgs.builder()\n .name(\"ca-pool\")\n .location(\"us-central1\")\n .tier(\"ENTERPRISE\")\n .publishingOptions(CaPoolPublishingOptionsArgs.builder()\n .publishCaCert(true)\n .publishCrl(true)\n .build())\n .build());\n\n var rootCa = new Authority(\"rootCa\", AuthorityArgs.builder()\n .pool(caPool.name())\n .certificateAuthorityId(\"root-ca\")\n .location(\"us-central1\")\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"google\")\n .commonName(\"my-certificate-authority\")\n .build())\n .build())\n .x509Config(AuthorityConfigX509ConfigArgs.builder()\n .caOptions(AuthorityConfigX509ConfigCaOptionsArgs.builder()\n .isCa(true)\n .build())\n .keyUsage(AuthorityConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .certSign(true)\n .crlSign(true)\n .build())\n .extendedKeyUsage(AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .build())\n .build())\n .build())\n .build())\n .keySpec(AuthorityKeySpecArgs.builder()\n .algorithm(\"RSA_PKCS1_4096_SHA256\")\n .build())\n .deletionProtection(false)\n .ignoreActiveCertificatesOnDeletion(true)\n .skipGracePeriod(true)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var caPoolBinding = new CaPoolIamBinding(\"caPoolBinding\", CaPoolIamBindingArgs.builder()\n .caPool(caPool.id())\n .role(\"roles/privateca.certificateRequester\")\n .members(String.format(\"serviceAccount:service-%s@gcp-sa-sourcemanager.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n // ca pool IAM permissions can take time to propagate\n var wait120Seconds = new Sleep(\"wait120Seconds\", SleepArgs.builder()\n .createDuration(\"120s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(caPoolBinding)\n .build());\n\n var default_ = new Instance(\"default\", InstanceArgs.builder()\n .instanceId(\"my-instance\")\n .location(\"us-central1\")\n .privateConfig(InstancePrivateConfigArgs.builder()\n .isPrivate(true)\n .caPool(caPool.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n rootCa,\n wait120Seconds)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n caPool:\n type: gcp:certificateauthority:CaPool\n name: ca_pool\n properties:\n name: ca-pool\n location: us-central1\n tier: ENTERPRISE\n publishingOptions:\n publishCaCert: true\n publishCrl: true\n rootCa:\n type: gcp:certificateauthority:Authority\n name: root_ca\n properties:\n pool: ${caPool.name}\n certificateAuthorityId: root-ca\n location: us-central1\n config:\n subjectConfig:\n subject:\n organization: google\n commonName: my-certificate-authority\n x509Config:\n caOptions:\n isCa: true\n keyUsage:\n baseKeyUsage:\n certSign: true\n crlSign: true\n extendedKeyUsage:\n serverAuth: true\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n deletionProtection: false\n ignoreActiveCertificatesOnDeletion: true\n skipGracePeriod: true\n caPoolBinding:\n type: gcp:certificateauthority:CaPoolIamBinding\n name: ca_pool_binding\n properties:\n caPool: ${caPool.id}\n role: roles/privateca.certificateRequester\n members:\n - serviceAccount:service-${project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com\n default:\n type: gcp:securesourcemanager:Instance\n properties:\n instanceId: my-instance\n location: us-central1\n privateConfig:\n isPrivate: true\n caPool: ${caPool.id}\n options:\n dependson:\n - ${rootCa}\n - ${wait120Seconds}\n # ca pool IAM permissions can take time to propagate\n wait120Seconds:\n type: time:sleep\n name: wait_120_seconds\n properties:\n createDuration: 120s\n options:\n dependson:\n - ${caPoolBinding}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secure Source Manager Instance Private Psc Backend\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\nconst project = gcp.organizations.getProject({});\nconst caPool = new gcp.certificateauthority.CaPool(\"ca_pool\", {\n name: \"ca-pool\",\n location: \"us-central1\",\n tier: \"ENTERPRISE\",\n publishingOptions: {\n publishCaCert: true,\n publishCrl: true,\n },\n});\nconst rootCa = new gcp.certificateauthority.Authority(\"root_ca\", {\n pool: caPool.name,\n certificateAuthorityId: \"root-ca\",\n location: \"us-central1\",\n config: {\n subjectConfig: {\n subject: {\n organization: \"google\",\n commonName: \"my-certificate-authority\",\n },\n },\n x509Config: {\n caOptions: {\n isCa: true,\n },\n keyUsage: {\n baseKeyUsage: {\n certSign: true,\n crlSign: true,\n },\n extendedKeyUsage: {\n serverAuth: true,\n },\n },\n },\n },\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n deletionProtection: false,\n ignoreActiveCertificatesOnDeletion: true,\n skipGracePeriod: true,\n});\nconst caPoolBinding = new gcp.certificateauthority.CaPoolIamBinding(\"ca_pool_binding\", {\n caPool: caPool.id,\n role: \"roles/privateca.certificateRequester\",\n members: [project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com`)],\n});\n// ca pool IAM permissions can take time to propagate\nconst wait120Seconds = new time.index.Sleep(\"wait_120_seconds\", {createDuration: \"120s\"}, {\n dependsOn: [caPoolBinding],\n});\n// See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\nconst _default = new gcp.securesourcemanager.Instance(\"default\", {\n instanceId: \"my-instance\",\n location: \"us-central1\",\n privateConfig: {\n isPrivate: true,\n caPool: caPool.id,\n },\n}, {\n dependsOn: [\n rootCa,\n wait120Seconds,\n ],\n});\n// Connect SSM private instance with L4 proxy ILB.\nconst network = new gcp.compute.Network(\"network\", {\n name: \"my-network\",\n autoCreateSubnetworks: false,\n});\nconst subnet = new gcp.compute.Subnetwork(\"subnet\", {\n name: \"my-subnet\",\n region: \"us-central1\",\n network: network.id,\n ipCidrRange: \"10.0.1.0/24\",\n privateIpGoogleAccess: true,\n});\nconst pscNeg = new gcp.compute.RegionNetworkEndpointGroup(\"psc_neg\", {\n name: \"my-neg\",\n region: \"us-central1\",\n networkEndpointType: \"PRIVATE_SERVICE_CONNECT\",\n pscTargetService: _default.privateConfig.apply(privateConfig =\u003e privateConfig?.httpServiceAttachment),\n network: network.id,\n subnetwork: subnet.id,\n});\nconst backendService = new gcp.compute.RegionBackendService(\"backend_service\", {\n name: \"my-backend-service\",\n region: \"us-central1\",\n protocol: \"TCP\",\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n backends: [{\n group: pscNeg.id,\n balancingMode: \"UTILIZATION\",\n capacityScaler: 1,\n }],\n});\nconst proxySubnet = new gcp.compute.Subnetwork(\"proxy_subnet\", {\n name: \"my-proxy-subnet\",\n region: \"us-central1\",\n network: network.id,\n ipCidrRange: \"10.0.2.0/24\",\n purpose: \"REGIONAL_MANAGED_PROXY\",\n role: \"ACTIVE\",\n});\nconst targetProxy = new gcp.compute.RegionTargetTcpProxy(\"target_proxy\", {\n name: \"my-target-proxy\",\n region: \"us-central1\",\n backendService: backendService.id,\n});\nconst fwRuleTargetProxy = new gcp.compute.ForwardingRule(\"fw_rule_target_proxy\", {\n name: \"fw-rule-target-proxy\",\n region: \"us-central1\",\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n ipProtocol: \"TCP\",\n portRange: \"443\",\n target: targetProxy.id,\n network: network.id,\n subnetwork: subnet.id,\n networkTier: \"PREMIUM\",\n}, {\n dependsOn: [proxySubnet],\n});\nconst privateZone = new gcp.dns.ManagedZone(\"private_zone\", {\n name: \"my-dns-zone\",\n dnsName: \"p.sourcemanager.dev.\",\n visibility: \"private\",\n privateVisibilityConfig: {\n networks: [{\n networkUrl: network.id,\n }],\n },\n});\nconst ssmInstanceHtmlRecord = new gcp.dns.RecordSet(\"ssm_instance_html_record\", {\n name: _default.hostConfigs.apply(hostConfigs =\u003e `${hostConfigs[0].html}.`),\n type: \"A\",\n ttl: 300,\n managedZone: privateZone.name,\n rrdatas: [fwRuleTargetProxy.ipAddress],\n});\nconst ssmInstanceApiRecord = new gcp.dns.RecordSet(\"ssm_instance_api_record\", {\n name: _default.hostConfigs.apply(hostConfigs =\u003e `${hostConfigs[0].api}.`),\n type: \"A\",\n ttl: 300,\n managedZone: privateZone.name,\n rrdatas: [fwRuleTargetProxy.ipAddress],\n});\nconst ssmInstanceGitRecord = new gcp.dns.RecordSet(\"ssm_instance_git_record\", {\n name: _default.hostConfigs.apply(hostConfigs =\u003e `${hostConfigs[0].gitHttp}.`),\n type: \"A\",\n ttl: 300,\n managedZone: privateZone.name,\n rrdatas: [fwRuleTargetProxy.ipAddress],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\nproject = gcp.organizations.get_project()\nca_pool = gcp.certificateauthority.CaPool(\"ca_pool\",\n name=\"ca-pool\",\n location=\"us-central1\",\n tier=\"ENTERPRISE\",\n publishing_options={\n \"publish_ca_cert\": True,\n \"publish_crl\": True,\n })\nroot_ca = gcp.certificateauthority.Authority(\"root_ca\",\n pool=ca_pool.name,\n certificate_authority_id=\"root-ca\",\n location=\"us-central1\",\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"google\",\n \"common_name\": \"my-certificate-authority\",\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": True,\n },\n },\n },\n },\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n },\n deletion_protection=False,\n ignore_active_certificates_on_deletion=True,\n skip_grace_period=True)\nca_pool_binding = gcp.certificateauthority.CaPoolIamBinding(\"ca_pool_binding\",\n ca_pool=ca_pool.id,\n role=\"roles/privateca.certificateRequester\",\n members=[f\"serviceAccount:service-{project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com\"])\n# ca pool IAM permissions can take time to propagate\nwait120_seconds = time.index.Sleep(\"wait_120_seconds\", create_duration=120s,\nopts = pulumi.ResourceOptions(depends_on=[ca_pool_binding]))\n# See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\ndefault = gcp.securesourcemanager.Instance(\"default\",\n instance_id=\"my-instance\",\n location=\"us-central1\",\n private_config={\n \"is_private\": True,\n \"ca_pool\": ca_pool.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n root_ca,\n wait120_seconds,\n ]))\n# Connect SSM private instance with L4 proxy ILB.\nnetwork = gcp.compute.Network(\"network\",\n name=\"my-network\",\n auto_create_subnetworks=False)\nsubnet = gcp.compute.Subnetwork(\"subnet\",\n name=\"my-subnet\",\n region=\"us-central1\",\n network=network.id,\n ip_cidr_range=\"10.0.1.0/24\",\n private_ip_google_access=True)\npsc_neg = gcp.compute.RegionNetworkEndpointGroup(\"psc_neg\",\n name=\"my-neg\",\n region=\"us-central1\",\n network_endpoint_type=\"PRIVATE_SERVICE_CONNECT\",\n psc_target_service=default.private_config.http_service_attachment,\n network=network.id,\n subnetwork=subnet.id)\nbackend_service = gcp.compute.RegionBackendService(\"backend_service\",\n name=\"my-backend-service\",\n region=\"us-central1\",\n protocol=\"TCP\",\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n backends=[{\n \"group\": psc_neg.id,\n \"balancing_mode\": \"UTILIZATION\",\n \"capacity_scaler\": 1,\n }])\nproxy_subnet = gcp.compute.Subnetwork(\"proxy_subnet\",\n name=\"my-proxy-subnet\",\n region=\"us-central1\",\n network=network.id,\n ip_cidr_range=\"10.0.2.0/24\",\n purpose=\"REGIONAL_MANAGED_PROXY\",\n role=\"ACTIVE\")\ntarget_proxy = gcp.compute.RegionTargetTcpProxy(\"target_proxy\",\n name=\"my-target-proxy\",\n region=\"us-central1\",\n backend_service=backend_service.id)\nfw_rule_target_proxy = gcp.compute.ForwardingRule(\"fw_rule_target_proxy\",\n name=\"fw-rule-target-proxy\",\n region=\"us-central1\",\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n ip_protocol=\"TCP\",\n port_range=\"443\",\n target=target_proxy.id,\n network=network.id,\n subnetwork=subnet.id,\n network_tier=\"PREMIUM\",\n opts = pulumi.ResourceOptions(depends_on=[proxy_subnet]))\nprivate_zone = gcp.dns.ManagedZone(\"private_zone\",\n name=\"my-dns-zone\",\n dns_name=\"p.sourcemanager.dev.\",\n visibility=\"private\",\n private_visibility_config={\n \"networks\": [{\n \"network_url\": network.id,\n }],\n })\nssm_instance_html_record = gcp.dns.RecordSet(\"ssm_instance_html_record\",\n name=default.host_configs.apply(lambda host_configs: f\"{host_configs[0].html}.\"),\n type=\"A\",\n ttl=300,\n managed_zone=private_zone.name,\n rrdatas=[fw_rule_target_proxy.ip_address])\nssm_instance_api_record = gcp.dns.RecordSet(\"ssm_instance_api_record\",\n name=default.host_configs.apply(lambda host_configs: f\"{host_configs[0].api}.\"),\n type=\"A\",\n ttl=300,\n managed_zone=private_zone.name,\n rrdatas=[fw_rule_target_proxy.ip_address])\nssm_instance_git_record = gcp.dns.RecordSet(\"ssm_instance_git_record\",\n name=default.host_configs.apply(lambda host_configs: f\"{host_configs[0].git_http}.\"),\n type=\"A\",\n ttl=300,\n managed_zone=private_zone.name,\n rrdatas=[fw_rule_target_proxy.ip_address])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Time = Pulumi.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var caPool = new Gcp.CertificateAuthority.CaPool(\"ca_pool\", new()\n {\n Name = \"ca-pool\",\n Location = \"us-central1\",\n Tier = \"ENTERPRISE\",\n PublishingOptions = new Gcp.CertificateAuthority.Inputs.CaPoolPublishingOptionsArgs\n {\n PublishCaCert = true,\n PublishCrl = true,\n },\n });\n\n var rootCa = new Gcp.CertificateAuthority.Authority(\"root_ca\", new()\n {\n Pool = caPool.Name,\n CertificateAuthorityId = \"root-ca\",\n Location = \"us-central1\",\n Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectArgs\n {\n Organization = \"google\",\n CommonName = \"my-certificate-authority\",\n },\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigCaOptionsArgs\n {\n IsCa = true,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n CertSign = true,\n CrlSign = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n },\n },\n },\n },\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n Algorithm = \"RSA_PKCS1_4096_SHA256\",\n },\n DeletionProtection = false,\n IgnoreActiveCertificatesOnDeletion = true,\n SkipGracePeriod = true,\n });\n\n var caPoolBinding = new Gcp.CertificateAuthority.CaPoolIamBinding(\"ca_pool_binding\", new()\n {\n CaPool = caPool.Id,\n Role = \"roles/privateca.certificateRequester\",\n Members = new[]\n {\n $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-sourcemanager.iam.gserviceaccount.com\",\n },\n });\n\n // ca pool IAM permissions can take time to propagate\n var wait120Seconds = new Time.Index.Sleep(\"wait_120_seconds\", new()\n {\n CreateDuration = \"120s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n caPoolBinding,\n },\n });\n\n // See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\n var @default = new Gcp.SecureSourceManager.Instance(\"default\", new()\n {\n InstanceId = \"my-instance\",\n Location = \"us-central1\",\n PrivateConfig = new Gcp.SecureSourceManager.Inputs.InstancePrivateConfigArgs\n {\n IsPrivate = true,\n CaPool = caPool.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n rootCa,\n wait120Seconds,\n },\n });\n\n // Connect SSM private instance with L4 proxy ILB.\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"my-network\",\n AutoCreateSubnetworks = false,\n });\n\n var subnet = new Gcp.Compute.Subnetwork(\"subnet\", new()\n {\n Name = \"my-subnet\",\n Region = \"us-central1\",\n Network = network.Id,\n IpCidrRange = \"10.0.1.0/24\",\n PrivateIpGoogleAccess = true,\n });\n\n var pscNeg = new Gcp.Compute.RegionNetworkEndpointGroup(\"psc_neg\", new()\n {\n Name = \"my-neg\",\n Region = \"us-central1\",\n NetworkEndpointType = \"PRIVATE_SERVICE_CONNECT\",\n PscTargetService = @default.PrivateConfig.Apply(privateConfig =\u003e privateConfig?.HttpServiceAttachment),\n Network = network.Id,\n Subnetwork = subnet.Id,\n });\n\n var backendService = new Gcp.Compute.RegionBackendService(\"backend_service\", new()\n {\n Name = \"my-backend-service\",\n Region = \"us-central1\",\n Protocol = \"TCP\",\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n Backends = new[]\n {\n new Gcp.Compute.Inputs.RegionBackendServiceBackendArgs\n {\n Group = pscNeg.Id,\n BalancingMode = \"UTILIZATION\",\n CapacityScaler = 1,\n },\n },\n });\n\n var proxySubnet = new Gcp.Compute.Subnetwork(\"proxy_subnet\", new()\n {\n Name = \"my-proxy-subnet\",\n Region = \"us-central1\",\n Network = network.Id,\n IpCidrRange = \"10.0.2.0/24\",\n Purpose = \"REGIONAL_MANAGED_PROXY\",\n Role = \"ACTIVE\",\n });\n\n var targetProxy = new Gcp.Compute.RegionTargetTcpProxy(\"target_proxy\", new()\n {\n Name = \"my-target-proxy\",\n Region = \"us-central1\",\n BackendService = backendService.Id,\n });\n\n var fwRuleTargetProxy = new Gcp.Compute.ForwardingRule(\"fw_rule_target_proxy\", new()\n {\n Name = \"fw-rule-target-proxy\",\n Region = \"us-central1\",\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n IpProtocol = \"TCP\",\n PortRange = \"443\",\n Target = targetProxy.Id,\n Network = network.Id,\n Subnetwork = subnet.Id,\n NetworkTier = \"PREMIUM\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n proxySubnet,\n },\n });\n\n var privateZone = new Gcp.Dns.ManagedZone(\"private_zone\", new()\n {\n Name = \"my-dns-zone\",\n DnsName = \"p.sourcemanager.dev.\",\n Visibility = \"private\",\n PrivateVisibilityConfig = new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigArgs\n {\n Networks = new[]\n {\n new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigNetworkArgs\n {\n NetworkUrl = network.Id,\n },\n },\n },\n });\n\n var ssmInstanceHtmlRecord = new Gcp.Dns.RecordSet(\"ssm_instance_html_record\", new()\n {\n Name = @default.HostConfigs.Apply(hostConfigs =\u003e $\"{hostConfigs[0].Html}.\"),\n Type = \"A\",\n Ttl = 300,\n ManagedZone = privateZone.Name,\n Rrdatas = new[]\n {\n fwRuleTargetProxy.IpAddress,\n },\n });\n\n var ssmInstanceApiRecord = new Gcp.Dns.RecordSet(\"ssm_instance_api_record\", new()\n {\n Name = @default.HostConfigs.Apply(hostConfigs =\u003e $\"{hostConfigs[0].Api}.\"),\n Type = \"A\",\n Ttl = 300,\n ManagedZone = privateZone.Name,\n Rrdatas = new[]\n {\n fwRuleTargetProxy.IpAddress,\n },\n });\n\n var ssmInstanceGitRecord = new Gcp.Dns.RecordSet(\"ssm_instance_git_record\", new()\n {\n Name = @default.HostConfigs.Apply(hostConfigs =\u003e $\"{hostConfigs[0].GitHttp}.\"),\n Type = \"A\",\n Ttl = 300,\n ManagedZone = privateZone.Name,\n Rrdatas = new[]\n {\n fwRuleTargetProxy.IpAddress,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/securesourcemanager\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcaPool, err := certificateauthority.NewCaPool(ctx, \"ca_pool\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tName: pulumi.String(\"ca-pool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTier: pulumi.String(\"ENTERPRISE\"),\n\t\t\tPublishingOptions: \u0026certificateauthority.CaPoolPublishingOptionsArgs{\n\t\t\t\tPublishCaCert: pulumi.Bool(true),\n\t\t\t\tPublishCrl: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trootCa, err := certificateauthority.NewAuthority(ctx, \"root_ca\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tPool: caPool.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"root-ca\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConfig: \u0026certificateauthority.AuthorityConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.AuthorityConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tOrganization: pulumi.String(\"google\"),\n\t\t\t\t\t\tCommonName: pulumi.String(\"my-certificate-authority\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tX509Config: \u0026certificateauthority.AuthorityConfigX509ConfigArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.AuthorityConfigX509ConfigCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs{\n\t\t\t\t\t\t\tCertSign: pulumi.Bool(true),\n\t\t\t\t\t\t\tCrlSign: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tServerAuth: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"RSA_PKCS1_4096_SHA256\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tIgnoreActiveCertificatesOnDeletion: pulumi.Bool(true),\n\t\t\tSkipGracePeriod: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcaPoolBinding, err := certificateauthority.NewCaPoolIamBinding(ctx, \"ca_pool_binding\", \u0026certificateauthority.CaPoolIamBindingArgs{\n\t\t\tCaPool: caPool.ID(),\n\t\t\tRole: pulumi.String(\"roles/privateca.certificateRequester\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-sourcemanager.iam.gserviceaccount.com\", project.Number),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// ca pool IAM permissions can take time to propagate\n\t\twait120Seconds, err := time.NewSleep(ctx, \"wait_120_seconds\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"120s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcaPoolBinding,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\n\t\t_, err = securesourcemanager.NewInstance(ctx, \"default\", \u0026securesourcemanager.InstanceArgs{\n\t\t\tInstanceId: pulumi.String(\"my-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPrivateConfig: \u0026securesourcemanager.InstancePrivateConfigArgs{\n\t\t\t\tIsPrivate: pulumi.Bool(true),\n\t\t\t\tCaPool: caPool.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\trootCa,\n\t\t\twait120Seconds,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Connect SSM private instance with L4 proxy ILB.\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsubnet, err := compute.NewSubnetwork(ctx, \"subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"my-subnet\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.1.0/24\"),\n\t\t\tPrivateIpGoogleAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscNeg, err := compute.NewRegionNetworkEndpointGroup(ctx, \"psc_neg\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"my-neg\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetworkEndpointType: pulumi.String(\"PRIVATE_SERVICE_CONNECT\"),\n\t\t\tPscTargetService: pulumi.String(_default.PrivateConfig.ApplyT(func(privateConfig securesourcemanager.InstancePrivateConfig) (*string, error) {\n\t\t\t\treturn \u0026privateConfig.HttpServiceAttachment, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tNetwork: network.ID(),\n\t\t\tSubnetwork: subnet.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbackendService, err := compute.NewRegionBackendService(ctx, \"backend_service\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"my-backend-service\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tProtocol: pulumi.String(\"TCP\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tBackends: compute.RegionBackendServiceBackendArray{\n\t\t\t\t\u0026compute.RegionBackendServiceBackendArgs{\n\t\t\t\t\tGroup: pscNeg.ID(),\n\t\t\t\t\tBalancingMode: pulumi.String(\"UTILIZATION\"),\n\t\t\t\t\tCapacityScaler: pulumi.Float64(1),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproxySubnet, err := compute.NewSubnetwork(ctx, \"proxy_subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"my-proxy-subnet\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.2.0/24\"),\n\t\t\tPurpose: pulumi.String(\"REGIONAL_MANAGED_PROXY\"),\n\t\t\tRole: pulumi.String(\"ACTIVE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttargetProxy, err := compute.NewRegionTargetTcpProxy(ctx, \"target_proxy\", \u0026compute.RegionTargetTcpProxyArgs{\n\t\t\tName: pulumi.String(\"my-target-proxy\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tBackendService: backendService.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfwRuleTargetProxy, err := compute.NewForwardingRule(ctx, \"fw_rule_target_proxy\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"fw-rule-target-proxy\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tIpProtocol: pulumi.String(\"TCP\"),\n\t\t\tPortRange: pulumi.String(\"443\"),\n\t\t\tTarget: targetProxy.ID(),\n\t\t\tNetwork: network.ID(),\n\t\t\tSubnetwork: subnet.ID(),\n\t\t\tNetworkTier: pulumi.String(\"PREMIUM\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tproxySubnet,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateZone, err := dns.NewManagedZone(ctx, \"private_zone\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"my-dns-zone\"),\n\t\t\tDnsName: pulumi.String(\"p.sourcemanager.dev.\"),\n\t\t\tVisibility: pulumi.String(\"private\"),\n\t\t\tPrivateVisibilityConfig: \u0026dns.ManagedZonePrivateVisibilityConfigArgs{\n\t\t\t\tNetworks: dns.ManagedZonePrivateVisibilityConfigNetworkArray{\n\t\t\t\t\t\u0026dns.ManagedZonePrivateVisibilityConfigNetworkArgs{\n\t\t\t\t\t\tNetworkUrl: network.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"ssm_instance_html_record\", \u0026dns.RecordSetArgs{\n\t\t\tName: _default.HostConfigs.ApplyT(func(hostConfigs []securesourcemanager.InstanceHostConfig) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"%v.\", hostConfigs[0].Html), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tManagedZone: privateZone.Name,\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tfwRuleTargetProxy.IpAddress,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"ssm_instance_api_record\", \u0026dns.RecordSetArgs{\n\t\t\tName: _default.HostConfigs.ApplyT(func(hostConfigs []securesourcemanager.InstanceHostConfig) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"%v.\", hostConfigs[0].Api), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tManagedZone: privateZone.Name,\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tfwRuleTargetProxy.IpAddress,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"ssm_instance_git_record\", \u0026dns.RecordSetArgs{\n\t\t\tName: _default.HostConfigs.ApplyT(func(hostConfigs []securesourcemanager.InstanceHostConfig) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"%v.\", hostConfigs[0].GitHttp), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tManagedZone: privateZone.Name,\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tfwRuleTargetProxy.IpAddress,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.certificateauthority.CaPool;\nimport com.pulumi.gcp.certificateauthority.CaPoolArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolPublishingOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.Authority;\nimport com.pulumi.gcp.certificateauthority.AuthorityArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityKeySpecArgs;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamBinding;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamBindingArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.securesourcemanager.Instance;\nimport com.pulumi.gcp.securesourcemanager.InstanceArgs;\nimport com.pulumi.gcp.securesourcemanager.inputs.InstancePrivateConfigArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroup;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroupArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.inputs.RegionBackendServiceBackendArgs;\nimport com.pulumi.gcp.compute.RegionTargetTcpProxy;\nimport com.pulumi.gcp.compute.RegionTargetTcpProxyArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZonePrivateVisibilityConfigArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var caPool = new CaPool(\"caPool\", CaPoolArgs.builder()\n .name(\"ca-pool\")\n .location(\"us-central1\")\n .tier(\"ENTERPRISE\")\n .publishingOptions(CaPoolPublishingOptionsArgs.builder()\n .publishCaCert(true)\n .publishCrl(true)\n .build())\n .build());\n\n var rootCa = new Authority(\"rootCa\", AuthorityArgs.builder()\n .pool(caPool.name())\n .certificateAuthorityId(\"root-ca\")\n .location(\"us-central1\")\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"google\")\n .commonName(\"my-certificate-authority\")\n .build())\n .build())\n .x509Config(AuthorityConfigX509ConfigArgs.builder()\n .caOptions(AuthorityConfigX509ConfigCaOptionsArgs.builder()\n .isCa(true)\n .build())\n .keyUsage(AuthorityConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .certSign(true)\n .crlSign(true)\n .build())\n .extendedKeyUsage(AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .build())\n .build())\n .build())\n .build())\n .keySpec(AuthorityKeySpecArgs.builder()\n .algorithm(\"RSA_PKCS1_4096_SHA256\")\n .build())\n .deletionProtection(false)\n .ignoreActiveCertificatesOnDeletion(true)\n .skipGracePeriod(true)\n .build());\n\n var caPoolBinding = new CaPoolIamBinding(\"caPoolBinding\", CaPoolIamBindingArgs.builder()\n .caPool(caPool.id())\n .role(\"roles/privateca.certificateRequester\")\n .members(String.format(\"serviceAccount:service-%s@gcp-sa-sourcemanager.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n // ca pool IAM permissions can take time to propagate\n var wait120Seconds = new Sleep(\"wait120Seconds\", SleepArgs.builder()\n .createDuration(\"120s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(caPoolBinding)\n .build());\n\n // See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\n var default_ = new Instance(\"default\", InstanceArgs.builder()\n .instanceId(\"my-instance\")\n .location(\"us-central1\")\n .privateConfig(InstancePrivateConfigArgs.builder()\n .isPrivate(true)\n .caPool(caPool.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n rootCa,\n wait120Seconds)\n .build());\n\n // Connect SSM private instance with L4 proxy ILB.\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"my-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnet = new Subnetwork(\"subnet\", SubnetworkArgs.builder()\n .name(\"my-subnet\")\n .region(\"us-central1\")\n .network(network.id())\n .ipCidrRange(\"10.0.1.0/24\")\n .privateIpGoogleAccess(true)\n .build());\n\n var pscNeg = new RegionNetworkEndpointGroup(\"pscNeg\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"my-neg\")\n .region(\"us-central1\")\n .networkEndpointType(\"PRIVATE_SERVICE_CONNECT\")\n .pscTargetService(default_.privateConfig().applyValue(privateConfig -\u003e privateConfig.httpServiceAttachment()))\n .network(network.id())\n .subnetwork(subnet.id())\n .build());\n\n var backendService = new RegionBackendService(\"backendService\", RegionBackendServiceArgs.builder()\n .name(\"my-backend-service\")\n .region(\"us-central1\")\n .protocol(\"TCP\")\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .backends(RegionBackendServiceBackendArgs.builder()\n .group(pscNeg.id())\n .balancingMode(\"UTILIZATION\")\n .capacityScaler(1)\n .build())\n .build());\n\n var proxySubnet = new Subnetwork(\"proxySubnet\", SubnetworkArgs.builder()\n .name(\"my-proxy-subnet\")\n .region(\"us-central1\")\n .network(network.id())\n .ipCidrRange(\"10.0.2.0/24\")\n .purpose(\"REGIONAL_MANAGED_PROXY\")\n .role(\"ACTIVE\")\n .build());\n\n var targetProxy = new RegionTargetTcpProxy(\"targetProxy\", RegionTargetTcpProxyArgs.builder()\n .name(\"my-target-proxy\")\n .region(\"us-central1\")\n .backendService(backendService.id())\n .build());\n\n var fwRuleTargetProxy = new ForwardingRule(\"fwRuleTargetProxy\", ForwardingRuleArgs.builder()\n .name(\"fw-rule-target-proxy\")\n .region(\"us-central1\")\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .ipProtocol(\"TCP\")\n .portRange(\"443\")\n .target(targetProxy.id())\n .network(network.id())\n .subnetwork(subnet.id())\n .networkTier(\"PREMIUM\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(proxySubnet)\n .build());\n\n var privateZone = new ManagedZone(\"privateZone\", ManagedZoneArgs.builder()\n .name(\"my-dns-zone\")\n .dnsName(\"p.sourcemanager.dev.\")\n .visibility(\"private\")\n .privateVisibilityConfig(ManagedZonePrivateVisibilityConfigArgs.builder()\n .networks(ManagedZonePrivateVisibilityConfigNetworkArgs.builder()\n .networkUrl(network.id())\n .build())\n .build())\n .build());\n\n var ssmInstanceHtmlRecord = new RecordSet(\"ssmInstanceHtmlRecord\", RecordSetArgs.builder()\n .name(default_.hostConfigs().applyValue(hostConfigs -\u003e String.format(\"%s.\", hostConfigs[0].html())))\n .type(\"A\")\n .ttl(300)\n .managedZone(privateZone.name())\n .rrdatas(fwRuleTargetProxy.ipAddress())\n .build());\n\n var ssmInstanceApiRecord = new RecordSet(\"ssmInstanceApiRecord\", RecordSetArgs.builder()\n .name(default_.hostConfigs().applyValue(hostConfigs -\u003e String.format(\"%s.\", hostConfigs[0].api())))\n .type(\"A\")\n .ttl(300)\n .managedZone(privateZone.name())\n .rrdatas(fwRuleTargetProxy.ipAddress())\n .build());\n\n var ssmInstanceGitRecord = new RecordSet(\"ssmInstanceGitRecord\", RecordSetArgs.builder()\n .name(default_.hostConfigs().applyValue(hostConfigs -\u003e String.format(\"%s.\", hostConfigs[0].gitHttp())))\n .type(\"A\")\n .ttl(300)\n .managedZone(privateZone.name())\n .rrdatas(fwRuleTargetProxy.ipAddress())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n caPool:\n type: gcp:certificateauthority:CaPool\n name: ca_pool\n properties:\n name: ca-pool\n location: us-central1\n tier: ENTERPRISE\n publishingOptions:\n publishCaCert: true\n publishCrl: true\n rootCa:\n type: gcp:certificateauthority:Authority\n name: root_ca\n properties:\n pool: ${caPool.name}\n certificateAuthorityId: root-ca\n location: us-central1\n config:\n subjectConfig:\n subject:\n organization: google\n commonName: my-certificate-authority\n x509Config:\n caOptions:\n isCa: true\n keyUsage:\n baseKeyUsage:\n certSign: true\n crlSign: true\n extendedKeyUsage:\n serverAuth: true\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n deletionProtection: false\n ignoreActiveCertificatesOnDeletion: true\n skipGracePeriod: true\n caPoolBinding:\n type: gcp:certificateauthority:CaPoolIamBinding\n name: ca_pool_binding\n properties:\n caPool: ${caPool.id}\n role: roles/privateca.certificateRequester\n members:\n - serviceAccount:service-${project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com\n # See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\n default:\n type: gcp:securesourcemanager:Instance\n properties:\n instanceId: my-instance\n location: us-central1\n privateConfig:\n isPrivate: true\n caPool: ${caPool.id}\n options:\n dependson:\n - ${rootCa}\n - ${wait120Seconds}\n # ca pool IAM permissions can take time to propagate\n wait120Seconds:\n type: time:sleep\n name: wait_120_seconds\n properties:\n createDuration: 120s\n options:\n dependson:\n - ${caPoolBinding}\n # Connect SSM private instance with L4 proxy ILB.\n network:\n type: gcp:compute:Network\n properties:\n name: my-network\n autoCreateSubnetworks: false\n subnet:\n type: gcp:compute:Subnetwork\n properties:\n name: my-subnet\n region: us-central1\n network: ${network.id}\n ipCidrRange: 10.0.1.0/24\n privateIpGoogleAccess: true\n pscNeg:\n type: gcp:compute:RegionNetworkEndpointGroup\n name: psc_neg\n properties:\n name: my-neg\n region: us-central1\n networkEndpointType: PRIVATE_SERVICE_CONNECT\n pscTargetService: ${default.privateConfig.httpServiceAttachment}\n network: ${network.id}\n subnetwork: ${subnet.id}\n backendService:\n type: gcp:compute:RegionBackendService\n name: backend_service\n properties:\n name: my-backend-service\n region: us-central1\n protocol: TCP\n loadBalancingScheme: INTERNAL_MANAGED\n backends:\n - group: ${pscNeg.id}\n balancingMode: UTILIZATION\n capacityScaler: 1\n proxySubnet:\n type: gcp:compute:Subnetwork\n name: proxy_subnet\n properties:\n name: my-proxy-subnet\n region: us-central1\n network: ${network.id}\n ipCidrRange: 10.0.2.0/24\n purpose: REGIONAL_MANAGED_PROXY\n role: ACTIVE\n targetProxy:\n type: gcp:compute:RegionTargetTcpProxy\n name: target_proxy\n properties:\n name: my-target-proxy\n region: us-central1\n backendService: ${backendService.id}\n fwRuleTargetProxy:\n type: gcp:compute:ForwardingRule\n name: fw_rule_target_proxy\n properties:\n name: fw-rule-target-proxy\n region: us-central1\n loadBalancingScheme: INTERNAL_MANAGED\n ipProtocol: TCP\n portRange: '443'\n target: ${targetProxy.id}\n network: ${network.id}\n subnetwork: ${subnet.id}\n networkTier: PREMIUM\n options:\n dependson:\n - ${proxySubnet}\n privateZone:\n type: gcp:dns:ManagedZone\n name: private_zone\n properties:\n name: my-dns-zone\n dnsName: p.sourcemanager.dev.\n visibility: private\n privateVisibilityConfig:\n networks:\n - networkUrl: ${network.id}\n ssmInstanceHtmlRecord:\n type: gcp:dns:RecordSet\n name: ssm_instance_html_record\n properties:\n name: ${default.hostConfigs[0].html}.\n type: A\n ttl: 300\n managedZone: ${privateZone.name}\n rrdatas:\n - ${fwRuleTargetProxy.ipAddress}\n ssmInstanceApiRecord:\n type: gcp:dns:RecordSet\n name: ssm_instance_api_record\n properties:\n name: ${default.hostConfigs[0].api}.\n type: A\n ttl: 300\n managedZone: ${privateZone.name}\n rrdatas:\n - ${fwRuleTargetProxy.ipAddress}\n ssmInstanceGitRecord:\n type: gcp:dns:RecordSet\n name: ssm_instance_git_record\n properties:\n name: ${default.hostConfigs[0].gitHttp}.\n type: A\n ttl: 300\n managedZone: ${privateZone.name}\n rrdatas:\n - ${fwRuleTargetProxy.ipAddress}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secure Source Manager Instance Private Psc Endpoint\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\nconst project = gcp.organizations.getProject({});\nconst caPool = new gcp.certificateauthority.CaPool(\"ca_pool\", {\n name: \"ca-pool\",\n location: \"us-central1\",\n tier: \"ENTERPRISE\",\n publishingOptions: {\n publishCaCert: true,\n publishCrl: true,\n },\n});\nconst rootCa = new gcp.certificateauthority.Authority(\"root_ca\", {\n pool: caPool.name,\n certificateAuthorityId: \"root-ca\",\n location: \"us-central1\",\n config: {\n subjectConfig: {\n subject: {\n organization: \"google\",\n commonName: \"my-certificate-authority\",\n },\n },\n x509Config: {\n caOptions: {\n isCa: true,\n },\n keyUsage: {\n baseKeyUsage: {\n certSign: true,\n crlSign: true,\n },\n extendedKeyUsage: {\n serverAuth: true,\n },\n },\n },\n },\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n deletionProtection: false,\n ignoreActiveCertificatesOnDeletion: true,\n skipGracePeriod: true,\n});\nconst caPoolBinding = new gcp.certificateauthority.CaPoolIamBinding(\"ca_pool_binding\", {\n caPool: caPool.id,\n role: \"roles/privateca.certificateRequester\",\n members: [project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com`)],\n});\n// ca pool IAM permissions can take time to propagate\nconst wait120Seconds = new time.index.Sleep(\"wait_120_seconds\", {createDuration: \"120s\"}, {\n dependsOn: [caPoolBinding],\n});\n// See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\nconst _default = new gcp.securesourcemanager.Instance(\"default\", {\n instanceId: \"my-instance\",\n location: \"us-central1\",\n privateConfig: {\n isPrivate: true,\n caPool: caPool.id,\n },\n}, {\n dependsOn: [\n rootCa,\n wait120Seconds,\n ],\n});\n// Connect SSM private instance with endpoint.\nconst network = new gcp.compute.Network(\"network\", {\n name: \"my-network\",\n autoCreateSubnetworks: false,\n});\nconst subnet = new gcp.compute.Subnetwork(\"subnet\", {\n name: \"my-subnet\",\n region: \"us-central1\",\n network: network.id,\n ipCidrRange: \"10.0.60.0/24\",\n privateIpGoogleAccess: true,\n});\nconst address = new gcp.compute.Address(\"address\", {\n name: \"my-address\",\n region: \"us-central1\",\n address: \"10.0.60.100\",\n addressType: \"INTERNAL\",\n subnetwork: subnet.id,\n});\nconst fwRuleServiceAttachment = new gcp.compute.ForwardingRule(\"fw_rule_service_attachment\", {\n name: \"fw-rule-service-attachment\",\n region: \"us-central1\",\n loadBalancingScheme: \"\",\n ipAddress: address.id,\n network: network.id,\n target: _default.privateConfig.apply(privateConfig =\u003e privateConfig?.httpServiceAttachment),\n});\nconst privateZone = new gcp.dns.ManagedZone(\"private_zone\", {\n name: \"my-dns-zone\",\n dnsName: \"p.sourcemanager.dev.\",\n visibility: \"private\",\n privateVisibilityConfig: {\n networks: [{\n networkUrl: network.id,\n }],\n },\n});\nconst ssmInstanceHtmlRecord = new gcp.dns.RecordSet(\"ssm_instance_html_record\", {\n name: _default.hostConfigs.apply(hostConfigs =\u003e `${hostConfigs[0].html}.`),\n type: \"A\",\n ttl: 300,\n managedZone: privateZone.name,\n rrdatas: [fwRuleServiceAttachment.ipAddress],\n});\nconst ssmInstanceApiRecord = new gcp.dns.RecordSet(\"ssm_instance_api_record\", {\n name: _default.hostConfigs.apply(hostConfigs =\u003e `${hostConfigs[0].api}.`),\n type: \"A\",\n ttl: 300,\n managedZone: privateZone.name,\n rrdatas: [fwRuleServiceAttachment.ipAddress],\n});\nconst ssmInstanceGitRecord = new gcp.dns.RecordSet(\"ssm_instance_git_record\", {\n name: _default.hostConfigs.apply(hostConfigs =\u003e `${hostConfigs[0].gitHttp}.`),\n type: \"A\",\n ttl: 300,\n managedZone: privateZone.name,\n rrdatas: [fwRuleServiceAttachment.ipAddress],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\nproject = gcp.organizations.get_project()\nca_pool = gcp.certificateauthority.CaPool(\"ca_pool\",\n name=\"ca-pool\",\n location=\"us-central1\",\n tier=\"ENTERPRISE\",\n publishing_options={\n \"publish_ca_cert\": True,\n \"publish_crl\": True,\n })\nroot_ca = gcp.certificateauthority.Authority(\"root_ca\",\n pool=ca_pool.name,\n certificate_authority_id=\"root-ca\",\n location=\"us-central1\",\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"google\",\n \"common_name\": \"my-certificate-authority\",\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": True,\n },\n },\n },\n },\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n },\n deletion_protection=False,\n ignore_active_certificates_on_deletion=True,\n skip_grace_period=True)\nca_pool_binding = gcp.certificateauthority.CaPoolIamBinding(\"ca_pool_binding\",\n ca_pool=ca_pool.id,\n role=\"roles/privateca.certificateRequester\",\n members=[f\"serviceAccount:service-{project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com\"])\n# ca pool IAM permissions can take time to propagate\nwait120_seconds = time.index.Sleep(\"wait_120_seconds\", create_duration=120s,\nopts = pulumi.ResourceOptions(depends_on=[ca_pool_binding]))\n# See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\ndefault = gcp.securesourcemanager.Instance(\"default\",\n instance_id=\"my-instance\",\n location=\"us-central1\",\n private_config={\n \"is_private\": True,\n \"ca_pool\": ca_pool.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n root_ca,\n wait120_seconds,\n ]))\n# Connect SSM private instance with endpoint.\nnetwork = gcp.compute.Network(\"network\",\n name=\"my-network\",\n auto_create_subnetworks=False)\nsubnet = gcp.compute.Subnetwork(\"subnet\",\n name=\"my-subnet\",\n region=\"us-central1\",\n network=network.id,\n ip_cidr_range=\"10.0.60.0/24\",\n private_ip_google_access=True)\naddress = gcp.compute.Address(\"address\",\n name=\"my-address\",\n region=\"us-central1\",\n address=\"10.0.60.100\",\n address_type=\"INTERNAL\",\n subnetwork=subnet.id)\nfw_rule_service_attachment = gcp.compute.ForwardingRule(\"fw_rule_service_attachment\",\n name=\"fw-rule-service-attachment\",\n region=\"us-central1\",\n load_balancing_scheme=\"\",\n ip_address=address.id,\n network=network.id,\n target=default.private_config.http_service_attachment)\nprivate_zone = gcp.dns.ManagedZone(\"private_zone\",\n name=\"my-dns-zone\",\n dns_name=\"p.sourcemanager.dev.\",\n visibility=\"private\",\n private_visibility_config={\n \"networks\": [{\n \"network_url\": network.id,\n }],\n })\nssm_instance_html_record = gcp.dns.RecordSet(\"ssm_instance_html_record\",\n name=default.host_configs.apply(lambda host_configs: f\"{host_configs[0].html}.\"),\n type=\"A\",\n ttl=300,\n managed_zone=private_zone.name,\n rrdatas=[fw_rule_service_attachment.ip_address])\nssm_instance_api_record = gcp.dns.RecordSet(\"ssm_instance_api_record\",\n name=default.host_configs.apply(lambda host_configs: f\"{host_configs[0].api}.\"),\n type=\"A\",\n ttl=300,\n managed_zone=private_zone.name,\n rrdatas=[fw_rule_service_attachment.ip_address])\nssm_instance_git_record = gcp.dns.RecordSet(\"ssm_instance_git_record\",\n name=default.host_configs.apply(lambda host_configs: f\"{host_configs[0].git_http}.\"),\n type=\"A\",\n ttl=300,\n managed_zone=private_zone.name,\n rrdatas=[fw_rule_service_attachment.ip_address])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Time = Pulumi.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var caPool = new Gcp.CertificateAuthority.CaPool(\"ca_pool\", new()\n {\n Name = \"ca-pool\",\n Location = \"us-central1\",\n Tier = \"ENTERPRISE\",\n PublishingOptions = new Gcp.CertificateAuthority.Inputs.CaPoolPublishingOptionsArgs\n {\n PublishCaCert = true,\n PublishCrl = true,\n },\n });\n\n var rootCa = new Gcp.CertificateAuthority.Authority(\"root_ca\", new()\n {\n Pool = caPool.Name,\n CertificateAuthorityId = \"root-ca\",\n Location = \"us-central1\",\n Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectArgs\n {\n Organization = \"google\",\n CommonName = \"my-certificate-authority\",\n },\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigCaOptionsArgs\n {\n IsCa = true,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n CertSign = true,\n CrlSign = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n },\n },\n },\n },\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n Algorithm = \"RSA_PKCS1_4096_SHA256\",\n },\n DeletionProtection = false,\n IgnoreActiveCertificatesOnDeletion = true,\n SkipGracePeriod = true,\n });\n\n var caPoolBinding = new Gcp.CertificateAuthority.CaPoolIamBinding(\"ca_pool_binding\", new()\n {\n CaPool = caPool.Id,\n Role = \"roles/privateca.certificateRequester\",\n Members = new[]\n {\n $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-sourcemanager.iam.gserviceaccount.com\",\n },\n });\n\n // ca pool IAM permissions can take time to propagate\n var wait120Seconds = new Time.Index.Sleep(\"wait_120_seconds\", new()\n {\n CreateDuration = \"120s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n caPoolBinding,\n },\n });\n\n // See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\n var @default = new Gcp.SecureSourceManager.Instance(\"default\", new()\n {\n InstanceId = \"my-instance\",\n Location = \"us-central1\",\n PrivateConfig = new Gcp.SecureSourceManager.Inputs.InstancePrivateConfigArgs\n {\n IsPrivate = true,\n CaPool = caPool.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n rootCa,\n wait120Seconds,\n },\n });\n\n // Connect SSM private instance with endpoint.\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"my-network\",\n AutoCreateSubnetworks = false,\n });\n\n var subnet = new Gcp.Compute.Subnetwork(\"subnet\", new()\n {\n Name = \"my-subnet\",\n Region = \"us-central1\",\n Network = network.Id,\n IpCidrRange = \"10.0.60.0/24\",\n PrivateIpGoogleAccess = true,\n });\n\n var address = new Gcp.Compute.Address(\"address\", new()\n {\n Name = \"my-address\",\n Region = \"us-central1\",\n IPAddress = \"10.0.60.100\",\n AddressType = \"INTERNAL\",\n Subnetwork = subnet.Id,\n });\n\n var fwRuleServiceAttachment = new Gcp.Compute.ForwardingRule(\"fw_rule_service_attachment\", new()\n {\n Name = \"fw-rule-service-attachment\",\n Region = \"us-central1\",\n LoadBalancingScheme = \"\",\n IpAddress = address.Id,\n Network = network.Id,\n Target = @default.PrivateConfig.Apply(privateConfig =\u003e privateConfig?.HttpServiceAttachment),\n });\n\n var privateZone = new Gcp.Dns.ManagedZone(\"private_zone\", new()\n {\n Name = \"my-dns-zone\",\n DnsName = \"p.sourcemanager.dev.\",\n Visibility = \"private\",\n PrivateVisibilityConfig = new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigArgs\n {\n Networks = new[]\n {\n new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigNetworkArgs\n {\n NetworkUrl = network.Id,\n },\n },\n },\n });\n\n var ssmInstanceHtmlRecord = new Gcp.Dns.RecordSet(\"ssm_instance_html_record\", new()\n {\n Name = @default.HostConfigs.Apply(hostConfigs =\u003e $\"{hostConfigs[0].Html}.\"),\n Type = \"A\",\n Ttl = 300,\n ManagedZone = privateZone.Name,\n Rrdatas = new[]\n {\n fwRuleServiceAttachment.IpAddress,\n },\n });\n\n var ssmInstanceApiRecord = new Gcp.Dns.RecordSet(\"ssm_instance_api_record\", new()\n {\n Name = @default.HostConfigs.Apply(hostConfigs =\u003e $\"{hostConfigs[0].Api}.\"),\n Type = \"A\",\n Ttl = 300,\n ManagedZone = privateZone.Name,\n Rrdatas = new[]\n {\n fwRuleServiceAttachment.IpAddress,\n },\n });\n\n var ssmInstanceGitRecord = new Gcp.Dns.RecordSet(\"ssm_instance_git_record\", new()\n {\n Name = @default.HostConfigs.Apply(hostConfigs =\u003e $\"{hostConfigs[0].GitHttp}.\"),\n Type = \"A\",\n Ttl = 300,\n ManagedZone = privateZone.Name,\n Rrdatas = new[]\n {\n fwRuleServiceAttachment.IpAddress,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/securesourcemanager\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcaPool, err := certificateauthority.NewCaPool(ctx, \"ca_pool\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tName: pulumi.String(\"ca-pool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTier: pulumi.String(\"ENTERPRISE\"),\n\t\t\tPublishingOptions: \u0026certificateauthority.CaPoolPublishingOptionsArgs{\n\t\t\t\tPublishCaCert: pulumi.Bool(true),\n\t\t\t\tPublishCrl: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trootCa, err := certificateauthority.NewAuthority(ctx, \"root_ca\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tPool: caPool.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"root-ca\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConfig: \u0026certificateauthority.AuthorityConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.AuthorityConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tOrganization: pulumi.String(\"google\"),\n\t\t\t\t\t\tCommonName: pulumi.String(\"my-certificate-authority\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tX509Config: \u0026certificateauthority.AuthorityConfigX509ConfigArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.AuthorityConfigX509ConfigCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs{\n\t\t\t\t\t\t\tCertSign: pulumi.Bool(true),\n\t\t\t\t\t\t\tCrlSign: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tServerAuth: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"RSA_PKCS1_4096_SHA256\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tIgnoreActiveCertificatesOnDeletion: pulumi.Bool(true),\n\t\t\tSkipGracePeriod: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcaPoolBinding, err := certificateauthority.NewCaPoolIamBinding(ctx, \"ca_pool_binding\", \u0026certificateauthority.CaPoolIamBindingArgs{\n\t\t\tCaPool: caPool.ID(),\n\t\t\tRole: pulumi.String(\"roles/privateca.certificateRequester\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-sourcemanager.iam.gserviceaccount.com\", project.Number),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// ca pool IAM permissions can take time to propagate\n\t\twait120Seconds, err := time.NewSleep(ctx, \"wait_120_seconds\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"120s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcaPoolBinding,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\n\t\t_, err = securesourcemanager.NewInstance(ctx, \"default\", \u0026securesourcemanager.InstanceArgs{\n\t\t\tInstanceId: pulumi.String(\"my-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPrivateConfig: \u0026securesourcemanager.InstancePrivateConfigArgs{\n\t\t\t\tIsPrivate: pulumi.Bool(true),\n\t\t\t\tCaPool: caPool.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\trootCa,\n\t\t\twait120Seconds,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Connect SSM private instance with endpoint.\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsubnet, err := compute.NewSubnetwork(ctx, \"subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"my-subnet\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.60.0/24\"),\n\t\t\tPrivateIpGoogleAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taddress, err := compute.NewAddress(ctx, \"address\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"my-address\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tAddress: pulumi.String(\"10.0.60.100\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tSubnetwork: subnet.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfwRuleServiceAttachment, err := compute.NewForwardingRule(ctx, \"fw_rule_service_attachment\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"fw-rule-service-attachment\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"\"),\n\t\t\tIpAddress: address.ID(),\n\t\t\tNetwork: network.ID(),\n\t\t\tTarget: pulumi.String(_default.PrivateConfig.ApplyT(func(privateConfig securesourcemanager.InstancePrivateConfig) (*string, error) {\n\t\t\t\treturn \u0026privateConfig.HttpServiceAttachment, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateZone, err := dns.NewManagedZone(ctx, \"private_zone\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"my-dns-zone\"),\n\t\t\tDnsName: pulumi.String(\"p.sourcemanager.dev.\"),\n\t\t\tVisibility: pulumi.String(\"private\"),\n\t\t\tPrivateVisibilityConfig: \u0026dns.ManagedZonePrivateVisibilityConfigArgs{\n\t\t\t\tNetworks: dns.ManagedZonePrivateVisibilityConfigNetworkArray{\n\t\t\t\t\t\u0026dns.ManagedZonePrivateVisibilityConfigNetworkArgs{\n\t\t\t\t\t\tNetworkUrl: network.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"ssm_instance_html_record\", \u0026dns.RecordSetArgs{\n\t\t\tName: _default.HostConfigs.ApplyT(func(hostConfigs []securesourcemanager.InstanceHostConfig) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"%v.\", hostConfigs[0].Html), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tManagedZone: privateZone.Name,\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tfwRuleServiceAttachment.IpAddress,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"ssm_instance_api_record\", \u0026dns.RecordSetArgs{\n\t\t\tName: _default.HostConfigs.ApplyT(func(hostConfigs []securesourcemanager.InstanceHostConfig) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"%v.\", hostConfigs[0].Api), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tManagedZone: privateZone.Name,\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tfwRuleServiceAttachment.IpAddress,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"ssm_instance_git_record\", \u0026dns.RecordSetArgs{\n\t\t\tName: _default.HostConfigs.ApplyT(func(hostConfigs []securesourcemanager.InstanceHostConfig) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"%v.\", hostConfigs[0].GitHttp), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tManagedZone: privateZone.Name,\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tfwRuleServiceAttachment.IpAddress,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.certificateauthority.CaPool;\nimport com.pulumi.gcp.certificateauthority.CaPoolArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolPublishingOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.Authority;\nimport com.pulumi.gcp.certificateauthority.AuthorityArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityKeySpecArgs;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamBinding;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamBindingArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.securesourcemanager.Instance;\nimport com.pulumi.gcp.securesourcemanager.InstanceArgs;\nimport com.pulumi.gcp.securesourcemanager.inputs.InstancePrivateConfigArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZonePrivateVisibilityConfigArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var caPool = new CaPool(\"caPool\", CaPoolArgs.builder()\n .name(\"ca-pool\")\n .location(\"us-central1\")\n .tier(\"ENTERPRISE\")\n .publishingOptions(CaPoolPublishingOptionsArgs.builder()\n .publishCaCert(true)\n .publishCrl(true)\n .build())\n .build());\n\n var rootCa = new Authority(\"rootCa\", AuthorityArgs.builder()\n .pool(caPool.name())\n .certificateAuthorityId(\"root-ca\")\n .location(\"us-central1\")\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"google\")\n .commonName(\"my-certificate-authority\")\n .build())\n .build())\n .x509Config(AuthorityConfigX509ConfigArgs.builder()\n .caOptions(AuthorityConfigX509ConfigCaOptionsArgs.builder()\n .isCa(true)\n .build())\n .keyUsage(AuthorityConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .certSign(true)\n .crlSign(true)\n .build())\n .extendedKeyUsage(AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .build())\n .build())\n .build())\n .build())\n .keySpec(AuthorityKeySpecArgs.builder()\n .algorithm(\"RSA_PKCS1_4096_SHA256\")\n .build())\n .deletionProtection(false)\n .ignoreActiveCertificatesOnDeletion(true)\n .skipGracePeriod(true)\n .build());\n\n var caPoolBinding = new CaPoolIamBinding(\"caPoolBinding\", CaPoolIamBindingArgs.builder()\n .caPool(caPool.id())\n .role(\"roles/privateca.certificateRequester\")\n .members(String.format(\"serviceAccount:service-%s@gcp-sa-sourcemanager.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n // ca pool IAM permissions can take time to propagate\n var wait120Seconds = new Sleep(\"wait120Seconds\", SleepArgs.builder()\n .createDuration(\"120s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(caPoolBinding)\n .build());\n\n // See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\n var default_ = new Instance(\"default\", InstanceArgs.builder()\n .instanceId(\"my-instance\")\n .location(\"us-central1\")\n .privateConfig(InstancePrivateConfigArgs.builder()\n .isPrivate(true)\n .caPool(caPool.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n rootCa,\n wait120Seconds)\n .build());\n\n // Connect SSM private instance with endpoint.\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"my-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnet = new Subnetwork(\"subnet\", SubnetworkArgs.builder()\n .name(\"my-subnet\")\n .region(\"us-central1\")\n .network(network.id())\n .ipCidrRange(\"10.0.60.0/24\")\n .privateIpGoogleAccess(true)\n .build());\n\n var address = new Address(\"address\", AddressArgs.builder()\n .name(\"my-address\")\n .region(\"us-central1\")\n .address(\"10.0.60.100\")\n .addressType(\"INTERNAL\")\n .subnetwork(subnet.id())\n .build());\n\n var fwRuleServiceAttachment = new ForwardingRule(\"fwRuleServiceAttachment\", ForwardingRuleArgs.builder()\n .name(\"fw-rule-service-attachment\")\n .region(\"us-central1\")\n .loadBalancingScheme(\"\")\n .ipAddress(address.id())\n .network(network.id())\n .target(default_.privateConfig().applyValue(privateConfig -\u003e privateConfig.httpServiceAttachment()))\n .build());\n\n var privateZone = new ManagedZone(\"privateZone\", ManagedZoneArgs.builder()\n .name(\"my-dns-zone\")\n .dnsName(\"p.sourcemanager.dev.\")\n .visibility(\"private\")\n .privateVisibilityConfig(ManagedZonePrivateVisibilityConfigArgs.builder()\n .networks(ManagedZonePrivateVisibilityConfigNetworkArgs.builder()\n .networkUrl(network.id())\n .build())\n .build())\n .build());\n\n var ssmInstanceHtmlRecord = new RecordSet(\"ssmInstanceHtmlRecord\", RecordSetArgs.builder()\n .name(default_.hostConfigs().applyValue(hostConfigs -\u003e String.format(\"%s.\", hostConfigs[0].html())))\n .type(\"A\")\n .ttl(300)\n .managedZone(privateZone.name())\n .rrdatas(fwRuleServiceAttachment.ipAddress())\n .build());\n\n var ssmInstanceApiRecord = new RecordSet(\"ssmInstanceApiRecord\", RecordSetArgs.builder()\n .name(default_.hostConfigs().applyValue(hostConfigs -\u003e String.format(\"%s.\", hostConfigs[0].api())))\n .type(\"A\")\n .ttl(300)\n .managedZone(privateZone.name())\n .rrdatas(fwRuleServiceAttachment.ipAddress())\n .build());\n\n var ssmInstanceGitRecord = new RecordSet(\"ssmInstanceGitRecord\", RecordSetArgs.builder()\n .name(default_.hostConfigs().applyValue(hostConfigs -\u003e String.format(\"%s.\", hostConfigs[0].gitHttp())))\n .type(\"A\")\n .ttl(300)\n .managedZone(privateZone.name())\n .rrdatas(fwRuleServiceAttachment.ipAddress())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n caPool:\n type: gcp:certificateauthority:CaPool\n name: ca_pool\n properties:\n name: ca-pool\n location: us-central1\n tier: ENTERPRISE\n publishingOptions:\n publishCaCert: true\n publishCrl: true\n rootCa:\n type: gcp:certificateauthority:Authority\n name: root_ca\n properties:\n pool: ${caPool.name}\n certificateAuthorityId: root-ca\n location: us-central1\n config:\n subjectConfig:\n subject:\n organization: google\n commonName: my-certificate-authority\n x509Config:\n caOptions:\n isCa: true\n keyUsage:\n baseKeyUsage:\n certSign: true\n crlSign: true\n extendedKeyUsage:\n serverAuth: true\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n deletionProtection: false\n ignoreActiveCertificatesOnDeletion: true\n skipGracePeriod: true\n caPoolBinding:\n type: gcp:certificateauthority:CaPoolIamBinding\n name: ca_pool_binding\n properties:\n caPool: ${caPool.id}\n role: roles/privateca.certificateRequester\n members:\n - serviceAccount:service-${project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com\n # See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\n default:\n type: gcp:securesourcemanager:Instance\n properties:\n instanceId: my-instance\n location: us-central1\n privateConfig:\n isPrivate: true\n caPool: ${caPool.id}\n options:\n dependson:\n - ${rootCa}\n - ${wait120Seconds}\n # ca pool IAM permissions can take time to propagate\n wait120Seconds:\n type: time:sleep\n name: wait_120_seconds\n properties:\n createDuration: 120s\n options:\n dependson:\n - ${caPoolBinding}\n # Connect SSM private instance with endpoint.\n network:\n type: gcp:compute:Network\n properties:\n name: my-network\n autoCreateSubnetworks: false\n subnet:\n type: gcp:compute:Subnetwork\n properties:\n name: my-subnet\n region: us-central1\n network: ${network.id}\n ipCidrRange: 10.0.60.0/24\n privateIpGoogleAccess: true\n address:\n type: gcp:compute:Address\n properties:\n name: my-address\n region: us-central1\n address: 10.0.60.100\n addressType: INTERNAL\n subnetwork: ${subnet.id}\n fwRuleServiceAttachment:\n type: gcp:compute:ForwardingRule\n name: fw_rule_service_attachment\n properties:\n name: fw-rule-service-attachment\n region: us-central1\n loadBalancingScheme:\n ipAddress: ${address.id}\n network: ${network.id}\n target: ${default.privateConfig.httpServiceAttachment}\n privateZone:\n type: gcp:dns:ManagedZone\n name: private_zone\n properties:\n name: my-dns-zone\n dnsName: p.sourcemanager.dev.\n visibility: private\n privateVisibilityConfig:\n networks:\n - networkUrl: ${network.id}\n ssmInstanceHtmlRecord:\n type: gcp:dns:RecordSet\n name: ssm_instance_html_record\n properties:\n name: ${default.hostConfigs[0].html}.\n type: A\n ttl: 300\n managedZone: ${privateZone.name}\n rrdatas:\n - ${fwRuleServiceAttachment.ipAddress}\n ssmInstanceApiRecord:\n type: gcp:dns:RecordSet\n name: ssm_instance_api_record\n properties:\n name: ${default.hostConfigs[0].api}.\n type: A\n ttl: 300\n managedZone: ${privateZone.name}\n rrdatas:\n - ${fwRuleServiceAttachment.ipAddress}\n ssmInstanceGitRecord:\n type: gcp:dns:RecordSet\n name: ssm_instance_git_record\n properties:\n name: ${default.hostConfigs[0].gitHttp}.\n type: A\n ttl: 300\n managedZone: ${privateZone.name}\n rrdatas:\n - ${fwRuleServiceAttachment.ipAddress}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/instances/{{instance_id}}`\n\n* `{{project}}/{{location}}/{{instance_id}}`\n\n* `{{location}}/{{instance_id}}`\n\n* `{{instance_id}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:securesourcemanager/instance:Instance default projects/{{project}}/locations/{{location}}/instances/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:securesourcemanager/instance:Instance default {{project}}/{{location}}/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:securesourcemanager/instance:Instance default {{location}}/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:securesourcemanager/instance:Instance default {{instance_id}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -241922,7 +241922,7 @@ } }, "gcp:securitycenter/instanceIamBinding:InstanceIamBinding": { - "description": "Represents a Data Fusion instance.\n\n\nTo get more information about Instance, see:\n\n* [API documentation](https://cloud.google.com/data-fusion/docs/reference/rest/v1beta1/projects.locations.instances)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/data-fusion/docs/)\n\n## Example Usage\n\n### Data Fusion Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basicInstance = new gcp.datafusion.Instance(\"basic_instance\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_instance = gcp.datafusion.Instance(\"basic_instance\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basicInstance = new Gcp.DataFusion.Instance(\"basic_instance\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := datafusion.NewInstance(ctx, \"basic_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basicInstance = new Instance(\"basicInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicInstance:\n type: gcp:datafusion:Instance\n name: basic_instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.appengine.getDefaultServiceAccount({});\nconst network = new gcp.compute.Network(\"network\", {name: \"datafusion-full-network\"});\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"datafusion-ip-alloc\",\n addressType: \"INTERNAL\",\n purpose: \"VPC_PEERING\",\n prefixLength: 22,\n network: network.id,\n});\nconst extendedInstance = new gcp.datafusion.Instance(\"extended_instance\", {\n name: \"my-instance\",\n description: \"My Data Fusion instance\",\n displayName: \"My Data Fusion instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n enableStackdriverLogging: true,\n enableStackdriverMonitoring: true,\n privateInstance: true,\n dataprocServiceAccount: _default.then(_default =\u003e _default.email),\n labels: {\n example_key: \"example_value\",\n },\n networkConfig: {\n network: \"default\",\n ipAllocation: pulumi.interpolate`${privateIpAlloc.address}/${privateIpAlloc.prefixLength}`,\n },\n accelerators: [{\n acceleratorType: \"CDC\",\n state: \"ENABLED\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.appengine.get_default_service_account()\nnetwork = gcp.compute.Network(\"network\", name=\"datafusion-full-network\")\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"datafusion-ip-alloc\",\n address_type=\"INTERNAL\",\n purpose=\"VPC_PEERING\",\n prefix_length=22,\n network=network.id)\nextended_instance = gcp.datafusion.Instance(\"extended_instance\",\n name=\"my-instance\",\n description=\"My Data Fusion instance\",\n display_name=\"My Data Fusion instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n enable_stackdriver_logging=True,\n enable_stackdriver_monitoring=True,\n private_instance=True,\n dataproc_service_account=default.email,\n labels={\n \"example_key\": \"example_value\",\n },\n network_config={\n \"network\": \"default\",\n \"ip_allocation\": pulumi.Output.all(\n address=private_ip_alloc.address,\n prefix_length=private_ip_alloc.prefix_length\n).apply(lambda resolved_outputs: f\"{resolved_outputs['address']}/{resolved_outputs['prefix_length']}\")\n,\n },\n accelerators=[{\n \"accelerator_type\": \"CDC\",\n \"state\": \"ENABLED\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.AppEngine.GetDefaultServiceAccount.Invoke();\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"datafusion-full-network\",\n });\n\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"datafusion-ip-alloc\",\n AddressType = \"INTERNAL\",\n Purpose = \"VPC_PEERING\",\n PrefixLength = 22,\n Network = network.Id,\n });\n\n var extendedInstance = new Gcp.DataFusion.Instance(\"extended_instance\", new()\n {\n Name = \"my-instance\",\n Description = \"My Data Fusion instance\",\n DisplayName = \"My Data Fusion instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n EnableStackdriverLogging = true,\n EnableStackdriverMonitoring = true,\n PrivateInstance = true,\n DataprocServiceAccount = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Email)),\n Labels = \n {\n { \"example_key\", \"example_value\" },\n },\n NetworkConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigArgs\n {\n Network = \"default\",\n IpAllocation = Output.Tuple(privateIpAlloc.Address, privateIpAlloc.PrefixLength).Apply(values =\u003e\n {\n var address = values.Item1;\n var prefixLength = values.Item2;\n return $\"{address}/{prefixLength}\";\n }),\n },\n Accelerators = new[]\n {\n new Gcp.DataFusion.Inputs.InstanceAcceleratorArgs\n {\n AcceleratorType = \"CDC\",\n State = \"ENABLED\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/appengine\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := appengine.GetDefaultServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-full-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"datafusion-ip-alloc\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tPrefixLength: pulumi.Int(22),\n\t\t\tNetwork: network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"extended_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tDescription: pulumi.String(\"My Data Fusion instance\"),\n\t\t\tDisplayName: pulumi.String(\"My Data Fusion instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableStackdriverMonitoring: pulumi.Bool(true),\n\t\t\tPrivateInstance: pulumi.Bool(true),\n\t\t\tDataprocServiceAccount: pulumi.String(_default.Email),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"example_key\": pulumi.String(\"example_value\"),\n\t\t\t},\n\t\t\tNetworkConfig: \u0026datafusion.InstanceNetworkConfigArgs{\n\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\tIpAllocation: pulumi.All(privateIpAlloc.Address, privateIpAlloc.PrefixLength).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\taddress := _args[0].(string)\n\t\t\t\t\tprefixLength := _args[1].(int)\n\t\t\t\t\treturn fmt.Sprintf(\"%v/%v\", address, prefixLength), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t\tAccelerators: datafusion.InstanceAcceleratorArray{\n\t\t\t\t\u0026datafusion.InstanceAcceleratorArgs{\n\t\t\t\t\tAcceleratorType: pulumi.String(\"CDC\"),\n\t\t\t\t\tState: pulumi.String(\"ENABLED\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.appengine.AppengineFunctions;\nimport com.pulumi.gcp.appengine.inputs.GetDefaultServiceAccountArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceAcceleratorArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = AppengineFunctions.getDefaultServiceAccount();\n\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"datafusion-full-network\")\n .build());\n\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"datafusion-ip-alloc\")\n .addressType(\"INTERNAL\")\n .purpose(\"VPC_PEERING\")\n .prefixLength(22)\n .network(network.id())\n .build());\n\n var extendedInstance = new Instance(\"extendedInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .description(\"My Data Fusion instance\")\n .displayName(\"My Data Fusion instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .enableStackdriverLogging(true)\n .enableStackdriverMonitoring(true)\n .privateInstance(true)\n .dataprocServiceAccount(default_.email())\n .labels(Map.of(\"example_key\", \"example_value\"))\n .networkConfig(InstanceNetworkConfigArgs.builder()\n .network(\"default\")\n .ipAllocation(Output.tuple(privateIpAlloc.address(), privateIpAlloc.prefixLength()).applyValue(values -\u003e {\n var address = values.t1;\n var prefixLength = values.t2;\n return String.format(\"%s/%s\", address,prefixLength);\n }))\n .build())\n .accelerators(InstanceAcceleratorArgs.builder()\n .acceleratorType(\"CDC\")\n .state(\"ENABLED\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n extendedInstance:\n type: gcp:datafusion:Instance\n name: extended_instance\n properties:\n name: my-instance\n description: My Data Fusion instance\n displayName: My Data Fusion instance\n region: us-central1\n type: BASIC\n enableStackdriverLogging: true\n enableStackdriverMonitoring: true\n privateInstance: true\n dataprocServiceAccount: ${default.email}\n labels:\n example_key: example_value\n networkConfig:\n network: default\n ipAllocation: ${privateIpAlloc.address}/${privateIpAlloc.prefixLength}\n accelerators:\n - acceleratorType: CDC\n state: ENABLED\n network:\n type: gcp:compute:Network\n properties:\n name: datafusion-full-network\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: datafusion-ip-alloc\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 22\n network: ${network.id}\nvariables:\n default:\n fn::invoke:\n Function: gcp:appengine:getDefaultServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Psc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst psc = new gcp.compute.Network(\"psc\", {\n name: \"datafusion-psc-network\",\n autoCreateSubnetworks: false,\n});\nconst pscSubnetwork = new gcp.compute.Subnetwork(\"psc\", {\n name: \"datafusion-psc-subnet\",\n region: \"us-central1\",\n network: psc.id,\n ipCidrRange: \"10.0.0.0/16\",\n});\nconst pscNetworkAttachment = new gcp.compute.NetworkAttachment(\"psc\", {\n name: \"datafusion-psc-attachment\",\n region: \"us-central1\",\n connectionPreference: \"ACCEPT_AUTOMATIC\",\n subnetworks: [pscSubnetwork.selfLink],\n});\nconst pscInstance = new gcp.datafusion.Instance(\"psc_instance\", {\n name: \"psc-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n privateInstance: true,\n networkConfig: {\n connectionType: \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n privateServiceConnectConfig: {\n networkAttachment: pscNetworkAttachment.id,\n unreachableCidrBlock: \"192.168.0.0/25\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npsc = gcp.compute.Network(\"psc\",\n name=\"datafusion-psc-network\",\n auto_create_subnetworks=False)\npsc_subnetwork = gcp.compute.Subnetwork(\"psc\",\n name=\"datafusion-psc-subnet\",\n region=\"us-central1\",\n network=psc.id,\n ip_cidr_range=\"10.0.0.0/16\")\npsc_network_attachment = gcp.compute.NetworkAttachment(\"psc\",\n name=\"datafusion-psc-attachment\",\n region=\"us-central1\",\n connection_preference=\"ACCEPT_AUTOMATIC\",\n subnetworks=[psc_subnetwork.self_link])\npsc_instance = gcp.datafusion.Instance(\"psc_instance\",\n name=\"psc-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n private_instance=True,\n network_config={\n \"connection_type\": \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n \"private_service_connect_config\": {\n \"network_attachment\": psc_network_attachment.id,\n \"unreachable_cidr_block\": \"192.168.0.0/25\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var psc = new Gcp.Compute.Network(\"psc\", new()\n {\n Name = \"datafusion-psc-network\",\n AutoCreateSubnetworks = false,\n });\n\n var pscSubnetwork = new Gcp.Compute.Subnetwork(\"psc\", new()\n {\n Name = \"datafusion-psc-subnet\",\n Region = \"us-central1\",\n Network = psc.Id,\n IpCidrRange = \"10.0.0.0/16\",\n });\n\n var pscNetworkAttachment = new Gcp.Compute.NetworkAttachment(\"psc\", new()\n {\n Name = \"datafusion-psc-attachment\",\n Region = \"us-central1\",\n ConnectionPreference = \"ACCEPT_AUTOMATIC\",\n Subnetworks = new[]\n {\n pscSubnetwork.SelfLink,\n },\n });\n\n var pscInstance = new Gcp.DataFusion.Instance(\"psc_instance\", new()\n {\n Name = \"psc-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n PrivateInstance = true,\n NetworkConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigArgs\n {\n ConnectionType = \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n PrivateServiceConnectConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigPrivateServiceConnectConfigArgs\n {\n NetworkAttachment = pscNetworkAttachment.Id,\n UnreachableCidrBlock = \"192.168.0.0/25\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpsc, err := compute.NewNetwork(ctx, \"psc\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscSubnetwork, err := compute.NewSubnetwork(ctx, \"psc\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-subnet\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: psc.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscNetworkAttachment, err := compute.NewNetworkAttachment(ctx, \"psc\", \u0026compute.NetworkAttachmentArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-attachment\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tConnectionPreference: pulumi.String(\"ACCEPT_AUTOMATIC\"),\n\t\t\tSubnetworks: pulumi.StringArray{\n\t\t\t\tpscSubnetwork.SelfLink,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"psc_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"psc-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tPrivateInstance: pulumi.Bool(true),\n\t\t\tNetworkConfig: \u0026datafusion.InstanceNetworkConfigArgs{\n\t\t\t\tConnectionType: pulumi.String(\"PRIVATE_SERVICE_CONNECT_INTERFACES\"),\n\t\t\t\tPrivateServiceConnectConfig: \u0026datafusion.InstanceNetworkConfigPrivateServiceConnectConfigArgs{\n\t\t\t\t\tNetworkAttachment: pscNetworkAttachment.ID(),\n\t\t\t\t\tUnreachableCidrBlock: pulumi.String(\"192.168.0.0/25\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.NetworkAttachment;\nimport com.pulumi.gcp.compute.NetworkAttachmentArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigPrivateServiceConnectConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var psc = new Network(\"psc\", NetworkArgs.builder()\n .name(\"datafusion-psc-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var pscSubnetwork = new Subnetwork(\"pscSubnetwork\", SubnetworkArgs.builder()\n .name(\"datafusion-psc-subnet\")\n .region(\"us-central1\")\n .network(psc.id())\n .ipCidrRange(\"10.0.0.0/16\")\n .build());\n\n var pscNetworkAttachment = new NetworkAttachment(\"pscNetworkAttachment\", NetworkAttachmentArgs.builder()\n .name(\"datafusion-psc-attachment\")\n .region(\"us-central1\")\n .connectionPreference(\"ACCEPT_AUTOMATIC\")\n .subnetworks(pscSubnetwork.selfLink())\n .build());\n\n var pscInstance = new Instance(\"pscInstance\", InstanceArgs.builder()\n .name(\"psc-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .privateInstance(true)\n .networkConfig(InstanceNetworkConfigArgs.builder()\n .connectionType(\"PRIVATE_SERVICE_CONNECT_INTERFACES\")\n .privateServiceConnectConfig(InstanceNetworkConfigPrivateServiceConnectConfigArgs.builder()\n .networkAttachment(pscNetworkAttachment.id())\n .unreachableCidrBlock(\"192.168.0.0/25\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pscInstance:\n type: gcp:datafusion:Instance\n name: psc_instance\n properties:\n name: psc-instance\n region: us-central1\n type: BASIC\n privateInstance: true\n networkConfig:\n connectionType: PRIVATE_SERVICE_CONNECT_INTERFACES\n privateServiceConnectConfig:\n networkAttachment: ${pscNetworkAttachment.id}\n unreachableCidrBlock: 192.168.0.0/25\n psc:\n type: gcp:compute:Network\n properties:\n name: datafusion-psc-network\n autoCreateSubnetworks: false\n pscSubnetwork:\n type: gcp:compute:Subnetwork\n name: psc\n properties:\n name: datafusion-psc-subnet\n region: us-central1\n network: ${psc.id}\n ipCidrRange: 10.0.0.0/16\n pscNetworkAttachment:\n type: gcp:compute:NetworkAttachment\n name: psc\n properties:\n name: datafusion-psc-attachment\n region: us-central1\n connectionPreference: ACCEPT_AUTOMATIC\n subnetworks:\n - ${pscSubnetwork.selfLink}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"my-instance\",\n location: \"us-central1\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"my-instance\",\n keyRing: keyRing.id,\n});\nconst project = gcp.organizations.getProject({});\nconst cryptoKeyMember = new gcp.kms.CryptoKeyIAMMember(\"crypto_key_member\", {\n cryptoKeyId: cryptoKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-datafusion.iam.gserviceaccount.com`),\n});\nconst cmek = new gcp.datafusion.Instance(\"cmek\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n cryptoKeyConfig: {\n keyReference: cryptoKey.id,\n },\n}, {\n dependsOn: [cryptoKeyMember],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"my-instance\",\n location=\"us-central1\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"my-instance\",\n key_ring=key_ring.id)\nproject = gcp.organizations.get_project()\ncrypto_key_member = gcp.kms.CryptoKeyIAMMember(\"crypto_key_member\",\n crypto_key_id=crypto_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-datafusion.iam.gserviceaccount.com\")\ncmek = gcp.datafusion.Instance(\"cmek\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n crypto_key_config={\n \"key_reference\": crypto_key.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[crypto_key_member]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"my-instance\",\n Location = \"us-central1\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"my-instance\",\n KeyRing = keyRing.Id,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cryptoKeyMember = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key_member\", new()\n {\n CryptoKeyId = cryptoKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-datafusion.iam.gserviceaccount.com\",\n });\n\n var cmek = new Gcp.DataFusion.Instance(\"cmek\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n CryptoKeyConfig = new Gcp.DataFusion.Inputs.InstanceCryptoKeyConfigArgs\n {\n KeyReference = cryptoKey.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cryptoKeyMember,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKeyMember, err := kms.NewCryptoKeyIAMMember(ctx, \"crypto_key_member\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: cryptoKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-datafusion.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"cmek\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tCryptoKeyConfig: \u0026datafusion.InstanceCryptoKeyConfigArgs{\n\t\t\t\tKeyReference: cryptoKey.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcryptoKeyMember,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceCryptoKeyConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"my-instance\")\n .location(\"us-central1\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"my-instance\")\n .keyRing(keyRing.id())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var cryptoKeyMember = new CryptoKeyIAMMember(\"cryptoKeyMember\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(cryptoKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-datafusion.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var cmek = new Instance(\"cmek\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .cryptoKeyConfig(InstanceCryptoKeyConfigArgs.builder()\n .keyReference(cryptoKey.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(cryptoKeyMember)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cmek:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n cryptoKeyConfig:\n keyReference: ${cryptoKey.id}\n options:\n dependson:\n - ${cryptoKeyMember}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: my-instance\n keyRing: ${keyRing.id}\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: my-instance\n location: us-central1\n cryptoKeyMember:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key_member\n properties:\n cryptoKeyId: ${cryptoKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-datafusion.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Enterprise\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst enterpriseInstance = new gcp.datafusion.Instance(\"enterprise_instance\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"ENTERPRISE\",\n enableRbac: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nenterprise_instance = gcp.datafusion.Instance(\"enterprise_instance\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"ENTERPRISE\",\n enable_rbac=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var enterpriseInstance = new Gcp.DataFusion.Instance(\"enterprise_instance\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"ENTERPRISE\",\n EnableRbac = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := datafusion.NewInstance(ctx, \"enterprise_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"ENTERPRISE\"),\n\t\t\tEnableRbac: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var enterpriseInstance = new Instance(\"enterpriseInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"ENTERPRISE\")\n .enableRbac(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n enterpriseInstance:\n type: gcp:datafusion:Instance\n name: enterprise_instance\n properties:\n name: my-instance\n region: us-central1\n type: ENTERPRISE\n enableRbac: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Event\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst eventTopic = new gcp.pubsub.Topic(\"event\", {name: \"my-instance\"});\nconst event = new gcp.datafusion.Instance(\"event\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n eventPublishConfig: {\n enabled: true,\n topic: eventTopic.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nevent_topic = gcp.pubsub.Topic(\"event\", name=\"my-instance\")\nevent = gcp.datafusion.Instance(\"event\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n event_publish_config={\n \"enabled\": True,\n \"topic\": event_topic.id,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var eventTopic = new Gcp.PubSub.Topic(\"event\", new()\n {\n Name = \"my-instance\",\n });\n\n var @event = new Gcp.DataFusion.Instance(\"event\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n EventPublishConfig = new Gcp.DataFusion.Inputs.InstanceEventPublishConfigArgs\n {\n Enabled = true,\n Topic = eventTopic.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\teventTopic, err := pubsub.NewTopic(ctx, \"event\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"event\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tEventPublishConfig: \u0026datafusion.InstanceEventPublishConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\tTopic: eventTopic.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceEventPublishConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var eventTopic = new Topic(\"eventTopic\", TopicArgs.builder()\n .name(\"my-instance\")\n .build());\n\n var event = new Instance(\"event\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .eventPublishConfig(InstanceEventPublishConfigArgs.builder()\n .enabled(true)\n .topic(eventTopic.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n event:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n eventPublishConfig:\n enabled: true\n topic: ${eventTopic.id}\n eventTopic:\n type: gcp:pubsub:Topic\n name: event\n properties:\n name: my-instance\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Zone\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst zone = new gcp.datafusion.Instance(\"zone\", {\n name: \"my-instance\",\n region: \"us-central1\",\n zone: \"us-central1-a\",\n type: \"DEVELOPER\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nzone = gcp.datafusion.Instance(\"zone\",\n name=\"my-instance\",\n region=\"us-central1\",\n zone=\"us-central1-a\",\n type=\"DEVELOPER\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var zone = new Gcp.DataFusion.Instance(\"zone\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Zone = \"us-central1-a\",\n Type = \"DEVELOPER\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := datafusion.NewInstance(ctx, \"zone\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tType: pulumi.String(\"DEVELOPER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var zone = new Instance(\"zone\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .zone(\"us-central1-a\")\n .type(\"DEVELOPER\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n zone:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n zone: us-central1-a\n type: DEVELOPER\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/instances/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamBinding:InstanceIamBinding default projects/{{project}}/locations/{{region}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamBinding:InstanceIamBinding default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamBinding:InstanceIamBinding default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamBinding:InstanceIamBinding default {{name}}\n```\n\n", + "description": "Represents a Data Fusion instance.\n\n\nTo get more information about Instance, see:\n\n* [API documentation](https://cloud.google.com/data-fusion/docs/reference/rest/v1beta1/projects.locations.instances)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/data-fusion/docs/)\n\n## Example Usage\n\n### Data Fusion Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basicInstance = new gcp.datafusion.Instance(\"basic_instance\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_instance = gcp.datafusion.Instance(\"basic_instance\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basicInstance = new Gcp.DataFusion.Instance(\"basic_instance\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := datafusion.NewInstance(ctx, \"basic_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basicInstance = new Instance(\"basicInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicInstance:\n type: gcp:datafusion:Instance\n name: basic_instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.appengine.getDefaultServiceAccount({});\nconst network = new gcp.compute.Network(\"network\", {name: \"datafusion-full-network\"});\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"datafusion-ip-alloc\",\n addressType: \"INTERNAL\",\n purpose: \"VPC_PEERING\",\n prefixLength: 22,\n network: network.id,\n});\nconst extendedInstance = new gcp.datafusion.Instance(\"extended_instance\", {\n name: \"my-instance\",\n description: \"My Data Fusion instance\",\n displayName: \"My Data Fusion instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n enableStackdriverLogging: true,\n enableStackdriverMonitoring: true,\n privateInstance: true,\n dataprocServiceAccount: _default.then(_default =\u003e _default.email),\n labels: {\n example_key: \"example_value\",\n },\n networkConfig: {\n network: \"default\",\n ipAllocation: pulumi.interpolate`${privateIpAlloc.address}/${privateIpAlloc.prefixLength}`,\n },\n accelerators: [{\n acceleratorType: \"CDC\",\n state: \"ENABLED\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.appengine.get_default_service_account()\nnetwork = gcp.compute.Network(\"network\", name=\"datafusion-full-network\")\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"datafusion-ip-alloc\",\n address_type=\"INTERNAL\",\n purpose=\"VPC_PEERING\",\n prefix_length=22,\n network=network.id)\nextended_instance = gcp.datafusion.Instance(\"extended_instance\",\n name=\"my-instance\",\n description=\"My Data Fusion instance\",\n display_name=\"My Data Fusion instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n enable_stackdriver_logging=True,\n enable_stackdriver_monitoring=True,\n private_instance=True,\n dataproc_service_account=default.email,\n labels={\n \"example_key\": \"example_value\",\n },\n network_config={\n \"network\": \"default\",\n \"ip_allocation\": pulumi.Output.all(\n address=private_ip_alloc.address,\n prefix_length=private_ip_alloc.prefix_length\n).apply(lambda resolved_outputs: f\"{resolved_outputs['address']}/{resolved_outputs['prefix_length']}\")\n,\n },\n accelerators=[{\n \"accelerator_type\": \"CDC\",\n \"state\": \"ENABLED\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.AppEngine.GetDefaultServiceAccount.Invoke();\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"datafusion-full-network\",\n });\n\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"datafusion-ip-alloc\",\n AddressType = \"INTERNAL\",\n Purpose = \"VPC_PEERING\",\n PrefixLength = 22,\n Network = network.Id,\n });\n\n var extendedInstance = new Gcp.DataFusion.Instance(\"extended_instance\", new()\n {\n Name = \"my-instance\",\n Description = \"My Data Fusion instance\",\n DisplayName = \"My Data Fusion instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n EnableStackdriverLogging = true,\n EnableStackdriverMonitoring = true,\n PrivateInstance = true,\n DataprocServiceAccount = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Email)),\n Labels = \n {\n { \"example_key\", \"example_value\" },\n },\n NetworkConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigArgs\n {\n Network = \"default\",\n IpAllocation = Output.Tuple(privateIpAlloc.Address, privateIpAlloc.PrefixLength).Apply(values =\u003e\n {\n var address = values.Item1;\n var prefixLength = values.Item2;\n return $\"{address}/{prefixLength}\";\n }),\n },\n Accelerators = new[]\n {\n new Gcp.DataFusion.Inputs.InstanceAcceleratorArgs\n {\n AcceleratorType = \"CDC\",\n State = \"ENABLED\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/appengine\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := appengine.GetDefaultServiceAccount(ctx, \u0026appengine.GetDefaultServiceAccountArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-full-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"datafusion-ip-alloc\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tPrefixLength: pulumi.Int(22),\n\t\t\tNetwork: network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"extended_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tDescription: pulumi.String(\"My Data Fusion instance\"),\n\t\t\tDisplayName: pulumi.String(\"My Data Fusion instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableStackdriverMonitoring: pulumi.Bool(true),\n\t\t\tPrivateInstance: pulumi.Bool(true),\n\t\t\tDataprocServiceAccount: pulumi.String(_default.Email),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"example_key\": pulumi.String(\"example_value\"),\n\t\t\t},\n\t\t\tNetworkConfig: \u0026datafusion.InstanceNetworkConfigArgs{\n\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\tIpAllocation: pulumi.All(privateIpAlloc.Address, privateIpAlloc.PrefixLength).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\taddress := _args[0].(string)\n\t\t\t\t\tprefixLength := _args[1].(int)\n\t\t\t\t\treturn fmt.Sprintf(\"%v/%v\", address, prefixLength), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t\tAccelerators: datafusion.InstanceAcceleratorArray{\n\t\t\t\t\u0026datafusion.InstanceAcceleratorArgs{\n\t\t\t\t\tAcceleratorType: pulumi.String(\"CDC\"),\n\t\t\t\t\tState: pulumi.String(\"ENABLED\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.appengine.AppengineFunctions;\nimport com.pulumi.gcp.appengine.inputs.GetDefaultServiceAccountArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceAcceleratorArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = AppengineFunctions.getDefaultServiceAccount();\n\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"datafusion-full-network\")\n .build());\n\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"datafusion-ip-alloc\")\n .addressType(\"INTERNAL\")\n .purpose(\"VPC_PEERING\")\n .prefixLength(22)\n .network(network.id())\n .build());\n\n var extendedInstance = new Instance(\"extendedInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .description(\"My Data Fusion instance\")\n .displayName(\"My Data Fusion instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .enableStackdriverLogging(true)\n .enableStackdriverMonitoring(true)\n .privateInstance(true)\n .dataprocServiceAccount(default_.email())\n .labels(Map.of(\"example_key\", \"example_value\"))\n .networkConfig(InstanceNetworkConfigArgs.builder()\n .network(\"default\")\n .ipAllocation(Output.tuple(privateIpAlloc.address(), privateIpAlloc.prefixLength()).applyValue(values -\u003e {\n var address = values.t1;\n var prefixLength = values.t2;\n return String.format(\"%s/%s\", address,prefixLength);\n }))\n .build())\n .accelerators(InstanceAcceleratorArgs.builder()\n .acceleratorType(\"CDC\")\n .state(\"ENABLED\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n extendedInstance:\n type: gcp:datafusion:Instance\n name: extended_instance\n properties:\n name: my-instance\n description: My Data Fusion instance\n displayName: My Data Fusion instance\n region: us-central1\n type: BASIC\n enableStackdriverLogging: true\n enableStackdriverMonitoring: true\n privateInstance: true\n dataprocServiceAccount: ${default.email}\n labels:\n example_key: example_value\n networkConfig:\n network: default\n ipAllocation: ${privateIpAlloc.address}/${privateIpAlloc.prefixLength}\n accelerators:\n - acceleratorType: CDC\n state: ENABLED\n network:\n type: gcp:compute:Network\n properties:\n name: datafusion-full-network\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: datafusion-ip-alloc\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 22\n network: ${network.id}\nvariables:\n default:\n fn::invoke:\n Function: gcp:appengine:getDefaultServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Psc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst psc = new gcp.compute.Network(\"psc\", {\n name: \"datafusion-psc-network\",\n autoCreateSubnetworks: false,\n});\nconst pscSubnetwork = new gcp.compute.Subnetwork(\"psc\", {\n name: \"datafusion-psc-subnet\",\n region: \"us-central1\",\n network: psc.id,\n ipCidrRange: \"10.0.0.0/16\",\n});\nconst pscNetworkAttachment = new gcp.compute.NetworkAttachment(\"psc\", {\n name: \"datafusion-psc-attachment\",\n region: \"us-central1\",\n connectionPreference: \"ACCEPT_AUTOMATIC\",\n subnetworks: [pscSubnetwork.selfLink],\n});\nconst pscInstance = new gcp.datafusion.Instance(\"psc_instance\", {\n name: \"psc-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n privateInstance: true,\n networkConfig: {\n connectionType: \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n privateServiceConnectConfig: {\n networkAttachment: pscNetworkAttachment.id,\n unreachableCidrBlock: \"192.168.0.0/25\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npsc = gcp.compute.Network(\"psc\",\n name=\"datafusion-psc-network\",\n auto_create_subnetworks=False)\npsc_subnetwork = gcp.compute.Subnetwork(\"psc\",\n name=\"datafusion-psc-subnet\",\n region=\"us-central1\",\n network=psc.id,\n ip_cidr_range=\"10.0.0.0/16\")\npsc_network_attachment = gcp.compute.NetworkAttachment(\"psc\",\n name=\"datafusion-psc-attachment\",\n region=\"us-central1\",\n connection_preference=\"ACCEPT_AUTOMATIC\",\n subnetworks=[psc_subnetwork.self_link])\npsc_instance = gcp.datafusion.Instance(\"psc_instance\",\n name=\"psc-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n private_instance=True,\n network_config={\n \"connection_type\": \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n \"private_service_connect_config\": {\n \"network_attachment\": psc_network_attachment.id,\n \"unreachable_cidr_block\": \"192.168.0.0/25\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var psc = new Gcp.Compute.Network(\"psc\", new()\n {\n Name = \"datafusion-psc-network\",\n AutoCreateSubnetworks = false,\n });\n\n var pscSubnetwork = new Gcp.Compute.Subnetwork(\"psc\", new()\n {\n Name = \"datafusion-psc-subnet\",\n Region = \"us-central1\",\n Network = psc.Id,\n IpCidrRange = \"10.0.0.0/16\",\n });\n\n var pscNetworkAttachment = new Gcp.Compute.NetworkAttachment(\"psc\", new()\n {\n Name = \"datafusion-psc-attachment\",\n Region = \"us-central1\",\n ConnectionPreference = \"ACCEPT_AUTOMATIC\",\n Subnetworks = new[]\n {\n pscSubnetwork.SelfLink,\n },\n });\n\n var pscInstance = new Gcp.DataFusion.Instance(\"psc_instance\", new()\n {\n Name = \"psc-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n PrivateInstance = true,\n NetworkConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigArgs\n {\n ConnectionType = \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n PrivateServiceConnectConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigPrivateServiceConnectConfigArgs\n {\n NetworkAttachment = pscNetworkAttachment.Id,\n UnreachableCidrBlock = \"192.168.0.0/25\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpsc, err := compute.NewNetwork(ctx, \"psc\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscSubnetwork, err := compute.NewSubnetwork(ctx, \"psc\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-subnet\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: psc.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscNetworkAttachment, err := compute.NewNetworkAttachment(ctx, \"psc\", \u0026compute.NetworkAttachmentArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-attachment\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tConnectionPreference: pulumi.String(\"ACCEPT_AUTOMATIC\"),\n\t\t\tSubnetworks: pulumi.StringArray{\n\t\t\t\tpscSubnetwork.SelfLink,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"psc_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"psc-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tPrivateInstance: pulumi.Bool(true),\n\t\t\tNetworkConfig: \u0026datafusion.InstanceNetworkConfigArgs{\n\t\t\t\tConnectionType: pulumi.String(\"PRIVATE_SERVICE_CONNECT_INTERFACES\"),\n\t\t\t\tPrivateServiceConnectConfig: \u0026datafusion.InstanceNetworkConfigPrivateServiceConnectConfigArgs{\n\t\t\t\t\tNetworkAttachment: pscNetworkAttachment.ID(),\n\t\t\t\t\tUnreachableCidrBlock: pulumi.String(\"192.168.0.0/25\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.NetworkAttachment;\nimport com.pulumi.gcp.compute.NetworkAttachmentArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigPrivateServiceConnectConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var psc = new Network(\"psc\", NetworkArgs.builder()\n .name(\"datafusion-psc-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var pscSubnetwork = new Subnetwork(\"pscSubnetwork\", SubnetworkArgs.builder()\n .name(\"datafusion-psc-subnet\")\n .region(\"us-central1\")\n .network(psc.id())\n .ipCidrRange(\"10.0.0.0/16\")\n .build());\n\n var pscNetworkAttachment = new NetworkAttachment(\"pscNetworkAttachment\", NetworkAttachmentArgs.builder()\n .name(\"datafusion-psc-attachment\")\n .region(\"us-central1\")\n .connectionPreference(\"ACCEPT_AUTOMATIC\")\n .subnetworks(pscSubnetwork.selfLink())\n .build());\n\n var pscInstance = new Instance(\"pscInstance\", InstanceArgs.builder()\n .name(\"psc-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .privateInstance(true)\n .networkConfig(InstanceNetworkConfigArgs.builder()\n .connectionType(\"PRIVATE_SERVICE_CONNECT_INTERFACES\")\n .privateServiceConnectConfig(InstanceNetworkConfigPrivateServiceConnectConfigArgs.builder()\n .networkAttachment(pscNetworkAttachment.id())\n .unreachableCidrBlock(\"192.168.0.0/25\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pscInstance:\n type: gcp:datafusion:Instance\n name: psc_instance\n properties:\n name: psc-instance\n region: us-central1\n type: BASIC\n privateInstance: true\n networkConfig:\n connectionType: PRIVATE_SERVICE_CONNECT_INTERFACES\n privateServiceConnectConfig:\n networkAttachment: ${pscNetworkAttachment.id}\n unreachableCidrBlock: 192.168.0.0/25\n psc:\n type: gcp:compute:Network\n properties:\n name: datafusion-psc-network\n autoCreateSubnetworks: false\n pscSubnetwork:\n type: gcp:compute:Subnetwork\n name: psc\n properties:\n name: datafusion-psc-subnet\n region: us-central1\n network: ${psc.id}\n ipCidrRange: 10.0.0.0/16\n pscNetworkAttachment:\n type: gcp:compute:NetworkAttachment\n name: psc\n properties:\n name: datafusion-psc-attachment\n region: us-central1\n connectionPreference: ACCEPT_AUTOMATIC\n subnetworks:\n - ${pscSubnetwork.selfLink}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"my-instance\",\n location: \"us-central1\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"my-instance\",\n keyRing: keyRing.id,\n});\nconst project = gcp.organizations.getProject({});\nconst cryptoKeyMember = new gcp.kms.CryptoKeyIAMMember(\"crypto_key_member\", {\n cryptoKeyId: cryptoKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-datafusion.iam.gserviceaccount.com`),\n});\nconst cmek = new gcp.datafusion.Instance(\"cmek\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n cryptoKeyConfig: {\n keyReference: cryptoKey.id,\n },\n}, {\n dependsOn: [cryptoKeyMember],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"my-instance\",\n location=\"us-central1\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"my-instance\",\n key_ring=key_ring.id)\nproject = gcp.organizations.get_project()\ncrypto_key_member = gcp.kms.CryptoKeyIAMMember(\"crypto_key_member\",\n crypto_key_id=crypto_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-datafusion.iam.gserviceaccount.com\")\ncmek = gcp.datafusion.Instance(\"cmek\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n crypto_key_config={\n \"key_reference\": crypto_key.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[crypto_key_member]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"my-instance\",\n Location = \"us-central1\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"my-instance\",\n KeyRing = keyRing.Id,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cryptoKeyMember = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key_member\", new()\n {\n CryptoKeyId = cryptoKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-datafusion.iam.gserviceaccount.com\",\n });\n\n var cmek = new Gcp.DataFusion.Instance(\"cmek\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n CryptoKeyConfig = new Gcp.DataFusion.Inputs.InstanceCryptoKeyConfigArgs\n {\n KeyReference = cryptoKey.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cryptoKeyMember,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKeyMember, err := kms.NewCryptoKeyIAMMember(ctx, \"crypto_key_member\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: cryptoKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-datafusion.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"cmek\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tCryptoKeyConfig: \u0026datafusion.InstanceCryptoKeyConfigArgs{\n\t\t\t\tKeyReference: cryptoKey.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcryptoKeyMember,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceCryptoKeyConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"my-instance\")\n .location(\"us-central1\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"my-instance\")\n .keyRing(keyRing.id())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var cryptoKeyMember = new CryptoKeyIAMMember(\"cryptoKeyMember\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(cryptoKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-datafusion.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var cmek = new Instance(\"cmek\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .cryptoKeyConfig(InstanceCryptoKeyConfigArgs.builder()\n .keyReference(cryptoKey.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(cryptoKeyMember)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cmek:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n cryptoKeyConfig:\n keyReference: ${cryptoKey.id}\n options:\n dependson:\n - ${cryptoKeyMember}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: my-instance\n keyRing: ${keyRing.id}\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: my-instance\n location: us-central1\n cryptoKeyMember:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key_member\n properties:\n cryptoKeyId: ${cryptoKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-datafusion.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Enterprise\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst enterpriseInstance = new gcp.datafusion.Instance(\"enterprise_instance\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"ENTERPRISE\",\n enableRbac: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nenterprise_instance = gcp.datafusion.Instance(\"enterprise_instance\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"ENTERPRISE\",\n enable_rbac=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var enterpriseInstance = new Gcp.DataFusion.Instance(\"enterprise_instance\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"ENTERPRISE\",\n EnableRbac = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := datafusion.NewInstance(ctx, \"enterprise_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"ENTERPRISE\"),\n\t\t\tEnableRbac: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var enterpriseInstance = new Instance(\"enterpriseInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"ENTERPRISE\")\n .enableRbac(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n enterpriseInstance:\n type: gcp:datafusion:Instance\n name: enterprise_instance\n properties:\n name: my-instance\n region: us-central1\n type: ENTERPRISE\n enableRbac: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Event\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst eventTopic = new gcp.pubsub.Topic(\"event\", {name: \"my-instance\"});\nconst event = new gcp.datafusion.Instance(\"event\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n eventPublishConfig: {\n enabled: true,\n topic: eventTopic.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nevent_topic = gcp.pubsub.Topic(\"event\", name=\"my-instance\")\nevent = gcp.datafusion.Instance(\"event\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n event_publish_config={\n \"enabled\": True,\n \"topic\": event_topic.id,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var eventTopic = new Gcp.PubSub.Topic(\"event\", new()\n {\n Name = \"my-instance\",\n });\n\n var @event = new Gcp.DataFusion.Instance(\"event\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n EventPublishConfig = new Gcp.DataFusion.Inputs.InstanceEventPublishConfigArgs\n {\n Enabled = true,\n Topic = eventTopic.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\teventTopic, err := pubsub.NewTopic(ctx, \"event\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"event\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tEventPublishConfig: \u0026datafusion.InstanceEventPublishConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\tTopic: eventTopic.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceEventPublishConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var eventTopic = new Topic(\"eventTopic\", TopicArgs.builder()\n .name(\"my-instance\")\n .build());\n\n var event = new Instance(\"event\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .eventPublishConfig(InstanceEventPublishConfigArgs.builder()\n .enabled(true)\n .topic(eventTopic.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n event:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n eventPublishConfig:\n enabled: true\n topic: ${eventTopic.id}\n eventTopic:\n type: gcp:pubsub:Topic\n name: event\n properties:\n name: my-instance\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Zone\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst zone = new gcp.datafusion.Instance(\"zone\", {\n name: \"my-instance\",\n region: \"us-central1\",\n zone: \"us-central1-a\",\n type: \"DEVELOPER\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nzone = gcp.datafusion.Instance(\"zone\",\n name=\"my-instance\",\n region=\"us-central1\",\n zone=\"us-central1-a\",\n type=\"DEVELOPER\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var zone = new Gcp.DataFusion.Instance(\"zone\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Zone = \"us-central1-a\",\n Type = \"DEVELOPER\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := datafusion.NewInstance(ctx, \"zone\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tType: pulumi.String(\"DEVELOPER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var zone = new Instance(\"zone\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .zone(\"us-central1-a\")\n .type(\"DEVELOPER\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n zone:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n zone: us-central1-a\n type: DEVELOPER\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/instances/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamBinding:InstanceIamBinding default projects/{{project}}/locations/{{region}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamBinding:InstanceIamBinding default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamBinding:InstanceIamBinding default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamBinding:InstanceIamBinding default {{name}}\n```\n\n", "properties": { "condition": { "$ref": "#/types/gcp:securitycenter/InstanceIamBindingCondition:InstanceIamBindingCondition" @@ -242035,7 +242035,7 @@ } }, "gcp:securitycenter/instanceIamMember:InstanceIamMember": { - "description": "Represents a Data Fusion instance.\n\n\nTo get more information about Instance, see:\n\n* [API documentation](https://cloud.google.com/data-fusion/docs/reference/rest/v1beta1/projects.locations.instances)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/data-fusion/docs/)\n\n## Example Usage\n\n### Data Fusion Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basicInstance = new gcp.datafusion.Instance(\"basic_instance\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_instance = gcp.datafusion.Instance(\"basic_instance\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basicInstance = new Gcp.DataFusion.Instance(\"basic_instance\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := datafusion.NewInstance(ctx, \"basic_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basicInstance = new Instance(\"basicInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicInstance:\n type: gcp:datafusion:Instance\n name: basic_instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.appengine.getDefaultServiceAccount({});\nconst network = new gcp.compute.Network(\"network\", {name: \"datafusion-full-network\"});\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"datafusion-ip-alloc\",\n addressType: \"INTERNAL\",\n purpose: \"VPC_PEERING\",\n prefixLength: 22,\n network: network.id,\n});\nconst extendedInstance = new gcp.datafusion.Instance(\"extended_instance\", {\n name: \"my-instance\",\n description: \"My Data Fusion instance\",\n displayName: \"My Data Fusion instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n enableStackdriverLogging: true,\n enableStackdriverMonitoring: true,\n privateInstance: true,\n dataprocServiceAccount: _default.then(_default =\u003e _default.email),\n labels: {\n example_key: \"example_value\",\n },\n networkConfig: {\n network: \"default\",\n ipAllocation: pulumi.interpolate`${privateIpAlloc.address}/${privateIpAlloc.prefixLength}`,\n },\n accelerators: [{\n acceleratorType: \"CDC\",\n state: \"ENABLED\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.appengine.get_default_service_account()\nnetwork = gcp.compute.Network(\"network\", name=\"datafusion-full-network\")\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"datafusion-ip-alloc\",\n address_type=\"INTERNAL\",\n purpose=\"VPC_PEERING\",\n prefix_length=22,\n network=network.id)\nextended_instance = gcp.datafusion.Instance(\"extended_instance\",\n name=\"my-instance\",\n description=\"My Data Fusion instance\",\n display_name=\"My Data Fusion instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n enable_stackdriver_logging=True,\n enable_stackdriver_monitoring=True,\n private_instance=True,\n dataproc_service_account=default.email,\n labels={\n \"example_key\": \"example_value\",\n },\n network_config={\n \"network\": \"default\",\n \"ip_allocation\": pulumi.Output.all(\n address=private_ip_alloc.address,\n prefix_length=private_ip_alloc.prefix_length\n).apply(lambda resolved_outputs: f\"{resolved_outputs['address']}/{resolved_outputs['prefix_length']}\")\n,\n },\n accelerators=[{\n \"accelerator_type\": \"CDC\",\n \"state\": \"ENABLED\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.AppEngine.GetDefaultServiceAccount.Invoke();\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"datafusion-full-network\",\n });\n\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"datafusion-ip-alloc\",\n AddressType = \"INTERNAL\",\n Purpose = \"VPC_PEERING\",\n PrefixLength = 22,\n Network = network.Id,\n });\n\n var extendedInstance = new Gcp.DataFusion.Instance(\"extended_instance\", new()\n {\n Name = \"my-instance\",\n Description = \"My Data Fusion instance\",\n DisplayName = \"My Data Fusion instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n EnableStackdriverLogging = true,\n EnableStackdriverMonitoring = true,\n PrivateInstance = true,\n DataprocServiceAccount = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Email)),\n Labels = \n {\n { \"example_key\", \"example_value\" },\n },\n NetworkConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigArgs\n {\n Network = \"default\",\n IpAllocation = Output.Tuple(privateIpAlloc.Address, privateIpAlloc.PrefixLength).Apply(values =\u003e\n {\n var address = values.Item1;\n var prefixLength = values.Item2;\n return $\"{address}/{prefixLength}\";\n }),\n },\n Accelerators = new[]\n {\n new Gcp.DataFusion.Inputs.InstanceAcceleratorArgs\n {\n AcceleratorType = \"CDC\",\n State = \"ENABLED\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/appengine\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := appengine.GetDefaultServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-full-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"datafusion-ip-alloc\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tPrefixLength: pulumi.Int(22),\n\t\t\tNetwork: network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"extended_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tDescription: pulumi.String(\"My Data Fusion instance\"),\n\t\t\tDisplayName: pulumi.String(\"My Data Fusion instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableStackdriverMonitoring: pulumi.Bool(true),\n\t\t\tPrivateInstance: pulumi.Bool(true),\n\t\t\tDataprocServiceAccount: pulumi.String(_default.Email),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"example_key\": pulumi.String(\"example_value\"),\n\t\t\t},\n\t\t\tNetworkConfig: \u0026datafusion.InstanceNetworkConfigArgs{\n\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\tIpAllocation: pulumi.All(privateIpAlloc.Address, privateIpAlloc.PrefixLength).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\taddress := _args[0].(string)\n\t\t\t\t\tprefixLength := _args[1].(int)\n\t\t\t\t\treturn fmt.Sprintf(\"%v/%v\", address, prefixLength), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t\tAccelerators: datafusion.InstanceAcceleratorArray{\n\t\t\t\t\u0026datafusion.InstanceAcceleratorArgs{\n\t\t\t\t\tAcceleratorType: pulumi.String(\"CDC\"),\n\t\t\t\t\tState: pulumi.String(\"ENABLED\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.appengine.AppengineFunctions;\nimport com.pulumi.gcp.appengine.inputs.GetDefaultServiceAccountArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceAcceleratorArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = AppengineFunctions.getDefaultServiceAccount();\n\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"datafusion-full-network\")\n .build());\n\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"datafusion-ip-alloc\")\n .addressType(\"INTERNAL\")\n .purpose(\"VPC_PEERING\")\n .prefixLength(22)\n .network(network.id())\n .build());\n\n var extendedInstance = new Instance(\"extendedInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .description(\"My Data Fusion instance\")\n .displayName(\"My Data Fusion instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .enableStackdriverLogging(true)\n .enableStackdriverMonitoring(true)\n .privateInstance(true)\n .dataprocServiceAccount(default_.email())\n .labels(Map.of(\"example_key\", \"example_value\"))\n .networkConfig(InstanceNetworkConfigArgs.builder()\n .network(\"default\")\n .ipAllocation(Output.tuple(privateIpAlloc.address(), privateIpAlloc.prefixLength()).applyValue(values -\u003e {\n var address = values.t1;\n var prefixLength = values.t2;\n return String.format(\"%s/%s\", address,prefixLength);\n }))\n .build())\n .accelerators(InstanceAcceleratorArgs.builder()\n .acceleratorType(\"CDC\")\n .state(\"ENABLED\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n extendedInstance:\n type: gcp:datafusion:Instance\n name: extended_instance\n properties:\n name: my-instance\n description: My Data Fusion instance\n displayName: My Data Fusion instance\n region: us-central1\n type: BASIC\n enableStackdriverLogging: true\n enableStackdriverMonitoring: true\n privateInstance: true\n dataprocServiceAccount: ${default.email}\n labels:\n example_key: example_value\n networkConfig:\n network: default\n ipAllocation: ${privateIpAlloc.address}/${privateIpAlloc.prefixLength}\n accelerators:\n - acceleratorType: CDC\n state: ENABLED\n network:\n type: gcp:compute:Network\n properties:\n name: datafusion-full-network\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: datafusion-ip-alloc\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 22\n network: ${network.id}\nvariables:\n default:\n fn::invoke:\n Function: gcp:appengine:getDefaultServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Psc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst psc = new gcp.compute.Network(\"psc\", {\n name: \"datafusion-psc-network\",\n autoCreateSubnetworks: false,\n});\nconst pscSubnetwork = new gcp.compute.Subnetwork(\"psc\", {\n name: \"datafusion-psc-subnet\",\n region: \"us-central1\",\n network: psc.id,\n ipCidrRange: \"10.0.0.0/16\",\n});\nconst pscNetworkAttachment = new gcp.compute.NetworkAttachment(\"psc\", {\n name: \"datafusion-psc-attachment\",\n region: \"us-central1\",\n connectionPreference: \"ACCEPT_AUTOMATIC\",\n subnetworks: [pscSubnetwork.selfLink],\n});\nconst pscInstance = new gcp.datafusion.Instance(\"psc_instance\", {\n name: \"psc-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n privateInstance: true,\n networkConfig: {\n connectionType: \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n privateServiceConnectConfig: {\n networkAttachment: pscNetworkAttachment.id,\n unreachableCidrBlock: \"192.168.0.0/25\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npsc = gcp.compute.Network(\"psc\",\n name=\"datafusion-psc-network\",\n auto_create_subnetworks=False)\npsc_subnetwork = gcp.compute.Subnetwork(\"psc\",\n name=\"datafusion-psc-subnet\",\n region=\"us-central1\",\n network=psc.id,\n ip_cidr_range=\"10.0.0.0/16\")\npsc_network_attachment = gcp.compute.NetworkAttachment(\"psc\",\n name=\"datafusion-psc-attachment\",\n region=\"us-central1\",\n connection_preference=\"ACCEPT_AUTOMATIC\",\n subnetworks=[psc_subnetwork.self_link])\npsc_instance = gcp.datafusion.Instance(\"psc_instance\",\n name=\"psc-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n private_instance=True,\n network_config={\n \"connection_type\": \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n \"private_service_connect_config\": {\n \"network_attachment\": psc_network_attachment.id,\n \"unreachable_cidr_block\": \"192.168.0.0/25\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var psc = new Gcp.Compute.Network(\"psc\", new()\n {\n Name = \"datafusion-psc-network\",\n AutoCreateSubnetworks = false,\n });\n\n var pscSubnetwork = new Gcp.Compute.Subnetwork(\"psc\", new()\n {\n Name = \"datafusion-psc-subnet\",\n Region = \"us-central1\",\n Network = psc.Id,\n IpCidrRange = \"10.0.0.0/16\",\n });\n\n var pscNetworkAttachment = new Gcp.Compute.NetworkAttachment(\"psc\", new()\n {\n Name = \"datafusion-psc-attachment\",\n Region = \"us-central1\",\n ConnectionPreference = \"ACCEPT_AUTOMATIC\",\n Subnetworks = new[]\n {\n pscSubnetwork.SelfLink,\n },\n });\n\n var pscInstance = new Gcp.DataFusion.Instance(\"psc_instance\", new()\n {\n Name = \"psc-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n PrivateInstance = true,\n NetworkConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigArgs\n {\n ConnectionType = \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n PrivateServiceConnectConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigPrivateServiceConnectConfigArgs\n {\n NetworkAttachment = pscNetworkAttachment.Id,\n UnreachableCidrBlock = \"192.168.0.0/25\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpsc, err := compute.NewNetwork(ctx, \"psc\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscSubnetwork, err := compute.NewSubnetwork(ctx, \"psc\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-subnet\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: psc.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscNetworkAttachment, err := compute.NewNetworkAttachment(ctx, \"psc\", \u0026compute.NetworkAttachmentArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-attachment\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tConnectionPreference: pulumi.String(\"ACCEPT_AUTOMATIC\"),\n\t\t\tSubnetworks: pulumi.StringArray{\n\t\t\t\tpscSubnetwork.SelfLink,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"psc_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"psc-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tPrivateInstance: pulumi.Bool(true),\n\t\t\tNetworkConfig: \u0026datafusion.InstanceNetworkConfigArgs{\n\t\t\t\tConnectionType: pulumi.String(\"PRIVATE_SERVICE_CONNECT_INTERFACES\"),\n\t\t\t\tPrivateServiceConnectConfig: \u0026datafusion.InstanceNetworkConfigPrivateServiceConnectConfigArgs{\n\t\t\t\t\tNetworkAttachment: pscNetworkAttachment.ID(),\n\t\t\t\t\tUnreachableCidrBlock: pulumi.String(\"192.168.0.0/25\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.NetworkAttachment;\nimport com.pulumi.gcp.compute.NetworkAttachmentArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigPrivateServiceConnectConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var psc = new Network(\"psc\", NetworkArgs.builder()\n .name(\"datafusion-psc-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var pscSubnetwork = new Subnetwork(\"pscSubnetwork\", SubnetworkArgs.builder()\n .name(\"datafusion-psc-subnet\")\n .region(\"us-central1\")\n .network(psc.id())\n .ipCidrRange(\"10.0.0.0/16\")\n .build());\n\n var pscNetworkAttachment = new NetworkAttachment(\"pscNetworkAttachment\", NetworkAttachmentArgs.builder()\n .name(\"datafusion-psc-attachment\")\n .region(\"us-central1\")\n .connectionPreference(\"ACCEPT_AUTOMATIC\")\n .subnetworks(pscSubnetwork.selfLink())\n .build());\n\n var pscInstance = new Instance(\"pscInstance\", InstanceArgs.builder()\n .name(\"psc-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .privateInstance(true)\n .networkConfig(InstanceNetworkConfigArgs.builder()\n .connectionType(\"PRIVATE_SERVICE_CONNECT_INTERFACES\")\n .privateServiceConnectConfig(InstanceNetworkConfigPrivateServiceConnectConfigArgs.builder()\n .networkAttachment(pscNetworkAttachment.id())\n .unreachableCidrBlock(\"192.168.0.0/25\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pscInstance:\n type: gcp:datafusion:Instance\n name: psc_instance\n properties:\n name: psc-instance\n region: us-central1\n type: BASIC\n privateInstance: true\n networkConfig:\n connectionType: PRIVATE_SERVICE_CONNECT_INTERFACES\n privateServiceConnectConfig:\n networkAttachment: ${pscNetworkAttachment.id}\n unreachableCidrBlock: 192.168.0.0/25\n psc:\n type: gcp:compute:Network\n properties:\n name: datafusion-psc-network\n autoCreateSubnetworks: false\n pscSubnetwork:\n type: gcp:compute:Subnetwork\n name: psc\n properties:\n name: datafusion-psc-subnet\n region: us-central1\n network: ${psc.id}\n ipCidrRange: 10.0.0.0/16\n pscNetworkAttachment:\n type: gcp:compute:NetworkAttachment\n name: psc\n properties:\n name: datafusion-psc-attachment\n region: us-central1\n connectionPreference: ACCEPT_AUTOMATIC\n subnetworks:\n - ${pscSubnetwork.selfLink}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"my-instance\",\n location: \"us-central1\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"my-instance\",\n keyRing: keyRing.id,\n});\nconst project = gcp.organizations.getProject({});\nconst cryptoKeyMember = new gcp.kms.CryptoKeyIAMMember(\"crypto_key_member\", {\n cryptoKeyId: cryptoKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-datafusion.iam.gserviceaccount.com`),\n});\nconst cmek = new gcp.datafusion.Instance(\"cmek\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n cryptoKeyConfig: {\n keyReference: cryptoKey.id,\n },\n}, {\n dependsOn: [cryptoKeyMember],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"my-instance\",\n location=\"us-central1\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"my-instance\",\n key_ring=key_ring.id)\nproject = gcp.organizations.get_project()\ncrypto_key_member = gcp.kms.CryptoKeyIAMMember(\"crypto_key_member\",\n crypto_key_id=crypto_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-datafusion.iam.gserviceaccount.com\")\ncmek = gcp.datafusion.Instance(\"cmek\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n crypto_key_config={\n \"key_reference\": crypto_key.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[crypto_key_member]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"my-instance\",\n Location = \"us-central1\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"my-instance\",\n KeyRing = keyRing.Id,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cryptoKeyMember = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key_member\", new()\n {\n CryptoKeyId = cryptoKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-datafusion.iam.gserviceaccount.com\",\n });\n\n var cmek = new Gcp.DataFusion.Instance(\"cmek\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n CryptoKeyConfig = new Gcp.DataFusion.Inputs.InstanceCryptoKeyConfigArgs\n {\n KeyReference = cryptoKey.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cryptoKeyMember,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKeyMember, err := kms.NewCryptoKeyIAMMember(ctx, \"crypto_key_member\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: cryptoKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-datafusion.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"cmek\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tCryptoKeyConfig: \u0026datafusion.InstanceCryptoKeyConfigArgs{\n\t\t\t\tKeyReference: cryptoKey.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcryptoKeyMember,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceCryptoKeyConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"my-instance\")\n .location(\"us-central1\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"my-instance\")\n .keyRing(keyRing.id())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var cryptoKeyMember = new CryptoKeyIAMMember(\"cryptoKeyMember\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(cryptoKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-datafusion.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var cmek = new Instance(\"cmek\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .cryptoKeyConfig(InstanceCryptoKeyConfigArgs.builder()\n .keyReference(cryptoKey.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(cryptoKeyMember)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cmek:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n cryptoKeyConfig:\n keyReference: ${cryptoKey.id}\n options:\n dependson:\n - ${cryptoKeyMember}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: my-instance\n keyRing: ${keyRing.id}\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: my-instance\n location: us-central1\n cryptoKeyMember:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key_member\n properties:\n cryptoKeyId: ${cryptoKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-datafusion.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Enterprise\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst enterpriseInstance = new gcp.datafusion.Instance(\"enterprise_instance\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"ENTERPRISE\",\n enableRbac: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nenterprise_instance = gcp.datafusion.Instance(\"enterprise_instance\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"ENTERPRISE\",\n enable_rbac=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var enterpriseInstance = new Gcp.DataFusion.Instance(\"enterprise_instance\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"ENTERPRISE\",\n EnableRbac = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := datafusion.NewInstance(ctx, \"enterprise_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"ENTERPRISE\"),\n\t\t\tEnableRbac: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var enterpriseInstance = new Instance(\"enterpriseInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"ENTERPRISE\")\n .enableRbac(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n enterpriseInstance:\n type: gcp:datafusion:Instance\n name: enterprise_instance\n properties:\n name: my-instance\n region: us-central1\n type: ENTERPRISE\n enableRbac: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Event\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst eventTopic = new gcp.pubsub.Topic(\"event\", {name: \"my-instance\"});\nconst event = new gcp.datafusion.Instance(\"event\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n eventPublishConfig: {\n enabled: true,\n topic: eventTopic.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nevent_topic = gcp.pubsub.Topic(\"event\", name=\"my-instance\")\nevent = gcp.datafusion.Instance(\"event\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n event_publish_config={\n \"enabled\": True,\n \"topic\": event_topic.id,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var eventTopic = new Gcp.PubSub.Topic(\"event\", new()\n {\n Name = \"my-instance\",\n });\n\n var @event = new Gcp.DataFusion.Instance(\"event\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n EventPublishConfig = new Gcp.DataFusion.Inputs.InstanceEventPublishConfigArgs\n {\n Enabled = true,\n Topic = eventTopic.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\teventTopic, err := pubsub.NewTopic(ctx, \"event\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"event\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tEventPublishConfig: \u0026datafusion.InstanceEventPublishConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\tTopic: eventTopic.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceEventPublishConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var eventTopic = new Topic(\"eventTopic\", TopicArgs.builder()\n .name(\"my-instance\")\n .build());\n\n var event = new Instance(\"event\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .eventPublishConfig(InstanceEventPublishConfigArgs.builder()\n .enabled(true)\n .topic(eventTopic.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n event:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n eventPublishConfig:\n enabled: true\n topic: ${eventTopic.id}\n eventTopic:\n type: gcp:pubsub:Topic\n name: event\n properties:\n name: my-instance\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Zone\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst zone = new gcp.datafusion.Instance(\"zone\", {\n name: \"my-instance\",\n region: \"us-central1\",\n zone: \"us-central1-a\",\n type: \"DEVELOPER\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nzone = gcp.datafusion.Instance(\"zone\",\n name=\"my-instance\",\n region=\"us-central1\",\n zone=\"us-central1-a\",\n type=\"DEVELOPER\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var zone = new Gcp.DataFusion.Instance(\"zone\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Zone = \"us-central1-a\",\n Type = \"DEVELOPER\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := datafusion.NewInstance(ctx, \"zone\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tType: pulumi.String(\"DEVELOPER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var zone = new Instance(\"zone\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .zone(\"us-central1-a\")\n .type(\"DEVELOPER\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n zone:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n zone: us-central1-a\n type: DEVELOPER\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/instances/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamMember:InstanceIamMember default projects/{{project}}/locations/{{region}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamMember:InstanceIamMember default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamMember:InstanceIamMember default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamMember:InstanceIamMember default {{name}}\n```\n\n", + "description": "Represents a Data Fusion instance.\n\n\nTo get more information about Instance, see:\n\n* [API documentation](https://cloud.google.com/data-fusion/docs/reference/rest/v1beta1/projects.locations.instances)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/data-fusion/docs/)\n\n## Example Usage\n\n### Data Fusion Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basicInstance = new gcp.datafusion.Instance(\"basic_instance\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_instance = gcp.datafusion.Instance(\"basic_instance\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basicInstance = new Gcp.DataFusion.Instance(\"basic_instance\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := datafusion.NewInstance(ctx, \"basic_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basicInstance = new Instance(\"basicInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicInstance:\n type: gcp:datafusion:Instance\n name: basic_instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.appengine.getDefaultServiceAccount({});\nconst network = new gcp.compute.Network(\"network\", {name: \"datafusion-full-network\"});\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"datafusion-ip-alloc\",\n addressType: \"INTERNAL\",\n purpose: \"VPC_PEERING\",\n prefixLength: 22,\n network: network.id,\n});\nconst extendedInstance = new gcp.datafusion.Instance(\"extended_instance\", {\n name: \"my-instance\",\n description: \"My Data Fusion instance\",\n displayName: \"My Data Fusion instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n enableStackdriverLogging: true,\n enableStackdriverMonitoring: true,\n privateInstance: true,\n dataprocServiceAccount: _default.then(_default =\u003e _default.email),\n labels: {\n example_key: \"example_value\",\n },\n networkConfig: {\n network: \"default\",\n ipAllocation: pulumi.interpolate`${privateIpAlloc.address}/${privateIpAlloc.prefixLength}`,\n },\n accelerators: [{\n acceleratorType: \"CDC\",\n state: \"ENABLED\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.appengine.get_default_service_account()\nnetwork = gcp.compute.Network(\"network\", name=\"datafusion-full-network\")\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"datafusion-ip-alloc\",\n address_type=\"INTERNAL\",\n purpose=\"VPC_PEERING\",\n prefix_length=22,\n network=network.id)\nextended_instance = gcp.datafusion.Instance(\"extended_instance\",\n name=\"my-instance\",\n description=\"My Data Fusion instance\",\n display_name=\"My Data Fusion instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n enable_stackdriver_logging=True,\n enable_stackdriver_monitoring=True,\n private_instance=True,\n dataproc_service_account=default.email,\n labels={\n \"example_key\": \"example_value\",\n },\n network_config={\n \"network\": \"default\",\n \"ip_allocation\": pulumi.Output.all(\n address=private_ip_alloc.address,\n prefix_length=private_ip_alloc.prefix_length\n).apply(lambda resolved_outputs: f\"{resolved_outputs['address']}/{resolved_outputs['prefix_length']}\")\n,\n },\n accelerators=[{\n \"accelerator_type\": \"CDC\",\n \"state\": \"ENABLED\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.AppEngine.GetDefaultServiceAccount.Invoke();\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"datafusion-full-network\",\n });\n\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"datafusion-ip-alloc\",\n AddressType = \"INTERNAL\",\n Purpose = \"VPC_PEERING\",\n PrefixLength = 22,\n Network = network.Id,\n });\n\n var extendedInstance = new Gcp.DataFusion.Instance(\"extended_instance\", new()\n {\n Name = \"my-instance\",\n Description = \"My Data Fusion instance\",\n DisplayName = \"My Data Fusion instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n EnableStackdriverLogging = true,\n EnableStackdriverMonitoring = true,\n PrivateInstance = true,\n DataprocServiceAccount = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Email)),\n Labels = \n {\n { \"example_key\", \"example_value\" },\n },\n NetworkConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigArgs\n {\n Network = \"default\",\n IpAllocation = Output.Tuple(privateIpAlloc.Address, privateIpAlloc.PrefixLength).Apply(values =\u003e\n {\n var address = values.Item1;\n var prefixLength = values.Item2;\n return $\"{address}/{prefixLength}\";\n }),\n },\n Accelerators = new[]\n {\n new Gcp.DataFusion.Inputs.InstanceAcceleratorArgs\n {\n AcceleratorType = \"CDC\",\n State = \"ENABLED\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/appengine\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := appengine.GetDefaultServiceAccount(ctx, \u0026appengine.GetDefaultServiceAccountArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-full-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"datafusion-ip-alloc\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tPrefixLength: pulumi.Int(22),\n\t\t\tNetwork: network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"extended_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tDescription: pulumi.String(\"My Data Fusion instance\"),\n\t\t\tDisplayName: pulumi.String(\"My Data Fusion instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableStackdriverMonitoring: pulumi.Bool(true),\n\t\t\tPrivateInstance: pulumi.Bool(true),\n\t\t\tDataprocServiceAccount: pulumi.String(_default.Email),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"example_key\": pulumi.String(\"example_value\"),\n\t\t\t},\n\t\t\tNetworkConfig: \u0026datafusion.InstanceNetworkConfigArgs{\n\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\tIpAllocation: pulumi.All(privateIpAlloc.Address, privateIpAlloc.PrefixLength).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\taddress := _args[0].(string)\n\t\t\t\t\tprefixLength := _args[1].(int)\n\t\t\t\t\treturn fmt.Sprintf(\"%v/%v\", address, prefixLength), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t\tAccelerators: datafusion.InstanceAcceleratorArray{\n\t\t\t\t\u0026datafusion.InstanceAcceleratorArgs{\n\t\t\t\t\tAcceleratorType: pulumi.String(\"CDC\"),\n\t\t\t\t\tState: pulumi.String(\"ENABLED\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.appengine.AppengineFunctions;\nimport com.pulumi.gcp.appengine.inputs.GetDefaultServiceAccountArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceAcceleratorArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = AppengineFunctions.getDefaultServiceAccount();\n\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"datafusion-full-network\")\n .build());\n\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"datafusion-ip-alloc\")\n .addressType(\"INTERNAL\")\n .purpose(\"VPC_PEERING\")\n .prefixLength(22)\n .network(network.id())\n .build());\n\n var extendedInstance = new Instance(\"extendedInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .description(\"My Data Fusion instance\")\n .displayName(\"My Data Fusion instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .enableStackdriverLogging(true)\n .enableStackdriverMonitoring(true)\n .privateInstance(true)\n .dataprocServiceAccount(default_.email())\n .labels(Map.of(\"example_key\", \"example_value\"))\n .networkConfig(InstanceNetworkConfigArgs.builder()\n .network(\"default\")\n .ipAllocation(Output.tuple(privateIpAlloc.address(), privateIpAlloc.prefixLength()).applyValue(values -\u003e {\n var address = values.t1;\n var prefixLength = values.t2;\n return String.format(\"%s/%s\", address,prefixLength);\n }))\n .build())\n .accelerators(InstanceAcceleratorArgs.builder()\n .acceleratorType(\"CDC\")\n .state(\"ENABLED\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n extendedInstance:\n type: gcp:datafusion:Instance\n name: extended_instance\n properties:\n name: my-instance\n description: My Data Fusion instance\n displayName: My Data Fusion instance\n region: us-central1\n type: BASIC\n enableStackdriverLogging: true\n enableStackdriverMonitoring: true\n privateInstance: true\n dataprocServiceAccount: ${default.email}\n labels:\n example_key: example_value\n networkConfig:\n network: default\n ipAllocation: ${privateIpAlloc.address}/${privateIpAlloc.prefixLength}\n accelerators:\n - acceleratorType: CDC\n state: ENABLED\n network:\n type: gcp:compute:Network\n properties:\n name: datafusion-full-network\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: datafusion-ip-alloc\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 22\n network: ${network.id}\nvariables:\n default:\n fn::invoke:\n Function: gcp:appengine:getDefaultServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Psc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst psc = new gcp.compute.Network(\"psc\", {\n name: \"datafusion-psc-network\",\n autoCreateSubnetworks: false,\n});\nconst pscSubnetwork = new gcp.compute.Subnetwork(\"psc\", {\n name: \"datafusion-psc-subnet\",\n region: \"us-central1\",\n network: psc.id,\n ipCidrRange: \"10.0.0.0/16\",\n});\nconst pscNetworkAttachment = new gcp.compute.NetworkAttachment(\"psc\", {\n name: \"datafusion-psc-attachment\",\n region: \"us-central1\",\n connectionPreference: \"ACCEPT_AUTOMATIC\",\n subnetworks: [pscSubnetwork.selfLink],\n});\nconst pscInstance = new gcp.datafusion.Instance(\"psc_instance\", {\n name: \"psc-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n privateInstance: true,\n networkConfig: {\n connectionType: \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n privateServiceConnectConfig: {\n networkAttachment: pscNetworkAttachment.id,\n unreachableCidrBlock: \"192.168.0.0/25\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npsc = gcp.compute.Network(\"psc\",\n name=\"datafusion-psc-network\",\n auto_create_subnetworks=False)\npsc_subnetwork = gcp.compute.Subnetwork(\"psc\",\n name=\"datafusion-psc-subnet\",\n region=\"us-central1\",\n network=psc.id,\n ip_cidr_range=\"10.0.0.0/16\")\npsc_network_attachment = gcp.compute.NetworkAttachment(\"psc\",\n name=\"datafusion-psc-attachment\",\n region=\"us-central1\",\n connection_preference=\"ACCEPT_AUTOMATIC\",\n subnetworks=[psc_subnetwork.self_link])\npsc_instance = gcp.datafusion.Instance(\"psc_instance\",\n name=\"psc-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n private_instance=True,\n network_config={\n \"connection_type\": \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n \"private_service_connect_config\": {\n \"network_attachment\": psc_network_attachment.id,\n \"unreachable_cidr_block\": \"192.168.0.0/25\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var psc = new Gcp.Compute.Network(\"psc\", new()\n {\n Name = \"datafusion-psc-network\",\n AutoCreateSubnetworks = false,\n });\n\n var pscSubnetwork = new Gcp.Compute.Subnetwork(\"psc\", new()\n {\n Name = \"datafusion-psc-subnet\",\n Region = \"us-central1\",\n Network = psc.Id,\n IpCidrRange = \"10.0.0.0/16\",\n });\n\n var pscNetworkAttachment = new Gcp.Compute.NetworkAttachment(\"psc\", new()\n {\n Name = \"datafusion-psc-attachment\",\n Region = \"us-central1\",\n ConnectionPreference = \"ACCEPT_AUTOMATIC\",\n Subnetworks = new[]\n {\n pscSubnetwork.SelfLink,\n },\n });\n\n var pscInstance = new Gcp.DataFusion.Instance(\"psc_instance\", new()\n {\n Name = \"psc-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n PrivateInstance = true,\n NetworkConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigArgs\n {\n ConnectionType = \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n PrivateServiceConnectConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigPrivateServiceConnectConfigArgs\n {\n NetworkAttachment = pscNetworkAttachment.Id,\n UnreachableCidrBlock = \"192.168.0.0/25\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpsc, err := compute.NewNetwork(ctx, \"psc\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscSubnetwork, err := compute.NewSubnetwork(ctx, \"psc\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-subnet\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: psc.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscNetworkAttachment, err := compute.NewNetworkAttachment(ctx, \"psc\", \u0026compute.NetworkAttachmentArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-attachment\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tConnectionPreference: pulumi.String(\"ACCEPT_AUTOMATIC\"),\n\t\t\tSubnetworks: pulumi.StringArray{\n\t\t\t\tpscSubnetwork.SelfLink,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"psc_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"psc-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tPrivateInstance: pulumi.Bool(true),\n\t\t\tNetworkConfig: \u0026datafusion.InstanceNetworkConfigArgs{\n\t\t\t\tConnectionType: pulumi.String(\"PRIVATE_SERVICE_CONNECT_INTERFACES\"),\n\t\t\t\tPrivateServiceConnectConfig: \u0026datafusion.InstanceNetworkConfigPrivateServiceConnectConfigArgs{\n\t\t\t\t\tNetworkAttachment: pscNetworkAttachment.ID(),\n\t\t\t\t\tUnreachableCidrBlock: pulumi.String(\"192.168.0.0/25\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.NetworkAttachment;\nimport com.pulumi.gcp.compute.NetworkAttachmentArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigPrivateServiceConnectConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var psc = new Network(\"psc\", NetworkArgs.builder()\n .name(\"datafusion-psc-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var pscSubnetwork = new Subnetwork(\"pscSubnetwork\", SubnetworkArgs.builder()\n .name(\"datafusion-psc-subnet\")\n .region(\"us-central1\")\n .network(psc.id())\n .ipCidrRange(\"10.0.0.0/16\")\n .build());\n\n var pscNetworkAttachment = new NetworkAttachment(\"pscNetworkAttachment\", NetworkAttachmentArgs.builder()\n .name(\"datafusion-psc-attachment\")\n .region(\"us-central1\")\n .connectionPreference(\"ACCEPT_AUTOMATIC\")\n .subnetworks(pscSubnetwork.selfLink())\n .build());\n\n var pscInstance = new Instance(\"pscInstance\", InstanceArgs.builder()\n .name(\"psc-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .privateInstance(true)\n .networkConfig(InstanceNetworkConfigArgs.builder()\n .connectionType(\"PRIVATE_SERVICE_CONNECT_INTERFACES\")\n .privateServiceConnectConfig(InstanceNetworkConfigPrivateServiceConnectConfigArgs.builder()\n .networkAttachment(pscNetworkAttachment.id())\n .unreachableCidrBlock(\"192.168.0.0/25\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pscInstance:\n type: gcp:datafusion:Instance\n name: psc_instance\n properties:\n name: psc-instance\n region: us-central1\n type: BASIC\n privateInstance: true\n networkConfig:\n connectionType: PRIVATE_SERVICE_CONNECT_INTERFACES\n privateServiceConnectConfig:\n networkAttachment: ${pscNetworkAttachment.id}\n unreachableCidrBlock: 192.168.0.0/25\n psc:\n type: gcp:compute:Network\n properties:\n name: datafusion-psc-network\n autoCreateSubnetworks: false\n pscSubnetwork:\n type: gcp:compute:Subnetwork\n name: psc\n properties:\n name: datafusion-psc-subnet\n region: us-central1\n network: ${psc.id}\n ipCidrRange: 10.0.0.0/16\n pscNetworkAttachment:\n type: gcp:compute:NetworkAttachment\n name: psc\n properties:\n name: datafusion-psc-attachment\n region: us-central1\n connectionPreference: ACCEPT_AUTOMATIC\n subnetworks:\n - ${pscSubnetwork.selfLink}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"my-instance\",\n location: \"us-central1\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"my-instance\",\n keyRing: keyRing.id,\n});\nconst project = gcp.organizations.getProject({});\nconst cryptoKeyMember = new gcp.kms.CryptoKeyIAMMember(\"crypto_key_member\", {\n cryptoKeyId: cryptoKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-datafusion.iam.gserviceaccount.com`),\n});\nconst cmek = new gcp.datafusion.Instance(\"cmek\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n cryptoKeyConfig: {\n keyReference: cryptoKey.id,\n },\n}, {\n dependsOn: [cryptoKeyMember],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"my-instance\",\n location=\"us-central1\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"my-instance\",\n key_ring=key_ring.id)\nproject = gcp.organizations.get_project()\ncrypto_key_member = gcp.kms.CryptoKeyIAMMember(\"crypto_key_member\",\n crypto_key_id=crypto_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-datafusion.iam.gserviceaccount.com\")\ncmek = gcp.datafusion.Instance(\"cmek\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n crypto_key_config={\n \"key_reference\": crypto_key.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[crypto_key_member]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"my-instance\",\n Location = \"us-central1\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"my-instance\",\n KeyRing = keyRing.Id,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cryptoKeyMember = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key_member\", new()\n {\n CryptoKeyId = cryptoKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-datafusion.iam.gserviceaccount.com\",\n });\n\n var cmek = new Gcp.DataFusion.Instance(\"cmek\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n CryptoKeyConfig = new Gcp.DataFusion.Inputs.InstanceCryptoKeyConfigArgs\n {\n KeyReference = cryptoKey.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cryptoKeyMember,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKeyMember, err := kms.NewCryptoKeyIAMMember(ctx, \"crypto_key_member\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: cryptoKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-datafusion.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"cmek\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tCryptoKeyConfig: \u0026datafusion.InstanceCryptoKeyConfigArgs{\n\t\t\t\tKeyReference: cryptoKey.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcryptoKeyMember,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceCryptoKeyConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"my-instance\")\n .location(\"us-central1\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"my-instance\")\n .keyRing(keyRing.id())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var cryptoKeyMember = new CryptoKeyIAMMember(\"cryptoKeyMember\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(cryptoKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-datafusion.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var cmek = new Instance(\"cmek\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .cryptoKeyConfig(InstanceCryptoKeyConfigArgs.builder()\n .keyReference(cryptoKey.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(cryptoKeyMember)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cmek:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n cryptoKeyConfig:\n keyReference: ${cryptoKey.id}\n options:\n dependson:\n - ${cryptoKeyMember}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: my-instance\n keyRing: ${keyRing.id}\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: my-instance\n location: us-central1\n cryptoKeyMember:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key_member\n properties:\n cryptoKeyId: ${cryptoKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-datafusion.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Enterprise\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst enterpriseInstance = new gcp.datafusion.Instance(\"enterprise_instance\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"ENTERPRISE\",\n enableRbac: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nenterprise_instance = gcp.datafusion.Instance(\"enterprise_instance\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"ENTERPRISE\",\n enable_rbac=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var enterpriseInstance = new Gcp.DataFusion.Instance(\"enterprise_instance\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"ENTERPRISE\",\n EnableRbac = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := datafusion.NewInstance(ctx, \"enterprise_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"ENTERPRISE\"),\n\t\t\tEnableRbac: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var enterpriseInstance = new Instance(\"enterpriseInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"ENTERPRISE\")\n .enableRbac(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n enterpriseInstance:\n type: gcp:datafusion:Instance\n name: enterprise_instance\n properties:\n name: my-instance\n region: us-central1\n type: ENTERPRISE\n enableRbac: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Event\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst eventTopic = new gcp.pubsub.Topic(\"event\", {name: \"my-instance\"});\nconst event = new gcp.datafusion.Instance(\"event\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n eventPublishConfig: {\n enabled: true,\n topic: eventTopic.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nevent_topic = gcp.pubsub.Topic(\"event\", name=\"my-instance\")\nevent = gcp.datafusion.Instance(\"event\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n event_publish_config={\n \"enabled\": True,\n \"topic\": event_topic.id,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var eventTopic = new Gcp.PubSub.Topic(\"event\", new()\n {\n Name = \"my-instance\",\n });\n\n var @event = new Gcp.DataFusion.Instance(\"event\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n EventPublishConfig = new Gcp.DataFusion.Inputs.InstanceEventPublishConfigArgs\n {\n Enabled = true,\n Topic = eventTopic.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\teventTopic, err := pubsub.NewTopic(ctx, \"event\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"event\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tEventPublishConfig: \u0026datafusion.InstanceEventPublishConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\tTopic: eventTopic.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceEventPublishConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var eventTopic = new Topic(\"eventTopic\", TopicArgs.builder()\n .name(\"my-instance\")\n .build());\n\n var event = new Instance(\"event\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .eventPublishConfig(InstanceEventPublishConfigArgs.builder()\n .enabled(true)\n .topic(eventTopic.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n event:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n eventPublishConfig:\n enabled: true\n topic: ${eventTopic.id}\n eventTopic:\n type: gcp:pubsub:Topic\n name: event\n properties:\n name: my-instance\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Zone\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst zone = new gcp.datafusion.Instance(\"zone\", {\n name: \"my-instance\",\n region: \"us-central1\",\n zone: \"us-central1-a\",\n type: \"DEVELOPER\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nzone = gcp.datafusion.Instance(\"zone\",\n name=\"my-instance\",\n region=\"us-central1\",\n zone=\"us-central1-a\",\n type=\"DEVELOPER\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var zone = new Gcp.DataFusion.Instance(\"zone\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Zone = \"us-central1-a\",\n Type = \"DEVELOPER\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := datafusion.NewInstance(ctx, \"zone\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tType: pulumi.String(\"DEVELOPER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var zone = new Instance(\"zone\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .zone(\"us-central1-a\")\n .type(\"DEVELOPER\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n zone:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n zone: us-central1-a\n type: DEVELOPER\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/instances/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamMember:InstanceIamMember default projects/{{project}}/locations/{{region}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamMember:InstanceIamMember default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamMember:InstanceIamMember default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamMember:InstanceIamMember default {{name}}\n```\n\n", "properties": { "condition": { "$ref": "#/types/gcp:securitycenter/InstanceIamMemberCondition:InstanceIamMemberCondition" @@ -242141,7 +242141,7 @@ } }, "gcp:securitycenter/instanceIamPolicy:InstanceIamPolicy": { - "description": "Represents a Data Fusion instance.\n\n\nTo get more information about Instance, see:\n\n* [API documentation](https://cloud.google.com/data-fusion/docs/reference/rest/v1beta1/projects.locations.instances)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/data-fusion/docs/)\n\n## Example Usage\n\n### Data Fusion Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basicInstance = new gcp.datafusion.Instance(\"basic_instance\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_instance = gcp.datafusion.Instance(\"basic_instance\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basicInstance = new Gcp.DataFusion.Instance(\"basic_instance\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := datafusion.NewInstance(ctx, \"basic_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basicInstance = new Instance(\"basicInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicInstance:\n type: gcp:datafusion:Instance\n name: basic_instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.appengine.getDefaultServiceAccount({});\nconst network = new gcp.compute.Network(\"network\", {name: \"datafusion-full-network\"});\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"datafusion-ip-alloc\",\n addressType: \"INTERNAL\",\n purpose: \"VPC_PEERING\",\n prefixLength: 22,\n network: network.id,\n});\nconst extendedInstance = new gcp.datafusion.Instance(\"extended_instance\", {\n name: \"my-instance\",\n description: \"My Data Fusion instance\",\n displayName: \"My Data Fusion instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n enableStackdriverLogging: true,\n enableStackdriverMonitoring: true,\n privateInstance: true,\n dataprocServiceAccount: _default.then(_default =\u003e _default.email),\n labels: {\n example_key: \"example_value\",\n },\n networkConfig: {\n network: \"default\",\n ipAllocation: pulumi.interpolate`${privateIpAlloc.address}/${privateIpAlloc.prefixLength}`,\n },\n accelerators: [{\n acceleratorType: \"CDC\",\n state: \"ENABLED\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.appengine.get_default_service_account()\nnetwork = gcp.compute.Network(\"network\", name=\"datafusion-full-network\")\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"datafusion-ip-alloc\",\n address_type=\"INTERNAL\",\n purpose=\"VPC_PEERING\",\n prefix_length=22,\n network=network.id)\nextended_instance = gcp.datafusion.Instance(\"extended_instance\",\n name=\"my-instance\",\n description=\"My Data Fusion instance\",\n display_name=\"My Data Fusion instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n enable_stackdriver_logging=True,\n enable_stackdriver_monitoring=True,\n private_instance=True,\n dataproc_service_account=default.email,\n labels={\n \"example_key\": \"example_value\",\n },\n network_config={\n \"network\": \"default\",\n \"ip_allocation\": pulumi.Output.all(\n address=private_ip_alloc.address,\n prefix_length=private_ip_alloc.prefix_length\n).apply(lambda resolved_outputs: f\"{resolved_outputs['address']}/{resolved_outputs['prefix_length']}\")\n,\n },\n accelerators=[{\n \"accelerator_type\": \"CDC\",\n \"state\": \"ENABLED\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.AppEngine.GetDefaultServiceAccount.Invoke();\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"datafusion-full-network\",\n });\n\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"datafusion-ip-alloc\",\n AddressType = \"INTERNAL\",\n Purpose = \"VPC_PEERING\",\n PrefixLength = 22,\n Network = network.Id,\n });\n\n var extendedInstance = new Gcp.DataFusion.Instance(\"extended_instance\", new()\n {\n Name = \"my-instance\",\n Description = \"My Data Fusion instance\",\n DisplayName = \"My Data Fusion instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n EnableStackdriverLogging = true,\n EnableStackdriverMonitoring = true,\n PrivateInstance = true,\n DataprocServiceAccount = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Email)),\n Labels = \n {\n { \"example_key\", \"example_value\" },\n },\n NetworkConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigArgs\n {\n Network = \"default\",\n IpAllocation = Output.Tuple(privateIpAlloc.Address, privateIpAlloc.PrefixLength).Apply(values =\u003e\n {\n var address = values.Item1;\n var prefixLength = values.Item2;\n return $\"{address}/{prefixLength}\";\n }),\n },\n Accelerators = new[]\n {\n new Gcp.DataFusion.Inputs.InstanceAcceleratorArgs\n {\n AcceleratorType = \"CDC\",\n State = \"ENABLED\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/appengine\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := appengine.GetDefaultServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-full-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"datafusion-ip-alloc\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tPrefixLength: pulumi.Int(22),\n\t\t\tNetwork: network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"extended_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tDescription: pulumi.String(\"My Data Fusion instance\"),\n\t\t\tDisplayName: pulumi.String(\"My Data Fusion instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableStackdriverMonitoring: pulumi.Bool(true),\n\t\t\tPrivateInstance: pulumi.Bool(true),\n\t\t\tDataprocServiceAccount: pulumi.String(_default.Email),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"example_key\": pulumi.String(\"example_value\"),\n\t\t\t},\n\t\t\tNetworkConfig: \u0026datafusion.InstanceNetworkConfigArgs{\n\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\tIpAllocation: pulumi.All(privateIpAlloc.Address, privateIpAlloc.PrefixLength).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\taddress := _args[0].(string)\n\t\t\t\t\tprefixLength := _args[1].(int)\n\t\t\t\t\treturn fmt.Sprintf(\"%v/%v\", address, prefixLength), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t\tAccelerators: datafusion.InstanceAcceleratorArray{\n\t\t\t\t\u0026datafusion.InstanceAcceleratorArgs{\n\t\t\t\t\tAcceleratorType: pulumi.String(\"CDC\"),\n\t\t\t\t\tState: pulumi.String(\"ENABLED\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.appengine.AppengineFunctions;\nimport com.pulumi.gcp.appengine.inputs.GetDefaultServiceAccountArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceAcceleratorArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = AppengineFunctions.getDefaultServiceAccount();\n\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"datafusion-full-network\")\n .build());\n\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"datafusion-ip-alloc\")\n .addressType(\"INTERNAL\")\n .purpose(\"VPC_PEERING\")\n .prefixLength(22)\n .network(network.id())\n .build());\n\n var extendedInstance = new Instance(\"extendedInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .description(\"My Data Fusion instance\")\n .displayName(\"My Data Fusion instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .enableStackdriverLogging(true)\n .enableStackdriverMonitoring(true)\n .privateInstance(true)\n .dataprocServiceAccount(default_.email())\n .labels(Map.of(\"example_key\", \"example_value\"))\n .networkConfig(InstanceNetworkConfigArgs.builder()\n .network(\"default\")\n .ipAllocation(Output.tuple(privateIpAlloc.address(), privateIpAlloc.prefixLength()).applyValue(values -\u003e {\n var address = values.t1;\n var prefixLength = values.t2;\n return String.format(\"%s/%s\", address,prefixLength);\n }))\n .build())\n .accelerators(InstanceAcceleratorArgs.builder()\n .acceleratorType(\"CDC\")\n .state(\"ENABLED\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n extendedInstance:\n type: gcp:datafusion:Instance\n name: extended_instance\n properties:\n name: my-instance\n description: My Data Fusion instance\n displayName: My Data Fusion instance\n region: us-central1\n type: BASIC\n enableStackdriverLogging: true\n enableStackdriverMonitoring: true\n privateInstance: true\n dataprocServiceAccount: ${default.email}\n labels:\n example_key: example_value\n networkConfig:\n network: default\n ipAllocation: ${privateIpAlloc.address}/${privateIpAlloc.prefixLength}\n accelerators:\n - acceleratorType: CDC\n state: ENABLED\n network:\n type: gcp:compute:Network\n properties:\n name: datafusion-full-network\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: datafusion-ip-alloc\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 22\n network: ${network.id}\nvariables:\n default:\n fn::invoke:\n Function: gcp:appengine:getDefaultServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Psc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst psc = new gcp.compute.Network(\"psc\", {\n name: \"datafusion-psc-network\",\n autoCreateSubnetworks: false,\n});\nconst pscSubnetwork = new gcp.compute.Subnetwork(\"psc\", {\n name: \"datafusion-psc-subnet\",\n region: \"us-central1\",\n network: psc.id,\n ipCidrRange: \"10.0.0.0/16\",\n});\nconst pscNetworkAttachment = new gcp.compute.NetworkAttachment(\"psc\", {\n name: \"datafusion-psc-attachment\",\n region: \"us-central1\",\n connectionPreference: \"ACCEPT_AUTOMATIC\",\n subnetworks: [pscSubnetwork.selfLink],\n});\nconst pscInstance = new gcp.datafusion.Instance(\"psc_instance\", {\n name: \"psc-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n privateInstance: true,\n networkConfig: {\n connectionType: \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n privateServiceConnectConfig: {\n networkAttachment: pscNetworkAttachment.id,\n unreachableCidrBlock: \"192.168.0.0/25\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npsc = gcp.compute.Network(\"psc\",\n name=\"datafusion-psc-network\",\n auto_create_subnetworks=False)\npsc_subnetwork = gcp.compute.Subnetwork(\"psc\",\n name=\"datafusion-psc-subnet\",\n region=\"us-central1\",\n network=psc.id,\n ip_cidr_range=\"10.0.0.0/16\")\npsc_network_attachment = gcp.compute.NetworkAttachment(\"psc\",\n name=\"datafusion-psc-attachment\",\n region=\"us-central1\",\n connection_preference=\"ACCEPT_AUTOMATIC\",\n subnetworks=[psc_subnetwork.self_link])\npsc_instance = gcp.datafusion.Instance(\"psc_instance\",\n name=\"psc-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n private_instance=True,\n network_config={\n \"connection_type\": \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n \"private_service_connect_config\": {\n \"network_attachment\": psc_network_attachment.id,\n \"unreachable_cidr_block\": \"192.168.0.0/25\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var psc = new Gcp.Compute.Network(\"psc\", new()\n {\n Name = \"datafusion-psc-network\",\n AutoCreateSubnetworks = false,\n });\n\n var pscSubnetwork = new Gcp.Compute.Subnetwork(\"psc\", new()\n {\n Name = \"datafusion-psc-subnet\",\n Region = \"us-central1\",\n Network = psc.Id,\n IpCidrRange = \"10.0.0.0/16\",\n });\n\n var pscNetworkAttachment = new Gcp.Compute.NetworkAttachment(\"psc\", new()\n {\n Name = \"datafusion-psc-attachment\",\n Region = \"us-central1\",\n ConnectionPreference = \"ACCEPT_AUTOMATIC\",\n Subnetworks = new[]\n {\n pscSubnetwork.SelfLink,\n },\n });\n\n var pscInstance = new Gcp.DataFusion.Instance(\"psc_instance\", new()\n {\n Name = \"psc-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n PrivateInstance = true,\n NetworkConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigArgs\n {\n ConnectionType = \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n PrivateServiceConnectConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigPrivateServiceConnectConfigArgs\n {\n NetworkAttachment = pscNetworkAttachment.Id,\n UnreachableCidrBlock = \"192.168.0.0/25\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpsc, err := compute.NewNetwork(ctx, \"psc\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscSubnetwork, err := compute.NewSubnetwork(ctx, \"psc\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-subnet\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: psc.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscNetworkAttachment, err := compute.NewNetworkAttachment(ctx, \"psc\", \u0026compute.NetworkAttachmentArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-attachment\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tConnectionPreference: pulumi.String(\"ACCEPT_AUTOMATIC\"),\n\t\t\tSubnetworks: pulumi.StringArray{\n\t\t\t\tpscSubnetwork.SelfLink,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"psc_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"psc-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tPrivateInstance: pulumi.Bool(true),\n\t\t\tNetworkConfig: \u0026datafusion.InstanceNetworkConfigArgs{\n\t\t\t\tConnectionType: pulumi.String(\"PRIVATE_SERVICE_CONNECT_INTERFACES\"),\n\t\t\t\tPrivateServiceConnectConfig: \u0026datafusion.InstanceNetworkConfigPrivateServiceConnectConfigArgs{\n\t\t\t\t\tNetworkAttachment: pscNetworkAttachment.ID(),\n\t\t\t\t\tUnreachableCidrBlock: pulumi.String(\"192.168.0.0/25\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.NetworkAttachment;\nimport com.pulumi.gcp.compute.NetworkAttachmentArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigPrivateServiceConnectConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var psc = new Network(\"psc\", NetworkArgs.builder()\n .name(\"datafusion-psc-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var pscSubnetwork = new Subnetwork(\"pscSubnetwork\", SubnetworkArgs.builder()\n .name(\"datafusion-psc-subnet\")\n .region(\"us-central1\")\n .network(psc.id())\n .ipCidrRange(\"10.0.0.0/16\")\n .build());\n\n var pscNetworkAttachment = new NetworkAttachment(\"pscNetworkAttachment\", NetworkAttachmentArgs.builder()\n .name(\"datafusion-psc-attachment\")\n .region(\"us-central1\")\n .connectionPreference(\"ACCEPT_AUTOMATIC\")\n .subnetworks(pscSubnetwork.selfLink())\n .build());\n\n var pscInstance = new Instance(\"pscInstance\", InstanceArgs.builder()\n .name(\"psc-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .privateInstance(true)\n .networkConfig(InstanceNetworkConfigArgs.builder()\n .connectionType(\"PRIVATE_SERVICE_CONNECT_INTERFACES\")\n .privateServiceConnectConfig(InstanceNetworkConfigPrivateServiceConnectConfigArgs.builder()\n .networkAttachment(pscNetworkAttachment.id())\n .unreachableCidrBlock(\"192.168.0.0/25\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pscInstance:\n type: gcp:datafusion:Instance\n name: psc_instance\n properties:\n name: psc-instance\n region: us-central1\n type: BASIC\n privateInstance: true\n networkConfig:\n connectionType: PRIVATE_SERVICE_CONNECT_INTERFACES\n privateServiceConnectConfig:\n networkAttachment: ${pscNetworkAttachment.id}\n unreachableCidrBlock: 192.168.0.0/25\n psc:\n type: gcp:compute:Network\n properties:\n name: datafusion-psc-network\n autoCreateSubnetworks: false\n pscSubnetwork:\n type: gcp:compute:Subnetwork\n name: psc\n properties:\n name: datafusion-psc-subnet\n region: us-central1\n network: ${psc.id}\n ipCidrRange: 10.0.0.0/16\n pscNetworkAttachment:\n type: gcp:compute:NetworkAttachment\n name: psc\n properties:\n name: datafusion-psc-attachment\n region: us-central1\n connectionPreference: ACCEPT_AUTOMATIC\n subnetworks:\n - ${pscSubnetwork.selfLink}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"my-instance\",\n location: \"us-central1\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"my-instance\",\n keyRing: keyRing.id,\n});\nconst project = gcp.organizations.getProject({});\nconst cryptoKeyMember = new gcp.kms.CryptoKeyIAMMember(\"crypto_key_member\", {\n cryptoKeyId: cryptoKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-datafusion.iam.gserviceaccount.com`),\n});\nconst cmek = new gcp.datafusion.Instance(\"cmek\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n cryptoKeyConfig: {\n keyReference: cryptoKey.id,\n },\n}, {\n dependsOn: [cryptoKeyMember],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"my-instance\",\n location=\"us-central1\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"my-instance\",\n key_ring=key_ring.id)\nproject = gcp.organizations.get_project()\ncrypto_key_member = gcp.kms.CryptoKeyIAMMember(\"crypto_key_member\",\n crypto_key_id=crypto_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-datafusion.iam.gserviceaccount.com\")\ncmek = gcp.datafusion.Instance(\"cmek\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n crypto_key_config={\n \"key_reference\": crypto_key.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[crypto_key_member]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"my-instance\",\n Location = \"us-central1\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"my-instance\",\n KeyRing = keyRing.Id,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cryptoKeyMember = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key_member\", new()\n {\n CryptoKeyId = cryptoKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-datafusion.iam.gserviceaccount.com\",\n });\n\n var cmek = new Gcp.DataFusion.Instance(\"cmek\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n CryptoKeyConfig = new Gcp.DataFusion.Inputs.InstanceCryptoKeyConfigArgs\n {\n KeyReference = cryptoKey.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cryptoKeyMember,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKeyMember, err := kms.NewCryptoKeyIAMMember(ctx, \"crypto_key_member\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: cryptoKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-datafusion.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"cmek\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tCryptoKeyConfig: \u0026datafusion.InstanceCryptoKeyConfigArgs{\n\t\t\t\tKeyReference: cryptoKey.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcryptoKeyMember,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceCryptoKeyConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"my-instance\")\n .location(\"us-central1\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"my-instance\")\n .keyRing(keyRing.id())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var cryptoKeyMember = new CryptoKeyIAMMember(\"cryptoKeyMember\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(cryptoKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-datafusion.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var cmek = new Instance(\"cmek\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .cryptoKeyConfig(InstanceCryptoKeyConfigArgs.builder()\n .keyReference(cryptoKey.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(cryptoKeyMember)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cmek:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n cryptoKeyConfig:\n keyReference: ${cryptoKey.id}\n options:\n dependson:\n - ${cryptoKeyMember}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: my-instance\n keyRing: ${keyRing.id}\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: my-instance\n location: us-central1\n cryptoKeyMember:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key_member\n properties:\n cryptoKeyId: ${cryptoKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-datafusion.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Enterprise\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst enterpriseInstance = new gcp.datafusion.Instance(\"enterprise_instance\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"ENTERPRISE\",\n enableRbac: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nenterprise_instance = gcp.datafusion.Instance(\"enterprise_instance\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"ENTERPRISE\",\n enable_rbac=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var enterpriseInstance = new Gcp.DataFusion.Instance(\"enterprise_instance\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"ENTERPRISE\",\n EnableRbac = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := datafusion.NewInstance(ctx, \"enterprise_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"ENTERPRISE\"),\n\t\t\tEnableRbac: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var enterpriseInstance = new Instance(\"enterpriseInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"ENTERPRISE\")\n .enableRbac(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n enterpriseInstance:\n type: gcp:datafusion:Instance\n name: enterprise_instance\n properties:\n name: my-instance\n region: us-central1\n type: ENTERPRISE\n enableRbac: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Event\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst eventTopic = new gcp.pubsub.Topic(\"event\", {name: \"my-instance\"});\nconst event = new gcp.datafusion.Instance(\"event\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n eventPublishConfig: {\n enabled: true,\n topic: eventTopic.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nevent_topic = gcp.pubsub.Topic(\"event\", name=\"my-instance\")\nevent = gcp.datafusion.Instance(\"event\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n event_publish_config={\n \"enabled\": True,\n \"topic\": event_topic.id,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var eventTopic = new Gcp.PubSub.Topic(\"event\", new()\n {\n Name = \"my-instance\",\n });\n\n var @event = new Gcp.DataFusion.Instance(\"event\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n EventPublishConfig = new Gcp.DataFusion.Inputs.InstanceEventPublishConfigArgs\n {\n Enabled = true,\n Topic = eventTopic.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\teventTopic, err := pubsub.NewTopic(ctx, \"event\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"event\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tEventPublishConfig: \u0026datafusion.InstanceEventPublishConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\tTopic: eventTopic.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceEventPublishConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var eventTopic = new Topic(\"eventTopic\", TopicArgs.builder()\n .name(\"my-instance\")\n .build());\n\n var event = new Instance(\"event\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .eventPublishConfig(InstanceEventPublishConfigArgs.builder()\n .enabled(true)\n .topic(eventTopic.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n event:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n eventPublishConfig:\n enabled: true\n topic: ${eventTopic.id}\n eventTopic:\n type: gcp:pubsub:Topic\n name: event\n properties:\n name: my-instance\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Zone\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst zone = new gcp.datafusion.Instance(\"zone\", {\n name: \"my-instance\",\n region: \"us-central1\",\n zone: \"us-central1-a\",\n type: \"DEVELOPER\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nzone = gcp.datafusion.Instance(\"zone\",\n name=\"my-instance\",\n region=\"us-central1\",\n zone=\"us-central1-a\",\n type=\"DEVELOPER\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var zone = new Gcp.DataFusion.Instance(\"zone\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Zone = \"us-central1-a\",\n Type = \"DEVELOPER\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := datafusion.NewInstance(ctx, \"zone\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tType: pulumi.String(\"DEVELOPER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var zone = new Instance(\"zone\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .zone(\"us-central1-a\")\n .type(\"DEVELOPER\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n zone:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n zone: us-central1-a\n type: DEVELOPER\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/instances/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamPolicy:InstanceIamPolicy default projects/{{project}}/locations/{{region}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamPolicy:InstanceIamPolicy default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamPolicy:InstanceIamPolicy default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamPolicy:InstanceIamPolicy default {{name}}\n```\n\n", + "description": "Represents a Data Fusion instance.\n\n\nTo get more information about Instance, see:\n\n* [API documentation](https://cloud.google.com/data-fusion/docs/reference/rest/v1beta1/projects.locations.instances)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/data-fusion/docs/)\n\n## Example Usage\n\n### Data Fusion Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basicInstance = new gcp.datafusion.Instance(\"basic_instance\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_instance = gcp.datafusion.Instance(\"basic_instance\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basicInstance = new Gcp.DataFusion.Instance(\"basic_instance\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := datafusion.NewInstance(ctx, \"basic_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basicInstance = new Instance(\"basicInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicInstance:\n type: gcp:datafusion:Instance\n name: basic_instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.appengine.getDefaultServiceAccount({});\nconst network = new gcp.compute.Network(\"network\", {name: \"datafusion-full-network\"});\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"datafusion-ip-alloc\",\n addressType: \"INTERNAL\",\n purpose: \"VPC_PEERING\",\n prefixLength: 22,\n network: network.id,\n});\nconst extendedInstance = new gcp.datafusion.Instance(\"extended_instance\", {\n name: \"my-instance\",\n description: \"My Data Fusion instance\",\n displayName: \"My Data Fusion instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n enableStackdriverLogging: true,\n enableStackdriverMonitoring: true,\n privateInstance: true,\n dataprocServiceAccount: _default.then(_default =\u003e _default.email),\n labels: {\n example_key: \"example_value\",\n },\n networkConfig: {\n network: \"default\",\n ipAllocation: pulumi.interpolate`${privateIpAlloc.address}/${privateIpAlloc.prefixLength}`,\n },\n accelerators: [{\n acceleratorType: \"CDC\",\n state: \"ENABLED\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.appengine.get_default_service_account()\nnetwork = gcp.compute.Network(\"network\", name=\"datafusion-full-network\")\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"datafusion-ip-alloc\",\n address_type=\"INTERNAL\",\n purpose=\"VPC_PEERING\",\n prefix_length=22,\n network=network.id)\nextended_instance = gcp.datafusion.Instance(\"extended_instance\",\n name=\"my-instance\",\n description=\"My Data Fusion instance\",\n display_name=\"My Data Fusion instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n enable_stackdriver_logging=True,\n enable_stackdriver_monitoring=True,\n private_instance=True,\n dataproc_service_account=default.email,\n labels={\n \"example_key\": \"example_value\",\n },\n network_config={\n \"network\": \"default\",\n \"ip_allocation\": pulumi.Output.all(\n address=private_ip_alloc.address,\n prefix_length=private_ip_alloc.prefix_length\n).apply(lambda resolved_outputs: f\"{resolved_outputs['address']}/{resolved_outputs['prefix_length']}\")\n,\n },\n accelerators=[{\n \"accelerator_type\": \"CDC\",\n \"state\": \"ENABLED\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.AppEngine.GetDefaultServiceAccount.Invoke();\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"datafusion-full-network\",\n });\n\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"datafusion-ip-alloc\",\n AddressType = \"INTERNAL\",\n Purpose = \"VPC_PEERING\",\n PrefixLength = 22,\n Network = network.Id,\n });\n\n var extendedInstance = new Gcp.DataFusion.Instance(\"extended_instance\", new()\n {\n Name = \"my-instance\",\n Description = \"My Data Fusion instance\",\n DisplayName = \"My Data Fusion instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n EnableStackdriverLogging = true,\n EnableStackdriverMonitoring = true,\n PrivateInstance = true,\n DataprocServiceAccount = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Email)),\n Labels = \n {\n { \"example_key\", \"example_value\" },\n },\n NetworkConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigArgs\n {\n Network = \"default\",\n IpAllocation = Output.Tuple(privateIpAlloc.Address, privateIpAlloc.PrefixLength).Apply(values =\u003e\n {\n var address = values.Item1;\n var prefixLength = values.Item2;\n return $\"{address}/{prefixLength}\";\n }),\n },\n Accelerators = new[]\n {\n new Gcp.DataFusion.Inputs.InstanceAcceleratorArgs\n {\n AcceleratorType = \"CDC\",\n State = \"ENABLED\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/appengine\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := appengine.GetDefaultServiceAccount(ctx, \u0026appengine.GetDefaultServiceAccountArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-full-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"datafusion-ip-alloc\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tPrefixLength: pulumi.Int(22),\n\t\t\tNetwork: network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"extended_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tDescription: pulumi.String(\"My Data Fusion instance\"),\n\t\t\tDisplayName: pulumi.String(\"My Data Fusion instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tEnableStackdriverLogging: pulumi.Bool(true),\n\t\t\tEnableStackdriverMonitoring: pulumi.Bool(true),\n\t\t\tPrivateInstance: pulumi.Bool(true),\n\t\t\tDataprocServiceAccount: pulumi.String(_default.Email),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"example_key\": pulumi.String(\"example_value\"),\n\t\t\t},\n\t\t\tNetworkConfig: \u0026datafusion.InstanceNetworkConfigArgs{\n\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\tIpAllocation: pulumi.All(privateIpAlloc.Address, privateIpAlloc.PrefixLength).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\taddress := _args[0].(string)\n\t\t\t\t\tprefixLength := _args[1].(int)\n\t\t\t\t\treturn fmt.Sprintf(\"%v/%v\", address, prefixLength), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t\tAccelerators: datafusion.InstanceAcceleratorArray{\n\t\t\t\t\u0026datafusion.InstanceAcceleratorArgs{\n\t\t\t\t\tAcceleratorType: pulumi.String(\"CDC\"),\n\t\t\t\t\tState: pulumi.String(\"ENABLED\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.appengine.AppengineFunctions;\nimport com.pulumi.gcp.appengine.inputs.GetDefaultServiceAccountArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceAcceleratorArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = AppengineFunctions.getDefaultServiceAccount();\n\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"datafusion-full-network\")\n .build());\n\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"datafusion-ip-alloc\")\n .addressType(\"INTERNAL\")\n .purpose(\"VPC_PEERING\")\n .prefixLength(22)\n .network(network.id())\n .build());\n\n var extendedInstance = new Instance(\"extendedInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .description(\"My Data Fusion instance\")\n .displayName(\"My Data Fusion instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .enableStackdriverLogging(true)\n .enableStackdriverMonitoring(true)\n .privateInstance(true)\n .dataprocServiceAccount(default_.email())\n .labels(Map.of(\"example_key\", \"example_value\"))\n .networkConfig(InstanceNetworkConfigArgs.builder()\n .network(\"default\")\n .ipAllocation(Output.tuple(privateIpAlloc.address(), privateIpAlloc.prefixLength()).applyValue(values -\u003e {\n var address = values.t1;\n var prefixLength = values.t2;\n return String.format(\"%s/%s\", address,prefixLength);\n }))\n .build())\n .accelerators(InstanceAcceleratorArgs.builder()\n .acceleratorType(\"CDC\")\n .state(\"ENABLED\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n extendedInstance:\n type: gcp:datafusion:Instance\n name: extended_instance\n properties:\n name: my-instance\n description: My Data Fusion instance\n displayName: My Data Fusion instance\n region: us-central1\n type: BASIC\n enableStackdriverLogging: true\n enableStackdriverMonitoring: true\n privateInstance: true\n dataprocServiceAccount: ${default.email}\n labels:\n example_key: example_value\n networkConfig:\n network: default\n ipAllocation: ${privateIpAlloc.address}/${privateIpAlloc.prefixLength}\n accelerators:\n - acceleratorType: CDC\n state: ENABLED\n network:\n type: gcp:compute:Network\n properties:\n name: datafusion-full-network\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: datafusion-ip-alloc\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 22\n network: ${network.id}\nvariables:\n default:\n fn::invoke:\n Function: gcp:appengine:getDefaultServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Psc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst psc = new gcp.compute.Network(\"psc\", {\n name: \"datafusion-psc-network\",\n autoCreateSubnetworks: false,\n});\nconst pscSubnetwork = new gcp.compute.Subnetwork(\"psc\", {\n name: \"datafusion-psc-subnet\",\n region: \"us-central1\",\n network: psc.id,\n ipCidrRange: \"10.0.0.0/16\",\n});\nconst pscNetworkAttachment = new gcp.compute.NetworkAttachment(\"psc\", {\n name: \"datafusion-psc-attachment\",\n region: \"us-central1\",\n connectionPreference: \"ACCEPT_AUTOMATIC\",\n subnetworks: [pscSubnetwork.selfLink],\n});\nconst pscInstance = new gcp.datafusion.Instance(\"psc_instance\", {\n name: \"psc-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n privateInstance: true,\n networkConfig: {\n connectionType: \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n privateServiceConnectConfig: {\n networkAttachment: pscNetworkAttachment.id,\n unreachableCidrBlock: \"192.168.0.0/25\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npsc = gcp.compute.Network(\"psc\",\n name=\"datafusion-psc-network\",\n auto_create_subnetworks=False)\npsc_subnetwork = gcp.compute.Subnetwork(\"psc\",\n name=\"datafusion-psc-subnet\",\n region=\"us-central1\",\n network=psc.id,\n ip_cidr_range=\"10.0.0.0/16\")\npsc_network_attachment = gcp.compute.NetworkAttachment(\"psc\",\n name=\"datafusion-psc-attachment\",\n region=\"us-central1\",\n connection_preference=\"ACCEPT_AUTOMATIC\",\n subnetworks=[psc_subnetwork.self_link])\npsc_instance = gcp.datafusion.Instance(\"psc_instance\",\n name=\"psc-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n private_instance=True,\n network_config={\n \"connection_type\": \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n \"private_service_connect_config\": {\n \"network_attachment\": psc_network_attachment.id,\n \"unreachable_cidr_block\": \"192.168.0.0/25\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var psc = new Gcp.Compute.Network(\"psc\", new()\n {\n Name = \"datafusion-psc-network\",\n AutoCreateSubnetworks = false,\n });\n\n var pscSubnetwork = new Gcp.Compute.Subnetwork(\"psc\", new()\n {\n Name = \"datafusion-psc-subnet\",\n Region = \"us-central1\",\n Network = psc.Id,\n IpCidrRange = \"10.0.0.0/16\",\n });\n\n var pscNetworkAttachment = new Gcp.Compute.NetworkAttachment(\"psc\", new()\n {\n Name = \"datafusion-psc-attachment\",\n Region = \"us-central1\",\n ConnectionPreference = \"ACCEPT_AUTOMATIC\",\n Subnetworks = new[]\n {\n pscSubnetwork.SelfLink,\n },\n });\n\n var pscInstance = new Gcp.DataFusion.Instance(\"psc_instance\", new()\n {\n Name = \"psc-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n PrivateInstance = true,\n NetworkConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigArgs\n {\n ConnectionType = \"PRIVATE_SERVICE_CONNECT_INTERFACES\",\n PrivateServiceConnectConfig = new Gcp.DataFusion.Inputs.InstanceNetworkConfigPrivateServiceConnectConfigArgs\n {\n NetworkAttachment = pscNetworkAttachment.Id,\n UnreachableCidrBlock = \"192.168.0.0/25\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpsc, err := compute.NewNetwork(ctx, \"psc\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscSubnetwork, err := compute.NewSubnetwork(ctx, \"psc\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-subnet\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: psc.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscNetworkAttachment, err := compute.NewNetworkAttachment(ctx, \"psc\", \u0026compute.NetworkAttachmentArgs{\n\t\t\tName: pulumi.String(\"datafusion-psc-attachment\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tConnectionPreference: pulumi.String(\"ACCEPT_AUTOMATIC\"),\n\t\t\tSubnetworks: pulumi.StringArray{\n\t\t\t\tpscSubnetwork.SelfLink,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"psc_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"psc-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tPrivateInstance: pulumi.Bool(true),\n\t\t\tNetworkConfig: \u0026datafusion.InstanceNetworkConfigArgs{\n\t\t\t\tConnectionType: pulumi.String(\"PRIVATE_SERVICE_CONNECT_INTERFACES\"),\n\t\t\t\tPrivateServiceConnectConfig: \u0026datafusion.InstanceNetworkConfigPrivateServiceConnectConfigArgs{\n\t\t\t\t\tNetworkAttachment: pscNetworkAttachment.ID(),\n\t\t\t\t\tUnreachableCidrBlock: pulumi.String(\"192.168.0.0/25\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.NetworkAttachment;\nimport com.pulumi.gcp.compute.NetworkAttachmentArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceNetworkConfigPrivateServiceConnectConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var psc = new Network(\"psc\", NetworkArgs.builder()\n .name(\"datafusion-psc-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var pscSubnetwork = new Subnetwork(\"pscSubnetwork\", SubnetworkArgs.builder()\n .name(\"datafusion-psc-subnet\")\n .region(\"us-central1\")\n .network(psc.id())\n .ipCidrRange(\"10.0.0.0/16\")\n .build());\n\n var pscNetworkAttachment = new NetworkAttachment(\"pscNetworkAttachment\", NetworkAttachmentArgs.builder()\n .name(\"datafusion-psc-attachment\")\n .region(\"us-central1\")\n .connectionPreference(\"ACCEPT_AUTOMATIC\")\n .subnetworks(pscSubnetwork.selfLink())\n .build());\n\n var pscInstance = new Instance(\"pscInstance\", InstanceArgs.builder()\n .name(\"psc-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .privateInstance(true)\n .networkConfig(InstanceNetworkConfigArgs.builder()\n .connectionType(\"PRIVATE_SERVICE_CONNECT_INTERFACES\")\n .privateServiceConnectConfig(InstanceNetworkConfigPrivateServiceConnectConfigArgs.builder()\n .networkAttachment(pscNetworkAttachment.id())\n .unreachableCidrBlock(\"192.168.0.0/25\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pscInstance:\n type: gcp:datafusion:Instance\n name: psc_instance\n properties:\n name: psc-instance\n region: us-central1\n type: BASIC\n privateInstance: true\n networkConfig:\n connectionType: PRIVATE_SERVICE_CONNECT_INTERFACES\n privateServiceConnectConfig:\n networkAttachment: ${pscNetworkAttachment.id}\n unreachableCidrBlock: 192.168.0.0/25\n psc:\n type: gcp:compute:Network\n properties:\n name: datafusion-psc-network\n autoCreateSubnetworks: false\n pscSubnetwork:\n type: gcp:compute:Subnetwork\n name: psc\n properties:\n name: datafusion-psc-subnet\n region: us-central1\n network: ${psc.id}\n ipCidrRange: 10.0.0.0/16\n pscNetworkAttachment:\n type: gcp:compute:NetworkAttachment\n name: psc\n properties:\n name: datafusion-psc-attachment\n region: us-central1\n connectionPreference: ACCEPT_AUTOMATIC\n subnetworks:\n - ${pscSubnetwork.selfLink}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyRing = new gcp.kms.KeyRing(\"key_ring\", {\n name: \"my-instance\",\n location: \"us-central1\",\n});\nconst cryptoKey = new gcp.kms.CryptoKey(\"crypto_key\", {\n name: \"my-instance\",\n keyRing: keyRing.id,\n});\nconst project = gcp.organizations.getProject({});\nconst cryptoKeyMember = new gcp.kms.CryptoKeyIAMMember(\"crypto_key_member\", {\n cryptoKeyId: cryptoKey.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-datafusion.iam.gserviceaccount.com`),\n});\nconst cmek = new gcp.datafusion.Instance(\"cmek\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n cryptoKeyConfig: {\n keyReference: cryptoKey.id,\n },\n}, {\n dependsOn: [cryptoKeyMember],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkey_ring = gcp.kms.KeyRing(\"key_ring\",\n name=\"my-instance\",\n location=\"us-central1\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto_key\",\n name=\"my-instance\",\n key_ring=key_ring.id)\nproject = gcp.organizations.get_project()\ncrypto_key_member = gcp.kms.CryptoKeyIAMMember(\"crypto_key_member\",\n crypto_key_id=crypto_key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-datafusion.iam.gserviceaccount.com\")\ncmek = gcp.datafusion.Instance(\"cmek\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n crypto_key_config={\n \"key_reference\": crypto_key.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[crypto_key_member]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var keyRing = new Gcp.Kms.KeyRing(\"key_ring\", new()\n {\n Name = \"my-instance\",\n Location = \"us-central1\",\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKey(\"crypto_key\", new()\n {\n Name = \"my-instance\",\n KeyRing = keyRing.Id,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cryptoKeyMember = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key_member\", new()\n {\n CryptoKeyId = cryptoKey.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-datafusion.iam.gserviceaccount.com\",\n });\n\n var cmek = new Gcp.DataFusion.Instance(\"cmek\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n CryptoKeyConfig = new Gcp.DataFusion.Inputs.InstanceCryptoKeyConfigArgs\n {\n KeyReference = cryptoKey.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cryptoKeyMember,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tkeyRing, err := kms.NewKeyRing(ctx, \"key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKey, err := kms.NewCryptoKey(ctx, \"crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tKeyRing: keyRing.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKeyMember, err := kms.NewCryptoKeyIAMMember(ctx, \"crypto_key_member\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: cryptoKey.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-datafusion.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"cmek\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tCryptoKeyConfig: \u0026datafusion.InstanceCryptoKeyConfigArgs{\n\t\t\t\tKeyReference: cryptoKey.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcryptoKeyMember,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceCryptoKeyConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var keyRing = new KeyRing(\"keyRing\", KeyRingArgs.builder()\n .name(\"my-instance\")\n .location(\"us-central1\")\n .build());\n\n var cryptoKey = new CryptoKey(\"cryptoKey\", CryptoKeyArgs.builder()\n .name(\"my-instance\")\n .keyRing(keyRing.id())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var cryptoKeyMember = new CryptoKeyIAMMember(\"cryptoKeyMember\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(cryptoKey.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-datafusion.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var cmek = new Instance(\"cmek\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .cryptoKeyConfig(InstanceCryptoKeyConfigArgs.builder()\n .keyReference(cryptoKey.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(cryptoKeyMember)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cmek:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n cryptoKeyConfig:\n keyReference: ${cryptoKey.id}\n options:\n dependson:\n - ${cryptoKeyMember}\n cryptoKey:\n type: gcp:kms:CryptoKey\n name: crypto_key\n properties:\n name: my-instance\n keyRing: ${keyRing.id}\n keyRing:\n type: gcp:kms:KeyRing\n name: key_ring\n properties:\n name: my-instance\n location: us-central1\n cryptoKeyMember:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key_member\n properties:\n cryptoKeyId: ${cryptoKey.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-datafusion.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Enterprise\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst enterpriseInstance = new gcp.datafusion.Instance(\"enterprise_instance\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"ENTERPRISE\",\n enableRbac: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nenterprise_instance = gcp.datafusion.Instance(\"enterprise_instance\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"ENTERPRISE\",\n enable_rbac=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var enterpriseInstance = new Gcp.DataFusion.Instance(\"enterprise_instance\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"ENTERPRISE\",\n EnableRbac = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := datafusion.NewInstance(ctx, \"enterprise_instance\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"ENTERPRISE\"),\n\t\t\tEnableRbac: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var enterpriseInstance = new Instance(\"enterpriseInstance\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"ENTERPRISE\")\n .enableRbac(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n enterpriseInstance:\n type: gcp:datafusion:Instance\n name: enterprise_instance\n properties:\n name: my-instance\n region: us-central1\n type: ENTERPRISE\n enableRbac: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Event\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst eventTopic = new gcp.pubsub.Topic(\"event\", {name: \"my-instance\"});\nconst event = new gcp.datafusion.Instance(\"event\", {\n name: \"my-instance\",\n region: \"us-central1\",\n type: \"BASIC\",\n eventPublishConfig: {\n enabled: true,\n topic: eventTopic.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nevent_topic = gcp.pubsub.Topic(\"event\", name=\"my-instance\")\nevent = gcp.datafusion.Instance(\"event\",\n name=\"my-instance\",\n region=\"us-central1\",\n type=\"BASIC\",\n event_publish_config={\n \"enabled\": True,\n \"topic\": event_topic.id,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var eventTopic = new Gcp.PubSub.Topic(\"event\", new()\n {\n Name = \"my-instance\",\n });\n\n var @event = new Gcp.DataFusion.Instance(\"event\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Type = \"BASIC\",\n EventPublishConfig = new Gcp.DataFusion.Inputs.InstanceEventPublishConfigArgs\n {\n Enabled = true,\n Topic = eventTopic.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\teventTopic, err := pubsub.NewTopic(ctx, \"event\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datafusion.NewInstance(ctx, \"event\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tType: pulumi.String(\"BASIC\"),\n\t\t\tEventPublishConfig: \u0026datafusion.InstanceEventPublishConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\tTopic: eventTopic.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport com.pulumi.gcp.datafusion.inputs.InstanceEventPublishConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var eventTopic = new Topic(\"eventTopic\", TopicArgs.builder()\n .name(\"my-instance\")\n .build());\n\n var event = new Instance(\"event\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .type(\"BASIC\")\n .eventPublishConfig(InstanceEventPublishConfigArgs.builder()\n .enabled(true)\n .topic(eventTopic.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n event:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n type: BASIC\n eventPublishConfig:\n enabled: true\n topic: ${eventTopic.id}\n eventTopic:\n type: gcp:pubsub:Topic\n name: event\n properties:\n name: my-instance\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Data Fusion Instance Zone\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst zone = new gcp.datafusion.Instance(\"zone\", {\n name: \"my-instance\",\n region: \"us-central1\",\n zone: \"us-central1-a\",\n type: \"DEVELOPER\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nzone = gcp.datafusion.Instance(\"zone\",\n name=\"my-instance\",\n region=\"us-central1\",\n zone=\"us-central1-a\",\n type=\"DEVELOPER\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var zone = new Gcp.DataFusion.Instance(\"zone\", new()\n {\n Name = \"my-instance\",\n Region = \"us-central1\",\n Zone = \"us-central1-a\",\n Type = \"DEVELOPER\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/datafusion\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := datafusion.NewInstance(ctx, \"zone\", \u0026datafusion.InstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tType: pulumi.String(\"DEVELOPER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.datafusion.Instance;\nimport com.pulumi.gcp.datafusion.InstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var zone = new Instance(\"zone\", InstanceArgs.builder()\n .name(\"my-instance\")\n .region(\"us-central1\")\n .zone(\"us-central1-a\")\n .type(\"DEVELOPER\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n zone:\n type: gcp:datafusion:Instance\n properties:\n name: my-instance\n region: us-central1\n zone: us-central1-a\n type: DEVELOPER\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/instances/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamPolicy:InstanceIamPolicy default projects/{{project}}/locations/{{region}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamPolicy:InstanceIamPolicy default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamPolicy:InstanceIamPolicy default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/instanceIamPolicy:InstanceIamPolicy default {{name}}\n```\n\n", "properties": { "etag": { "type": "string" @@ -246029,7 +246029,7 @@ ] }, "gcp:serviceaccount/iAMBinding:IAMBinding": { - "description": "When managing IAM roles, you can treat a service account either as a resource or as an identity. This resource is to add iam policy bindings to a service account resource, such as allowing the members to run operations as or modify the service account. To configure permissions for a service account on other GCP resources, use the google_project_iam set of resources.\n\nThree different resources help you manage your IAM policy for a service account. Each of these resources serves a different use case:\n\n* `gcp.serviceaccount.IAMPolicy`: Authoritative. Sets the IAM policy for the service account and replaces any existing policy already attached.\n* `gcp.serviceaccount.IAMBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the service account are preserved.\n* `gcp.serviceaccount.IAMMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the service account are preserved.\n\n\u003e **Note:** `gcp.serviceaccount.IAMPolicy` **cannot** be used in conjunction with `gcp.serviceaccount.IAMBinding` and `gcp.serviceaccount.IAMMember` or they will fight over what your policy should be.\n\n\u003e **Note:** `gcp.serviceaccount.IAMBinding` resources **can be** used in conjunction with `gcp.serviceaccount.IAMMember` resources **only if** they do not grant privilege to the same role.\n\n## Example Usage\n\n### Service Account IAM Policy\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/iam.serviceAccountUser\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that only Jane can interact with\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMPolicy(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/iam.serviceAccountUser\",\n \"members\": [\"user:jane@example.com\"],\n}])\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that only Jane can interact with\")\nadmin_account_iam = gcp.serviceaccount.IAMPolicy(\"admin-account-iam\",\n service_account_id=sa.name,\n policy_data=admin.policy_data)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/iam.serviceAccountUser\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that only Jane can interact with\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMPolicy(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/iam.serviceAccountUser\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that only Jane can interact with\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMPolicy(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMPolicyArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMPolicy;\nimport com.pulumi.gcp.serviceaccount.IAMPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/iam.serviceAccountUser\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that only Jane can interact with\")\n .build());\n\n var admin_account_iam = new IAMPolicy(\"admin-account-iam\", IAMPolicyArgs.builder()\n .serviceAccountId(sa.name())\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that only Jane can interact with\n admin-account-iam:\n type: gcp:serviceaccount:IAMPolicy\n properties:\n serviceAccountId: ${sa.name}\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/iam.serviceAccountUser\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Binding\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that only Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMBinding(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that only Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMBinding(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n members=[\"user:jane@example.com\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that only Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMBinding(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that only Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMBinding(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMBindingArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMBinding;\nimport com.pulumi.gcp.serviceaccount.IAMBindingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that only Jane can use\")\n .build());\n\n var admin_account_iam = new IAMBinding(\"admin-account-iam\", IAMBindingArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that only Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMBinding\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Binding With IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that only Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMBinding(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that only Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMBinding(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that only Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMBinding(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.ServiceAccount.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that only Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMBinding(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMBindingArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026serviceaccount.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMBinding;\nimport com.pulumi.gcp.serviceaccount.IAMBindingArgs;\nimport com.pulumi.gcp.serviceaccount.inputs.IAMBindingConditionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that only Jane can use\")\n .build());\n\n var admin_account_iam = new IAMBinding(\"admin-account-iam\", IAMBindingArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that only Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMBinding\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Member\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.compute.getDefaultServiceAccount({});\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMMember(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n member: \"user:jane@example.com\",\n});\n// Allow SA service account use the default GCE account\nconst gce_default_account_iam = new gcp.serviceaccount.IAMMember(\"gce-default-account-iam\", {\n serviceAccountId: _default.then(_default =\u003e _default.name),\n role: \"roles/iam.serviceAccountUser\",\n member: pulumi.interpolate`serviceAccount:${sa.email}`,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_default_service_account()\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMMember(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n member=\"user:jane@example.com\")\n# Allow SA service account use the default GCE account\ngce_default_account_iam = gcp.serviceaccount.IAMMember(\"gce-default-account-iam\",\n service_account_id=default.name,\n role=\"roles/iam.serviceAccountUser\",\n member=sa.email.apply(lambda email: f\"serviceAccount:{email}\"))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Compute.GetDefaultServiceAccount.Invoke();\n\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMMember(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Member = \"user:jane@example.com\",\n });\n\n // Allow SA service account use the default GCE account\n var gce_default_account_iam = new Gcp.ServiceAccount.IAMMember(\"gce-default-account-iam\", new()\n {\n ServiceAccountId = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Name)),\n Role = \"roles/iam.serviceAccountUser\",\n Member = sa.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := compute.GetDefaultServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMMember(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMMemberArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Allow SA service account use the default GCE account\n\t\t_, err = serviceaccount.NewIAMMember(ctx, \"gce-default-account-iam\", \u0026serviceaccount.IAMMemberArgs{\n\t\t\tServiceAccountId: pulumi.String(_default.Name),\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMember: sa.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetDefaultServiceAccountArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMMember;\nimport com.pulumi.gcp.serviceaccount.IAMMemberArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = ComputeFunctions.getDefaultServiceAccount();\n\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that Jane can use\")\n .build());\n\n var admin_account_iam = new IAMMember(\"admin-account-iam\", IAMMemberArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .member(\"user:jane@example.com\")\n .build());\n\n // Allow SA service account use the default GCE account\n var gce_default_account_iam = new IAMMember(\"gce-default-account-iam\", IAMMemberArgs.builder()\n .serviceAccountId(default_.name())\n .role(\"roles/iam.serviceAccountUser\")\n .member(sa.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMMember\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n member: user:jane@example.com\n # Allow SA service account use the default GCE account\n gce-default-account-iam:\n type: gcp:serviceaccount:IAMMember\n properties:\n serviceAccountId: ${default.name}\n role: roles/iam.serviceAccountUser\n member: serviceAccount:${sa.email}\nvariables:\n default:\n fn::invoke:\n Function: gcp:compute:getDefaultServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Member With IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMMember(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMMember(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMMember(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.ServiceAccount.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMMember(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMMemberArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026serviceaccount.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMMember;\nimport com.pulumi.gcp.serviceaccount.IAMMemberArgs;\nimport com.pulumi.gcp.serviceaccount.inputs.IAMMemberConditionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that Jane can use\")\n .build());\n\n var admin_account_iam = new IAMMember(\"admin-account-iam\", IAMMemberArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMMember\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### Additional Examples\n\n### Service Account IAM Policy\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/iam.serviceAccountUser\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that only Jane can interact with\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMPolicy(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/iam.serviceAccountUser\",\n \"members\": [\"user:jane@example.com\"],\n}])\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that only Jane can interact with\")\nadmin_account_iam = gcp.serviceaccount.IAMPolicy(\"admin-account-iam\",\n service_account_id=sa.name,\n policy_data=admin.policy_data)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/iam.serviceAccountUser\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that only Jane can interact with\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMPolicy(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/iam.serviceAccountUser\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that only Jane can interact with\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMPolicy(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMPolicyArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMPolicy;\nimport com.pulumi.gcp.serviceaccount.IAMPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/iam.serviceAccountUser\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that only Jane can interact with\")\n .build());\n\n var admin_account_iam = new IAMPolicy(\"admin-account-iam\", IAMPolicyArgs.builder()\n .serviceAccountId(sa.name())\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that only Jane can interact with\n admin-account-iam:\n type: gcp:serviceaccount:IAMPolicy\n properties:\n serviceAccountId: ${sa.name}\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/iam.serviceAccountUser\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Binding\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that only Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMBinding(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that only Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMBinding(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n members=[\"user:jane@example.com\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that only Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMBinding(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that only Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMBinding(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMBindingArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMBinding;\nimport com.pulumi.gcp.serviceaccount.IAMBindingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that only Jane can use\")\n .build());\n\n var admin_account_iam = new IAMBinding(\"admin-account-iam\", IAMBindingArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that only Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMBinding\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Binding With IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that only Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMBinding(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that only Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMBinding(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that only Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMBinding(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.ServiceAccount.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that only Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMBinding(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMBindingArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026serviceaccount.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMBinding;\nimport com.pulumi.gcp.serviceaccount.IAMBindingArgs;\nimport com.pulumi.gcp.serviceaccount.inputs.IAMBindingConditionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that only Jane can use\")\n .build());\n\n var admin_account_iam = new IAMBinding(\"admin-account-iam\", IAMBindingArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that only Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMBinding\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Member\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.compute.getDefaultServiceAccount({});\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMMember(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n member: \"user:jane@example.com\",\n});\n// Allow SA service account use the default GCE account\nconst gce_default_account_iam = new gcp.serviceaccount.IAMMember(\"gce-default-account-iam\", {\n serviceAccountId: _default.then(_default =\u003e _default.name),\n role: \"roles/iam.serviceAccountUser\",\n member: pulumi.interpolate`serviceAccount:${sa.email}`,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_default_service_account()\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMMember(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n member=\"user:jane@example.com\")\n# Allow SA service account use the default GCE account\ngce_default_account_iam = gcp.serviceaccount.IAMMember(\"gce-default-account-iam\",\n service_account_id=default.name,\n role=\"roles/iam.serviceAccountUser\",\n member=sa.email.apply(lambda email: f\"serviceAccount:{email}\"))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Compute.GetDefaultServiceAccount.Invoke();\n\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMMember(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Member = \"user:jane@example.com\",\n });\n\n // Allow SA service account use the default GCE account\n var gce_default_account_iam = new Gcp.ServiceAccount.IAMMember(\"gce-default-account-iam\", new()\n {\n ServiceAccountId = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Name)),\n Role = \"roles/iam.serviceAccountUser\",\n Member = sa.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := compute.GetDefaultServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMMember(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMMemberArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Allow SA service account use the default GCE account\n\t\t_, err = serviceaccount.NewIAMMember(ctx, \"gce-default-account-iam\", \u0026serviceaccount.IAMMemberArgs{\n\t\t\tServiceAccountId: pulumi.String(_default.Name),\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMember: sa.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetDefaultServiceAccountArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMMember;\nimport com.pulumi.gcp.serviceaccount.IAMMemberArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = ComputeFunctions.getDefaultServiceAccount();\n\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that Jane can use\")\n .build());\n\n var admin_account_iam = new IAMMember(\"admin-account-iam\", IAMMemberArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .member(\"user:jane@example.com\")\n .build());\n\n // Allow SA service account use the default GCE account\n var gce_default_account_iam = new IAMMember(\"gce-default-account-iam\", IAMMemberArgs.builder()\n .serviceAccountId(default_.name())\n .role(\"roles/iam.serviceAccountUser\")\n .member(sa.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMMember\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n member: user:jane@example.com\n # Allow SA service account use the default GCE account\n gce-default-account-iam:\n type: gcp:serviceaccount:IAMMember\n properties:\n serviceAccountId: ${default.name}\n role: roles/iam.serviceAccountUser\n member: serviceAccount:${sa.email}\nvariables:\n default:\n fn::invoke:\n Function: gcp:compute:getDefaultServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Member With IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMMember(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMMember(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMMember(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.ServiceAccount.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMMember(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMMemberArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026serviceaccount.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMMember;\nimport com.pulumi.gcp.serviceaccount.IAMMemberArgs;\nimport com.pulumi.gcp.serviceaccount.inputs.IAMMemberConditionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that Jane can use\")\n .build());\n\n var admin_account_iam = new IAMMember(\"admin-account-iam\", IAMMemberArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMMember\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Importing with conditions:\n\nHere are examples of importing IAM memberships and bindings that include conditions:\n\n```sh\n$ pulumi import gcp:serviceaccount/iAMBinding:IAMBinding admin-account-iam \"projects/{your-project-id}/serviceAccounts/{your-service-account-email} roles/iam.serviceAccountUser expires_after_2019_12_31\"\n```\n\n```sh\n$ pulumi import gcp:serviceaccount/iAMBinding:IAMBinding admin-account-iam \"projects/{your-project-id}/serviceAccounts/{your-service-account-email} roles/iam.serviceAccountUser user:foo@example.com expires_after_2019_12_31\"\n```\n\n", + "description": "When managing IAM roles, you can treat a service account either as a resource or as an identity. This resource is to add iam policy bindings to a service account resource, such as allowing the members to run operations as or modify the service account. To configure permissions for a service account on other GCP resources, use the google_project_iam set of resources.\n\nThree different resources help you manage your IAM policy for a service account. Each of these resources serves a different use case:\n\n* `gcp.serviceaccount.IAMPolicy`: Authoritative. Sets the IAM policy for the service account and replaces any existing policy already attached.\n* `gcp.serviceaccount.IAMBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the service account are preserved.\n* `gcp.serviceaccount.IAMMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the service account are preserved.\n\n\u003e **Note:** `gcp.serviceaccount.IAMPolicy` **cannot** be used in conjunction with `gcp.serviceaccount.IAMBinding` and `gcp.serviceaccount.IAMMember` or they will fight over what your policy should be.\n\n\u003e **Note:** `gcp.serviceaccount.IAMBinding` resources **can be** used in conjunction with `gcp.serviceaccount.IAMMember` resources **only if** they do not grant privilege to the same role.\n\n## Example Usage\n\n### Service Account IAM Policy\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/iam.serviceAccountUser\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that only Jane can interact with\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMPolicy(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/iam.serviceAccountUser\",\n \"members\": [\"user:jane@example.com\"],\n}])\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that only Jane can interact with\")\nadmin_account_iam = gcp.serviceaccount.IAMPolicy(\"admin-account-iam\",\n service_account_id=sa.name,\n policy_data=admin.policy_data)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/iam.serviceAccountUser\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that only Jane can interact with\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMPolicy(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/iam.serviceAccountUser\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that only Jane can interact with\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMPolicy(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMPolicyArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMPolicy;\nimport com.pulumi.gcp.serviceaccount.IAMPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/iam.serviceAccountUser\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that only Jane can interact with\")\n .build());\n\n var admin_account_iam = new IAMPolicy(\"admin-account-iam\", IAMPolicyArgs.builder()\n .serviceAccountId(sa.name())\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that only Jane can interact with\n admin-account-iam:\n type: gcp:serviceaccount:IAMPolicy\n properties:\n serviceAccountId: ${sa.name}\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/iam.serviceAccountUser\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Binding\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that only Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMBinding(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that only Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMBinding(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n members=[\"user:jane@example.com\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that only Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMBinding(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that only Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMBinding(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMBindingArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMBinding;\nimport com.pulumi.gcp.serviceaccount.IAMBindingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that only Jane can use\")\n .build());\n\n var admin_account_iam = new IAMBinding(\"admin-account-iam\", IAMBindingArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that only Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMBinding\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Binding With IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that only Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMBinding(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that only Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMBinding(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that only Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMBinding(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.ServiceAccount.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that only Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMBinding(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMBindingArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026serviceaccount.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMBinding;\nimport com.pulumi.gcp.serviceaccount.IAMBindingArgs;\nimport com.pulumi.gcp.serviceaccount.inputs.IAMBindingConditionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that only Jane can use\")\n .build());\n\n var admin_account_iam = new IAMBinding(\"admin-account-iam\", IAMBindingArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that only Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMBinding\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Member\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.compute.getDefaultServiceAccount({});\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMMember(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n member: \"user:jane@example.com\",\n});\n// Allow SA service account use the default GCE account\nconst gce_default_account_iam = new gcp.serviceaccount.IAMMember(\"gce-default-account-iam\", {\n serviceAccountId: _default.then(_default =\u003e _default.name),\n role: \"roles/iam.serviceAccountUser\",\n member: pulumi.interpolate`serviceAccount:${sa.email}`,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_default_service_account()\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMMember(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n member=\"user:jane@example.com\")\n# Allow SA service account use the default GCE account\ngce_default_account_iam = gcp.serviceaccount.IAMMember(\"gce-default-account-iam\",\n service_account_id=default.name,\n role=\"roles/iam.serviceAccountUser\",\n member=sa.email.apply(lambda email: f\"serviceAccount:{email}\"))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Compute.GetDefaultServiceAccount.Invoke();\n\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMMember(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Member = \"user:jane@example.com\",\n });\n\n // Allow SA service account use the default GCE account\n var gce_default_account_iam = new Gcp.ServiceAccount.IAMMember(\"gce-default-account-iam\", new()\n {\n ServiceAccountId = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Name)),\n Role = \"roles/iam.serviceAccountUser\",\n Member = sa.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := compute.GetDefaultServiceAccount(ctx, \u0026compute.GetDefaultServiceAccountArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMMember(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMMemberArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Allow SA service account use the default GCE account\n\t\t_, err = serviceaccount.NewIAMMember(ctx, \"gce-default-account-iam\", \u0026serviceaccount.IAMMemberArgs{\n\t\t\tServiceAccountId: pulumi.String(_default.Name),\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMember: sa.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetDefaultServiceAccountArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMMember;\nimport com.pulumi.gcp.serviceaccount.IAMMemberArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = ComputeFunctions.getDefaultServiceAccount();\n\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that Jane can use\")\n .build());\n\n var admin_account_iam = new IAMMember(\"admin-account-iam\", IAMMemberArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .member(\"user:jane@example.com\")\n .build());\n\n // Allow SA service account use the default GCE account\n var gce_default_account_iam = new IAMMember(\"gce-default-account-iam\", IAMMemberArgs.builder()\n .serviceAccountId(default_.name())\n .role(\"roles/iam.serviceAccountUser\")\n .member(sa.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMMember\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n member: user:jane@example.com\n # Allow SA service account use the default GCE account\n gce-default-account-iam:\n type: gcp:serviceaccount:IAMMember\n properties:\n serviceAccountId: ${default.name}\n role: roles/iam.serviceAccountUser\n member: serviceAccount:${sa.email}\nvariables:\n default:\n fn::invoke:\n Function: gcp:compute:getDefaultServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Member With IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMMember(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMMember(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMMember(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.ServiceAccount.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMMember(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMMemberArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026serviceaccount.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMMember;\nimport com.pulumi.gcp.serviceaccount.IAMMemberArgs;\nimport com.pulumi.gcp.serviceaccount.inputs.IAMMemberConditionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that Jane can use\")\n .build());\n\n var admin_account_iam = new IAMMember(\"admin-account-iam\", IAMMemberArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMMember\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### Additional Examples\n\n### Service Account IAM Policy\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/iam.serviceAccountUser\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that only Jane can interact with\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMPolicy(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/iam.serviceAccountUser\",\n \"members\": [\"user:jane@example.com\"],\n}])\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that only Jane can interact with\")\nadmin_account_iam = gcp.serviceaccount.IAMPolicy(\"admin-account-iam\",\n service_account_id=sa.name,\n policy_data=admin.policy_data)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/iam.serviceAccountUser\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that only Jane can interact with\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMPolicy(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/iam.serviceAccountUser\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that only Jane can interact with\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMPolicy(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMPolicyArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMPolicy;\nimport com.pulumi.gcp.serviceaccount.IAMPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/iam.serviceAccountUser\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that only Jane can interact with\")\n .build());\n\n var admin_account_iam = new IAMPolicy(\"admin-account-iam\", IAMPolicyArgs.builder()\n .serviceAccountId(sa.name())\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that only Jane can interact with\n admin-account-iam:\n type: gcp:serviceaccount:IAMPolicy\n properties:\n serviceAccountId: ${sa.name}\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/iam.serviceAccountUser\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Binding\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that only Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMBinding(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that only Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMBinding(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n members=[\"user:jane@example.com\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that only Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMBinding(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that only Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMBinding(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMBindingArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMBinding;\nimport com.pulumi.gcp.serviceaccount.IAMBindingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that only Jane can use\")\n .build());\n\n var admin_account_iam = new IAMBinding(\"admin-account-iam\", IAMBindingArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that only Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMBinding\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Binding With IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that only Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMBinding(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that only Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMBinding(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that only Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMBinding(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.ServiceAccount.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that only Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMBinding(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMBindingArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026serviceaccount.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMBinding;\nimport com.pulumi.gcp.serviceaccount.IAMBindingArgs;\nimport com.pulumi.gcp.serviceaccount.inputs.IAMBindingConditionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that only Jane can use\")\n .build());\n\n var admin_account_iam = new IAMBinding(\"admin-account-iam\", IAMBindingArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that only Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMBinding\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Member\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.compute.getDefaultServiceAccount({});\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMMember(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n member: \"user:jane@example.com\",\n});\n// Allow SA service account use the default GCE account\nconst gce_default_account_iam = new gcp.serviceaccount.IAMMember(\"gce-default-account-iam\", {\n serviceAccountId: _default.then(_default =\u003e _default.name),\n role: \"roles/iam.serviceAccountUser\",\n member: pulumi.interpolate`serviceAccount:${sa.email}`,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_default_service_account()\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMMember(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n member=\"user:jane@example.com\")\n# Allow SA service account use the default GCE account\ngce_default_account_iam = gcp.serviceaccount.IAMMember(\"gce-default-account-iam\",\n service_account_id=default.name,\n role=\"roles/iam.serviceAccountUser\",\n member=sa.email.apply(lambda email: f\"serviceAccount:{email}\"))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Compute.GetDefaultServiceAccount.Invoke();\n\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMMember(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Member = \"user:jane@example.com\",\n });\n\n // Allow SA service account use the default GCE account\n var gce_default_account_iam = new Gcp.ServiceAccount.IAMMember(\"gce-default-account-iam\", new()\n {\n ServiceAccountId = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Name)),\n Role = \"roles/iam.serviceAccountUser\",\n Member = sa.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := compute.GetDefaultServiceAccount(ctx, \u0026compute.GetDefaultServiceAccountArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMMember(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMMemberArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Allow SA service account use the default GCE account\n\t\t_, err = serviceaccount.NewIAMMember(ctx, \"gce-default-account-iam\", \u0026serviceaccount.IAMMemberArgs{\n\t\t\tServiceAccountId: pulumi.String(_default.Name),\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMember: sa.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetDefaultServiceAccountArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMMember;\nimport com.pulumi.gcp.serviceaccount.IAMMemberArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = ComputeFunctions.getDefaultServiceAccount();\n\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that Jane can use\")\n .build());\n\n var admin_account_iam = new IAMMember(\"admin-account-iam\", IAMMemberArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .member(\"user:jane@example.com\")\n .build());\n\n // Allow SA service account use the default GCE account\n var gce_default_account_iam = new IAMMember(\"gce-default-account-iam\", IAMMemberArgs.builder()\n .serviceAccountId(default_.name())\n .role(\"roles/iam.serviceAccountUser\")\n .member(sa.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMMember\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n member: user:jane@example.com\n # Allow SA service account use the default GCE account\n gce-default-account-iam:\n type: gcp:serviceaccount:IAMMember\n properties:\n serviceAccountId: ${default.name}\n role: roles/iam.serviceAccountUser\n member: serviceAccount:${sa.email}\nvariables:\n default:\n fn::invoke:\n Function: gcp:compute:getDefaultServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Member With IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMMember(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMMember(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMMember(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.ServiceAccount.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMMember(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMMemberArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026serviceaccount.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMMember;\nimport com.pulumi.gcp.serviceaccount.IAMMemberArgs;\nimport com.pulumi.gcp.serviceaccount.inputs.IAMMemberConditionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that Jane can use\")\n .build());\n\n var admin_account_iam = new IAMMember(\"admin-account-iam\", IAMMemberArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMMember\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Importing with conditions:\n\nHere are examples of importing IAM memberships and bindings that include conditions:\n\n```sh\n$ pulumi import gcp:serviceaccount/iAMBinding:IAMBinding admin-account-iam \"projects/{your-project-id}/serviceAccounts/{your-service-account-email} roles/iam.serviceAccountUser expires_after_2019_12_31\"\n```\n\n```sh\n$ pulumi import gcp:serviceaccount/iAMBinding:IAMBinding admin-account-iam \"projects/{your-project-id}/serviceAccounts/{your-service-account-email} roles/iam.serviceAccountUser user:foo@example.com expires_after_2019_12_31\"\n```\n\n", "properties": { "condition": { "$ref": "#/types/gcp:serviceaccount/IAMBindingCondition:IAMBindingCondition", @@ -246129,7 +246129,7 @@ ] }, "gcp:serviceaccount/iAMMember:IAMMember": { - "description": "When managing IAM roles, you can treat a service account either as a resource or as an identity. This resource is to add iam policy bindings to a service account resource, such as allowing the members to run operations as or modify the service account. To configure permissions for a service account on other GCP resources, use the google_project_iam set of resources.\n\nThree different resources help you manage your IAM policy for a service account. Each of these resources serves a different use case:\n\n* `gcp.serviceaccount.IAMPolicy`: Authoritative. Sets the IAM policy for the service account and replaces any existing policy already attached.\n* `gcp.serviceaccount.IAMBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the service account are preserved.\n* `gcp.serviceaccount.IAMMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the service account are preserved.\n\n\u003e **Note:** `gcp.serviceaccount.IAMPolicy` **cannot** be used in conjunction with `gcp.serviceaccount.IAMBinding` and `gcp.serviceaccount.IAMMember` or they will fight over what your policy should be.\n\n\u003e **Note:** `gcp.serviceaccount.IAMBinding` resources **can be** used in conjunction with `gcp.serviceaccount.IAMMember` resources **only if** they do not grant privilege to the same role.\n\n## Example Usage\n\n### Service Account IAM Policy\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/iam.serviceAccountUser\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that only Jane can interact with\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMPolicy(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/iam.serviceAccountUser\",\n \"members\": [\"user:jane@example.com\"],\n}])\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that only Jane can interact with\")\nadmin_account_iam = gcp.serviceaccount.IAMPolicy(\"admin-account-iam\",\n service_account_id=sa.name,\n policy_data=admin.policy_data)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/iam.serviceAccountUser\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that only Jane can interact with\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMPolicy(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/iam.serviceAccountUser\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that only Jane can interact with\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMPolicy(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMPolicyArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMPolicy;\nimport com.pulumi.gcp.serviceaccount.IAMPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/iam.serviceAccountUser\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that only Jane can interact with\")\n .build());\n\n var admin_account_iam = new IAMPolicy(\"admin-account-iam\", IAMPolicyArgs.builder()\n .serviceAccountId(sa.name())\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that only Jane can interact with\n admin-account-iam:\n type: gcp:serviceaccount:IAMPolicy\n properties:\n serviceAccountId: ${sa.name}\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/iam.serviceAccountUser\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Binding\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that only Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMBinding(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that only Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMBinding(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n members=[\"user:jane@example.com\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that only Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMBinding(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that only Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMBinding(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMBindingArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMBinding;\nimport com.pulumi.gcp.serviceaccount.IAMBindingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that only Jane can use\")\n .build());\n\n var admin_account_iam = new IAMBinding(\"admin-account-iam\", IAMBindingArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that only Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMBinding\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Binding With IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that only Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMBinding(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that only Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMBinding(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that only Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMBinding(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.ServiceAccount.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that only Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMBinding(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMBindingArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026serviceaccount.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMBinding;\nimport com.pulumi.gcp.serviceaccount.IAMBindingArgs;\nimport com.pulumi.gcp.serviceaccount.inputs.IAMBindingConditionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that only Jane can use\")\n .build());\n\n var admin_account_iam = new IAMBinding(\"admin-account-iam\", IAMBindingArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that only Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMBinding\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Member\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.compute.getDefaultServiceAccount({});\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMMember(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n member: \"user:jane@example.com\",\n});\n// Allow SA service account use the default GCE account\nconst gce_default_account_iam = new gcp.serviceaccount.IAMMember(\"gce-default-account-iam\", {\n serviceAccountId: _default.then(_default =\u003e _default.name),\n role: \"roles/iam.serviceAccountUser\",\n member: pulumi.interpolate`serviceAccount:${sa.email}`,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_default_service_account()\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMMember(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n member=\"user:jane@example.com\")\n# Allow SA service account use the default GCE account\ngce_default_account_iam = gcp.serviceaccount.IAMMember(\"gce-default-account-iam\",\n service_account_id=default.name,\n role=\"roles/iam.serviceAccountUser\",\n member=sa.email.apply(lambda email: f\"serviceAccount:{email}\"))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Compute.GetDefaultServiceAccount.Invoke();\n\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMMember(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Member = \"user:jane@example.com\",\n });\n\n // Allow SA service account use the default GCE account\n var gce_default_account_iam = new Gcp.ServiceAccount.IAMMember(\"gce-default-account-iam\", new()\n {\n ServiceAccountId = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Name)),\n Role = \"roles/iam.serviceAccountUser\",\n Member = sa.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := compute.GetDefaultServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMMember(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMMemberArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Allow SA service account use the default GCE account\n\t\t_, err = serviceaccount.NewIAMMember(ctx, \"gce-default-account-iam\", \u0026serviceaccount.IAMMemberArgs{\n\t\t\tServiceAccountId: pulumi.String(_default.Name),\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMember: sa.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetDefaultServiceAccountArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMMember;\nimport com.pulumi.gcp.serviceaccount.IAMMemberArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = ComputeFunctions.getDefaultServiceAccount();\n\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that Jane can use\")\n .build());\n\n var admin_account_iam = new IAMMember(\"admin-account-iam\", IAMMemberArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .member(\"user:jane@example.com\")\n .build());\n\n // Allow SA service account use the default GCE account\n var gce_default_account_iam = new IAMMember(\"gce-default-account-iam\", IAMMemberArgs.builder()\n .serviceAccountId(default_.name())\n .role(\"roles/iam.serviceAccountUser\")\n .member(sa.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMMember\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n member: user:jane@example.com\n # Allow SA service account use the default GCE account\n gce-default-account-iam:\n type: gcp:serviceaccount:IAMMember\n properties:\n serviceAccountId: ${default.name}\n role: roles/iam.serviceAccountUser\n member: serviceAccount:${sa.email}\nvariables:\n default:\n fn::invoke:\n Function: gcp:compute:getDefaultServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Member With IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMMember(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMMember(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMMember(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.ServiceAccount.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMMember(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMMemberArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026serviceaccount.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMMember;\nimport com.pulumi.gcp.serviceaccount.IAMMemberArgs;\nimport com.pulumi.gcp.serviceaccount.inputs.IAMMemberConditionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that Jane can use\")\n .build());\n\n var admin_account_iam = new IAMMember(\"admin-account-iam\", IAMMemberArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMMember\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### Additional Examples\n\n### Service Account IAM Policy\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/iam.serviceAccountUser\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that only Jane can interact with\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMPolicy(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/iam.serviceAccountUser\",\n \"members\": [\"user:jane@example.com\"],\n}])\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that only Jane can interact with\")\nadmin_account_iam = gcp.serviceaccount.IAMPolicy(\"admin-account-iam\",\n service_account_id=sa.name,\n policy_data=admin.policy_data)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/iam.serviceAccountUser\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that only Jane can interact with\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMPolicy(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/iam.serviceAccountUser\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that only Jane can interact with\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMPolicy(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMPolicyArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMPolicy;\nimport com.pulumi.gcp.serviceaccount.IAMPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/iam.serviceAccountUser\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that only Jane can interact with\")\n .build());\n\n var admin_account_iam = new IAMPolicy(\"admin-account-iam\", IAMPolicyArgs.builder()\n .serviceAccountId(sa.name())\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that only Jane can interact with\n admin-account-iam:\n type: gcp:serviceaccount:IAMPolicy\n properties:\n serviceAccountId: ${sa.name}\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/iam.serviceAccountUser\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Binding\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that only Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMBinding(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that only Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMBinding(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n members=[\"user:jane@example.com\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that only Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMBinding(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that only Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMBinding(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMBindingArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMBinding;\nimport com.pulumi.gcp.serviceaccount.IAMBindingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that only Jane can use\")\n .build());\n\n var admin_account_iam = new IAMBinding(\"admin-account-iam\", IAMBindingArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that only Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMBinding\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Binding With IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that only Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMBinding(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that only Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMBinding(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that only Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMBinding(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.ServiceAccount.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that only Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMBinding(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMBindingArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026serviceaccount.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMBinding;\nimport com.pulumi.gcp.serviceaccount.IAMBindingArgs;\nimport com.pulumi.gcp.serviceaccount.inputs.IAMBindingConditionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that only Jane can use\")\n .build());\n\n var admin_account_iam = new IAMBinding(\"admin-account-iam\", IAMBindingArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that only Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMBinding\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Member\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.compute.getDefaultServiceAccount({});\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMMember(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n member: \"user:jane@example.com\",\n});\n// Allow SA service account use the default GCE account\nconst gce_default_account_iam = new gcp.serviceaccount.IAMMember(\"gce-default-account-iam\", {\n serviceAccountId: _default.then(_default =\u003e _default.name),\n role: \"roles/iam.serviceAccountUser\",\n member: pulumi.interpolate`serviceAccount:${sa.email}`,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_default_service_account()\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMMember(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n member=\"user:jane@example.com\")\n# Allow SA service account use the default GCE account\ngce_default_account_iam = gcp.serviceaccount.IAMMember(\"gce-default-account-iam\",\n service_account_id=default.name,\n role=\"roles/iam.serviceAccountUser\",\n member=sa.email.apply(lambda email: f\"serviceAccount:{email}\"))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Compute.GetDefaultServiceAccount.Invoke();\n\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMMember(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Member = \"user:jane@example.com\",\n });\n\n // Allow SA service account use the default GCE account\n var gce_default_account_iam = new Gcp.ServiceAccount.IAMMember(\"gce-default-account-iam\", new()\n {\n ServiceAccountId = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Name)),\n Role = \"roles/iam.serviceAccountUser\",\n Member = sa.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := compute.GetDefaultServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMMember(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMMemberArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Allow SA service account use the default GCE account\n\t\t_, err = serviceaccount.NewIAMMember(ctx, \"gce-default-account-iam\", \u0026serviceaccount.IAMMemberArgs{\n\t\t\tServiceAccountId: pulumi.String(_default.Name),\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMember: sa.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetDefaultServiceAccountArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMMember;\nimport com.pulumi.gcp.serviceaccount.IAMMemberArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = ComputeFunctions.getDefaultServiceAccount();\n\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that Jane can use\")\n .build());\n\n var admin_account_iam = new IAMMember(\"admin-account-iam\", IAMMemberArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .member(\"user:jane@example.com\")\n .build());\n\n // Allow SA service account use the default GCE account\n var gce_default_account_iam = new IAMMember(\"gce-default-account-iam\", IAMMemberArgs.builder()\n .serviceAccountId(default_.name())\n .role(\"roles/iam.serviceAccountUser\")\n .member(sa.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMMember\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n member: user:jane@example.com\n # Allow SA service account use the default GCE account\n gce-default-account-iam:\n type: gcp:serviceaccount:IAMMember\n properties:\n serviceAccountId: ${default.name}\n role: roles/iam.serviceAccountUser\n member: serviceAccount:${sa.email}\nvariables:\n default:\n fn::invoke:\n Function: gcp:compute:getDefaultServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Member With IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMMember(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMMember(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMMember(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.ServiceAccount.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMMember(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMMemberArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026serviceaccount.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMMember;\nimport com.pulumi.gcp.serviceaccount.IAMMemberArgs;\nimport com.pulumi.gcp.serviceaccount.inputs.IAMMemberConditionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that Jane can use\")\n .build());\n\n var admin_account_iam = new IAMMember(\"admin-account-iam\", IAMMemberArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMMember\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Importing with conditions:\n\nHere are examples of importing IAM memberships and bindings that include conditions:\n\n```sh\n$ pulumi import gcp:serviceaccount/iAMMember:IAMMember admin-account-iam \"projects/{your-project-id}/serviceAccounts/{your-service-account-email} roles/iam.serviceAccountUser expires_after_2019_12_31\"\n```\n\n```sh\n$ pulumi import gcp:serviceaccount/iAMMember:IAMMember admin-account-iam \"projects/{your-project-id}/serviceAccounts/{your-service-account-email} roles/iam.serviceAccountUser user:foo@example.com expires_after_2019_12_31\"\n```\n\n", + "description": "When managing IAM roles, you can treat a service account either as a resource or as an identity. This resource is to add iam policy bindings to a service account resource, such as allowing the members to run operations as or modify the service account. To configure permissions for a service account on other GCP resources, use the google_project_iam set of resources.\n\nThree different resources help you manage your IAM policy for a service account. Each of these resources serves a different use case:\n\n* `gcp.serviceaccount.IAMPolicy`: Authoritative. Sets the IAM policy for the service account and replaces any existing policy already attached.\n* `gcp.serviceaccount.IAMBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the service account are preserved.\n* `gcp.serviceaccount.IAMMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the service account are preserved.\n\n\u003e **Note:** `gcp.serviceaccount.IAMPolicy` **cannot** be used in conjunction with `gcp.serviceaccount.IAMBinding` and `gcp.serviceaccount.IAMMember` or they will fight over what your policy should be.\n\n\u003e **Note:** `gcp.serviceaccount.IAMBinding` resources **can be** used in conjunction with `gcp.serviceaccount.IAMMember` resources **only if** they do not grant privilege to the same role.\n\n## Example Usage\n\n### Service Account IAM Policy\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/iam.serviceAccountUser\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that only Jane can interact with\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMPolicy(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/iam.serviceAccountUser\",\n \"members\": [\"user:jane@example.com\"],\n}])\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that only Jane can interact with\")\nadmin_account_iam = gcp.serviceaccount.IAMPolicy(\"admin-account-iam\",\n service_account_id=sa.name,\n policy_data=admin.policy_data)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/iam.serviceAccountUser\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that only Jane can interact with\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMPolicy(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/iam.serviceAccountUser\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that only Jane can interact with\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMPolicy(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMPolicyArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMPolicy;\nimport com.pulumi.gcp.serviceaccount.IAMPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/iam.serviceAccountUser\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that only Jane can interact with\")\n .build());\n\n var admin_account_iam = new IAMPolicy(\"admin-account-iam\", IAMPolicyArgs.builder()\n .serviceAccountId(sa.name())\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that only Jane can interact with\n admin-account-iam:\n type: gcp:serviceaccount:IAMPolicy\n properties:\n serviceAccountId: ${sa.name}\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/iam.serviceAccountUser\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Binding\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that only Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMBinding(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that only Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMBinding(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n members=[\"user:jane@example.com\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that only Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMBinding(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that only Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMBinding(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMBindingArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMBinding;\nimport com.pulumi.gcp.serviceaccount.IAMBindingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that only Jane can use\")\n .build());\n\n var admin_account_iam = new IAMBinding(\"admin-account-iam\", IAMBindingArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that only Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMBinding\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Binding With IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that only Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMBinding(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that only Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMBinding(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that only Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMBinding(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.ServiceAccount.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that only Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMBinding(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMBindingArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026serviceaccount.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMBinding;\nimport com.pulumi.gcp.serviceaccount.IAMBindingArgs;\nimport com.pulumi.gcp.serviceaccount.inputs.IAMBindingConditionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that only Jane can use\")\n .build());\n\n var admin_account_iam = new IAMBinding(\"admin-account-iam\", IAMBindingArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that only Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMBinding\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Member\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.compute.getDefaultServiceAccount({});\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMMember(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n member: \"user:jane@example.com\",\n});\n// Allow SA service account use the default GCE account\nconst gce_default_account_iam = new gcp.serviceaccount.IAMMember(\"gce-default-account-iam\", {\n serviceAccountId: _default.then(_default =\u003e _default.name),\n role: \"roles/iam.serviceAccountUser\",\n member: pulumi.interpolate`serviceAccount:${sa.email}`,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_default_service_account()\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMMember(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n member=\"user:jane@example.com\")\n# Allow SA service account use the default GCE account\ngce_default_account_iam = gcp.serviceaccount.IAMMember(\"gce-default-account-iam\",\n service_account_id=default.name,\n role=\"roles/iam.serviceAccountUser\",\n member=sa.email.apply(lambda email: f\"serviceAccount:{email}\"))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Compute.GetDefaultServiceAccount.Invoke();\n\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMMember(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Member = \"user:jane@example.com\",\n });\n\n // Allow SA service account use the default GCE account\n var gce_default_account_iam = new Gcp.ServiceAccount.IAMMember(\"gce-default-account-iam\", new()\n {\n ServiceAccountId = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Name)),\n Role = \"roles/iam.serviceAccountUser\",\n Member = sa.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := compute.GetDefaultServiceAccount(ctx, \u0026compute.GetDefaultServiceAccountArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMMember(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMMemberArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Allow SA service account use the default GCE account\n\t\t_, err = serviceaccount.NewIAMMember(ctx, \"gce-default-account-iam\", \u0026serviceaccount.IAMMemberArgs{\n\t\t\tServiceAccountId: pulumi.String(_default.Name),\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMember: sa.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetDefaultServiceAccountArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMMember;\nimport com.pulumi.gcp.serviceaccount.IAMMemberArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = ComputeFunctions.getDefaultServiceAccount();\n\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that Jane can use\")\n .build());\n\n var admin_account_iam = new IAMMember(\"admin-account-iam\", IAMMemberArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .member(\"user:jane@example.com\")\n .build());\n\n // Allow SA service account use the default GCE account\n var gce_default_account_iam = new IAMMember(\"gce-default-account-iam\", IAMMemberArgs.builder()\n .serviceAccountId(default_.name())\n .role(\"roles/iam.serviceAccountUser\")\n .member(sa.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMMember\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n member: user:jane@example.com\n # Allow SA service account use the default GCE account\n gce-default-account-iam:\n type: gcp:serviceaccount:IAMMember\n properties:\n serviceAccountId: ${default.name}\n role: roles/iam.serviceAccountUser\n member: serviceAccount:${sa.email}\nvariables:\n default:\n fn::invoke:\n Function: gcp:compute:getDefaultServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Member With IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMMember(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMMember(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMMember(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.ServiceAccount.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMMember(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMMemberArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026serviceaccount.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMMember;\nimport com.pulumi.gcp.serviceaccount.IAMMemberArgs;\nimport com.pulumi.gcp.serviceaccount.inputs.IAMMemberConditionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that Jane can use\")\n .build());\n\n var admin_account_iam = new IAMMember(\"admin-account-iam\", IAMMemberArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMMember\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### Additional Examples\n\n### Service Account IAM Policy\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/iam.serviceAccountUser\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that only Jane can interact with\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMPolicy(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/iam.serviceAccountUser\",\n \"members\": [\"user:jane@example.com\"],\n}])\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that only Jane can interact with\")\nadmin_account_iam = gcp.serviceaccount.IAMPolicy(\"admin-account-iam\",\n service_account_id=sa.name,\n policy_data=admin.policy_data)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/iam.serviceAccountUser\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that only Jane can interact with\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMPolicy(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/iam.serviceAccountUser\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that only Jane can interact with\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMPolicy(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMPolicyArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMPolicy;\nimport com.pulumi.gcp.serviceaccount.IAMPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/iam.serviceAccountUser\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that only Jane can interact with\")\n .build());\n\n var admin_account_iam = new IAMPolicy(\"admin-account-iam\", IAMPolicyArgs.builder()\n .serviceAccountId(sa.name())\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that only Jane can interact with\n admin-account-iam:\n type: gcp:serviceaccount:IAMPolicy\n properties:\n serviceAccountId: ${sa.name}\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/iam.serviceAccountUser\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Binding\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that only Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMBinding(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that only Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMBinding(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n members=[\"user:jane@example.com\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that only Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMBinding(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that only Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMBinding(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMBindingArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMBinding;\nimport com.pulumi.gcp.serviceaccount.IAMBindingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that only Jane can use\")\n .build());\n\n var admin_account_iam = new IAMBinding(\"admin-account-iam\", IAMBindingArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that only Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMBinding\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Binding With IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that only Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMBinding(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that only Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMBinding(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that only Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMBinding(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.ServiceAccount.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that only Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMBinding(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMBindingArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026serviceaccount.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMBinding;\nimport com.pulumi.gcp.serviceaccount.IAMBindingArgs;\nimport com.pulumi.gcp.serviceaccount.inputs.IAMBindingConditionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that only Jane can use\")\n .build());\n\n var admin_account_iam = new IAMBinding(\"admin-account-iam\", IAMBindingArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that only Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMBinding\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Member\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.compute.getDefaultServiceAccount({});\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMMember(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n member: \"user:jane@example.com\",\n});\n// Allow SA service account use the default GCE account\nconst gce_default_account_iam = new gcp.serviceaccount.IAMMember(\"gce-default-account-iam\", {\n serviceAccountId: _default.then(_default =\u003e _default.name),\n role: \"roles/iam.serviceAccountUser\",\n member: pulumi.interpolate`serviceAccount:${sa.email}`,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_default_service_account()\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMMember(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n member=\"user:jane@example.com\")\n# Allow SA service account use the default GCE account\ngce_default_account_iam = gcp.serviceaccount.IAMMember(\"gce-default-account-iam\",\n service_account_id=default.name,\n role=\"roles/iam.serviceAccountUser\",\n member=sa.email.apply(lambda email: f\"serviceAccount:{email}\"))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Compute.GetDefaultServiceAccount.Invoke();\n\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMMember(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Member = \"user:jane@example.com\",\n });\n\n // Allow SA service account use the default GCE account\n var gce_default_account_iam = new Gcp.ServiceAccount.IAMMember(\"gce-default-account-iam\", new()\n {\n ServiceAccountId = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Name)),\n Role = \"roles/iam.serviceAccountUser\",\n Member = sa.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := compute.GetDefaultServiceAccount(ctx, \u0026compute.GetDefaultServiceAccountArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMMember(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMMemberArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Allow SA service account use the default GCE account\n\t\t_, err = serviceaccount.NewIAMMember(ctx, \"gce-default-account-iam\", \u0026serviceaccount.IAMMemberArgs{\n\t\t\tServiceAccountId: pulumi.String(_default.Name),\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMember: sa.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetDefaultServiceAccountArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMMember;\nimport com.pulumi.gcp.serviceaccount.IAMMemberArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = ComputeFunctions.getDefaultServiceAccount();\n\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that Jane can use\")\n .build());\n\n var admin_account_iam = new IAMMember(\"admin-account-iam\", IAMMemberArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .member(\"user:jane@example.com\")\n .build());\n\n // Allow SA service account use the default GCE account\n var gce_default_account_iam = new IAMMember(\"gce-default-account-iam\", IAMMemberArgs.builder()\n .serviceAccountId(default_.name())\n .role(\"roles/iam.serviceAccountUser\")\n .member(sa.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMMember\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n member: user:jane@example.com\n # Allow SA service account use the default GCE account\n gce-default-account-iam:\n type: gcp:serviceaccount:IAMMember\n properties:\n serviceAccountId: ${default.name}\n role: roles/iam.serviceAccountUser\n member: serviceAccount:${sa.email}\nvariables:\n default:\n fn::invoke:\n Function: gcp:compute:getDefaultServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Member With IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMMember(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMMember(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMMember(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.ServiceAccount.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMMember(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMMemberArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026serviceaccount.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMMember;\nimport com.pulumi.gcp.serviceaccount.IAMMemberArgs;\nimport com.pulumi.gcp.serviceaccount.inputs.IAMMemberConditionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that Jane can use\")\n .build());\n\n var admin_account_iam = new IAMMember(\"admin-account-iam\", IAMMemberArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMMember\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Importing with conditions:\n\nHere are examples of importing IAM memberships and bindings that include conditions:\n\n```sh\n$ pulumi import gcp:serviceaccount/iAMMember:IAMMember admin-account-iam \"projects/{your-project-id}/serviceAccounts/{your-service-account-email} roles/iam.serviceAccountUser expires_after_2019_12_31\"\n```\n\n```sh\n$ pulumi import gcp:serviceaccount/iAMMember:IAMMember admin-account-iam \"projects/{your-project-id}/serviceAccounts/{your-service-account-email} roles/iam.serviceAccountUser user:foo@example.com expires_after_2019_12_31\"\n```\n\n", "properties": { "condition": { "$ref": "#/types/gcp:serviceaccount/IAMMemberCondition:IAMMemberCondition", @@ -246222,7 +246222,7 @@ ] }, "gcp:serviceaccount/iAMPolicy:IAMPolicy": { - "description": "When managing IAM roles, you can treat a service account either as a resource or as an identity. This resource is to add iam policy bindings to a service account resource, such as allowing the members to run operations as or modify the service account. To configure permissions for a service account on other GCP resources, use the google_project_iam set of resources.\n\nThree different resources help you manage your IAM policy for a service account. Each of these resources serves a different use case:\n\n* `gcp.serviceaccount.IAMPolicy`: Authoritative. Sets the IAM policy for the service account and replaces any existing policy already attached.\n* `gcp.serviceaccount.IAMBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the service account are preserved.\n* `gcp.serviceaccount.IAMMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the service account are preserved.\n\n\u003e **Note:** `gcp.serviceaccount.IAMPolicy` **cannot** be used in conjunction with `gcp.serviceaccount.IAMBinding` and `gcp.serviceaccount.IAMMember` or they will fight over what your policy should be.\n\n\u003e **Note:** `gcp.serviceaccount.IAMBinding` resources **can be** used in conjunction with `gcp.serviceaccount.IAMMember` resources **only if** they do not grant privilege to the same role.\n\n## Example Usage\n\n### Service Account IAM Policy\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/iam.serviceAccountUser\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that only Jane can interact with\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMPolicy(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/iam.serviceAccountUser\",\n \"members\": [\"user:jane@example.com\"],\n}])\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that only Jane can interact with\")\nadmin_account_iam = gcp.serviceaccount.IAMPolicy(\"admin-account-iam\",\n service_account_id=sa.name,\n policy_data=admin.policy_data)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/iam.serviceAccountUser\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that only Jane can interact with\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMPolicy(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/iam.serviceAccountUser\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that only Jane can interact with\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMPolicy(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMPolicyArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMPolicy;\nimport com.pulumi.gcp.serviceaccount.IAMPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/iam.serviceAccountUser\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that only Jane can interact with\")\n .build());\n\n var admin_account_iam = new IAMPolicy(\"admin-account-iam\", IAMPolicyArgs.builder()\n .serviceAccountId(sa.name())\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that only Jane can interact with\n admin-account-iam:\n type: gcp:serviceaccount:IAMPolicy\n properties:\n serviceAccountId: ${sa.name}\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/iam.serviceAccountUser\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Binding\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that only Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMBinding(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that only Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMBinding(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n members=[\"user:jane@example.com\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that only Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMBinding(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that only Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMBinding(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMBindingArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMBinding;\nimport com.pulumi.gcp.serviceaccount.IAMBindingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that only Jane can use\")\n .build());\n\n var admin_account_iam = new IAMBinding(\"admin-account-iam\", IAMBindingArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that only Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMBinding\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Binding With IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that only Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMBinding(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that only Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMBinding(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that only Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMBinding(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.ServiceAccount.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that only Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMBinding(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMBindingArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026serviceaccount.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMBinding;\nimport com.pulumi.gcp.serviceaccount.IAMBindingArgs;\nimport com.pulumi.gcp.serviceaccount.inputs.IAMBindingConditionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that only Jane can use\")\n .build());\n\n var admin_account_iam = new IAMBinding(\"admin-account-iam\", IAMBindingArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that only Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMBinding\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Member\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.compute.getDefaultServiceAccount({});\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMMember(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n member: \"user:jane@example.com\",\n});\n// Allow SA service account use the default GCE account\nconst gce_default_account_iam = new gcp.serviceaccount.IAMMember(\"gce-default-account-iam\", {\n serviceAccountId: _default.then(_default =\u003e _default.name),\n role: \"roles/iam.serviceAccountUser\",\n member: pulumi.interpolate`serviceAccount:${sa.email}`,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_default_service_account()\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMMember(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n member=\"user:jane@example.com\")\n# Allow SA service account use the default GCE account\ngce_default_account_iam = gcp.serviceaccount.IAMMember(\"gce-default-account-iam\",\n service_account_id=default.name,\n role=\"roles/iam.serviceAccountUser\",\n member=sa.email.apply(lambda email: f\"serviceAccount:{email}\"))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Compute.GetDefaultServiceAccount.Invoke();\n\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMMember(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Member = \"user:jane@example.com\",\n });\n\n // Allow SA service account use the default GCE account\n var gce_default_account_iam = new Gcp.ServiceAccount.IAMMember(\"gce-default-account-iam\", new()\n {\n ServiceAccountId = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Name)),\n Role = \"roles/iam.serviceAccountUser\",\n Member = sa.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := compute.GetDefaultServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMMember(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMMemberArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Allow SA service account use the default GCE account\n\t\t_, err = serviceaccount.NewIAMMember(ctx, \"gce-default-account-iam\", \u0026serviceaccount.IAMMemberArgs{\n\t\t\tServiceAccountId: pulumi.String(_default.Name),\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMember: sa.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetDefaultServiceAccountArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMMember;\nimport com.pulumi.gcp.serviceaccount.IAMMemberArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = ComputeFunctions.getDefaultServiceAccount();\n\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that Jane can use\")\n .build());\n\n var admin_account_iam = new IAMMember(\"admin-account-iam\", IAMMemberArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .member(\"user:jane@example.com\")\n .build());\n\n // Allow SA service account use the default GCE account\n var gce_default_account_iam = new IAMMember(\"gce-default-account-iam\", IAMMemberArgs.builder()\n .serviceAccountId(default_.name())\n .role(\"roles/iam.serviceAccountUser\")\n .member(sa.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMMember\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n member: user:jane@example.com\n # Allow SA service account use the default GCE account\n gce-default-account-iam:\n type: gcp:serviceaccount:IAMMember\n properties:\n serviceAccountId: ${default.name}\n role: roles/iam.serviceAccountUser\n member: serviceAccount:${sa.email}\nvariables:\n default:\n fn::invoke:\n Function: gcp:compute:getDefaultServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Member With IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMMember(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMMember(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMMember(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.ServiceAccount.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMMember(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMMemberArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026serviceaccount.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMMember;\nimport com.pulumi.gcp.serviceaccount.IAMMemberArgs;\nimport com.pulumi.gcp.serviceaccount.inputs.IAMMemberConditionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that Jane can use\")\n .build());\n\n var admin_account_iam = new IAMMember(\"admin-account-iam\", IAMMemberArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMMember\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### Additional Examples\n\n### Service Account IAM Policy\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/iam.serviceAccountUser\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that only Jane can interact with\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMPolicy(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/iam.serviceAccountUser\",\n \"members\": [\"user:jane@example.com\"],\n}])\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that only Jane can interact with\")\nadmin_account_iam = gcp.serviceaccount.IAMPolicy(\"admin-account-iam\",\n service_account_id=sa.name,\n policy_data=admin.policy_data)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/iam.serviceAccountUser\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that only Jane can interact with\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMPolicy(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/iam.serviceAccountUser\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that only Jane can interact with\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMPolicy(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMPolicyArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMPolicy;\nimport com.pulumi.gcp.serviceaccount.IAMPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/iam.serviceAccountUser\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that only Jane can interact with\")\n .build());\n\n var admin_account_iam = new IAMPolicy(\"admin-account-iam\", IAMPolicyArgs.builder()\n .serviceAccountId(sa.name())\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that only Jane can interact with\n admin-account-iam:\n type: gcp:serviceaccount:IAMPolicy\n properties:\n serviceAccountId: ${sa.name}\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/iam.serviceAccountUser\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Binding\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that only Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMBinding(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that only Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMBinding(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n members=[\"user:jane@example.com\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that only Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMBinding(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that only Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMBinding(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMBindingArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMBinding;\nimport com.pulumi.gcp.serviceaccount.IAMBindingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that only Jane can use\")\n .build());\n\n var admin_account_iam = new IAMBinding(\"admin-account-iam\", IAMBindingArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that only Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMBinding\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Binding With IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that only Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMBinding(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that only Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMBinding(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that only Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMBinding(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.ServiceAccount.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that only Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMBinding(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMBindingArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026serviceaccount.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMBinding;\nimport com.pulumi.gcp.serviceaccount.IAMBindingArgs;\nimport com.pulumi.gcp.serviceaccount.inputs.IAMBindingConditionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that only Jane can use\")\n .build());\n\n var admin_account_iam = new IAMBinding(\"admin-account-iam\", IAMBindingArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that only Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMBinding\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Member\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.compute.getDefaultServiceAccount({});\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMMember(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n member: \"user:jane@example.com\",\n});\n// Allow SA service account use the default GCE account\nconst gce_default_account_iam = new gcp.serviceaccount.IAMMember(\"gce-default-account-iam\", {\n serviceAccountId: _default.then(_default =\u003e _default.name),\n role: \"roles/iam.serviceAccountUser\",\n member: pulumi.interpolate`serviceAccount:${sa.email}`,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_default_service_account()\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMMember(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n member=\"user:jane@example.com\")\n# Allow SA service account use the default GCE account\ngce_default_account_iam = gcp.serviceaccount.IAMMember(\"gce-default-account-iam\",\n service_account_id=default.name,\n role=\"roles/iam.serviceAccountUser\",\n member=sa.email.apply(lambda email: f\"serviceAccount:{email}\"))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Compute.GetDefaultServiceAccount.Invoke();\n\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMMember(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Member = \"user:jane@example.com\",\n });\n\n // Allow SA service account use the default GCE account\n var gce_default_account_iam = new Gcp.ServiceAccount.IAMMember(\"gce-default-account-iam\", new()\n {\n ServiceAccountId = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Name)),\n Role = \"roles/iam.serviceAccountUser\",\n Member = sa.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := compute.GetDefaultServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMMember(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMMemberArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Allow SA service account use the default GCE account\n\t\t_, err = serviceaccount.NewIAMMember(ctx, \"gce-default-account-iam\", \u0026serviceaccount.IAMMemberArgs{\n\t\t\tServiceAccountId: pulumi.String(_default.Name),\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMember: sa.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetDefaultServiceAccountArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMMember;\nimport com.pulumi.gcp.serviceaccount.IAMMemberArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = ComputeFunctions.getDefaultServiceAccount();\n\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that Jane can use\")\n .build());\n\n var admin_account_iam = new IAMMember(\"admin-account-iam\", IAMMemberArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .member(\"user:jane@example.com\")\n .build());\n\n // Allow SA service account use the default GCE account\n var gce_default_account_iam = new IAMMember(\"gce-default-account-iam\", IAMMemberArgs.builder()\n .serviceAccountId(default_.name())\n .role(\"roles/iam.serviceAccountUser\")\n .member(sa.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMMember\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n member: user:jane@example.com\n # Allow SA service account use the default GCE account\n gce-default-account-iam:\n type: gcp:serviceaccount:IAMMember\n properties:\n serviceAccountId: ${default.name}\n role: roles/iam.serviceAccountUser\n member: serviceAccount:${sa.email}\nvariables:\n default:\n fn::invoke:\n Function: gcp:compute:getDefaultServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Member With IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMMember(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMMember(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMMember(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.ServiceAccount.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMMember(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMMemberArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026serviceaccount.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMMember;\nimport com.pulumi.gcp.serviceaccount.IAMMemberArgs;\nimport com.pulumi.gcp.serviceaccount.inputs.IAMMemberConditionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that Jane can use\")\n .build());\n\n var admin_account_iam = new IAMMember(\"admin-account-iam\", IAMMemberArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMMember\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Importing with conditions:\n\nHere are examples of importing IAM memberships and bindings that include conditions:\n\n```sh\n$ pulumi import gcp:serviceaccount/iAMPolicy:IAMPolicy admin-account-iam \"projects/{your-project-id}/serviceAccounts/{your-service-account-email} roles/iam.serviceAccountUser expires_after_2019_12_31\"\n```\n\n```sh\n$ pulumi import gcp:serviceaccount/iAMPolicy:IAMPolicy admin-account-iam \"projects/{your-project-id}/serviceAccounts/{your-service-account-email} roles/iam.serviceAccountUser user:foo@example.com expires_after_2019_12_31\"\n```\n\n", + "description": "When managing IAM roles, you can treat a service account either as a resource or as an identity. This resource is to add iam policy bindings to a service account resource, such as allowing the members to run operations as or modify the service account. To configure permissions for a service account on other GCP resources, use the google_project_iam set of resources.\n\nThree different resources help you manage your IAM policy for a service account. Each of these resources serves a different use case:\n\n* `gcp.serviceaccount.IAMPolicy`: Authoritative. Sets the IAM policy for the service account and replaces any existing policy already attached.\n* `gcp.serviceaccount.IAMBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the service account are preserved.\n* `gcp.serviceaccount.IAMMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the service account are preserved.\n\n\u003e **Note:** `gcp.serviceaccount.IAMPolicy` **cannot** be used in conjunction with `gcp.serviceaccount.IAMBinding` and `gcp.serviceaccount.IAMMember` or they will fight over what your policy should be.\n\n\u003e **Note:** `gcp.serviceaccount.IAMBinding` resources **can be** used in conjunction with `gcp.serviceaccount.IAMMember` resources **only if** they do not grant privilege to the same role.\n\n## Example Usage\n\n### Service Account IAM Policy\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/iam.serviceAccountUser\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that only Jane can interact with\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMPolicy(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/iam.serviceAccountUser\",\n \"members\": [\"user:jane@example.com\"],\n}])\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that only Jane can interact with\")\nadmin_account_iam = gcp.serviceaccount.IAMPolicy(\"admin-account-iam\",\n service_account_id=sa.name,\n policy_data=admin.policy_data)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/iam.serviceAccountUser\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that only Jane can interact with\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMPolicy(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/iam.serviceAccountUser\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that only Jane can interact with\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMPolicy(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMPolicyArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMPolicy;\nimport com.pulumi.gcp.serviceaccount.IAMPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/iam.serviceAccountUser\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that only Jane can interact with\")\n .build());\n\n var admin_account_iam = new IAMPolicy(\"admin-account-iam\", IAMPolicyArgs.builder()\n .serviceAccountId(sa.name())\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that only Jane can interact with\n admin-account-iam:\n type: gcp:serviceaccount:IAMPolicy\n properties:\n serviceAccountId: ${sa.name}\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/iam.serviceAccountUser\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Binding\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that only Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMBinding(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that only Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMBinding(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n members=[\"user:jane@example.com\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that only Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMBinding(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that only Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMBinding(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMBindingArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMBinding;\nimport com.pulumi.gcp.serviceaccount.IAMBindingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that only Jane can use\")\n .build());\n\n var admin_account_iam = new IAMBinding(\"admin-account-iam\", IAMBindingArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that only Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMBinding\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Binding With IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that only Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMBinding(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that only Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMBinding(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that only Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMBinding(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.ServiceAccount.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that only Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMBinding(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMBindingArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026serviceaccount.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMBinding;\nimport com.pulumi.gcp.serviceaccount.IAMBindingArgs;\nimport com.pulumi.gcp.serviceaccount.inputs.IAMBindingConditionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that only Jane can use\")\n .build());\n\n var admin_account_iam = new IAMBinding(\"admin-account-iam\", IAMBindingArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that only Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMBinding\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Member\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.compute.getDefaultServiceAccount({});\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMMember(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n member: \"user:jane@example.com\",\n});\n// Allow SA service account use the default GCE account\nconst gce_default_account_iam = new gcp.serviceaccount.IAMMember(\"gce-default-account-iam\", {\n serviceAccountId: _default.then(_default =\u003e _default.name),\n role: \"roles/iam.serviceAccountUser\",\n member: pulumi.interpolate`serviceAccount:${sa.email}`,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_default_service_account()\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMMember(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n member=\"user:jane@example.com\")\n# Allow SA service account use the default GCE account\ngce_default_account_iam = gcp.serviceaccount.IAMMember(\"gce-default-account-iam\",\n service_account_id=default.name,\n role=\"roles/iam.serviceAccountUser\",\n member=sa.email.apply(lambda email: f\"serviceAccount:{email}\"))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Compute.GetDefaultServiceAccount.Invoke();\n\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMMember(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Member = \"user:jane@example.com\",\n });\n\n // Allow SA service account use the default GCE account\n var gce_default_account_iam = new Gcp.ServiceAccount.IAMMember(\"gce-default-account-iam\", new()\n {\n ServiceAccountId = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Name)),\n Role = \"roles/iam.serviceAccountUser\",\n Member = sa.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := compute.GetDefaultServiceAccount(ctx, \u0026compute.GetDefaultServiceAccountArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMMember(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMMemberArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Allow SA service account use the default GCE account\n\t\t_, err = serviceaccount.NewIAMMember(ctx, \"gce-default-account-iam\", \u0026serviceaccount.IAMMemberArgs{\n\t\t\tServiceAccountId: pulumi.String(_default.Name),\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMember: sa.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetDefaultServiceAccountArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMMember;\nimport com.pulumi.gcp.serviceaccount.IAMMemberArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = ComputeFunctions.getDefaultServiceAccount();\n\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that Jane can use\")\n .build());\n\n var admin_account_iam = new IAMMember(\"admin-account-iam\", IAMMemberArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .member(\"user:jane@example.com\")\n .build());\n\n // Allow SA service account use the default GCE account\n var gce_default_account_iam = new IAMMember(\"gce-default-account-iam\", IAMMemberArgs.builder()\n .serviceAccountId(default_.name())\n .role(\"roles/iam.serviceAccountUser\")\n .member(sa.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMMember\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n member: user:jane@example.com\n # Allow SA service account use the default GCE account\n gce-default-account-iam:\n type: gcp:serviceaccount:IAMMember\n properties:\n serviceAccountId: ${default.name}\n role: roles/iam.serviceAccountUser\n member: serviceAccount:${sa.email}\nvariables:\n default:\n fn::invoke:\n Function: gcp:compute:getDefaultServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Member With IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMMember(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMMember(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMMember(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.ServiceAccount.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMMember(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMMemberArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026serviceaccount.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMMember;\nimport com.pulumi.gcp.serviceaccount.IAMMemberArgs;\nimport com.pulumi.gcp.serviceaccount.inputs.IAMMemberConditionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that Jane can use\")\n .build());\n\n var admin_account_iam = new IAMMember(\"admin-account-iam\", IAMMemberArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMMember\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### Additional Examples\n\n### Service Account IAM Policy\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst admin = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/iam.serviceAccountUser\",\n members: [\"user:jane@example.com\"],\n }],\n});\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that only Jane can interact with\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMPolicy(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n policyData: admin.then(admin =\u003e admin.policyData),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nadmin = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/iam.serviceAccountUser\",\n \"members\": [\"user:jane@example.com\"],\n}])\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that only Jane can interact with\")\nadmin_account_iam = gcp.serviceaccount.IAMPolicy(\"admin-account-iam\",\n service_account_id=sa.name,\n policy_data=admin.policy_data)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var admin = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/iam.serviceAccountUser\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n },\n },\n });\n\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that only Jane can interact with\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMPolicy(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n PolicyData = admin.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tadmin, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/iam.serviceAccountUser\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"user:jane@example.com\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that only Jane can interact with\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMPolicy(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMPolicyArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tPolicyData: pulumi.String(admin.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMPolicy;\nimport com.pulumi.gcp.serviceaccount.IAMPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var admin = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/iam.serviceAccountUser\")\n .members(\"user:jane@example.com\")\n .build())\n .build());\n\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that only Jane can interact with\")\n .build());\n\n var admin_account_iam = new IAMPolicy(\"admin-account-iam\", IAMPolicyArgs.builder()\n .serviceAccountId(sa.name())\n .policyData(admin.applyValue(getIAMPolicyResult -\u003e getIAMPolicyResult.policyData()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that only Jane can interact with\n admin-account-iam:\n type: gcp:serviceaccount:IAMPolicy\n properties:\n serviceAccountId: ${sa.name}\n policyData: ${admin.policyData}\nvariables:\n admin:\n fn::invoke:\n Function: gcp:organizations:getIAMPolicy\n Arguments:\n bindings:\n - role: roles/iam.serviceAccountUser\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Binding\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that only Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMBinding(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n members: [\"user:jane@example.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that only Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMBinding(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n members=[\"user:jane@example.com\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that only Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMBinding(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that only Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMBinding(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMBindingArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMBinding;\nimport com.pulumi.gcp.serviceaccount.IAMBindingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that only Jane can use\")\n .build());\n\n var admin_account_iam = new IAMBinding(\"admin-account-iam\", IAMBindingArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .members(\"user:jane@example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that only Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMBinding\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n members:\n - user:jane@example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Binding With IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that only Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMBinding(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n members: [\"user:jane@example.com\"],\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that only Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMBinding(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n members=[\"user:jane@example.com\"],\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that only Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMBinding(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Members = new[]\n {\n \"user:jane@example.com\",\n },\n Condition = new Gcp.ServiceAccount.Inputs.IAMBindingConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that only Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMBinding(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMBindingArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:jane@example.com\"),\n\t\t\t},\n\t\t\tCondition: \u0026serviceaccount.IAMBindingConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMBinding;\nimport com.pulumi.gcp.serviceaccount.IAMBindingArgs;\nimport com.pulumi.gcp.serviceaccount.inputs.IAMBindingConditionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that only Jane can use\")\n .build());\n\n var admin_account_iam = new IAMBinding(\"admin-account-iam\", IAMBindingArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .members(\"user:jane@example.com\")\n .condition(IAMBindingConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that only Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMBinding\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n members:\n - user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Member\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.compute.getDefaultServiceAccount({});\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMMember(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n member: \"user:jane@example.com\",\n});\n// Allow SA service account use the default GCE account\nconst gce_default_account_iam = new gcp.serviceaccount.IAMMember(\"gce-default-account-iam\", {\n serviceAccountId: _default.then(_default =\u003e _default.name),\n role: \"roles/iam.serviceAccountUser\",\n member: pulumi.interpolate`serviceAccount:${sa.email}`,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_default_service_account()\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMMember(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n member=\"user:jane@example.com\")\n# Allow SA service account use the default GCE account\ngce_default_account_iam = gcp.serviceaccount.IAMMember(\"gce-default-account-iam\",\n service_account_id=default.name,\n role=\"roles/iam.serviceAccountUser\",\n member=sa.email.apply(lambda email: f\"serviceAccount:{email}\"))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Compute.GetDefaultServiceAccount.Invoke();\n\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMMember(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Member = \"user:jane@example.com\",\n });\n\n // Allow SA service account use the default GCE account\n var gce_default_account_iam = new Gcp.ServiceAccount.IAMMember(\"gce-default-account-iam\", new()\n {\n ServiceAccountId = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Name)),\n Role = \"roles/iam.serviceAccountUser\",\n Member = sa.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := compute.GetDefaultServiceAccount(ctx, \u0026compute.GetDefaultServiceAccountArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMMember(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMMemberArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Allow SA service account use the default GCE account\n\t\t_, err = serviceaccount.NewIAMMember(ctx, \"gce-default-account-iam\", \u0026serviceaccount.IAMMemberArgs{\n\t\t\tServiceAccountId: pulumi.String(_default.Name),\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMember: sa.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetDefaultServiceAccountArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMMember;\nimport com.pulumi.gcp.serviceaccount.IAMMemberArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = ComputeFunctions.getDefaultServiceAccount();\n\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that Jane can use\")\n .build());\n\n var admin_account_iam = new IAMMember(\"admin-account-iam\", IAMMemberArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .member(\"user:jane@example.com\")\n .build());\n\n // Allow SA service account use the default GCE account\n var gce_default_account_iam = new IAMMember(\"gce-default-account-iam\", IAMMemberArgs.builder()\n .serviceAccountId(default_.name())\n .role(\"roles/iam.serviceAccountUser\")\n .member(sa.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMMember\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n member: user:jane@example.com\n # Allow SA service account use the default GCE account\n gce-default-account-iam:\n type: gcp:serviceaccount:IAMMember\n properties:\n serviceAccountId: ${default.name}\n role: roles/iam.serviceAccountUser\n member: serviceAccount:${sa.email}\nvariables:\n default:\n fn::invoke:\n Function: gcp:compute:getDefaultServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Service Account IAM Member With IAM Conditions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"my-service-account\",\n displayName: \"A service account that Jane can use\",\n});\nconst admin_account_iam = new gcp.serviceaccount.IAMMember(\"admin-account-iam\", {\n serviceAccountId: sa.name,\n role: \"roles/iam.serviceAccountUser\",\n member: \"user:jane@example.com\",\n condition: {\n title: \"expires_after_2019_12_31\",\n description: \"Expiring at midnight of 2019-12-31\",\n expression: \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"my-service-account\",\n display_name=\"A service account that Jane can use\")\nadmin_account_iam = gcp.serviceaccount.IAMMember(\"admin-account-iam\",\n service_account_id=sa.name,\n role=\"roles/iam.serviceAccountUser\",\n member=\"user:jane@example.com\",\n condition={\n \"title\": \"expires_after_2019_12_31\",\n \"description\": \"Expiring at midnight of 2019-12-31\",\n \"expression\": \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"my-service-account\",\n DisplayName = \"A service account that Jane can use\",\n });\n\n var admin_account_iam = new Gcp.ServiceAccount.IAMMember(\"admin-account-iam\", new()\n {\n ServiceAccountId = sa.Name,\n Role = \"roles/iam.serviceAccountUser\",\n Member = \"user:jane@example.com\",\n Condition = new Gcp.ServiceAccount.Inputs.IAMMemberConditionArgs\n {\n Title = \"expires_after_2019_12_31\",\n Description = \"Expiring at midnight of 2019-12-31\",\n Expression = \"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-service-account\"),\n\t\t\tDisplayName: pulumi.String(\"A service account that Jane can use\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewIAMMember(ctx, \"admin-account-iam\", \u0026serviceaccount.IAMMemberArgs{\n\t\t\tServiceAccountId: sa.Name,\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountUser\"),\n\t\t\tMember: pulumi.String(\"user:jane@example.com\"),\n\t\t\tCondition: \u0026serviceaccount.IAMMemberConditionArgs{\n\t\t\t\tTitle: pulumi.String(\"expires_after_2019_12_31\"),\n\t\t\t\tDescription: pulumi.String(\"Expiring at midnight of 2019-12-31\"),\n\t\t\t\tExpression: pulumi.String(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.serviceaccount.IAMMember;\nimport com.pulumi.gcp.serviceaccount.IAMMemberArgs;\nimport com.pulumi.gcp.serviceaccount.inputs.IAMMemberConditionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"my-service-account\")\n .displayName(\"A service account that Jane can use\")\n .build());\n\n var admin_account_iam = new IAMMember(\"admin-account-iam\", IAMMemberArgs.builder()\n .serviceAccountId(sa.name())\n .role(\"roles/iam.serviceAccountUser\")\n .member(\"user:jane@example.com\")\n .condition(IAMMemberConditionArgs.builder()\n .title(\"expires_after_2019_12_31\")\n .description(\"Expiring at midnight of 2019-12-31\")\n .expression(\"request.time \u003c timestamp(\\\"2020-01-01T00:00:00Z\\\")\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-service-account\n displayName: A service account that Jane can use\n admin-account-iam:\n type: gcp:serviceaccount:IAMMember\n properties:\n serviceAccountId: ${sa.name}\n role: roles/iam.serviceAccountUser\n member: user:jane@example.com\n condition:\n title: expires_after_2019_12_31\n description: Expiring at midnight of 2019-12-31\n expression: request.time \u003c timestamp(\"2020-01-01T00:00:00Z\")\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\n### Importing with conditions:\n\nHere are examples of importing IAM memberships and bindings that include conditions:\n\n```sh\n$ pulumi import gcp:serviceaccount/iAMPolicy:IAMPolicy admin-account-iam \"projects/{your-project-id}/serviceAccounts/{your-service-account-email} roles/iam.serviceAccountUser expires_after_2019_12_31\"\n```\n\n```sh\n$ pulumi import gcp:serviceaccount/iAMPolicy:IAMPolicy admin-account-iam \"projects/{your-project-id}/serviceAccounts/{your-service-account-email} roles/iam.serviceAccountUser user:foo@example.com expires_after_2019_12_31\"\n```\n\n", "properties": { "etag": { "type": "string", @@ -246449,7 +246449,7 @@ ] }, "gcp:servicedirectory/endpoint:Endpoint": { - "description": "An individual endpoint that provides a service.\n\nTo get more information about Endpoint, see:\n\n* [API documentation](https://cloud.google.com/service-directory/docs/reference/rest/v1beta1/projects.locations.namespaces.services.endpoints)\n* How-to Guides\n * [Configuring an endpoint](https://cloud.google.com/service-directory/docs/configuring-service-directory#configuring_an_endpoint)\n\n## Example Usage\n\n### Service Directory Endpoint 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.servicedirectory.Namespace(\"example\", {\n namespaceId: \"example-namespace\",\n location: \"us-central1\",\n});\nconst exampleService = new gcp.servicedirectory.Service(\"example\", {\n serviceId: \"example-service\",\n namespace: example.id,\n});\nconst exampleEndpoint = new gcp.servicedirectory.Endpoint(\"example\", {\n endpointId: \"example-endpoint\",\n service: exampleService.id,\n metadata: {\n stage: \"prod\",\n region: \"us-central1\",\n },\n address: \"1.2.3.4\",\n port: 5353,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.servicedirectory.Namespace(\"example\",\n namespace_id=\"example-namespace\",\n location=\"us-central1\")\nexample_service = gcp.servicedirectory.Service(\"example\",\n service_id=\"example-service\",\n namespace=example.id)\nexample_endpoint = gcp.servicedirectory.Endpoint(\"example\",\n endpoint_id=\"example-endpoint\",\n service=example_service.id,\n metadata={\n \"stage\": \"prod\",\n \"region\": \"us-central1\",\n },\n address=\"1.2.3.4\",\n port=5353)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.ServiceDirectory.Namespace(\"example\", new()\n {\n NamespaceId = \"example-namespace\",\n Location = \"us-central1\",\n });\n\n var exampleService = new Gcp.ServiceDirectory.Service(\"example\", new()\n {\n ServiceId = \"example-service\",\n Namespace = example.Id,\n });\n\n var exampleEndpoint = new Gcp.ServiceDirectory.Endpoint(\"example\", new()\n {\n EndpointId = \"example-endpoint\",\n Service = exampleService.Id,\n Metadata = \n {\n { \"stage\", \"prod\" },\n { \"region\", \"us-central1\" },\n },\n Address = \"1.2.3.4\",\n Port = 5353,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicedirectory\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := servicedirectory.NewNamespace(ctx, \"example\", \u0026servicedirectory.NamespaceArgs{\n\t\t\tNamespaceId: pulumi.String(\"example-namespace\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleService, err := servicedirectory.NewService(ctx, \"example\", \u0026servicedirectory.ServiceArgs{\n\t\t\tServiceId: pulumi.String(\"example-service\"),\n\t\t\tNamespace: example.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = servicedirectory.NewEndpoint(ctx, \"example\", \u0026servicedirectory.EndpointArgs{\n\t\t\tEndpointId: pulumi.String(\"example-endpoint\"),\n\t\t\tService: exampleService.ID(),\n\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\"stage\": pulumi.String(\"prod\"),\n\t\t\t\t\"region\": pulumi.String(\"us-central1\"),\n\t\t\t},\n\t\t\tAddress: pulumi.String(\"1.2.3.4\"),\n\t\t\tPort: pulumi.Int(5353),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.servicedirectory.Namespace;\nimport com.pulumi.gcp.servicedirectory.NamespaceArgs;\nimport com.pulumi.gcp.servicedirectory.Service;\nimport com.pulumi.gcp.servicedirectory.ServiceArgs;\nimport com.pulumi.gcp.servicedirectory.Endpoint;\nimport com.pulumi.gcp.servicedirectory.EndpointArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Namespace(\"example\", NamespaceArgs.builder()\n .namespaceId(\"example-namespace\")\n .location(\"us-central1\")\n .build());\n\n var exampleService = new Service(\"exampleService\", ServiceArgs.builder()\n .serviceId(\"example-service\")\n .namespace(example.id())\n .build());\n\n var exampleEndpoint = new Endpoint(\"exampleEndpoint\", EndpointArgs.builder()\n .endpointId(\"example-endpoint\")\n .service(exampleService.id())\n .metadata(Map.ofEntries(\n Map.entry(\"stage\", \"prod\"),\n Map.entry(\"region\", \"us-central1\")\n ))\n .address(\"1.2.3.4\")\n .port(5353)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:servicedirectory:Namespace\n properties:\n namespaceId: example-namespace\n location: us-central1\n exampleService:\n type: gcp:servicedirectory:Service\n name: example\n properties:\n serviceId: example-service\n namespace: ${example.id}\n exampleEndpoint:\n type: gcp:servicedirectory:Endpoint\n name: example\n properties:\n endpointId: example-endpoint\n service: ${exampleService.id}\n metadata:\n stage: prod\n region: us-central1\n address: 1.2.3.4\n port: 5353\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Service Directory Endpoint With Network\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example = new gcp.compute.Network(\"example\", {name: \"example-network\"});\nconst exampleNamespace = new gcp.servicedirectory.Namespace(\"example\", {\n namespaceId: \"example-namespace\",\n location: \"us-central1\",\n});\nconst exampleService = new gcp.servicedirectory.Service(\"example\", {\n serviceId: \"example-service\",\n namespace: exampleNamespace.id,\n});\nconst exampleEndpoint = new gcp.servicedirectory.Endpoint(\"example\", {\n endpointId: \"example-endpoint\",\n service: exampleService.id,\n metadata: {\n stage: \"prod\",\n region: \"us-central1\",\n },\n network: pulumi.all([project, example.name]).apply(([project, name]) =\u003e `projects/${project.number}/locations/global/networks/${name}`),\n address: \"1.2.3.4\",\n port: 5353,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample = gcp.compute.Network(\"example\", name=\"example-network\")\nexample_namespace = gcp.servicedirectory.Namespace(\"example\",\n namespace_id=\"example-namespace\",\n location=\"us-central1\")\nexample_service = gcp.servicedirectory.Service(\"example\",\n service_id=\"example-service\",\n namespace=example_namespace.id)\nexample_endpoint = gcp.servicedirectory.Endpoint(\"example\",\n endpoint_id=\"example-endpoint\",\n service=example_service.id,\n metadata={\n \"stage\": \"prod\",\n \"region\": \"us-central1\",\n },\n network=example.name.apply(lambda name: f\"projects/{project.number}/locations/global/networks/{name}\"),\n address=\"1.2.3.4\",\n port=5353)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var example = new Gcp.Compute.Network(\"example\", new()\n {\n Name = \"example-network\",\n });\n\n var exampleNamespace = new Gcp.ServiceDirectory.Namespace(\"example\", new()\n {\n NamespaceId = \"example-namespace\",\n Location = \"us-central1\",\n });\n\n var exampleService = new Gcp.ServiceDirectory.Service(\"example\", new()\n {\n ServiceId = \"example-service\",\n Namespace = exampleNamespace.Id,\n });\n\n var exampleEndpoint = new Gcp.ServiceDirectory.Endpoint(\"example\", new()\n {\n EndpointId = \"example-endpoint\",\n Service = exampleService.Id,\n Metadata = \n {\n { \"stage\", \"prod\" },\n { \"region\", \"us-central1\" },\n },\n Network = Output.Tuple(project, example.Name).Apply(values =\u003e\n {\n var project = values.Item1;\n var name = values.Item2;\n return $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/locations/global/networks/{name}\";\n }),\n Address = \"1.2.3.4\",\n Port = 5353,\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/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicedirectory\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := compute.NewNetwork(ctx, \"example\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"example-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleNamespace, err := servicedirectory.NewNamespace(ctx, \"example\", \u0026servicedirectory.NamespaceArgs{\n\t\t\tNamespaceId: pulumi.String(\"example-namespace\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleService, err := servicedirectory.NewService(ctx, \"example\", \u0026servicedirectory.ServiceArgs{\n\t\t\tServiceId: pulumi.String(\"example-service\"),\n\t\t\tNamespace: exampleNamespace.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = servicedirectory.NewEndpoint(ctx, \"example\", \u0026servicedirectory.EndpointArgs{\n\t\t\tEndpointId: pulumi.String(\"example-endpoint\"),\n\t\t\tService: exampleService.ID(),\n\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\"stage\": pulumi.String(\"prod\"),\n\t\t\t\t\"region\": pulumi.String(\"us-central1\"),\n\t\t\t},\n\t\t\tNetwork: example.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/%v/locations/global/networks/%v\", project.Number, name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tAddress: pulumi.String(\"1.2.3.4\"),\n\t\t\tPort: pulumi.Int(5353),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.servicedirectory.Namespace;\nimport com.pulumi.gcp.servicedirectory.NamespaceArgs;\nimport com.pulumi.gcp.servicedirectory.Service;\nimport com.pulumi.gcp.servicedirectory.ServiceArgs;\nimport com.pulumi.gcp.servicedirectory.Endpoint;\nimport com.pulumi.gcp.servicedirectory.EndpointArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var example = new Network(\"example\", NetworkArgs.builder()\n .name(\"example-network\")\n .build());\n\n var exampleNamespace = new Namespace(\"exampleNamespace\", NamespaceArgs.builder()\n .namespaceId(\"example-namespace\")\n .location(\"us-central1\")\n .build());\n\n var exampleService = new Service(\"exampleService\", ServiceArgs.builder()\n .serviceId(\"example-service\")\n .namespace(exampleNamespace.id())\n .build());\n\n var exampleEndpoint = new Endpoint(\"exampleEndpoint\", EndpointArgs.builder()\n .endpointId(\"example-endpoint\")\n .service(exampleService.id())\n .metadata(Map.ofEntries(\n Map.entry(\"stage\", \"prod\"),\n Map.entry(\"region\", \"us-central1\")\n ))\n .network(example.name().applyValue(name -\u003e String.format(\"projects/%s/locations/global/networks/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number()),name)))\n .address(\"1.2.3.4\")\n .port(5353)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:compute:Network\n properties:\n name: example-network\n exampleNamespace:\n type: gcp:servicedirectory:Namespace\n name: example\n properties:\n namespaceId: example-namespace\n location: us-central1\n exampleService:\n type: gcp:servicedirectory:Service\n name: example\n properties:\n serviceId: example-service\n namespace: ${exampleNamespace.id}\n exampleEndpoint:\n type: gcp:servicedirectory:Endpoint\n name: example\n properties:\n endpointId: example-endpoint\n service: ${exampleService.id}\n metadata:\n stage: prod\n region: us-central1\n network: projects/${project.number}/locations/global/networks/${example.name}\n address: 1.2.3.4\n port: 5353\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nEndpoint can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/namespaces/{{namespace_id}}/services/{{service_id}}/endpoints/{{endpoint_id}}`\n\n* `{{project}}/{{location}}/{{namespace_id}}/{{service_id}}/{{endpoint_id}}`\n\n* `{{location}}/{{namespace_id}}/{{service_id}}/{{endpoint_id}}`\n\nWhen using the `pulumi import` command, Endpoint can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:servicedirectory/endpoint:Endpoint default projects/{{project}}/locations/{{location}}/namespaces/{{namespace_id}}/services/{{service_id}}/endpoints/{{endpoint_id}}\n```\n\n```sh\n$ pulumi import gcp:servicedirectory/endpoint:Endpoint default {{project}}/{{location}}/{{namespace_id}}/{{service_id}}/{{endpoint_id}}\n```\n\n```sh\n$ pulumi import gcp:servicedirectory/endpoint:Endpoint default {{location}}/{{namespace_id}}/{{service_id}}/{{endpoint_id}}\n```\n\n", + "description": "An individual endpoint that provides a service.\n\nTo get more information about Endpoint, see:\n\n* [API documentation](https://cloud.google.com/service-directory/docs/reference/rest/v1beta1/projects.locations.namespaces.services.endpoints)\n* How-to Guides\n * [Configuring an endpoint](https://cloud.google.com/service-directory/docs/configuring-service-directory#configuring_an_endpoint)\n\n## Example Usage\n\n### Service Directory Endpoint 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.servicedirectory.Namespace(\"example\", {\n namespaceId: \"example-namespace\",\n location: \"us-central1\",\n});\nconst exampleService = new gcp.servicedirectory.Service(\"example\", {\n serviceId: \"example-service\",\n namespace: example.id,\n});\nconst exampleEndpoint = new gcp.servicedirectory.Endpoint(\"example\", {\n endpointId: \"example-endpoint\",\n service: exampleService.id,\n metadata: {\n stage: \"prod\",\n region: \"us-central1\",\n },\n address: \"1.2.3.4\",\n port: 5353,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample = gcp.servicedirectory.Namespace(\"example\",\n namespace_id=\"example-namespace\",\n location=\"us-central1\")\nexample_service = gcp.servicedirectory.Service(\"example\",\n service_id=\"example-service\",\n namespace=example.id)\nexample_endpoint = gcp.servicedirectory.Endpoint(\"example\",\n endpoint_id=\"example-endpoint\",\n service=example_service.id,\n metadata={\n \"stage\": \"prod\",\n \"region\": \"us-central1\",\n },\n address=\"1.2.3.4\",\n port=5353)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new Gcp.ServiceDirectory.Namespace(\"example\", new()\n {\n NamespaceId = \"example-namespace\",\n Location = \"us-central1\",\n });\n\n var exampleService = new Gcp.ServiceDirectory.Service(\"example\", new()\n {\n ServiceId = \"example-service\",\n Namespace = example.Id,\n });\n\n var exampleEndpoint = new Gcp.ServiceDirectory.Endpoint(\"example\", new()\n {\n EndpointId = \"example-endpoint\",\n Service = exampleService.Id,\n Metadata = \n {\n { \"stage\", \"prod\" },\n { \"region\", \"us-central1\" },\n },\n Address = \"1.2.3.4\",\n Port = 5353,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicedirectory\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texample, err := servicedirectory.NewNamespace(ctx, \"example\", \u0026servicedirectory.NamespaceArgs{\n\t\t\tNamespaceId: pulumi.String(\"example-namespace\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleService, err := servicedirectory.NewService(ctx, \"example\", \u0026servicedirectory.ServiceArgs{\n\t\t\tServiceId: pulumi.String(\"example-service\"),\n\t\t\tNamespace: example.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = servicedirectory.NewEndpoint(ctx, \"example\", \u0026servicedirectory.EndpointArgs{\n\t\t\tEndpointId: pulumi.String(\"example-endpoint\"),\n\t\t\tService: exampleService.ID(),\n\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\"stage\": pulumi.String(\"prod\"),\n\t\t\t\t\"region\": pulumi.String(\"us-central1\"),\n\t\t\t},\n\t\t\tAddress: pulumi.String(\"1.2.3.4\"),\n\t\t\tPort: pulumi.Int(5353),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.servicedirectory.Namespace;\nimport com.pulumi.gcp.servicedirectory.NamespaceArgs;\nimport com.pulumi.gcp.servicedirectory.Service;\nimport com.pulumi.gcp.servicedirectory.ServiceArgs;\nimport com.pulumi.gcp.servicedirectory.Endpoint;\nimport com.pulumi.gcp.servicedirectory.EndpointArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new Namespace(\"example\", NamespaceArgs.builder()\n .namespaceId(\"example-namespace\")\n .location(\"us-central1\")\n .build());\n\n var exampleService = new Service(\"exampleService\", ServiceArgs.builder()\n .serviceId(\"example-service\")\n .namespace(example.id())\n .build());\n\n var exampleEndpoint = new Endpoint(\"exampleEndpoint\", EndpointArgs.builder()\n .endpointId(\"example-endpoint\")\n .service(exampleService.id())\n .metadata(Map.ofEntries(\n Map.entry(\"stage\", \"prod\"),\n Map.entry(\"region\", \"us-central1\")\n ))\n .address(\"1.2.3.4\")\n .port(5353)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:servicedirectory:Namespace\n properties:\n namespaceId: example-namespace\n location: us-central1\n exampleService:\n type: gcp:servicedirectory:Service\n name: example\n properties:\n serviceId: example-service\n namespace: ${example.id}\n exampleEndpoint:\n type: gcp:servicedirectory:Endpoint\n name: example\n properties:\n endpointId: example-endpoint\n service: ${exampleService.id}\n metadata:\n stage: prod\n region: us-central1\n address: 1.2.3.4\n port: 5353\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Service Directory Endpoint With Network\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example = new gcp.compute.Network(\"example\", {name: \"example-network\"});\nconst exampleNamespace = new gcp.servicedirectory.Namespace(\"example\", {\n namespaceId: \"example-namespace\",\n location: \"us-central1\",\n});\nconst exampleService = new gcp.servicedirectory.Service(\"example\", {\n serviceId: \"example-service\",\n namespace: exampleNamespace.id,\n});\nconst exampleEndpoint = new gcp.servicedirectory.Endpoint(\"example\", {\n endpointId: \"example-endpoint\",\n service: exampleService.id,\n metadata: {\n stage: \"prod\",\n region: \"us-central1\",\n },\n network: pulumi.all([project, example.name]).apply(([project, name]) =\u003e `projects/${project.number}/locations/global/networks/${name}`),\n address: \"1.2.3.4\",\n port: 5353,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample = gcp.compute.Network(\"example\", name=\"example-network\")\nexample_namespace = gcp.servicedirectory.Namespace(\"example\",\n namespace_id=\"example-namespace\",\n location=\"us-central1\")\nexample_service = gcp.servicedirectory.Service(\"example\",\n service_id=\"example-service\",\n namespace=example_namespace.id)\nexample_endpoint = gcp.servicedirectory.Endpoint(\"example\",\n endpoint_id=\"example-endpoint\",\n service=example_service.id,\n metadata={\n \"stage\": \"prod\",\n \"region\": \"us-central1\",\n },\n network=example.name.apply(lambda name: f\"projects/{project.number}/locations/global/networks/{name}\"),\n address=\"1.2.3.4\",\n port=5353)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var example = new Gcp.Compute.Network(\"example\", new()\n {\n Name = \"example-network\",\n });\n\n var exampleNamespace = new Gcp.ServiceDirectory.Namespace(\"example\", new()\n {\n NamespaceId = \"example-namespace\",\n Location = \"us-central1\",\n });\n\n var exampleService = new Gcp.ServiceDirectory.Service(\"example\", new()\n {\n ServiceId = \"example-service\",\n Namespace = exampleNamespace.Id,\n });\n\n var exampleEndpoint = new Gcp.ServiceDirectory.Endpoint(\"example\", new()\n {\n EndpointId = \"example-endpoint\",\n Service = exampleService.Id,\n Metadata = \n {\n { \"stage\", \"prod\" },\n { \"region\", \"us-central1\" },\n },\n Network = Output.Tuple(project, example.Name).Apply(values =\u003e\n {\n var project = values.Item1;\n var name = values.Item2;\n return $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/locations/global/networks/{name}\";\n }),\n Address = \"1.2.3.4\",\n Port = 5353,\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/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicedirectory\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := compute.NewNetwork(ctx, \"example\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"example-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleNamespace, err := servicedirectory.NewNamespace(ctx, \"example\", \u0026servicedirectory.NamespaceArgs{\n\t\t\tNamespaceId: pulumi.String(\"example-namespace\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleService, err := servicedirectory.NewService(ctx, \"example\", \u0026servicedirectory.ServiceArgs{\n\t\t\tServiceId: pulumi.String(\"example-service\"),\n\t\t\tNamespace: exampleNamespace.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = servicedirectory.NewEndpoint(ctx, \"example\", \u0026servicedirectory.EndpointArgs{\n\t\t\tEndpointId: pulumi.String(\"example-endpoint\"),\n\t\t\tService: exampleService.ID(),\n\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\"stage\": pulumi.String(\"prod\"),\n\t\t\t\t\"region\": pulumi.String(\"us-central1\"),\n\t\t\t},\n\t\t\tNetwork: example.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/%v/locations/global/networks/%v\", project.Number, name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tAddress: pulumi.String(\"1.2.3.4\"),\n\t\t\tPort: pulumi.Int(5353),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.servicedirectory.Namespace;\nimport com.pulumi.gcp.servicedirectory.NamespaceArgs;\nimport com.pulumi.gcp.servicedirectory.Service;\nimport com.pulumi.gcp.servicedirectory.ServiceArgs;\nimport com.pulumi.gcp.servicedirectory.Endpoint;\nimport com.pulumi.gcp.servicedirectory.EndpointArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var example = new Network(\"example\", NetworkArgs.builder()\n .name(\"example-network\")\n .build());\n\n var exampleNamespace = new Namespace(\"exampleNamespace\", NamespaceArgs.builder()\n .namespaceId(\"example-namespace\")\n .location(\"us-central1\")\n .build());\n\n var exampleService = new Service(\"exampleService\", ServiceArgs.builder()\n .serviceId(\"example-service\")\n .namespace(exampleNamespace.id())\n .build());\n\n var exampleEndpoint = new Endpoint(\"exampleEndpoint\", EndpointArgs.builder()\n .endpointId(\"example-endpoint\")\n .service(exampleService.id())\n .metadata(Map.ofEntries(\n Map.entry(\"stage\", \"prod\"),\n Map.entry(\"region\", \"us-central1\")\n ))\n .network(example.name().applyValue(name -\u003e String.format(\"projects/%s/locations/global/networks/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number()),name)))\n .address(\"1.2.3.4\")\n .port(5353)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: gcp:compute:Network\n properties:\n name: example-network\n exampleNamespace:\n type: gcp:servicedirectory:Namespace\n name: example\n properties:\n namespaceId: example-namespace\n location: us-central1\n exampleService:\n type: gcp:servicedirectory:Service\n name: example\n properties:\n serviceId: example-service\n namespace: ${exampleNamespace.id}\n exampleEndpoint:\n type: gcp:servicedirectory:Endpoint\n name: example\n properties:\n endpointId: example-endpoint\n service: ${exampleService.id}\n metadata:\n stage: prod\n region: us-central1\n network: projects/${project.number}/locations/global/networks/${example.name}\n address: 1.2.3.4\n port: 5353\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nEndpoint can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/namespaces/{{namespace_id}}/services/{{service_id}}/endpoints/{{endpoint_id}}`\n\n* `{{project}}/{{location}}/{{namespace_id}}/{{service_id}}/{{endpoint_id}}`\n\n* `{{location}}/{{namespace_id}}/{{service_id}}/{{endpoint_id}}`\n\nWhen using the `pulumi import` command, Endpoint can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:servicedirectory/endpoint:Endpoint default projects/{{project}}/locations/{{location}}/namespaces/{{namespace_id}}/services/{{service_id}}/endpoints/{{endpoint_id}}\n```\n\n```sh\n$ pulumi import gcp:servicedirectory/endpoint:Endpoint default {{project}}/{{location}}/{{namespace_id}}/{{service_id}}/{{endpoint_id}}\n```\n\n```sh\n$ pulumi import gcp:servicedirectory/endpoint:Endpoint default {{location}}/{{namespace_id}}/{{service_id}}/{{endpoint_id}}\n```\n\n", "properties": { "address": { "type": "string", @@ -248085,7 +248085,7 @@ } }, "gcp:spanner/backupSchedule:BackupSchedule": { - "description": "A backup schedule for a Cloud Spanner Database.\nThis resource is owned by the database it is backing up, and is deleted along with the database.\nThe actual backups are not though.\n\n\nTo get more information about BackupSchedule, see:\n\n* [API documentation](https://cloud.google.com/spanner/docs/reference/rest/v1/projects.instances.databases.backupSchedules)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/spanner/docs/backup)\n\n\u003e **Warning:** This resource creates a Spanner Backup Schedule on a project that already has\na Spanner database.\nThis resource is owned by the database it is backing up, and is deleted along\nwith the database. The actual backups are not though.\n\n## Example Usage\n\n### Spanner Backup Schedule Daily Full\n\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.spanner.Instance(\"main\", {\n name: \"instance-id\",\n config: \"regional-europe-west1\",\n displayName: \"main-instance\",\n numNodes: 1,\n});\nconst database = new gcp.spanner.Database(\"database\", {\n instance: main.name,\n name: \"database-id\",\n versionRetentionPeriod: \"3d\",\n ddls: [\n \"CREATE TABLE t1 (t1 INT64 NOT NULL,) PRIMARY KEY(t1)\",\n \"CREATE TABLE t2 (t2 INT64 NOT NULL,) PRIMARY KEY(t2)\",\n ],\n deletionProtection: true,\n});\nconst full_backup = new gcp.spanner.BackupSchedule(\"full-backup\", {\n instance: main.name,\n database: database.name,\n name: \"backup-schedule-id\",\n retentionDuration: \"31620000s\",\n spec: {\n cronSpec: {\n text: \"0 12 * * *\",\n },\n },\n fullBackupSpec: {},\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmain = gcp.spanner.Instance(\"main\",\n name=\"instance-id\",\n config=\"regional-europe-west1\",\n display_name=\"main-instance\",\n num_nodes=1)\ndatabase = gcp.spanner.Database(\"database\",\n instance=main.name,\n name=\"database-id\",\n version_retention_period=\"3d\",\n ddls=[\n \"CREATE TABLE t1 (t1 INT64 NOT NULL,) PRIMARY KEY(t1)\",\n \"CREATE TABLE t2 (t2 INT64 NOT NULL,) PRIMARY KEY(t2)\",\n ],\n deletion_protection=True)\nfull_backup = gcp.spanner.BackupSchedule(\"full-backup\",\n instance=main.name,\n database=database.name,\n name=\"backup-schedule-id\",\n retention_duration=\"31620000s\",\n spec={\n \"cron_spec\": {\n \"text\": \"0 12 * * *\",\n },\n },\n full_backup_spec={})\n```\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.Spanner.Instance(\"main\", new()\n {\n Name = \"instance-id\",\n Config = \"regional-europe-west1\",\n DisplayName = \"main-instance\",\n NumNodes = 1,\n });\n\n var database = new Gcp.Spanner.Database(\"database\", new()\n {\n Instance = main.Name,\n Name = \"database-id\",\n VersionRetentionPeriod = \"3d\",\n Ddls = new[]\n {\n \"CREATE TABLE t1 (t1 INT64 NOT NULL,) PRIMARY KEY(t1)\",\n \"CREATE TABLE t2 (t2 INT64 NOT NULL,) PRIMARY KEY(t2)\",\n },\n DeletionProtection = true,\n });\n\n var full_backup = new Gcp.Spanner.BackupSchedule(\"full-backup\", new()\n {\n Instance = main.Name,\n Database = database.Name,\n Name = \"backup-schedule-id\",\n RetentionDuration = \"31620000s\",\n Spec = new Gcp.Spanner.Inputs.BackupScheduleSpecArgs\n {\n CronSpec = new Gcp.Spanner.Inputs.BackupScheduleSpecCronSpecArgs\n {\n Text = \"0 12 * * *\",\n },\n },\n FullBackupSpec = null,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/spanner\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := spanner.NewInstance(ctx, \"main\", \u0026spanner.InstanceArgs{\n\t\t\tName: pulumi.String(\"instance-id\"),\n\t\t\tConfig: pulumi.String(\"regional-europe-west1\"),\n\t\t\tDisplayName: pulumi.String(\"main-instance\"),\n\t\t\tNumNodes: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdatabase, err := spanner.NewDatabase(ctx, \"database\", \u0026spanner.DatabaseArgs{\n\t\t\tInstance: main.Name,\n\t\t\tName: pulumi.String(\"database-id\"),\n\t\t\tVersionRetentionPeriod: pulumi.String(\"3d\"),\n\t\t\tDdls: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"CREATE TABLE t1 (t1 INT64 NOT NULL,) PRIMARY KEY(t1)\"),\n\t\t\t\tpulumi.String(\"CREATE TABLE t2 (t2 INT64 NOT NULL,) PRIMARY KEY(t2)\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = spanner.NewBackupSchedule(ctx, \"full-backup\", \u0026spanner.BackupScheduleArgs{\n\t\t\tInstance: main.Name,\n\t\t\tDatabase: database.Name,\n\t\t\tName: pulumi.String(\"backup-schedule-id\"),\n\t\t\tRetentionDuration: pulumi.String(\"31620000s\"),\n\t\t\tSpec: \u0026spanner.BackupScheduleSpecArgs{\n\t\t\t\tCronSpec: \u0026spanner.BackupScheduleSpecCronSpecArgs{\n\t\t\t\t\tText: pulumi.String(\"0 12 * * *\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFullBackupSpec: nil,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.spanner.Instance;\nimport com.pulumi.gcp.spanner.InstanceArgs;\nimport com.pulumi.gcp.spanner.Database;\nimport com.pulumi.gcp.spanner.DatabaseArgs;\nimport com.pulumi.gcp.spanner.BackupSchedule;\nimport com.pulumi.gcp.spanner.BackupScheduleArgs;\nimport com.pulumi.gcp.spanner.inputs.BackupScheduleSpecArgs;\nimport com.pulumi.gcp.spanner.inputs.BackupScheduleSpecCronSpecArgs;\nimport com.pulumi.gcp.spanner.inputs.BackupScheduleFullBackupSpecArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 Instance(\"main\", InstanceArgs.builder()\n .name(\"instance-id\")\n .config(\"regional-europe-west1\")\n .displayName(\"main-instance\")\n .numNodes(1)\n .build());\n\n var database = new Database(\"database\", DatabaseArgs.builder()\n .instance(main.name())\n .name(\"database-id\")\n .versionRetentionPeriod(\"3d\")\n .ddls( \n \"CREATE TABLE t1 (t1 INT64 NOT NULL,) PRIMARY KEY(t1)\",\n \"CREATE TABLE t2 (t2 INT64 NOT NULL,) PRIMARY KEY(t2)\")\n .deletionProtection(\"true\")\n .build());\n\n var full_backup = new BackupSchedule(\"full-backup\", BackupScheduleArgs.builder()\n .instance(main.name())\n .database(database.name())\n .name(\"backup-schedule-id\")\n .retentionDuration(\"31620000s\")\n .spec(BackupScheduleSpecArgs.builder()\n .cronSpec(BackupScheduleSpecCronSpecArgs.builder()\n .text(\"0 12 * * *\")\n .build())\n .build())\n .fullBackupSpec()\n .build());\n\n }\n}\n```\n```yaml\nresources:\n main:\n type: gcp:spanner:Instance\n properties:\n name: instance-id\n config: regional-europe-west1\n displayName: main-instance\n numNodes: 1\n database:\n type: gcp:spanner:Database\n properties:\n instance: ${main.name}\n name: database-id\n versionRetentionPeriod: 3d\n ddls:\n - CREATE TABLE t1 (t1 INT64 NOT NULL,) PRIMARY KEY(t1)\n - CREATE TABLE t2 (t2 INT64 NOT NULL,) PRIMARY KEY(t2)\n deletionProtection: 'true'\n full-backup:\n type: gcp:spanner:BackupSchedule\n properties:\n instance: ${main.name}\n database: ${database.name}\n name: backup-schedule-id\n retentionDuration: 31620000s\n spec:\n cronSpec:\n text: 0 12 * * *\n fullBackupSpec: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Spanner Backup Schedule Daily Incremental\n\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.spanner.Instance(\"main\", {\n name: \"instance-id\",\n config: \"regional-europe-west1\",\n displayName: \"main-instance\",\n numNodes: 1,\n});\nconst database = new gcp.spanner.Database(\"database\", {\n instance: main.name,\n name: \"database-id\",\n versionRetentionPeriod: \"3d\",\n ddls: [\n \"CREATE TABLE t1 (t1 INT64 NOT NULL,) PRIMARY KEY(t1)\",\n \"CREATE TABLE t2 (t2 INT64 NOT NULL,) PRIMARY KEY(t2)\",\n ],\n deletionProtection: true,\n});\nconst incremental_backup = new gcp.spanner.BackupSchedule(\"incremental-backup\", {\n instance: main.name,\n database: database.name,\n name: \"backup-schedule-id\",\n retentionDuration: \"31620000s\",\n spec: {\n cronSpec: {\n text: \"0 12 * * *\",\n },\n },\n incrementalBackupSpec: {},\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmain = gcp.spanner.Instance(\"main\",\n name=\"instance-id\",\n config=\"regional-europe-west1\",\n display_name=\"main-instance\",\n num_nodes=1)\ndatabase = gcp.spanner.Database(\"database\",\n instance=main.name,\n name=\"database-id\",\n version_retention_period=\"3d\",\n ddls=[\n \"CREATE TABLE t1 (t1 INT64 NOT NULL,) PRIMARY KEY(t1)\",\n \"CREATE TABLE t2 (t2 INT64 NOT NULL,) PRIMARY KEY(t2)\",\n ],\n deletion_protection=True)\nincremental_backup = gcp.spanner.BackupSchedule(\"incremental-backup\",\n instance=main.name,\n database=database.name,\n name=\"backup-schedule-id\",\n retention_duration=\"31620000s\",\n spec={\n \"cron_spec\": {\n \"text\": \"0 12 * * *\",\n },\n },\n incremental_backup_spec={})\n```\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.Spanner.Instance(\"main\", new()\n {\n Name = \"instance-id\",\n Config = \"regional-europe-west1\",\n DisplayName = \"main-instance\",\n NumNodes = 1,\n });\n\n var database = new Gcp.Spanner.Database(\"database\", new()\n {\n Instance = main.Name,\n Name = \"database-id\",\n VersionRetentionPeriod = \"3d\",\n Ddls = new[]\n {\n \"CREATE TABLE t1 (t1 INT64 NOT NULL,) PRIMARY KEY(t1)\",\n \"CREATE TABLE t2 (t2 INT64 NOT NULL,) PRIMARY KEY(t2)\",\n },\n DeletionProtection = true,\n });\n\n var incremental_backup = new Gcp.Spanner.BackupSchedule(\"incremental-backup\", new()\n {\n Instance = main.Name,\n Database = database.Name,\n Name = \"backup-schedule-id\",\n RetentionDuration = \"31620000s\",\n Spec = new Gcp.Spanner.Inputs.BackupScheduleSpecArgs\n {\n CronSpec = new Gcp.Spanner.Inputs.BackupScheduleSpecCronSpecArgs\n {\n Text = \"0 12 * * *\",\n },\n },\n IncrementalBackupSpec = null,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/spanner\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := spanner.NewInstance(ctx, \"main\", \u0026spanner.InstanceArgs{\n\t\t\tName: pulumi.String(\"instance-id\"),\n\t\t\tConfig: pulumi.String(\"regional-europe-west1\"),\n\t\t\tDisplayName: pulumi.String(\"main-instance\"),\n\t\t\tNumNodes: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdatabase, err := spanner.NewDatabase(ctx, \"database\", \u0026spanner.DatabaseArgs{\n\t\t\tInstance: main.Name,\n\t\t\tName: pulumi.String(\"database-id\"),\n\t\t\tVersionRetentionPeriod: pulumi.String(\"3d\"),\n\t\t\tDdls: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"CREATE TABLE t1 (t1 INT64 NOT NULL,) PRIMARY KEY(t1)\"),\n\t\t\t\tpulumi.String(\"CREATE TABLE t2 (t2 INT64 NOT NULL,) PRIMARY KEY(t2)\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = spanner.NewBackupSchedule(ctx, \"incremental-backup\", \u0026spanner.BackupScheduleArgs{\n\t\t\tInstance: main.Name,\n\t\t\tDatabase: database.Name,\n\t\t\tName: pulumi.String(\"backup-schedule-id\"),\n\t\t\tRetentionDuration: pulumi.String(\"31620000s\"),\n\t\t\tSpec: \u0026spanner.BackupScheduleSpecArgs{\n\t\t\t\tCronSpec: \u0026spanner.BackupScheduleSpecCronSpecArgs{\n\t\t\t\t\tText: pulumi.String(\"0 12 * * *\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tIncrementalBackupSpec: nil,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.spanner.Instance;\nimport com.pulumi.gcp.spanner.InstanceArgs;\nimport com.pulumi.gcp.spanner.Database;\nimport com.pulumi.gcp.spanner.DatabaseArgs;\nimport com.pulumi.gcp.spanner.BackupSchedule;\nimport com.pulumi.gcp.spanner.BackupScheduleArgs;\nimport com.pulumi.gcp.spanner.inputs.BackupScheduleSpecArgs;\nimport com.pulumi.gcp.spanner.inputs.BackupScheduleSpecCronSpecArgs;\nimport com.pulumi.gcp.spanner.inputs.BackupScheduleIncrementalBackupSpecArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 Instance(\"main\", InstanceArgs.builder()\n .name(\"instance-id\")\n .config(\"regional-europe-west1\")\n .displayName(\"main-instance\")\n .numNodes(1)\n .build());\n\n var database = new Database(\"database\", DatabaseArgs.builder()\n .instance(main.name())\n .name(\"database-id\")\n .versionRetentionPeriod(\"3d\")\n .ddls( \n \"CREATE TABLE t1 (t1 INT64 NOT NULL,) PRIMARY KEY(t1)\",\n \"CREATE TABLE t2 (t2 INT64 NOT NULL,) PRIMARY KEY(t2)\")\n .deletionProtection(\"true\")\n .build());\n\n var incremental_backup = new BackupSchedule(\"incremental-backup\", BackupScheduleArgs.builder()\n .instance(main.name())\n .database(database.name())\n .name(\"backup-schedule-id\")\n .retentionDuration(\"31620000s\")\n .spec(BackupScheduleSpecArgs.builder()\n .cronSpec(BackupScheduleSpecCronSpecArgs.builder()\n .text(\"0 12 * * *\")\n .build())\n .build())\n .incrementalBackupSpec()\n .build());\n\n }\n}\n```\n```yaml\nresources:\n main:\n type: gcp:spanner:Instance\n properties:\n name: instance-id\n config: regional-europe-west1\n displayName: main-instance\n numNodes: 1\n database:\n type: gcp:spanner:Database\n properties:\n instance: ${main.name}\n name: database-id\n versionRetentionPeriod: 3d\n ddls:\n - CREATE TABLE t1 (t1 INT64 NOT NULL,) PRIMARY KEY(t1)\n - CREATE TABLE t2 (t2 INT64 NOT NULL,) PRIMARY KEY(t2)\n deletionProtection: 'true'\n incremental-backup:\n type: gcp:spanner:BackupSchedule\n properties:\n instance: ${main.name}\n database: ${database.name}\n name: backup-schedule-id\n retentionDuration: 31620000s\n spec:\n cronSpec:\n text: 0 12 * * *\n incrementalBackupSpec: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBackupSchedule can be imported using any of these accepted formats:\n\n* `projects/{{project}}/instances/{{instance}}/databases/{{database}}/backupSchedules/{{name}}`\n\n* `{{project}}/{{instance}}/{{database}}/{{name}}`\n\n* `{{instance}}/{{database}}/{{name}}`\n\nWhen using the `pulumi import` command, BackupSchedule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:spanner/backupSchedule:BackupSchedule default projects/{{project}}/instances/{{instance}}/databases/{{database}}/backupSchedules/{{name}}\n```\n\n```sh\n$ pulumi import gcp:spanner/backupSchedule:BackupSchedule default {{project}}/{{instance}}/{{database}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:spanner/backupSchedule:BackupSchedule default {{instance}}/{{database}}/{{name}}\n```\n\n", + "description": "A backup schedule for a Cloud Spanner Database.\nThis resource is owned by the database it is backing up, and is deleted along with the database.\nThe actual backups are not though.\n\n\nTo get more information about BackupSchedule, see:\n\n* [API documentation](https://cloud.google.com/spanner/docs/reference/rest/v1/projects.instances.databases.backupSchedules)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/spanner/docs/backup)\n\n\u003e **Warning:** This resource creates a Spanner Backup Schedule on a project that already has\na Spanner database.\nThis resource is owned by the database it is backing up, and is deleted along\nwith the database. The actual backups are not though.\n\n## Example Usage\n\n### Spanner Backup Schedule Daily Full\n\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.spanner.Instance(\"main\", {\n name: \"instance-id\",\n config: \"regional-europe-west1\",\n displayName: \"main-instance\",\n numNodes: 1,\n});\nconst database = new gcp.spanner.Database(\"database\", {\n instance: main.name,\n name: \"database-id\",\n versionRetentionPeriod: \"3d\",\n ddls: [\n \"CREATE TABLE t1 (t1 INT64 NOT NULL,) PRIMARY KEY(t1)\",\n \"CREATE TABLE t2 (t2 INT64 NOT NULL,) PRIMARY KEY(t2)\",\n ],\n deletionProtection: true,\n});\nconst full_backup = new gcp.spanner.BackupSchedule(\"full-backup\", {\n instance: main.name,\n database: database.name,\n name: \"backup-schedule-id\",\n retentionDuration: \"31620000s\",\n spec: {\n cronSpec: {\n text: \"0 12 * * *\",\n },\n },\n fullBackupSpec: {},\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmain = gcp.spanner.Instance(\"main\",\n name=\"instance-id\",\n config=\"regional-europe-west1\",\n display_name=\"main-instance\",\n num_nodes=1)\ndatabase = gcp.spanner.Database(\"database\",\n instance=main.name,\n name=\"database-id\",\n version_retention_period=\"3d\",\n ddls=[\n \"CREATE TABLE t1 (t1 INT64 NOT NULL,) PRIMARY KEY(t1)\",\n \"CREATE TABLE t2 (t2 INT64 NOT NULL,) PRIMARY KEY(t2)\",\n ],\n deletion_protection=True)\nfull_backup = gcp.spanner.BackupSchedule(\"full-backup\",\n instance=main.name,\n database=database.name,\n name=\"backup-schedule-id\",\n retention_duration=\"31620000s\",\n spec={\n \"cron_spec\": {\n \"text\": \"0 12 * * *\",\n },\n },\n full_backup_spec={})\n```\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.Spanner.Instance(\"main\", new()\n {\n Name = \"instance-id\",\n Config = \"regional-europe-west1\",\n DisplayName = \"main-instance\",\n NumNodes = 1,\n });\n\n var database = new Gcp.Spanner.Database(\"database\", new()\n {\n Instance = main.Name,\n Name = \"database-id\",\n VersionRetentionPeriod = \"3d\",\n Ddls = new[]\n {\n \"CREATE TABLE t1 (t1 INT64 NOT NULL,) PRIMARY KEY(t1)\",\n \"CREATE TABLE t2 (t2 INT64 NOT NULL,) PRIMARY KEY(t2)\",\n },\n DeletionProtection = true,\n });\n\n var full_backup = new Gcp.Spanner.BackupSchedule(\"full-backup\", new()\n {\n Instance = main.Name,\n Database = database.Name,\n Name = \"backup-schedule-id\",\n RetentionDuration = \"31620000s\",\n Spec = new Gcp.Spanner.Inputs.BackupScheduleSpecArgs\n {\n CronSpec = new Gcp.Spanner.Inputs.BackupScheduleSpecCronSpecArgs\n {\n Text = \"0 12 * * *\",\n },\n },\n FullBackupSpec = null,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/spanner\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := spanner.NewInstance(ctx, \"main\", \u0026spanner.InstanceArgs{\n\t\t\tName: pulumi.String(\"instance-id\"),\n\t\t\tConfig: pulumi.String(\"regional-europe-west1\"),\n\t\t\tDisplayName: pulumi.String(\"main-instance\"),\n\t\t\tNumNodes: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdatabase, err := spanner.NewDatabase(ctx, \"database\", \u0026spanner.DatabaseArgs{\n\t\t\tInstance: main.Name,\n\t\t\tName: pulumi.String(\"database-id\"),\n\t\t\tVersionRetentionPeriod: pulumi.String(\"3d\"),\n\t\t\tDdls: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"CREATE TABLE t1 (t1 INT64 NOT NULL,) PRIMARY KEY(t1)\"),\n\t\t\t\tpulumi.String(\"CREATE TABLE t2 (t2 INT64 NOT NULL,) PRIMARY KEY(t2)\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = spanner.NewBackupSchedule(ctx, \"full-backup\", \u0026spanner.BackupScheduleArgs{\n\t\t\tInstance: main.Name,\n\t\t\tDatabase: database.Name,\n\t\t\tName: pulumi.String(\"backup-schedule-id\"),\n\t\t\tRetentionDuration: pulumi.String(\"31620000s\"),\n\t\t\tSpec: \u0026spanner.BackupScheduleSpecArgs{\n\t\t\t\tCronSpec: \u0026spanner.BackupScheduleSpecCronSpecArgs{\n\t\t\t\t\tText: pulumi.String(\"0 12 * * *\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tFullBackupSpec: \u0026spanner.BackupScheduleFullBackupSpecArgs{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.spanner.Instance;\nimport com.pulumi.gcp.spanner.InstanceArgs;\nimport com.pulumi.gcp.spanner.Database;\nimport com.pulumi.gcp.spanner.DatabaseArgs;\nimport com.pulumi.gcp.spanner.BackupSchedule;\nimport com.pulumi.gcp.spanner.BackupScheduleArgs;\nimport com.pulumi.gcp.spanner.inputs.BackupScheduleSpecArgs;\nimport com.pulumi.gcp.spanner.inputs.BackupScheduleSpecCronSpecArgs;\nimport com.pulumi.gcp.spanner.inputs.BackupScheduleFullBackupSpecArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 Instance(\"main\", InstanceArgs.builder()\n .name(\"instance-id\")\n .config(\"regional-europe-west1\")\n .displayName(\"main-instance\")\n .numNodes(1)\n .build());\n\n var database = new Database(\"database\", DatabaseArgs.builder()\n .instance(main.name())\n .name(\"database-id\")\n .versionRetentionPeriod(\"3d\")\n .ddls( \n \"CREATE TABLE t1 (t1 INT64 NOT NULL,) PRIMARY KEY(t1)\",\n \"CREATE TABLE t2 (t2 INT64 NOT NULL,) PRIMARY KEY(t2)\")\n .deletionProtection(\"true\")\n .build());\n\n var full_backup = new BackupSchedule(\"full-backup\", BackupScheduleArgs.builder()\n .instance(main.name())\n .database(database.name())\n .name(\"backup-schedule-id\")\n .retentionDuration(\"31620000s\")\n .spec(BackupScheduleSpecArgs.builder()\n .cronSpec(BackupScheduleSpecCronSpecArgs.builder()\n .text(\"0 12 * * *\")\n .build())\n .build())\n .fullBackupSpec()\n .build());\n\n }\n}\n```\n```yaml\nresources:\n main:\n type: gcp:spanner:Instance\n properties:\n name: instance-id\n config: regional-europe-west1\n displayName: main-instance\n numNodes: 1\n database:\n type: gcp:spanner:Database\n properties:\n instance: ${main.name}\n name: database-id\n versionRetentionPeriod: 3d\n ddls:\n - CREATE TABLE t1 (t1 INT64 NOT NULL,) PRIMARY KEY(t1)\n - CREATE TABLE t2 (t2 INT64 NOT NULL,) PRIMARY KEY(t2)\n deletionProtection: 'true'\n full-backup:\n type: gcp:spanner:BackupSchedule\n properties:\n instance: ${main.name}\n database: ${database.name}\n name: backup-schedule-id\n retentionDuration: 31620000s\n spec:\n cronSpec:\n text: 0 12 * * *\n fullBackupSpec: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Spanner Backup Schedule Daily Incremental\n\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.spanner.Instance(\"main\", {\n name: \"instance-id\",\n config: \"regional-europe-west1\",\n displayName: \"main-instance\",\n numNodes: 1,\n});\nconst database = new gcp.spanner.Database(\"database\", {\n instance: main.name,\n name: \"database-id\",\n versionRetentionPeriod: \"3d\",\n ddls: [\n \"CREATE TABLE t1 (t1 INT64 NOT NULL,) PRIMARY KEY(t1)\",\n \"CREATE TABLE t2 (t2 INT64 NOT NULL,) PRIMARY KEY(t2)\",\n ],\n deletionProtection: true,\n});\nconst incremental_backup = new gcp.spanner.BackupSchedule(\"incremental-backup\", {\n instance: main.name,\n database: database.name,\n name: \"backup-schedule-id\",\n retentionDuration: \"31620000s\",\n spec: {\n cronSpec: {\n text: \"0 12 * * *\",\n },\n },\n incrementalBackupSpec: {},\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmain = gcp.spanner.Instance(\"main\",\n name=\"instance-id\",\n config=\"regional-europe-west1\",\n display_name=\"main-instance\",\n num_nodes=1)\ndatabase = gcp.spanner.Database(\"database\",\n instance=main.name,\n name=\"database-id\",\n version_retention_period=\"3d\",\n ddls=[\n \"CREATE TABLE t1 (t1 INT64 NOT NULL,) PRIMARY KEY(t1)\",\n \"CREATE TABLE t2 (t2 INT64 NOT NULL,) PRIMARY KEY(t2)\",\n ],\n deletion_protection=True)\nincremental_backup = gcp.spanner.BackupSchedule(\"incremental-backup\",\n instance=main.name,\n database=database.name,\n name=\"backup-schedule-id\",\n retention_duration=\"31620000s\",\n spec={\n \"cron_spec\": {\n \"text\": \"0 12 * * *\",\n },\n },\n incremental_backup_spec={})\n```\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.Spanner.Instance(\"main\", new()\n {\n Name = \"instance-id\",\n Config = \"regional-europe-west1\",\n DisplayName = \"main-instance\",\n NumNodes = 1,\n });\n\n var database = new Gcp.Spanner.Database(\"database\", new()\n {\n Instance = main.Name,\n Name = \"database-id\",\n VersionRetentionPeriod = \"3d\",\n Ddls = new[]\n {\n \"CREATE TABLE t1 (t1 INT64 NOT NULL,) PRIMARY KEY(t1)\",\n \"CREATE TABLE t2 (t2 INT64 NOT NULL,) PRIMARY KEY(t2)\",\n },\n DeletionProtection = true,\n });\n\n var incremental_backup = new Gcp.Spanner.BackupSchedule(\"incremental-backup\", new()\n {\n Instance = main.Name,\n Database = database.Name,\n Name = \"backup-schedule-id\",\n RetentionDuration = \"31620000s\",\n Spec = new Gcp.Spanner.Inputs.BackupScheduleSpecArgs\n {\n CronSpec = new Gcp.Spanner.Inputs.BackupScheduleSpecCronSpecArgs\n {\n Text = \"0 12 * * *\",\n },\n },\n IncrementalBackupSpec = null,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/spanner\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmain, err := spanner.NewInstance(ctx, \"main\", \u0026spanner.InstanceArgs{\n\t\t\tName: pulumi.String(\"instance-id\"),\n\t\t\tConfig: pulumi.String(\"regional-europe-west1\"),\n\t\t\tDisplayName: pulumi.String(\"main-instance\"),\n\t\t\tNumNodes: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdatabase, err := spanner.NewDatabase(ctx, \"database\", \u0026spanner.DatabaseArgs{\n\t\t\tInstance: main.Name,\n\t\t\tName: pulumi.String(\"database-id\"),\n\t\t\tVersionRetentionPeriod: pulumi.String(\"3d\"),\n\t\t\tDdls: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"CREATE TABLE t1 (t1 INT64 NOT NULL,) PRIMARY KEY(t1)\"),\n\t\t\t\tpulumi.String(\"CREATE TABLE t2 (t2 INT64 NOT NULL,) PRIMARY KEY(t2)\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = spanner.NewBackupSchedule(ctx, \"incremental-backup\", \u0026spanner.BackupScheduleArgs{\n\t\t\tInstance: main.Name,\n\t\t\tDatabase: database.Name,\n\t\t\tName: pulumi.String(\"backup-schedule-id\"),\n\t\t\tRetentionDuration: pulumi.String(\"31620000s\"),\n\t\t\tSpec: \u0026spanner.BackupScheduleSpecArgs{\n\t\t\t\tCronSpec: \u0026spanner.BackupScheduleSpecCronSpecArgs{\n\t\t\t\t\tText: pulumi.String(\"0 12 * * *\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tIncrementalBackupSpec: \u0026spanner.BackupScheduleIncrementalBackupSpecArgs{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.spanner.Instance;\nimport com.pulumi.gcp.spanner.InstanceArgs;\nimport com.pulumi.gcp.spanner.Database;\nimport com.pulumi.gcp.spanner.DatabaseArgs;\nimport com.pulumi.gcp.spanner.BackupSchedule;\nimport com.pulumi.gcp.spanner.BackupScheduleArgs;\nimport com.pulumi.gcp.spanner.inputs.BackupScheduleSpecArgs;\nimport com.pulumi.gcp.spanner.inputs.BackupScheduleSpecCronSpecArgs;\nimport com.pulumi.gcp.spanner.inputs.BackupScheduleIncrementalBackupSpecArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 Instance(\"main\", InstanceArgs.builder()\n .name(\"instance-id\")\n .config(\"regional-europe-west1\")\n .displayName(\"main-instance\")\n .numNodes(1)\n .build());\n\n var database = new Database(\"database\", DatabaseArgs.builder()\n .instance(main.name())\n .name(\"database-id\")\n .versionRetentionPeriod(\"3d\")\n .ddls( \n \"CREATE TABLE t1 (t1 INT64 NOT NULL,) PRIMARY KEY(t1)\",\n \"CREATE TABLE t2 (t2 INT64 NOT NULL,) PRIMARY KEY(t2)\")\n .deletionProtection(\"true\")\n .build());\n\n var incremental_backup = new BackupSchedule(\"incremental-backup\", BackupScheduleArgs.builder()\n .instance(main.name())\n .database(database.name())\n .name(\"backup-schedule-id\")\n .retentionDuration(\"31620000s\")\n .spec(BackupScheduleSpecArgs.builder()\n .cronSpec(BackupScheduleSpecCronSpecArgs.builder()\n .text(\"0 12 * * *\")\n .build())\n .build())\n .incrementalBackupSpec()\n .build());\n\n }\n}\n```\n```yaml\nresources:\n main:\n type: gcp:spanner:Instance\n properties:\n name: instance-id\n config: regional-europe-west1\n displayName: main-instance\n numNodes: 1\n database:\n type: gcp:spanner:Database\n properties:\n instance: ${main.name}\n name: database-id\n versionRetentionPeriod: 3d\n ddls:\n - CREATE TABLE t1 (t1 INT64 NOT NULL,) PRIMARY KEY(t1)\n - CREATE TABLE t2 (t2 INT64 NOT NULL,) PRIMARY KEY(t2)\n deletionProtection: 'true'\n incremental-backup:\n type: gcp:spanner:BackupSchedule\n properties:\n instance: ${main.name}\n database: ${database.name}\n name: backup-schedule-id\n retentionDuration: 31620000s\n spec:\n cronSpec:\n text: 0 12 * * *\n incrementalBackupSpec: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBackupSchedule can be imported using any of these accepted formats:\n\n* `projects/{{project}}/instances/{{instance}}/databases/{{database}}/backupSchedules/{{name}}`\n\n* `{{project}}/{{instance}}/{{database}}/{{name}}`\n\n* `{{instance}}/{{database}}/{{name}}`\n\nWhen using the `pulumi import` command, BackupSchedule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:spanner/backupSchedule:BackupSchedule default projects/{{project}}/instances/{{instance}}/databases/{{database}}/backupSchedules/{{name}}\n```\n\n```sh\n$ pulumi import gcp:spanner/backupSchedule:BackupSchedule default {{project}}/{{instance}}/{{database}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:spanner/backupSchedule:BackupSchedule default {{instance}}/{{database}}/{{name}}\n```\n\n", "properties": { "database": { "type": "string", @@ -251623,7 +251623,7 @@ } }, "gcp:storage/insightsReportConfig:InsightsReportConfig": { - "description": "Represents an inventory report configuration.\n\n\nTo get more information about ReportConfig, see:\n\n* [API documentation](https://cloud.google.com/storage/docs/json_api/v1/reportConfig)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/storage/docs/insights/using-storage-insights)\n\n## Example Usage\n\n### Storage Insights Report Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst reportBucket = new gcp.storage.Bucket(\"report_bucket\", {\n name: \"my-bucket\",\n location: \"us-central1\",\n forceDestroy: true,\n uniformBucketLevelAccess: true,\n});\nconst admin = new gcp.storage.BucketIAMMember(\"admin\", {\n bucket: reportBucket.name,\n role: \"roles/storage.admin\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-storageinsights.iam.gserviceaccount.com`),\n});\nconst config = new gcp.storage.InsightsReportConfig(\"config\", {\n displayName: \"Test Report Config\",\n location: \"us-central1\",\n frequencyOptions: {\n frequency: \"WEEKLY\",\n startDate: {\n day: 15,\n month: 3,\n year: 2050,\n },\n endDate: {\n day: 15,\n month: 4,\n year: 2050,\n },\n },\n csvOptions: {\n recordSeparator: \"\\n\",\n delimiter: \",\",\n headerRequired: false,\n },\n objectMetadataReportOptions: {\n metadataFields: [\n \"bucket\",\n \"name\",\n \"project\",\n ],\n storageFilters: {\n bucket: reportBucket.name,\n },\n storageDestinationOptions: {\n bucket: reportBucket.name,\n destinationPath: \"test-insights-reports\",\n },\n },\n}, {\n dependsOn: [admin],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nreport_bucket = gcp.storage.Bucket(\"report_bucket\",\n name=\"my-bucket\",\n location=\"us-central1\",\n force_destroy=True,\n uniform_bucket_level_access=True)\nadmin = gcp.storage.BucketIAMMember(\"admin\",\n bucket=report_bucket.name,\n role=\"roles/storage.admin\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-storageinsights.iam.gserviceaccount.com\")\nconfig = gcp.storage.InsightsReportConfig(\"config\",\n display_name=\"Test Report Config\",\n location=\"us-central1\",\n frequency_options={\n \"frequency\": \"WEEKLY\",\n \"start_date\": {\n \"day\": 15,\n \"month\": 3,\n \"year\": 2050,\n },\n \"end_date\": {\n \"day\": 15,\n \"month\": 4,\n \"year\": 2050,\n },\n },\n csv_options={\n \"record_separator\": \"\\n\",\n \"delimiter\": \",\",\n \"header_required\": False,\n },\n object_metadata_report_options={\n \"metadata_fields\": [\n \"bucket\",\n \"name\",\n \"project\",\n ],\n \"storage_filters\": {\n \"bucket\": report_bucket.name,\n },\n \"storage_destination_options\": {\n \"bucket\": report_bucket.name,\n \"destination_path\": \"test-insights-reports\",\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[admin]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var reportBucket = new Gcp.Storage.Bucket(\"report_bucket\", new()\n {\n Name = \"my-bucket\",\n Location = \"us-central1\",\n ForceDestroy = true,\n UniformBucketLevelAccess = true,\n });\n\n var admin = new Gcp.Storage.BucketIAMMember(\"admin\", new()\n {\n Bucket = reportBucket.Name,\n Role = \"roles/storage.admin\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-storageinsights.iam.gserviceaccount.com\",\n });\n\n var config = new Gcp.Storage.InsightsReportConfig(\"config\", new()\n {\n DisplayName = \"Test Report Config\",\n Location = \"us-central1\",\n FrequencyOptions = new Gcp.Storage.Inputs.InsightsReportConfigFrequencyOptionsArgs\n {\n Frequency = \"WEEKLY\",\n StartDate = new Gcp.Storage.Inputs.InsightsReportConfigFrequencyOptionsStartDateArgs\n {\n Day = 15,\n Month = 3,\n Year = 2050,\n },\n EndDate = new Gcp.Storage.Inputs.InsightsReportConfigFrequencyOptionsEndDateArgs\n {\n Day = 15,\n Month = 4,\n Year = 2050,\n },\n },\n CsvOptions = new Gcp.Storage.Inputs.InsightsReportConfigCsvOptionsArgs\n {\n RecordSeparator = @\"\n\",\n Delimiter = \",\",\n HeaderRequired = false,\n },\n ObjectMetadataReportOptions = new Gcp.Storage.Inputs.InsightsReportConfigObjectMetadataReportOptionsArgs\n {\n MetadataFields = new[]\n {\n \"bucket\",\n \"name\",\n \"project\",\n },\n StorageFilters = new Gcp.Storage.Inputs.InsightsReportConfigObjectMetadataReportOptionsStorageFiltersArgs\n {\n Bucket = reportBucket.Name,\n },\n StorageDestinationOptions = new Gcp.Storage.Inputs.InsightsReportConfigObjectMetadataReportOptionsStorageDestinationOptionsArgs\n {\n Bucket = reportBucket.Name,\n DestinationPath = \"test-insights-reports\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n admin,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treportBucket, err := storage.NewBucket(ctx, \"report_bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"my-bucket\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tadmin, err := storage.NewBucketIAMMember(ctx, \"admin\", \u0026storage.BucketIAMMemberArgs{\n\t\t\tBucket: reportBucket.Name,\n\t\t\tRole: pulumi.String(\"roles/storage.admin\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-storageinsights.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewInsightsReportConfig(ctx, \"config\", \u0026storage.InsightsReportConfigArgs{\n\t\t\tDisplayName: pulumi.String(\"Test Report Config\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tFrequencyOptions: \u0026storage.InsightsReportConfigFrequencyOptionsArgs{\n\t\t\t\tFrequency: pulumi.String(\"WEEKLY\"),\n\t\t\t\tStartDate: \u0026storage.InsightsReportConfigFrequencyOptionsStartDateArgs{\n\t\t\t\t\tDay: pulumi.Int(15),\n\t\t\t\t\tMonth: pulumi.Int(3),\n\t\t\t\t\tYear: pulumi.Int(2050),\n\t\t\t\t},\n\t\t\t\tEndDate: \u0026storage.InsightsReportConfigFrequencyOptionsEndDateArgs{\n\t\t\t\t\tDay: pulumi.Int(15),\n\t\t\t\t\tMonth: pulumi.Int(4),\n\t\t\t\t\tYear: pulumi.Int(2050),\n\t\t\t\t},\n\t\t\t},\n\t\t\tCsvOptions: \u0026storage.InsightsReportConfigCsvOptionsArgs{\n\t\t\t\tRecordSeparator: pulumi.String(\"\\n\"),\n\t\t\t\tDelimiter: pulumi.String(\",\"),\n\t\t\t\tHeaderRequired: pulumi.Bool(false),\n\t\t\t},\n\t\t\tObjectMetadataReportOptions: \u0026storage.InsightsReportConfigObjectMetadataReportOptionsArgs{\n\t\t\t\tMetadataFields: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"bucket\"),\n\t\t\t\t\tpulumi.String(\"name\"),\n\t\t\t\t\tpulumi.String(\"project\"),\n\t\t\t\t},\n\t\t\t\tStorageFilters: \u0026storage.InsightsReportConfigObjectMetadataReportOptionsStorageFiltersArgs{\n\t\t\t\t\tBucket: reportBucket.Name,\n\t\t\t\t},\n\t\t\t\tStorageDestinationOptions: \u0026storage.InsightsReportConfigObjectMetadataReportOptionsStorageDestinationOptionsArgs{\n\t\t\t\t\tBucket: reportBucket.Name,\n\t\t\t\t\tDestinationPath: pulumi.String(\"test-insights-reports\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tadmin,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketIAMMember;\nimport com.pulumi.gcp.storage.BucketIAMMemberArgs;\nimport com.pulumi.gcp.storage.InsightsReportConfig;\nimport com.pulumi.gcp.storage.InsightsReportConfigArgs;\nimport com.pulumi.gcp.storage.inputs.InsightsReportConfigFrequencyOptionsArgs;\nimport com.pulumi.gcp.storage.inputs.InsightsReportConfigFrequencyOptionsStartDateArgs;\nimport com.pulumi.gcp.storage.inputs.InsightsReportConfigFrequencyOptionsEndDateArgs;\nimport com.pulumi.gcp.storage.inputs.InsightsReportConfigCsvOptionsArgs;\nimport com.pulumi.gcp.storage.inputs.InsightsReportConfigObjectMetadataReportOptionsArgs;\nimport com.pulumi.gcp.storage.inputs.InsightsReportConfigObjectMetadataReportOptionsStorageFiltersArgs;\nimport com.pulumi.gcp.storage.inputs.InsightsReportConfigObjectMetadataReportOptionsStorageDestinationOptionsArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var reportBucket = new Bucket(\"reportBucket\", BucketArgs.builder()\n .name(\"my-bucket\")\n .location(\"us-central1\")\n .forceDestroy(true)\n .uniformBucketLevelAccess(true)\n .build());\n\n var admin = new BucketIAMMember(\"admin\", BucketIAMMemberArgs.builder()\n .bucket(reportBucket.name())\n .role(\"roles/storage.admin\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-storageinsights.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var config = new InsightsReportConfig(\"config\", InsightsReportConfigArgs.builder()\n .displayName(\"Test Report Config\")\n .location(\"us-central1\")\n .frequencyOptions(InsightsReportConfigFrequencyOptionsArgs.builder()\n .frequency(\"WEEKLY\")\n .startDate(InsightsReportConfigFrequencyOptionsStartDateArgs.builder()\n .day(15)\n .month(3)\n .year(2050)\n .build())\n .endDate(InsightsReportConfigFrequencyOptionsEndDateArgs.builder()\n .day(15)\n .month(4)\n .year(2050)\n .build())\n .build())\n .csvOptions(InsightsReportConfigCsvOptionsArgs.builder()\n .recordSeparator(\"\"\"\n\n \"\"\")\n .delimiter(\",\")\n .headerRequired(false)\n .build())\n .objectMetadataReportOptions(InsightsReportConfigObjectMetadataReportOptionsArgs.builder()\n .metadataFields( \n \"bucket\",\n \"name\",\n \"project\")\n .storageFilters(InsightsReportConfigObjectMetadataReportOptionsStorageFiltersArgs.builder()\n .bucket(reportBucket.name())\n .build())\n .storageDestinationOptions(InsightsReportConfigObjectMetadataReportOptionsStorageDestinationOptionsArgs.builder()\n .bucket(reportBucket.name())\n .destinationPath(\"test-insights-reports\")\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(admin)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n config:\n type: gcp:storage:InsightsReportConfig\n properties:\n displayName: Test Report Config\n location: us-central1\n frequencyOptions:\n frequency: WEEKLY\n startDate:\n day: 15\n month: 3\n year: 2050\n endDate:\n day: 15\n month: 4\n year: 2050\n csvOptions:\n recordSeparator: |2+\n delimiter: ','\n headerRequired: false\n objectMetadataReportOptions:\n metadataFields:\n - bucket\n - name\n - project\n storageFilters:\n bucket: ${reportBucket.name}\n storageDestinationOptions:\n bucket: ${reportBucket.name}\n destinationPath: test-insights-reports\n options:\n dependson:\n - ${admin}\n reportBucket:\n type: gcp:storage:Bucket\n name: report_bucket\n properties:\n name: my-bucket\n location: us-central1\n forceDestroy: true\n uniformBucketLevelAccess: true\n admin:\n type: gcp:storage:BucketIAMMember\n properties:\n bucket: ${reportBucket.name}\n role: roles/storage.admin\n member: serviceAccount:service-${project.number}@gcp-sa-storageinsights.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nReportConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/reportConfigs/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, ReportConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:storage/insightsReportConfig:InsightsReportConfig default projects/{{project}}/locations/{{location}}/reportConfigs/{{name}}\n```\n\n```sh\n$ pulumi import gcp:storage/insightsReportConfig:InsightsReportConfig default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:storage/insightsReportConfig:InsightsReportConfig default {{location}}/{{name}}\n```\n\n", + "description": "Represents an inventory report configuration.\n\n\nTo get more information about ReportConfig, see:\n\n* [API documentation](https://cloud.google.com/storage/docs/json_api/v1/reportConfig)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/storage/docs/insights/using-storage-insights)\n\n## Example Usage\n\n### Storage Insights Report Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst reportBucket = new gcp.storage.Bucket(\"report_bucket\", {\n name: \"my-bucket\",\n location: \"us-central1\",\n forceDestroy: true,\n uniformBucketLevelAccess: true,\n});\nconst admin = new gcp.storage.BucketIAMMember(\"admin\", {\n bucket: reportBucket.name,\n role: \"roles/storage.admin\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-storageinsights.iam.gserviceaccount.com`),\n});\nconst config = new gcp.storage.InsightsReportConfig(\"config\", {\n displayName: \"Test Report Config\",\n location: \"us-central1\",\n frequencyOptions: {\n frequency: \"WEEKLY\",\n startDate: {\n day: 15,\n month: 3,\n year: 2050,\n },\n endDate: {\n day: 15,\n month: 4,\n year: 2050,\n },\n },\n csvOptions: {\n recordSeparator: \"\\n\",\n delimiter: \",\",\n headerRequired: false,\n },\n objectMetadataReportOptions: {\n metadataFields: [\n \"bucket\",\n \"name\",\n \"project\",\n ],\n storageFilters: {\n bucket: reportBucket.name,\n },\n storageDestinationOptions: {\n bucket: reportBucket.name,\n destinationPath: \"test-insights-reports\",\n },\n },\n}, {\n dependsOn: [admin],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nreport_bucket = gcp.storage.Bucket(\"report_bucket\",\n name=\"my-bucket\",\n location=\"us-central1\",\n force_destroy=True,\n uniform_bucket_level_access=True)\nadmin = gcp.storage.BucketIAMMember(\"admin\",\n bucket=report_bucket.name,\n role=\"roles/storage.admin\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-storageinsights.iam.gserviceaccount.com\")\nconfig = gcp.storage.InsightsReportConfig(\"config\",\n display_name=\"Test Report Config\",\n location=\"us-central1\",\n frequency_options={\n \"frequency\": \"WEEKLY\",\n \"start_date\": {\n \"day\": 15,\n \"month\": 3,\n \"year\": 2050,\n },\n \"end_date\": {\n \"day\": 15,\n \"month\": 4,\n \"year\": 2050,\n },\n },\n csv_options={\n \"record_separator\": \"\\n\",\n \"delimiter\": \",\",\n \"header_required\": False,\n },\n object_metadata_report_options={\n \"metadata_fields\": [\n \"bucket\",\n \"name\",\n \"project\",\n ],\n \"storage_filters\": {\n \"bucket\": report_bucket.name,\n },\n \"storage_destination_options\": {\n \"bucket\": report_bucket.name,\n \"destination_path\": \"test-insights-reports\",\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[admin]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var reportBucket = new Gcp.Storage.Bucket(\"report_bucket\", new()\n {\n Name = \"my-bucket\",\n Location = \"us-central1\",\n ForceDestroy = true,\n UniformBucketLevelAccess = true,\n });\n\n var admin = new Gcp.Storage.BucketIAMMember(\"admin\", new()\n {\n Bucket = reportBucket.Name,\n Role = \"roles/storage.admin\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-storageinsights.iam.gserviceaccount.com\",\n });\n\n var config = new Gcp.Storage.InsightsReportConfig(\"config\", new()\n {\n DisplayName = \"Test Report Config\",\n Location = \"us-central1\",\n FrequencyOptions = new Gcp.Storage.Inputs.InsightsReportConfigFrequencyOptionsArgs\n {\n Frequency = \"WEEKLY\",\n StartDate = new Gcp.Storage.Inputs.InsightsReportConfigFrequencyOptionsStartDateArgs\n {\n Day = 15,\n Month = 3,\n Year = 2050,\n },\n EndDate = new Gcp.Storage.Inputs.InsightsReportConfigFrequencyOptionsEndDateArgs\n {\n Day = 15,\n Month = 4,\n Year = 2050,\n },\n },\n CsvOptions = new Gcp.Storage.Inputs.InsightsReportConfigCsvOptionsArgs\n {\n RecordSeparator = @\"\n\",\n Delimiter = \",\",\n HeaderRequired = false,\n },\n ObjectMetadataReportOptions = new Gcp.Storage.Inputs.InsightsReportConfigObjectMetadataReportOptionsArgs\n {\n MetadataFields = new[]\n {\n \"bucket\",\n \"name\",\n \"project\",\n },\n StorageFilters = new Gcp.Storage.Inputs.InsightsReportConfigObjectMetadataReportOptionsStorageFiltersArgs\n {\n Bucket = reportBucket.Name,\n },\n StorageDestinationOptions = new Gcp.Storage.Inputs.InsightsReportConfigObjectMetadataReportOptionsStorageDestinationOptionsArgs\n {\n Bucket = reportBucket.Name,\n DestinationPath = \"test-insights-reports\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n admin,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treportBucket, err := storage.NewBucket(ctx, \"report_bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"my-bucket\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tadmin, err := storage.NewBucketIAMMember(ctx, \"admin\", \u0026storage.BucketIAMMemberArgs{\n\t\t\tBucket: reportBucket.Name,\n\t\t\tRole: pulumi.String(\"roles/storage.admin\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-storageinsights.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewInsightsReportConfig(ctx, \"config\", \u0026storage.InsightsReportConfigArgs{\n\t\t\tDisplayName: pulumi.String(\"Test Report Config\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tFrequencyOptions: \u0026storage.InsightsReportConfigFrequencyOptionsArgs{\n\t\t\t\tFrequency: pulumi.String(\"WEEKLY\"),\n\t\t\t\tStartDate: \u0026storage.InsightsReportConfigFrequencyOptionsStartDateArgs{\n\t\t\t\t\tDay: pulumi.Int(15),\n\t\t\t\t\tMonth: pulumi.Int(3),\n\t\t\t\t\tYear: pulumi.Int(2050),\n\t\t\t\t},\n\t\t\t\tEndDate: \u0026storage.InsightsReportConfigFrequencyOptionsEndDateArgs{\n\t\t\t\t\tDay: pulumi.Int(15),\n\t\t\t\t\tMonth: pulumi.Int(4),\n\t\t\t\t\tYear: pulumi.Int(2050),\n\t\t\t\t},\n\t\t\t},\n\t\t\tCsvOptions: \u0026storage.InsightsReportConfigCsvOptionsArgs{\n\t\t\t\tRecordSeparator: pulumi.String(\"\\n\"),\n\t\t\t\tDelimiter: pulumi.String(\",\"),\n\t\t\t\tHeaderRequired: pulumi.Bool(false),\n\t\t\t},\n\t\t\tObjectMetadataReportOptions: \u0026storage.InsightsReportConfigObjectMetadataReportOptionsArgs{\n\t\t\t\tMetadataFields: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"bucket\"),\n\t\t\t\t\tpulumi.String(\"name\"),\n\t\t\t\t\tpulumi.String(\"project\"),\n\t\t\t\t},\n\t\t\t\tStorageFilters: \u0026storage.InsightsReportConfigObjectMetadataReportOptionsStorageFiltersArgs{\n\t\t\t\t\tBucket: reportBucket.Name,\n\t\t\t\t},\n\t\t\t\tStorageDestinationOptions: \u0026storage.InsightsReportConfigObjectMetadataReportOptionsStorageDestinationOptionsArgs{\n\t\t\t\t\tBucket: reportBucket.Name,\n\t\t\t\t\tDestinationPath: pulumi.String(\"test-insights-reports\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tadmin,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketIAMMember;\nimport com.pulumi.gcp.storage.BucketIAMMemberArgs;\nimport com.pulumi.gcp.storage.InsightsReportConfig;\nimport com.pulumi.gcp.storage.InsightsReportConfigArgs;\nimport com.pulumi.gcp.storage.inputs.InsightsReportConfigFrequencyOptionsArgs;\nimport com.pulumi.gcp.storage.inputs.InsightsReportConfigFrequencyOptionsStartDateArgs;\nimport com.pulumi.gcp.storage.inputs.InsightsReportConfigFrequencyOptionsEndDateArgs;\nimport com.pulumi.gcp.storage.inputs.InsightsReportConfigCsvOptionsArgs;\nimport com.pulumi.gcp.storage.inputs.InsightsReportConfigObjectMetadataReportOptionsArgs;\nimport com.pulumi.gcp.storage.inputs.InsightsReportConfigObjectMetadataReportOptionsStorageFiltersArgs;\nimport com.pulumi.gcp.storage.inputs.InsightsReportConfigObjectMetadataReportOptionsStorageDestinationOptionsArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var reportBucket = new Bucket(\"reportBucket\", BucketArgs.builder()\n .name(\"my-bucket\")\n .location(\"us-central1\")\n .forceDestroy(true)\n .uniformBucketLevelAccess(true)\n .build());\n\n var admin = new BucketIAMMember(\"admin\", BucketIAMMemberArgs.builder()\n .bucket(reportBucket.name())\n .role(\"roles/storage.admin\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-storageinsights.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var config = new InsightsReportConfig(\"config\", InsightsReportConfigArgs.builder()\n .displayName(\"Test Report Config\")\n .location(\"us-central1\")\n .frequencyOptions(InsightsReportConfigFrequencyOptionsArgs.builder()\n .frequency(\"WEEKLY\")\n .startDate(InsightsReportConfigFrequencyOptionsStartDateArgs.builder()\n .day(15)\n .month(3)\n .year(2050)\n .build())\n .endDate(InsightsReportConfigFrequencyOptionsEndDateArgs.builder()\n .day(15)\n .month(4)\n .year(2050)\n .build())\n .build())\n .csvOptions(InsightsReportConfigCsvOptionsArgs.builder()\n .recordSeparator(\"\"\"\n\n \"\"\")\n .delimiter(\",\")\n .headerRequired(false)\n .build())\n .objectMetadataReportOptions(InsightsReportConfigObjectMetadataReportOptionsArgs.builder()\n .metadataFields( \n \"bucket\",\n \"name\",\n \"project\")\n .storageFilters(InsightsReportConfigObjectMetadataReportOptionsStorageFiltersArgs.builder()\n .bucket(reportBucket.name())\n .build())\n .storageDestinationOptions(InsightsReportConfigObjectMetadataReportOptionsStorageDestinationOptionsArgs.builder()\n .bucket(reportBucket.name())\n .destinationPath(\"test-insights-reports\")\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(admin)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n config:\n type: gcp:storage:InsightsReportConfig\n properties:\n displayName: Test Report Config\n location: us-central1\n frequencyOptions:\n frequency: WEEKLY\n startDate:\n day: 15\n month: 3\n year: 2050\n endDate:\n day: 15\n month: 4\n year: 2050\n csvOptions:\n recordSeparator: |2+\n delimiter: ','\n headerRequired: false\n objectMetadataReportOptions:\n metadataFields:\n - bucket\n - name\n - project\n storageFilters:\n bucket: ${reportBucket.name}\n storageDestinationOptions:\n bucket: ${reportBucket.name}\n destinationPath: test-insights-reports\n options:\n dependson:\n - ${admin}\n reportBucket:\n type: gcp:storage:Bucket\n name: report_bucket\n properties:\n name: my-bucket\n location: us-central1\n forceDestroy: true\n uniformBucketLevelAccess: true\n admin:\n type: gcp:storage:BucketIAMMember\n properties:\n bucket: ${reportBucket.name}\n role: roles/storage.admin\n member: serviceAccount:service-${project.number}@gcp-sa-storageinsights.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nReportConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/reportConfigs/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, ReportConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:storage/insightsReportConfig:InsightsReportConfig default projects/{{project}}/locations/{{location}}/reportConfigs/{{name}}\n```\n\n```sh\n$ pulumi import gcp:storage/insightsReportConfig:InsightsReportConfig default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:storage/insightsReportConfig:InsightsReportConfig default {{location}}/{{name}}\n```\n\n", "properties": { "csvOptions": { "$ref": "#/types/gcp:storage/InsightsReportConfigCsvOptions:InsightsReportConfigCsvOptions", @@ -252110,7 +252110,7 @@ } }, "gcp:storage/notification:Notification": { - "description": "Creates a new notification configuration on a specified bucket, establishing a flow of event notifications from GCS to a Cloud Pub/Sub topic.\n For more information see\n[the official documentation](https://cloud.google.com/storage/docs/pubsub-notifications)\nand\n[API](https://cloud.google.com/storage/docs/json_api/v1/notifications).\n\nIn order to enable notifications, a special Google Cloud Storage service account unique to the project\nmust exist and have the IAM permission \"projects.topics.publish\" for a Cloud Pub/Sub topic in the project.\nThis service account is not created automatically when a project is created.\nTo ensure the service account exists and obtain its email address for use in granting the correct IAM permission, use the\n[`gcp.storage.getProjectServiceAccount`](https://www.terraform.io/docs/providers/google/d/storage_project_service_account.html)\ndatasource's `email_address` value, and see below for an example of enabling notifications by granting the correct IAM permission.\nSee [the notifications documentation](https://cloud.google.com/storage/docs/gsutil/commands/notification) for more details.\n\n\u003e**NOTE**: This resource can affect your storage IAM policy. If you are using this in the same config as your storage IAM policy resources, consider\nmaking this resource dependent on those IAM resources via `depends_on`. This will safeguard against errors due to IAM race conditions.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// Enable notifications by giving the correct IAM permission to the unique service account.\nconst gcsAccount = gcp.storage.getProjectServiceAccount({});\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"default_topic\"});\nconst binding = new gcp.pubsub.TopicIAMBinding(\"binding\", {\n topic: topic.id,\n role: \"roles/pubsub.publisher\",\n members: [gcsAccount.then(gcsAccount =\u003e `serviceAccount:${gcsAccount.emailAddress}`)],\n});\n// End enabling notifications\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"default_bucket\",\n location: \"US\",\n});\nconst notification = new gcp.storage.Notification(\"notification\", {\n bucket: bucket.name,\n payloadFormat: \"JSON_API_V1\",\n topic: topic.id,\n eventTypes: [\n \"OBJECT_FINALIZE\",\n \"OBJECT_METADATA_UPDATE\",\n ],\n customAttributes: {\n \"new-attribute\": \"new-attribute-value\",\n },\n}, {\n dependsOn: [binding],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# Enable notifications by giving the correct IAM permission to the unique service account.\ngcs_account = gcp.storage.get_project_service_account()\ntopic = gcp.pubsub.Topic(\"topic\", name=\"default_topic\")\nbinding = gcp.pubsub.TopicIAMBinding(\"binding\",\n topic=topic.id,\n role=\"roles/pubsub.publisher\",\n members=[f\"serviceAccount:{gcs_account.email_address}\"])\n# End enabling notifications\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"default_bucket\",\n location=\"US\")\nnotification = gcp.storage.Notification(\"notification\",\n bucket=bucket.name,\n payload_format=\"JSON_API_V1\",\n topic=topic.id,\n event_types=[\n \"OBJECT_FINALIZE\",\n \"OBJECT_METADATA_UPDATE\",\n ],\n custom_attributes={\n \"new-attribute\": \"new-attribute-value\",\n },\n opts = pulumi.ResourceOptions(depends_on=[binding]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // Enable notifications by giving the correct IAM permission to the unique service account.\n var gcsAccount = Gcp.Storage.GetProjectServiceAccount.Invoke();\n\n var topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n Name = \"default_topic\",\n });\n\n var binding = new Gcp.PubSub.TopicIAMBinding(\"binding\", new()\n {\n Topic = topic.Id,\n Role = \"roles/pubsub.publisher\",\n Members = new[]\n {\n $\"serviceAccount:{gcsAccount.Apply(getProjectServiceAccountResult =\u003e getProjectServiceAccountResult.EmailAddress)}\",\n },\n });\n\n // End enabling notifications\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = \"default_bucket\",\n Location = \"US\",\n });\n\n var notification = new Gcp.Storage.Notification(\"notification\", new()\n {\n Bucket = bucket.Name,\n PayloadFormat = \"JSON_API_V1\",\n Topic = topic.Id,\n EventTypes = new[]\n {\n \"OBJECT_FINALIZE\",\n \"OBJECT_METADATA_UPDATE\",\n },\n CustomAttributes = \n {\n { \"new-attribute\", \"new-attribute-value\" },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n binding,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Enable notifications by giving the correct IAM permission to the unique service account.\n\t\tgcsAccount, err := storage.GetProjectServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttopic, err := pubsub.NewTopic(ctx, \"topic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"default_topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbinding, err := pubsub.NewTopicIAMBinding(ctx, \"binding\", \u0026pubsub.TopicIAMBindingArgs{\n\t\t\tTopic: topic.ID(),\n\t\t\tRole: pulumi.String(\"roles/pubsub.publisher\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:%v\", gcsAccount.EmailAddress),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// End enabling notifications\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"default_bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewNotification(ctx, \"notification\", \u0026storage.NotificationArgs{\n\t\t\tBucket: bucket.Name,\n\t\t\tPayloadFormat: pulumi.String(\"JSON_API_V1\"),\n\t\t\tTopic: topic.ID(),\n\t\t\tEventTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"OBJECT_FINALIZE\"),\n\t\t\t\tpulumi.String(\"OBJECT_METADATA_UPDATE\"),\n\t\t\t},\n\t\t\tCustomAttributes: pulumi.StringMap{\n\t\t\t\t\"new-attribute\": pulumi.String(\"new-attribute-value\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tbinding,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.StorageFunctions;\nimport com.pulumi.gcp.storage.inputs.GetProjectServiceAccountArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.pubsub.TopicIAMBinding;\nimport com.pulumi.gcp.pubsub.TopicIAMBindingArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.Notification;\nimport com.pulumi.gcp.storage.NotificationArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // Enable notifications by giving the correct IAM permission to the unique service account.\n final var gcsAccount = StorageFunctions.getProjectServiceAccount();\n\n var topic = new Topic(\"topic\", TopicArgs.builder()\n .name(\"default_topic\")\n .build());\n\n var binding = new TopicIAMBinding(\"binding\", TopicIAMBindingArgs.builder()\n .topic(topic.id())\n .role(\"roles/pubsub.publisher\")\n .members(String.format(\"serviceAccount:%s\", gcsAccount.applyValue(getProjectServiceAccountResult -\u003e getProjectServiceAccountResult.emailAddress())))\n .build());\n\n // End enabling notifications\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(\"default_bucket\")\n .location(\"US\")\n .build());\n\n var notification = new Notification(\"notification\", NotificationArgs.builder()\n .bucket(bucket.name())\n .payloadFormat(\"JSON_API_V1\")\n .topic(topic.id())\n .eventTypes( \n \"OBJECT_FINALIZE\",\n \"OBJECT_METADATA_UPDATE\")\n .customAttributes(Map.of(\"new-attribute\", \"new-attribute-value\"))\n .build(), CustomResourceOptions.builder()\n .dependsOn(binding)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n notification:\n type: gcp:storage:Notification\n properties:\n bucket: ${bucket.name}\n payloadFormat: JSON_API_V1\n topic: ${topic.id}\n eventTypes:\n - OBJECT_FINALIZE\n - OBJECT_METADATA_UPDATE\n customAttributes:\n new-attribute: new-attribute-value\n options:\n dependson:\n - ${binding}\n binding:\n type: gcp:pubsub:TopicIAMBinding\n properties:\n topic: ${topic.id}\n role: roles/pubsub.publisher\n members:\n - serviceAccount:${gcsAccount.emailAddress}\n # End enabling notifications\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: default_bucket\n location: US\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: default_topic\nvariables:\n # Enable notifications by giving the correct IAM permission to the unique service account.\n gcsAccount:\n fn::invoke:\n Function: gcp:storage:getProjectServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nStorage notifications can be imported using any of these accepted formats:\n\n* `{{bucket_name}}/notificationConfigs/{{id}}`\n\nWhen using the `pulumi import` command, Storage notifications can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:storage/notification:Notification default {{bucket_name}}/notificationConfigs/{{id}}\n```\n\n", + "description": "Creates a new notification configuration on a specified bucket, establishing a flow of event notifications from GCS to a Cloud Pub/Sub topic.\n For more information see\n[the official documentation](https://cloud.google.com/storage/docs/pubsub-notifications)\nand\n[API](https://cloud.google.com/storage/docs/json_api/v1/notifications).\n\nIn order to enable notifications, a special Google Cloud Storage service account unique to the project\nmust exist and have the IAM permission \"projects.topics.publish\" for a Cloud Pub/Sub topic in the project.\nThis service account is not created automatically when a project is created.\nTo ensure the service account exists and obtain its email address for use in granting the correct IAM permission, use the\n[`gcp.storage.getProjectServiceAccount`](https://www.terraform.io/docs/providers/google/d/storage_project_service_account.html)\ndatasource's `email_address` value, and see below for an example of enabling notifications by granting the correct IAM permission.\nSee [the notifications documentation](https://cloud.google.com/storage/docs/gsutil/commands/notification) for more details.\n\n\u003e**NOTE**: This resource can affect your storage IAM policy. If you are using this in the same config as your storage IAM policy resources, consider\nmaking this resource dependent on those IAM resources via `depends_on`. This will safeguard against errors due to IAM race conditions.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// Enable notifications by giving the correct IAM permission to the unique service account.\nconst gcsAccount = gcp.storage.getProjectServiceAccount({});\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: \"default_topic\"});\nconst binding = new gcp.pubsub.TopicIAMBinding(\"binding\", {\n topic: topic.id,\n role: \"roles/pubsub.publisher\",\n members: [gcsAccount.then(gcsAccount =\u003e `serviceAccount:${gcsAccount.emailAddress}`)],\n});\n// End enabling notifications\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"default_bucket\",\n location: \"US\",\n});\nconst notification = new gcp.storage.Notification(\"notification\", {\n bucket: bucket.name,\n payloadFormat: \"JSON_API_V1\",\n topic: topic.id,\n eventTypes: [\n \"OBJECT_FINALIZE\",\n \"OBJECT_METADATA_UPDATE\",\n ],\n customAttributes: {\n \"new-attribute\": \"new-attribute-value\",\n },\n}, {\n dependsOn: [binding],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# Enable notifications by giving the correct IAM permission to the unique service account.\ngcs_account = gcp.storage.get_project_service_account()\ntopic = gcp.pubsub.Topic(\"topic\", name=\"default_topic\")\nbinding = gcp.pubsub.TopicIAMBinding(\"binding\",\n topic=topic.id,\n role=\"roles/pubsub.publisher\",\n members=[f\"serviceAccount:{gcs_account.email_address}\"])\n# End enabling notifications\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"default_bucket\",\n location=\"US\")\nnotification = gcp.storage.Notification(\"notification\",\n bucket=bucket.name,\n payload_format=\"JSON_API_V1\",\n topic=topic.id,\n event_types=[\n \"OBJECT_FINALIZE\",\n \"OBJECT_METADATA_UPDATE\",\n ],\n custom_attributes={\n \"new-attribute\": \"new-attribute-value\",\n },\n opts = pulumi.ResourceOptions(depends_on=[binding]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // Enable notifications by giving the correct IAM permission to the unique service account.\n var gcsAccount = Gcp.Storage.GetProjectServiceAccount.Invoke();\n\n var topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n Name = \"default_topic\",\n });\n\n var binding = new Gcp.PubSub.TopicIAMBinding(\"binding\", new()\n {\n Topic = topic.Id,\n Role = \"roles/pubsub.publisher\",\n Members = new[]\n {\n $\"serviceAccount:{gcsAccount.Apply(getProjectServiceAccountResult =\u003e getProjectServiceAccountResult.EmailAddress)}\",\n },\n });\n\n // End enabling notifications\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = \"default_bucket\",\n Location = \"US\",\n });\n\n var notification = new Gcp.Storage.Notification(\"notification\", new()\n {\n Bucket = bucket.Name,\n PayloadFormat = \"JSON_API_V1\",\n Topic = topic.Id,\n EventTypes = new[]\n {\n \"OBJECT_FINALIZE\",\n \"OBJECT_METADATA_UPDATE\",\n },\n CustomAttributes = \n {\n { \"new-attribute\", \"new-attribute-value\" },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n binding,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Enable notifications by giving the correct IAM permission to the unique service account.\n\t\tgcsAccount, err := storage.GetProjectServiceAccount(ctx, \u0026storage.GetProjectServiceAccountArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttopic, err := pubsub.NewTopic(ctx, \"topic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"default_topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbinding, err := pubsub.NewTopicIAMBinding(ctx, \"binding\", \u0026pubsub.TopicIAMBindingArgs{\n\t\t\tTopic: topic.ID(),\n\t\t\tRole: pulumi.String(\"roles/pubsub.publisher\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:%v\", gcsAccount.EmailAddress),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// End enabling notifications\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"default_bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewNotification(ctx, \"notification\", \u0026storage.NotificationArgs{\n\t\t\tBucket: bucket.Name,\n\t\t\tPayloadFormat: pulumi.String(\"JSON_API_V1\"),\n\t\t\tTopic: topic.ID(),\n\t\t\tEventTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"OBJECT_FINALIZE\"),\n\t\t\t\tpulumi.String(\"OBJECT_METADATA_UPDATE\"),\n\t\t\t},\n\t\t\tCustomAttributes: pulumi.StringMap{\n\t\t\t\t\"new-attribute\": pulumi.String(\"new-attribute-value\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tbinding,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.StorageFunctions;\nimport com.pulumi.gcp.storage.inputs.GetProjectServiceAccountArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.pubsub.TopicIAMBinding;\nimport com.pulumi.gcp.pubsub.TopicIAMBindingArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.Notification;\nimport com.pulumi.gcp.storage.NotificationArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // Enable notifications by giving the correct IAM permission to the unique service account.\n final var gcsAccount = StorageFunctions.getProjectServiceAccount();\n\n var topic = new Topic(\"topic\", TopicArgs.builder()\n .name(\"default_topic\")\n .build());\n\n var binding = new TopicIAMBinding(\"binding\", TopicIAMBindingArgs.builder()\n .topic(topic.id())\n .role(\"roles/pubsub.publisher\")\n .members(String.format(\"serviceAccount:%s\", gcsAccount.applyValue(getProjectServiceAccountResult -\u003e getProjectServiceAccountResult.emailAddress())))\n .build());\n\n // End enabling notifications\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(\"default_bucket\")\n .location(\"US\")\n .build());\n\n var notification = new Notification(\"notification\", NotificationArgs.builder()\n .bucket(bucket.name())\n .payloadFormat(\"JSON_API_V1\")\n .topic(topic.id())\n .eventTypes( \n \"OBJECT_FINALIZE\",\n \"OBJECT_METADATA_UPDATE\")\n .customAttributes(Map.of(\"new-attribute\", \"new-attribute-value\"))\n .build(), CustomResourceOptions.builder()\n .dependsOn(binding)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n notification:\n type: gcp:storage:Notification\n properties:\n bucket: ${bucket.name}\n payloadFormat: JSON_API_V1\n topic: ${topic.id}\n eventTypes:\n - OBJECT_FINALIZE\n - OBJECT_METADATA_UPDATE\n customAttributes:\n new-attribute: new-attribute-value\n options:\n dependson:\n - ${binding}\n binding:\n type: gcp:pubsub:TopicIAMBinding\n properties:\n topic: ${topic.id}\n role: roles/pubsub.publisher\n members:\n - serviceAccount:${gcsAccount.emailAddress}\n # End enabling notifications\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: default_bucket\n location: US\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: default_topic\nvariables:\n # Enable notifications by giving the correct IAM permission to the unique service account.\n gcsAccount:\n fn::invoke:\n Function: gcp:storage:getProjectServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nStorage notifications can be imported using any of these accepted formats:\n\n* `{{bucket_name}}/notificationConfigs/{{id}}`\n\nWhen using the `pulumi import` command, Storage notifications can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:storage/notification:Notification default {{bucket_name}}/notificationConfigs/{{id}}\n```\n\n", "properties": { "bucket": { "type": "string", @@ -253513,7 +253513,7 @@ } }, "gcp:tpu/node:Node": { - "description": "A Cloud TPU instance.\n\n\nTo get more information about Node, see:\n\n* [API documentation](https://cloud.google.com/tpu/docs/reference/rest/v1/projects.locations.nodes)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/tpu/docs/)\n\n## Example Usage\n\n### Tpu Node Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst available = gcp.tpu.getTensorflowVersions({});\nconst tpu = new gcp.tpu.Node(\"tpu\", {\n name: \"test-tpu\",\n zone: \"us-central1-b\",\n acceleratorType: \"v3-8\",\n tensorflowVersion: available.then(available =\u003e available.versions?.[0]),\n cidrBlock: \"10.2.0.0/29\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\navailable = gcp.tpu.get_tensorflow_versions()\ntpu = gcp.tpu.Node(\"tpu\",\n name=\"test-tpu\",\n zone=\"us-central1-b\",\n accelerator_type=\"v3-8\",\n tensorflow_version=available.versions[0],\n cidr_block=\"10.2.0.0/29\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var available = Gcp.Tpu.GetTensorflowVersions.Invoke();\n\n var tpu = new Gcp.Tpu.Node(\"tpu\", new()\n {\n Name = \"test-tpu\",\n Zone = \"us-central1-b\",\n AcceleratorType = \"v3-8\",\n TensorflowVersion = available.Apply(getTensorflowVersionsResult =\u003e getTensorflowVersionsResult.Versions[0]),\n CidrBlock = \"10.2.0.0/29\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/tpu\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tavailable, err := tpu.GetTensorflowVersions(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = tpu.NewNode(ctx, \"tpu\", \u0026tpu.NodeArgs{\n\t\t\tName: pulumi.String(\"test-tpu\"),\n\t\t\tZone: pulumi.String(\"us-central1-b\"),\n\t\t\tAcceleratorType: pulumi.String(\"v3-8\"),\n\t\t\tTensorflowVersion: pulumi.String(available.Versions[0]),\n\t\t\tCidrBlock: pulumi.String(\"10.2.0.0/29\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.tpu.TpuFunctions;\nimport com.pulumi.gcp.tpu.inputs.GetTensorflowVersionsArgs;\nimport com.pulumi.gcp.tpu.Node;\nimport com.pulumi.gcp.tpu.NodeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var available = TpuFunctions.getTensorflowVersions();\n\n var tpu = new Node(\"tpu\", NodeArgs.builder()\n .name(\"test-tpu\")\n .zone(\"us-central1-b\")\n .acceleratorType(\"v3-8\")\n .tensorflowVersion(available.applyValue(getTensorflowVersionsResult -\u003e getTensorflowVersionsResult.versions()[0]))\n .cidrBlock(\"10.2.0.0/29\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tpu:\n type: gcp:tpu:Node\n properties:\n name: test-tpu\n zone: us-central1-b\n acceleratorType: v3-8\n tensorflowVersion: ${available.versions[0]}\n cidrBlock: 10.2.0.0/29\nvariables:\n available:\n fn::invoke:\n Function: gcp:tpu:getTensorflowVersions\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Tpu Node Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst available = gcp.tpu.getTensorflowVersions({});\nconst network = new gcp.compute.Network(\"network\", {name: \"tpu-node-network\"});\nconst serviceRange = new gcp.compute.GlobalAddress(\"service_range\", {\n name: \"my-global-address\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: network.id,\n});\nconst privateServiceConnection = new gcp.servicenetworking.Connection(\"private_service_connection\", {\n network: network.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [serviceRange.name],\n});\nconst tpu = new gcp.tpu.Node(\"tpu\", {\n name: \"test-tpu\",\n zone: \"us-central1-b\",\n acceleratorType: \"v3-8\",\n tensorflowVersion: available.then(available =\u003e available.versions?.[0]),\n description: \"Google Provider test TPU\",\n useServiceNetworking: true,\n network: privateServiceConnection.network,\n labels: {\n foo: \"bar\",\n },\n schedulingConfig: {\n preemptible: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\navailable = gcp.tpu.get_tensorflow_versions()\nnetwork = gcp.compute.Network(\"network\", name=\"tpu-node-network\")\nservice_range = gcp.compute.GlobalAddress(\"service_range\",\n name=\"my-global-address\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=network.id)\nprivate_service_connection = gcp.servicenetworking.Connection(\"private_service_connection\",\n network=network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[service_range.name])\ntpu = gcp.tpu.Node(\"tpu\",\n name=\"test-tpu\",\n zone=\"us-central1-b\",\n accelerator_type=\"v3-8\",\n tensorflow_version=available.versions[0],\n description=\"Google Provider test TPU\",\n use_service_networking=True,\n network=private_service_connection.network,\n labels={\n \"foo\": \"bar\",\n },\n scheduling_config={\n \"preemptible\": 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 available = Gcp.Tpu.GetTensorflowVersions.Invoke();\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"tpu-node-network\",\n });\n\n var serviceRange = new Gcp.Compute.GlobalAddress(\"service_range\", new()\n {\n Name = \"my-global-address\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = network.Id,\n });\n\n var privateServiceConnection = new Gcp.ServiceNetworking.Connection(\"private_service_connection\", new()\n {\n Network = network.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n serviceRange.Name,\n },\n });\n\n var tpu = new Gcp.Tpu.Node(\"tpu\", new()\n {\n Name = \"test-tpu\",\n Zone = \"us-central1-b\",\n AcceleratorType = \"v3-8\",\n TensorflowVersion = available.Apply(getTensorflowVersionsResult =\u003e getTensorflowVersionsResult.Versions[0]),\n Description = \"Google Provider test TPU\",\n UseServiceNetworking = true,\n Network = privateServiceConnection.Network,\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n SchedulingConfig = new Gcp.Tpu.Inputs.NodeSchedulingConfigArgs\n {\n Preemptible = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/tpu\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tavailable, err := tpu.GetTensorflowVersions(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"tpu-node-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserviceRange, err := compute.NewGlobalAddress(ctx, \"service_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"my-global-address\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateServiceConnection, err := servicenetworking.NewConnection(ctx, \"private_service_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: network.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tserviceRange.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = tpu.NewNode(ctx, \"tpu\", \u0026tpu.NodeArgs{\n\t\t\tName: pulumi.String(\"test-tpu\"),\n\t\t\tZone: pulumi.String(\"us-central1-b\"),\n\t\t\tAcceleratorType: pulumi.String(\"v3-8\"),\n\t\t\tTensorflowVersion: pulumi.String(available.Versions[0]),\n\t\t\tDescription: pulumi.String(\"Google Provider test TPU\"),\n\t\t\tUseServiceNetworking: pulumi.Bool(true),\n\t\t\tNetwork: privateServiceConnection.Network,\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tSchedulingConfig: \u0026tpu.NodeSchedulingConfigArgs{\n\t\t\t\tPreemptible: 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.tpu.TpuFunctions;\nimport com.pulumi.gcp.tpu.inputs.GetTensorflowVersionsArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.tpu.Node;\nimport com.pulumi.gcp.tpu.NodeArgs;\nimport com.pulumi.gcp.tpu.inputs.NodeSchedulingConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var available = TpuFunctions.getTensorflowVersions();\n\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"tpu-node-network\")\n .build());\n\n var serviceRange = new GlobalAddress(\"serviceRange\", GlobalAddressArgs.builder()\n .name(\"my-global-address\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(network.id())\n .build());\n\n var privateServiceConnection = new Connection(\"privateServiceConnection\", ConnectionArgs.builder()\n .network(network.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(serviceRange.name())\n .build());\n\n var tpu = new Node(\"tpu\", NodeArgs.builder()\n .name(\"test-tpu\")\n .zone(\"us-central1-b\")\n .acceleratorType(\"v3-8\")\n .tensorflowVersion(available.applyValue(getTensorflowVersionsResult -\u003e getTensorflowVersionsResult.versions()[0]))\n .description(\"Google Provider test TPU\")\n .useServiceNetworking(true)\n .network(privateServiceConnection.network())\n .labels(Map.of(\"foo\", \"bar\"))\n .schedulingConfig(NodeSchedulingConfigArgs.builder()\n .preemptible(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tpu:\n type: gcp:tpu:Node\n properties:\n name: test-tpu\n zone: us-central1-b\n acceleratorType: v3-8\n tensorflowVersion: ${available.versions[0]}\n description: Google Provider test TPU\n useServiceNetworking: true\n network: ${privateServiceConnection.network}\n labels:\n foo: bar\n schedulingConfig:\n preemptible: true\n network:\n type: gcp:compute:Network\n properties:\n name: tpu-node-network\n serviceRange:\n type: gcp:compute:GlobalAddress\n name: service_range\n properties:\n name: my-global-address\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${network.id}\n privateServiceConnection:\n type: gcp:servicenetworking:Connection\n name: private_service_connection\n properties:\n network: ${network.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${serviceRange.name}\nvariables:\n available:\n fn::invoke:\n Function: gcp:tpu:getTensorflowVersions\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNode can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{zone}}/nodes/{{name}}`\n\n* `{{project}}/{{zone}}/{{name}}`\n\n* `{{zone}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Node can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:tpu/node:Node default projects/{{project}}/locations/{{zone}}/nodes/{{name}}\n```\n\n```sh\n$ pulumi import gcp:tpu/node:Node default {{project}}/{{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:tpu/node:Node default {{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:tpu/node:Node default {{name}}\n```\n\n", + "description": "A Cloud TPU instance.\n\n\nTo get more information about Node, see:\n\n* [API documentation](https://cloud.google.com/tpu/docs/reference/rest/v1/projects.locations.nodes)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/tpu/docs/)\n\n## Example Usage\n\n### Tpu Node Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst available = gcp.tpu.getTensorflowVersions({});\nconst tpu = new gcp.tpu.Node(\"tpu\", {\n name: \"test-tpu\",\n zone: \"us-central1-b\",\n acceleratorType: \"v3-8\",\n tensorflowVersion: available.then(available =\u003e available.versions?.[0]),\n cidrBlock: \"10.2.0.0/29\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\navailable = gcp.tpu.get_tensorflow_versions()\ntpu = gcp.tpu.Node(\"tpu\",\n name=\"test-tpu\",\n zone=\"us-central1-b\",\n accelerator_type=\"v3-8\",\n tensorflow_version=available.versions[0],\n cidr_block=\"10.2.0.0/29\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var available = Gcp.Tpu.GetTensorflowVersions.Invoke();\n\n var tpu = new Gcp.Tpu.Node(\"tpu\", new()\n {\n Name = \"test-tpu\",\n Zone = \"us-central1-b\",\n AcceleratorType = \"v3-8\",\n TensorflowVersion = available.Apply(getTensorflowVersionsResult =\u003e getTensorflowVersionsResult.Versions[0]),\n CidrBlock = \"10.2.0.0/29\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/tpu\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tavailable, err := tpu.GetTensorflowVersions(ctx, \u0026tpu.GetTensorflowVersionsArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = tpu.NewNode(ctx, \"tpu\", \u0026tpu.NodeArgs{\n\t\t\tName: pulumi.String(\"test-tpu\"),\n\t\t\tZone: pulumi.String(\"us-central1-b\"),\n\t\t\tAcceleratorType: pulumi.String(\"v3-8\"),\n\t\t\tTensorflowVersion: pulumi.String(available.Versions[0]),\n\t\t\tCidrBlock: pulumi.String(\"10.2.0.0/29\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.tpu.TpuFunctions;\nimport com.pulumi.gcp.tpu.inputs.GetTensorflowVersionsArgs;\nimport com.pulumi.gcp.tpu.Node;\nimport com.pulumi.gcp.tpu.NodeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var available = TpuFunctions.getTensorflowVersions();\n\n var tpu = new Node(\"tpu\", NodeArgs.builder()\n .name(\"test-tpu\")\n .zone(\"us-central1-b\")\n .acceleratorType(\"v3-8\")\n .tensorflowVersion(available.applyValue(getTensorflowVersionsResult -\u003e getTensorflowVersionsResult.versions()[0]))\n .cidrBlock(\"10.2.0.0/29\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tpu:\n type: gcp:tpu:Node\n properties:\n name: test-tpu\n zone: us-central1-b\n acceleratorType: v3-8\n tensorflowVersion: ${available.versions[0]}\n cidrBlock: 10.2.0.0/29\nvariables:\n available:\n fn::invoke:\n Function: gcp:tpu:getTensorflowVersions\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Tpu Node Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst available = gcp.tpu.getTensorflowVersions({});\nconst network = new gcp.compute.Network(\"network\", {name: \"tpu-node-network\"});\nconst serviceRange = new gcp.compute.GlobalAddress(\"service_range\", {\n name: \"my-global-address\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: network.id,\n});\nconst privateServiceConnection = new gcp.servicenetworking.Connection(\"private_service_connection\", {\n network: network.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [serviceRange.name],\n});\nconst tpu = new gcp.tpu.Node(\"tpu\", {\n name: \"test-tpu\",\n zone: \"us-central1-b\",\n acceleratorType: \"v3-8\",\n tensorflowVersion: available.then(available =\u003e available.versions?.[0]),\n description: \"Google Provider test TPU\",\n useServiceNetworking: true,\n network: privateServiceConnection.network,\n labels: {\n foo: \"bar\",\n },\n schedulingConfig: {\n preemptible: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\navailable = gcp.tpu.get_tensorflow_versions()\nnetwork = gcp.compute.Network(\"network\", name=\"tpu-node-network\")\nservice_range = gcp.compute.GlobalAddress(\"service_range\",\n name=\"my-global-address\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=network.id)\nprivate_service_connection = gcp.servicenetworking.Connection(\"private_service_connection\",\n network=network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[service_range.name])\ntpu = gcp.tpu.Node(\"tpu\",\n name=\"test-tpu\",\n zone=\"us-central1-b\",\n accelerator_type=\"v3-8\",\n tensorflow_version=available.versions[0],\n description=\"Google Provider test TPU\",\n use_service_networking=True,\n network=private_service_connection.network,\n labels={\n \"foo\": \"bar\",\n },\n scheduling_config={\n \"preemptible\": 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 available = Gcp.Tpu.GetTensorflowVersions.Invoke();\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"tpu-node-network\",\n });\n\n var serviceRange = new Gcp.Compute.GlobalAddress(\"service_range\", new()\n {\n Name = \"my-global-address\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = network.Id,\n });\n\n var privateServiceConnection = new Gcp.ServiceNetworking.Connection(\"private_service_connection\", new()\n {\n Network = network.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n serviceRange.Name,\n },\n });\n\n var tpu = new Gcp.Tpu.Node(\"tpu\", new()\n {\n Name = \"test-tpu\",\n Zone = \"us-central1-b\",\n AcceleratorType = \"v3-8\",\n TensorflowVersion = available.Apply(getTensorflowVersionsResult =\u003e getTensorflowVersionsResult.Versions[0]),\n Description = \"Google Provider test TPU\",\n UseServiceNetworking = true,\n Network = privateServiceConnection.Network,\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n SchedulingConfig = new Gcp.Tpu.Inputs.NodeSchedulingConfigArgs\n {\n Preemptible = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/tpu\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tavailable, err := tpu.GetTensorflowVersions(ctx, \u0026tpu.GetTensorflowVersionsArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"tpu-node-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserviceRange, err := compute.NewGlobalAddress(ctx, \"service_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"my-global-address\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateServiceConnection, err := servicenetworking.NewConnection(ctx, \"private_service_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: network.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tserviceRange.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = tpu.NewNode(ctx, \"tpu\", \u0026tpu.NodeArgs{\n\t\t\tName: pulumi.String(\"test-tpu\"),\n\t\t\tZone: pulumi.String(\"us-central1-b\"),\n\t\t\tAcceleratorType: pulumi.String(\"v3-8\"),\n\t\t\tTensorflowVersion: pulumi.String(available.Versions[0]),\n\t\t\tDescription: pulumi.String(\"Google Provider test TPU\"),\n\t\t\tUseServiceNetworking: pulumi.Bool(true),\n\t\t\tNetwork: privateServiceConnection.Network,\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tSchedulingConfig: \u0026tpu.NodeSchedulingConfigArgs{\n\t\t\t\tPreemptible: 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.tpu.TpuFunctions;\nimport com.pulumi.gcp.tpu.inputs.GetTensorflowVersionsArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.tpu.Node;\nimport com.pulumi.gcp.tpu.NodeArgs;\nimport com.pulumi.gcp.tpu.inputs.NodeSchedulingConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var available = TpuFunctions.getTensorflowVersions();\n\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"tpu-node-network\")\n .build());\n\n var serviceRange = new GlobalAddress(\"serviceRange\", GlobalAddressArgs.builder()\n .name(\"my-global-address\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(network.id())\n .build());\n\n var privateServiceConnection = new Connection(\"privateServiceConnection\", ConnectionArgs.builder()\n .network(network.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(serviceRange.name())\n .build());\n\n var tpu = new Node(\"tpu\", NodeArgs.builder()\n .name(\"test-tpu\")\n .zone(\"us-central1-b\")\n .acceleratorType(\"v3-8\")\n .tensorflowVersion(available.applyValue(getTensorflowVersionsResult -\u003e getTensorflowVersionsResult.versions()[0]))\n .description(\"Google Provider test TPU\")\n .useServiceNetworking(true)\n .network(privateServiceConnection.network())\n .labels(Map.of(\"foo\", \"bar\"))\n .schedulingConfig(NodeSchedulingConfigArgs.builder()\n .preemptible(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tpu:\n type: gcp:tpu:Node\n properties:\n name: test-tpu\n zone: us-central1-b\n acceleratorType: v3-8\n tensorflowVersion: ${available.versions[0]}\n description: Google Provider test TPU\n useServiceNetworking: true\n network: ${privateServiceConnection.network}\n labels:\n foo: bar\n schedulingConfig:\n preemptible: true\n network:\n type: gcp:compute:Network\n properties:\n name: tpu-node-network\n serviceRange:\n type: gcp:compute:GlobalAddress\n name: service_range\n properties:\n name: my-global-address\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${network.id}\n privateServiceConnection:\n type: gcp:servicenetworking:Connection\n name: private_service_connection\n properties:\n network: ${network.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${serviceRange.name}\nvariables:\n available:\n fn::invoke:\n Function: gcp:tpu:getTensorflowVersions\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNode can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{zone}}/nodes/{{name}}`\n\n* `{{project}}/{{zone}}/{{name}}`\n\n* `{{zone}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Node can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:tpu/node:Node default projects/{{project}}/locations/{{zone}}/nodes/{{name}}\n```\n\n```sh\n$ pulumi import gcp:tpu/node:Node default {{project}}/{{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:tpu/node:Node default {{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:tpu/node:Node default {{name}}\n```\n\n", "properties": { "acceleratorType": { "type": "string", @@ -253757,7 +253757,7 @@ } }, "gcp:tpu/v2Vm:V2Vm": { - "description": "## Example Usage\n\n### Tpu V2 Vm Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst available = gcp.tpu.getV2RuntimeVersions({});\nconst tpu = new gcp.tpu.V2Vm(\"tpu\", {\n name: \"test-tpu\",\n zone: \"us-central1-c\",\n runtimeVersion: \"tpu-vm-tf-2.13.0\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\navailable = gcp.tpu.get_v2_runtime_versions()\ntpu = gcp.tpu.V2Vm(\"tpu\",\n name=\"test-tpu\",\n zone=\"us-central1-c\",\n runtime_version=\"tpu-vm-tf-2.13.0\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var available = Gcp.Tpu.GetV2RuntimeVersions.Invoke();\n\n var tpu = new Gcp.Tpu.V2Vm(\"tpu\", new()\n {\n Name = \"test-tpu\",\n Zone = \"us-central1-c\",\n RuntimeVersion = \"tpu-vm-tf-2.13.0\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/tpu\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := tpu.GetV2RuntimeVersions(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = tpu.NewV2Vm(ctx, \"tpu\", \u0026tpu.V2VmArgs{\n\t\t\tName: pulumi.String(\"test-tpu\"),\n\t\t\tZone: pulumi.String(\"us-central1-c\"),\n\t\t\tRuntimeVersion: pulumi.String(\"tpu-vm-tf-2.13.0\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.tpu.TpuFunctions;\nimport com.pulumi.gcp.tpu.inputs.GetV2RuntimeVersionsArgs;\nimport com.pulumi.gcp.tpu.V2Vm;\nimport com.pulumi.gcp.tpu.V2VmArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var available = TpuFunctions.getV2RuntimeVersions();\n\n var tpu = new V2Vm(\"tpu\", V2VmArgs.builder()\n .name(\"test-tpu\")\n .zone(\"us-central1-c\")\n .runtimeVersion(\"tpu-vm-tf-2.13.0\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tpu:\n type: gcp:tpu:V2Vm\n properties:\n name: test-tpu\n zone: us-central1-c\n runtimeVersion: tpu-vm-tf-2.13.0\nvariables:\n available:\n fn::invoke:\n Function: gcp:tpu:getV2RuntimeVersions\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Tpu V2 Vm Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\nconst available = gcp.tpu.getV2RuntimeVersions({});\nconst availableGetV2AcceleratorTypes = gcp.tpu.getV2AcceleratorTypes({});\nconst network = new gcp.compute.Network(\"network\", {\n name: \"tpu-net\",\n autoCreateSubnetworks: false,\n});\nconst subnet = new gcp.compute.Subnetwork(\"subnet\", {\n name: \"tpu-subnet\",\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n network: network.id,\n});\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"tpu-sa\",\n displayName: \"Test TPU VM\",\n});\nconst disk = new gcp.compute.Disk(\"disk\", {\n name: \"tpu-disk\",\n image: \"debian-cloud/debian-11\",\n size: 10,\n type: \"pd-ssd\",\n zone: \"us-central1-c\",\n});\n// Wait after service account creation to limit eventual consistency errors.\nconst wait60Seconds = new time.index.Sleep(\"wait_60_seconds\", {createDuration: \"60s\"}, {\n dependsOn: [sa],\n});\nconst tpu = new gcp.tpu.V2Vm(\"tpu\", {\n name: \"test-tpu\",\n zone: \"us-central1-c\",\n description: \"Text description of the TPU.\",\n runtimeVersion: \"tpu-vm-tf-2.13.0\",\n acceleratorConfig: {\n type: \"V2\",\n topology: \"2x2\",\n },\n cidrBlock: \"10.0.0.0/29\",\n networkConfig: {\n canIpForward: true,\n enableExternalIps: true,\n network: network.id,\n subnetwork: subnet.id,\n },\n schedulingConfig: {\n preemptible: true,\n },\n shieldedInstanceConfig: {\n enableSecureBoot: true,\n },\n serviceAccount: {\n email: sa.email,\n scopes: [\"https://www.googleapis.com/auth/cloud-platform\"],\n },\n dataDisks: [{\n sourceDisk: disk.id,\n mode: \"READ_ONLY\",\n }],\n labels: {\n foo: \"bar\",\n },\n metadata: {\n foo: \"bar\",\n },\n tags: [\"foo\"],\n}, {\n dependsOn: [wait60Seconds],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\navailable = gcp.tpu.get_v2_runtime_versions()\navailable_get_v2_accelerator_types = gcp.tpu.get_v2_accelerator_types()\nnetwork = gcp.compute.Network(\"network\",\n name=\"tpu-net\",\n auto_create_subnetworks=False)\nsubnet = gcp.compute.Subnetwork(\"subnet\",\n name=\"tpu-subnet\",\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\",\n network=network.id)\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"tpu-sa\",\n display_name=\"Test TPU VM\")\ndisk = gcp.compute.Disk(\"disk\",\n name=\"tpu-disk\",\n image=\"debian-cloud/debian-11\",\n size=10,\n type=\"pd-ssd\",\n zone=\"us-central1-c\")\n# Wait after service account creation to limit eventual consistency errors.\nwait60_seconds = time.index.Sleep(\"wait_60_seconds\", create_duration=60s,\nopts = pulumi.ResourceOptions(depends_on=[sa]))\ntpu = gcp.tpu.V2Vm(\"tpu\",\n name=\"test-tpu\",\n zone=\"us-central1-c\",\n description=\"Text description of the TPU.\",\n runtime_version=\"tpu-vm-tf-2.13.0\",\n accelerator_config={\n \"type\": \"V2\",\n \"topology\": \"2x2\",\n },\n cidr_block=\"10.0.0.0/29\",\n network_config={\n \"can_ip_forward\": True,\n \"enable_external_ips\": True,\n \"network\": network.id,\n \"subnetwork\": subnet.id,\n },\n scheduling_config={\n \"preemptible\": True,\n },\n shielded_instance_config={\n \"enable_secure_boot\": True,\n },\n service_account={\n \"email\": sa.email,\n \"scopes\": [\"https://www.googleapis.com/auth/cloud-platform\"],\n },\n data_disks=[{\n \"source_disk\": disk.id,\n \"mode\": \"READ_ONLY\",\n }],\n labels={\n \"foo\": \"bar\",\n },\n metadata={\n \"foo\": \"bar\",\n },\n tags=[\"foo\"],\n opts = pulumi.ResourceOptions(depends_on=[wait60_seconds]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Time = Pulumi.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var available = Gcp.Tpu.GetV2RuntimeVersions.Invoke();\n\n var availableGetV2AcceleratorTypes = Gcp.Tpu.GetV2AcceleratorTypes.Invoke();\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"tpu-net\",\n AutoCreateSubnetworks = false,\n });\n\n var subnet = new Gcp.Compute.Subnetwork(\"subnet\", new()\n {\n Name = \"tpu-subnet\",\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n Network = network.Id,\n });\n\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"tpu-sa\",\n DisplayName = \"Test TPU VM\",\n });\n\n var disk = new Gcp.Compute.Disk(\"disk\", new()\n {\n Name = \"tpu-disk\",\n Image = \"debian-cloud/debian-11\",\n Size = 10,\n Type = \"pd-ssd\",\n Zone = \"us-central1-c\",\n });\n\n // Wait after service account creation to limit eventual consistency errors.\n var wait60Seconds = new Time.Index.Sleep(\"wait_60_seconds\", new()\n {\n CreateDuration = \"60s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n sa,\n },\n });\n\n var tpu = new Gcp.Tpu.V2Vm(\"tpu\", new()\n {\n Name = \"test-tpu\",\n Zone = \"us-central1-c\",\n Description = \"Text description of the TPU.\",\n RuntimeVersion = \"tpu-vm-tf-2.13.0\",\n AcceleratorConfig = new Gcp.Tpu.Inputs.V2VmAcceleratorConfigArgs\n {\n Type = \"V2\",\n Topology = \"2x2\",\n },\n CidrBlock = \"10.0.0.0/29\",\n NetworkConfig = new Gcp.Tpu.Inputs.V2VmNetworkConfigArgs\n {\n CanIpForward = true,\n EnableExternalIps = true,\n Network = network.Id,\n Subnetwork = subnet.Id,\n },\n SchedulingConfig = new Gcp.Tpu.Inputs.V2VmSchedulingConfigArgs\n {\n Preemptible = true,\n },\n ShieldedInstanceConfig = new Gcp.Tpu.Inputs.V2VmShieldedInstanceConfigArgs\n {\n EnableSecureBoot = true,\n },\n ServiceAccount = new Gcp.Tpu.Inputs.V2VmServiceAccountArgs\n {\n Email = sa.Email,\n Scopes = new[]\n {\n \"https://www.googleapis.com/auth/cloud-platform\",\n },\n },\n DataDisks = new[]\n {\n new Gcp.Tpu.Inputs.V2VmDataDiskArgs\n {\n SourceDisk = disk.Id,\n Mode = \"READ_ONLY\",\n },\n },\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Metadata = \n {\n { \"foo\", \"bar\" },\n },\n Tags = new[]\n {\n \"foo\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait60Seconds,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/tpu\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := tpu.GetV2RuntimeVersions(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = tpu.GetV2AcceleratorTypes(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"tpu-net\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsubnet, err := compute.NewSubnetwork(ctx, \"subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"tpu-subnet\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"tpu-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Test TPU VM\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdisk, err := compute.NewDisk(ctx, \"disk\", \u0026compute.DiskArgs{\n\t\t\tName: pulumi.String(\"tpu-disk\"),\n\t\t\tImage: pulumi.String(\"debian-cloud/debian-11\"),\n\t\t\tSize: pulumi.Int(10),\n\t\t\tType: pulumi.String(\"pd-ssd\"),\n\t\t\tZone: pulumi.String(\"us-central1-c\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Wait after service account creation to limit eventual consistency errors.\n\t\twait60Seconds, err := time.NewSleep(ctx, \"wait_60_seconds\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"60s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsa,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = tpu.NewV2Vm(ctx, \"tpu\", \u0026tpu.V2VmArgs{\n\t\t\tName: pulumi.String(\"test-tpu\"),\n\t\t\tZone: pulumi.String(\"us-central1-c\"),\n\t\t\tDescription: pulumi.String(\"Text description of the TPU.\"),\n\t\t\tRuntimeVersion: pulumi.String(\"tpu-vm-tf-2.13.0\"),\n\t\t\tAcceleratorConfig: \u0026tpu.V2VmAcceleratorConfigArgs{\n\t\t\t\tType: pulumi.String(\"V2\"),\n\t\t\t\tTopology: pulumi.String(\"2x2\"),\n\t\t\t},\n\t\t\tCidrBlock: pulumi.String(\"10.0.0.0/29\"),\n\t\t\tNetworkConfig: \u0026tpu.V2VmNetworkConfigArgs{\n\t\t\t\tCanIpForward: pulumi.Bool(true),\n\t\t\t\tEnableExternalIps: pulumi.Bool(true),\n\t\t\t\tNetwork: network.ID(),\n\t\t\t\tSubnetwork: subnet.ID(),\n\t\t\t},\n\t\t\tSchedulingConfig: \u0026tpu.V2VmSchedulingConfigArgs{\n\t\t\t\tPreemptible: pulumi.Bool(true),\n\t\t\t},\n\t\t\tShieldedInstanceConfig: \u0026tpu.V2VmShieldedInstanceConfigArgs{\n\t\t\t\tEnableSecureBoot: pulumi.Bool(true),\n\t\t\t},\n\t\t\tServiceAccount: \u0026tpu.V2VmServiceAccountArgs{\n\t\t\t\tEmail: sa.Email,\n\t\t\t\tScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"https://www.googleapis.com/auth/cloud-platform\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDataDisks: tpu.V2VmDataDiskArray{\n\t\t\t\t\u0026tpu.V2VmDataDiskArgs{\n\t\t\t\t\tSourceDisk: disk.ID(),\n\t\t\t\t\tMode: pulumi.String(\"READ_ONLY\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait60Seconds,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.tpu.TpuFunctions;\nimport com.pulumi.gcp.tpu.inputs.GetV2RuntimeVersionsArgs;\nimport com.pulumi.gcp.tpu.inputs.GetV2AcceleratorTypesArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.compute.Disk;\nimport com.pulumi.gcp.compute.DiskArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.tpu.V2Vm;\nimport com.pulumi.gcp.tpu.V2VmArgs;\nimport com.pulumi.gcp.tpu.inputs.V2VmAcceleratorConfigArgs;\nimport com.pulumi.gcp.tpu.inputs.V2VmNetworkConfigArgs;\nimport com.pulumi.gcp.tpu.inputs.V2VmSchedulingConfigArgs;\nimport com.pulumi.gcp.tpu.inputs.V2VmShieldedInstanceConfigArgs;\nimport com.pulumi.gcp.tpu.inputs.V2VmServiceAccountArgs;\nimport com.pulumi.gcp.tpu.inputs.V2VmDataDiskArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var available = TpuFunctions.getV2RuntimeVersions();\n\n final var availableGetV2AcceleratorTypes = TpuFunctions.getV2AcceleratorTypes();\n\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"tpu-net\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnet = new Subnetwork(\"subnet\", SubnetworkArgs.builder()\n .name(\"tpu-subnet\")\n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .network(network.id())\n .build());\n\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"tpu-sa\")\n .displayName(\"Test TPU VM\")\n .build());\n\n var disk = new Disk(\"disk\", DiskArgs.builder()\n .name(\"tpu-disk\")\n .image(\"debian-cloud/debian-11\")\n .size(10)\n .type(\"pd-ssd\")\n .zone(\"us-central1-c\")\n .build());\n\n // Wait after service account creation to limit eventual consistency errors.\n var wait60Seconds = new Sleep(\"wait60Seconds\", SleepArgs.builder()\n .createDuration(\"60s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(sa)\n .build());\n\n var tpu = new V2Vm(\"tpu\", V2VmArgs.builder()\n .name(\"test-tpu\")\n .zone(\"us-central1-c\")\n .description(\"Text description of the TPU.\")\n .runtimeVersion(\"tpu-vm-tf-2.13.0\")\n .acceleratorConfig(V2VmAcceleratorConfigArgs.builder()\n .type(\"V2\")\n .topology(\"2x2\")\n .build())\n .cidrBlock(\"10.0.0.0/29\")\n .networkConfig(V2VmNetworkConfigArgs.builder()\n .canIpForward(true)\n .enableExternalIps(true)\n .network(network.id())\n .subnetwork(subnet.id())\n .build())\n .schedulingConfig(V2VmSchedulingConfigArgs.builder()\n .preemptible(true)\n .build())\n .shieldedInstanceConfig(V2VmShieldedInstanceConfigArgs.builder()\n .enableSecureBoot(true)\n .build())\n .serviceAccount(V2VmServiceAccountArgs.builder()\n .email(sa.email())\n .scopes(\"https://www.googleapis.com/auth/cloud-platform\")\n .build())\n .dataDisks(V2VmDataDiskArgs.builder()\n .sourceDisk(disk.id())\n .mode(\"READ_ONLY\")\n .build())\n .labels(Map.of(\"foo\", \"bar\"))\n .metadata(Map.of(\"foo\", \"bar\"))\n .tags(\"foo\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait60Seconds)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tpu:\n type: gcp:tpu:V2Vm\n properties:\n name: test-tpu\n zone: us-central1-c\n description: Text description of the TPU.\n runtimeVersion: tpu-vm-tf-2.13.0\n acceleratorConfig:\n type: V2\n topology: 2x2\n cidrBlock: 10.0.0.0/29\n networkConfig:\n canIpForward: true\n enableExternalIps: true\n network: ${network.id}\n subnetwork: ${subnet.id}\n schedulingConfig:\n preemptible: true\n shieldedInstanceConfig:\n enableSecureBoot: true\n serviceAccount:\n email: ${sa.email}\n scopes:\n - https://www.googleapis.com/auth/cloud-platform\n dataDisks:\n - sourceDisk: ${disk.id}\n mode: READ_ONLY\n labels:\n foo: bar\n metadata:\n foo: bar\n tags:\n - foo\n options:\n dependson:\n - ${wait60Seconds}\n subnet:\n type: gcp:compute:Subnetwork\n properties:\n name: tpu-subnet\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n network: ${network.id}\n network:\n type: gcp:compute:Network\n properties:\n name: tpu-net\n autoCreateSubnetworks: false\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: tpu-sa\n displayName: Test TPU VM\n disk:\n type: gcp:compute:Disk\n properties:\n name: tpu-disk\n image: debian-cloud/debian-11\n size: 10\n type: pd-ssd\n zone: us-central1-c\n # Wait after service account creation to limit eventual consistency errors.\n wait60Seconds:\n type: time:sleep\n name: wait_60_seconds\n properties:\n createDuration: 60s\n options:\n dependson:\n - ${sa}\nvariables:\n available:\n fn::invoke:\n Function: gcp:tpu:getV2RuntimeVersions\n Arguments: {}\n availableGetV2AcceleratorTypes:\n fn::invoke:\n Function: gcp:tpu:getV2AcceleratorTypes\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVm can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{zone}}/nodes/{{name}}`\n\n* `{{project}}/{{zone}}/{{name}}`\n\n* `{{zone}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Vm can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:tpu/v2Vm:V2Vm default projects/{{project}}/locations/{{zone}}/nodes/{{name}}\n```\n\n```sh\n$ pulumi import gcp:tpu/v2Vm:V2Vm default {{project}}/{{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:tpu/v2Vm:V2Vm default {{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:tpu/v2Vm:V2Vm default {{name}}\n```\n\n", + "description": "## Example Usage\n\n### Tpu V2 Vm Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst available = gcp.tpu.getV2RuntimeVersions({});\nconst tpu = new gcp.tpu.V2Vm(\"tpu\", {\n name: \"test-tpu\",\n zone: \"us-central1-c\",\n runtimeVersion: \"tpu-vm-tf-2.13.0\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\navailable = gcp.tpu.get_v2_runtime_versions()\ntpu = gcp.tpu.V2Vm(\"tpu\",\n name=\"test-tpu\",\n zone=\"us-central1-c\",\n runtime_version=\"tpu-vm-tf-2.13.0\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var available = Gcp.Tpu.GetV2RuntimeVersions.Invoke();\n\n var tpu = new Gcp.Tpu.V2Vm(\"tpu\", new()\n {\n Name = \"test-tpu\",\n Zone = \"us-central1-c\",\n RuntimeVersion = \"tpu-vm-tf-2.13.0\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/tpu\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := tpu.GetV2RuntimeVersions(ctx, \u0026tpu.GetV2RuntimeVersionsArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = tpu.NewV2Vm(ctx, \"tpu\", \u0026tpu.V2VmArgs{\n\t\t\tName: pulumi.String(\"test-tpu\"),\n\t\t\tZone: pulumi.String(\"us-central1-c\"),\n\t\t\tRuntimeVersion: pulumi.String(\"tpu-vm-tf-2.13.0\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.tpu.TpuFunctions;\nimport com.pulumi.gcp.tpu.inputs.GetV2RuntimeVersionsArgs;\nimport com.pulumi.gcp.tpu.V2Vm;\nimport com.pulumi.gcp.tpu.V2VmArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var available = TpuFunctions.getV2RuntimeVersions();\n\n var tpu = new V2Vm(\"tpu\", V2VmArgs.builder()\n .name(\"test-tpu\")\n .zone(\"us-central1-c\")\n .runtimeVersion(\"tpu-vm-tf-2.13.0\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tpu:\n type: gcp:tpu:V2Vm\n properties:\n name: test-tpu\n zone: us-central1-c\n runtimeVersion: tpu-vm-tf-2.13.0\nvariables:\n available:\n fn::invoke:\n Function: gcp:tpu:getV2RuntimeVersions\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Tpu V2 Vm Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\nconst available = gcp.tpu.getV2RuntimeVersions({});\nconst availableGetV2AcceleratorTypes = gcp.tpu.getV2AcceleratorTypes({});\nconst network = new gcp.compute.Network(\"network\", {\n name: \"tpu-net\",\n autoCreateSubnetworks: false,\n});\nconst subnet = new gcp.compute.Subnetwork(\"subnet\", {\n name: \"tpu-subnet\",\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n network: network.id,\n});\nconst sa = new gcp.serviceaccount.Account(\"sa\", {\n accountId: \"tpu-sa\",\n displayName: \"Test TPU VM\",\n});\nconst disk = new gcp.compute.Disk(\"disk\", {\n name: \"tpu-disk\",\n image: \"debian-cloud/debian-11\",\n size: 10,\n type: \"pd-ssd\",\n zone: \"us-central1-c\",\n});\n// Wait after service account creation to limit eventual consistency errors.\nconst wait60Seconds = new time.index.Sleep(\"wait_60_seconds\", {createDuration: \"60s\"}, {\n dependsOn: [sa],\n});\nconst tpu = new gcp.tpu.V2Vm(\"tpu\", {\n name: \"test-tpu\",\n zone: \"us-central1-c\",\n description: \"Text description of the TPU.\",\n runtimeVersion: \"tpu-vm-tf-2.13.0\",\n acceleratorConfig: {\n type: \"V2\",\n topology: \"2x2\",\n },\n cidrBlock: \"10.0.0.0/29\",\n networkConfig: {\n canIpForward: true,\n enableExternalIps: true,\n network: network.id,\n subnetwork: subnet.id,\n },\n schedulingConfig: {\n preemptible: true,\n },\n shieldedInstanceConfig: {\n enableSecureBoot: true,\n },\n serviceAccount: {\n email: sa.email,\n scopes: [\"https://www.googleapis.com/auth/cloud-platform\"],\n },\n dataDisks: [{\n sourceDisk: disk.id,\n mode: \"READ_ONLY\",\n }],\n labels: {\n foo: \"bar\",\n },\n metadata: {\n foo: \"bar\",\n },\n tags: [\"foo\"],\n}, {\n dependsOn: [wait60Seconds],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\navailable = gcp.tpu.get_v2_runtime_versions()\navailable_get_v2_accelerator_types = gcp.tpu.get_v2_accelerator_types()\nnetwork = gcp.compute.Network(\"network\",\n name=\"tpu-net\",\n auto_create_subnetworks=False)\nsubnet = gcp.compute.Subnetwork(\"subnet\",\n name=\"tpu-subnet\",\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\",\n network=network.id)\nsa = gcp.serviceaccount.Account(\"sa\",\n account_id=\"tpu-sa\",\n display_name=\"Test TPU VM\")\ndisk = gcp.compute.Disk(\"disk\",\n name=\"tpu-disk\",\n image=\"debian-cloud/debian-11\",\n size=10,\n type=\"pd-ssd\",\n zone=\"us-central1-c\")\n# Wait after service account creation to limit eventual consistency errors.\nwait60_seconds = time.index.Sleep(\"wait_60_seconds\", create_duration=60s,\nopts = pulumi.ResourceOptions(depends_on=[sa]))\ntpu = gcp.tpu.V2Vm(\"tpu\",\n name=\"test-tpu\",\n zone=\"us-central1-c\",\n description=\"Text description of the TPU.\",\n runtime_version=\"tpu-vm-tf-2.13.0\",\n accelerator_config={\n \"type\": \"V2\",\n \"topology\": \"2x2\",\n },\n cidr_block=\"10.0.0.0/29\",\n network_config={\n \"can_ip_forward\": True,\n \"enable_external_ips\": True,\n \"network\": network.id,\n \"subnetwork\": subnet.id,\n },\n scheduling_config={\n \"preemptible\": True,\n },\n shielded_instance_config={\n \"enable_secure_boot\": True,\n },\n service_account={\n \"email\": sa.email,\n \"scopes\": [\"https://www.googleapis.com/auth/cloud-platform\"],\n },\n data_disks=[{\n \"source_disk\": disk.id,\n \"mode\": \"READ_ONLY\",\n }],\n labels={\n \"foo\": \"bar\",\n },\n metadata={\n \"foo\": \"bar\",\n },\n tags=[\"foo\"],\n opts = pulumi.ResourceOptions(depends_on=[wait60_seconds]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Time = Pulumi.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var available = Gcp.Tpu.GetV2RuntimeVersions.Invoke();\n\n var availableGetV2AcceleratorTypes = Gcp.Tpu.GetV2AcceleratorTypes.Invoke();\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"tpu-net\",\n AutoCreateSubnetworks = false,\n });\n\n var subnet = new Gcp.Compute.Subnetwork(\"subnet\", new()\n {\n Name = \"tpu-subnet\",\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n Network = network.Id,\n });\n\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"tpu-sa\",\n DisplayName = \"Test TPU VM\",\n });\n\n var disk = new Gcp.Compute.Disk(\"disk\", new()\n {\n Name = \"tpu-disk\",\n Image = \"debian-cloud/debian-11\",\n Size = 10,\n Type = \"pd-ssd\",\n Zone = \"us-central1-c\",\n });\n\n // Wait after service account creation to limit eventual consistency errors.\n var wait60Seconds = new Time.Index.Sleep(\"wait_60_seconds\", new()\n {\n CreateDuration = \"60s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n sa,\n },\n });\n\n var tpu = new Gcp.Tpu.V2Vm(\"tpu\", new()\n {\n Name = \"test-tpu\",\n Zone = \"us-central1-c\",\n Description = \"Text description of the TPU.\",\n RuntimeVersion = \"tpu-vm-tf-2.13.0\",\n AcceleratorConfig = new Gcp.Tpu.Inputs.V2VmAcceleratorConfigArgs\n {\n Type = \"V2\",\n Topology = \"2x2\",\n },\n CidrBlock = \"10.0.0.0/29\",\n NetworkConfig = new Gcp.Tpu.Inputs.V2VmNetworkConfigArgs\n {\n CanIpForward = true,\n EnableExternalIps = true,\n Network = network.Id,\n Subnetwork = subnet.Id,\n },\n SchedulingConfig = new Gcp.Tpu.Inputs.V2VmSchedulingConfigArgs\n {\n Preemptible = true,\n },\n ShieldedInstanceConfig = new Gcp.Tpu.Inputs.V2VmShieldedInstanceConfigArgs\n {\n EnableSecureBoot = true,\n },\n ServiceAccount = new Gcp.Tpu.Inputs.V2VmServiceAccountArgs\n {\n Email = sa.Email,\n Scopes = new[]\n {\n \"https://www.googleapis.com/auth/cloud-platform\",\n },\n },\n DataDisks = new[]\n {\n new Gcp.Tpu.Inputs.V2VmDataDiskArgs\n {\n SourceDisk = disk.Id,\n Mode = \"READ_ONLY\",\n },\n },\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Metadata = \n {\n { \"foo\", \"bar\" },\n },\n Tags = new[]\n {\n \"foo\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait60Seconds,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/tpu\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := tpu.GetV2RuntimeVersions(ctx, \u0026tpu.GetV2RuntimeVersionsArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = tpu.GetV2AcceleratorTypes(ctx, \u0026tpu.GetV2AcceleratorTypesArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"tpu-net\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsubnet, err := compute.NewSubnetwork(ctx, \"subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"tpu-subnet\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"tpu-sa\"),\n\t\t\tDisplayName: pulumi.String(\"Test TPU VM\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdisk, err := compute.NewDisk(ctx, \"disk\", \u0026compute.DiskArgs{\n\t\t\tName: pulumi.String(\"tpu-disk\"),\n\t\t\tImage: pulumi.String(\"debian-cloud/debian-11\"),\n\t\t\tSize: pulumi.Int(10),\n\t\t\tType: pulumi.String(\"pd-ssd\"),\n\t\t\tZone: pulumi.String(\"us-central1-c\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Wait after service account creation to limit eventual consistency errors.\n\t\twait60Seconds, err := time.NewSleep(ctx, \"wait_60_seconds\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"60s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsa,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = tpu.NewV2Vm(ctx, \"tpu\", \u0026tpu.V2VmArgs{\n\t\t\tName: pulumi.String(\"test-tpu\"),\n\t\t\tZone: pulumi.String(\"us-central1-c\"),\n\t\t\tDescription: pulumi.String(\"Text description of the TPU.\"),\n\t\t\tRuntimeVersion: pulumi.String(\"tpu-vm-tf-2.13.0\"),\n\t\t\tAcceleratorConfig: \u0026tpu.V2VmAcceleratorConfigArgs{\n\t\t\t\tType: pulumi.String(\"V2\"),\n\t\t\t\tTopology: pulumi.String(\"2x2\"),\n\t\t\t},\n\t\t\tCidrBlock: pulumi.String(\"10.0.0.0/29\"),\n\t\t\tNetworkConfig: \u0026tpu.V2VmNetworkConfigArgs{\n\t\t\t\tCanIpForward: pulumi.Bool(true),\n\t\t\t\tEnableExternalIps: pulumi.Bool(true),\n\t\t\t\tNetwork: network.ID(),\n\t\t\t\tSubnetwork: subnet.ID(),\n\t\t\t},\n\t\t\tSchedulingConfig: \u0026tpu.V2VmSchedulingConfigArgs{\n\t\t\t\tPreemptible: pulumi.Bool(true),\n\t\t\t},\n\t\t\tShieldedInstanceConfig: \u0026tpu.V2VmShieldedInstanceConfigArgs{\n\t\t\t\tEnableSecureBoot: pulumi.Bool(true),\n\t\t\t},\n\t\t\tServiceAccount: \u0026tpu.V2VmServiceAccountArgs{\n\t\t\t\tEmail: sa.Email,\n\t\t\t\tScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"https://www.googleapis.com/auth/cloud-platform\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDataDisks: tpu.V2VmDataDiskArray{\n\t\t\t\t\u0026tpu.V2VmDataDiskArgs{\n\t\t\t\t\tSourceDisk: disk.ID(),\n\t\t\t\t\tMode: pulumi.String(\"READ_ONLY\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait60Seconds,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.tpu.TpuFunctions;\nimport com.pulumi.gcp.tpu.inputs.GetV2RuntimeVersionsArgs;\nimport com.pulumi.gcp.tpu.inputs.GetV2AcceleratorTypesArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.compute.Disk;\nimport com.pulumi.gcp.compute.DiskArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.tpu.V2Vm;\nimport com.pulumi.gcp.tpu.V2VmArgs;\nimport com.pulumi.gcp.tpu.inputs.V2VmAcceleratorConfigArgs;\nimport com.pulumi.gcp.tpu.inputs.V2VmNetworkConfigArgs;\nimport com.pulumi.gcp.tpu.inputs.V2VmSchedulingConfigArgs;\nimport com.pulumi.gcp.tpu.inputs.V2VmShieldedInstanceConfigArgs;\nimport com.pulumi.gcp.tpu.inputs.V2VmServiceAccountArgs;\nimport com.pulumi.gcp.tpu.inputs.V2VmDataDiskArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var available = TpuFunctions.getV2RuntimeVersions();\n\n final var availableGetV2AcceleratorTypes = TpuFunctions.getV2AcceleratorTypes();\n\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"tpu-net\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnet = new Subnetwork(\"subnet\", SubnetworkArgs.builder()\n .name(\"tpu-subnet\")\n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .network(network.id())\n .build());\n\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"tpu-sa\")\n .displayName(\"Test TPU VM\")\n .build());\n\n var disk = new Disk(\"disk\", DiskArgs.builder()\n .name(\"tpu-disk\")\n .image(\"debian-cloud/debian-11\")\n .size(10)\n .type(\"pd-ssd\")\n .zone(\"us-central1-c\")\n .build());\n\n // Wait after service account creation to limit eventual consistency errors.\n var wait60Seconds = new Sleep(\"wait60Seconds\", SleepArgs.builder()\n .createDuration(\"60s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(sa)\n .build());\n\n var tpu = new V2Vm(\"tpu\", V2VmArgs.builder()\n .name(\"test-tpu\")\n .zone(\"us-central1-c\")\n .description(\"Text description of the TPU.\")\n .runtimeVersion(\"tpu-vm-tf-2.13.0\")\n .acceleratorConfig(V2VmAcceleratorConfigArgs.builder()\n .type(\"V2\")\n .topology(\"2x2\")\n .build())\n .cidrBlock(\"10.0.0.0/29\")\n .networkConfig(V2VmNetworkConfigArgs.builder()\n .canIpForward(true)\n .enableExternalIps(true)\n .network(network.id())\n .subnetwork(subnet.id())\n .build())\n .schedulingConfig(V2VmSchedulingConfigArgs.builder()\n .preemptible(true)\n .build())\n .shieldedInstanceConfig(V2VmShieldedInstanceConfigArgs.builder()\n .enableSecureBoot(true)\n .build())\n .serviceAccount(V2VmServiceAccountArgs.builder()\n .email(sa.email())\n .scopes(\"https://www.googleapis.com/auth/cloud-platform\")\n .build())\n .dataDisks(V2VmDataDiskArgs.builder()\n .sourceDisk(disk.id())\n .mode(\"READ_ONLY\")\n .build())\n .labels(Map.of(\"foo\", \"bar\"))\n .metadata(Map.of(\"foo\", \"bar\"))\n .tags(\"foo\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait60Seconds)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tpu:\n type: gcp:tpu:V2Vm\n properties:\n name: test-tpu\n zone: us-central1-c\n description: Text description of the TPU.\n runtimeVersion: tpu-vm-tf-2.13.0\n acceleratorConfig:\n type: V2\n topology: 2x2\n cidrBlock: 10.0.0.0/29\n networkConfig:\n canIpForward: true\n enableExternalIps: true\n network: ${network.id}\n subnetwork: ${subnet.id}\n schedulingConfig:\n preemptible: true\n shieldedInstanceConfig:\n enableSecureBoot: true\n serviceAccount:\n email: ${sa.email}\n scopes:\n - https://www.googleapis.com/auth/cloud-platform\n dataDisks:\n - sourceDisk: ${disk.id}\n mode: READ_ONLY\n labels:\n foo: bar\n metadata:\n foo: bar\n tags:\n - foo\n options:\n dependson:\n - ${wait60Seconds}\n subnet:\n type: gcp:compute:Subnetwork\n properties:\n name: tpu-subnet\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n network: ${network.id}\n network:\n type: gcp:compute:Network\n properties:\n name: tpu-net\n autoCreateSubnetworks: false\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: tpu-sa\n displayName: Test TPU VM\n disk:\n type: gcp:compute:Disk\n properties:\n name: tpu-disk\n image: debian-cloud/debian-11\n size: 10\n type: pd-ssd\n zone: us-central1-c\n # Wait after service account creation to limit eventual consistency errors.\n wait60Seconds:\n type: time:sleep\n name: wait_60_seconds\n properties:\n createDuration: 60s\n options:\n dependson:\n - ${sa}\nvariables:\n available:\n fn::invoke:\n Function: gcp:tpu:getV2RuntimeVersions\n Arguments: {}\n availableGetV2AcceleratorTypes:\n fn::invoke:\n Function: gcp:tpu:getV2AcceleratorTypes\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVm can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{zone}}/nodes/{{name}}`\n\n* `{{project}}/{{zone}}/{{name}}`\n\n* `{{zone}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Vm can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:tpu/v2Vm:V2Vm default projects/{{project}}/locations/{{zone}}/nodes/{{name}}\n```\n\n```sh\n$ pulumi import gcp:tpu/v2Vm:V2Vm default {{project}}/{{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:tpu/v2Vm:V2Vm default {{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:tpu/v2Vm:V2Vm default {{name}}\n```\n\n", "properties": { "acceleratorConfig": { "$ref": "#/types/gcp:tpu/V2VmAcceleratorConfig:V2VmAcceleratorConfig", @@ -254407,7 +254407,7 @@ } }, "gcp:vertex/aiEndpoint:AiEndpoint": { - "description": "Models are deployed into it, and afterwards Endpoint is called to obtain predictions and explanations.\n\n\nTo get more information about Endpoint, see:\n\n* [API documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1beta1/projects.locations.endpoints)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/vertex-ai/docs)\n\n## Example Usage\n\n### Vertex Ai Endpoint Network\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst vertexNetwork = new gcp.compute.Network(\"vertex_network\", {name: \"network-name\"});\nconst vertexRange = new gcp.compute.GlobalAddress(\"vertex_range\", {\n name: \"address-name\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 24,\n network: vertexNetwork.id,\n});\nconst vertexVpcConnection = new gcp.servicenetworking.Connection(\"vertex_vpc_connection\", {\n network: vertexNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [vertexRange.name],\n});\nconst project = gcp.organizations.getProject({});\nconst endpoint = new gcp.vertex.AiEndpoint(\"endpoint\", {\n name: \"endpoint-name\",\n displayName: \"sample-endpoint\",\n description: \"A sample vertex endpoint\",\n location: \"us-central1\",\n region: \"us-central1\",\n labels: {\n \"label-one\": \"value-one\",\n },\n network: pulumi.all([project, vertexNetwork.name]).apply(([project, name]) =\u003e `projects/${project.number}/global/networks/${name}`),\n encryptionSpec: {\n kmsKeyName: \"kms-name\",\n },\n}, {\n dependsOn: [vertexVpcConnection],\n});\nconst cryptoKey = new gcp.kms.CryptoKeyIAMMember(\"crypto_key\", {\n cryptoKeyId: \"kms-name\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-aiplatform.iam.gserviceaccount.com`),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nvertex_network = gcp.compute.Network(\"vertex_network\", name=\"network-name\")\nvertex_range = gcp.compute.GlobalAddress(\"vertex_range\",\n name=\"address-name\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=24,\n network=vertex_network.id)\nvertex_vpc_connection = gcp.servicenetworking.Connection(\"vertex_vpc_connection\",\n network=vertex_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[vertex_range.name])\nproject = gcp.organizations.get_project()\nendpoint = gcp.vertex.AiEndpoint(\"endpoint\",\n name=\"endpoint-name\",\n display_name=\"sample-endpoint\",\n description=\"A sample vertex endpoint\",\n location=\"us-central1\",\n region=\"us-central1\",\n labels={\n \"label-one\": \"value-one\",\n },\n network=vertex_network.name.apply(lambda name: f\"projects/{project.number}/global/networks/{name}\"),\n encryption_spec={\n \"kms_key_name\": \"kms-name\",\n },\n opts = pulumi.ResourceOptions(depends_on=[vertex_vpc_connection]))\ncrypto_key = gcp.kms.CryptoKeyIAMMember(\"crypto_key\",\n crypto_key_id=\"kms-name\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-aiplatform.iam.gserviceaccount.com\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var vertexNetwork = new Gcp.Compute.Network(\"vertex_network\", new()\n {\n Name = \"network-name\",\n });\n\n var vertexRange = new Gcp.Compute.GlobalAddress(\"vertex_range\", new()\n {\n Name = \"address-name\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 24,\n Network = vertexNetwork.Id,\n });\n\n var vertexVpcConnection = new Gcp.ServiceNetworking.Connection(\"vertex_vpc_connection\", new()\n {\n Network = vertexNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n vertexRange.Name,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var endpoint = new Gcp.Vertex.AiEndpoint(\"endpoint\", new()\n {\n Name = \"endpoint-name\",\n DisplayName = \"sample-endpoint\",\n Description = \"A sample vertex endpoint\",\n Location = \"us-central1\",\n Region = \"us-central1\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Network = Output.Tuple(project, vertexNetwork.Name).Apply(values =\u003e\n {\n var project = values.Item1;\n var name = values.Item2;\n return $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/global/networks/{name}\";\n }),\n EncryptionSpec = new Gcp.Vertex.Inputs.AiEndpointEncryptionSpecArgs\n {\n KmsKeyName = \"kms-name\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vertexVpcConnection,\n },\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key\", new()\n {\n CryptoKeyId = \"kms-name\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-aiplatform.iam.gserviceaccount.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tvertexNetwork, err := compute.NewNetwork(ctx, \"vertex_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvertexRange, err := compute.NewGlobalAddress(ctx, \"vertex_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"address-name\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(24),\n\t\t\tNetwork: vertexNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvertexVpcConnection, err := servicenetworking.NewConnection(ctx, \"vertex_vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: vertexNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tvertexRange.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiEndpoint(ctx, \"endpoint\", \u0026vertex.AiEndpointArgs{\n\t\t\tName: pulumi.String(\"endpoint-name\"),\n\t\t\tDisplayName: pulumi.String(\"sample-endpoint\"),\n\t\t\tDescription: pulumi.String(\"A sample vertex endpoint\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tNetwork: vertexNetwork.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/%v/global/networks/%v\", project.Number, name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tEncryptionSpec: \u0026vertex.AiEndpointEncryptionSpecArgs{\n\t\t\t\tKmsKeyName: pulumi.String(\"kms-name\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvertexVpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kms.NewCryptoKeyIAMMember(ctx, \"crypto_key\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"kms-name\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-aiplatform.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.vertex.AiEndpoint;\nimport com.pulumi.gcp.vertex.AiEndpointArgs;\nimport com.pulumi.gcp.vertex.inputs.AiEndpointEncryptionSpecArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var vertexNetwork = new Network(\"vertexNetwork\", NetworkArgs.builder()\n .name(\"network-name\")\n .build());\n\n var vertexRange = new GlobalAddress(\"vertexRange\", GlobalAddressArgs.builder()\n .name(\"address-name\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(24)\n .network(vertexNetwork.id())\n .build());\n\n var vertexVpcConnection = new Connection(\"vertexVpcConnection\", ConnectionArgs.builder()\n .network(vertexNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(vertexRange.name())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var endpoint = new AiEndpoint(\"endpoint\", AiEndpointArgs.builder()\n .name(\"endpoint-name\")\n .displayName(\"sample-endpoint\")\n .description(\"A sample vertex endpoint\")\n .location(\"us-central1\")\n .region(\"us-central1\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .network(vertexNetwork.name().applyValue(name -\u003e String.format(\"projects/%s/global/networks/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number()),name)))\n .encryptionSpec(AiEndpointEncryptionSpecArgs.builder()\n .kmsKeyName(\"kms-name\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(vertexVpcConnection)\n .build());\n\n var cryptoKey = new CryptoKeyIAMMember(\"cryptoKey\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(\"kms-name\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-aiplatform.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n endpoint:\n type: gcp:vertex:AiEndpoint\n properties:\n name: endpoint-name\n displayName: sample-endpoint\n description: A sample vertex endpoint\n location: us-central1\n region: us-central1\n labels:\n label-one: value-one\n network: projects/${project.number}/global/networks/${vertexNetwork.name}\n encryptionSpec:\n kmsKeyName: kms-name\n options:\n dependson:\n - ${vertexVpcConnection}\n vertexVpcConnection:\n type: gcp:servicenetworking:Connection\n name: vertex_vpc_connection\n properties:\n network: ${vertexNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${vertexRange.name}\n vertexRange:\n type: gcp:compute:GlobalAddress\n name: vertex_range\n properties:\n name: address-name\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 24\n network: ${vertexNetwork.id}\n vertexNetwork:\n type: gcp:compute:Network\n name: vertex_network\n properties:\n name: network-name\n cryptoKey:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key\n properties:\n cryptoKeyId: kms-name\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-aiplatform.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nEndpoint can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/endpoints/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Endpoint can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vertex/aiEndpoint:AiEndpoint default projects/{{project}}/locations/{{location}}/endpoints/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiEndpoint:AiEndpoint default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiEndpoint:AiEndpoint default {{location}}/{{name}}\n```\n\n", + "description": "Models are deployed into it, and afterwards Endpoint is called to obtain predictions and explanations.\n\n\nTo get more information about Endpoint, see:\n\n* [API documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1beta1/projects.locations.endpoints)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/vertex-ai/docs)\n\n## Example Usage\n\n### Vertex Ai Endpoint Network\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst vertexNetwork = new gcp.compute.Network(\"vertex_network\", {name: \"network-name\"});\nconst vertexRange = new gcp.compute.GlobalAddress(\"vertex_range\", {\n name: \"address-name\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 24,\n network: vertexNetwork.id,\n});\nconst vertexVpcConnection = new gcp.servicenetworking.Connection(\"vertex_vpc_connection\", {\n network: vertexNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [vertexRange.name],\n});\nconst project = gcp.organizations.getProject({});\nconst endpoint = new gcp.vertex.AiEndpoint(\"endpoint\", {\n name: \"endpoint-name\",\n displayName: \"sample-endpoint\",\n description: \"A sample vertex endpoint\",\n location: \"us-central1\",\n region: \"us-central1\",\n labels: {\n \"label-one\": \"value-one\",\n },\n network: pulumi.all([project, vertexNetwork.name]).apply(([project, name]) =\u003e `projects/${project.number}/global/networks/${name}`),\n encryptionSpec: {\n kmsKeyName: \"kms-name\",\n },\n}, {\n dependsOn: [vertexVpcConnection],\n});\nconst cryptoKey = new gcp.kms.CryptoKeyIAMMember(\"crypto_key\", {\n cryptoKeyId: \"kms-name\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-aiplatform.iam.gserviceaccount.com`),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nvertex_network = gcp.compute.Network(\"vertex_network\", name=\"network-name\")\nvertex_range = gcp.compute.GlobalAddress(\"vertex_range\",\n name=\"address-name\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=24,\n network=vertex_network.id)\nvertex_vpc_connection = gcp.servicenetworking.Connection(\"vertex_vpc_connection\",\n network=vertex_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[vertex_range.name])\nproject = gcp.organizations.get_project()\nendpoint = gcp.vertex.AiEndpoint(\"endpoint\",\n name=\"endpoint-name\",\n display_name=\"sample-endpoint\",\n description=\"A sample vertex endpoint\",\n location=\"us-central1\",\n region=\"us-central1\",\n labels={\n \"label-one\": \"value-one\",\n },\n network=vertex_network.name.apply(lambda name: f\"projects/{project.number}/global/networks/{name}\"),\n encryption_spec={\n \"kms_key_name\": \"kms-name\",\n },\n opts = pulumi.ResourceOptions(depends_on=[vertex_vpc_connection]))\ncrypto_key = gcp.kms.CryptoKeyIAMMember(\"crypto_key\",\n crypto_key_id=\"kms-name\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-aiplatform.iam.gserviceaccount.com\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var vertexNetwork = new Gcp.Compute.Network(\"vertex_network\", new()\n {\n Name = \"network-name\",\n });\n\n var vertexRange = new Gcp.Compute.GlobalAddress(\"vertex_range\", new()\n {\n Name = \"address-name\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 24,\n Network = vertexNetwork.Id,\n });\n\n var vertexVpcConnection = new Gcp.ServiceNetworking.Connection(\"vertex_vpc_connection\", new()\n {\n Network = vertexNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n vertexRange.Name,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var endpoint = new Gcp.Vertex.AiEndpoint(\"endpoint\", new()\n {\n Name = \"endpoint-name\",\n DisplayName = \"sample-endpoint\",\n Description = \"A sample vertex endpoint\",\n Location = \"us-central1\",\n Region = \"us-central1\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Network = Output.Tuple(project, vertexNetwork.Name).Apply(values =\u003e\n {\n var project = values.Item1;\n var name = values.Item2;\n return $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/global/networks/{name}\";\n }),\n EncryptionSpec = new Gcp.Vertex.Inputs.AiEndpointEncryptionSpecArgs\n {\n KmsKeyName = \"kms-name\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vertexVpcConnection,\n },\n });\n\n var cryptoKey = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key\", new()\n {\n CryptoKeyId = \"kms-name\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-aiplatform.iam.gserviceaccount.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tvertexNetwork, err := compute.NewNetwork(ctx, \"vertex_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvertexRange, err := compute.NewGlobalAddress(ctx, \"vertex_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"address-name\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(24),\n\t\t\tNetwork: vertexNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvertexVpcConnection, err := servicenetworking.NewConnection(ctx, \"vertex_vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: vertexNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tvertexRange.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiEndpoint(ctx, \"endpoint\", \u0026vertex.AiEndpointArgs{\n\t\t\tName: pulumi.String(\"endpoint-name\"),\n\t\t\tDisplayName: pulumi.String(\"sample-endpoint\"),\n\t\t\tDescription: pulumi.String(\"A sample vertex endpoint\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tNetwork: vertexNetwork.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/%v/global/networks/%v\", project.Number, name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tEncryptionSpec: \u0026vertex.AiEndpointEncryptionSpecArgs{\n\t\t\t\tKmsKeyName: pulumi.String(\"kms-name\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvertexVpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kms.NewCryptoKeyIAMMember(ctx, \"crypto_key\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"kms-name\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-aiplatform.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.vertex.AiEndpoint;\nimport com.pulumi.gcp.vertex.AiEndpointArgs;\nimport com.pulumi.gcp.vertex.inputs.AiEndpointEncryptionSpecArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var vertexNetwork = new Network(\"vertexNetwork\", NetworkArgs.builder()\n .name(\"network-name\")\n .build());\n\n var vertexRange = new GlobalAddress(\"vertexRange\", GlobalAddressArgs.builder()\n .name(\"address-name\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(24)\n .network(vertexNetwork.id())\n .build());\n\n var vertexVpcConnection = new Connection(\"vertexVpcConnection\", ConnectionArgs.builder()\n .network(vertexNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(vertexRange.name())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var endpoint = new AiEndpoint(\"endpoint\", AiEndpointArgs.builder()\n .name(\"endpoint-name\")\n .displayName(\"sample-endpoint\")\n .description(\"A sample vertex endpoint\")\n .location(\"us-central1\")\n .region(\"us-central1\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .network(vertexNetwork.name().applyValue(name -\u003e String.format(\"projects/%s/global/networks/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number()),name)))\n .encryptionSpec(AiEndpointEncryptionSpecArgs.builder()\n .kmsKeyName(\"kms-name\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(vertexVpcConnection)\n .build());\n\n var cryptoKey = new CryptoKeyIAMMember(\"cryptoKey\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(\"kms-name\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-aiplatform.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n endpoint:\n type: gcp:vertex:AiEndpoint\n properties:\n name: endpoint-name\n displayName: sample-endpoint\n description: A sample vertex endpoint\n location: us-central1\n region: us-central1\n labels:\n label-one: value-one\n network: projects/${project.number}/global/networks/${vertexNetwork.name}\n encryptionSpec:\n kmsKeyName: kms-name\n options:\n dependson:\n - ${vertexVpcConnection}\n vertexVpcConnection:\n type: gcp:servicenetworking:Connection\n name: vertex_vpc_connection\n properties:\n network: ${vertexNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${vertexRange.name}\n vertexRange:\n type: gcp:compute:GlobalAddress\n name: vertex_range\n properties:\n name: address-name\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 24\n network: ${vertexNetwork.id}\n vertexNetwork:\n type: gcp:compute:Network\n name: vertex_network\n properties:\n name: network-name\n cryptoKey:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key\n properties:\n cryptoKeyId: kms-name\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-aiplatform.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nEndpoint can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/endpoints/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Endpoint can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vertex/aiEndpoint:AiEndpoint default projects/{{project}}/locations/{{location}}/endpoints/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiEndpoint:AiEndpoint default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiEndpoint:AiEndpoint default {{location}}/{{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -255256,7 +255256,7 @@ } }, "gcp:vertex/aiFeatureOnlineStore:AiFeatureOnlineStore": { - "description": "Vertex AI Feature Online Store provides a centralized repository for serving ML features and embedding indexes at low latency. The Feature Online Store is a top-level container.\n\n\nTo get more information about FeatureOnlineStore, see:\n\n* [API documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.featureOnlineStores)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/vertex-ai/docs)\n\n## Example Usage\n\n### Vertex Ai Feature Online Store\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst featureOnlineStore = new gcp.vertex.AiFeatureOnlineStore(\"feature_online_store\", {\n name: \"example_feature_online_store\",\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n bigtable: {\n autoScaling: {\n minNodeCount: 1,\n maxNodeCount: 3,\n cpuUtilizationTarget: 50,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature_online_store = gcp.vertex.AiFeatureOnlineStore(\"feature_online_store\",\n name=\"example_feature_online_store\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n bigtable={\n \"auto_scaling\": {\n \"min_node_count\": 1,\n \"max_node_count\": 3,\n \"cpu_utilization_target\": 50,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var featureOnlineStore = new Gcp.Vertex.AiFeatureOnlineStore(\"feature_online_store\", new()\n {\n Name = \"example_feature_online_store\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n Bigtable = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableArgs\n {\n AutoScaling = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs\n {\n MinNodeCount = 1,\n MaxNodeCount = 3,\n CpuUtilizationTarget = 50,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vertex.NewAiFeatureOnlineStore(ctx, \"feature_online_store\", \u0026vertex.AiFeatureOnlineStoreArgs{\n\t\t\tName: pulumi.String(\"example_feature_online_store\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tBigtable: \u0026vertex.AiFeatureOnlineStoreBigtableArgs{\n\t\t\t\tAutoScaling: \u0026vertex.AiFeatureOnlineStoreBigtableAutoScalingArgs{\n\t\t\t\t\tMinNodeCount: pulumi.Int(1),\n\t\t\t\t\tMaxNodeCount: pulumi.Int(3),\n\t\t\t\t\tCpuUtilizationTarget: pulumi.Int(50),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStore;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var featureOnlineStore = new AiFeatureOnlineStore(\"featureOnlineStore\", AiFeatureOnlineStoreArgs.builder()\n .name(\"example_feature_online_store\")\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .bigtable(AiFeatureOnlineStoreBigtableArgs.builder()\n .autoScaling(AiFeatureOnlineStoreBigtableAutoScalingArgs.builder()\n .minNodeCount(1)\n .maxNodeCount(3)\n .cpuUtilizationTarget(50)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n featureOnlineStore:\n type: gcp:vertex:AiFeatureOnlineStore\n name: feature_online_store\n properties:\n name: example_feature_online_store\n labels:\n foo: bar\n region: us-central1\n bigtable:\n autoScaling:\n minNodeCount: 1\n maxNodeCount: 3\n cpuUtilizationTarget: 50\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Featureonlinestore With Optimized\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst featureonlinestore = new gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\", {\n name: \"example_feature_online_store_optimized\",\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n optimized: {},\n dedicatedServingEndpoint: {\n privateServiceConnectConfig: {\n enablePrivateServiceConnect: true,\n projectAllowlists: [project.then(project =\u003e project.number)],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nfeatureonlinestore = gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\",\n name=\"example_feature_online_store_optimized\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n optimized={},\n dedicated_serving_endpoint={\n \"private_service_connect_config\": {\n \"enable_private_service_connect\": True,\n \"project_allowlists\": [project.number],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var featureonlinestore = new Gcp.Vertex.AiFeatureOnlineStore(\"featureonlinestore\", new()\n {\n Name = \"example_feature_online_store_optimized\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n Optimized = null,\n DedicatedServingEndpoint = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreDedicatedServingEndpointArgs\n {\n PrivateServiceConnectConfig = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreDedicatedServingEndpointPrivateServiceConnectConfigArgs\n {\n EnablePrivateServiceConnect = true,\n ProjectAllowlists = new[]\n {\n project.Apply(getProjectResult =\u003e getProjectResult.Number),\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiFeatureOnlineStore(ctx, \"featureonlinestore\", \u0026vertex.AiFeatureOnlineStoreArgs{\n\t\t\tName: pulumi.String(\"example_feature_online_store_optimized\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tOptimized: nil,\n\t\t\tDedicatedServingEndpoint: \u0026vertex.AiFeatureOnlineStoreDedicatedServingEndpointArgs{\n\t\t\t\tPrivateServiceConnectConfig: \u0026vertex.AiFeatureOnlineStoreDedicatedServingEndpointPrivateServiceConnectConfigArgs{\n\t\t\t\t\tEnablePrivateServiceConnect: pulumi.Bool(true),\n\t\t\t\t\tProjectAllowlists: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(project.Number),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStore;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreOptimizedArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreDedicatedServingEndpointArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreDedicatedServingEndpointPrivateServiceConnectConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var featureonlinestore = new AiFeatureOnlineStore(\"featureonlinestore\", AiFeatureOnlineStoreArgs.builder()\n .name(\"example_feature_online_store_optimized\")\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .optimized()\n .dedicatedServingEndpoint(AiFeatureOnlineStoreDedicatedServingEndpointArgs.builder()\n .privateServiceConnectConfig(AiFeatureOnlineStoreDedicatedServingEndpointPrivateServiceConnectConfigArgs.builder()\n .enablePrivateServiceConnect(true)\n .projectAllowlists(project.applyValue(getProjectResult -\u003e getProjectResult.number()))\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n featureonlinestore:\n type: gcp:vertex:AiFeatureOnlineStore\n properties:\n name: example_feature_online_store_optimized\n labels:\n foo: bar\n region: us-central1\n optimized: {}\n dedicatedServingEndpoint:\n privateServiceConnectConfig:\n enablePrivateServiceConnect: true\n projectAllowlists:\n - ${project.number}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Featureonlinestore With Beta Fields Bigtable\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst featureonlinestore = new gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\", {\n name: \"example_feature_online_store_beta_bigtable\",\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n bigtable: {\n autoScaling: {\n minNodeCount: 1,\n maxNodeCount: 2,\n cpuUtilizationTarget: 80,\n },\n },\n embeddingManagement: {\n enabled: true,\n },\n forceDestroy: true,\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeatureonlinestore = gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\",\n name=\"example_feature_online_store_beta_bigtable\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n bigtable={\n \"auto_scaling\": {\n \"min_node_count\": 1,\n \"max_node_count\": 2,\n \"cpu_utilization_target\": 80,\n },\n },\n embedding_management={\n \"enabled\": True,\n },\n force_destroy=True)\nproject = gcp.organizations.get_project()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var featureonlinestore = new Gcp.Vertex.AiFeatureOnlineStore(\"featureonlinestore\", new()\n {\n Name = \"example_feature_online_store_beta_bigtable\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n Bigtable = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableArgs\n {\n AutoScaling = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs\n {\n MinNodeCount = 1,\n MaxNodeCount = 2,\n CpuUtilizationTarget = 80,\n },\n },\n EmbeddingManagement = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreEmbeddingManagementArgs\n {\n Enabled = true,\n },\n ForceDestroy = true,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vertex.NewAiFeatureOnlineStore(ctx, \"featureonlinestore\", \u0026vertex.AiFeatureOnlineStoreArgs{\n\t\t\tName: pulumi.String(\"example_feature_online_store_beta_bigtable\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tBigtable: \u0026vertex.AiFeatureOnlineStoreBigtableArgs{\n\t\t\t\tAutoScaling: \u0026vertex.AiFeatureOnlineStoreBigtableAutoScalingArgs{\n\t\t\t\t\tMinNodeCount: pulumi.Int(1),\n\t\t\t\t\tMaxNodeCount: pulumi.Int(2),\n\t\t\t\t\tCpuUtilizationTarget: pulumi.Int(80),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEmbeddingManagement: \u0026vertex.AiFeatureOnlineStoreEmbeddingManagementArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t},\n\t\t\tForceDestroy: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStore;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreEmbeddingManagementArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var featureonlinestore = new AiFeatureOnlineStore(\"featureonlinestore\", AiFeatureOnlineStoreArgs.builder()\n .name(\"example_feature_online_store_beta_bigtable\")\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .bigtable(AiFeatureOnlineStoreBigtableArgs.builder()\n .autoScaling(AiFeatureOnlineStoreBigtableAutoScalingArgs.builder()\n .minNodeCount(1)\n .maxNodeCount(2)\n .cpuUtilizationTarget(80)\n .build())\n .build())\n .embeddingManagement(AiFeatureOnlineStoreEmbeddingManagementArgs.builder()\n .enabled(true)\n .build())\n .forceDestroy(true)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n featureonlinestore:\n type: gcp:vertex:AiFeatureOnlineStore\n properties:\n name: example_feature_online_store_beta_bigtable\n labels:\n foo: bar\n region: us-central1\n bigtable:\n autoScaling:\n minNodeCount: 1\n maxNodeCount: 2\n cpuUtilizationTarget: 80\n embeddingManagement:\n enabled: true\n forceDestroy: true\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFeatureOnlineStore can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/featureOnlineStores/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, FeatureOnlineStore can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureOnlineStore:AiFeatureOnlineStore default projects/{{project}}/locations/{{region}}/featureOnlineStores/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureOnlineStore:AiFeatureOnlineStore default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureOnlineStore:AiFeatureOnlineStore default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureOnlineStore:AiFeatureOnlineStore default {{name}}\n```\n\n", + "description": "Vertex AI Feature Online Store provides a centralized repository for serving ML features and embedding indexes at low latency. The Feature Online Store is a top-level container.\n\n\nTo get more information about FeatureOnlineStore, see:\n\n* [API documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.featureOnlineStores)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/vertex-ai/docs)\n\n## Example Usage\n\n### Vertex Ai Feature Online Store\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst featureOnlineStore = new gcp.vertex.AiFeatureOnlineStore(\"feature_online_store\", {\n name: \"example_feature_online_store\",\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n bigtable: {\n autoScaling: {\n minNodeCount: 1,\n maxNodeCount: 3,\n cpuUtilizationTarget: 50,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeature_online_store = gcp.vertex.AiFeatureOnlineStore(\"feature_online_store\",\n name=\"example_feature_online_store\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n bigtable={\n \"auto_scaling\": {\n \"min_node_count\": 1,\n \"max_node_count\": 3,\n \"cpu_utilization_target\": 50,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var featureOnlineStore = new Gcp.Vertex.AiFeatureOnlineStore(\"feature_online_store\", new()\n {\n Name = \"example_feature_online_store\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n Bigtable = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableArgs\n {\n AutoScaling = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs\n {\n MinNodeCount = 1,\n MaxNodeCount = 3,\n CpuUtilizationTarget = 50,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vertex.NewAiFeatureOnlineStore(ctx, \"feature_online_store\", \u0026vertex.AiFeatureOnlineStoreArgs{\n\t\t\tName: pulumi.String(\"example_feature_online_store\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tBigtable: \u0026vertex.AiFeatureOnlineStoreBigtableArgs{\n\t\t\t\tAutoScaling: \u0026vertex.AiFeatureOnlineStoreBigtableAutoScalingArgs{\n\t\t\t\t\tMinNodeCount: pulumi.Int(1),\n\t\t\t\t\tMaxNodeCount: pulumi.Int(3),\n\t\t\t\t\tCpuUtilizationTarget: pulumi.Int(50),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStore;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var featureOnlineStore = new AiFeatureOnlineStore(\"featureOnlineStore\", AiFeatureOnlineStoreArgs.builder()\n .name(\"example_feature_online_store\")\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .bigtable(AiFeatureOnlineStoreBigtableArgs.builder()\n .autoScaling(AiFeatureOnlineStoreBigtableAutoScalingArgs.builder()\n .minNodeCount(1)\n .maxNodeCount(3)\n .cpuUtilizationTarget(50)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n featureOnlineStore:\n type: gcp:vertex:AiFeatureOnlineStore\n name: feature_online_store\n properties:\n name: example_feature_online_store\n labels:\n foo: bar\n region: us-central1\n bigtable:\n autoScaling:\n minNodeCount: 1\n maxNodeCount: 3\n cpuUtilizationTarget: 50\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Featureonlinestore With Optimized\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst featureonlinestore = new gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\", {\n name: \"example_feature_online_store_optimized\",\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n optimized: {},\n dedicatedServingEndpoint: {\n privateServiceConnectConfig: {\n enablePrivateServiceConnect: true,\n projectAllowlists: [project.then(project =\u003e project.number)],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nfeatureonlinestore = gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\",\n name=\"example_feature_online_store_optimized\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n optimized={},\n dedicated_serving_endpoint={\n \"private_service_connect_config\": {\n \"enable_private_service_connect\": True,\n \"project_allowlists\": [project.number],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var featureonlinestore = new Gcp.Vertex.AiFeatureOnlineStore(\"featureonlinestore\", new()\n {\n Name = \"example_feature_online_store_optimized\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n Optimized = null,\n DedicatedServingEndpoint = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreDedicatedServingEndpointArgs\n {\n PrivateServiceConnectConfig = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreDedicatedServingEndpointPrivateServiceConnectConfigArgs\n {\n EnablePrivateServiceConnect = true,\n ProjectAllowlists = new[]\n {\n project.Apply(getProjectResult =\u003e getProjectResult.Number),\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiFeatureOnlineStore(ctx, \"featureonlinestore\", \u0026vertex.AiFeatureOnlineStoreArgs{\n\t\t\tName: pulumi.String(\"example_feature_online_store_optimized\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tOptimized: \u0026vertex.AiFeatureOnlineStoreOptimizedArgs{},\n\t\t\tDedicatedServingEndpoint: \u0026vertex.AiFeatureOnlineStoreDedicatedServingEndpointArgs{\n\t\t\t\tPrivateServiceConnectConfig: \u0026vertex.AiFeatureOnlineStoreDedicatedServingEndpointPrivateServiceConnectConfigArgs{\n\t\t\t\t\tEnablePrivateServiceConnect: pulumi.Bool(true),\n\t\t\t\t\tProjectAllowlists: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(project.Number),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStore;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreOptimizedArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreDedicatedServingEndpointArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreDedicatedServingEndpointPrivateServiceConnectConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var featureonlinestore = new AiFeatureOnlineStore(\"featureonlinestore\", AiFeatureOnlineStoreArgs.builder()\n .name(\"example_feature_online_store_optimized\")\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .optimized()\n .dedicatedServingEndpoint(AiFeatureOnlineStoreDedicatedServingEndpointArgs.builder()\n .privateServiceConnectConfig(AiFeatureOnlineStoreDedicatedServingEndpointPrivateServiceConnectConfigArgs.builder()\n .enablePrivateServiceConnect(true)\n .projectAllowlists(project.applyValue(getProjectResult -\u003e getProjectResult.number()))\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n featureonlinestore:\n type: gcp:vertex:AiFeatureOnlineStore\n properties:\n name: example_feature_online_store_optimized\n labels:\n foo: bar\n region: us-central1\n optimized: {}\n dedicatedServingEndpoint:\n privateServiceConnectConfig:\n enablePrivateServiceConnect: true\n projectAllowlists:\n - ${project.number}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Featureonlinestore With Beta Fields Bigtable\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst featureonlinestore = new gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\", {\n name: \"example_feature_online_store_beta_bigtable\",\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n bigtable: {\n autoScaling: {\n minNodeCount: 1,\n maxNodeCount: 2,\n cpuUtilizationTarget: 80,\n },\n },\n embeddingManagement: {\n enabled: true,\n },\n forceDestroy: true,\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeatureonlinestore = gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\",\n name=\"example_feature_online_store_beta_bigtable\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n bigtable={\n \"auto_scaling\": {\n \"min_node_count\": 1,\n \"max_node_count\": 2,\n \"cpu_utilization_target\": 80,\n },\n },\n embedding_management={\n \"enabled\": True,\n },\n force_destroy=True)\nproject = gcp.organizations.get_project()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var featureonlinestore = new Gcp.Vertex.AiFeatureOnlineStore(\"featureonlinestore\", new()\n {\n Name = \"example_feature_online_store_beta_bigtable\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n Bigtable = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableArgs\n {\n AutoScaling = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs\n {\n MinNodeCount = 1,\n MaxNodeCount = 2,\n CpuUtilizationTarget = 80,\n },\n },\n EmbeddingManagement = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreEmbeddingManagementArgs\n {\n Enabled = true,\n },\n ForceDestroy = true,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vertex.NewAiFeatureOnlineStore(ctx, \"featureonlinestore\", \u0026vertex.AiFeatureOnlineStoreArgs{\n\t\t\tName: pulumi.String(\"example_feature_online_store_beta_bigtable\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tBigtable: \u0026vertex.AiFeatureOnlineStoreBigtableArgs{\n\t\t\t\tAutoScaling: \u0026vertex.AiFeatureOnlineStoreBigtableAutoScalingArgs{\n\t\t\t\t\tMinNodeCount: pulumi.Int(1),\n\t\t\t\t\tMaxNodeCount: pulumi.Int(2),\n\t\t\t\t\tCpuUtilizationTarget: pulumi.Int(80),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEmbeddingManagement: \u0026vertex.AiFeatureOnlineStoreEmbeddingManagementArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t},\n\t\t\tForceDestroy: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStore;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreEmbeddingManagementArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var featureonlinestore = new AiFeatureOnlineStore(\"featureonlinestore\", AiFeatureOnlineStoreArgs.builder()\n .name(\"example_feature_online_store_beta_bigtable\")\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .bigtable(AiFeatureOnlineStoreBigtableArgs.builder()\n .autoScaling(AiFeatureOnlineStoreBigtableAutoScalingArgs.builder()\n .minNodeCount(1)\n .maxNodeCount(2)\n .cpuUtilizationTarget(80)\n .build())\n .build())\n .embeddingManagement(AiFeatureOnlineStoreEmbeddingManagementArgs.builder()\n .enabled(true)\n .build())\n .forceDestroy(true)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n featureonlinestore:\n type: gcp:vertex:AiFeatureOnlineStore\n properties:\n name: example_feature_online_store_beta_bigtable\n labels:\n foo: bar\n region: us-central1\n bigtable:\n autoScaling:\n minNodeCount: 1\n maxNodeCount: 2\n cpuUtilizationTarget: 80\n embeddingManagement:\n enabled: true\n forceDestroy: true\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFeatureOnlineStore can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/featureOnlineStores/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, FeatureOnlineStore can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureOnlineStore:AiFeatureOnlineStore default projects/{{project}}/locations/{{region}}/featureOnlineStores/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureOnlineStore:AiFeatureOnlineStore default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureOnlineStore:AiFeatureOnlineStore default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureOnlineStore:AiFeatureOnlineStore default {{name}}\n```\n\n", "properties": { "bigtable": { "$ref": "#/types/gcp:vertex/AiFeatureOnlineStoreBigtable:AiFeatureOnlineStoreBigtable", @@ -255472,7 +255472,7 @@ } }, "gcp:vertex/aiFeatureOnlineStoreFeatureview:AiFeatureOnlineStoreFeatureview": { - "description": "FeatureView is representation of values that the FeatureOnlineStore will serve based on its syncConfig.\n\n\nTo get more information about FeatureOnlineStoreFeatureview, see:\n\n* [API documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.featureOnlineStores.featureViews)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/vertex-ai/docs)\n\n## Example Usage\n\n### Vertex Ai Featureonlinestore Featureview\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst featureonlinestore = new gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\", {\n name: \"example_feature_view\",\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n bigtable: {\n autoScaling: {\n minNodeCount: 1,\n maxNodeCount: 2,\n cpuUtilizationTarget: 80,\n },\n },\n});\nconst tf_test_dataset = new gcp.bigquery.Dataset(\"tf-test-dataset\", {\n datasetId: \"example_feature_view\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst tf_test_table = new gcp.bigquery.Table(\"tf-test-table\", {\n deletionProtection: false,\n datasetId: tf_test_dataset.datasetId,\n tableId: \"example_feature_view\",\n schema: ` [\n {\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n },\n {\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n }\n]\n`,\n});\nconst featureview = new gcp.vertex.AiFeatureOnlineStoreFeatureview(\"featureview\", {\n name: \"example_feature_view\",\n region: \"us-central1\",\n featureOnlineStore: featureonlinestore.name,\n syncConfig: {\n cron: \"0 0 * * *\",\n },\n bigQuerySource: {\n uri: pulumi.interpolate`bq://${tf_test_table.project}.${tf_test_table.datasetId}.${tf_test_table.tableId}`,\n entityIdColumns: [\"test_entity_column\"],\n },\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeatureonlinestore = gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\",\n name=\"example_feature_view\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n bigtable={\n \"auto_scaling\": {\n \"min_node_count\": 1,\n \"max_node_count\": 2,\n \"cpu_utilization_target\": 80,\n },\n })\ntf_test_dataset = gcp.bigquery.Dataset(\"tf-test-dataset\",\n dataset_id=\"example_feature_view\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\ntf_test_table = gcp.bigquery.Table(\"tf-test-table\",\n deletion_protection=False,\n dataset_id=tf_test_dataset.dataset_id,\n table_id=\"example_feature_view\",\n schema=\"\"\" [\n {\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n },\n {\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n }\n]\n\"\"\")\nfeatureview = gcp.vertex.AiFeatureOnlineStoreFeatureview(\"featureview\",\n name=\"example_feature_view\",\n region=\"us-central1\",\n feature_online_store=featureonlinestore.name,\n sync_config={\n \"cron\": \"0 0 * * *\",\n },\n big_query_source={\n \"uri\": pulumi.Output.all(\n project=tf_test_table.project,\n dataset_id=tf_test_table.dataset_id,\n table_id=tf_test_table.table_id\n).apply(lambda resolved_outputs: f\"bq://{resolved_outputs['project']}.{resolved_outputs['dataset_id']}.{resolved_outputs['table_id']}\")\n,\n \"entity_id_columns\": [\"test_entity_column\"],\n })\nproject = gcp.organizations.get_project()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var featureonlinestore = new Gcp.Vertex.AiFeatureOnlineStore(\"featureonlinestore\", new()\n {\n Name = \"example_feature_view\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n Bigtable = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableArgs\n {\n AutoScaling = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs\n {\n MinNodeCount = 1,\n MaxNodeCount = 2,\n CpuUtilizationTarget = 80,\n },\n },\n });\n\n var tf_test_dataset = new Gcp.BigQuery.Dataset(\"tf-test-dataset\", new()\n {\n DatasetId = \"example_feature_view\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var tf_test_table = new Gcp.BigQuery.Table(\"tf-test-table\", new()\n {\n DeletionProtection = false,\n DatasetId = tf_test_dataset.DatasetId,\n TableId = \"example_feature_view\",\n Schema = @\" [\n {\n \"\"name\"\": \"\"entity_id\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"description\"\": \"\"Test default entity_id\"\"\n },\n {\n \"\"name\"\": \"\"test_entity_column\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"description\"\": \"\"test secondary entity column\"\"\n },\n {\n \"\"name\"\": \"\"feature_timestamp\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"TIMESTAMP\"\",\n \"\"description\"\": \"\"Default timestamp value\"\"\n }\n]\n\",\n });\n\n var featureview = new Gcp.Vertex.AiFeatureOnlineStoreFeatureview(\"featureview\", new()\n {\n Name = \"example_feature_view\",\n Region = \"us-central1\",\n FeatureOnlineStore = featureonlinestore.Name,\n SyncConfig = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewSyncConfigArgs\n {\n Cron = \"0 0 * * *\",\n },\n BigQuerySource = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewBigQuerySourceArgs\n {\n Uri = Output.Tuple(tf_test_table.Project, tf_test_table.DatasetId, tf_test_table.TableId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n var tableId = values.Item3;\n return $\"bq://{project}.{datasetId}.{tableId}\";\n }),\n EntityIdColumns = new[]\n {\n \"test_entity_column\",\n },\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfeatureonlinestore, err := vertex.NewAiFeatureOnlineStore(ctx, \"featureonlinestore\", \u0026vertex.AiFeatureOnlineStoreArgs{\n\t\t\tName: pulumi.String(\"example_feature_view\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tBigtable: \u0026vertex.AiFeatureOnlineStoreBigtableArgs{\n\t\t\t\tAutoScaling: \u0026vertex.AiFeatureOnlineStoreBigtableAutoScalingArgs{\n\t\t\t\t\tMinNodeCount: pulumi.Int(1),\n\t\t\t\t\tMaxNodeCount: pulumi.Int(2),\n\t\t\t\t\tCpuUtilizationTarget: pulumi.Int(80),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDataset(ctx, \"tf-test-dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_feature_view\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewTable(ctx, \"tf-test-table\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: tf_test_dataset.DatasetId,\n\t\t\tTableId: pulumi.String(\"example_feature_view\"),\n\t\t\tSchema: pulumi.String(` [\n {\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n },\n {\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiFeatureOnlineStoreFeatureview(ctx, \"featureview\", \u0026vertex.AiFeatureOnlineStoreFeatureviewArgs{\n\t\t\tName: pulumi.String(\"example_feature_view\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tFeatureOnlineStore: featureonlinestore.Name,\n\t\t\tSyncConfig: \u0026vertex.AiFeatureOnlineStoreFeatureviewSyncConfigArgs{\n\t\t\t\tCron: pulumi.String(\"0 0 * * *\"),\n\t\t\t},\n\t\t\tBigQuerySource: \u0026vertex.AiFeatureOnlineStoreFeatureviewBigQuerySourceArgs{\n\t\t\t\tUri: pulumi.All(tf_test_table.Project, tf_test_table.DatasetId, tf_test_table.TableId).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tproject := _args[0].(string)\n\t\t\t\t\tdatasetId := _args[1].(string)\n\t\t\t\t\ttableId := _args[2].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"bq://%v.%v.%v\", project, datasetId, tableId), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tEntityIdColumns: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"test_entity_column\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStore;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreFeatureview;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreFeatureviewArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewSyncConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewBigQuerySourceArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var featureonlinestore = new AiFeatureOnlineStore(\"featureonlinestore\", AiFeatureOnlineStoreArgs.builder()\n .name(\"example_feature_view\")\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .bigtable(AiFeatureOnlineStoreBigtableArgs.builder()\n .autoScaling(AiFeatureOnlineStoreBigtableAutoScalingArgs.builder()\n .minNodeCount(1)\n .maxNodeCount(2)\n .cpuUtilizationTarget(80)\n .build())\n .build())\n .build());\n\n var tf_test_dataset = new Dataset(\"tf-test-dataset\", DatasetArgs.builder()\n .datasetId(\"example_feature_view\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n var tf_test_table = new Table(\"tf-test-table\", TableArgs.builder()\n .deletionProtection(false)\n .datasetId(tf_test_dataset.datasetId())\n .tableId(\"example_feature_view\")\n .schema(\"\"\"\n [\n {\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n },\n {\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n }\n]\n \"\"\")\n .build());\n\n var featureview = new AiFeatureOnlineStoreFeatureview(\"featureview\", AiFeatureOnlineStoreFeatureviewArgs.builder()\n .name(\"example_feature_view\")\n .region(\"us-central1\")\n .featureOnlineStore(featureonlinestore.name())\n .syncConfig(AiFeatureOnlineStoreFeatureviewSyncConfigArgs.builder()\n .cron(\"0 0 * * *\")\n .build())\n .bigQuerySource(AiFeatureOnlineStoreFeatureviewBigQuerySourceArgs.builder()\n .uri(Output.tuple(tf_test_table.project(), tf_test_table.datasetId(), tf_test_table.tableId()).applyValue(values -\u003e {\n var project = values.t1;\n var datasetId = values.t2;\n var tableId = values.t3;\n return String.format(\"bq://%s.%s.%s\", project,datasetId,tableId);\n }))\n .entityIdColumns(\"test_entity_column\")\n .build())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n featureonlinestore:\n type: gcp:vertex:AiFeatureOnlineStore\n properties:\n name: example_feature_view\n labels:\n foo: bar\n region: us-central1\n bigtable:\n autoScaling:\n minNodeCount: 1\n maxNodeCount: 2\n cpuUtilizationTarget: 80\n tf-test-dataset:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_feature_view\n friendlyName: test\n description: This is a test description\n location: US\n tf-test-table:\n type: gcp:bigquery:Table\n properties:\n deletionProtection: false\n datasetId: ${[\"tf-test-dataset\"].datasetId}\n tableId: example_feature_view\n schema: |2\n [\n {\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n },\n {\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n }\n ]\n featureview:\n type: gcp:vertex:AiFeatureOnlineStoreFeatureview\n properties:\n name: example_feature_view\n region: us-central1\n featureOnlineStore: ${featureonlinestore.name}\n syncConfig:\n cron: 0 0 * * *\n bigQuerySource:\n uri: bq://${[\"tf-test-table\"].project}.${[\"tf-test-table\"].datasetId}.${[\"tf-test-table\"].tableId}\n entityIdColumns:\n - test_entity_column\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Featureonlinestore Featureview Feature Registry\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst featureonlinestore = new gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\", {\n name: \"example_feature_view_feature_registry\",\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n bigtable: {\n autoScaling: {\n minNodeCount: 1,\n maxNodeCount: 2,\n cpuUtilizationTarget: 80,\n },\n },\n});\nconst sampleDataset = new gcp.bigquery.Dataset(\"sample_dataset\", {\n datasetId: \"example_feature_view_feature_registry\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst sampleTable = new gcp.bigquery.Table(\"sample_table\", {\n deletionProtection: false,\n datasetId: sampleDataset.datasetId,\n tableId: \"example_feature_view_feature_registry\",\n schema: `[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_feature_view_feature_registry\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n`,\n});\nconst sampleFeatureGroup = new gcp.vertex.AiFeatureGroup(\"sample_feature_group\", {\n name: \"example_feature_view_feature_registry\",\n description: \"A sample feature group\",\n region: \"us-central1\",\n labels: {\n \"label-one\": \"value-one\",\n },\n bigQuery: {\n bigQuerySource: {\n inputUri: pulumi.interpolate`bq://${sampleTable.project}.${sampleTable.datasetId}.${sampleTable.tableId}`,\n },\n entityIdColumns: [\"feature_id\"],\n },\n});\nconst sampleFeature = new gcp.vertex.AiFeatureGroupFeature(\"sample_feature\", {\n name: \"example_feature_view_feature_registry\",\n region: \"us-central1\",\n featureGroup: sampleFeatureGroup.name,\n description: \"A sample feature\",\n labels: {\n \"label-one\": \"value-one\",\n },\n});\nconst featureviewFeatureregistry = new gcp.vertex.AiFeatureOnlineStoreFeatureview(\"featureview_featureregistry\", {\n name: \"example_feature_view_feature_registry\",\n region: \"us-central1\",\n featureOnlineStore: featureonlinestore.name,\n syncConfig: {\n cron: \"0 0 * * *\",\n },\n featureRegistrySource: {\n featureGroups: [{\n featureGroupId: sampleFeatureGroup.name,\n featureIds: [sampleFeature.name],\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeatureonlinestore = gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\",\n name=\"example_feature_view_feature_registry\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n bigtable={\n \"auto_scaling\": {\n \"min_node_count\": 1,\n \"max_node_count\": 2,\n \"cpu_utilization_target\": 80,\n },\n })\nsample_dataset = gcp.bigquery.Dataset(\"sample_dataset\",\n dataset_id=\"example_feature_view_feature_registry\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\nsample_table = gcp.bigquery.Table(\"sample_table\",\n deletion_protection=False,\n dataset_id=sample_dataset.dataset_id,\n table_id=\"example_feature_view_feature_registry\",\n schema=\"\"\"[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_feature_view_feature_registry\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n\"\"\")\nsample_feature_group = gcp.vertex.AiFeatureGroup(\"sample_feature_group\",\n name=\"example_feature_view_feature_registry\",\n description=\"A sample feature group\",\n region=\"us-central1\",\n labels={\n \"label-one\": \"value-one\",\n },\n big_query={\n \"big_query_source\": {\n \"input_uri\": pulumi.Output.all(\n project=sample_table.project,\n dataset_id=sample_table.dataset_id,\n table_id=sample_table.table_id\n).apply(lambda resolved_outputs: f\"bq://{resolved_outputs['project']}.{resolved_outputs['dataset_id']}.{resolved_outputs['table_id']}\")\n,\n },\n \"entity_id_columns\": [\"feature_id\"],\n })\nsample_feature = gcp.vertex.AiFeatureGroupFeature(\"sample_feature\",\n name=\"example_feature_view_feature_registry\",\n region=\"us-central1\",\n feature_group=sample_feature_group.name,\n description=\"A sample feature\",\n labels={\n \"label-one\": \"value-one\",\n })\nfeatureview_featureregistry = gcp.vertex.AiFeatureOnlineStoreFeatureview(\"featureview_featureregistry\",\n name=\"example_feature_view_feature_registry\",\n region=\"us-central1\",\n feature_online_store=featureonlinestore.name,\n sync_config={\n \"cron\": \"0 0 * * *\",\n },\n feature_registry_source={\n \"feature_groups\": [{\n \"feature_group_id\": sample_feature_group.name,\n \"feature_ids\": [sample_feature.name],\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var featureonlinestore = new Gcp.Vertex.AiFeatureOnlineStore(\"featureonlinestore\", new()\n {\n Name = \"example_feature_view_feature_registry\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n Bigtable = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableArgs\n {\n AutoScaling = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs\n {\n MinNodeCount = 1,\n MaxNodeCount = 2,\n CpuUtilizationTarget = 80,\n },\n },\n });\n\n var sampleDataset = new Gcp.BigQuery.Dataset(\"sample_dataset\", new()\n {\n DatasetId = \"example_feature_view_feature_registry\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var sampleTable = new Gcp.BigQuery.Table(\"sample_table\", new()\n {\n DeletionProtection = false,\n DatasetId = sampleDataset.DatasetId,\n TableId = \"example_feature_view_feature_registry\",\n Schema = @\"[\n {\n \"\"name\"\": \"\"feature_id\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n },\n {\n \"\"name\"\": \"\"example_feature_view_feature_registry\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n },\n {\n \"\"name\"\": \"\"feature_timestamp\"\",\n \"\"type\"\": \"\"TIMESTAMP\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n }\n]\n\",\n });\n\n var sampleFeatureGroup = new Gcp.Vertex.AiFeatureGroup(\"sample_feature_group\", new()\n {\n Name = \"example_feature_view_feature_registry\",\n Description = \"A sample feature group\",\n Region = \"us-central1\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n BigQuery = new Gcp.Vertex.Inputs.AiFeatureGroupBigQueryArgs\n {\n BigQuerySource = new Gcp.Vertex.Inputs.AiFeatureGroupBigQueryBigQuerySourceArgs\n {\n InputUri = Output.Tuple(sampleTable.Project, sampleTable.DatasetId, sampleTable.TableId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n var tableId = values.Item3;\n return $\"bq://{project}.{datasetId}.{tableId}\";\n }),\n },\n EntityIdColumns = new[]\n {\n \"feature_id\",\n },\n },\n });\n\n var sampleFeature = new Gcp.Vertex.AiFeatureGroupFeature(\"sample_feature\", new()\n {\n Name = \"example_feature_view_feature_registry\",\n Region = \"us-central1\",\n FeatureGroup = sampleFeatureGroup.Name,\n Description = \"A sample feature\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var featureviewFeatureregistry = new Gcp.Vertex.AiFeatureOnlineStoreFeatureview(\"featureview_featureregistry\", new()\n {\n Name = \"example_feature_view_feature_registry\",\n Region = \"us-central1\",\n FeatureOnlineStore = featureonlinestore.Name,\n SyncConfig = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewSyncConfigArgs\n {\n Cron = \"0 0 * * *\",\n },\n FeatureRegistrySource = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceArgs\n {\n FeatureGroups = new[]\n {\n new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceFeatureGroupArgs\n {\n FeatureGroupId = sampleFeatureGroup.Name,\n FeatureIds = new[]\n {\n sampleFeature.Name,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfeatureonlinestore, err := vertex.NewAiFeatureOnlineStore(ctx, \"featureonlinestore\", \u0026vertex.AiFeatureOnlineStoreArgs{\n\t\t\tName: pulumi.String(\"example_feature_view_feature_registry\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tBigtable: \u0026vertex.AiFeatureOnlineStoreBigtableArgs{\n\t\t\t\tAutoScaling: \u0026vertex.AiFeatureOnlineStoreBigtableAutoScalingArgs{\n\t\t\t\t\tMinNodeCount: pulumi.Int(1),\n\t\t\t\t\tMaxNodeCount: pulumi.Int(2),\n\t\t\t\t\tCpuUtilizationTarget: pulumi.Int(80),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsampleDataset, err := bigquery.NewDataset(ctx, \"sample_dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_feature_view_feature_registry\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsampleTable, err := bigquery.NewTable(ctx, \"sample_table\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: sampleDataset.DatasetId,\n\t\t\tTableId: pulumi.String(\"example_feature_view_feature_registry\"),\n\t\t\tSchema: pulumi.String(`[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_feature_view_feature_registry\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsampleFeatureGroup, err := vertex.NewAiFeatureGroup(ctx, \"sample_feature_group\", \u0026vertex.AiFeatureGroupArgs{\n\t\t\tName: pulumi.String(\"example_feature_view_feature_registry\"),\n\t\t\tDescription: pulumi.String(\"A sample feature group\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tBigQuery: \u0026vertex.AiFeatureGroupBigQueryArgs{\n\t\t\t\tBigQuerySource: \u0026vertex.AiFeatureGroupBigQueryBigQuerySourceArgs{\n\t\t\t\t\tInputUri: pulumi.All(sampleTable.Project, sampleTable.DatasetId, sampleTable.TableId).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\tproject := _args[0].(string)\n\t\t\t\t\t\tdatasetId := _args[1].(string)\n\t\t\t\t\t\ttableId := _args[2].(string)\n\t\t\t\t\t\treturn fmt.Sprintf(\"bq://%v.%v.%v\", project, datasetId, tableId), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t\tEntityIdColumns: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"feature_id\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsampleFeature, err := vertex.NewAiFeatureGroupFeature(ctx, \"sample_feature\", \u0026vertex.AiFeatureGroupFeatureArgs{\n\t\t\tName: pulumi.String(\"example_feature_view_feature_registry\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tFeatureGroup: sampleFeatureGroup.Name,\n\t\t\tDescription: pulumi.String(\"A sample feature\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiFeatureOnlineStoreFeatureview(ctx, \"featureview_featureregistry\", \u0026vertex.AiFeatureOnlineStoreFeatureviewArgs{\n\t\t\tName: pulumi.String(\"example_feature_view_feature_registry\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tFeatureOnlineStore: featureonlinestore.Name,\n\t\t\tSyncConfig: \u0026vertex.AiFeatureOnlineStoreFeatureviewSyncConfigArgs{\n\t\t\t\tCron: pulumi.String(\"0 0 * * *\"),\n\t\t\t},\n\t\t\tFeatureRegistrySource: \u0026vertex.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceArgs{\n\t\t\t\tFeatureGroups: vertex.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceFeatureGroupArray{\n\t\t\t\t\t\u0026vertex.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceFeatureGroupArgs{\n\t\t\t\t\t\tFeatureGroupId: sampleFeatureGroup.Name,\n\t\t\t\t\t\tFeatureIds: pulumi.StringArray{\n\t\t\t\t\t\t\tsampleFeature.Name,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStore;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.vertex.AiFeatureGroup;\nimport com.pulumi.gcp.vertex.AiFeatureGroupArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureGroupBigQueryArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureGroupBigQueryBigQuerySourceArgs;\nimport com.pulumi.gcp.vertex.AiFeatureGroupFeature;\nimport com.pulumi.gcp.vertex.AiFeatureGroupFeatureArgs;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreFeatureview;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreFeatureviewArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewSyncConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var featureonlinestore = new AiFeatureOnlineStore(\"featureonlinestore\", AiFeatureOnlineStoreArgs.builder()\n .name(\"example_feature_view_feature_registry\")\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .bigtable(AiFeatureOnlineStoreBigtableArgs.builder()\n .autoScaling(AiFeatureOnlineStoreBigtableAutoScalingArgs.builder()\n .minNodeCount(1)\n .maxNodeCount(2)\n .cpuUtilizationTarget(80)\n .build())\n .build())\n .build());\n\n var sampleDataset = new Dataset(\"sampleDataset\", DatasetArgs.builder()\n .datasetId(\"example_feature_view_feature_registry\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n var sampleTable = new Table(\"sampleTable\", TableArgs.builder()\n .deletionProtection(false)\n .datasetId(sampleDataset.datasetId())\n .tableId(\"example_feature_view_feature_registry\")\n .schema(\"\"\"\n[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_feature_view_feature_registry\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n \"\"\")\n .build());\n\n var sampleFeatureGroup = new AiFeatureGroup(\"sampleFeatureGroup\", AiFeatureGroupArgs.builder()\n .name(\"example_feature_view_feature_registry\")\n .description(\"A sample feature group\")\n .region(\"us-central1\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .bigQuery(AiFeatureGroupBigQueryArgs.builder()\n .bigQuerySource(AiFeatureGroupBigQueryBigQuerySourceArgs.builder()\n .inputUri(Output.tuple(sampleTable.project(), sampleTable.datasetId(), sampleTable.tableId()).applyValue(values -\u003e {\n var project = values.t1;\n var datasetId = values.t2;\n var tableId = values.t3;\n return String.format(\"bq://%s.%s.%s\", project,datasetId,tableId);\n }))\n .build())\n .entityIdColumns(\"feature_id\")\n .build())\n .build());\n\n var sampleFeature = new AiFeatureGroupFeature(\"sampleFeature\", AiFeatureGroupFeatureArgs.builder()\n .name(\"example_feature_view_feature_registry\")\n .region(\"us-central1\")\n .featureGroup(sampleFeatureGroup.name())\n .description(\"A sample feature\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var featureviewFeatureregistry = new AiFeatureOnlineStoreFeatureview(\"featureviewFeatureregistry\", AiFeatureOnlineStoreFeatureviewArgs.builder()\n .name(\"example_feature_view_feature_registry\")\n .region(\"us-central1\")\n .featureOnlineStore(featureonlinestore.name())\n .syncConfig(AiFeatureOnlineStoreFeatureviewSyncConfigArgs.builder()\n .cron(\"0 0 * * *\")\n .build())\n .featureRegistrySource(AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceArgs.builder()\n .featureGroups(AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceFeatureGroupArgs.builder()\n .featureGroupId(sampleFeatureGroup.name())\n .featureIds(sampleFeature.name())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n featureonlinestore:\n type: gcp:vertex:AiFeatureOnlineStore\n properties:\n name: example_feature_view_feature_registry\n labels:\n foo: bar\n region: us-central1\n bigtable:\n autoScaling:\n minNodeCount: 1\n maxNodeCount: 2\n cpuUtilizationTarget: 80\n sampleDataset:\n type: gcp:bigquery:Dataset\n name: sample_dataset\n properties:\n datasetId: example_feature_view_feature_registry\n friendlyName: test\n description: This is a test description\n location: US\n sampleTable:\n type: gcp:bigquery:Table\n name: sample_table\n properties:\n deletionProtection: false\n datasetId: ${sampleDataset.datasetId}\n tableId: example_feature_view_feature_registry\n schema: |\n [\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_feature_view_feature_registry\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n ]\n sampleFeatureGroup:\n type: gcp:vertex:AiFeatureGroup\n name: sample_feature_group\n properties:\n name: example_feature_view_feature_registry\n description: A sample feature group\n region: us-central1\n labels:\n label-one: value-one\n bigQuery:\n bigQuerySource:\n inputUri: bq://${sampleTable.project}.${sampleTable.datasetId}.${sampleTable.tableId}\n entityIdColumns:\n - feature_id\n sampleFeature:\n type: gcp:vertex:AiFeatureGroupFeature\n name: sample_feature\n properties:\n name: example_feature_view_feature_registry\n region: us-central1\n featureGroup: ${sampleFeatureGroup.name}\n description: A sample feature\n labels:\n label-one: value-one\n featureviewFeatureregistry:\n type: gcp:vertex:AiFeatureOnlineStoreFeatureview\n name: featureview_featureregistry\n properties:\n name: example_feature_view_feature_registry\n region: us-central1\n featureOnlineStore: ${featureonlinestore.name}\n syncConfig:\n cron: 0 0 * * *\n featureRegistrySource:\n featureGroups:\n - featureGroupId: ${sampleFeatureGroup.name}\n featureIds:\n - ${sampleFeature.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Featureonlinestore Featureview Cross Project\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\nconst testProject = gcp.organizations.getProject({});\nconst project = new gcp.organizations.Project(\"project\", {\n projectId: \"tf-test_13293\",\n name: \"tf-test_40289\",\n orgId: \"123456789\",\n billingAccount: \"000000-0000000-0000000-000000\",\n deletionPolicy: \"DELETE\",\n});\nconst wait60Seconds = new time.index.Sleep(\"wait_60_seconds\", {createDuration: \"60s\"}, {\n dependsOn: [project],\n});\nconst vertexai = new gcp.projects.Service(\"vertexai\", {\n service: \"aiplatform.googleapis.com\",\n project: project.projectId,\n disableOnDestroy: false,\n}, {\n dependsOn: [wait60Seconds],\n});\nconst featureonlinestore = new gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\", {\n name: \"example_cross_project_featureview\",\n project: project.projectId,\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n bigtable: {\n autoScaling: {\n minNodeCount: 1,\n maxNodeCount: 2,\n cpuUtilizationTarget: 80,\n },\n },\n}, {\n dependsOn: [vertexai],\n});\nconst sampleDataset = new gcp.bigquery.Dataset(\"sample_dataset\", {\n datasetId: \"example_cross_project_featureview\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst viewer = new gcp.bigquery.DatasetIamMember(\"viewer\", {\n project: testProject.then(testProject =\u003e testProject.projectId),\n datasetId: sampleDataset.datasetId,\n role: \"roles/bigquery.dataViewer\",\n member: pulumi.interpolate`serviceAccount:service-${project.number}@gcp-sa-aiplatform.iam.gserviceaccount.com`,\n}, {\n dependsOn: [featureonlinestore],\n});\nconst wait30Seconds = new time.index.Sleep(\"wait_30_seconds\", {createDuration: \"30s\"}, {\n dependsOn: [viewer],\n});\nconst sampleTable = new gcp.bigquery.Table(\"sample_table\", {\n deletionProtection: false,\n datasetId: sampleDataset.datasetId,\n tableId: \"example_cross_project_featureview\",\n schema: `[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_cross_project_featureview\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n`,\n});\nconst sampleFeatureGroup = new gcp.vertex.AiFeatureGroup(\"sample_feature_group\", {\n name: \"example_cross_project_featureview\",\n description: \"A sample feature group\",\n region: \"us-central1\",\n labels: {\n \"label-one\": \"value-one\",\n },\n bigQuery: {\n bigQuerySource: {\n inputUri: pulumi.interpolate`bq://${sampleTable.project}.${sampleTable.datasetId}.${sampleTable.tableId}`,\n },\n entityIdColumns: [\"feature_id\"],\n },\n});\nconst sampleFeature = new gcp.vertex.AiFeatureGroupFeature(\"sample_feature\", {\n name: \"example_cross_project_featureview\",\n region: \"us-central1\",\n featureGroup: sampleFeatureGroup.name,\n description: \"A sample feature\",\n labels: {\n \"label-one\": \"value-one\",\n },\n});\nconst crossProjectFeatureview = new gcp.vertex.AiFeatureOnlineStoreFeatureview(\"cross_project_featureview\", {\n name: \"example_cross_project_featureview\",\n project: project.projectId,\n region: \"us-central1\",\n featureOnlineStore: featureonlinestore.name,\n syncConfig: {\n cron: \"0 0 * * *\",\n },\n featureRegistrySource: {\n featureGroups: [{\n featureGroupId: sampleFeatureGroup.name,\n featureIds: [sampleFeature.name],\n }],\n projectNumber: testProject.then(testProject =\u003e testProject.number),\n },\n}, {\n dependsOn: [\n vertexai,\n wait30Seconds,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\ntest_project = gcp.organizations.get_project()\nproject = gcp.organizations.Project(\"project\",\n project_id=\"tf-test_13293\",\n name=\"tf-test_40289\",\n org_id=\"123456789\",\n billing_account=\"000000-0000000-0000000-000000\",\n deletion_policy=\"DELETE\")\nwait60_seconds = time.index.Sleep(\"wait_60_seconds\", create_duration=60s,\nopts = pulumi.ResourceOptions(depends_on=[project]))\nvertexai = gcp.projects.Service(\"vertexai\",\n service=\"aiplatform.googleapis.com\",\n project=project.project_id,\n disable_on_destroy=False,\n opts = pulumi.ResourceOptions(depends_on=[wait60_seconds]))\nfeatureonlinestore = gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\",\n name=\"example_cross_project_featureview\",\n project=project.project_id,\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n bigtable={\n \"auto_scaling\": {\n \"min_node_count\": 1,\n \"max_node_count\": 2,\n \"cpu_utilization_target\": 80,\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[vertexai]))\nsample_dataset = gcp.bigquery.Dataset(\"sample_dataset\",\n dataset_id=\"example_cross_project_featureview\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\nviewer = gcp.bigquery.DatasetIamMember(\"viewer\",\n project=test_project.project_id,\n dataset_id=sample_dataset.dataset_id,\n role=\"roles/bigquery.dataViewer\",\n member=project.number.apply(lambda number: f\"serviceAccount:service-{number}@gcp-sa-aiplatform.iam.gserviceaccount.com\"),\n opts = pulumi.ResourceOptions(depends_on=[featureonlinestore]))\nwait30_seconds = time.index.Sleep(\"wait_30_seconds\", create_duration=30s,\nopts = pulumi.ResourceOptions(depends_on=[viewer]))\nsample_table = gcp.bigquery.Table(\"sample_table\",\n deletion_protection=False,\n dataset_id=sample_dataset.dataset_id,\n table_id=\"example_cross_project_featureview\",\n schema=\"\"\"[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_cross_project_featureview\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n\"\"\")\nsample_feature_group = gcp.vertex.AiFeatureGroup(\"sample_feature_group\",\n name=\"example_cross_project_featureview\",\n description=\"A sample feature group\",\n region=\"us-central1\",\n labels={\n \"label-one\": \"value-one\",\n },\n big_query={\n \"big_query_source\": {\n \"input_uri\": pulumi.Output.all(\n project=sample_table.project,\n dataset_id=sample_table.dataset_id,\n table_id=sample_table.table_id\n).apply(lambda resolved_outputs: f\"bq://{resolved_outputs['project']}.{resolved_outputs['dataset_id']}.{resolved_outputs['table_id']}\")\n,\n },\n \"entity_id_columns\": [\"feature_id\"],\n })\nsample_feature = gcp.vertex.AiFeatureGroupFeature(\"sample_feature\",\n name=\"example_cross_project_featureview\",\n region=\"us-central1\",\n feature_group=sample_feature_group.name,\n description=\"A sample feature\",\n labels={\n \"label-one\": \"value-one\",\n })\ncross_project_featureview = gcp.vertex.AiFeatureOnlineStoreFeatureview(\"cross_project_featureview\",\n name=\"example_cross_project_featureview\",\n project=project.project_id,\n region=\"us-central1\",\n feature_online_store=featureonlinestore.name,\n sync_config={\n \"cron\": \"0 0 * * *\",\n },\n feature_registry_source={\n \"feature_groups\": [{\n \"feature_group_id\": sample_feature_group.name,\n \"feature_ids\": [sample_feature.name],\n }],\n \"project_number\": test_project.number,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n vertexai,\n wait30_seconds,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Time = Pulumi.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testProject = Gcp.Organizations.GetProject.Invoke();\n\n var project = new Gcp.Organizations.Project(\"project\", new()\n {\n ProjectId = \"tf-test_13293\",\n Name = \"tf-test_40289\",\n OrgId = \"123456789\",\n BillingAccount = \"000000-0000000-0000000-000000\",\n DeletionPolicy = \"DELETE\",\n });\n\n var wait60Seconds = new Time.Index.Sleep(\"wait_60_seconds\", new()\n {\n CreateDuration = \"60s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n project,\n },\n });\n\n var vertexai = new Gcp.Projects.Service(\"vertexai\", new()\n {\n ServiceName = \"aiplatform.googleapis.com\",\n Project = project.ProjectId,\n DisableOnDestroy = false,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait60Seconds,\n },\n });\n\n var featureonlinestore = new Gcp.Vertex.AiFeatureOnlineStore(\"featureonlinestore\", new()\n {\n Name = \"example_cross_project_featureview\",\n Project = project.ProjectId,\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n Bigtable = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableArgs\n {\n AutoScaling = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs\n {\n MinNodeCount = 1,\n MaxNodeCount = 2,\n CpuUtilizationTarget = 80,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vertexai,\n },\n });\n\n var sampleDataset = new Gcp.BigQuery.Dataset(\"sample_dataset\", new()\n {\n DatasetId = \"example_cross_project_featureview\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var viewer = new Gcp.BigQuery.DatasetIamMember(\"viewer\", new()\n {\n Project = testProject.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n DatasetId = sampleDataset.DatasetId,\n Role = \"roles/bigquery.dataViewer\",\n Member = project.Number.Apply(number =\u003e $\"serviceAccount:service-{number}@gcp-sa-aiplatform.iam.gserviceaccount.com\"),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n featureonlinestore,\n },\n });\n\n var wait30Seconds = new Time.Index.Sleep(\"wait_30_seconds\", new()\n {\n CreateDuration = \"30s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n viewer,\n },\n });\n\n var sampleTable = new Gcp.BigQuery.Table(\"sample_table\", new()\n {\n DeletionProtection = false,\n DatasetId = sampleDataset.DatasetId,\n TableId = \"example_cross_project_featureview\",\n Schema = @\"[\n {\n \"\"name\"\": \"\"feature_id\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n },\n {\n \"\"name\"\": \"\"example_cross_project_featureview\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n },\n {\n \"\"name\"\": \"\"feature_timestamp\"\",\n \"\"type\"\": \"\"TIMESTAMP\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n }\n]\n\",\n });\n\n var sampleFeatureGroup = new Gcp.Vertex.AiFeatureGroup(\"sample_feature_group\", new()\n {\n Name = \"example_cross_project_featureview\",\n Description = \"A sample feature group\",\n Region = \"us-central1\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n BigQuery = new Gcp.Vertex.Inputs.AiFeatureGroupBigQueryArgs\n {\n BigQuerySource = new Gcp.Vertex.Inputs.AiFeatureGroupBigQueryBigQuerySourceArgs\n {\n InputUri = Output.Tuple(sampleTable.Project, sampleTable.DatasetId, sampleTable.TableId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n var tableId = values.Item3;\n return $\"bq://{project}.{datasetId}.{tableId}\";\n }),\n },\n EntityIdColumns = new[]\n {\n \"feature_id\",\n },\n },\n });\n\n var sampleFeature = new Gcp.Vertex.AiFeatureGroupFeature(\"sample_feature\", new()\n {\n Name = \"example_cross_project_featureview\",\n Region = \"us-central1\",\n FeatureGroup = sampleFeatureGroup.Name,\n Description = \"A sample feature\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var crossProjectFeatureview = new Gcp.Vertex.AiFeatureOnlineStoreFeatureview(\"cross_project_featureview\", new()\n {\n Name = \"example_cross_project_featureview\",\n Project = project.ProjectId,\n Region = \"us-central1\",\n FeatureOnlineStore = featureonlinestore.Name,\n SyncConfig = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewSyncConfigArgs\n {\n Cron = \"0 0 * * *\",\n },\n FeatureRegistrySource = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceArgs\n {\n FeatureGroups = new[]\n {\n new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceFeatureGroupArgs\n {\n FeatureGroupId = sampleFeatureGroup.Name,\n FeatureIds = new[]\n {\n sampleFeature.Name,\n },\n },\n },\n ProjectNumber = testProject.Apply(getProjectResult =\u003e getProjectResult.Number),\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vertexai,\n wait30Seconds,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestProject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.NewProject(ctx, \"project\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"tf-test_13293\"),\n\t\t\tName: pulumi.String(\"tf-test_40289\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t\tBillingAccount: pulumi.String(\"000000-0000000-0000000-000000\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\twait60Seconds, err := time.NewSleep(ctx, \"wait_60_seconds\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"60s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tproject,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvertexai, err := projects.NewService(ctx, \"vertexai\", \u0026projects.ServiceArgs{\n\t\t\tService: pulumi.String(\"aiplatform.googleapis.com\"),\n\t\t\tProject: project.ProjectId,\n\t\t\tDisableOnDestroy: pulumi.Bool(false),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait60Seconds,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfeatureonlinestore, err := vertex.NewAiFeatureOnlineStore(ctx, \"featureonlinestore\", \u0026vertex.AiFeatureOnlineStoreArgs{\n\t\t\tName: pulumi.String(\"example_cross_project_featureview\"),\n\t\t\tProject: project.ProjectId,\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tBigtable: \u0026vertex.AiFeatureOnlineStoreBigtableArgs{\n\t\t\t\tAutoScaling: \u0026vertex.AiFeatureOnlineStoreBigtableAutoScalingArgs{\n\t\t\t\t\tMinNodeCount: pulumi.Int(1),\n\t\t\t\t\tMaxNodeCount: pulumi.Int(2),\n\t\t\t\t\tCpuUtilizationTarget: pulumi.Int(80),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvertexai,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsampleDataset, err := bigquery.NewDataset(ctx, \"sample_dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_cross_project_featureview\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tviewer, err := bigquery.NewDatasetIamMember(ctx, \"viewer\", \u0026bigquery.DatasetIamMemberArgs{\n\t\t\tProject: pulumi.String(testProject.ProjectId),\n\t\t\tDatasetId: sampleDataset.DatasetId,\n\t\t\tRole: pulumi.String(\"roles/bigquery.dataViewer\"),\n\t\t\tMember: project.Number.ApplyT(func(number string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-aiplatform.iam.gserviceaccount.com\", number), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfeatureonlinestore,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\twait30Seconds, err := time.NewSleep(ctx, \"wait_30_seconds\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"30s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tviewer,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsampleTable, err := bigquery.NewTable(ctx, \"sample_table\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: sampleDataset.DatasetId,\n\t\t\tTableId: pulumi.String(\"example_cross_project_featureview\"),\n\t\t\tSchema: pulumi.String(`[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_cross_project_featureview\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsampleFeatureGroup, err := vertex.NewAiFeatureGroup(ctx, \"sample_feature_group\", \u0026vertex.AiFeatureGroupArgs{\n\t\t\tName: pulumi.String(\"example_cross_project_featureview\"),\n\t\t\tDescription: pulumi.String(\"A sample feature group\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tBigQuery: \u0026vertex.AiFeatureGroupBigQueryArgs{\n\t\t\t\tBigQuerySource: \u0026vertex.AiFeatureGroupBigQueryBigQuerySourceArgs{\n\t\t\t\t\tInputUri: pulumi.All(sampleTable.Project, sampleTable.DatasetId, sampleTable.TableId).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\tproject := _args[0].(string)\n\t\t\t\t\t\tdatasetId := _args[1].(string)\n\t\t\t\t\t\ttableId := _args[2].(string)\n\t\t\t\t\t\treturn fmt.Sprintf(\"bq://%v.%v.%v\", project, datasetId, tableId), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t\tEntityIdColumns: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"feature_id\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsampleFeature, err := vertex.NewAiFeatureGroupFeature(ctx, \"sample_feature\", \u0026vertex.AiFeatureGroupFeatureArgs{\n\t\t\tName: pulumi.String(\"example_cross_project_featureview\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tFeatureGroup: sampleFeatureGroup.Name,\n\t\t\tDescription: pulumi.String(\"A sample feature\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiFeatureOnlineStoreFeatureview(ctx, \"cross_project_featureview\", \u0026vertex.AiFeatureOnlineStoreFeatureviewArgs{\n\t\t\tName: pulumi.String(\"example_cross_project_featureview\"),\n\t\t\tProject: project.ProjectId,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tFeatureOnlineStore: featureonlinestore.Name,\n\t\t\tSyncConfig: \u0026vertex.AiFeatureOnlineStoreFeatureviewSyncConfigArgs{\n\t\t\t\tCron: pulumi.String(\"0 0 * * *\"),\n\t\t\t},\n\t\t\tFeatureRegistrySource: \u0026vertex.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceArgs{\n\t\t\t\tFeatureGroups: vertex.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceFeatureGroupArray{\n\t\t\t\t\t\u0026vertex.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceFeatureGroupArgs{\n\t\t\t\t\t\tFeatureGroupId: sampleFeatureGroup.Name,\n\t\t\t\t\t\tFeatureIds: pulumi.StringArray{\n\t\t\t\t\t\t\tsampleFeature.Name,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tProjectNumber: pulumi.String(testProject.Number),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvertexai,\n\t\t\twait30Seconds,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.projects.Service;\nimport com.pulumi.gcp.projects.ServiceArgs;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStore;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.DatasetIamMember;\nimport com.pulumi.gcp.bigquery.DatasetIamMemberArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.vertex.AiFeatureGroup;\nimport com.pulumi.gcp.vertex.AiFeatureGroupArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureGroupBigQueryArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureGroupBigQueryBigQuerySourceArgs;\nimport com.pulumi.gcp.vertex.AiFeatureGroupFeature;\nimport com.pulumi.gcp.vertex.AiFeatureGroupFeatureArgs;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreFeatureview;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreFeatureviewArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewSyncConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var testProject = OrganizationsFunctions.getProject();\n\n var project = new Project(\"project\", ProjectArgs.builder()\n .projectId(\"tf-test_13293\")\n .name(\"tf-test_40289\")\n .orgId(\"123456789\")\n .billingAccount(\"000000-0000000-0000000-000000\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n var wait60Seconds = new Sleep(\"wait60Seconds\", SleepArgs.builder()\n .createDuration(\"60s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(project)\n .build());\n\n var vertexai = new Service(\"vertexai\", ServiceArgs.builder()\n .service(\"aiplatform.googleapis.com\")\n .project(project.projectId())\n .disableOnDestroy(false)\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait60Seconds)\n .build());\n\n var featureonlinestore = new AiFeatureOnlineStore(\"featureonlinestore\", AiFeatureOnlineStoreArgs.builder()\n .name(\"example_cross_project_featureview\")\n .project(project.projectId())\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .bigtable(AiFeatureOnlineStoreBigtableArgs.builder()\n .autoScaling(AiFeatureOnlineStoreBigtableAutoScalingArgs.builder()\n .minNodeCount(1)\n .maxNodeCount(2)\n .cpuUtilizationTarget(80)\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(vertexai)\n .build());\n\n var sampleDataset = new Dataset(\"sampleDataset\", DatasetArgs.builder()\n .datasetId(\"example_cross_project_featureview\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n var viewer = new DatasetIamMember(\"viewer\", DatasetIamMemberArgs.builder()\n .project(testProject.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .datasetId(sampleDataset.datasetId())\n .role(\"roles/bigquery.dataViewer\")\n .member(project.number().applyValue(number -\u003e String.format(\"serviceAccount:service-%s@gcp-sa-aiplatform.iam.gserviceaccount.com\", number)))\n .build(), CustomResourceOptions.builder()\n .dependsOn(featureonlinestore)\n .build());\n\n var wait30Seconds = new Sleep(\"wait30Seconds\", SleepArgs.builder()\n .createDuration(\"30s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(viewer)\n .build());\n\n var sampleTable = new Table(\"sampleTable\", TableArgs.builder()\n .deletionProtection(false)\n .datasetId(sampleDataset.datasetId())\n .tableId(\"example_cross_project_featureview\")\n .schema(\"\"\"\n[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_cross_project_featureview\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n \"\"\")\n .build());\n\n var sampleFeatureGroup = new AiFeatureGroup(\"sampleFeatureGroup\", AiFeatureGroupArgs.builder()\n .name(\"example_cross_project_featureview\")\n .description(\"A sample feature group\")\n .region(\"us-central1\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .bigQuery(AiFeatureGroupBigQueryArgs.builder()\n .bigQuerySource(AiFeatureGroupBigQueryBigQuerySourceArgs.builder()\n .inputUri(Output.tuple(sampleTable.project(), sampleTable.datasetId(), sampleTable.tableId()).applyValue(values -\u003e {\n var project = values.t1;\n var datasetId = values.t2;\n var tableId = values.t3;\n return String.format(\"bq://%s.%s.%s\", project,datasetId,tableId);\n }))\n .build())\n .entityIdColumns(\"feature_id\")\n .build())\n .build());\n\n var sampleFeature = new AiFeatureGroupFeature(\"sampleFeature\", AiFeatureGroupFeatureArgs.builder()\n .name(\"example_cross_project_featureview\")\n .region(\"us-central1\")\n .featureGroup(sampleFeatureGroup.name())\n .description(\"A sample feature\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var crossProjectFeatureview = new AiFeatureOnlineStoreFeatureview(\"crossProjectFeatureview\", AiFeatureOnlineStoreFeatureviewArgs.builder()\n .name(\"example_cross_project_featureview\")\n .project(project.projectId())\n .region(\"us-central1\")\n .featureOnlineStore(featureonlinestore.name())\n .syncConfig(AiFeatureOnlineStoreFeatureviewSyncConfigArgs.builder()\n .cron(\"0 0 * * *\")\n .build())\n .featureRegistrySource(AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceArgs.builder()\n .featureGroups(AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceFeatureGroupArgs.builder()\n .featureGroupId(sampleFeatureGroup.name())\n .featureIds(sampleFeature.name())\n .build())\n .projectNumber(testProject.applyValue(getProjectResult -\u003e getProjectResult.number()))\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n vertexai,\n wait30Seconds)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:organizations:Project\n properties:\n projectId: tf-test_13293\n name: tf-test_40289\n orgId: '123456789'\n billingAccount: 000000-0000000-0000000-000000\n deletionPolicy: DELETE\n wait60Seconds:\n type: time:sleep\n name: wait_60_seconds\n properties:\n createDuration: 60s\n options:\n dependson:\n - ${project}\n wait30Seconds:\n type: time:sleep\n name: wait_30_seconds\n properties:\n createDuration: 30s\n options:\n dependson:\n - ${viewer}\n vertexai:\n type: gcp:projects:Service\n properties:\n service: aiplatform.googleapis.com\n project: ${project.projectId}\n disableOnDestroy: false # Needed for CI tests for permissions to propagate, should not be needed for actual usage\n options:\n dependson:\n - ${wait60Seconds}\n viewer:\n type: gcp:bigquery:DatasetIamMember\n properties:\n project: ${testProject.projectId}\n datasetId: ${sampleDataset.datasetId}\n role: roles/bigquery.dataViewer\n member: serviceAccount:service-${project.number}@gcp-sa-aiplatform.iam.gserviceaccount.com\n options:\n dependson:\n - ${featureonlinestore}\n featureonlinestore:\n type: gcp:vertex:AiFeatureOnlineStore\n properties:\n name: example_cross_project_featureview\n project: ${project.projectId}\n labels:\n foo: bar\n region: us-central1\n bigtable:\n autoScaling:\n minNodeCount: 1\n maxNodeCount: 2\n cpuUtilizationTarget: 80\n options:\n dependson:\n - ${vertexai}\n sampleDataset:\n type: gcp:bigquery:Dataset\n name: sample_dataset\n properties:\n datasetId: example_cross_project_featureview\n friendlyName: test\n description: This is a test description\n location: US\n sampleTable:\n type: gcp:bigquery:Table\n name: sample_table\n properties:\n deletionProtection: false\n datasetId: ${sampleDataset.datasetId}\n tableId: example_cross_project_featureview\n schema: |\n [\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_cross_project_featureview\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n ]\n sampleFeatureGroup:\n type: gcp:vertex:AiFeatureGroup\n name: sample_feature_group\n properties:\n name: example_cross_project_featureview\n description: A sample feature group\n region: us-central1\n labels:\n label-one: value-one\n bigQuery:\n bigQuerySource:\n inputUri: bq://${sampleTable.project}.${sampleTable.datasetId}.${sampleTable.tableId}\n entityIdColumns:\n - feature_id\n sampleFeature:\n type: gcp:vertex:AiFeatureGroupFeature\n name: sample_feature\n properties:\n name: example_cross_project_featureview\n region: us-central1\n featureGroup: ${sampleFeatureGroup.name}\n description: A sample feature\n labels:\n label-one: value-one\n crossProjectFeatureview:\n type: gcp:vertex:AiFeatureOnlineStoreFeatureview\n name: cross_project_featureview\n properties:\n name: example_cross_project_featureview\n project: ${project.projectId}\n region: us-central1\n featureOnlineStore: ${featureonlinestore.name}\n syncConfig:\n cron: 0 0 * * *\n featureRegistrySource:\n featureGroups:\n - featureGroupId: ${sampleFeatureGroup.name}\n featureIds:\n - ${sampleFeature.name}\n projectNumber: ${testProject.number}\n options:\n dependson:\n - ${vertexai}\n - ${wait30Seconds}\nvariables:\n testProject:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Featureonlinestore Featureview With Vector Search\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst featureonlinestore = new gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\", {\n name: \"example_feature_view_vector_search\",\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n bigtable: {\n autoScaling: {\n minNodeCount: 1,\n maxNodeCount: 2,\n cpuUtilizationTarget: 80,\n },\n },\n embeddingManagement: {\n enabled: true,\n },\n});\nconst tf_test_dataset = new gcp.bigquery.Dataset(\"tf-test-dataset\", {\n datasetId: \"example_feature_view_vector_search\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst tf_test_table = new gcp.bigquery.Table(\"tf-test-table\", {\n deletionProtection: false,\n datasetId: tf_test_dataset.datasetId,\n tableId: \"example_feature_view_vector_search\",\n schema: `[\n{\n \"name\": \"test_primary_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"primary test id\"\n},\n{\n \"name\": \"embedding\",\n \"mode\": \"REPEATED\",\n \"type\": \"FLOAT\",\n \"description\": \"embedding column for primary_id column\"\n},\n{\n \"name\": \"country\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"country\"\n},\n{\n \"name\": \"test_crowding_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"INTEGER\",\n \"description\": \"test crowding column\"\n},\n{\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n},\n{\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n},\n{\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n}\n]\n`,\n});\nconst featureviewVectorSearch = new gcp.vertex.AiFeatureOnlineStoreFeatureview(\"featureview_vector_search\", {\n name: \"example_feature_view_vector_search\",\n region: \"us-central1\",\n featureOnlineStore: featureonlinestore.name,\n syncConfig: {\n cron: \"0 0 * * *\",\n },\n bigQuerySource: {\n uri: pulumi.interpolate`bq://${tf_test_table.project}.${tf_test_table.datasetId}.${tf_test_table.tableId}`,\n entityIdColumns: [\"test_entity_column\"],\n },\n vectorSearchConfig: {\n embeddingColumn: \"embedding\",\n filterColumns: [\"country\"],\n crowdingColumn: \"test_crowding_column\",\n distanceMeasureType: \"DOT_PRODUCT_DISTANCE\",\n treeAhConfig: {\n leafNodeEmbeddingCount: \"1000\",\n },\n embeddingDimension: 2,\n },\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeatureonlinestore = gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\",\n name=\"example_feature_view_vector_search\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n bigtable={\n \"auto_scaling\": {\n \"min_node_count\": 1,\n \"max_node_count\": 2,\n \"cpu_utilization_target\": 80,\n },\n },\n embedding_management={\n \"enabled\": True,\n })\ntf_test_dataset = gcp.bigquery.Dataset(\"tf-test-dataset\",\n dataset_id=\"example_feature_view_vector_search\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\ntf_test_table = gcp.bigquery.Table(\"tf-test-table\",\n deletion_protection=False,\n dataset_id=tf_test_dataset.dataset_id,\n table_id=\"example_feature_view_vector_search\",\n schema=\"\"\"[\n{\n \"name\": \"test_primary_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"primary test id\"\n},\n{\n \"name\": \"embedding\",\n \"mode\": \"REPEATED\",\n \"type\": \"FLOAT\",\n \"description\": \"embedding column for primary_id column\"\n},\n{\n \"name\": \"country\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"country\"\n},\n{\n \"name\": \"test_crowding_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"INTEGER\",\n \"description\": \"test crowding column\"\n},\n{\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n},\n{\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n},\n{\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n}\n]\n\"\"\")\nfeatureview_vector_search = gcp.vertex.AiFeatureOnlineStoreFeatureview(\"featureview_vector_search\",\n name=\"example_feature_view_vector_search\",\n region=\"us-central1\",\n feature_online_store=featureonlinestore.name,\n sync_config={\n \"cron\": \"0 0 * * *\",\n },\n big_query_source={\n \"uri\": pulumi.Output.all(\n project=tf_test_table.project,\n dataset_id=tf_test_table.dataset_id,\n table_id=tf_test_table.table_id\n).apply(lambda resolved_outputs: f\"bq://{resolved_outputs['project']}.{resolved_outputs['dataset_id']}.{resolved_outputs['table_id']}\")\n,\n \"entity_id_columns\": [\"test_entity_column\"],\n },\n vector_search_config={\n \"embedding_column\": \"embedding\",\n \"filter_columns\": [\"country\"],\n \"crowding_column\": \"test_crowding_column\",\n \"distance_measure_type\": \"DOT_PRODUCT_DISTANCE\",\n \"tree_ah_config\": {\n \"leaf_node_embedding_count\": \"1000\",\n },\n \"embedding_dimension\": 2,\n })\nproject = gcp.organizations.get_project()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var featureonlinestore = new Gcp.Vertex.AiFeatureOnlineStore(\"featureonlinestore\", new()\n {\n Name = \"example_feature_view_vector_search\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n Bigtable = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableArgs\n {\n AutoScaling = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs\n {\n MinNodeCount = 1,\n MaxNodeCount = 2,\n CpuUtilizationTarget = 80,\n },\n },\n EmbeddingManagement = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreEmbeddingManagementArgs\n {\n Enabled = true,\n },\n });\n\n var tf_test_dataset = new Gcp.BigQuery.Dataset(\"tf-test-dataset\", new()\n {\n DatasetId = \"example_feature_view_vector_search\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var tf_test_table = new Gcp.BigQuery.Table(\"tf-test-table\", new()\n {\n DeletionProtection = false,\n DatasetId = tf_test_dataset.DatasetId,\n TableId = \"example_feature_view_vector_search\",\n Schema = @\"[\n{\n \"\"name\"\": \"\"test_primary_id\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"description\"\": \"\"primary test id\"\"\n},\n{\n \"\"name\"\": \"\"embedding\"\",\n \"\"mode\"\": \"\"REPEATED\"\",\n \"\"type\"\": \"\"FLOAT\"\",\n \"\"description\"\": \"\"embedding column for primary_id column\"\"\n},\n{\n \"\"name\"\": \"\"country\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"description\"\": \"\"country\"\"\n},\n{\n \"\"name\"\": \"\"test_crowding_column\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"INTEGER\"\",\n \"\"description\"\": \"\"test crowding column\"\"\n},\n{\n \"\"name\"\": \"\"entity_id\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"description\"\": \"\"Test default entity_id\"\"\n},\n{\n \"\"name\"\": \"\"test_entity_column\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"description\"\": \"\"test secondary entity column\"\"\n},\n{\n \"\"name\"\": \"\"feature_timestamp\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"TIMESTAMP\"\",\n \"\"description\"\": \"\"Default timestamp value\"\"\n}\n]\n\",\n });\n\n var featureviewVectorSearch = new Gcp.Vertex.AiFeatureOnlineStoreFeatureview(\"featureview_vector_search\", new()\n {\n Name = \"example_feature_view_vector_search\",\n Region = \"us-central1\",\n FeatureOnlineStore = featureonlinestore.Name,\n SyncConfig = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewSyncConfigArgs\n {\n Cron = \"0 0 * * *\",\n },\n BigQuerySource = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewBigQuerySourceArgs\n {\n Uri = Output.Tuple(tf_test_table.Project, tf_test_table.DatasetId, tf_test_table.TableId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n var tableId = values.Item3;\n return $\"bq://{project}.{datasetId}.{tableId}\";\n }),\n EntityIdColumns = new[]\n {\n \"test_entity_column\",\n },\n },\n VectorSearchConfig = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewVectorSearchConfigArgs\n {\n EmbeddingColumn = \"embedding\",\n FilterColumns = new[]\n {\n \"country\",\n },\n CrowdingColumn = \"test_crowding_column\",\n DistanceMeasureType = \"DOT_PRODUCT_DISTANCE\",\n TreeAhConfig = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewVectorSearchConfigTreeAhConfigArgs\n {\n LeafNodeEmbeddingCount = \"1000\",\n },\n EmbeddingDimension = 2,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfeatureonlinestore, err := vertex.NewAiFeatureOnlineStore(ctx, \"featureonlinestore\", \u0026vertex.AiFeatureOnlineStoreArgs{\n\t\t\tName: pulumi.String(\"example_feature_view_vector_search\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tBigtable: \u0026vertex.AiFeatureOnlineStoreBigtableArgs{\n\t\t\t\tAutoScaling: \u0026vertex.AiFeatureOnlineStoreBigtableAutoScalingArgs{\n\t\t\t\t\tMinNodeCount: pulumi.Int(1),\n\t\t\t\t\tMaxNodeCount: pulumi.Int(2),\n\t\t\t\t\tCpuUtilizationTarget: pulumi.Int(80),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEmbeddingManagement: \u0026vertex.AiFeatureOnlineStoreEmbeddingManagementArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDataset(ctx, \"tf-test-dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_feature_view_vector_search\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewTable(ctx, \"tf-test-table\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: tf_test_dataset.DatasetId,\n\t\t\tTableId: pulumi.String(\"example_feature_view_vector_search\"),\n\t\t\tSchema: pulumi.String(`[\n{\n \"name\": \"test_primary_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"primary test id\"\n},\n{\n \"name\": \"embedding\",\n \"mode\": \"REPEATED\",\n \"type\": \"FLOAT\",\n \"description\": \"embedding column for primary_id column\"\n},\n{\n \"name\": \"country\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"country\"\n},\n{\n \"name\": \"test_crowding_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"INTEGER\",\n \"description\": \"test crowding column\"\n},\n{\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n},\n{\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n},\n{\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n}\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiFeatureOnlineStoreFeatureview(ctx, \"featureview_vector_search\", \u0026vertex.AiFeatureOnlineStoreFeatureviewArgs{\n\t\t\tName: pulumi.String(\"example_feature_view_vector_search\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tFeatureOnlineStore: featureonlinestore.Name,\n\t\t\tSyncConfig: \u0026vertex.AiFeatureOnlineStoreFeatureviewSyncConfigArgs{\n\t\t\t\tCron: pulumi.String(\"0 0 * * *\"),\n\t\t\t},\n\t\t\tBigQuerySource: \u0026vertex.AiFeatureOnlineStoreFeatureviewBigQuerySourceArgs{\n\t\t\t\tUri: pulumi.All(tf_test_table.Project, tf_test_table.DatasetId, tf_test_table.TableId).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tproject := _args[0].(string)\n\t\t\t\t\tdatasetId := _args[1].(string)\n\t\t\t\t\ttableId := _args[2].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"bq://%v.%v.%v\", project, datasetId, tableId), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tEntityIdColumns: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"test_entity_column\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tVectorSearchConfig: \u0026vertex.AiFeatureOnlineStoreFeatureviewVectorSearchConfigArgs{\n\t\t\t\tEmbeddingColumn: pulumi.String(\"embedding\"),\n\t\t\t\tFilterColumns: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"country\"),\n\t\t\t\t},\n\t\t\t\tCrowdingColumn: pulumi.String(\"test_crowding_column\"),\n\t\t\t\tDistanceMeasureType: pulumi.String(\"DOT_PRODUCT_DISTANCE\"),\n\t\t\t\tTreeAhConfig: \u0026vertex.AiFeatureOnlineStoreFeatureviewVectorSearchConfigTreeAhConfigArgs{\n\t\t\t\t\tLeafNodeEmbeddingCount: pulumi.String(\"1000\"),\n\t\t\t\t},\n\t\t\t\tEmbeddingDimension: pulumi.Int(2),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStore;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreEmbeddingManagementArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreFeatureview;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreFeatureviewArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewSyncConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewBigQuerySourceArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewVectorSearchConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewVectorSearchConfigTreeAhConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var featureonlinestore = new AiFeatureOnlineStore(\"featureonlinestore\", AiFeatureOnlineStoreArgs.builder()\n .name(\"example_feature_view_vector_search\")\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .bigtable(AiFeatureOnlineStoreBigtableArgs.builder()\n .autoScaling(AiFeatureOnlineStoreBigtableAutoScalingArgs.builder()\n .minNodeCount(1)\n .maxNodeCount(2)\n .cpuUtilizationTarget(80)\n .build())\n .build())\n .embeddingManagement(AiFeatureOnlineStoreEmbeddingManagementArgs.builder()\n .enabled(true)\n .build())\n .build());\n\n var tf_test_dataset = new Dataset(\"tf-test-dataset\", DatasetArgs.builder()\n .datasetId(\"example_feature_view_vector_search\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n var tf_test_table = new Table(\"tf-test-table\", TableArgs.builder()\n .deletionProtection(false)\n .datasetId(tf_test_dataset.datasetId())\n .tableId(\"example_feature_view_vector_search\")\n .schema(\"\"\"\n[\n{\n \"name\": \"test_primary_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"primary test id\"\n},\n{\n \"name\": \"embedding\",\n \"mode\": \"REPEATED\",\n \"type\": \"FLOAT\",\n \"description\": \"embedding column for primary_id column\"\n},\n{\n \"name\": \"country\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"country\"\n},\n{\n \"name\": \"test_crowding_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"INTEGER\",\n \"description\": \"test crowding column\"\n},\n{\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n},\n{\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n},\n{\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n}\n]\n \"\"\")\n .build());\n\n var featureviewVectorSearch = new AiFeatureOnlineStoreFeatureview(\"featureviewVectorSearch\", AiFeatureOnlineStoreFeatureviewArgs.builder()\n .name(\"example_feature_view_vector_search\")\n .region(\"us-central1\")\n .featureOnlineStore(featureonlinestore.name())\n .syncConfig(AiFeatureOnlineStoreFeatureviewSyncConfigArgs.builder()\n .cron(\"0 0 * * *\")\n .build())\n .bigQuerySource(AiFeatureOnlineStoreFeatureviewBigQuerySourceArgs.builder()\n .uri(Output.tuple(tf_test_table.project(), tf_test_table.datasetId(), tf_test_table.tableId()).applyValue(values -\u003e {\n var project = values.t1;\n var datasetId = values.t2;\n var tableId = values.t3;\n return String.format(\"bq://%s.%s.%s\", project,datasetId,tableId);\n }))\n .entityIdColumns(\"test_entity_column\")\n .build())\n .vectorSearchConfig(AiFeatureOnlineStoreFeatureviewVectorSearchConfigArgs.builder()\n .embeddingColumn(\"embedding\")\n .filterColumns(\"country\")\n .crowdingColumn(\"test_crowding_column\")\n .distanceMeasureType(\"DOT_PRODUCT_DISTANCE\")\n .treeAhConfig(AiFeatureOnlineStoreFeatureviewVectorSearchConfigTreeAhConfigArgs.builder()\n .leafNodeEmbeddingCount(\"1000\")\n .build())\n .embeddingDimension(\"2\")\n .build())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n featureonlinestore:\n type: gcp:vertex:AiFeatureOnlineStore\n properties:\n name: example_feature_view_vector_search\n labels:\n foo: bar\n region: us-central1\n bigtable:\n autoScaling:\n minNodeCount: 1\n maxNodeCount: 2\n cpuUtilizationTarget: 80\n embeddingManagement:\n enabled: true\n tf-test-dataset:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_feature_view_vector_search\n friendlyName: test\n description: This is a test description\n location: US\n tf-test-table:\n type: gcp:bigquery:Table\n properties:\n deletionProtection: false\n datasetId: ${[\"tf-test-dataset\"].datasetId}\n tableId: example_feature_view_vector_search\n schema: |\n [\n {\n \"name\": \"test_primary_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"primary test id\"\n },\n {\n \"name\": \"embedding\",\n \"mode\": \"REPEATED\",\n \"type\": \"FLOAT\",\n \"description\": \"embedding column for primary_id column\"\n },\n {\n \"name\": \"country\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"country\"\n },\n {\n \"name\": \"test_crowding_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"INTEGER\",\n \"description\": \"test crowding column\"\n },\n {\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n },\n {\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n }\n ]\n featureviewVectorSearch:\n type: gcp:vertex:AiFeatureOnlineStoreFeatureview\n name: featureview_vector_search\n properties:\n name: example_feature_view_vector_search\n region: us-central1\n featureOnlineStore: ${featureonlinestore.name}\n syncConfig:\n cron: 0 0 * * *\n bigQuerySource:\n uri: bq://${[\"tf-test-table\"].project}.${[\"tf-test-table\"].datasetId}.${[\"tf-test-table\"].tableId}\n entityIdColumns:\n - test_entity_column\n vectorSearchConfig:\n embeddingColumn: embedding\n filterColumns:\n - country\n crowdingColumn: test_crowding_column\n distanceMeasureType: DOT_PRODUCT_DISTANCE\n treeAhConfig:\n leafNodeEmbeddingCount: '1000'\n embeddingDimension: '2'\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFeatureOnlineStoreFeatureview can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/featureOnlineStores/{{feature_online_store}}/featureViews/{{name}}`\n\n* `{{project}}/{{region}}/{{feature_online_store}}/{{name}}`\n\n* `{{region}}/{{feature_online_store}}/{{name}}`\n\n* `{{feature_online_store}}/{{name}}`\n\nWhen using the `pulumi import` command, FeatureOnlineStoreFeatureview can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureOnlineStoreFeatureview:AiFeatureOnlineStoreFeatureview default projects/{{project}}/locations/{{region}}/featureOnlineStores/{{feature_online_store}}/featureViews/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureOnlineStoreFeatureview:AiFeatureOnlineStoreFeatureview default {{project}}/{{region}}/{{feature_online_store}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureOnlineStoreFeatureview:AiFeatureOnlineStoreFeatureview default {{region}}/{{feature_online_store}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureOnlineStoreFeatureview:AiFeatureOnlineStoreFeatureview default {{feature_online_store}}/{{name}}\n```\n\n", + "description": "FeatureView is representation of values that the FeatureOnlineStore will serve based on its syncConfig.\n\n\nTo get more information about FeatureOnlineStoreFeatureview, see:\n\n* [API documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.featureOnlineStores.featureViews)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/vertex-ai/docs)\n\n## Example Usage\n\n### Vertex Ai Featureonlinestore Featureview\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst featureonlinestore = new gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\", {\n name: \"example_feature_view\",\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n bigtable: {\n autoScaling: {\n minNodeCount: 1,\n maxNodeCount: 2,\n cpuUtilizationTarget: 80,\n },\n },\n});\nconst tf_test_dataset = new gcp.bigquery.Dataset(\"tf-test-dataset\", {\n datasetId: \"example_feature_view\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst tf_test_table = new gcp.bigquery.Table(\"tf-test-table\", {\n deletionProtection: false,\n datasetId: tf_test_dataset.datasetId,\n tableId: \"example_feature_view\",\n schema: ` [\n {\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n },\n {\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n }\n]\n`,\n});\nconst featureview = new gcp.vertex.AiFeatureOnlineStoreFeatureview(\"featureview\", {\n name: \"example_feature_view\",\n region: \"us-central1\",\n featureOnlineStore: featureonlinestore.name,\n syncConfig: {\n cron: \"0 0 * * *\",\n },\n bigQuerySource: {\n uri: pulumi.interpolate`bq://${tf_test_table.project}.${tf_test_table.datasetId}.${tf_test_table.tableId}`,\n entityIdColumns: [\"test_entity_column\"],\n },\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeatureonlinestore = gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\",\n name=\"example_feature_view\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n bigtable={\n \"auto_scaling\": {\n \"min_node_count\": 1,\n \"max_node_count\": 2,\n \"cpu_utilization_target\": 80,\n },\n })\ntf_test_dataset = gcp.bigquery.Dataset(\"tf-test-dataset\",\n dataset_id=\"example_feature_view\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\ntf_test_table = gcp.bigquery.Table(\"tf-test-table\",\n deletion_protection=False,\n dataset_id=tf_test_dataset.dataset_id,\n table_id=\"example_feature_view\",\n schema=\"\"\" [\n {\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n },\n {\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n }\n]\n\"\"\")\nfeatureview = gcp.vertex.AiFeatureOnlineStoreFeatureview(\"featureview\",\n name=\"example_feature_view\",\n region=\"us-central1\",\n feature_online_store=featureonlinestore.name,\n sync_config={\n \"cron\": \"0 0 * * *\",\n },\n big_query_source={\n \"uri\": pulumi.Output.all(\n project=tf_test_table.project,\n dataset_id=tf_test_table.dataset_id,\n table_id=tf_test_table.table_id\n).apply(lambda resolved_outputs: f\"bq://{resolved_outputs['project']}.{resolved_outputs['dataset_id']}.{resolved_outputs['table_id']}\")\n,\n \"entity_id_columns\": [\"test_entity_column\"],\n })\nproject = gcp.organizations.get_project()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var featureonlinestore = new Gcp.Vertex.AiFeatureOnlineStore(\"featureonlinestore\", new()\n {\n Name = \"example_feature_view\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n Bigtable = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableArgs\n {\n AutoScaling = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs\n {\n MinNodeCount = 1,\n MaxNodeCount = 2,\n CpuUtilizationTarget = 80,\n },\n },\n });\n\n var tf_test_dataset = new Gcp.BigQuery.Dataset(\"tf-test-dataset\", new()\n {\n DatasetId = \"example_feature_view\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var tf_test_table = new Gcp.BigQuery.Table(\"tf-test-table\", new()\n {\n DeletionProtection = false,\n DatasetId = tf_test_dataset.DatasetId,\n TableId = \"example_feature_view\",\n Schema = @\" [\n {\n \"\"name\"\": \"\"entity_id\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"description\"\": \"\"Test default entity_id\"\"\n },\n {\n \"\"name\"\": \"\"test_entity_column\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"description\"\": \"\"test secondary entity column\"\"\n },\n {\n \"\"name\"\": \"\"feature_timestamp\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"TIMESTAMP\"\",\n \"\"description\"\": \"\"Default timestamp value\"\"\n }\n]\n\",\n });\n\n var featureview = new Gcp.Vertex.AiFeatureOnlineStoreFeatureview(\"featureview\", new()\n {\n Name = \"example_feature_view\",\n Region = \"us-central1\",\n FeatureOnlineStore = featureonlinestore.Name,\n SyncConfig = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewSyncConfigArgs\n {\n Cron = \"0 0 * * *\",\n },\n BigQuerySource = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewBigQuerySourceArgs\n {\n Uri = Output.Tuple(tf_test_table.Project, tf_test_table.DatasetId, tf_test_table.TableId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n var tableId = values.Item3;\n return $\"bq://{project}.{datasetId}.{tableId}\";\n }),\n EntityIdColumns = new[]\n {\n \"test_entity_column\",\n },\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfeatureonlinestore, err := vertex.NewAiFeatureOnlineStore(ctx, \"featureonlinestore\", \u0026vertex.AiFeatureOnlineStoreArgs{\n\t\t\tName: pulumi.String(\"example_feature_view\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tBigtable: \u0026vertex.AiFeatureOnlineStoreBigtableArgs{\n\t\t\t\tAutoScaling: \u0026vertex.AiFeatureOnlineStoreBigtableAutoScalingArgs{\n\t\t\t\t\tMinNodeCount: pulumi.Int(1),\n\t\t\t\t\tMaxNodeCount: pulumi.Int(2),\n\t\t\t\t\tCpuUtilizationTarget: pulumi.Int(80),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDataset(ctx, \"tf-test-dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_feature_view\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewTable(ctx, \"tf-test-table\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: tf_test_dataset.DatasetId,\n\t\t\tTableId: pulumi.String(\"example_feature_view\"),\n\t\t\tSchema: pulumi.String(` [\n {\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n },\n {\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiFeatureOnlineStoreFeatureview(ctx, \"featureview\", \u0026vertex.AiFeatureOnlineStoreFeatureviewArgs{\n\t\t\tName: pulumi.String(\"example_feature_view\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tFeatureOnlineStore: featureonlinestore.Name,\n\t\t\tSyncConfig: \u0026vertex.AiFeatureOnlineStoreFeatureviewSyncConfigArgs{\n\t\t\t\tCron: pulumi.String(\"0 0 * * *\"),\n\t\t\t},\n\t\t\tBigQuerySource: \u0026vertex.AiFeatureOnlineStoreFeatureviewBigQuerySourceArgs{\n\t\t\t\tUri: pulumi.All(tf_test_table.Project, tf_test_table.DatasetId, tf_test_table.TableId).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tproject := _args[0].(string)\n\t\t\t\t\tdatasetId := _args[1].(string)\n\t\t\t\t\ttableId := _args[2].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"bq://%v.%v.%v\", project, datasetId, tableId), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tEntityIdColumns: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"test_entity_column\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStore;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreFeatureview;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreFeatureviewArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewSyncConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewBigQuerySourceArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var featureonlinestore = new AiFeatureOnlineStore(\"featureonlinestore\", AiFeatureOnlineStoreArgs.builder()\n .name(\"example_feature_view\")\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .bigtable(AiFeatureOnlineStoreBigtableArgs.builder()\n .autoScaling(AiFeatureOnlineStoreBigtableAutoScalingArgs.builder()\n .minNodeCount(1)\n .maxNodeCount(2)\n .cpuUtilizationTarget(80)\n .build())\n .build())\n .build());\n\n var tf_test_dataset = new Dataset(\"tf-test-dataset\", DatasetArgs.builder()\n .datasetId(\"example_feature_view\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n var tf_test_table = new Table(\"tf-test-table\", TableArgs.builder()\n .deletionProtection(false)\n .datasetId(tf_test_dataset.datasetId())\n .tableId(\"example_feature_view\")\n .schema(\"\"\"\n [\n {\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n },\n {\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n }\n]\n \"\"\")\n .build());\n\n var featureview = new AiFeatureOnlineStoreFeatureview(\"featureview\", AiFeatureOnlineStoreFeatureviewArgs.builder()\n .name(\"example_feature_view\")\n .region(\"us-central1\")\n .featureOnlineStore(featureonlinestore.name())\n .syncConfig(AiFeatureOnlineStoreFeatureviewSyncConfigArgs.builder()\n .cron(\"0 0 * * *\")\n .build())\n .bigQuerySource(AiFeatureOnlineStoreFeatureviewBigQuerySourceArgs.builder()\n .uri(Output.tuple(tf_test_table.project(), tf_test_table.datasetId(), tf_test_table.tableId()).applyValue(values -\u003e {\n var project = values.t1;\n var datasetId = values.t2;\n var tableId = values.t3;\n return String.format(\"bq://%s.%s.%s\", project,datasetId,tableId);\n }))\n .entityIdColumns(\"test_entity_column\")\n .build())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n featureonlinestore:\n type: gcp:vertex:AiFeatureOnlineStore\n properties:\n name: example_feature_view\n labels:\n foo: bar\n region: us-central1\n bigtable:\n autoScaling:\n minNodeCount: 1\n maxNodeCount: 2\n cpuUtilizationTarget: 80\n tf-test-dataset:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_feature_view\n friendlyName: test\n description: This is a test description\n location: US\n tf-test-table:\n type: gcp:bigquery:Table\n properties:\n deletionProtection: false\n datasetId: ${[\"tf-test-dataset\"].datasetId}\n tableId: example_feature_view\n schema: |2\n [\n {\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n },\n {\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n }\n ]\n featureview:\n type: gcp:vertex:AiFeatureOnlineStoreFeatureview\n properties:\n name: example_feature_view\n region: us-central1\n featureOnlineStore: ${featureonlinestore.name}\n syncConfig:\n cron: 0 0 * * *\n bigQuerySource:\n uri: bq://${[\"tf-test-table\"].project}.${[\"tf-test-table\"].datasetId}.${[\"tf-test-table\"].tableId}\n entityIdColumns:\n - test_entity_column\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Featureonlinestore Featureview Feature Registry\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst featureonlinestore = new gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\", {\n name: \"example_feature_view_feature_registry\",\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n bigtable: {\n autoScaling: {\n minNodeCount: 1,\n maxNodeCount: 2,\n cpuUtilizationTarget: 80,\n },\n },\n});\nconst sampleDataset = new gcp.bigquery.Dataset(\"sample_dataset\", {\n datasetId: \"example_feature_view_feature_registry\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst sampleTable = new gcp.bigquery.Table(\"sample_table\", {\n deletionProtection: false,\n datasetId: sampleDataset.datasetId,\n tableId: \"example_feature_view_feature_registry\",\n schema: `[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_feature_view_feature_registry\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n`,\n});\nconst sampleFeatureGroup = new gcp.vertex.AiFeatureGroup(\"sample_feature_group\", {\n name: \"example_feature_view_feature_registry\",\n description: \"A sample feature group\",\n region: \"us-central1\",\n labels: {\n \"label-one\": \"value-one\",\n },\n bigQuery: {\n bigQuerySource: {\n inputUri: pulumi.interpolate`bq://${sampleTable.project}.${sampleTable.datasetId}.${sampleTable.tableId}`,\n },\n entityIdColumns: [\"feature_id\"],\n },\n});\nconst sampleFeature = new gcp.vertex.AiFeatureGroupFeature(\"sample_feature\", {\n name: \"example_feature_view_feature_registry\",\n region: \"us-central1\",\n featureGroup: sampleFeatureGroup.name,\n description: \"A sample feature\",\n labels: {\n \"label-one\": \"value-one\",\n },\n});\nconst featureviewFeatureregistry = new gcp.vertex.AiFeatureOnlineStoreFeatureview(\"featureview_featureregistry\", {\n name: \"example_feature_view_feature_registry\",\n region: \"us-central1\",\n featureOnlineStore: featureonlinestore.name,\n syncConfig: {\n cron: \"0 0 * * *\",\n },\n featureRegistrySource: {\n featureGroups: [{\n featureGroupId: sampleFeatureGroup.name,\n featureIds: [sampleFeature.name],\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeatureonlinestore = gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\",\n name=\"example_feature_view_feature_registry\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n bigtable={\n \"auto_scaling\": {\n \"min_node_count\": 1,\n \"max_node_count\": 2,\n \"cpu_utilization_target\": 80,\n },\n })\nsample_dataset = gcp.bigquery.Dataset(\"sample_dataset\",\n dataset_id=\"example_feature_view_feature_registry\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\nsample_table = gcp.bigquery.Table(\"sample_table\",\n deletion_protection=False,\n dataset_id=sample_dataset.dataset_id,\n table_id=\"example_feature_view_feature_registry\",\n schema=\"\"\"[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_feature_view_feature_registry\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n\"\"\")\nsample_feature_group = gcp.vertex.AiFeatureGroup(\"sample_feature_group\",\n name=\"example_feature_view_feature_registry\",\n description=\"A sample feature group\",\n region=\"us-central1\",\n labels={\n \"label-one\": \"value-one\",\n },\n big_query={\n \"big_query_source\": {\n \"input_uri\": pulumi.Output.all(\n project=sample_table.project,\n dataset_id=sample_table.dataset_id,\n table_id=sample_table.table_id\n).apply(lambda resolved_outputs: f\"bq://{resolved_outputs['project']}.{resolved_outputs['dataset_id']}.{resolved_outputs['table_id']}\")\n,\n },\n \"entity_id_columns\": [\"feature_id\"],\n })\nsample_feature = gcp.vertex.AiFeatureGroupFeature(\"sample_feature\",\n name=\"example_feature_view_feature_registry\",\n region=\"us-central1\",\n feature_group=sample_feature_group.name,\n description=\"A sample feature\",\n labels={\n \"label-one\": \"value-one\",\n })\nfeatureview_featureregistry = gcp.vertex.AiFeatureOnlineStoreFeatureview(\"featureview_featureregistry\",\n name=\"example_feature_view_feature_registry\",\n region=\"us-central1\",\n feature_online_store=featureonlinestore.name,\n sync_config={\n \"cron\": \"0 0 * * *\",\n },\n feature_registry_source={\n \"feature_groups\": [{\n \"feature_group_id\": sample_feature_group.name,\n \"feature_ids\": [sample_feature.name],\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var featureonlinestore = new Gcp.Vertex.AiFeatureOnlineStore(\"featureonlinestore\", new()\n {\n Name = \"example_feature_view_feature_registry\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n Bigtable = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableArgs\n {\n AutoScaling = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs\n {\n MinNodeCount = 1,\n MaxNodeCount = 2,\n CpuUtilizationTarget = 80,\n },\n },\n });\n\n var sampleDataset = new Gcp.BigQuery.Dataset(\"sample_dataset\", new()\n {\n DatasetId = \"example_feature_view_feature_registry\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var sampleTable = new Gcp.BigQuery.Table(\"sample_table\", new()\n {\n DeletionProtection = false,\n DatasetId = sampleDataset.DatasetId,\n TableId = \"example_feature_view_feature_registry\",\n Schema = @\"[\n {\n \"\"name\"\": \"\"feature_id\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n },\n {\n \"\"name\"\": \"\"example_feature_view_feature_registry\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n },\n {\n \"\"name\"\": \"\"feature_timestamp\"\",\n \"\"type\"\": \"\"TIMESTAMP\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n }\n]\n\",\n });\n\n var sampleFeatureGroup = new Gcp.Vertex.AiFeatureGroup(\"sample_feature_group\", new()\n {\n Name = \"example_feature_view_feature_registry\",\n Description = \"A sample feature group\",\n Region = \"us-central1\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n BigQuery = new Gcp.Vertex.Inputs.AiFeatureGroupBigQueryArgs\n {\n BigQuerySource = new Gcp.Vertex.Inputs.AiFeatureGroupBigQueryBigQuerySourceArgs\n {\n InputUri = Output.Tuple(sampleTable.Project, sampleTable.DatasetId, sampleTable.TableId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n var tableId = values.Item3;\n return $\"bq://{project}.{datasetId}.{tableId}\";\n }),\n },\n EntityIdColumns = new[]\n {\n \"feature_id\",\n },\n },\n });\n\n var sampleFeature = new Gcp.Vertex.AiFeatureGroupFeature(\"sample_feature\", new()\n {\n Name = \"example_feature_view_feature_registry\",\n Region = \"us-central1\",\n FeatureGroup = sampleFeatureGroup.Name,\n Description = \"A sample feature\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var featureviewFeatureregistry = new Gcp.Vertex.AiFeatureOnlineStoreFeatureview(\"featureview_featureregistry\", new()\n {\n Name = \"example_feature_view_feature_registry\",\n Region = \"us-central1\",\n FeatureOnlineStore = featureonlinestore.Name,\n SyncConfig = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewSyncConfigArgs\n {\n Cron = \"0 0 * * *\",\n },\n FeatureRegistrySource = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceArgs\n {\n FeatureGroups = new[]\n {\n new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceFeatureGroupArgs\n {\n FeatureGroupId = sampleFeatureGroup.Name,\n FeatureIds = new[]\n {\n sampleFeature.Name,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfeatureonlinestore, err := vertex.NewAiFeatureOnlineStore(ctx, \"featureonlinestore\", \u0026vertex.AiFeatureOnlineStoreArgs{\n\t\t\tName: pulumi.String(\"example_feature_view_feature_registry\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tBigtable: \u0026vertex.AiFeatureOnlineStoreBigtableArgs{\n\t\t\t\tAutoScaling: \u0026vertex.AiFeatureOnlineStoreBigtableAutoScalingArgs{\n\t\t\t\t\tMinNodeCount: pulumi.Int(1),\n\t\t\t\t\tMaxNodeCount: pulumi.Int(2),\n\t\t\t\t\tCpuUtilizationTarget: pulumi.Int(80),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsampleDataset, err := bigquery.NewDataset(ctx, \"sample_dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_feature_view_feature_registry\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsampleTable, err := bigquery.NewTable(ctx, \"sample_table\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: sampleDataset.DatasetId,\n\t\t\tTableId: pulumi.String(\"example_feature_view_feature_registry\"),\n\t\t\tSchema: pulumi.String(`[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_feature_view_feature_registry\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsampleFeatureGroup, err := vertex.NewAiFeatureGroup(ctx, \"sample_feature_group\", \u0026vertex.AiFeatureGroupArgs{\n\t\t\tName: pulumi.String(\"example_feature_view_feature_registry\"),\n\t\t\tDescription: pulumi.String(\"A sample feature group\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tBigQuery: \u0026vertex.AiFeatureGroupBigQueryArgs{\n\t\t\t\tBigQuerySource: \u0026vertex.AiFeatureGroupBigQueryBigQuerySourceArgs{\n\t\t\t\t\tInputUri: pulumi.All(sampleTable.Project, sampleTable.DatasetId, sampleTable.TableId).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\tproject := _args[0].(string)\n\t\t\t\t\t\tdatasetId := _args[1].(string)\n\t\t\t\t\t\ttableId := _args[2].(string)\n\t\t\t\t\t\treturn fmt.Sprintf(\"bq://%v.%v.%v\", project, datasetId, tableId), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t\tEntityIdColumns: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"feature_id\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsampleFeature, err := vertex.NewAiFeatureGroupFeature(ctx, \"sample_feature\", \u0026vertex.AiFeatureGroupFeatureArgs{\n\t\t\tName: pulumi.String(\"example_feature_view_feature_registry\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tFeatureGroup: sampleFeatureGroup.Name,\n\t\t\tDescription: pulumi.String(\"A sample feature\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiFeatureOnlineStoreFeatureview(ctx, \"featureview_featureregistry\", \u0026vertex.AiFeatureOnlineStoreFeatureviewArgs{\n\t\t\tName: pulumi.String(\"example_feature_view_feature_registry\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tFeatureOnlineStore: featureonlinestore.Name,\n\t\t\tSyncConfig: \u0026vertex.AiFeatureOnlineStoreFeatureviewSyncConfigArgs{\n\t\t\t\tCron: pulumi.String(\"0 0 * * *\"),\n\t\t\t},\n\t\t\tFeatureRegistrySource: \u0026vertex.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceArgs{\n\t\t\t\tFeatureGroups: vertex.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceFeatureGroupArray{\n\t\t\t\t\t\u0026vertex.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceFeatureGroupArgs{\n\t\t\t\t\t\tFeatureGroupId: sampleFeatureGroup.Name,\n\t\t\t\t\t\tFeatureIds: pulumi.StringArray{\n\t\t\t\t\t\t\tsampleFeature.Name,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStore;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.vertex.AiFeatureGroup;\nimport com.pulumi.gcp.vertex.AiFeatureGroupArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureGroupBigQueryArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureGroupBigQueryBigQuerySourceArgs;\nimport com.pulumi.gcp.vertex.AiFeatureGroupFeature;\nimport com.pulumi.gcp.vertex.AiFeatureGroupFeatureArgs;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreFeatureview;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreFeatureviewArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewSyncConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var featureonlinestore = new AiFeatureOnlineStore(\"featureonlinestore\", AiFeatureOnlineStoreArgs.builder()\n .name(\"example_feature_view_feature_registry\")\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .bigtable(AiFeatureOnlineStoreBigtableArgs.builder()\n .autoScaling(AiFeatureOnlineStoreBigtableAutoScalingArgs.builder()\n .minNodeCount(1)\n .maxNodeCount(2)\n .cpuUtilizationTarget(80)\n .build())\n .build())\n .build());\n\n var sampleDataset = new Dataset(\"sampleDataset\", DatasetArgs.builder()\n .datasetId(\"example_feature_view_feature_registry\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n var sampleTable = new Table(\"sampleTable\", TableArgs.builder()\n .deletionProtection(false)\n .datasetId(sampleDataset.datasetId())\n .tableId(\"example_feature_view_feature_registry\")\n .schema(\"\"\"\n[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_feature_view_feature_registry\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n \"\"\")\n .build());\n\n var sampleFeatureGroup = new AiFeatureGroup(\"sampleFeatureGroup\", AiFeatureGroupArgs.builder()\n .name(\"example_feature_view_feature_registry\")\n .description(\"A sample feature group\")\n .region(\"us-central1\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .bigQuery(AiFeatureGroupBigQueryArgs.builder()\n .bigQuerySource(AiFeatureGroupBigQueryBigQuerySourceArgs.builder()\n .inputUri(Output.tuple(sampleTable.project(), sampleTable.datasetId(), sampleTable.tableId()).applyValue(values -\u003e {\n var project = values.t1;\n var datasetId = values.t2;\n var tableId = values.t3;\n return String.format(\"bq://%s.%s.%s\", project,datasetId,tableId);\n }))\n .build())\n .entityIdColumns(\"feature_id\")\n .build())\n .build());\n\n var sampleFeature = new AiFeatureGroupFeature(\"sampleFeature\", AiFeatureGroupFeatureArgs.builder()\n .name(\"example_feature_view_feature_registry\")\n .region(\"us-central1\")\n .featureGroup(sampleFeatureGroup.name())\n .description(\"A sample feature\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var featureviewFeatureregistry = new AiFeatureOnlineStoreFeatureview(\"featureviewFeatureregistry\", AiFeatureOnlineStoreFeatureviewArgs.builder()\n .name(\"example_feature_view_feature_registry\")\n .region(\"us-central1\")\n .featureOnlineStore(featureonlinestore.name())\n .syncConfig(AiFeatureOnlineStoreFeatureviewSyncConfigArgs.builder()\n .cron(\"0 0 * * *\")\n .build())\n .featureRegistrySource(AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceArgs.builder()\n .featureGroups(AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceFeatureGroupArgs.builder()\n .featureGroupId(sampleFeatureGroup.name())\n .featureIds(sampleFeature.name())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n featureonlinestore:\n type: gcp:vertex:AiFeatureOnlineStore\n properties:\n name: example_feature_view_feature_registry\n labels:\n foo: bar\n region: us-central1\n bigtable:\n autoScaling:\n minNodeCount: 1\n maxNodeCount: 2\n cpuUtilizationTarget: 80\n sampleDataset:\n type: gcp:bigquery:Dataset\n name: sample_dataset\n properties:\n datasetId: example_feature_view_feature_registry\n friendlyName: test\n description: This is a test description\n location: US\n sampleTable:\n type: gcp:bigquery:Table\n name: sample_table\n properties:\n deletionProtection: false\n datasetId: ${sampleDataset.datasetId}\n tableId: example_feature_view_feature_registry\n schema: |\n [\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_feature_view_feature_registry\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n ]\n sampleFeatureGroup:\n type: gcp:vertex:AiFeatureGroup\n name: sample_feature_group\n properties:\n name: example_feature_view_feature_registry\n description: A sample feature group\n region: us-central1\n labels:\n label-one: value-one\n bigQuery:\n bigQuerySource:\n inputUri: bq://${sampleTable.project}.${sampleTable.datasetId}.${sampleTable.tableId}\n entityIdColumns:\n - feature_id\n sampleFeature:\n type: gcp:vertex:AiFeatureGroupFeature\n name: sample_feature\n properties:\n name: example_feature_view_feature_registry\n region: us-central1\n featureGroup: ${sampleFeatureGroup.name}\n description: A sample feature\n labels:\n label-one: value-one\n featureviewFeatureregistry:\n type: gcp:vertex:AiFeatureOnlineStoreFeatureview\n name: featureview_featureregistry\n properties:\n name: example_feature_view_feature_registry\n region: us-central1\n featureOnlineStore: ${featureonlinestore.name}\n syncConfig:\n cron: 0 0 * * *\n featureRegistrySource:\n featureGroups:\n - featureGroupId: ${sampleFeatureGroup.name}\n featureIds:\n - ${sampleFeature.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Featureonlinestore Featureview Cross Project\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\nconst testProject = gcp.organizations.getProject({});\nconst project = new gcp.organizations.Project(\"project\", {\n projectId: \"tf-test_13293\",\n name: \"tf-test_40289\",\n orgId: \"123456789\",\n billingAccount: \"000000-0000000-0000000-000000\",\n deletionPolicy: \"DELETE\",\n});\nconst wait60Seconds = new time.index.Sleep(\"wait_60_seconds\", {createDuration: \"60s\"}, {\n dependsOn: [project],\n});\nconst vertexai = new gcp.projects.Service(\"vertexai\", {\n service: \"aiplatform.googleapis.com\",\n project: project.projectId,\n disableOnDestroy: false,\n}, {\n dependsOn: [wait60Seconds],\n});\nconst featureonlinestore = new gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\", {\n name: \"example_cross_project_featureview\",\n project: project.projectId,\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n bigtable: {\n autoScaling: {\n minNodeCount: 1,\n maxNodeCount: 2,\n cpuUtilizationTarget: 80,\n },\n },\n}, {\n dependsOn: [vertexai],\n});\nconst sampleDataset = new gcp.bigquery.Dataset(\"sample_dataset\", {\n datasetId: \"example_cross_project_featureview\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst viewer = new gcp.bigquery.DatasetIamMember(\"viewer\", {\n project: testProject.then(testProject =\u003e testProject.projectId),\n datasetId: sampleDataset.datasetId,\n role: \"roles/bigquery.dataViewer\",\n member: pulumi.interpolate`serviceAccount:service-${project.number}@gcp-sa-aiplatform.iam.gserviceaccount.com`,\n}, {\n dependsOn: [featureonlinestore],\n});\nconst wait30Seconds = new time.index.Sleep(\"wait_30_seconds\", {createDuration: \"30s\"}, {\n dependsOn: [viewer],\n});\nconst sampleTable = new gcp.bigquery.Table(\"sample_table\", {\n deletionProtection: false,\n datasetId: sampleDataset.datasetId,\n tableId: \"example_cross_project_featureview\",\n schema: `[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_cross_project_featureview\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n`,\n});\nconst sampleFeatureGroup = new gcp.vertex.AiFeatureGroup(\"sample_feature_group\", {\n name: \"example_cross_project_featureview\",\n description: \"A sample feature group\",\n region: \"us-central1\",\n labels: {\n \"label-one\": \"value-one\",\n },\n bigQuery: {\n bigQuerySource: {\n inputUri: pulumi.interpolate`bq://${sampleTable.project}.${sampleTable.datasetId}.${sampleTable.tableId}`,\n },\n entityIdColumns: [\"feature_id\"],\n },\n});\nconst sampleFeature = new gcp.vertex.AiFeatureGroupFeature(\"sample_feature\", {\n name: \"example_cross_project_featureview\",\n region: \"us-central1\",\n featureGroup: sampleFeatureGroup.name,\n description: \"A sample feature\",\n labels: {\n \"label-one\": \"value-one\",\n },\n});\nconst crossProjectFeatureview = new gcp.vertex.AiFeatureOnlineStoreFeatureview(\"cross_project_featureview\", {\n name: \"example_cross_project_featureview\",\n project: project.projectId,\n region: \"us-central1\",\n featureOnlineStore: featureonlinestore.name,\n syncConfig: {\n cron: \"0 0 * * *\",\n },\n featureRegistrySource: {\n featureGroups: [{\n featureGroupId: sampleFeatureGroup.name,\n featureIds: [sampleFeature.name],\n }],\n projectNumber: testProject.then(testProject =\u003e testProject.number),\n },\n}, {\n dependsOn: [\n vertexai,\n wait30Seconds,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\ntest_project = gcp.organizations.get_project()\nproject = gcp.organizations.Project(\"project\",\n project_id=\"tf-test_13293\",\n name=\"tf-test_40289\",\n org_id=\"123456789\",\n billing_account=\"000000-0000000-0000000-000000\",\n deletion_policy=\"DELETE\")\nwait60_seconds = time.index.Sleep(\"wait_60_seconds\", create_duration=60s,\nopts = pulumi.ResourceOptions(depends_on=[project]))\nvertexai = gcp.projects.Service(\"vertexai\",\n service=\"aiplatform.googleapis.com\",\n project=project.project_id,\n disable_on_destroy=False,\n opts = pulumi.ResourceOptions(depends_on=[wait60_seconds]))\nfeatureonlinestore = gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\",\n name=\"example_cross_project_featureview\",\n project=project.project_id,\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n bigtable={\n \"auto_scaling\": {\n \"min_node_count\": 1,\n \"max_node_count\": 2,\n \"cpu_utilization_target\": 80,\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[vertexai]))\nsample_dataset = gcp.bigquery.Dataset(\"sample_dataset\",\n dataset_id=\"example_cross_project_featureview\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\nviewer = gcp.bigquery.DatasetIamMember(\"viewer\",\n project=test_project.project_id,\n dataset_id=sample_dataset.dataset_id,\n role=\"roles/bigquery.dataViewer\",\n member=project.number.apply(lambda number: f\"serviceAccount:service-{number}@gcp-sa-aiplatform.iam.gserviceaccount.com\"),\n opts = pulumi.ResourceOptions(depends_on=[featureonlinestore]))\nwait30_seconds = time.index.Sleep(\"wait_30_seconds\", create_duration=30s,\nopts = pulumi.ResourceOptions(depends_on=[viewer]))\nsample_table = gcp.bigquery.Table(\"sample_table\",\n deletion_protection=False,\n dataset_id=sample_dataset.dataset_id,\n table_id=\"example_cross_project_featureview\",\n schema=\"\"\"[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_cross_project_featureview\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n\"\"\")\nsample_feature_group = gcp.vertex.AiFeatureGroup(\"sample_feature_group\",\n name=\"example_cross_project_featureview\",\n description=\"A sample feature group\",\n region=\"us-central1\",\n labels={\n \"label-one\": \"value-one\",\n },\n big_query={\n \"big_query_source\": {\n \"input_uri\": pulumi.Output.all(\n project=sample_table.project,\n dataset_id=sample_table.dataset_id,\n table_id=sample_table.table_id\n).apply(lambda resolved_outputs: f\"bq://{resolved_outputs['project']}.{resolved_outputs['dataset_id']}.{resolved_outputs['table_id']}\")\n,\n },\n \"entity_id_columns\": [\"feature_id\"],\n })\nsample_feature = gcp.vertex.AiFeatureGroupFeature(\"sample_feature\",\n name=\"example_cross_project_featureview\",\n region=\"us-central1\",\n feature_group=sample_feature_group.name,\n description=\"A sample feature\",\n labels={\n \"label-one\": \"value-one\",\n })\ncross_project_featureview = gcp.vertex.AiFeatureOnlineStoreFeatureview(\"cross_project_featureview\",\n name=\"example_cross_project_featureview\",\n project=project.project_id,\n region=\"us-central1\",\n feature_online_store=featureonlinestore.name,\n sync_config={\n \"cron\": \"0 0 * * *\",\n },\n feature_registry_source={\n \"feature_groups\": [{\n \"feature_group_id\": sample_feature_group.name,\n \"feature_ids\": [sample_feature.name],\n }],\n \"project_number\": test_project.number,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n vertexai,\n wait30_seconds,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Time = Pulumi.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var testProject = Gcp.Organizations.GetProject.Invoke();\n\n var project = new Gcp.Organizations.Project(\"project\", new()\n {\n ProjectId = \"tf-test_13293\",\n Name = \"tf-test_40289\",\n OrgId = \"123456789\",\n BillingAccount = \"000000-0000000-0000000-000000\",\n DeletionPolicy = \"DELETE\",\n });\n\n var wait60Seconds = new Time.Index.Sleep(\"wait_60_seconds\", new()\n {\n CreateDuration = \"60s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n project,\n },\n });\n\n var vertexai = new Gcp.Projects.Service(\"vertexai\", new()\n {\n ServiceName = \"aiplatform.googleapis.com\",\n Project = project.ProjectId,\n DisableOnDestroy = false,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait60Seconds,\n },\n });\n\n var featureonlinestore = new Gcp.Vertex.AiFeatureOnlineStore(\"featureonlinestore\", new()\n {\n Name = \"example_cross_project_featureview\",\n Project = project.ProjectId,\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n Bigtable = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableArgs\n {\n AutoScaling = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs\n {\n MinNodeCount = 1,\n MaxNodeCount = 2,\n CpuUtilizationTarget = 80,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vertexai,\n },\n });\n\n var sampleDataset = new Gcp.BigQuery.Dataset(\"sample_dataset\", new()\n {\n DatasetId = \"example_cross_project_featureview\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var viewer = new Gcp.BigQuery.DatasetIamMember(\"viewer\", new()\n {\n Project = testProject.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n DatasetId = sampleDataset.DatasetId,\n Role = \"roles/bigquery.dataViewer\",\n Member = project.Number.Apply(number =\u003e $\"serviceAccount:service-{number}@gcp-sa-aiplatform.iam.gserviceaccount.com\"),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n featureonlinestore,\n },\n });\n\n var wait30Seconds = new Time.Index.Sleep(\"wait_30_seconds\", new()\n {\n CreateDuration = \"30s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n viewer,\n },\n });\n\n var sampleTable = new Gcp.BigQuery.Table(\"sample_table\", new()\n {\n DeletionProtection = false,\n DatasetId = sampleDataset.DatasetId,\n TableId = \"example_cross_project_featureview\",\n Schema = @\"[\n {\n \"\"name\"\": \"\"feature_id\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n },\n {\n \"\"name\"\": \"\"example_cross_project_featureview\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n },\n {\n \"\"name\"\": \"\"feature_timestamp\"\",\n \"\"type\"\": \"\"TIMESTAMP\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n }\n]\n\",\n });\n\n var sampleFeatureGroup = new Gcp.Vertex.AiFeatureGroup(\"sample_feature_group\", new()\n {\n Name = \"example_cross_project_featureview\",\n Description = \"A sample feature group\",\n Region = \"us-central1\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n BigQuery = new Gcp.Vertex.Inputs.AiFeatureGroupBigQueryArgs\n {\n BigQuerySource = new Gcp.Vertex.Inputs.AiFeatureGroupBigQueryBigQuerySourceArgs\n {\n InputUri = Output.Tuple(sampleTable.Project, sampleTable.DatasetId, sampleTable.TableId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n var tableId = values.Item3;\n return $\"bq://{project}.{datasetId}.{tableId}\";\n }),\n },\n EntityIdColumns = new[]\n {\n \"feature_id\",\n },\n },\n });\n\n var sampleFeature = new Gcp.Vertex.AiFeatureGroupFeature(\"sample_feature\", new()\n {\n Name = \"example_cross_project_featureview\",\n Region = \"us-central1\",\n FeatureGroup = sampleFeatureGroup.Name,\n Description = \"A sample feature\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var crossProjectFeatureview = new Gcp.Vertex.AiFeatureOnlineStoreFeatureview(\"cross_project_featureview\", new()\n {\n Name = \"example_cross_project_featureview\",\n Project = project.ProjectId,\n Region = \"us-central1\",\n FeatureOnlineStore = featureonlinestore.Name,\n SyncConfig = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewSyncConfigArgs\n {\n Cron = \"0 0 * * *\",\n },\n FeatureRegistrySource = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceArgs\n {\n FeatureGroups = new[]\n {\n new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceFeatureGroupArgs\n {\n FeatureGroupId = sampleFeatureGroup.Name,\n FeatureIds = new[]\n {\n sampleFeature.Name,\n },\n },\n },\n ProjectNumber = testProject.Apply(getProjectResult =\u003e getProjectResult.Number),\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vertexai,\n wait30Seconds,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttestProject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.NewProject(ctx, \"project\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"tf-test_13293\"),\n\t\t\tName: pulumi.String(\"tf-test_40289\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t\tBillingAccount: pulumi.String(\"000000-0000000-0000000-000000\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\twait60Seconds, err := time.NewSleep(ctx, \"wait_60_seconds\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"60s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tproject,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvertexai, err := projects.NewService(ctx, \"vertexai\", \u0026projects.ServiceArgs{\n\t\t\tService: pulumi.String(\"aiplatform.googleapis.com\"),\n\t\t\tProject: project.ProjectId,\n\t\t\tDisableOnDestroy: pulumi.Bool(false),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait60Seconds,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfeatureonlinestore, err := vertex.NewAiFeatureOnlineStore(ctx, \"featureonlinestore\", \u0026vertex.AiFeatureOnlineStoreArgs{\n\t\t\tName: pulumi.String(\"example_cross_project_featureview\"),\n\t\t\tProject: project.ProjectId,\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tBigtable: \u0026vertex.AiFeatureOnlineStoreBigtableArgs{\n\t\t\t\tAutoScaling: \u0026vertex.AiFeatureOnlineStoreBigtableAutoScalingArgs{\n\t\t\t\t\tMinNodeCount: pulumi.Int(1),\n\t\t\t\t\tMaxNodeCount: pulumi.Int(2),\n\t\t\t\t\tCpuUtilizationTarget: pulumi.Int(80),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvertexai,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsampleDataset, err := bigquery.NewDataset(ctx, \"sample_dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_cross_project_featureview\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tviewer, err := bigquery.NewDatasetIamMember(ctx, \"viewer\", \u0026bigquery.DatasetIamMemberArgs{\n\t\t\tProject: pulumi.String(testProject.ProjectId),\n\t\t\tDatasetId: sampleDataset.DatasetId,\n\t\t\tRole: pulumi.String(\"roles/bigquery.dataViewer\"),\n\t\t\tMember: project.Number.ApplyT(func(number string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-aiplatform.iam.gserviceaccount.com\", number), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfeatureonlinestore,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\twait30Seconds, err := time.NewSleep(ctx, \"wait_30_seconds\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"30s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tviewer,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsampleTable, err := bigquery.NewTable(ctx, \"sample_table\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: sampleDataset.DatasetId,\n\t\t\tTableId: pulumi.String(\"example_cross_project_featureview\"),\n\t\t\tSchema: pulumi.String(`[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_cross_project_featureview\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsampleFeatureGroup, err := vertex.NewAiFeatureGroup(ctx, \"sample_feature_group\", \u0026vertex.AiFeatureGroupArgs{\n\t\t\tName: pulumi.String(\"example_cross_project_featureview\"),\n\t\t\tDescription: pulumi.String(\"A sample feature group\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tBigQuery: \u0026vertex.AiFeatureGroupBigQueryArgs{\n\t\t\t\tBigQuerySource: \u0026vertex.AiFeatureGroupBigQueryBigQuerySourceArgs{\n\t\t\t\t\tInputUri: pulumi.All(sampleTable.Project, sampleTable.DatasetId, sampleTable.TableId).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\tproject := _args[0].(string)\n\t\t\t\t\t\tdatasetId := _args[1].(string)\n\t\t\t\t\t\ttableId := _args[2].(string)\n\t\t\t\t\t\treturn fmt.Sprintf(\"bq://%v.%v.%v\", project, datasetId, tableId), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t\tEntityIdColumns: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"feature_id\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsampleFeature, err := vertex.NewAiFeatureGroupFeature(ctx, \"sample_feature\", \u0026vertex.AiFeatureGroupFeatureArgs{\n\t\t\tName: pulumi.String(\"example_cross_project_featureview\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tFeatureGroup: sampleFeatureGroup.Name,\n\t\t\tDescription: pulumi.String(\"A sample feature\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiFeatureOnlineStoreFeatureview(ctx, \"cross_project_featureview\", \u0026vertex.AiFeatureOnlineStoreFeatureviewArgs{\n\t\t\tName: pulumi.String(\"example_cross_project_featureview\"),\n\t\t\tProject: project.ProjectId,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tFeatureOnlineStore: featureonlinestore.Name,\n\t\t\tSyncConfig: \u0026vertex.AiFeatureOnlineStoreFeatureviewSyncConfigArgs{\n\t\t\t\tCron: pulumi.String(\"0 0 * * *\"),\n\t\t\t},\n\t\t\tFeatureRegistrySource: \u0026vertex.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceArgs{\n\t\t\t\tFeatureGroups: vertex.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceFeatureGroupArray{\n\t\t\t\t\t\u0026vertex.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceFeatureGroupArgs{\n\t\t\t\t\t\tFeatureGroupId: sampleFeatureGroup.Name,\n\t\t\t\t\t\tFeatureIds: pulumi.StringArray{\n\t\t\t\t\t\t\tsampleFeature.Name,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tProjectNumber: pulumi.String(testProject.Number),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvertexai,\n\t\t\twait30Seconds,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.projects.Service;\nimport com.pulumi.gcp.projects.ServiceArgs;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStore;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.DatasetIamMember;\nimport com.pulumi.gcp.bigquery.DatasetIamMemberArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.vertex.AiFeatureGroup;\nimport com.pulumi.gcp.vertex.AiFeatureGroupArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureGroupBigQueryArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureGroupBigQueryBigQuerySourceArgs;\nimport com.pulumi.gcp.vertex.AiFeatureGroupFeature;\nimport com.pulumi.gcp.vertex.AiFeatureGroupFeatureArgs;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreFeatureview;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreFeatureviewArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewSyncConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var testProject = OrganizationsFunctions.getProject();\n\n var project = new Project(\"project\", ProjectArgs.builder()\n .projectId(\"tf-test_13293\")\n .name(\"tf-test_40289\")\n .orgId(\"123456789\")\n .billingAccount(\"000000-0000000-0000000-000000\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n var wait60Seconds = new Sleep(\"wait60Seconds\", SleepArgs.builder()\n .createDuration(\"60s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(project)\n .build());\n\n var vertexai = new Service(\"vertexai\", ServiceArgs.builder()\n .service(\"aiplatform.googleapis.com\")\n .project(project.projectId())\n .disableOnDestroy(false)\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait60Seconds)\n .build());\n\n var featureonlinestore = new AiFeatureOnlineStore(\"featureonlinestore\", AiFeatureOnlineStoreArgs.builder()\n .name(\"example_cross_project_featureview\")\n .project(project.projectId())\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .bigtable(AiFeatureOnlineStoreBigtableArgs.builder()\n .autoScaling(AiFeatureOnlineStoreBigtableAutoScalingArgs.builder()\n .minNodeCount(1)\n .maxNodeCount(2)\n .cpuUtilizationTarget(80)\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(vertexai)\n .build());\n\n var sampleDataset = new Dataset(\"sampleDataset\", DatasetArgs.builder()\n .datasetId(\"example_cross_project_featureview\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n var viewer = new DatasetIamMember(\"viewer\", DatasetIamMemberArgs.builder()\n .project(testProject.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .datasetId(sampleDataset.datasetId())\n .role(\"roles/bigquery.dataViewer\")\n .member(project.number().applyValue(number -\u003e String.format(\"serviceAccount:service-%s@gcp-sa-aiplatform.iam.gserviceaccount.com\", number)))\n .build(), CustomResourceOptions.builder()\n .dependsOn(featureonlinestore)\n .build());\n\n var wait30Seconds = new Sleep(\"wait30Seconds\", SleepArgs.builder()\n .createDuration(\"30s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(viewer)\n .build());\n\n var sampleTable = new Table(\"sampleTable\", TableArgs.builder()\n .deletionProtection(false)\n .datasetId(sampleDataset.datasetId())\n .tableId(\"example_cross_project_featureview\")\n .schema(\"\"\"\n[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_cross_project_featureview\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n \"\"\")\n .build());\n\n var sampleFeatureGroup = new AiFeatureGroup(\"sampleFeatureGroup\", AiFeatureGroupArgs.builder()\n .name(\"example_cross_project_featureview\")\n .description(\"A sample feature group\")\n .region(\"us-central1\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .bigQuery(AiFeatureGroupBigQueryArgs.builder()\n .bigQuerySource(AiFeatureGroupBigQueryBigQuerySourceArgs.builder()\n .inputUri(Output.tuple(sampleTable.project(), sampleTable.datasetId(), sampleTable.tableId()).applyValue(values -\u003e {\n var project = values.t1;\n var datasetId = values.t2;\n var tableId = values.t3;\n return String.format(\"bq://%s.%s.%s\", project,datasetId,tableId);\n }))\n .build())\n .entityIdColumns(\"feature_id\")\n .build())\n .build());\n\n var sampleFeature = new AiFeatureGroupFeature(\"sampleFeature\", AiFeatureGroupFeatureArgs.builder()\n .name(\"example_cross_project_featureview\")\n .region(\"us-central1\")\n .featureGroup(sampleFeatureGroup.name())\n .description(\"A sample feature\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var crossProjectFeatureview = new AiFeatureOnlineStoreFeatureview(\"crossProjectFeatureview\", AiFeatureOnlineStoreFeatureviewArgs.builder()\n .name(\"example_cross_project_featureview\")\n .project(project.projectId())\n .region(\"us-central1\")\n .featureOnlineStore(featureonlinestore.name())\n .syncConfig(AiFeatureOnlineStoreFeatureviewSyncConfigArgs.builder()\n .cron(\"0 0 * * *\")\n .build())\n .featureRegistrySource(AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceArgs.builder()\n .featureGroups(AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceFeatureGroupArgs.builder()\n .featureGroupId(sampleFeatureGroup.name())\n .featureIds(sampleFeature.name())\n .build())\n .projectNumber(testProject.applyValue(getProjectResult -\u003e getProjectResult.number()))\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n vertexai,\n wait30Seconds)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:organizations:Project\n properties:\n projectId: tf-test_13293\n name: tf-test_40289\n orgId: '123456789'\n billingAccount: 000000-0000000-0000000-000000\n deletionPolicy: DELETE\n wait60Seconds:\n type: time:sleep\n name: wait_60_seconds\n properties:\n createDuration: 60s\n options:\n dependson:\n - ${project}\n wait30Seconds:\n type: time:sleep\n name: wait_30_seconds\n properties:\n createDuration: 30s\n options:\n dependson:\n - ${viewer}\n vertexai:\n type: gcp:projects:Service\n properties:\n service: aiplatform.googleapis.com\n project: ${project.projectId}\n disableOnDestroy: false # Needed for CI tests for permissions to propagate, should not be needed for actual usage\n options:\n dependson:\n - ${wait60Seconds}\n viewer:\n type: gcp:bigquery:DatasetIamMember\n properties:\n project: ${testProject.projectId}\n datasetId: ${sampleDataset.datasetId}\n role: roles/bigquery.dataViewer\n member: serviceAccount:service-${project.number}@gcp-sa-aiplatform.iam.gserviceaccount.com\n options:\n dependson:\n - ${featureonlinestore}\n featureonlinestore:\n type: gcp:vertex:AiFeatureOnlineStore\n properties:\n name: example_cross_project_featureview\n project: ${project.projectId}\n labels:\n foo: bar\n region: us-central1\n bigtable:\n autoScaling:\n minNodeCount: 1\n maxNodeCount: 2\n cpuUtilizationTarget: 80\n options:\n dependson:\n - ${vertexai}\n sampleDataset:\n type: gcp:bigquery:Dataset\n name: sample_dataset\n properties:\n datasetId: example_cross_project_featureview\n friendlyName: test\n description: This is a test description\n location: US\n sampleTable:\n type: gcp:bigquery:Table\n name: sample_table\n properties:\n deletionProtection: false\n datasetId: ${sampleDataset.datasetId}\n tableId: example_cross_project_featureview\n schema: |\n [\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_cross_project_featureview\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n ]\n sampleFeatureGroup:\n type: gcp:vertex:AiFeatureGroup\n name: sample_feature_group\n properties:\n name: example_cross_project_featureview\n description: A sample feature group\n region: us-central1\n labels:\n label-one: value-one\n bigQuery:\n bigQuerySource:\n inputUri: bq://${sampleTable.project}.${sampleTable.datasetId}.${sampleTable.tableId}\n entityIdColumns:\n - feature_id\n sampleFeature:\n type: gcp:vertex:AiFeatureGroupFeature\n name: sample_feature\n properties:\n name: example_cross_project_featureview\n region: us-central1\n featureGroup: ${sampleFeatureGroup.name}\n description: A sample feature\n labels:\n label-one: value-one\n crossProjectFeatureview:\n type: gcp:vertex:AiFeatureOnlineStoreFeatureview\n name: cross_project_featureview\n properties:\n name: example_cross_project_featureview\n project: ${project.projectId}\n region: us-central1\n featureOnlineStore: ${featureonlinestore.name}\n syncConfig:\n cron: 0 0 * * *\n featureRegistrySource:\n featureGroups:\n - featureGroupId: ${sampleFeatureGroup.name}\n featureIds:\n - ${sampleFeature.name}\n projectNumber: ${testProject.number}\n options:\n dependson:\n - ${vertexai}\n - ${wait30Seconds}\nvariables:\n testProject:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Featureonlinestore Featureview With Vector Search\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst featureonlinestore = new gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\", {\n name: \"example_feature_view_vector_search\",\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n bigtable: {\n autoScaling: {\n minNodeCount: 1,\n maxNodeCount: 2,\n cpuUtilizationTarget: 80,\n },\n },\n embeddingManagement: {\n enabled: true,\n },\n});\nconst tf_test_dataset = new gcp.bigquery.Dataset(\"tf-test-dataset\", {\n datasetId: \"example_feature_view_vector_search\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst tf_test_table = new gcp.bigquery.Table(\"tf-test-table\", {\n deletionProtection: false,\n datasetId: tf_test_dataset.datasetId,\n tableId: \"example_feature_view_vector_search\",\n schema: `[\n{\n \"name\": \"test_primary_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"primary test id\"\n},\n{\n \"name\": \"embedding\",\n \"mode\": \"REPEATED\",\n \"type\": \"FLOAT\",\n \"description\": \"embedding column for primary_id column\"\n},\n{\n \"name\": \"country\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"country\"\n},\n{\n \"name\": \"test_crowding_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"INTEGER\",\n \"description\": \"test crowding column\"\n},\n{\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n},\n{\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n},\n{\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n}\n]\n`,\n});\nconst featureviewVectorSearch = new gcp.vertex.AiFeatureOnlineStoreFeatureview(\"featureview_vector_search\", {\n name: \"example_feature_view_vector_search\",\n region: \"us-central1\",\n featureOnlineStore: featureonlinestore.name,\n syncConfig: {\n cron: \"0 0 * * *\",\n },\n bigQuerySource: {\n uri: pulumi.interpolate`bq://${tf_test_table.project}.${tf_test_table.datasetId}.${tf_test_table.tableId}`,\n entityIdColumns: [\"test_entity_column\"],\n },\n vectorSearchConfig: {\n embeddingColumn: \"embedding\",\n filterColumns: [\"country\"],\n crowdingColumn: \"test_crowding_column\",\n distanceMeasureType: \"DOT_PRODUCT_DISTANCE\",\n treeAhConfig: {\n leafNodeEmbeddingCount: \"1000\",\n },\n embeddingDimension: 2,\n },\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeatureonlinestore = gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\",\n name=\"example_feature_view_vector_search\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n bigtable={\n \"auto_scaling\": {\n \"min_node_count\": 1,\n \"max_node_count\": 2,\n \"cpu_utilization_target\": 80,\n },\n },\n embedding_management={\n \"enabled\": True,\n })\ntf_test_dataset = gcp.bigquery.Dataset(\"tf-test-dataset\",\n dataset_id=\"example_feature_view_vector_search\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\ntf_test_table = gcp.bigquery.Table(\"tf-test-table\",\n deletion_protection=False,\n dataset_id=tf_test_dataset.dataset_id,\n table_id=\"example_feature_view_vector_search\",\n schema=\"\"\"[\n{\n \"name\": \"test_primary_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"primary test id\"\n},\n{\n \"name\": \"embedding\",\n \"mode\": \"REPEATED\",\n \"type\": \"FLOAT\",\n \"description\": \"embedding column for primary_id column\"\n},\n{\n \"name\": \"country\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"country\"\n},\n{\n \"name\": \"test_crowding_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"INTEGER\",\n \"description\": \"test crowding column\"\n},\n{\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n},\n{\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n},\n{\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n}\n]\n\"\"\")\nfeatureview_vector_search = gcp.vertex.AiFeatureOnlineStoreFeatureview(\"featureview_vector_search\",\n name=\"example_feature_view_vector_search\",\n region=\"us-central1\",\n feature_online_store=featureonlinestore.name,\n sync_config={\n \"cron\": \"0 0 * * *\",\n },\n big_query_source={\n \"uri\": pulumi.Output.all(\n project=tf_test_table.project,\n dataset_id=tf_test_table.dataset_id,\n table_id=tf_test_table.table_id\n).apply(lambda resolved_outputs: f\"bq://{resolved_outputs['project']}.{resolved_outputs['dataset_id']}.{resolved_outputs['table_id']}\")\n,\n \"entity_id_columns\": [\"test_entity_column\"],\n },\n vector_search_config={\n \"embedding_column\": \"embedding\",\n \"filter_columns\": [\"country\"],\n \"crowding_column\": \"test_crowding_column\",\n \"distance_measure_type\": \"DOT_PRODUCT_DISTANCE\",\n \"tree_ah_config\": {\n \"leaf_node_embedding_count\": \"1000\",\n },\n \"embedding_dimension\": 2,\n })\nproject = gcp.organizations.get_project()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var featureonlinestore = new Gcp.Vertex.AiFeatureOnlineStore(\"featureonlinestore\", new()\n {\n Name = \"example_feature_view_vector_search\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n Bigtable = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableArgs\n {\n AutoScaling = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs\n {\n MinNodeCount = 1,\n MaxNodeCount = 2,\n CpuUtilizationTarget = 80,\n },\n },\n EmbeddingManagement = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreEmbeddingManagementArgs\n {\n Enabled = true,\n },\n });\n\n var tf_test_dataset = new Gcp.BigQuery.Dataset(\"tf-test-dataset\", new()\n {\n DatasetId = \"example_feature_view_vector_search\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var tf_test_table = new Gcp.BigQuery.Table(\"tf-test-table\", new()\n {\n DeletionProtection = false,\n DatasetId = tf_test_dataset.DatasetId,\n TableId = \"example_feature_view_vector_search\",\n Schema = @\"[\n{\n \"\"name\"\": \"\"test_primary_id\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"description\"\": \"\"primary test id\"\"\n},\n{\n \"\"name\"\": \"\"embedding\"\",\n \"\"mode\"\": \"\"REPEATED\"\",\n \"\"type\"\": \"\"FLOAT\"\",\n \"\"description\"\": \"\"embedding column for primary_id column\"\"\n},\n{\n \"\"name\"\": \"\"country\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"description\"\": \"\"country\"\"\n},\n{\n \"\"name\"\": \"\"test_crowding_column\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"INTEGER\"\",\n \"\"description\"\": \"\"test crowding column\"\"\n},\n{\n \"\"name\"\": \"\"entity_id\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"description\"\": \"\"Test default entity_id\"\"\n},\n{\n \"\"name\"\": \"\"test_entity_column\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"description\"\": \"\"test secondary entity column\"\"\n},\n{\n \"\"name\"\": \"\"feature_timestamp\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"TIMESTAMP\"\",\n \"\"description\"\": \"\"Default timestamp value\"\"\n}\n]\n\",\n });\n\n var featureviewVectorSearch = new Gcp.Vertex.AiFeatureOnlineStoreFeatureview(\"featureview_vector_search\", new()\n {\n Name = \"example_feature_view_vector_search\",\n Region = \"us-central1\",\n FeatureOnlineStore = featureonlinestore.Name,\n SyncConfig = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewSyncConfigArgs\n {\n Cron = \"0 0 * * *\",\n },\n BigQuerySource = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewBigQuerySourceArgs\n {\n Uri = Output.Tuple(tf_test_table.Project, tf_test_table.DatasetId, tf_test_table.TableId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n var tableId = values.Item3;\n return $\"bq://{project}.{datasetId}.{tableId}\";\n }),\n EntityIdColumns = new[]\n {\n \"test_entity_column\",\n },\n },\n VectorSearchConfig = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewVectorSearchConfigArgs\n {\n EmbeddingColumn = \"embedding\",\n FilterColumns = new[]\n {\n \"country\",\n },\n CrowdingColumn = \"test_crowding_column\",\n DistanceMeasureType = \"DOT_PRODUCT_DISTANCE\",\n TreeAhConfig = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewVectorSearchConfigTreeAhConfigArgs\n {\n LeafNodeEmbeddingCount = \"1000\",\n },\n EmbeddingDimension = 2,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfeatureonlinestore, err := vertex.NewAiFeatureOnlineStore(ctx, \"featureonlinestore\", \u0026vertex.AiFeatureOnlineStoreArgs{\n\t\t\tName: pulumi.String(\"example_feature_view_vector_search\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tBigtable: \u0026vertex.AiFeatureOnlineStoreBigtableArgs{\n\t\t\t\tAutoScaling: \u0026vertex.AiFeatureOnlineStoreBigtableAutoScalingArgs{\n\t\t\t\t\tMinNodeCount: pulumi.Int(1),\n\t\t\t\t\tMaxNodeCount: pulumi.Int(2),\n\t\t\t\t\tCpuUtilizationTarget: pulumi.Int(80),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEmbeddingManagement: \u0026vertex.AiFeatureOnlineStoreEmbeddingManagementArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDataset(ctx, \"tf-test-dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_feature_view_vector_search\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewTable(ctx, \"tf-test-table\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: tf_test_dataset.DatasetId,\n\t\t\tTableId: pulumi.String(\"example_feature_view_vector_search\"),\n\t\t\tSchema: pulumi.String(`[\n{\n \"name\": \"test_primary_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"primary test id\"\n},\n{\n \"name\": \"embedding\",\n \"mode\": \"REPEATED\",\n \"type\": \"FLOAT\",\n \"description\": \"embedding column for primary_id column\"\n},\n{\n \"name\": \"country\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"country\"\n},\n{\n \"name\": \"test_crowding_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"INTEGER\",\n \"description\": \"test crowding column\"\n},\n{\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n},\n{\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n},\n{\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n}\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiFeatureOnlineStoreFeatureview(ctx, \"featureview_vector_search\", \u0026vertex.AiFeatureOnlineStoreFeatureviewArgs{\n\t\t\tName: pulumi.String(\"example_feature_view_vector_search\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tFeatureOnlineStore: featureonlinestore.Name,\n\t\t\tSyncConfig: \u0026vertex.AiFeatureOnlineStoreFeatureviewSyncConfigArgs{\n\t\t\t\tCron: pulumi.String(\"0 0 * * *\"),\n\t\t\t},\n\t\t\tBigQuerySource: \u0026vertex.AiFeatureOnlineStoreFeatureviewBigQuerySourceArgs{\n\t\t\t\tUri: pulumi.All(tf_test_table.Project, tf_test_table.DatasetId, tf_test_table.TableId).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tproject := _args[0].(string)\n\t\t\t\t\tdatasetId := _args[1].(string)\n\t\t\t\t\ttableId := _args[2].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"bq://%v.%v.%v\", project, datasetId, tableId), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tEntityIdColumns: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"test_entity_column\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tVectorSearchConfig: \u0026vertex.AiFeatureOnlineStoreFeatureviewVectorSearchConfigArgs{\n\t\t\t\tEmbeddingColumn: pulumi.String(\"embedding\"),\n\t\t\t\tFilterColumns: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"country\"),\n\t\t\t\t},\n\t\t\t\tCrowdingColumn: pulumi.String(\"test_crowding_column\"),\n\t\t\t\tDistanceMeasureType: pulumi.String(\"DOT_PRODUCT_DISTANCE\"),\n\t\t\t\tTreeAhConfig: \u0026vertex.AiFeatureOnlineStoreFeatureviewVectorSearchConfigTreeAhConfigArgs{\n\t\t\t\t\tLeafNodeEmbeddingCount: pulumi.String(\"1000\"),\n\t\t\t\t},\n\t\t\t\tEmbeddingDimension: pulumi.Int(2),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStore;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreEmbeddingManagementArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreFeatureview;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreFeatureviewArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewSyncConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewBigQuerySourceArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewVectorSearchConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewVectorSearchConfigTreeAhConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var featureonlinestore = new AiFeatureOnlineStore(\"featureonlinestore\", AiFeatureOnlineStoreArgs.builder()\n .name(\"example_feature_view_vector_search\")\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .bigtable(AiFeatureOnlineStoreBigtableArgs.builder()\n .autoScaling(AiFeatureOnlineStoreBigtableAutoScalingArgs.builder()\n .minNodeCount(1)\n .maxNodeCount(2)\n .cpuUtilizationTarget(80)\n .build())\n .build())\n .embeddingManagement(AiFeatureOnlineStoreEmbeddingManagementArgs.builder()\n .enabled(true)\n .build())\n .build());\n\n var tf_test_dataset = new Dataset(\"tf-test-dataset\", DatasetArgs.builder()\n .datasetId(\"example_feature_view_vector_search\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n var tf_test_table = new Table(\"tf-test-table\", TableArgs.builder()\n .deletionProtection(false)\n .datasetId(tf_test_dataset.datasetId())\n .tableId(\"example_feature_view_vector_search\")\n .schema(\"\"\"\n[\n{\n \"name\": \"test_primary_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"primary test id\"\n},\n{\n \"name\": \"embedding\",\n \"mode\": \"REPEATED\",\n \"type\": \"FLOAT\",\n \"description\": \"embedding column for primary_id column\"\n},\n{\n \"name\": \"country\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"country\"\n},\n{\n \"name\": \"test_crowding_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"INTEGER\",\n \"description\": \"test crowding column\"\n},\n{\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n},\n{\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n},\n{\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n}\n]\n \"\"\")\n .build());\n\n var featureviewVectorSearch = new AiFeatureOnlineStoreFeatureview(\"featureviewVectorSearch\", AiFeatureOnlineStoreFeatureviewArgs.builder()\n .name(\"example_feature_view_vector_search\")\n .region(\"us-central1\")\n .featureOnlineStore(featureonlinestore.name())\n .syncConfig(AiFeatureOnlineStoreFeatureviewSyncConfigArgs.builder()\n .cron(\"0 0 * * *\")\n .build())\n .bigQuerySource(AiFeatureOnlineStoreFeatureviewBigQuerySourceArgs.builder()\n .uri(Output.tuple(tf_test_table.project(), tf_test_table.datasetId(), tf_test_table.tableId()).applyValue(values -\u003e {\n var project = values.t1;\n var datasetId = values.t2;\n var tableId = values.t3;\n return String.format(\"bq://%s.%s.%s\", project,datasetId,tableId);\n }))\n .entityIdColumns(\"test_entity_column\")\n .build())\n .vectorSearchConfig(AiFeatureOnlineStoreFeatureviewVectorSearchConfigArgs.builder()\n .embeddingColumn(\"embedding\")\n .filterColumns(\"country\")\n .crowdingColumn(\"test_crowding_column\")\n .distanceMeasureType(\"DOT_PRODUCT_DISTANCE\")\n .treeAhConfig(AiFeatureOnlineStoreFeatureviewVectorSearchConfigTreeAhConfigArgs.builder()\n .leafNodeEmbeddingCount(\"1000\")\n .build())\n .embeddingDimension(\"2\")\n .build())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n featureonlinestore:\n type: gcp:vertex:AiFeatureOnlineStore\n properties:\n name: example_feature_view_vector_search\n labels:\n foo: bar\n region: us-central1\n bigtable:\n autoScaling:\n minNodeCount: 1\n maxNodeCount: 2\n cpuUtilizationTarget: 80\n embeddingManagement:\n enabled: true\n tf-test-dataset:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_feature_view_vector_search\n friendlyName: test\n description: This is a test description\n location: US\n tf-test-table:\n type: gcp:bigquery:Table\n properties:\n deletionProtection: false\n datasetId: ${[\"tf-test-dataset\"].datasetId}\n tableId: example_feature_view_vector_search\n schema: |\n [\n {\n \"name\": \"test_primary_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"primary test id\"\n },\n {\n \"name\": \"embedding\",\n \"mode\": \"REPEATED\",\n \"type\": \"FLOAT\",\n \"description\": \"embedding column for primary_id column\"\n },\n {\n \"name\": \"country\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"country\"\n },\n {\n \"name\": \"test_crowding_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"INTEGER\",\n \"description\": \"test crowding column\"\n },\n {\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n },\n {\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n }\n ]\n featureviewVectorSearch:\n type: gcp:vertex:AiFeatureOnlineStoreFeatureview\n name: featureview_vector_search\n properties:\n name: example_feature_view_vector_search\n region: us-central1\n featureOnlineStore: ${featureonlinestore.name}\n syncConfig:\n cron: 0 0 * * *\n bigQuerySource:\n uri: bq://${[\"tf-test-table\"].project}.${[\"tf-test-table\"].datasetId}.${[\"tf-test-table\"].tableId}\n entityIdColumns:\n - test_entity_column\n vectorSearchConfig:\n embeddingColumn: embedding\n filterColumns:\n - country\n crowdingColumn: test_crowding_column\n distanceMeasureType: DOT_PRODUCT_DISTANCE\n treeAhConfig:\n leafNodeEmbeddingCount: '1000'\n embeddingDimension: '2'\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFeatureOnlineStoreFeatureview can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/featureOnlineStores/{{feature_online_store}}/featureViews/{{name}}`\n\n* `{{project}}/{{region}}/{{feature_online_store}}/{{name}}`\n\n* `{{region}}/{{feature_online_store}}/{{name}}`\n\n* `{{feature_online_store}}/{{name}}`\n\nWhen using the `pulumi import` command, FeatureOnlineStoreFeatureview can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureOnlineStoreFeatureview:AiFeatureOnlineStoreFeatureview default projects/{{project}}/locations/{{region}}/featureOnlineStores/{{feature_online_store}}/featureViews/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureOnlineStoreFeatureview:AiFeatureOnlineStoreFeatureview default {{project}}/{{region}}/{{feature_online_store}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureOnlineStoreFeatureview:AiFeatureOnlineStoreFeatureview default {{region}}/{{feature_online_store}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureOnlineStoreFeatureview:AiFeatureOnlineStoreFeatureview default {{feature_online_store}}/{{name}}\n```\n\n", "properties": { "bigQuerySource": { "$ref": "#/types/gcp:vertex/AiFeatureOnlineStoreFeatureviewBigQuerySource:AiFeatureOnlineStoreFeatureviewBigQuerySource", @@ -256810,7 +256810,7 @@ } }, "gcp:vertex/aiIndex:AiIndex": { - "description": "A representation of a collection of database items organized in a way that allows for approximate nearest neighbor (a.k.a ANN) algorithms search.\n\n\nTo get more information about Index, see:\n\n* [API documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.indexes/)\n\n## Example Usage\n\n### Vertex Ai Index\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"vertex-ai-index-test\",\n location: \"us-central1\",\n uniformBucketLevelAccess: true,\n});\n// The sample data comes from the following link:\n// https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\nconst data = new gcp.storage.BucketObject(\"data\", {\n name: \"contents/data.json\",\n bucket: bucket.name,\n content: `{\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n{\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n`,\n});\nconst index = new gcp.vertex.AiIndex(\"index\", {\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n displayName: \"test-index\",\n description: \"index for test\",\n metadata: {\n contentsDeltaUri: pulumi.interpolate`gs://${bucket.name}/contents`,\n config: {\n dimensions: 2,\n approximateNeighborsCount: 150,\n shardSize: \"SHARD_SIZE_SMALL\",\n distanceMeasureType: \"DOT_PRODUCT_DISTANCE\",\n algorithmConfig: {\n treeAhConfig: {\n leafNodeEmbeddingCount: 500,\n leafNodesToSearchPercent: 7,\n },\n },\n },\n },\n indexUpdateMethod: \"BATCH_UPDATE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"vertex-ai-index-test\",\n location=\"us-central1\",\n uniform_bucket_level_access=True)\n# The sample data comes from the following link:\n# https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\ndata = gcp.storage.BucketObject(\"data\",\n name=\"contents/data.json\",\n bucket=bucket.name,\n content=\"\"\"{\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n{\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n\"\"\")\nindex = gcp.vertex.AiIndex(\"index\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n display_name=\"test-index\",\n description=\"index for test\",\n metadata={\n \"contents_delta_uri\": bucket.name.apply(lambda name: f\"gs://{name}/contents\"),\n \"config\": {\n \"dimensions\": 2,\n \"approximate_neighbors_count\": 150,\n \"shard_size\": \"SHARD_SIZE_SMALL\",\n \"distance_measure_type\": \"DOT_PRODUCT_DISTANCE\",\n \"algorithm_config\": {\n \"tree_ah_config\": {\n \"leaf_node_embedding_count\": 500,\n \"leaf_nodes_to_search_percent\": 7,\n },\n },\n },\n },\n index_update_method=\"BATCH_UPDATE\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = \"vertex-ai-index-test\",\n Location = \"us-central1\",\n UniformBucketLevelAccess = true,\n });\n\n // The sample data comes from the following link:\n // https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n var data = new Gcp.Storage.BucketObject(\"data\", new()\n {\n Name = \"contents/data.json\",\n Bucket = bucket.Name,\n Content = @\"{\"\"id\"\": \"\"42\"\", \"\"embedding\"\": [0.5, 1.0], \"\"restricts\"\": [{\"\"namespace\"\": \"\"class\"\", \"\"allow\"\": [\"\"cat\"\", \"\"pet\"\"]},{\"\"namespace\"\": \"\"category\"\", \"\"allow\"\": [\"\"feline\"\"]}]}\n{\"\"id\"\": \"\"43\"\", \"\"embedding\"\": [0.6, 1.0], \"\"restricts\"\": [{\"\"namespace\"\": \"\"class\"\", \"\"allow\"\": [\"\"dog\"\", \"\"pet\"\"]},{\"\"namespace\"\": \"\"category\"\", \"\"allow\"\": [\"\"canine\"\"]}]}\n\",\n });\n\n var index = new Gcp.Vertex.AiIndex(\"index\", new()\n {\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n DisplayName = \"test-index\",\n Description = \"index for test\",\n Metadata = new Gcp.Vertex.Inputs.AiIndexMetadataArgs\n {\n ContentsDeltaUri = bucket.Name.Apply(name =\u003e $\"gs://{name}/contents\"),\n Config = new Gcp.Vertex.Inputs.AiIndexMetadataConfigArgs\n {\n Dimensions = 2,\n ApproximateNeighborsCount = 150,\n ShardSize = \"SHARD_SIZE_SMALL\",\n DistanceMeasureType = \"DOT_PRODUCT_DISTANCE\",\n AlgorithmConfig = new Gcp.Vertex.Inputs.AiIndexMetadataConfigAlgorithmConfigArgs\n {\n TreeAhConfig = new Gcp.Vertex.Inputs.AiIndexMetadataConfigAlgorithmConfigTreeAhConfigArgs\n {\n LeafNodeEmbeddingCount = 500,\n LeafNodesToSearchPercent = 7,\n },\n },\n },\n },\n IndexUpdateMethod = \"BATCH_UPDATE\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"vertex-ai-index-test\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// The sample data comes from the following link:\n\t\t// https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n\t\t_, err = storage.NewBucketObject(ctx, \"data\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"contents/data.json\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tContent: pulumi.String(\"{\\\"id\\\": \\\"42\\\", \\\"embedding\\\": [0.5, 1.0], \\\"restricts\\\": [{\\\"namespace\\\": \\\"class\\\", \\\"allow\\\": [\\\"cat\\\", \\\"pet\\\"]},{\\\"namespace\\\": \\\"category\\\", \\\"allow\\\": [\\\"feline\\\"]}]}\\n{\\\"id\\\": \\\"43\\\", \\\"embedding\\\": [0.6, 1.0], \\\"restricts\\\": [{\\\"namespace\\\": \\\"class\\\", \\\"allow\\\": [\\\"dog\\\", \\\"pet\\\"]},{\\\"namespace\\\": \\\"category\\\", \\\"allow\\\": [\\\"canine\\\"]}]}\\n\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiIndex(ctx, \"index\", \u0026vertex.AiIndexArgs{\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"test-index\"),\n\t\t\tDescription: pulumi.String(\"index for test\"),\n\t\t\tMetadata: \u0026vertex.AiIndexMetadataArgs{\n\t\t\t\tContentsDeltaUri: bucket.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/contents\", name), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tConfig: \u0026vertex.AiIndexMetadataConfigArgs{\n\t\t\t\t\tDimensions: pulumi.Int(2),\n\t\t\t\t\tApproximateNeighborsCount: pulumi.Int(150),\n\t\t\t\t\tShardSize: pulumi.String(\"SHARD_SIZE_SMALL\"),\n\t\t\t\t\tDistanceMeasureType: pulumi.String(\"DOT_PRODUCT_DISTANCE\"),\n\t\t\t\t\tAlgorithmConfig: \u0026vertex.AiIndexMetadataConfigAlgorithmConfigArgs{\n\t\t\t\t\t\tTreeAhConfig: \u0026vertex.AiIndexMetadataConfigAlgorithmConfigTreeAhConfigArgs{\n\t\t\t\t\t\t\tLeafNodeEmbeddingCount: pulumi.Int(500),\n\t\t\t\t\t\t\tLeafNodesToSearchPercent: pulumi.Int(7),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tIndexUpdateMethod: pulumi.String(\"BATCH_UPDATE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.vertex.AiIndex;\nimport com.pulumi.gcp.vertex.AiIndexArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataConfigAlgorithmConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataConfigAlgorithmConfigTreeAhConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(\"vertex-ai-index-test\")\n .location(\"us-central1\")\n .uniformBucketLevelAccess(true)\n .build());\n\n // The sample data comes from the following link:\n // https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n var data = new BucketObject(\"data\", BucketObjectArgs.builder()\n .name(\"contents/data.json\")\n .bucket(bucket.name())\n .content(\"\"\"\n{\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n{\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n \"\"\")\n .build());\n\n var index = new AiIndex(\"index\", AiIndexArgs.builder()\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .displayName(\"test-index\")\n .description(\"index for test\")\n .metadata(AiIndexMetadataArgs.builder()\n .contentsDeltaUri(bucket.name().applyValue(name -\u003e String.format(\"gs://%s/contents\", name)))\n .config(AiIndexMetadataConfigArgs.builder()\n .dimensions(2)\n .approximateNeighborsCount(150)\n .shardSize(\"SHARD_SIZE_SMALL\")\n .distanceMeasureType(\"DOT_PRODUCT_DISTANCE\")\n .algorithmConfig(AiIndexMetadataConfigAlgorithmConfigArgs.builder()\n .treeAhConfig(AiIndexMetadataConfigAlgorithmConfigTreeAhConfigArgs.builder()\n .leafNodeEmbeddingCount(500)\n .leafNodesToSearchPercent(7)\n .build())\n .build())\n .build())\n .build())\n .indexUpdateMethod(\"BATCH_UPDATE\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: vertex-ai-index-test\n location: us-central1\n uniformBucketLevelAccess: true\n # The sample data comes from the following link:\n # https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n data:\n type: gcp:storage:BucketObject\n properties:\n name: contents/data.json\n bucket: ${bucket.name}\n content: |\n {\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n {\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n index:\n type: gcp:vertex:AiIndex\n properties:\n labels:\n foo: bar\n region: us-central1\n displayName: test-index\n description: index for test\n metadata:\n contentsDeltaUri: gs://${bucket.name}/contents\n config:\n dimensions: 2\n approximateNeighborsCount: 150\n shardSize: SHARD_SIZE_SMALL\n distanceMeasureType: DOT_PRODUCT_DISTANCE\n algorithmConfig:\n treeAhConfig:\n leafNodeEmbeddingCount: 500\n leafNodesToSearchPercent: 7\n indexUpdateMethod: BATCH_UPDATE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Index Streaming\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"vertex-ai-index-test\",\n location: \"us-central1\",\n uniformBucketLevelAccess: true,\n});\n// The sample data comes from the following link:\n// https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\nconst data = new gcp.storage.BucketObject(\"data\", {\n name: \"contents/data.json\",\n bucket: bucket.name,\n content: `{\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n{\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n`,\n});\nconst index = new gcp.vertex.AiIndex(\"index\", {\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n displayName: \"test-index\",\n description: \"index for test\",\n metadata: {\n contentsDeltaUri: pulumi.interpolate`gs://${bucket.name}/contents`,\n config: {\n dimensions: 2,\n shardSize: \"SHARD_SIZE_LARGE\",\n distanceMeasureType: \"COSINE_DISTANCE\",\n featureNormType: \"UNIT_L2_NORM\",\n algorithmConfig: {\n bruteForceConfig: {},\n },\n },\n },\n indexUpdateMethod: \"STREAM_UPDATE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"vertex-ai-index-test\",\n location=\"us-central1\",\n uniform_bucket_level_access=True)\n# The sample data comes from the following link:\n# https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\ndata = gcp.storage.BucketObject(\"data\",\n name=\"contents/data.json\",\n bucket=bucket.name,\n content=\"\"\"{\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n{\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n\"\"\")\nindex = gcp.vertex.AiIndex(\"index\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n display_name=\"test-index\",\n description=\"index for test\",\n metadata={\n \"contents_delta_uri\": bucket.name.apply(lambda name: f\"gs://{name}/contents\"),\n \"config\": {\n \"dimensions\": 2,\n \"shard_size\": \"SHARD_SIZE_LARGE\",\n \"distance_measure_type\": \"COSINE_DISTANCE\",\n \"feature_norm_type\": \"UNIT_L2_NORM\",\n \"algorithm_config\": {\n \"brute_force_config\": {},\n },\n },\n },\n index_update_method=\"STREAM_UPDATE\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = \"vertex-ai-index-test\",\n Location = \"us-central1\",\n UniformBucketLevelAccess = true,\n });\n\n // The sample data comes from the following link:\n // https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n var data = new Gcp.Storage.BucketObject(\"data\", new()\n {\n Name = \"contents/data.json\",\n Bucket = bucket.Name,\n Content = @\"{\"\"id\"\": \"\"42\"\", \"\"embedding\"\": [0.5, 1.0], \"\"restricts\"\": [{\"\"namespace\"\": \"\"class\"\", \"\"allow\"\": [\"\"cat\"\", \"\"pet\"\"]},{\"\"namespace\"\": \"\"category\"\", \"\"allow\"\": [\"\"feline\"\"]}]}\n{\"\"id\"\": \"\"43\"\", \"\"embedding\"\": [0.6, 1.0], \"\"restricts\"\": [{\"\"namespace\"\": \"\"class\"\", \"\"allow\"\": [\"\"dog\"\", \"\"pet\"\"]},{\"\"namespace\"\": \"\"category\"\", \"\"allow\"\": [\"\"canine\"\"]}]}\n\",\n });\n\n var index = new Gcp.Vertex.AiIndex(\"index\", new()\n {\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n DisplayName = \"test-index\",\n Description = \"index for test\",\n Metadata = new Gcp.Vertex.Inputs.AiIndexMetadataArgs\n {\n ContentsDeltaUri = bucket.Name.Apply(name =\u003e $\"gs://{name}/contents\"),\n Config = new Gcp.Vertex.Inputs.AiIndexMetadataConfigArgs\n {\n Dimensions = 2,\n ShardSize = \"SHARD_SIZE_LARGE\",\n DistanceMeasureType = \"COSINE_DISTANCE\",\n FeatureNormType = \"UNIT_L2_NORM\",\n AlgorithmConfig = new Gcp.Vertex.Inputs.AiIndexMetadataConfigAlgorithmConfigArgs\n {\n BruteForceConfig = null,\n },\n },\n },\n IndexUpdateMethod = \"STREAM_UPDATE\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"vertex-ai-index-test\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// The sample data comes from the following link:\n\t\t// https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n\t\t_, err = storage.NewBucketObject(ctx, \"data\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"contents/data.json\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tContent: pulumi.String(\"{\\\"id\\\": \\\"42\\\", \\\"embedding\\\": [0.5, 1.0], \\\"restricts\\\": [{\\\"namespace\\\": \\\"class\\\", \\\"allow\\\": [\\\"cat\\\", \\\"pet\\\"]},{\\\"namespace\\\": \\\"category\\\", \\\"allow\\\": [\\\"feline\\\"]}]}\\n{\\\"id\\\": \\\"43\\\", \\\"embedding\\\": [0.6, 1.0], \\\"restricts\\\": [{\\\"namespace\\\": \\\"class\\\", \\\"allow\\\": [\\\"dog\\\", \\\"pet\\\"]},{\\\"namespace\\\": \\\"category\\\", \\\"allow\\\": [\\\"canine\\\"]}]}\\n\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiIndex(ctx, \"index\", \u0026vertex.AiIndexArgs{\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"test-index\"),\n\t\t\tDescription: pulumi.String(\"index for test\"),\n\t\t\tMetadata: \u0026vertex.AiIndexMetadataArgs{\n\t\t\t\tContentsDeltaUri: bucket.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/contents\", name), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tConfig: \u0026vertex.AiIndexMetadataConfigArgs{\n\t\t\t\t\tDimensions: pulumi.Int(2),\n\t\t\t\t\tShardSize: pulumi.String(\"SHARD_SIZE_LARGE\"),\n\t\t\t\t\tDistanceMeasureType: pulumi.String(\"COSINE_DISTANCE\"),\n\t\t\t\t\tFeatureNormType: pulumi.String(\"UNIT_L2_NORM\"),\n\t\t\t\t\tAlgorithmConfig: \u0026vertex.AiIndexMetadataConfigAlgorithmConfigArgs{\n\t\t\t\t\t\tBruteForceConfig: nil,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tIndexUpdateMethod: pulumi.String(\"STREAM_UPDATE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.vertex.AiIndex;\nimport com.pulumi.gcp.vertex.AiIndexArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataConfigAlgorithmConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataConfigAlgorithmConfigBruteForceConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(\"vertex-ai-index-test\")\n .location(\"us-central1\")\n .uniformBucketLevelAccess(true)\n .build());\n\n // The sample data comes from the following link:\n // https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n var data = new BucketObject(\"data\", BucketObjectArgs.builder()\n .name(\"contents/data.json\")\n .bucket(bucket.name())\n .content(\"\"\"\n{\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n{\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n \"\"\")\n .build());\n\n var index = new AiIndex(\"index\", AiIndexArgs.builder()\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .displayName(\"test-index\")\n .description(\"index for test\")\n .metadata(AiIndexMetadataArgs.builder()\n .contentsDeltaUri(bucket.name().applyValue(name -\u003e String.format(\"gs://%s/contents\", name)))\n .config(AiIndexMetadataConfigArgs.builder()\n .dimensions(2)\n .shardSize(\"SHARD_SIZE_LARGE\")\n .distanceMeasureType(\"COSINE_DISTANCE\")\n .featureNormType(\"UNIT_L2_NORM\")\n .algorithmConfig(AiIndexMetadataConfigAlgorithmConfigArgs.builder()\n .bruteForceConfig()\n .build())\n .build())\n .build())\n .indexUpdateMethod(\"STREAM_UPDATE\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: vertex-ai-index-test\n location: us-central1\n uniformBucketLevelAccess: true\n # The sample data comes from the following link:\n # https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n data:\n type: gcp:storage:BucketObject\n properties:\n name: contents/data.json\n bucket: ${bucket.name}\n content: |\n {\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n {\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n index:\n type: gcp:vertex:AiIndex\n properties:\n labels:\n foo: bar\n region: us-central1\n displayName: test-index\n description: index for test\n metadata:\n contentsDeltaUri: gs://${bucket.name}/contents\n config:\n dimensions: 2\n shardSize: SHARD_SIZE_LARGE\n distanceMeasureType: COSINE_DISTANCE\n featureNormType: UNIT_L2_NORM\n algorithmConfig:\n bruteForceConfig: {}\n indexUpdateMethod: STREAM_UPDATE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIndex can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/indexes/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Index can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vertex/aiIndex:AiIndex default projects/{{project}}/locations/{{region}}/indexes/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiIndex:AiIndex default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiIndex:AiIndex default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiIndex:AiIndex default {{name}}\n```\n\n", + "description": "A representation of a collection of database items organized in a way that allows for approximate nearest neighbor (a.k.a ANN) algorithms search.\n\n\nTo get more information about Index, see:\n\n* [API documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.indexes/)\n\n## Example Usage\n\n### Vertex Ai Index\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"vertex-ai-index-test\",\n location: \"us-central1\",\n uniformBucketLevelAccess: true,\n});\n// The sample data comes from the following link:\n// https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\nconst data = new gcp.storage.BucketObject(\"data\", {\n name: \"contents/data.json\",\n bucket: bucket.name,\n content: `{\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n{\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n`,\n});\nconst index = new gcp.vertex.AiIndex(\"index\", {\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n displayName: \"test-index\",\n description: \"index for test\",\n metadata: {\n contentsDeltaUri: pulumi.interpolate`gs://${bucket.name}/contents`,\n config: {\n dimensions: 2,\n approximateNeighborsCount: 150,\n shardSize: \"SHARD_SIZE_SMALL\",\n distanceMeasureType: \"DOT_PRODUCT_DISTANCE\",\n algorithmConfig: {\n treeAhConfig: {\n leafNodeEmbeddingCount: 500,\n leafNodesToSearchPercent: 7,\n },\n },\n },\n },\n indexUpdateMethod: \"BATCH_UPDATE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"vertex-ai-index-test\",\n location=\"us-central1\",\n uniform_bucket_level_access=True)\n# The sample data comes from the following link:\n# https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\ndata = gcp.storage.BucketObject(\"data\",\n name=\"contents/data.json\",\n bucket=bucket.name,\n content=\"\"\"{\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n{\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n\"\"\")\nindex = gcp.vertex.AiIndex(\"index\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n display_name=\"test-index\",\n description=\"index for test\",\n metadata={\n \"contents_delta_uri\": bucket.name.apply(lambda name: f\"gs://{name}/contents\"),\n \"config\": {\n \"dimensions\": 2,\n \"approximate_neighbors_count\": 150,\n \"shard_size\": \"SHARD_SIZE_SMALL\",\n \"distance_measure_type\": \"DOT_PRODUCT_DISTANCE\",\n \"algorithm_config\": {\n \"tree_ah_config\": {\n \"leaf_node_embedding_count\": 500,\n \"leaf_nodes_to_search_percent\": 7,\n },\n },\n },\n },\n index_update_method=\"BATCH_UPDATE\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = \"vertex-ai-index-test\",\n Location = \"us-central1\",\n UniformBucketLevelAccess = true,\n });\n\n // The sample data comes from the following link:\n // https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n var data = new Gcp.Storage.BucketObject(\"data\", new()\n {\n Name = \"contents/data.json\",\n Bucket = bucket.Name,\n Content = @\"{\"\"id\"\": \"\"42\"\", \"\"embedding\"\": [0.5, 1.0], \"\"restricts\"\": [{\"\"namespace\"\": \"\"class\"\", \"\"allow\"\": [\"\"cat\"\", \"\"pet\"\"]},{\"\"namespace\"\": \"\"category\"\", \"\"allow\"\": [\"\"feline\"\"]}]}\n{\"\"id\"\": \"\"43\"\", \"\"embedding\"\": [0.6, 1.0], \"\"restricts\"\": [{\"\"namespace\"\": \"\"class\"\", \"\"allow\"\": [\"\"dog\"\", \"\"pet\"\"]},{\"\"namespace\"\": \"\"category\"\", \"\"allow\"\": [\"\"canine\"\"]}]}\n\",\n });\n\n var index = new Gcp.Vertex.AiIndex(\"index\", new()\n {\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n DisplayName = \"test-index\",\n Description = \"index for test\",\n Metadata = new Gcp.Vertex.Inputs.AiIndexMetadataArgs\n {\n ContentsDeltaUri = bucket.Name.Apply(name =\u003e $\"gs://{name}/contents\"),\n Config = new Gcp.Vertex.Inputs.AiIndexMetadataConfigArgs\n {\n Dimensions = 2,\n ApproximateNeighborsCount = 150,\n ShardSize = \"SHARD_SIZE_SMALL\",\n DistanceMeasureType = \"DOT_PRODUCT_DISTANCE\",\n AlgorithmConfig = new Gcp.Vertex.Inputs.AiIndexMetadataConfigAlgorithmConfigArgs\n {\n TreeAhConfig = new Gcp.Vertex.Inputs.AiIndexMetadataConfigAlgorithmConfigTreeAhConfigArgs\n {\n LeafNodeEmbeddingCount = 500,\n LeafNodesToSearchPercent = 7,\n },\n },\n },\n },\n IndexUpdateMethod = \"BATCH_UPDATE\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"vertex-ai-index-test\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// The sample data comes from the following link:\n\t\t// https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n\t\t_, err = storage.NewBucketObject(ctx, \"data\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"contents/data.json\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tContent: pulumi.String(\"{\\\"id\\\": \\\"42\\\", \\\"embedding\\\": [0.5, 1.0], \\\"restricts\\\": [{\\\"namespace\\\": \\\"class\\\", \\\"allow\\\": [\\\"cat\\\", \\\"pet\\\"]},{\\\"namespace\\\": \\\"category\\\", \\\"allow\\\": [\\\"feline\\\"]}]}\\n{\\\"id\\\": \\\"43\\\", \\\"embedding\\\": [0.6, 1.0], \\\"restricts\\\": [{\\\"namespace\\\": \\\"class\\\", \\\"allow\\\": [\\\"dog\\\", \\\"pet\\\"]},{\\\"namespace\\\": \\\"category\\\", \\\"allow\\\": [\\\"canine\\\"]}]}\\n\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiIndex(ctx, \"index\", \u0026vertex.AiIndexArgs{\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"test-index\"),\n\t\t\tDescription: pulumi.String(\"index for test\"),\n\t\t\tMetadata: \u0026vertex.AiIndexMetadataArgs{\n\t\t\t\tContentsDeltaUri: bucket.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/contents\", name), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tConfig: \u0026vertex.AiIndexMetadataConfigArgs{\n\t\t\t\t\tDimensions: pulumi.Int(2),\n\t\t\t\t\tApproximateNeighborsCount: pulumi.Int(150),\n\t\t\t\t\tShardSize: pulumi.String(\"SHARD_SIZE_SMALL\"),\n\t\t\t\t\tDistanceMeasureType: pulumi.String(\"DOT_PRODUCT_DISTANCE\"),\n\t\t\t\t\tAlgorithmConfig: \u0026vertex.AiIndexMetadataConfigAlgorithmConfigArgs{\n\t\t\t\t\t\tTreeAhConfig: \u0026vertex.AiIndexMetadataConfigAlgorithmConfigTreeAhConfigArgs{\n\t\t\t\t\t\t\tLeafNodeEmbeddingCount: pulumi.Int(500),\n\t\t\t\t\t\t\tLeafNodesToSearchPercent: pulumi.Int(7),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tIndexUpdateMethod: pulumi.String(\"BATCH_UPDATE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.vertex.AiIndex;\nimport com.pulumi.gcp.vertex.AiIndexArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataConfigAlgorithmConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataConfigAlgorithmConfigTreeAhConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(\"vertex-ai-index-test\")\n .location(\"us-central1\")\n .uniformBucketLevelAccess(true)\n .build());\n\n // The sample data comes from the following link:\n // https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n var data = new BucketObject(\"data\", BucketObjectArgs.builder()\n .name(\"contents/data.json\")\n .bucket(bucket.name())\n .content(\"\"\"\n{\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n{\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n \"\"\")\n .build());\n\n var index = new AiIndex(\"index\", AiIndexArgs.builder()\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .displayName(\"test-index\")\n .description(\"index for test\")\n .metadata(AiIndexMetadataArgs.builder()\n .contentsDeltaUri(bucket.name().applyValue(name -\u003e String.format(\"gs://%s/contents\", name)))\n .config(AiIndexMetadataConfigArgs.builder()\n .dimensions(2)\n .approximateNeighborsCount(150)\n .shardSize(\"SHARD_SIZE_SMALL\")\n .distanceMeasureType(\"DOT_PRODUCT_DISTANCE\")\n .algorithmConfig(AiIndexMetadataConfigAlgorithmConfigArgs.builder()\n .treeAhConfig(AiIndexMetadataConfigAlgorithmConfigTreeAhConfigArgs.builder()\n .leafNodeEmbeddingCount(500)\n .leafNodesToSearchPercent(7)\n .build())\n .build())\n .build())\n .build())\n .indexUpdateMethod(\"BATCH_UPDATE\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: vertex-ai-index-test\n location: us-central1\n uniformBucketLevelAccess: true\n # The sample data comes from the following link:\n # https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n data:\n type: gcp:storage:BucketObject\n properties:\n name: contents/data.json\n bucket: ${bucket.name}\n content: |\n {\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n {\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n index:\n type: gcp:vertex:AiIndex\n properties:\n labels:\n foo: bar\n region: us-central1\n displayName: test-index\n description: index for test\n metadata:\n contentsDeltaUri: gs://${bucket.name}/contents\n config:\n dimensions: 2\n approximateNeighborsCount: 150\n shardSize: SHARD_SIZE_SMALL\n distanceMeasureType: DOT_PRODUCT_DISTANCE\n algorithmConfig:\n treeAhConfig:\n leafNodeEmbeddingCount: 500\n leafNodesToSearchPercent: 7\n indexUpdateMethod: BATCH_UPDATE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Index Streaming\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"vertex-ai-index-test\",\n location: \"us-central1\",\n uniformBucketLevelAccess: true,\n});\n// The sample data comes from the following link:\n// https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\nconst data = new gcp.storage.BucketObject(\"data\", {\n name: \"contents/data.json\",\n bucket: bucket.name,\n content: `{\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n{\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n`,\n});\nconst index = new gcp.vertex.AiIndex(\"index\", {\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n displayName: \"test-index\",\n description: \"index for test\",\n metadata: {\n contentsDeltaUri: pulumi.interpolate`gs://${bucket.name}/contents`,\n config: {\n dimensions: 2,\n shardSize: \"SHARD_SIZE_LARGE\",\n distanceMeasureType: \"COSINE_DISTANCE\",\n featureNormType: \"UNIT_L2_NORM\",\n algorithmConfig: {\n bruteForceConfig: {},\n },\n },\n },\n indexUpdateMethod: \"STREAM_UPDATE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"vertex-ai-index-test\",\n location=\"us-central1\",\n uniform_bucket_level_access=True)\n# The sample data comes from the following link:\n# https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\ndata = gcp.storage.BucketObject(\"data\",\n name=\"contents/data.json\",\n bucket=bucket.name,\n content=\"\"\"{\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n{\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n\"\"\")\nindex = gcp.vertex.AiIndex(\"index\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n display_name=\"test-index\",\n description=\"index for test\",\n metadata={\n \"contents_delta_uri\": bucket.name.apply(lambda name: f\"gs://{name}/contents\"),\n \"config\": {\n \"dimensions\": 2,\n \"shard_size\": \"SHARD_SIZE_LARGE\",\n \"distance_measure_type\": \"COSINE_DISTANCE\",\n \"feature_norm_type\": \"UNIT_L2_NORM\",\n \"algorithm_config\": {\n \"brute_force_config\": {},\n },\n },\n },\n index_update_method=\"STREAM_UPDATE\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = \"vertex-ai-index-test\",\n Location = \"us-central1\",\n UniformBucketLevelAccess = true,\n });\n\n // The sample data comes from the following link:\n // https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n var data = new Gcp.Storage.BucketObject(\"data\", new()\n {\n Name = \"contents/data.json\",\n Bucket = bucket.Name,\n Content = @\"{\"\"id\"\": \"\"42\"\", \"\"embedding\"\": [0.5, 1.0], \"\"restricts\"\": [{\"\"namespace\"\": \"\"class\"\", \"\"allow\"\": [\"\"cat\"\", \"\"pet\"\"]},{\"\"namespace\"\": \"\"category\"\", \"\"allow\"\": [\"\"feline\"\"]}]}\n{\"\"id\"\": \"\"43\"\", \"\"embedding\"\": [0.6, 1.0], \"\"restricts\"\": [{\"\"namespace\"\": \"\"class\"\", \"\"allow\"\": [\"\"dog\"\", \"\"pet\"\"]},{\"\"namespace\"\": \"\"category\"\", \"\"allow\"\": [\"\"canine\"\"]}]}\n\",\n });\n\n var index = new Gcp.Vertex.AiIndex(\"index\", new()\n {\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n DisplayName = \"test-index\",\n Description = \"index for test\",\n Metadata = new Gcp.Vertex.Inputs.AiIndexMetadataArgs\n {\n ContentsDeltaUri = bucket.Name.Apply(name =\u003e $\"gs://{name}/contents\"),\n Config = new Gcp.Vertex.Inputs.AiIndexMetadataConfigArgs\n {\n Dimensions = 2,\n ShardSize = \"SHARD_SIZE_LARGE\",\n DistanceMeasureType = \"COSINE_DISTANCE\",\n FeatureNormType = \"UNIT_L2_NORM\",\n AlgorithmConfig = new Gcp.Vertex.Inputs.AiIndexMetadataConfigAlgorithmConfigArgs\n {\n BruteForceConfig = null,\n },\n },\n },\n IndexUpdateMethod = \"STREAM_UPDATE\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"vertex-ai-index-test\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// The sample data comes from the following link:\n\t\t// https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n\t\t_, err = storage.NewBucketObject(ctx, \"data\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"contents/data.json\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tContent: pulumi.String(\"{\\\"id\\\": \\\"42\\\", \\\"embedding\\\": [0.5, 1.0], \\\"restricts\\\": [{\\\"namespace\\\": \\\"class\\\", \\\"allow\\\": [\\\"cat\\\", \\\"pet\\\"]},{\\\"namespace\\\": \\\"category\\\", \\\"allow\\\": [\\\"feline\\\"]}]}\\n{\\\"id\\\": \\\"43\\\", \\\"embedding\\\": [0.6, 1.0], \\\"restricts\\\": [{\\\"namespace\\\": \\\"class\\\", \\\"allow\\\": [\\\"dog\\\", \\\"pet\\\"]},{\\\"namespace\\\": \\\"category\\\", \\\"allow\\\": [\\\"canine\\\"]}]}\\n\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiIndex(ctx, \"index\", \u0026vertex.AiIndexArgs{\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"test-index\"),\n\t\t\tDescription: pulumi.String(\"index for test\"),\n\t\t\tMetadata: \u0026vertex.AiIndexMetadataArgs{\n\t\t\t\tContentsDeltaUri: bucket.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/contents\", name), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tConfig: \u0026vertex.AiIndexMetadataConfigArgs{\n\t\t\t\t\tDimensions: pulumi.Int(2),\n\t\t\t\t\tShardSize: pulumi.String(\"SHARD_SIZE_LARGE\"),\n\t\t\t\t\tDistanceMeasureType: pulumi.String(\"COSINE_DISTANCE\"),\n\t\t\t\t\tFeatureNormType: pulumi.String(\"UNIT_L2_NORM\"),\n\t\t\t\t\tAlgorithmConfig: \u0026vertex.AiIndexMetadataConfigAlgorithmConfigArgs{\n\t\t\t\t\t\tBruteForceConfig: \u0026vertex.AiIndexMetadataConfigAlgorithmConfigBruteForceConfigArgs{},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tIndexUpdateMethod: pulumi.String(\"STREAM_UPDATE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.vertex.AiIndex;\nimport com.pulumi.gcp.vertex.AiIndexArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataConfigAlgorithmConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataConfigAlgorithmConfigBruteForceConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(\"vertex-ai-index-test\")\n .location(\"us-central1\")\n .uniformBucketLevelAccess(true)\n .build());\n\n // The sample data comes from the following link:\n // https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n var data = new BucketObject(\"data\", BucketObjectArgs.builder()\n .name(\"contents/data.json\")\n .bucket(bucket.name())\n .content(\"\"\"\n{\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n{\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n \"\"\")\n .build());\n\n var index = new AiIndex(\"index\", AiIndexArgs.builder()\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .displayName(\"test-index\")\n .description(\"index for test\")\n .metadata(AiIndexMetadataArgs.builder()\n .contentsDeltaUri(bucket.name().applyValue(name -\u003e String.format(\"gs://%s/contents\", name)))\n .config(AiIndexMetadataConfigArgs.builder()\n .dimensions(2)\n .shardSize(\"SHARD_SIZE_LARGE\")\n .distanceMeasureType(\"COSINE_DISTANCE\")\n .featureNormType(\"UNIT_L2_NORM\")\n .algorithmConfig(AiIndexMetadataConfigAlgorithmConfigArgs.builder()\n .bruteForceConfig()\n .build())\n .build())\n .build())\n .indexUpdateMethod(\"STREAM_UPDATE\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: vertex-ai-index-test\n location: us-central1\n uniformBucketLevelAccess: true\n # The sample data comes from the following link:\n # https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n data:\n type: gcp:storage:BucketObject\n properties:\n name: contents/data.json\n bucket: ${bucket.name}\n content: |\n {\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n {\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n index:\n type: gcp:vertex:AiIndex\n properties:\n labels:\n foo: bar\n region: us-central1\n displayName: test-index\n description: index for test\n metadata:\n contentsDeltaUri: gs://${bucket.name}/contents\n config:\n dimensions: 2\n shardSize: SHARD_SIZE_LARGE\n distanceMeasureType: COSINE_DISTANCE\n featureNormType: UNIT_L2_NORM\n algorithmConfig:\n bruteForceConfig: {}\n indexUpdateMethod: STREAM_UPDATE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIndex can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/indexes/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Index can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vertex/aiIndex:AiIndex default projects/{{project}}/locations/{{region}}/indexes/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiIndex:AiIndex default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiIndex:AiIndex default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiIndex:AiIndex default {{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -257038,7 +257038,7 @@ } }, "gcp:vertex/aiIndexEndpoint:AiIndexEndpoint": { - "description": "An endpoint indexes are deployed into. An index endpoint can have multiple deployed indexes.\n\n\nTo get more information about IndexEndpoint, see:\n\n* [API documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.indexEndpoints/)\n\n## Example Usage\n\n### Vertex Ai Index Endpoint\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst vertexNetwork = new gcp.compute.Network(\"vertex_network\", {name: \"network-name\"});\nconst vertexRange = new gcp.compute.GlobalAddress(\"vertex_range\", {\n name: \"address-name\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 24,\n network: vertexNetwork.id,\n});\nconst vertexVpcConnection = new gcp.servicenetworking.Connection(\"vertex_vpc_connection\", {\n network: vertexNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [vertexRange.name],\n});\nconst project = gcp.organizations.getProject({});\nconst indexEndpoint = new gcp.vertex.AiIndexEndpoint(\"index_endpoint\", {\n displayName: \"sample-endpoint\",\n description: \"A sample vertex endpoint\",\n region: \"us-central1\",\n labels: {\n \"label-one\": \"value-one\",\n },\n network: pulumi.all([project, vertexNetwork.name]).apply(([project, name]) =\u003e `projects/${project.number}/global/networks/${name}`),\n}, {\n dependsOn: [vertexVpcConnection],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nvertex_network = gcp.compute.Network(\"vertex_network\", name=\"network-name\")\nvertex_range = gcp.compute.GlobalAddress(\"vertex_range\",\n name=\"address-name\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=24,\n network=vertex_network.id)\nvertex_vpc_connection = gcp.servicenetworking.Connection(\"vertex_vpc_connection\",\n network=vertex_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[vertex_range.name])\nproject = gcp.organizations.get_project()\nindex_endpoint = gcp.vertex.AiIndexEndpoint(\"index_endpoint\",\n display_name=\"sample-endpoint\",\n description=\"A sample vertex endpoint\",\n region=\"us-central1\",\n labels={\n \"label-one\": \"value-one\",\n },\n network=vertex_network.name.apply(lambda name: f\"projects/{project.number}/global/networks/{name}\"),\n opts = pulumi.ResourceOptions(depends_on=[vertex_vpc_connection]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var vertexNetwork = new Gcp.Compute.Network(\"vertex_network\", new()\n {\n Name = \"network-name\",\n });\n\n var vertexRange = new Gcp.Compute.GlobalAddress(\"vertex_range\", new()\n {\n Name = \"address-name\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 24,\n Network = vertexNetwork.Id,\n });\n\n var vertexVpcConnection = new Gcp.ServiceNetworking.Connection(\"vertex_vpc_connection\", new()\n {\n Network = vertexNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n vertexRange.Name,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var indexEndpoint = new Gcp.Vertex.AiIndexEndpoint(\"index_endpoint\", new()\n {\n DisplayName = \"sample-endpoint\",\n Description = \"A sample vertex endpoint\",\n Region = \"us-central1\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Network = Output.Tuple(project, vertexNetwork.Name).Apply(values =\u003e\n {\n var project = values.Item1;\n var name = values.Item2;\n return $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/global/networks/{name}\";\n }),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vertexVpcConnection,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tvertexNetwork, err := compute.NewNetwork(ctx, \"vertex_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvertexRange, err := compute.NewGlobalAddress(ctx, \"vertex_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"address-name\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(24),\n\t\t\tNetwork: vertexNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvertexVpcConnection, err := servicenetworking.NewConnection(ctx, \"vertex_vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: vertexNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tvertexRange.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiIndexEndpoint(ctx, \"index_endpoint\", \u0026vertex.AiIndexEndpointArgs{\n\t\t\tDisplayName: pulumi.String(\"sample-endpoint\"),\n\t\t\tDescription: pulumi.String(\"A sample vertex endpoint\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tNetwork: vertexNetwork.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/%v/global/networks/%v\", project.Number, name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvertexVpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.vertex.AiIndexEndpoint;\nimport com.pulumi.gcp.vertex.AiIndexEndpointArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var vertexNetwork = new Network(\"vertexNetwork\", NetworkArgs.builder()\n .name(\"network-name\")\n .build());\n\n var vertexRange = new GlobalAddress(\"vertexRange\", GlobalAddressArgs.builder()\n .name(\"address-name\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(24)\n .network(vertexNetwork.id())\n .build());\n\n var vertexVpcConnection = new Connection(\"vertexVpcConnection\", ConnectionArgs.builder()\n .network(vertexNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(vertexRange.name())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var indexEndpoint = new AiIndexEndpoint(\"indexEndpoint\", AiIndexEndpointArgs.builder()\n .displayName(\"sample-endpoint\")\n .description(\"A sample vertex endpoint\")\n .region(\"us-central1\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .network(vertexNetwork.name().applyValue(name -\u003e String.format(\"projects/%s/global/networks/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number()),name)))\n .build(), CustomResourceOptions.builder()\n .dependsOn(vertexVpcConnection)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n indexEndpoint:\n type: gcp:vertex:AiIndexEndpoint\n name: index_endpoint\n properties:\n displayName: sample-endpoint\n description: A sample vertex endpoint\n region: us-central1\n labels:\n label-one: value-one\n network: projects/${project.number}/global/networks/${vertexNetwork.name}\n options:\n dependson:\n - ${vertexVpcConnection}\n vertexVpcConnection:\n type: gcp:servicenetworking:Connection\n name: vertex_vpc_connection\n properties:\n network: ${vertexNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${vertexRange.name}\n vertexRange:\n type: gcp:compute:GlobalAddress\n name: vertex_range\n properties:\n name: address-name\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 24\n network: ${vertexNetwork.id}\n vertexNetwork:\n type: gcp:compute:Network\n name: vertex_network\n properties:\n name: network-name\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Index Endpoint With Psc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst indexEndpoint = new gcp.vertex.AiIndexEndpoint(\"index_endpoint\", {\n displayName: \"sample-endpoint\",\n description: \"A sample vertex endpoint\",\n region: \"us-central1\",\n labels: {\n \"label-one\": \"value-one\",\n },\n privateServiceConnectConfig: {\n enablePrivateServiceConnect: true,\n projectAllowlists: [project.then(project =\u003e project.number)],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nindex_endpoint = gcp.vertex.AiIndexEndpoint(\"index_endpoint\",\n display_name=\"sample-endpoint\",\n description=\"A sample vertex endpoint\",\n region=\"us-central1\",\n labels={\n \"label-one\": \"value-one\",\n },\n private_service_connect_config={\n \"enable_private_service_connect\": True,\n \"project_allowlists\": [project.number],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var indexEndpoint = new Gcp.Vertex.AiIndexEndpoint(\"index_endpoint\", new()\n {\n DisplayName = \"sample-endpoint\",\n Description = \"A sample vertex endpoint\",\n Region = \"us-central1\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n PrivateServiceConnectConfig = new Gcp.Vertex.Inputs.AiIndexEndpointPrivateServiceConnectConfigArgs\n {\n EnablePrivateServiceConnect = true,\n ProjectAllowlists = new[]\n {\n project.Apply(getProjectResult =\u003e getProjectResult.Number),\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiIndexEndpoint(ctx, \"index_endpoint\", \u0026vertex.AiIndexEndpointArgs{\n\t\t\tDisplayName: pulumi.String(\"sample-endpoint\"),\n\t\t\tDescription: pulumi.String(\"A sample vertex endpoint\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tPrivateServiceConnectConfig: \u0026vertex.AiIndexEndpointPrivateServiceConnectConfigArgs{\n\t\t\t\tEnablePrivateServiceConnect: pulumi.Bool(true),\n\t\t\t\tProjectAllowlists: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(project.Number),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.vertex.AiIndexEndpoint;\nimport com.pulumi.gcp.vertex.AiIndexEndpointArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexEndpointPrivateServiceConnectConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var indexEndpoint = new AiIndexEndpoint(\"indexEndpoint\", AiIndexEndpointArgs.builder()\n .displayName(\"sample-endpoint\")\n .description(\"A sample vertex endpoint\")\n .region(\"us-central1\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .privateServiceConnectConfig(AiIndexEndpointPrivateServiceConnectConfigArgs.builder()\n .enablePrivateServiceConnect(true)\n .projectAllowlists(project.applyValue(getProjectResult -\u003e getProjectResult.number()))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n indexEndpoint:\n type: gcp:vertex:AiIndexEndpoint\n name: index_endpoint\n properties:\n displayName: sample-endpoint\n description: A sample vertex endpoint\n region: us-central1\n labels:\n label-one: value-one\n privateServiceConnectConfig:\n enablePrivateServiceConnect: true\n projectAllowlists:\n - ${project.number}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Index Endpoint With Public Endpoint\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst indexEndpoint = new gcp.vertex.AiIndexEndpoint(\"index_endpoint\", {\n displayName: \"sample-endpoint\",\n description: \"A sample vertex endpoint with an public endpoint\",\n region: \"us-central1\",\n labels: {\n \"label-one\": \"value-one\",\n },\n publicEndpointEnabled: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nindex_endpoint = gcp.vertex.AiIndexEndpoint(\"index_endpoint\",\n display_name=\"sample-endpoint\",\n description=\"A sample vertex endpoint with an public endpoint\",\n region=\"us-central1\",\n labels={\n \"label-one\": \"value-one\",\n },\n public_endpoint_enabled=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var indexEndpoint = new Gcp.Vertex.AiIndexEndpoint(\"index_endpoint\", new()\n {\n DisplayName = \"sample-endpoint\",\n Description = \"A sample vertex endpoint with an public endpoint\",\n Region = \"us-central1\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n PublicEndpointEnabled = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vertex.NewAiIndexEndpoint(ctx, \"index_endpoint\", \u0026vertex.AiIndexEndpointArgs{\n\t\t\tDisplayName: pulumi.String(\"sample-endpoint\"),\n\t\t\tDescription: pulumi.String(\"A sample vertex endpoint with an public endpoint\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tPublicEndpointEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.vertex.AiIndexEndpoint;\nimport com.pulumi.gcp.vertex.AiIndexEndpointArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var indexEndpoint = new AiIndexEndpoint(\"indexEndpoint\", AiIndexEndpointArgs.builder()\n .displayName(\"sample-endpoint\")\n .description(\"A sample vertex endpoint with an public endpoint\")\n .region(\"us-central1\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .publicEndpointEnabled(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n indexEndpoint:\n type: gcp:vertex:AiIndexEndpoint\n name: index_endpoint\n properties:\n displayName: sample-endpoint\n description: A sample vertex endpoint with an public endpoint\n region: us-central1\n labels:\n label-one: value-one\n publicEndpointEnabled: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIndexEndpoint can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/indexEndpoints/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, IndexEndpoint can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vertex/aiIndexEndpoint:AiIndexEndpoint default projects/{{project}}/locations/{{region}}/indexEndpoints/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiIndexEndpoint:AiIndexEndpoint default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiIndexEndpoint:AiIndexEndpoint default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiIndexEndpoint:AiIndexEndpoint default {{name}}\n```\n\n", + "description": "An endpoint indexes are deployed into. An index endpoint can have multiple deployed indexes.\n\n\nTo get more information about IndexEndpoint, see:\n\n* [API documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.indexEndpoints/)\n\n## Example Usage\n\n### Vertex Ai Index Endpoint\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst vertexNetwork = new gcp.compute.Network(\"vertex_network\", {name: \"network-name\"});\nconst vertexRange = new gcp.compute.GlobalAddress(\"vertex_range\", {\n name: \"address-name\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 24,\n network: vertexNetwork.id,\n});\nconst vertexVpcConnection = new gcp.servicenetworking.Connection(\"vertex_vpc_connection\", {\n network: vertexNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [vertexRange.name],\n});\nconst project = gcp.organizations.getProject({});\nconst indexEndpoint = new gcp.vertex.AiIndexEndpoint(\"index_endpoint\", {\n displayName: \"sample-endpoint\",\n description: \"A sample vertex endpoint\",\n region: \"us-central1\",\n labels: {\n \"label-one\": \"value-one\",\n },\n network: pulumi.all([project, vertexNetwork.name]).apply(([project, name]) =\u003e `projects/${project.number}/global/networks/${name}`),\n}, {\n dependsOn: [vertexVpcConnection],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nvertex_network = gcp.compute.Network(\"vertex_network\", name=\"network-name\")\nvertex_range = gcp.compute.GlobalAddress(\"vertex_range\",\n name=\"address-name\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=24,\n network=vertex_network.id)\nvertex_vpc_connection = gcp.servicenetworking.Connection(\"vertex_vpc_connection\",\n network=vertex_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[vertex_range.name])\nproject = gcp.organizations.get_project()\nindex_endpoint = gcp.vertex.AiIndexEndpoint(\"index_endpoint\",\n display_name=\"sample-endpoint\",\n description=\"A sample vertex endpoint\",\n region=\"us-central1\",\n labels={\n \"label-one\": \"value-one\",\n },\n network=vertex_network.name.apply(lambda name: f\"projects/{project.number}/global/networks/{name}\"),\n opts = pulumi.ResourceOptions(depends_on=[vertex_vpc_connection]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var vertexNetwork = new Gcp.Compute.Network(\"vertex_network\", new()\n {\n Name = \"network-name\",\n });\n\n var vertexRange = new Gcp.Compute.GlobalAddress(\"vertex_range\", new()\n {\n Name = \"address-name\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 24,\n Network = vertexNetwork.Id,\n });\n\n var vertexVpcConnection = new Gcp.ServiceNetworking.Connection(\"vertex_vpc_connection\", new()\n {\n Network = vertexNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n vertexRange.Name,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var indexEndpoint = new Gcp.Vertex.AiIndexEndpoint(\"index_endpoint\", new()\n {\n DisplayName = \"sample-endpoint\",\n Description = \"A sample vertex endpoint\",\n Region = \"us-central1\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Network = Output.Tuple(project, vertexNetwork.Name).Apply(values =\u003e\n {\n var project = values.Item1;\n var name = values.Item2;\n return $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/global/networks/{name}\";\n }),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vertexVpcConnection,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tvertexNetwork, err := compute.NewNetwork(ctx, \"vertex_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network-name\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvertexRange, err := compute.NewGlobalAddress(ctx, \"vertex_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"address-name\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(24),\n\t\t\tNetwork: vertexNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvertexVpcConnection, err := servicenetworking.NewConnection(ctx, \"vertex_vpc_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: vertexNetwork.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tvertexRange.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiIndexEndpoint(ctx, \"index_endpoint\", \u0026vertex.AiIndexEndpointArgs{\n\t\t\tDisplayName: pulumi.String(\"sample-endpoint\"),\n\t\t\tDescription: pulumi.String(\"A sample vertex endpoint\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tNetwork: vertexNetwork.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/%v/global/networks/%v\", project.Number, name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvertexVpcConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.vertex.AiIndexEndpoint;\nimport com.pulumi.gcp.vertex.AiIndexEndpointArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var vertexNetwork = new Network(\"vertexNetwork\", NetworkArgs.builder()\n .name(\"network-name\")\n .build());\n\n var vertexRange = new GlobalAddress(\"vertexRange\", GlobalAddressArgs.builder()\n .name(\"address-name\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(24)\n .network(vertexNetwork.id())\n .build());\n\n var vertexVpcConnection = new Connection(\"vertexVpcConnection\", ConnectionArgs.builder()\n .network(vertexNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(vertexRange.name())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var indexEndpoint = new AiIndexEndpoint(\"indexEndpoint\", AiIndexEndpointArgs.builder()\n .displayName(\"sample-endpoint\")\n .description(\"A sample vertex endpoint\")\n .region(\"us-central1\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .network(vertexNetwork.name().applyValue(name -\u003e String.format(\"projects/%s/global/networks/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number()),name)))\n .build(), CustomResourceOptions.builder()\n .dependsOn(vertexVpcConnection)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n indexEndpoint:\n type: gcp:vertex:AiIndexEndpoint\n name: index_endpoint\n properties:\n displayName: sample-endpoint\n description: A sample vertex endpoint\n region: us-central1\n labels:\n label-one: value-one\n network: projects/${project.number}/global/networks/${vertexNetwork.name}\n options:\n dependson:\n - ${vertexVpcConnection}\n vertexVpcConnection:\n type: gcp:servicenetworking:Connection\n name: vertex_vpc_connection\n properties:\n network: ${vertexNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${vertexRange.name}\n vertexRange:\n type: gcp:compute:GlobalAddress\n name: vertex_range\n properties:\n name: address-name\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 24\n network: ${vertexNetwork.id}\n vertexNetwork:\n type: gcp:compute:Network\n name: vertex_network\n properties:\n name: network-name\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Index Endpoint With Psc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst indexEndpoint = new gcp.vertex.AiIndexEndpoint(\"index_endpoint\", {\n displayName: \"sample-endpoint\",\n description: \"A sample vertex endpoint\",\n region: \"us-central1\",\n labels: {\n \"label-one\": \"value-one\",\n },\n privateServiceConnectConfig: {\n enablePrivateServiceConnect: true,\n projectAllowlists: [project.then(project =\u003e project.number)],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nindex_endpoint = gcp.vertex.AiIndexEndpoint(\"index_endpoint\",\n display_name=\"sample-endpoint\",\n description=\"A sample vertex endpoint\",\n region=\"us-central1\",\n labels={\n \"label-one\": \"value-one\",\n },\n private_service_connect_config={\n \"enable_private_service_connect\": True,\n \"project_allowlists\": [project.number],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var indexEndpoint = new Gcp.Vertex.AiIndexEndpoint(\"index_endpoint\", new()\n {\n DisplayName = \"sample-endpoint\",\n Description = \"A sample vertex endpoint\",\n Region = \"us-central1\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n PrivateServiceConnectConfig = new Gcp.Vertex.Inputs.AiIndexEndpointPrivateServiceConnectConfigArgs\n {\n EnablePrivateServiceConnect = true,\n ProjectAllowlists = new[]\n {\n project.Apply(getProjectResult =\u003e getProjectResult.Number),\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiIndexEndpoint(ctx, \"index_endpoint\", \u0026vertex.AiIndexEndpointArgs{\n\t\t\tDisplayName: pulumi.String(\"sample-endpoint\"),\n\t\t\tDescription: pulumi.String(\"A sample vertex endpoint\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tPrivateServiceConnectConfig: \u0026vertex.AiIndexEndpointPrivateServiceConnectConfigArgs{\n\t\t\t\tEnablePrivateServiceConnect: pulumi.Bool(true),\n\t\t\t\tProjectAllowlists: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(project.Number),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.vertex.AiIndexEndpoint;\nimport com.pulumi.gcp.vertex.AiIndexEndpointArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexEndpointPrivateServiceConnectConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var indexEndpoint = new AiIndexEndpoint(\"indexEndpoint\", AiIndexEndpointArgs.builder()\n .displayName(\"sample-endpoint\")\n .description(\"A sample vertex endpoint\")\n .region(\"us-central1\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .privateServiceConnectConfig(AiIndexEndpointPrivateServiceConnectConfigArgs.builder()\n .enablePrivateServiceConnect(true)\n .projectAllowlists(project.applyValue(getProjectResult -\u003e getProjectResult.number()))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n indexEndpoint:\n type: gcp:vertex:AiIndexEndpoint\n name: index_endpoint\n properties:\n displayName: sample-endpoint\n description: A sample vertex endpoint\n region: us-central1\n labels:\n label-one: value-one\n privateServiceConnectConfig:\n enablePrivateServiceConnect: true\n projectAllowlists:\n - ${project.number}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Index Endpoint With Public Endpoint\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst indexEndpoint = new gcp.vertex.AiIndexEndpoint(\"index_endpoint\", {\n displayName: \"sample-endpoint\",\n description: \"A sample vertex endpoint with an public endpoint\",\n region: \"us-central1\",\n labels: {\n \"label-one\": \"value-one\",\n },\n publicEndpointEnabled: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nindex_endpoint = gcp.vertex.AiIndexEndpoint(\"index_endpoint\",\n display_name=\"sample-endpoint\",\n description=\"A sample vertex endpoint with an public endpoint\",\n region=\"us-central1\",\n labels={\n \"label-one\": \"value-one\",\n },\n public_endpoint_enabled=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var indexEndpoint = new Gcp.Vertex.AiIndexEndpoint(\"index_endpoint\", new()\n {\n DisplayName = \"sample-endpoint\",\n Description = \"A sample vertex endpoint with an public endpoint\",\n Region = \"us-central1\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n PublicEndpointEnabled = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vertex.NewAiIndexEndpoint(ctx, \"index_endpoint\", \u0026vertex.AiIndexEndpointArgs{\n\t\t\tDisplayName: pulumi.String(\"sample-endpoint\"),\n\t\t\tDescription: pulumi.String(\"A sample vertex endpoint with an public endpoint\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tPublicEndpointEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.vertex.AiIndexEndpoint;\nimport com.pulumi.gcp.vertex.AiIndexEndpointArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var indexEndpoint = new AiIndexEndpoint(\"indexEndpoint\", AiIndexEndpointArgs.builder()\n .displayName(\"sample-endpoint\")\n .description(\"A sample vertex endpoint with an public endpoint\")\n .region(\"us-central1\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .publicEndpointEnabled(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n indexEndpoint:\n type: gcp:vertex:AiIndexEndpoint\n name: index_endpoint\n properties:\n displayName: sample-endpoint\n description: A sample vertex endpoint with an public endpoint\n region: us-central1\n labels:\n label-one: value-one\n publicEndpointEnabled: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIndexEndpoint can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/indexEndpoints/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, IndexEndpoint can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vertex/aiIndexEndpoint:AiIndexEndpoint default projects/{{project}}/locations/{{region}}/indexEndpoints/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiIndexEndpoint:AiIndexEndpoint default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiIndexEndpoint:AiIndexEndpoint default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiIndexEndpoint:AiIndexEndpoint default {{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -257253,7 +257253,7 @@ } }, "gcp:vertex/aiIndexEndpointDeployedIndex:AiIndexEndpointDeployedIndex": { - "description": "An endpoint indexes are deployed into. An index endpoint can have multiple deployed indexes.\n\n\nTo get more information about IndexEndpointDeployedIndex, see:\n\n* [API documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.indexEndpoints#DeployedIndex)\n\n## Example Usage\n\n### Vertex Ai Index Endpoint Deployed Index Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst sa = new gcp.serviceaccount.Account(\"sa\", {accountId: \"vertex-sa\"});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"bucket-name\",\n location: \"us-central1\",\n uniformBucketLevelAccess: true,\n});\nconst index = new gcp.vertex.AiIndex(\"index\", {\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n displayName: \"test-index\",\n description: \"index for test\",\n metadata: {\n contentsDeltaUri: pulumi.interpolate`gs://${bucket.name}/contents`,\n config: {\n dimensions: 2,\n approximateNeighborsCount: 150,\n shardSize: \"SHARD_SIZE_SMALL\",\n distanceMeasureType: \"DOT_PRODUCT_DISTANCE\",\n algorithmConfig: {\n treeAhConfig: {\n leafNodeEmbeddingCount: 500,\n leafNodesToSearchPercent: 7,\n },\n },\n },\n },\n indexUpdateMethod: \"BATCH_UPDATE\",\n});\nconst vertexNetwork = gcp.compute.getNetwork({\n name: \"network-name\",\n});\nconst project = gcp.organizations.getProject({});\nconst vertexIndexEndpointDeployed = new gcp.vertex.AiIndexEndpoint(\"vertex_index_endpoint_deployed\", {\n displayName: \"sample-endpoint\",\n description: \"A sample vertex endpoint\",\n region: \"us-central1\",\n labels: {\n \"label-one\": \"value-one\",\n },\n network: Promise.all([project, vertexNetwork]).then(([project, vertexNetwork]) =\u003e `projects/${project.number}/global/networks/${vertexNetwork.name}`),\n});\nconst basicDeployedIndex = new gcp.vertex.AiIndexEndpointDeployedIndex(\"basic_deployed_index\", {\n indexEndpoint: vertexIndexEndpointDeployed.id,\n index: index.id,\n deployedIndexId: \"deployed_index_id\",\n reservedIpRanges: [\"vertex-ai-range\"],\n enableAccessLogging: false,\n displayName: \"vertex-deployed-index\",\n deployedIndexAuthConfig: {\n authProvider: {\n audiences: [\"123456-my-app\"],\n allowedIssuers: [sa.email],\n },\n },\n}, {\n dependsOn: [\n vertexIndexEndpointDeployed,\n sa,\n ],\n});\n// The sample data comes from the following link:\n// https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\nconst data = new gcp.storage.BucketObject(\"data\", {\n name: \"contents/data.json\",\n bucket: bucket.name,\n content: `{\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n{\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsa = gcp.serviceaccount.Account(\"sa\", account_id=\"vertex-sa\")\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"bucket-name\",\n location=\"us-central1\",\n uniform_bucket_level_access=True)\nindex = gcp.vertex.AiIndex(\"index\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n display_name=\"test-index\",\n description=\"index for test\",\n metadata={\n \"contents_delta_uri\": bucket.name.apply(lambda name: f\"gs://{name}/contents\"),\n \"config\": {\n \"dimensions\": 2,\n \"approximate_neighbors_count\": 150,\n \"shard_size\": \"SHARD_SIZE_SMALL\",\n \"distance_measure_type\": \"DOT_PRODUCT_DISTANCE\",\n \"algorithm_config\": {\n \"tree_ah_config\": {\n \"leaf_node_embedding_count\": 500,\n \"leaf_nodes_to_search_percent\": 7,\n },\n },\n },\n },\n index_update_method=\"BATCH_UPDATE\")\nvertex_network = gcp.compute.get_network(name=\"network-name\")\nproject = gcp.organizations.get_project()\nvertex_index_endpoint_deployed = gcp.vertex.AiIndexEndpoint(\"vertex_index_endpoint_deployed\",\n display_name=\"sample-endpoint\",\n description=\"A sample vertex endpoint\",\n region=\"us-central1\",\n labels={\n \"label-one\": \"value-one\",\n },\n network=f\"projects/{project.number}/global/networks/{vertex_network.name}\")\nbasic_deployed_index = gcp.vertex.AiIndexEndpointDeployedIndex(\"basic_deployed_index\",\n index_endpoint=vertex_index_endpoint_deployed.id,\n index=index.id,\n deployed_index_id=\"deployed_index_id\",\n reserved_ip_ranges=[\"vertex-ai-range\"],\n enable_access_logging=False,\n display_name=\"vertex-deployed-index\",\n deployed_index_auth_config={\n \"auth_provider\": {\n \"audiences\": [\"123456-my-app\"],\n \"allowed_issuers\": [sa.email],\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[\n vertex_index_endpoint_deployed,\n sa,\n ]))\n# The sample data comes from the following link:\n# https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\ndata = gcp.storage.BucketObject(\"data\",\n name=\"contents/data.json\",\n bucket=bucket.name,\n content=\"\"\"{\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n{\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"vertex-sa\",\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = \"bucket-name\",\n Location = \"us-central1\",\n UniformBucketLevelAccess = true,\n });\n\n var index = new Gcp.Vertex.AiIndex(\"index\", new()\n {\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n DisplayName = \"test-index\",\n Description = \"index for test\",\n Metadata = new Gcp.Vertex.Inputs.AiIndexMetadataArgs\n {\n ContentsDeltaUri = bucket.Name.Apply(name =\u003e $\"gs://{name}/contents\"),\n Config = new Gcp.Vertex.Inputs.AiIndexMetadataConfigArgs\n {\n Dimensions = 2,\n ApproximateNeighborsCount = 150,\n ShardSize = \"SHARD_SIZE_SMALL\",\n DistanceMeasureType = \"DOT_PRODUCT_DISTANCE\",\n AlgorithmConfig = new Gcp.Vertex.Inputs.AiIndexMetadataConfigAlgorithmConfigArgs\n {\n TreeAhConfig = new Gcp.Vertex.Inputs.AiIndexMetadataConfigAlgorithmConfigTreeAhConfigArgs\n {\n LeafNodeEmbeddingCount = 500,\n LeafNodesToSearchPercent = 7,\n },\n },\n },\n },\n IndexUpdateMethod = \"BATCH_UPDATE\",\n });\n\n var vertexNetwork = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"network-name\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var vertexIndexEndpointDeployed = new Gcp.Vertex.AiIndexEndpoint(\"vertex_index_endpoint_deployed\", new()\n {\n DisplayName = \"sample-endpoint\",\n Description = \"A sample vertex endpoint\",\n Region = \"us-central1\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Network = Output.Tuple(project, vertexNetwork).Apply(values =\u003e\n {\n var project = values.Item1;\n var vertexNetwork = values.Item2;\n return $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/global/networks/{vertexNetwork.Apply(getNetworkResult =\u003e getNetworkResult.Name)}\";\n }),\n });\n\n var basicDeployedIndex = new Gcp.Vertex.AiIndexEndpointDeployedIndex(\"basic_deployed_index\", new()\n {\n IndexEndpoint = vertexIndexEndpointDeployed.Id,\n Index = index.Id,\n DeployedIndexId = \"deployed_index_id\",\n ReservedIpRanges = new[]\n {\n \"vertex-ai-range\",\n },\n EnableAccessLogging = false,\n DisplayName = \"vertex-deployed-index\",\n DeployedIndexAuthConfig = new Gcp.Vertex.Inputs.AiIndexEndpointDeployedIndexDeployedIndexAuthConfigArgs\n {\n AuthProvider = new Gcp.Vertex.Inputs.AiIndexEndpointDeployedIndexDeployedIndexAuthConfigAuthProviderArgs\n {\n Audiences = new[]\n {\n \"123456-my-app\",\n },\n AllowedIssuers = new[]\n {\n sa.Email,\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vertexIndexEndpointDeployed,\n sa,\n },\n });\n\n // The sample data comes from the following link:\n // https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n var data = new Gcp.Storage.BucketObject(\"data\", new()\n {\n Name = \"contents/data.json\",\n Bucket = bucket.Name,\n Content = @\"{\"\"id\"\": \"\"42\"\", \"\"embedding\"\": [0.5, 1.0], \"\"restricts\"\": [{\"\"namespace\"\": \"\"class\"\", \"\"allow\"\": [\"\"cat\"\", \"\"pet\"\"]},{\"\"namespace\"\": \"\"category\"\", \"\"allow\"\": [\"\"feline\"\"]}]}\n{\"\"id\"\": \"\"43\"\", \"\"embedding\"\": [0.6, 1.0], \"\"restricts\"\": [{\"\"namespace\"\": \"\"class\"\", \"\"allow\"\": [\"\"dog\"\", \"\"pet\"\"]},{\"\"namespace\"\": \"\"category\"\", \"\"allow\"\": [\"\"canine\"\"]}]}\n\",\n });\n\n});\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/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"vertex-sa\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"bucket-name\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tindex, err := vertex.NewAiIndex(ctx, \"index\", \u0026vertex.AiIndexArgs{\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"test-index\"),\n\t\t\tDescription: pulumi.String(\"index for test\"),\n\t\t\tMetadata: \u0026vertex.AiIndexMetadataArgs{\n\t\t\t\tContentsDeltaUri: bucket.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/contents\", name), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tConfig: \u0026vertex.AiIndexMetadataConfigArgs{\n\t\t\t\t\tDimensions: pulumi.Int(2),\n\t\t\t\t\tApproximateNeighborsCount: pulumi.Int(150),\n\t\t\t\t\tShardSize: pulumi.String(\"SHARD_SIZE_SMALL\"),\n\t\t\t\t\tDistanceMeasureType: pulumi.String(\"DOT_PRODUCT_DISTANCE\"),\n\t\t\t\t\tAlgorithmConfig: \u0026vertex.AiIndexMetadataConfigAlgorithmConfigArgs{\n\t\t\t\t\t\tTreeAhConfig: \u0026vertex.AiIndexMetadataConfigAlgorithmConfigTreeAhConfigArgs{\n\t\t\t\t\t\t\tLeafNodeEmbeddingCount: pulumi.Int(500),\n\t\t\t\t\t\t\tLeafNodesToSearchPercent: pulumi.Int(7),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tIndexUpdateMethod: pulumi.String(\"BATCH_UPDATE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvertexNetwork, err := compute.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"network-name\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvertexIndexEndpointDeployed, err := vertex.NewAiIndexEndpoint(ctx, \"vertex_index_endpoint_deployed\", \u0026vertex.AiIndexEndpointArgs{\n\t\t\tDisplayName: pulumi.String(\"sample-endpoint\"),\n\t\t\tDescription: pulumi.String(\"A sample vertex endpoint\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tNetwork: pulumi.Sprintf(\"projects/%v/global/networks/%v\", project.Number, vertexNetwork.Name),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiIndexEndpointDeployedIndex(ctx, \"basic_deployed_index\", \u0026vertex.AiIndexEndpointDeployedIndexArgs{\n\t\t\tIndexEndpoint: vertexIndexEndpointDeployed.ID(),\n\t\t\tIndex: index.ID(),\n\t\t\tDeployedIndexId: pulumi.String(\"deployed_index_id\"),\n\t\t\tReservedIpRanges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"vertex-ai-range\"),\n\t\t\t},\n\t\t\tEnableAccessLogging: pulumi.Bool(false),\n\t\t\tDisplayName: pulumi.String(\"vertex-deployed-index\"),\n\t\t\tDeployedIndexAuthConfig: \u0026vertex.AiIndexEndpointDeployedIndexDeployedIndexAuthConfigArgs{\n\t\t\t\tAuthProvider: \u0026vertex.AiIndexEndpointDeployedIndexDeployedIndexAuthConfigAuthProviderArgs{\n\t\t\t\t\tAudiences: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"123456-my-app\"),\n\t\t\t\t\t},\n\t\t\t\t\tAllowedIssuers: pulumi.StringArray{\n\t\t\t\t\t\tsa.Email,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvertexIndexEndpointDeployed,\n\t\t\tsa,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// The sample data comes from the following link:\n\t\t// https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n\t\t_, err = storage.NewBucketObject(ctx, \"data\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"contents/data.json\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tContent: pulumi.String(\"{\\\"id\\\": \\\"42\\\", \\\"embedding\\\": [0.5, 1.0], \\\"restricts\\\": [{\\\"namespace\\\": \\\"class\\\", \\\"allow\\\": [\\\"cat\\\", \\\"pet\\\"]},{\\\"namespace\\\": \\\"category\\\", \\\"allow\\\": [\\\"feline\\\"]}]}\\n{\\\"id\\\": \\\"43\\\", \\\"embedding\\\": [0.6, 1.0], \\\"restricts\\\": [{\\\"namespace\\\": \\\"class\\\", \\\"allow\\\": [\\\"dog\\\", \\\"pet\\\"]},{\\\"namespace\\\": \\\"category\\\", \\\"allow\\\": [\\\"canine\\\"]}]}\\n\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.vertex.AiIndex;\nimport com.pulumi.gcp.vertex.AiIndexArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataConfigAlgorithmConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataConfigAlgorithmConfigTreeAhConfigArgs;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.vertex.AiIndexEndpoint;\nimport com.pulumi.gcp.vertex.AiIndexEndpointArgs;\nimport com.pulumi.gcp.vertex.AiIndexEndpointDeployedIndex;\nimport com.pulumi.gcp.vertex.AiIndexEndpointDeployedIndexArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexEndpointDeployedIndexDeployedIndexAuthConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexEndpointDeployedIndexDeployedIndexAuthConfigAuthProviderArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"vertex-sa\")\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(\"bucket-name\")\n .location(\"us-central1\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var index = new AiIndex(\"index\", AiIndexArgs.builder()\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .displayName(\"test-index\")\n .description(\"index for test\")\n .metadata(AiIndexMetadataArgs.builder()\n .contentsDeltaUri(bucket.name().applyValue(name -\u003e String.format(\"gs://%s/contents\", name)))\n .config(AiIndexMetadataConfigArgs.builder()\n .dimensions(2)\n .approximateNeighborsCount(150)\n .shardSize(\"SHARD_SIZE_SMALL\")\n .distanceMeasureType(\"DOT_PRODUCT_DISTANCE\")\n .algorithmConfig(AiIndexMetadataConfigAlgorithmConfigArgs.builder()\n .treeAhConfig(AiIndexMetadataConfigAlgorithmConfigTreeAhConfigArgs.builder()\n .leafNodeEmbeddingCount(500)\n .leafNodesToSearchPercent(7)\n .build())\n .build())\n .build())\n .build())\n .indexUpdateMethod(\"BATCH_UPDATE\")\n .build());\n\n final var vertexNetwork = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"network-name\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var vertexIndexEndpointDeployed = new AiIndexEndpoint(\"vertexIndexEndpointDeployed\", AiIndexEndpointArgs.builder()\n .displayName(\"sample-endpoint\")\n .description(\"A sample vertex endpoint\")\n .region(\"us-central1\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .network(String.format(\"projects/%s/global/networks/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number()),vertexNetwork.applyValue(getNetworkResult -\u003e getNetworkResult.name())))\n .build());\n\n var basicDeployedIndex = new AiIndexEndpointDeployedIndex(\"basicDeployedIndex\", AiIndexEndpointDeployedIndexArgs.builder()\n .indexEndpoint(vertexIndexEndpointDeployed.id())\n .index(index.id())\n .deployedIndexId(\"deployed_index_id\")\n .reservedIpRanges(\"vertex-ai-range\")\n .enableAccessLogging(false)\n .displayName(\"vertex-deployed-index\")\n .deployedIndexAuthConfig(AiIndexEndpointDeployedIndexDeployedIndexAuthConfigArgs.builder()\n .authProvider(AiIndexEndpointDeployedIndexDeployedIndexAuthConfigAuthProviderArgs.builder()\n .audiences(\"123456-my-app\")\n .allowedIssuers(sa.email())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n vertexIndexEndpointDeployed,\n sa)\n .build());\n\n // The sample data comes from the following link:\n // https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n var data = new BucketObject(\"data\", BucketObjectArgs.builder()\n .name(\"contents/data.json\")\n .bucket(bucket.name())\n .content(\"\"\"\n{\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n{\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: vertex-sa\n basicDeployedIndex:\n type: gcp:vertex:AiIndexEndpointDeployedIndex\n name: basic_deployed_index\n properties:\n indexEndpoint: ${vertexIndexEndpointDeployed.id}\n index: ${index.id}\n deployedIndexId: deployed_index_id\n reservedIpRanges:\n - vertex-ai-range\n enableAccessLogging: false\n displayName: vertex-deployed-index\n deployedIndexAuthConfig:\n authProvider:\n audiences:\n - 123456-my-app\n allowedIssuers:\n - ${sa.email}\n options:\n dependson:\n - ${vertexIndexEndpointDeployed}\n - ${sa}\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: bucket-name\n location: us-central1\n uniformBucketLevelAccess: true\n # The sample data comes from the following link:\n # https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n data:\n type: gcp:storage:BucketObject\n properties:\n name: contents/data.json\n bucket: ${bucket.name}\n content: |\n {\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n {\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n index:\n type: gcp:vertex:AiIndex\n properties:\n labels:\n foo: bar\n region: us-central1\n displayName: test-index\n description: index for test\n metadata:\n contentsDeltaUri: gs://${bucket.name}/contents\n config:\n dimensions: 2\n approximateNeighborsCount: 150\n shardSize: SHARD_SIZE_SMALL\n distanceMeasureType: DOT_PRODUCT_DISTANCE\n algorithmConfig:\n treeAhConfig:\n leafNodeEmbeddingCount: 500\n leafNodesToSearchPercent: 7\n indexUpdateMethod: BATCH_UPDATE\n vertexIndexEndpointDeployed:\n type: gcp:vertex:AiIndexEndpoint\n name: vertex_index_endpoint_deployed\n properties:\n displayName: sample-endpoint\n description: A sample vertex endpoint\n region: us-central1\n labels:\n label-one: value-one\n network: projects/${project.number}/global/networks/${vertexNetwork.name}\nvariables:\n vertexNetwork:\n fn::invoke:\n Function: gcp:compute:getNetwork\n Arguments:\n name: network-name\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Index Endpoint Deployed Index Basic Two\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst sa = new gcp.serviceaccount.Account(\"sa\", {accountId: \"vertex-sa\"});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"bucket-name\",\n location: \"us-central1\",\n uniformBucketLevelAccess: true,\n});\nconst index = new gcp.vertex.AiIndex(\"index\", {\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n displayName: \"test-index\",\n description: \"index for test\",\n metadata: {\n contentsDeltaUri: pulumi.interpolate`gs://${bucket.name}/contents`,\n config: {\n dimensions: 2,\n approximateNeighborsCount: 150,\n shardSize: \"SHARD_SIZE_SMALL\",\n distanceMeasureType: \"DOT_PRODUCT_DISTANCE\",\n algorithmConfig: {\n treeAhConfig: {\n leafNodeEmbeddingCount: 500,\n leafNodesToSearchPercent: 7,\n },\n },\n },\n },\n indexUpdateMethod: \"BATCH_UPDATE\",\n});\nconst vertexNetwork = gcp.compute.getNetwork({\n name: \"network-name\",\n});\nconst project = gcp.organizations.getProject({});\nconst vertexIndexEndpointDeployed = new gcp.vertex.AiIndexEndpoint(\"vertex_index_endpoint_deployed\", {\n displayName: \"sample-endpoint\",\n description: \"A sample vertex endpoint\",\n region: \"us-central1\",\n labels: {\n \"label-one\": \"value-one\",\n },\n network: Promise.all([project, vertexNetwork]).then(([project, vertexNetwork]) =\u003e `projects/${project.number}/global/networks/${vertexNetwork.name}`),\n});\nconst basicDeployedIndex = new gcp.vertex.AiIndexEndpointDeployedIndex(\"basic_deployed_index\", {\n indexEndpoint: vertexIndexEndpointDeployed.id,\n index: index.id,\n deployedIndexId: \"deployed_index_id\",\n reservedIpRanges: [\"vertex-ai-range\"],\n enableAccessLogging: false,\n displayName: \"vertex-deployed-index\",\n deployedIndexAuthConfig: {\n authProvider: {\n audiences: [\"123456-my-app\"],\n allowedIssuers: [sa.email],\n },\n },\n automaticResources: {\n maxReplicaCount: 4,\n },\n}, {\n dependsOn: [\n vertexIndexEndpointDeployed,\n sa,\n ],\n});\n// The sample data comes from the following link:\n// https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\nconst data = new gcp.storage.BucketObject(\"data\", {\n name: \"contents/data.json\",\n bucket: bucket.name,\n content: `{\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n{\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsa = gcp.serviceaccount.Account(\"sa\", account_id=\"vertex-sa\")\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"bucket-name\",\n location=\"us-central1\",\n uniform_bucket_level_access=True)\nindex = gcp.vertex.AiIndex(\"index\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n display_name=\"test-index\",\n description=\"index for test\",\n metadata={\n \"contents_delta_uri\": bucket.name.apply(lambda name: f\"gs://{name}/contents\"),\n \"config\": {\n \"dimensions\": 2,\n \"approximate_neighbors_count\": 150,\n \"shard_size\": \"SHARD_SIZE_SMALL\",\n \"distance_measure_type\": \"DOT_PRODUCT_DISTANCE\",\n \"algorithm_config\": {\n \"tree_ah_config\": {\n \"leaf_node_embedding_count\": 500,\n \"leaf_nodes_to_search_percent\": 7,\n },\n },\n },\n },\n index_update_method=\"BATCH_UPDATE\")\nvertex_network = gcp.compute.get_network(name=\"network-name\")\nproject = gcp.organizations.get_project()\nvertex_index_endpoint_deployed = gcp.vertex.AiIndexEndpoint(\"vertex_index_endpoint_deployed\",\n display_name=\"sample-endpoint\",\n description=\"A sample vertex endpoint\",\n region=\"us-central1\",\n labels={\n \"label-one\": \"value-one\",\n },\n network=f\"projects/{project.number}/global/networks/{vertex_network.name}\")\nbasic_deployed_index = gcp.vertex.AiIndexEndpointDeployedIndex(\"basic_deployed_index\",\n index_endpoint=vertex_index_endpoint_deployed.id,\n index=index.id,\n deployed_index_id=\"deployed_index_id\",\n reserved_ip_ranges=[\"vertex-ai-range\"],\n enable_access_logging=False,\n display_name=\"vertex-deployed-index\",\n deployed_index_auth_config={\n \"auth_provider\": {\n \"audiences\": [\"123456-my-app\"],\n \"allowed_issuers\": [sa.email],\n },\n },\n automatic_resources={\n \"max_replica_count\": 4,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n vertex_index_endpoint_deployed,\n sa,\n ]))\n# The sample data comes from the following link:\n# https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\ndata = gcp.storage.BucketObject(\"data\",\n name=\"contents/data.json\",\n bucket=bucket.name,\n content=\"\"\"{\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n{\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"vertex-sa\",\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = \"bucket-name\",\n Location = \"us-central1\",\n UniformBucketLevelAccess = true,\n });\n\n var index = new Gcp.Vertex.AiIndex(\"index\", new()\n {\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n DisplayName = \"test-index\",\n Description = \"index for test\",\n Metadata = new Gcp.Vertex.Inputs.AiIndexMetadataArgs\n {\n ContentsDeltaUri = bucket.Name.Apply(name =\u003e $\"gs://{name}/contents\"),\n Config = new Gcp.Vertex.Inputs.AiIndexMetadataConfigArgs\n {\n Dimensions = 2,\n ApproximateNeighborsCount = 150,\n ShardSize = \"SHARD_SIZE_SMALL\",\n DistanceMeasureType = \"DOT_PRODUCT_DISTANCE\",\n AlgorithmConfig = new Gcp.Vertex.Inputs.AiIndexMetadataConfigAlgorithmConfigArgs\n {\n TreeAhConfig = new Gcp.Vertex.Inputs.AiIndexMetadataConfigAlgorithmConfigTreeAhConfigArgs\n {\n LeafNodeEmbeddingCount = 500,\n LeafNodesToSearchPercent = 7,\n },\n },\n },\n },\n IndexUpdateMethod = \"BATCH_UPDATE\",\n });\n\n var vertexNetwork = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"network-name\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var vertexIndexEndpointDeployed = new Gcp.Vertex.AiIndexEndpoint(\"vertex_index_endpoint_deployed\", new()\n {\n DisplayName = \"sample-endpoint\",\n Description = \"A sample vertex endpoint\",\n Region = \"us-central1\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Network = Output.Tuple(project, vertexNetwork).Apply(values =\u003e\n {\n var project = values.Item1;\n var vertexNetwork = values.Item2;\n return $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/global/networks/{vertexNetwork.Apply(getNetworkResult =\u003e getNetworkResult.Name)}\";\n }),\n });\n\n var basicDeployedIndex = new Gcp.Vertex.AiIndexEndpointDeployedIndex(\"basic_deployed_index\", new()\n {\n IndexEndpoint = vertexIndexEndpointDeployed.Id,\n Index = index.Id,\n DeployedIndexId = \"deployed_index_id\",\n ReservedIpRanges = new[]\n {\n \"vertex-ai-range\",\n },\n EnableAccessLogging = false,\n DisplayName = \"vertex-deployed-index\",\n DeployedIndexAuthConfig = new Gcp.Vertex.Inputs.AiIndexEndpointDeployedIndexDeployedIndexAuthConfigArgs\n {\n AuthProvider = new Gcp.Vertex.Inputs.AiIndexEndpointDeployedIndexDeployedIndexAuthConfigAuthProviderArgs\n {\n Audiences = new[]\n {\n \"123456-my-app\",\n },\n AllowedIssuers = new[]\n {\n sa.Email,\n },\n },\n },\n AutomaticResources = new Gcp.Vertex.Inputs.AiIndexEndpointDeployedIndexAutomaticResourcesArgs\n {\n MaxReplicaCount = 4,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vertexIndexEndpointDeployed,\n sa,\n },\n });\n\n // The sample data comes from the following link:\n // https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n var data = new Gcp.Storage.BucketObject(\"data\", new()\n {\n Name = \"contents/data.json\",\n Bucket = bucket.Name,\n Content = @\"{\"\"id\"\": \"\"42\"\", \"\"embedding\"\": [0.5, 1.0], \"\"restricts\"\": [{\"\"namespace\"\": \"\"class\"\", \"\"allow\"\": [\"\"cat\"\", \"\"pet\"\"]},{\"\"namespace\"\": \"\"category\"\", \"\"allow\"\": [\"\"feline\"\"]}]}\n{\"\"id\"\": \"\"43\"\", \"\"embedding\"\": [0.6, 1.0], \"\"restricts\"\": [{\"\"namespace\"\": \"\"class\"\", \"\"allow\"\": [\"\"dog\"\", \"\"pet\"\"]},{\"\"namespace\"\": \"\"category\"\", \"\"allow\"\": [\"\"canine\"\"]}]}\n\",\n });\n\n});\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/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"vertex-sa\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"bucket-name\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tindex, err := vertex.NewAiIndex(ctx, \"index\", \u0026vertex.AiIndexArgs{\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"test-index\"),\n\t\t\tDescription: pulumi.String(\"index for test\"),\n\t\t\tMetadata: \u0026vertex.AiIndexMetadataArgs{\n\t\t\t\tContentsDeltaUri: bucket.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/contents\", name), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tConfig: \u0026vertex.AiIndexMetadataConfigArgs{\n\t\t\t\t\tDimensions: pulumi.Int(2),\n\t\t\t\t\tApproximateNeighborsCount: pulumi.Int(150),\n\t\t\t\t\tShardSize: pulumi.String(\"SHARD_SIZE_SMALL\"),\n\t\t\t\t\tDistanceMeasureType: pulumi.String(\"DOT_PRODUCT_DISTANCE\"),\n\t\t\t\t\tAlgorithmConfig: \u0026vertex.AiIndexMetadataConfigAlgorithmConfigArgs{\n\t\t\t\t\t\tTreeAhConfig: \u0026vertex.AiIndexMetadataConfigAlgorithmConfigTreeAhConfigArgs{\n\t\t\t\t\t\t\tLeafNodeEmbeddingCount: pulumi.Int(500),\n\t\t\t\t\t\t\tLeafNodesToSearchPercent: pulumi.Int(7),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tIndexUpdateMethod: pulumi.String(\"BATCH_UPDATE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvertexNetwork, err := compute.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"network-name\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvertexIndexEndpointDeployed, err := vertex.NewAiIndexEndpoint(ctx, \"vertex_index_endpoint_deployed\", \u0026vertex.AiIndexEndpointArgs{\n\t\t\tDisplayName: pulumi.String(\"sample-endpoint\"),\n\t\t\tDescription: pulumi.String(\"A sample vertex endpoint\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tNetwork: pulumi.Sprintf(\"projects/%v/global/networks/%v\", project.Number, vertexNetwork.Name),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiIndexEndpointDeployedIndex(ctx, \"basic_deployed_index\", \u0026vertex.AiIndexEndpointDeployedIndexArgs{\n\t\t\tIndexEndpoint: vertexIndexEndpointDeployed.ID(),\n\t\t\tIndex: index.ID(),\n\t\t\tDeployedIndexId: pulumi.String(\"deployed_index_id\"),\n\t\t\tReservedIpRanges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"vertex-ai-range\"),\n\t\t\t},\n\t\t\tEnableAccessLogging: pulumi.Bool(false),\n\t\t\tDisplayName: pulumi.String(\"vertex-deployed-index\"),\n\t\t\tDeployedIndexAuthConfig: \u0026vertex.AiIndexEndpointDeployedIndexDeployedIndexAuthConfigArgs{\n\t\t\t\tAuthProvider: \u0026vertex.AiIndexEndpointDeployedIndexDeployedIndexAuthConfigAuthProviderArgs{\n\t\t\t\t\tAudiences: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"123456-my-app\"),\n\t\t\t\t\t},\n\t\t\t\t\tAllowedIssuers: pulumi.StringArray{\n\t\t\t\t\t\tsa.Email,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAutomaticResources: \u0026vertex.AiIndexEndpointDeployedIndexAutomaticResourcesArgs{\n\t\t\t\tMaxReplicaCount: pulumi.Int(4),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvertexIndexEndpointDeployed,\n\t\t\tsa,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// The sample data comes from the following link:\n\t\t// https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n\t\t_, err = storage.NewBucketObject(ctx, \"data\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"contents/data.json\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tContent: pulumi.String(\"{\\\"id\\\": \\\"42\\\", \\\"embedding\\\": [0.5, 1.0], \\\"restricts\\\": [{\\\"namespace\\\": \\\"class\\\", \\\"allow\\\": [\\\"cat\\\", \\\"pet\\\"]},{\\\"namespace\\\": \\\"category\\\", \\\"allow\\\": [\\\"feline\\\"]}]}\\n{\\\"id\\\": \\\"43\\\", \\\"embedding\\\": [0.6, 1.0], \\\"restricts\\\": [{\\\"namespace\\\": \\\"class\\\", \\\"allow\\\": [\\\"dog\\\", \\\"pet\\\"]},{\\\"namespace\\\": \\\"category\\\", \\\"allow\\\": [\\\"canine\\\"]}]}\\n\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.vertex.AiIndex;\nimport com.pulumi.gcp.vertex.AiIndexArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataConfigAlgorithmConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataConfigAlgorithmConfigTreeAhConfigArgs;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.vertex.AiIndexEndpoint;\nimport com.pulumi.gcp.vertex.AiIndexEndpointArgs;\nimport com.pulumi.gcp.vertex.AiIndexEndpointDeployedIndex;\nimport com.pulumi.gcp.vertex.AiIndexEndpointDeployedIndexArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexEndpointDeployedIndexDeployedIndexAuthConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexEndpointDeployedIndexDeployedIndexAuthConfigAuthProviderArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexEndpointDeployedIndexAutomaticResourcesArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"vertex-sa\")\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(\"bucket-name\")\n .location(\"us-central1\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var index = new AiIndex(\"index\", AiIndexArgs.builder()\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .displayName(\"test-index\")\n .description(\"index for test\")\n .metadata(AiIndexMetadataArgs.builder()\n .contentsDeltaUri(bucket.name().applyValue(name -\u003e String.format(\"gs://%s/contents\", name)))\n .config(AiIndexMetadataConfigArgs.builder()\n .dimensions(2)\n .approximateNeighborsCount(150)\n .shardSize(\"SHARD_SIZE_SMALL\")\n .distanceMeasureType(\"DOT_PRODUCT_DISTANCE\")\n .algorithmConfig(AiIndexMetadataConfigAlgorithmConfigArgs.builder()\n .treeAhConfig(AiIndexMetadataConfigAlgorithmConfigTreeAhConfigArgs.builder()\n .leafNodeEmbeddingCount(500)\n .leafNodesToSearchPercent(7)\n .build())\n .build())\n .build())\n .build())\n .indexUpdateMethod(\"BATCH_UPDATE\")\n .build());\n\n final var vertexNetwork = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"network-name\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var vertexIndexEndpointDeployed = new AiIndexEndpoint(\"vertexIndexEndpointDeployed\", AiIndexEndpointArgs.builder()\n .displayName(\"sample-endpoint\")\n .description(\"A sample vertex endpoint\")\n .region(\"us-central1\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .network(String.format(\"projects/%s/global/networks/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number()),vertexNetwork.applyValue(getNetworkResult -\u003e getNetworkResult.name())))\n .build());\n\n var basicDeployedIndex = new AiIndexEndpointDeployedIndex(\"basicDeployedIndex\", AiIndexEndpointDeployedIndexArgs.builder()\n .indexEndpoint(vertexIndexEndpointDeployed.id())\n .index(index.id())\n .deployedIndexId(\"deployed_index_id\")\n .reservedIpRanges(\"vertex-ai-range\")\n .enableAccessLogging(false)\n .displayName(\"vertex-deployed-index\")\n .deployedIndexAuthConfig(AiIndexEndpointDeployedIndexDeployedIndexAuthConfigArgs.builder()\n .authProvider(AiIndexEndpointDeployedIndexDeployedIndexAuthConfigAuthProviderArgs.builder()\n .audiences(\"123456-my-app\")\n .allowedIssuers(sa.email())\n .build())\n .build())\n .automaticResources(AiIndexEndpointDeployedIndexAutomaticResourcesArgs.builder()\n .maxReplicaCount(4)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n vertexIndexEndpointDeployed,\n sa)\n .build());\n\n // The sample data comes from the following link:\n // https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n var data = new BucketObject(\"data\", BucketObjectArgs.builder()\n .name(\"contents/data.json\")\n .bucket(bucket.name())\n .content(\"\"\"\n{\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n{\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: vertex-sa\n basicDeployedIndex:\n type: gcp:vertex:AiIndexEndpointDeployedIndex\n name: basic_deployed_index\n properties:\n indexEndpoint: ${vertexIndexEndpointDeployed.id}\n index: ${index.id}\n deployedIndexId: deployed_index_id\n reservedIpRanges:\n - vertex-ai-range\n enableAccessLogging: false\n displayName: vertex-deployed-index\n deployedIndexAuthConfig:\n authProvider:\n audiences:\n - 123456-my-app\n allowedIssuers:\n - ${sa.email}\n automaticResources:\n maxReplicaCount: 4\n options:\n dependson:\n - ${vertexIndexEndpointDeployed}\n - ${sa}\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: bucket-name\n location: us-central1\n uniformBucketLevelAccess: true\n # The sample data comes from the following link:\n # https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n data:\n type: gcp:storage:BucketObject\n properties:\n name: contents/data.json\n bucket: ${bucket.name}\n content: |\n {\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n {\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n index:\n type: gcp:vertex:AiIndex\n properties:\n labels:\n foo: bar\n region: us-central1\n displayName: test-index\n description: index for test\n metadata:\n contentsDeltaUri: gs://${bucket.name}/contents\n config:\n dimensions: 2\n approximateNeighborsCount: 150\n shardSize: SHARD_SIZE_SMALL\n distanceMeasureType: DOT_PRODUCT_DISTANCE\n algorithmConfig:\n treeAhConfig:\n leafNodeEmbeddingCount: 500\n leafNodesToSearchPercent: 7\n indexUpdateMethod: BATCH_UPDATE\n vertexIndexEndpointDeployed:\n type: gcp:vertex:AiIndexEndpoint\n name: vertex_index_endpoint_deployed\n properties:\n displayName: sample-endpoint\n description: A sample vertex endpoint\n region: us-central1\n labels:\n label-one: value-one\n network: projects/${project.number}/global/networks/${vertexNetwork.name}\nvariables:\n vertexNetwork:\n fn::invoke:\n Function: gcp:compute:getNetwork\n Arguments:\n name: network-name\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIndexEndpointDeployedIndex can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/indexEndpoints/{{index_endpoint}}/deployedIndex/{{deployed_index_id}}`\n\n* `{{project}}/{{region}}/{{index_endpoint}}/{{deployed_index_id}}`\n\n* `{{region}}/{{index_endpoint}}/{{deployed_index_id}}`\n\n* `{{index_endpoint}}/{{deployed_index_id}}`\n\nWhen using the `pulumi import` command, IndexEndpointDeployedIndex can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vertex/aiIndexEndpointDeployedIndex:AiIndexEndpointDeployedIndex default projects/{{project}}/locations/{{region}}/indexEndpoints/{{index_endpoint}}/deployedIndex/{{deployed_index_id}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiIndexEndpointDeployedIndex:AiIndexEndpointDeployedIndex default {{project}}/{{region}}/{{index_endpoint}}/{{deployed_index_id}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiIndexEndpointDeployedIndex:AiIndexEndpointDeployedIndex default {{region}}/{{index_endpoint}}/{{deployed_index_id}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiIndexEndpointDeployedIndex:AiIndexEndpointDeployedIndex default {{index_endpoint}}/{{deployed_index_id}}\n```\n\n", + "description": "An endpoint indexes are deployed into. An index endpoint can have multiple deployed indexes.\n\n\nTo get more information about IndexEndpointDeployedIndex, see:\n\n* [API documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.indexEndpoints#DeployedIndex)\n\n## Example Usage\n\n### Vertex Ai Index Endpoint Deployed Index Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst sa = new gcp.serviceaccount.Account(\"sa\", {accountId: \"vertex-sa\"});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"bucket-name\",\n location: \"us-central1\",\n uniformBucketLevelAccess: true,\n});\nconst index = new gcp.vertex.AiIndex(\"index\", {\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n displayName: \"test-index\",\n description: \"index for test\",\n metadata: {\n contentsDeltaUri: pulumi.interpolate`gs://${bucket.name}/contents`,\n config: {\n dimensions: 2,\n approximateNeighborsCount: 150,\n shardSize: \"SHARD_SIZE_SMALL\",\n distanceMeasureType: \"DOT_PRODUCT_DISTANCE\",\n algorithmConfig: {\n treeAhConfig: {\n leafNodeEmbeddingCount: 500,\n leafNodesToSearchPercent: 7,\n },\n },\n },\n },\n indexUpdateMethod: \"BATCH_UPDATE\",\n});\nconst vertexNetwork = gcp.compute.getNetwork({\n name: \"network-name\",\n});\nconst project = gcp.organizations.getProject({});\nconst vertexIndexEndpointDeployed = new gcp.vertex.AiIndexEndpoint(\"vertex_index_endpoint_deployed\", {\n displayName: \"sample-endpoint\",\n description: \"A sample vertex endpoint\",\n region: \"us-central1\",\n labels: {\n \"label-one\": \"value-one\",\n },\n network: Promise.all([project, vertexNetwork]).then(([project, vertexNetwork]) =\u003e `projects/${project.number}/global/networks/${vertexNetwork.name}`),\n});\nconst basicDeployedIndex = new gcp.vertex.AiIndexEndpointDeployedIndex(\"basic_deployed_index\", {\n indexEndpoint: vertexIndexEndpointDeployed.id,\n index: index.id,\n deployedIndexId: \"deployed_index_id\",\n reservedIpRanges: [\"vertex-ai-range\"],\n enableAccessLogging: false,\n displayName: \"vertex-deployed-index\",\n deployedIndexAuthConfig: {\n authProvider: {\n audiences: [\"123456-my-app\"],\n allowedIssuers: [sa.email],\n },\n },\n}, {\n dependsOn: [\n vertexIndexEndpointDeployed,\n sa,\n ],\n});\n// The sample data comes from the following link:\n// https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\nconst data = new gcp.storage.BucketObject(\"data\", {\n name: \"contents/data.json\",\n bucket: bucket.name,\n content: `{\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n{\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsa = gcp.serviceaccount.Account(\"sa\", account_id=\"vertex-sa\")\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"bucket-name\",\n location=\"us-central1\",\n uniform_bucket_level_access=True)\nindex = gcp.vertex.AiIndex(\"index\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n display_name=\"test-index\",\n description=\"index for test\",\n metadata={\n \"contents_delta_uri\": bucket.name.apply(lambda name: f\"gs://{name}/contents\"),\n \"config\": {\n \"dimensions\": 2,\n \"approximate_neighbors_count\": 150,\n \"shard_size\": \"SHARD_SIZE_SMALL\",\n \"distance_measure_type\": \"DOT_PRODUCT_DISTANCE\",\n \"algorithm_config\": {\n \"tree_ah_config\": {\n \"leaf_node_embedding_count\": 500,\n \"leaf_nodes_to_search_percent\": 7,\n },\n },\n },\n },\n index_update_method=\"BATCH_UPDATE\")\nvertex_network = gcp.compute.get_network(name=\"network-name\")\nproject = gcp.organizations.get_project()\nvertex_index_endpoint_deployed = gcp.vertex.AiIndexEndpoint(\"vertex_index_endpoint_deployed\",\n display_name=\"sample-endpoint\",\n description=\"A sample vertex endpoint\",\n region=\"us-central1\",\n labels={\n \"label-one\": \"value-one\",\n },\n network=f\"projects/{project.number}/global/networks/{vertex_network.name}\")\nbasic_deployed_index = gcp.vertex.AiIndexEndpointDeployedIndex(\"basic_deployed_index\",\n index_endpoint=vertex_index_endpoint_deployed.id,\n index=index.id,\n deployed_index_id=\"deployed_index_id\",\n reserved_ip_ranges=[\"vertex-ai-range\"],\n enable_access_logging=False,\n display_name=\"vertex-deployed-index\",\n deployed_index_auth_config={\n \"auth_provider\": {\n \"audiences\": [\"123456-my-app\"],\n \"allowed_issuers\": [sa.email],\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[\n vertex_index_endpoint_deployed,\n sa,\n ]))\n# The sample data comes from the following link:\n# https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\ndata = gcp.storage.BucketObject(\"data\",\n name=\"contents/data.json\",\n bucket=bucket.name,\n content=\"\"\"{\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n{\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"vertex-sa\",\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = \"bucket-name\",\n Location = \"us-central1\",\n UniformBucketLevelAccess = true,\n });\n\n var index = new Gcp.Vertex.AiIndex(\"index\", new()\n {\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n DisplayName = \"test-index\",\n Description = \"index for test\",\n Metadata = new Gcp.Vertex.Inputs.AiIndexMetadataArgs\n {\n ContentsDeltaUri = bucket.Name.Apply(name =\u003e $\"gs://{name}/contents\"),\n Config = new Gcp.Vertex.Inputs.AiIndexMetadataConfigArgs\n {\n Dimensions = 2,\n ApproximateNeighborsCount = 150,\n ShardSize = \"SHARD_SIZE_SMALL\",\n DistanceMeasureType = \"DOT_PRODUCT_DISTANCE\",\n AlgorithmConfig = new Gcp.Vertex.Inputs.AiIndexMetadataConfigAlgorithmConfigArgs\n {\n TreeAhConfig = new Gcp.Vertex.Inputs.AiIndexMetadataConfigAlgorithmConfigTreeAhConfigArgs\n {\n LeafNodeEmbeddingCount = 500,\n LeafNodesToSearchPercent = 7,\n },\n },\n },\n },\n IndexUpdateMethod = \"BATCH_UPDATE\",\n });\n\n var vertexNetwork = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"network-name\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var vertexIndexEndpointDeployed = new Gcp.Vertex.AiIndexEndpoint(\"vertex_index_endpoint_deployed\", new()\n {\n DisplayName = \"sample-endpoint\",\n Description = \"A sample vertex endpoint\",\n Region = \"us-central1\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Network = Output.Tuple(project, vertexNetwork).Apply(values =\u003e\n {\n var project = values.Item1;\n var vertexNetwork = values.Item2;\n return $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/global/networks/{vertexNetwork.Apply(getNetworkResult =\u003e getNetworkResult.Name)}\";\n }),\n });\n\n var basicDeployedIndex = new Gcp.Vertex.AiIndexEndpointDeployedIndex(\"basic_deployed_index\", new()\n {\n IndexEndpoint = vertexIndexEndpointDeployed.Id,\n Index = index.Id,\n DeployedIndexId = \"deployed_index_id\",\n ReservedIpRanges = new[]\n {\n \"vertex-ai-range\",\n },\n EnableAccessLogging = false,\n DisplayName = \"vertex-deployed-index\",\n DeployedIndexAuthConfig = new Gcp.Vertex.Inputs.AiIndexEndpointDeployedIndexDeployedIndexAuthConfigArgs\n {\n AuthProvider = new Gcp.Vertex.Inputs.AiIndexEndpointDeployedIndexDeployedIndexAuthConfigAuthProviderArgs\n {\n Audiences = new[]\n {\n \"123456-my-app\",\n },\n AllowedIssuers = new[]\n {\n sa.Email,\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vertexIndexEndpointDeployed,\n sa,\n },\n });\n\n // The sample data comes from the following link:\n // https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n var data = new Gcp.Storage.BucketObject(\"data\", new()\n {\n Name = \"contents/data.json\",\n Bucket = bucket.Name,\n Content = @\"{\"\"id\"\": \"\"42\"\", \"\"embedding\"\": [0.5, 1.0], \"\"restricts\"\": [{\"\"namespace\"\": \"\"class\"\", \"\"allow\"\": [\"\"cat\"\", \"\"pet\"\"]},{\"\"namespace\"\": \"\"category\"\", \"\"allow\"\": [\"\"feline\"\"]}]}\n{\"\"id\"\": \"\"43\"\", \"\"embedding\"\": [0.6, 1.0], \"\"restricts\"\": [{\"\"namespace\"\": \"\"class\"\", \"\"allow\"\": [\"\"dog\"\", \"\"pet\"\"]},{\"\"namespace\"\": \"\"category\"\", \"\"allow\"\": [\"\"canine\"\"]}]}\n\",\n });\n\n});\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/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"vertex-sa\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"bucket-name\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tindex, err := vertex.NewAiIndex(ctx, \"index\", \u0026vertex.AiIndexArgs{\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"test-index\"),\n\t\t\tDescription: pulumi.String(\"index for test\"),\n\t\t\tMetadata: \u0026vertex.AiIndexMetadataArgs{\n\t\t\t\tContentsDeltaUri: bucket.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/contents\", name), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tConfig: \u0026vertex.AiIndexMetadataConfigArgs{\n\t\t\t\t\tDimensions: pulumi.Int(2),\n\t\t\t\t\tApproximateNeighborsCount: pulumi.Int(150),\n\t\t\t\t\tShardSize: pulumi.String(\"SHARD_SIZE_SMALL\"),\n\t\t\t\t\tDistanceMeasureType: pulumi.String(\"DOT_PRODUCT_DISTANCE\"),\n\t\t\t\t\tAlgorithmConfig: \u0026vertex.AiIndexMetadataConfigAlgorithmConfigArgs{\n\t\t\t\t\t\tTreeAhConfig: \u0026vertex.AiIndexMetadataConfigAlgorithmConfigTreeAhConfigArgs{\n\t\t\t\t\t\t\tLeafNodeEmbeddingCount: pulumi.Int(500),\n\t\t\t\t\t\t\tLeafNodesToSearchPercent: pulumi.Int(7),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tIndexUpdateMethod: pulumi.String(\"BATCH_UPDATE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvertexNetwork, err := compute.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"network-name\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvertexIndexEndpointDeployed, err := vertex.NewAiIndexEndpoint(ctx, \"vertex_index_endpoint_deployed\", \u0026vertex.AiIndexEndpointArgs{\n\t\t\tDisplayName: pulumi.String(\"sample-endpoint\"),\n\t\t\tDescription: pulumi.String(\"A sample vertex endpoint\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tNetwork: pulumi.Sprintf(\"projects/%v/global/networks/%v\", project.Number, vertexNetwork.Name),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiIndexEndpointDeployedIndex(ctx, \"basic_deployed_index\", \u0026vertex.AiIndexEndpointDeployedIndexArgs{\n\t\t\tIndexEndpoint: vertexIndexEndpointDeployed.ID(),\n\t\t\tIndex: index.ID(),\n\t\t\tDeployedIndexId: pulumi.String(\"deployed_index_id\"),\n\t\t\tReservedIpRanges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"vertex-ai-range\"),\n\t\t\t},\n\t\t\tEnableAccessLogging: pulumi.Bool(false),\n\t\t\tDisplayName: pulumi.String(\"vertex-deployed-index\"),\n\t\t\tDeployedIndexAuthConfig: \u0026vertex.AiIndexEndpointDeployedIndexDeployedIndexAuthConfigArgs{\n\t\t\t\tAuthProvider: \u0026vertex.AiIndexEndpointDeployedIndexDeployedIndexAuthConfigAuthProviderArgs{\n\t\t\t\t\tAudiences: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"123456-my-app\"),\n\t\t\t\t\t},\n\t\t\t\t\tAllowedIssuers: pulumi.StringArray{\n\t\t\t\t\t\tsa.Email,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvertexIndexEndpointDeployed,\n\t\t\tsa,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// The sample data comes from the following link:\n\t\t// https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n\t\t_, err = storage.NewBucketObject(ctx, \"data\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"contents/data.json\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tContent: pulumi.String(\"{\\\"id\\\": \\\"42\\\", \\\"embedding\\\": [0.5, 1.0], \\\"restricts\\\": [{\\\"namespace\\\": \\\"class\\\", \\\"allow\\\": [\\\"cat\\\", \\\"pet\\\"]},{\\\"namespace\\\": \\\"category\\\", \\\"allow\\\": [\\\"feline\\\"]}]}\\n{\\\"id\\\": \\\"43\\\", \\\"embedding\\\": [0.6, 1.0], \\\"restricts\\\": [{\\\"namespace\\\": \\\"class\\\", \\\"allow\\\": [\\\"dog\\\", \\\"pet\\\"]},{\\\"namespace\\\": \\\"category\\\", \\\"allow\\\": [\\\"canine\\\"]}]}\\n\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.vertex.AiIndex;\nimport com.pulumi.gcp.vertex.AiIndexArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataConfigAlgorithmConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataConfigAlgorithmConfigTreeAhConfigArgs;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.vertex.AiIndexEndpoint;\nimport com.pulumi.gcp.vertex.AiIndexEndpointArgs;\nimport com.pulumi.gcp.vertex.AiIndexEndpointDeployedIndex;\nimport com.pulumi.gcp.vertex.AiIndexEndpointDeployedIndexArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexEndpointDeployedIndexDeployedIndexAuthConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexEndpointDeployedIndexDeployedIndexAuthConfigAuthProviderArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"vertex-sa\")\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(\"bucket-name\")\n .location(\"us-central1\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var index = new AiIndex(\"index\", AiIndexArgs.builder()\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .displayName(\"test-index\")\n .description(\"index for test\")\n .metadata(AiIndexMetadataArgs.builder()\n .contentsDeltaUri(bucket.name().applyValue(name -\u003e String.format(\"gs://%s/contents\", name)))\n .config(AiIndexMetadataConfigArgs.builder()\n .dimensions(2)\n .approximateNeighborsCount(150)\n .shardSize(\"SHARD_SIZE_SMALL\")\n .distanceMeasureType(\"DOT_PRODUCT_DISTANCE\")\n .algorithmConfig(AiIndexMetadataConfigAlgorithmConfigArgs.builder()\n .treeAhConfig(AiIndexMetadataConfigAlgorithmConfigTreeAhConfigArgs.builder()\n .leafNodeEmbeddingCount(500)\n .leafNodesToSearchPercent(7)\n .build())\n .build())\n .build())\n .build())\n .indexUpdateMethod(\"BATCH_UPDATE\")\n .build());\n\n final var vertexNetwork = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"network-name\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var vertexIndexEndpointDeployed = new AiIndexEndpoint(\"vertexIndexEndpointDeployed\", AiIndexEndpointArgs.builder()\n .displayName(\"sample-endpoint\")\n .description(\"A sample vertex endpoint\")\n .region(\"us-central1\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .network(String.format(\"projects/%s/global/networks/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number()),vertexNetwork.applyValue(getNetworkResult -\u003e getNetworkResult.name())))\n .build());\n\n var basicDeployedIndex = new AiIndexEndpointDeployedIndex(\"basicDeployedIndex\", AiIndexEndpointDeployedIndexArgs.builder()\n .indexEndpoint(vertexIndexEndpointDeployed.id())\n .index(index.id())\n .deployedIndexId(\"deployed_index_id\")\n .reservedIpRanges(\"vertex-ai-range\")\n .enableAccessLogging(false)\n .displayName(\"vertex-deployed-index\")\n .deployedIndexAuthConfig(AiIndexEndpointDeployedIndexDeployedIndexAuthConfigArgs.builder()\n .authProvider(AiIndexEndpointDeployedIndexDeployedIndexAuthConfigAuthProviderArgs.builder()\n .audiences(\"123456-my-app\")\n .allowedIssuers(sa.email())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n vertexIndexEndpointDeployed,\n sa)\n .build());\n\n // The sample data comes from the following link:\n // https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n var data = new BucketObject(\"data\", BucketObjectArgs.builder()\n .name(\"contents/data.json\")\n .bucket(bucket.name())\n .content(\"\"\"\n{\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n{\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: vertex-sa\n basicDeployedIndex:\n type: gcp:vertex:AiIndexEndpointDeployedIndex\n name: basic_deployed_index\n properties:\n indexEndpoint: ${vertexIndexEndpointDeployed.id}\n index: ${index.id}\n deployedIndexId: deployed_index_id\n reservedIpRanges:\n - vertex-ai-range\n enableAccessLogging: false\n displayName: vertex-deployed-index\n deployedIndexAuthConfig:\n authProvider:\n audiences:\n - 123456-my-app\n allowedIssuers:\n - ${sa.email}\n options:\n dependson:\n - ${vertexIndexEndpointDeployed}\n - ${sa}\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: bucket-name\n location: us-central1\n uniformBucketLevelAccess: true\n # The sample data comes from the following link:\n # https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n data:\n type: gcp:storage:BucketObject\n properties:\n name: contents/data.json\n bucket: ${bucket.name}\n content: |\n {\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n {\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n index:\n type: gcp:vertex:AiIndex\n properties:\n labels:\n foo: bar\n region: us-central1\n displayName: test-index\n description: index for test\n metadata:\n contentsDeltaUri: gs://${bucket.name}/contents\n config:\n dimensions: 2\n approximateNeighborsCount: 150\n shardSize: SHARD_SIZE_SMALL\n distanceMeasureType: DOT_PRODUCT_DISTANCE\n algorithmConfig:\n treeAhConfig:\n leafNodeEmbeddingCount: 500\n leafNodesToSearchPercent: 7\n indexUpdateMethod: BATCH_UPDATE\n vertexIndexEndpointDeployed:\n type: gcp:vertex:AiIndexEndpoint\n name: vertex_index_endpoint_deployed\n properties:\n displayName: sample-endpoint\n description: A sample vertex endpoint\n region: us-central1\n labels:\n label-one: value-one\n network: projects/${project.number}/global/networks/${vertexNetwork.name}\nvariables:\n vertexNetwork:\n fn::invoke:\n Function: gcp:compute:getNetwork\n Arguments:\n name: network-name\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Index Endpoint Deployed Index Basic Two\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst sa = new gcp.serviceaccount.Account(\"sa\", {accountId: \"vertex-sa\"});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"bucket-name\",\n location: \"us-central1\",\n uniformBucketLevelAccess: true,\n});\nconst index = new gcp.vertex.AiIndex(\"index\", {\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n displayName: \"test-index\",\n description: \"index for test\",\n metadata: {\n contentsDeltaUri: pulumi.interpolate`gs://${bucket.name}/contents`,\n config: {\n dimensions: 2,\n approximateNeighborsCount: 150,\n shardSize: \"SHARD_SIZE_SMALL\",\n distanceMeasureType: \"DOT_PRODUCT_DISTANCE\",\n algorithmConfig: {\n treeAhConfig: {\n leafNodeEmbeddingCount: 500,\n leafNodesToSearchPercent: 7,\n },\n },\n },\n },\n indexUpdateMethod: \"BATCH_UPDATE\",\n});\nconst vertexNetwork = gcp.compute.getNetwork({\n name: \"network-name\",\n});\nconst project = gcp.organizations.getProject({});\nconst vertexIndexEndpointDeployed = new gcp.vertex.AiIndexEndpoint(\"vertex_index_endpoint_deployed\", {\n displayName: \"sample-endpoint\",\n description: \"A sample vertex endpoint\",\n region: \"us-central1\",\n labels: {\n \"label-one\": \"value-one\",\n },\n network: Promise.all([project, vertexNetwork]).then(([project, vertexNetwork]) =\u003e `projects/${project.number}/global/networks/${vertexNetwork.name}`),\n});\nconst basicDeployedIndex = new gcp.vertex.AiIndexEndpointDeployedIndex(\"basic_deployed_index\", {\n indexEndpoint: vertexIndexEndpointDeployed.id,\n index: index.id,\n deployedIndexId: \"deployed_index_id\",\n reservedIpRanges: [\"vertex-ai-range\"],\n enableAccessLogging: false,\n displayName: \"vertex-deployed-index\",\n deployedIndexAuthConfig: {\n authProvider: {\n audiences: [\"123456-my-app\"],\n allowedIssuers: [sa.email],\n },\n },\n automaticResources: {\n maxReplicaCount: 4,\n },\n}, {\n dependsOn: [\n vertexIndexEndpointDeployed,\n sa,\n ],\n});\n// The sample data comes from the following link:\n// https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\nconst data = new gcp.storage.BucketObject(\"data\", {\n name: \"contents/data.json\",\n bucket: bucket.name,\n content: `{\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n{\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsa = gcp.serviceaccount.Account(\"sa\", account_id=\"vertex-sa\")\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"bucket-name\",\n location=\"us-central1\",\n uniform_bucket_level_access=True)\nindex = gcp.vertex.AiIndex(\"index\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n display_name=\"test-index\",\n description=\"index for test\",\n metadata={\n \"contents_delta_uri\": bucket.name.apply(lambda name: f\"gs://{name}/contents\"),\n \"config\": {\n \"dimensions\": 2,\n \"approximate_neighbors_count\": 150,\n \"shard_size\": \"SHARD_SIZE_SMALL\",\n \"distance_measure_type\": \"DOT_PRODUCT_DISTANCE\",\n \"algorithm_config\": {\n \"tree_ah_config\": {\n \"leaf_node_embedding_count\": 500,\n \"leaf_nodes_to_search_percent\": 7,\n },\n },\n },\n },\n index_update_method=\"BATCH_UPDATE\")\nvertex_network = gcp.compute.get_network(name=\"network-name\")\nproject = gcp.organizations.get_project()\nvertex_index_endpoint_deployed = gcp.vertex.AiIndexEndpoint(\"vertex_index_endpoint_deployed\",\n display_name=\"sample-endpoint\",\n description=\"A sample vertex endpoint\",\n region=\"us-central1\",\n labels={\n \"label-one\": \"value-one\",\n },\n network=f\"projects/{project.number}/global/networks/{vertex_network.name}\")\nbasic_deployed_index = gcp.vertex.AiIndexEndpointDeployedIndex(\"basic_deployed_index\",\n index_endpoint=vertex_index_endpoint_deployed.id,\n index=index.id,\n deployed_index_id=\"deployed_index_id\",\n reserved_ip_ranges=[\"vertex-ai-range\"],\n enable_access_logging=False,\n display_name=\"vertex-deployed-index\",\n deployed_index_auth_config={\n \"auth_provider\": {\n \"audiences\": [\"123456-my-app\"],\n \"allowed_issuers\": [sa.email],\n },\n },\n automatic_resources={\n \"max_replica_count\": 4,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n vertex_index_endpoint_deployed,\n sa,\n ]))\n# The sample data comes from the following link:\n# https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\ndata = gcp.storage.BucketObject(\"data\",\n name=\"contents/data.json\",\n bucket=bucket.name,\n content=\"\"\"{\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n{\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var sa = new Gcp.ServiceAccount.Account(\"sa\", new()\n {\n AccountId = \"vertex-sa\",\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = \"bucket-name\",\n Location = \"us-central1\",\n UniformBucketLevelAccess = true,\n });\n\n var index = new Gcp.Vertex.AiIndex(\"index\", new()\n {\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n DisplayName = \"test-index\",\n Description = \"index for test\",\n Metadata = new Gcp.Vertex.Inputs.AiIndexMetadataArgs\n {\n ContentsDeltaUri = bucket.Name.Apply(name =\u003e $\"gs://{name}/contents\"),\n Config = new Gcp.Vertex.Inputs.AiIndexMetadataConfigArgs\n {\n Dimensions = 2,\n ApproximateNeighborsCount = 150,\n ShardSize = \"SHARD_SIZE_SMALL\",\n DistanceMeasureType = \"DOT_PRODUCT_DISTANCE\",\n AlgorithmConfig = new Gcp.Vertex.Inputs.AiIndexMetadataConfigAlgorithmConfigArgs\n {\n TreeAhConfig = new Gcp.Vertex.Inputs.AiIndexMetadataConfigAlgorithmConfigTreeAhConfigArgs\n {\n LeafNodeEmbeddingCount = 500,\n LeafNodesToSearchPercent = 7,\n },\n },\n },\n },\n IndexUpdateMethod = \"BATCH_UPDATE\",\n });\n\n var vertexNetwork = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"network-name\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var vertexIndexEndpointDeployed = new Gcp.Vertex.AiIndexEndpoint(\"vertex_index_endpoint_deployed\", new()\n {\n DisplayName = \"sample-endpoint\",\n Description = \"A sample vertex endpoint\",\n Region = \"us-central1\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Network = Output.Tuple(project, vertexNetwork).Apply(values =\u003e\n {\n var project = values.Item1;\n var vertexNetwork = values.Item2;\n return $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/global/networks/{vertexNetwork.Apply(getNetworkResult =\u003e getNetworkResult.Name)}\";\n }),\n });\n\n var basicDeployedIndex = new Gcp.Vertex.AiIndexEndpointDeployedIndex(\"basic_deployed_index\", new()\n {\n IndexEndpoint = vertexIndexEndpointDeployed.Id,\n Index = index.Id,\n DeployedIndexId = \"deployed_index_id\",\n ReservedIpRanges = new[]\n {\n \"vertex-ai-range\",\n },\n EnableAccessLogging = false,\n DisplayName = \"vertex-deployed-index\",\n DeployedIndexAuthConfig = new Gcp.Vertex.Inputs.AiIndexEndpointDeployedIndexDeployedIndexAuthConfigArgs\n {\n AuthProvider = new Gcp.Vertex.Inputs.AiIndexEndpointDeployedIndexDeployedIndexAuthConfigAuthProviderArgs\n {\n Audiences = new[]\n {\n \"123456-my-app\",\n },\n AllowedIssuers = new[]\n {\n sa.Email,\n },\n },\n },\n AutomaticResources = new Gcp.Vertex.Inputs.AiIndexEndpointDeployedIndexAutomaticResourcesArgs\n {\n MaxReplicaCount = 4,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n vertexIndexEndpointDeployed,\n sa,\n },\n });\n\n // The sample data comes from the following link:\n // https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n var data = new Gcp.Storage.BucketObject(\"data\", new()\n {\n Name = \"contents/data.json\",\n Bucket = bucket.Name,\n Content = @\"{\"\"id\"\": \"\"42\"\", \"\"embedding\"\": [0.5, 1.0], \"\"restricts\"\": [{\"\"namespace\"\": \"\"class\"\", \"\"allow\"\": [\"\"cat\"\", \"\"pet\"\"]},{\"\"namespace\"\": \"\"category\"\", \"\"allow\"\": [\"\"feline\"\"]}]}\n{\"\"id\"\": \"\"43\"\", \"\"embedding\"\": [0.6, 1.0], \"\"restricts\"\": [{\"\"namespace\"\": \"\"class\"\", \"\"allow\"\": [\"\"dog\"\", \"\"pet\"\"]},{\"\"namespace\"\": \"\"category\"\", \"\"allow\"\": [\"\"canine\"\"]}]}\n\",\n });\n\n});\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/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsa, err := serviceaccount.NewAccount(ctx, \"sa\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"vertex-sa\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"bucket-name\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tindex, err := vertex.NewAiIndex(ctx, \"index\", \u0026vertex.AiIndexArgs{\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDisplayName: pulumi.String(\"test-index\"),\n\t\t\tDescription: pulumi.String(\"index for test\"),\n\t\t\tMetadata: \u0026vertex.AiIndexMetadataArgs{\n\t\t\t\tContentsDeltaUri: bucket.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/contents\", name), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tConfig: \u0026vertex.AiIndexMetadataConfigArgs{\n\t\t\t\t\tDimensions: pulumi.Int(2),\n\t\t\t\t\tApproximateNeighborsCount: pulumi.Int(150),\n\t\t\t\t\tShardSize: pulumi.String(\"SHARD_SIZE_SMALL\"),\n\t\t\t\t\tDistanceMeasureType: pulumi.String(\"DOT_PRODUCT_DISTANCE\"),\n\t\t\t\t\tAlgorithmConfig: \u0026vertex.AiIndexMetadataConfigAlgorithmConfigArgs{\n\t\t\t\t\t\tTreeAhConfig: \u0026vertex.AiIndexMetadataConfigAlgorithmConfigTreeAhConfigArgs{\n\t\t\t\t\t\t\tLeafNodeEmbeddingCount: pulumi.Int(500),\n\t\t\t\t\t\t\tLeafNodesToSearchPercent: pulumi.Int(7),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tIndexUpdateMethod: pulumi.String(\"BATCH_UPDATE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvertexNetwork, err := compute.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"network-name\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvertexIndexEndpointDeployed, err := vertex.NewAiIndexEndpoint(ctx, \"vertex_index_endpoint_deployed\", \u0026vertex.AiIndexEndpointArgs{\n\t\t\tDisplayName: pulumi.String(\"sample-endpoint\"),\n\t\t\tDescription: pulumi.String(\"A sample vertex endpoint\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tNetwork: pulumi.Sprintf(\"projects/%v/global/networks/%v\", project.Number, vertexNetwork.Name),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiIndexEndpointDeployedIndex(ctx, \"basic_deployed_index\", \u0026vertex.AiIndexEndpointDeployedIndexArgs{\n\t\t\tIndexEndpoint: vertexIndexEndpointDeployed.ID(),\n\t\t\tIndex: index.ID(),\n\t\t\tDeployedIndexId: pulumi.String(\"deployed_index_id\"),\n\t\t\tReservedIpRanges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"vertex-ai-range\"),\n\t\t\t},\n\t\t\tEnableAccessLogging: pulumi.Bool(false),\n\t\t\tDisplayName: pulumi.String(\"vertex-deployed-index\"),\n\t\t\tDeployedIndexAuthConfig: \u0026vertex.AiIndexEndpointDeployedIndexDeployedIndexAuthConfigArgs{\n\t\t\t\tAuthProvider: \u0026vertex.AiIndexEndpointDeployedIndexDeployedIndexAuthConfigAuthProviderArgs{\n\t\t\t\t\tAudiences: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"123456-my-app\"),\n\t\t\t\t\t},\n\t\t\t\t\tAllowedIssuers: pulumi.StringArray{\n\t\t\t\t\t\tsa.Email,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAutomaticResources: \u0026vertex.AiIndexEndpointDeployedIndexAutomaticResourcesArgs{\n\t\t\t\tMaxReplicaCount: pulumi.Int(4),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tvertexIndexEndpointDeployed,\n\t\t\tsa,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// The sample data comes from the following link:\n\t\t// https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n\t\t_, err = storage.NewBucketObject(ctx, \"data\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"contents/data.json\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tContent: pulumi.String(\"{\\\"id\\\": \\\"42\\\", \\\"embedding\\\": [0.5, 1.0], \\\"restricts\\\": [{\\\"namespace\\\": \\\"class\\\", \\\"allow\\\": [\\\"cat\\\", \\\"pet\\\"]},{\\\"namespace\\\": \\\"category\\\", \\\"allow\\\": [\\\"feline\\\"]}]}\\n{\\\"id\\\": \\\"43\\\", \\\"embedding\\\": [0.6, 1.0], \\\"restricts\\\": [{\\\"namespace\\\": \\\"class\\\", \\\"allow\\\": [\\\"dog\\\", \\\"pet\\\"]},{\\\"namespace\\\": \\\"category\\\", \\\"allow\\\": [\\\"canine\\\"]}]}\\n\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.vertex.AiIndex;\nimport com.pulumi.gcp.vertex.AiIndexArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataConfigAlgorithmConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexMetadataConfigAlgorithmConfigTreeAhConfigArgs;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.vertex.AiIndexEndpoint;\nimport com.pulumi.gcp.vertex.AiIndexEndpointArgs;\nimport com.pulumi.gcp.vertex.AiIndexEndpointDeployedIndex;\nimport com.pulumi.gcp.vertex.AiIndexEndpointDeployedIndexArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexEndpointDeployedIndexDeployedIndexAuthConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexEndpointDeployedIndexDeployedIndexAuthConfigAuthProviderArgs;\nimport com.pulumi.gcp.vertex.inputs.AiIndexEndpointDeployedIndexAutomaticResourcesArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var sa = new Account(\"sa\", AccountArgs.builder()\n .accountId(\"vertex-sa\")\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(\"bucket-name\")\n .location(\"us-central1\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var index = new AiIndex(\"index\", AiIndexArgs.builder()\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .displayName(\"test-index\")\n .description(\"index for test\")\n .metadata(AiIndexMetadataArgs.builder()\n .contentsDeltaUri(bucket.name().applyValue(name -\u003e String.format(\"gs://%s/contents\", name)))\n .config(AiIndexMetadataConfigArgs.builder()\n .dimensions(2)\n .approximateNeighborsCount(150)\n .shardSize(\"SHARD_SIZE_SMALL\")\n .distanceMeasureType(\"DOT_PRODUCT_DISTANCE\")\n .algorithmConfig(AiIndexMetadataConfigAlgorithmConfigArgs.builder()\n .treeAhConfig(AiIndexMetadataConfigAlgorithmConfigTreeAhConfigArgs.builder()\n .leafNodeEmbeddingCount(500)\n .leafNodesToSearchPercent(7)\n .build())\n .build())\n .build())\n .build())\n .indexUpdateMethod(\"BATCH_UPDATE\")\n .build());\n\n final var vertexNetwork = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"network-name\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var vertexIndexEndpointDeployed = new AiIndexEndpoint(\"vertexIndexEndpointDeployed\", AiIndexEndpointArgs.builder()\n .displayName(\"sample-endpoint\")\n .description(\"A sample vertex endpoint\")\n .region(\"us-central1\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .network(String.format(\"projects/%s/global/networks/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number()),vertexNetwork.applyValue(getNetworkResult -\u003e getNetworkResult.name())))\n .build());\n\n var basicDeployedIndex = new AiIndexEndpointDeployedIndex(\"basicDeployedIndex\", AiIndexEndpointDeployedIndexArgs.builder()\n .indexEndpoint(vertexIndexEndpointDeployed.id())\n .index(index.id())\n .deployedIndexId(\"deployed_index_id\")\n .reservedIpRanges(\"vertex-ai-range\")\n .enableAccessLogging(false)\n .displayName(\"vertex-deployed-index\")\n .deployedIndexAuthConfig(AiIndexEndpointDeployedIndexDeployedIndexAuthConfigArgs.builder()\n .authProvider(AiIndexEndpointDeployedIndexDeployedIndexAuthConfigAuthProviderArgs.builder()\n .audiences(\"123456-my-app\")\n .allowedIssuers(sa.email())\n .build())\n .build())\n .automaticResources(AiIndexEndpointDeployedIndexAutomaticResourcesArgs.builder()\n .maxReplicaCount(4)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n vertexIndexEndpointDeployed,\n sa)\n .build());\n\n // The sample data comes from the following link:\n // https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n var data = new BucketObject(\"data\", BucketObjectArgs.builder()\n .name(\"contents/data.json\")\n .bucket(bucket.name())\n .content(\"\"\"\n{\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n{\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n \"\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sa:\n type: gcp:serviceaccount:Account\n properties:\n accountId: vertex-sa\n basicDeployedIndex:\n type: gcp:vertex:AiIndexEndpointDeployedIndex\n name: basic_deployed_index\n properties:\n indexEndpoint: ${vertexIndexEndpointDeployed.id}\n index: ${index.id}\n deployedIndexId: deployed_index_id\n reservedIpRanges:\n - vertex-ai-range\n enableAccessLogging: false\n displayName: vertex-deployed-index\n deployedIndexAuthConfig:\n authProvider:\n audiences:\n - 123456-my-app\n allowedIssuers:\n - ${sa.email}\n automaticResources:\n maxReplicaCount: 4\n options:\n dependson:\n - ${vertexIndexEndpointDeployed}\n - ${sa}\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: bucket-name\n location: us-central1\n uniformBucketLevelAccess: true\n # The sample data comes from the following link:\n # https://cloud.google.com/vertex-ai/docs/matching-engine/filtering#specify-namespaces-tokens\n data:\n type: gcp:storage:BucketObject\n properties:\n name: contents/data.json\n bucket: ${bucket.name}\n content: |\n {\"id\": \"42\", \"embedding\": [0.5, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"cat\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"feline\"]}]}\n {\"id\": \"43\", \"embedding\": [0.6, 1.0], \"restricts\": [{\"namespace\": \"class\", \"allow\": [\"dog\", \"pet\"]},{\"namespace\": \"category\", \"allow\": [\"canine\"]}]}\n index:\n type: gcp:vertex:AiIndex\n properties:\n labels:\n foo: bar\n region: us-central1\n displayName: test-index\n description: index for test\n metadata:\n contentsDeltaUri: gs://${bucket.name}/contents\n config:\n dimensions: 2\n approximateNeighborsCount: 150\n shardSize: SHARD_SIZE_SMALL\n distanceMeasureType: DOT_PRODUCT_DISTANCE\n algorithmConfig:\n treeAhConfig:\n leafNodeEmbeddingCount: 500\n leafNodesToSearchPercent: 7\n indexUpdateMethod: BATCH_UPDATE\n vertexIndexEndpointDeployed:\n type: gcp:vertex:AiIndexEndpoint\n name: vertex_index_endpoint_deployed\n properties:\n displayName: sample-endpoint\n description: A sample vertex endpoint\n region: us-central1\n labels:\n label-one: value-one\n network: projects/${project.number}/global/networks/${vertexNetwork.name}\nvariables:\n vertexNetwork:\n fn::invoke:\n Function: gcp:compute:getNetwork\n Arguments:\n name: network-name\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nIndexEndpointDeployedIndex can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/indexEndpoints/{{index_endpoint}}/deployedIndex/{{deployed_index_id}}`\n\n* `{{project}}/{{region}}/{{index_endpoint}}/{{deployed_index_id}}`\n\n* `{{region}}/{{index_endpoint}}/{{deployed_index_id}}`\n\n* `{{index_endpoint}}/{{deployed_index_id}}`\n\nWhen using the `pulumi import` command, IndexEndpointDeployedIndex can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vertex/aiIndexEndpointDeployedIndex:AiIndexEndpointDeployedIndex default projects/{{project}}/locations/{{region}}/indexEndpoints/{{index_endpoint}}/deployedIndex/{{deployed_index_id}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiIndexEndpointDeployedIndex:AiIndexEndpointDeployedIndex default {{project}}/{{region}}/{{index_endpoint}}/{{deployed_index_id}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiIndexEndpointDeployedIndex:AiIndexEndpointDeployedIndex default {{region}}/{{index_endpoint}}/{{deployed_index_id}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiIndexEndpointDeployedIndex:AiIndexEndpointDeployedIndex default {{index_endpoint}}/{{deployed_index_id}}\n```\n\n", "properties": { "automaticResources": { "$ref": "#/types/gcp:vertex/AiIndexEndpointDeployedIndexAutomaticResources:AiIndexEndpointDeployedIndexAutomaticResources", @@ -257585,7 +257585,7 @@ } }, "gcp:vertex/aiTensorboard:AiTensorboard": { - "description": "Tensorboard is a physical database that stores users' training metrics. A default Tensorboard is provided in each region of a GCP project. If needed users can also create extra Tensorboards in their projects.\n\n\nTo get more information about Tensorboard, see:\n\n* [API documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.tensorboards)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/vertex-ai/docs)\n\n## Example Usage\n\n### Vertex Ai Tensorboard\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst tensorboard = new gcp.vertex.AiTensorboard(\"tensorboard\", {\n displayName: \"terraform\",\n description: \"sample description\",\n labels: {\n key1: \"value1\",\n key2: \"value2\",\n },\n region: \"us-central1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntensorboard = gcp.vertex.AiTensorboard(\"tensorboard\",\n display_name=\"terraform\",\n description=\"sample description\",\n labels={\n \"key1\": \"value1\",\n \"key2\": \"value2\",\n },\n region=\"us-central1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var tensorboard = new Gcp.Vertex.AiTensorboard(\"tensorboard\", new()\n {\n DisplayName = \"terraform\",\n Description = \"sample description\",\n Labels = \n {\n { \"key1\", \"value1\" },\n { \"key2\", \"value2\" },\n },\n Region = \"us-central1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vertex.NewAiTensorboard(ctx, \"tensorboard\", \u0026vertex.AiTensorboardArgs{\n\t\t\tDisplayName: pulumi.String(\"terraform\"),\n\t\t\tDescription: pulumi.String(\"sample description\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"key1\": pulumi.String(\"value1\"),\n\t\t\t\t\"key2\": pulumi.String(\"value2\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.vertex.AiTensorboard;\nimport com.pulumi.gcp.vertex.AiTensorboardArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var tensorboard = new AiTensorboard(\"tensorboard\", AiTensorboardArgs.builder()\n .displayName(\"terraform\")\n .description(\"sample description\")\n .labels(Map.ofEntries(\n Map.entry(\"key1\", \"value1\"),\n Map.entry(\"key2\", \"value2\")\n ))\n .region(\"us-central1\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tensorboard:\n type: gcp:vertex:AiTensorboard\n properties:\n displayName: terraform\n description: sample description\n labels:\n key1: value1\n key2: value2\n region: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Tensorboard Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst cryptoKey = new gcp.kms.CryptoKeyIAMMember(\"crypto_key\", {\n cryptoKeyId: \"kms-name\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-aiplatform.iam.gserviceaccount.com`),\n});\nconst tensorboard = new gcp.vertex.AiTensorboard(\"tensorboard\", {\n displayName: \"terraform\",\n description: \"sample description\",\n labels: {\n key1: \"value1\",\n key2: \"value2\",\n },\n region: \"us-central1\",\n encryptionSpec: {\n kmsKeyName: \"kms-name\",\n },\n}, {\n dependsOn: [cryptoKey],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ncrypto_key = gcp.kms.CryptoKeyIAMMember(\"crypto_key\",\n crypto_key_id=\"kms-name\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-aiplatform.iam.gserviceaccount.com\")\ntensorboard = gcp.vertex.AiTensorboard(\"tensorboard\",\n display_name=\"terraform\",\n description=\"sample description\",\n labels={\n \"key1\": \"value1\",\n \"key2\": \"value2\",\n },\n region=\"us-central1\",\n encryption_spec={\n \"kms_key_name\": \"kms-name\",\n },\n opts = pulumi.ResourceOptions(depends_on=[crypto_key]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cryptoKey = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key\", new()\n {\n CryptoKeyId = \"kms-name\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-aiplatform.iam.gserviceaccount.com\",\n });\n\n var tensorboard = new Gcp.Vertex.AiTensorboard(\"tensorboard\", new()\n {\n DisplayName = \"terraform\",\n Description = \"sample description\",\n Labels = \n {\n { \"key1\", \"value1\" },\n { \"key2\", \"value2\" },\n },\n Region = \"us-central1\",\n EncryptionSpec = new Gcp.Vertex.Inputs.AiTensorboardEncryptionSpecArgs\n {\n KmsKeyName = \"kms-name\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cryptoKey,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKey, err := kms.NewCryptoKeyIAMMember(ctx, \"crypto_key\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"kms-name\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-aiplatform.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiTensorboard(ctx, \"tensorboard\", \u0026vertex.AiTensorboardArgs{\n\t\t\tDisplayName: pulumi.String(\"terraform\"),\n\t\t\tDescription: pulumi.String(\"sample description\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"key1\": pulumi.String(\"value1\"),\n\t\t\t\t\"key2\": pulumi.String(\"value2\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tEncryptionSpec: \u0026vertex.AiTensorboardEncryptionSpecArgs{\n\t\t\t\tKmsKeyName: pulumi.String(\"kms-name\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcryptoKey,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.vertex.AiTensorboard;\nimport com.pulumi.gcp.vertex.AiTensorboardArgs;\nimport com.pulumi.gcp.vertex.inputs.AiTensorboardEncryptionSpecArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var cryptoKey = new CryptoKeyIAMMember(\"cryptoKey\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(\"kms-name\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-aiplatform.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var tensorboard = new AiTensorboard(\"tensorboard\", AiTensorboardArgs.builder()\n .displayName(\"terraform\")\n .description(\"sample description\")\n .labels(Map.ofEntries(\n Map.entry(\"key1\", \"value1\"),\n Map.entry(\"key2\", \"value2\")\n ))\n .region(\"us-central1\")\n .encryptionSpec(AiTensorboardEncryptionSpecArgs.builder()\n .kmsKeyName(\"kms-name\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(cryptoKey)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tensorboard:\n type: gcp:vertex:AiTensorboard\n properties:\n displayName: terraform\n description: sample description\n labels:\n key1: value1\n key2: value2\n region: us-central1\n encryptionSpec:\n kmsKeyName: kms-name\n options:\n dependson:\n - ${cryptoKey}\n cryptoKey:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key\n properties:\n cryptoKeyId: kms-name\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-aiplatform.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTensorboard can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/tensorboards/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Tensorboard can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vertex/aiTensorboard:AiTensorboard default projects/{{project}}/locations/{{region}}/tensorboards/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiTensorboard:AiTensorboard default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiTensorboard:AiTensorboard default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiTensorboard:AiTensorboard default {{name}}\n```\n\n", + "description": "Tensorboard is a physical database that stores users' training metrics. A default Tensorboard is provided in each region of a GCP project. If needed users can also create extra Tensorboards in their projects.\n\n\nTo get more information about Tensorboard, see:\n\n* [API documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.tensorboards)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/vertex-ai/docs)\n\n## Example Usage\n\n### Vertex Ai Tensorboard\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst tensorboard = new gcp.vertex.AiTensorboard(\"tensorboard\", {\n displayName: \"terraform\",\n description: \"sample description\",\n labels: {\n key1: \"value1\",\n key2: \"value2\",\n },\n region: \"us-central1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntensorboard = gcp.vertex.AiTensorboard(\"tensorboard\",\n display_name=\"terraform\",\n description=\"sample description\",\n labels={\n \"key1\": \"value1\",\n \"key2\": \"value2\",\n },\n region=\"us-central1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var tensorboard = new Gcp.Vertex.AiTensorboard(\"tensorboard\", new()\n {\n DisplayName = \"terraform\",\n Description = \"sample description\",\n Labels = \n {\n { \"key1\", \"value1\" },\n { \"key2\", \"value2\" },\n },\n Region = \"us-central1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vertex.NewAiTensorboard(ctx, \"tensorboard\", \u0026vertex.AiTensorboardArgs{\n\t\t\tDisplayName: pulumi.String(\"terraform\"),\n\t\t\tDescription: pulumi.String(\"sample description\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"key1\": pulumi.String(\"value1\"),\n\t\t\t\t\"key2\": pulumi.String(\"value2\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.vertex.AiTensorboard;\nimport com.pulumi.gcp.vertex.AiTensorboardArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var tensorboard = new AiTensorboard(\"tensorboard\", AiTensorboardArgs.builder()\n .displayName(\"terraform\")\n .description(\"sample description\")\n .labels(Map.ofEntries(\n Map.entry(\"key1\", \"value1\"),\n Map.entry(\"key2\", \"value2\")\n ))\n .region(\"us-central1\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tensorboard:\n type: gcp:vertex:AiTensorboard\n properties:\n displayName: terraform\n description: sample description\n labels:\n key1: value1\n key2: value2\n region: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Tensorboard Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst cryptoKey = new gcp.kms.CryptoKeyIAMMember(\"crypto_key\", {\n cryptoKeyId: \"kms-name\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-aiplatform.iam.gserviceaccount.com`),\n});\nconst tensorboard = new gcp.vertex.AiTensorboard(\"tensorboard\", {\n displayName: \"terraform\",\n description: \"sample description\",\n labels: {\n key1: \"value1\",\n key2: \"value2\",\n },\n region: \"us-central1\",\n encryptionSpec: {\n kmsKeyName: \"kms-name\",\n },\n}, {\n dependsOn: [cryptoKey],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ncrypto_key = gcp.kms.CryptoKeyIAMMember(\"crypto_key\",\n crypto_key_id=\"kms-name\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-aiplatform.iam.gserviceaccount.com\")\ntensorboard = gcp.vertex.AiTensorboard(\"tensorboard\",\n display_name=\"terraform\",\n description=\"sample description\",\n labels={\n \"key1\": \"value1\",\n \"key2\": \"value2\",\n },\n region=\"us-central1\",\n encryption_spec={\n \"kms_key_name\": \"kms-name\",\n },\n opts = pulumi.ResourceOptions(depends_on=[crypto_key]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cryptoKey = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key\", new()\n {\n CryptoKeyId = \"kms-name\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-aiplatform.iam.gserviceaccount.com\",\n });\n\n var tensorboard = new Gcp.Vertex.AiTensorboard(\"tensorboard\", new()\n {\n DisplayName = \"terraform\",\n Description = \"sample description\",\n Labels = \n {\n { \"key1\", \"value1\" },\n { \"key2\", \"value2\" },\n },\n Region = \"us-central1\",\n EncryptionSpec = new Gcp.Vertex.Inputs.AiTensorboardEncryptionSpecArgs\n {\n KmsKeyName = \"kms-name\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cryptoKey,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKey, err := kms.NewCryptoKeyIAMMember(ctx, \"crypto_key\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"kms-name\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-aiplatform.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiTensorboard(ctx, \"tensorboard\", \u0026vertex.AiTensorboardArgs{\n\t\t\tDisplayName: pulumi.String(\"terraform\"),\n\t\t\tDescription: pulumi.String(\"sample description\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"key1\": pulumi.String(\"value1\"),\n\t\t\t\t\"key2\": pulumi.String(\"value2\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tEncryptionSpec: \u0026vertex.AiTensorboardEncryptionSpecArgs{\n\t\t\t\tKmsKeyName: pulumi.String(\"kms-name\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcryptoKey,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.vertex.AiTensorboard;\nimport com.pulumi.gcp.vertex.AiTensorboardArgs;\nimport com.pulumi.gcp.vertex.inputs.AiTensorboardEncryptionSpecArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var cryptoKey = new CryptoKeyIAMMember(\"cryptoKey\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(\"kms-name\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-aiplatform.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var tensorboard = new AiTensorboard(\"tensorboard\", AiTensorboardArgs.builder()\n .displayName(\"terraform\")\n .description(\"sample description\")\n .labels(Map.ofEntries(\n Map.entry(\"key1\", \"value1\"),\n Map.entry(\"key2\", \"value2\")\n ))\n .region(\"us-central1\")\n .encryptionSpec(AiTensorboardEncryptionSpecArgs.builder()\n .kmsKeyName(\"kms-name\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(cryptoKey)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tensorboard:\n type: gcp:vertex:AiTensorboard\n properties:\n displayName: terraform\n description: sample description\n labels:\n key1: value1\n key2: value2\n region: us-central1\n encryptionSpec:\n kmsKeyName: kms-name\n options:\n dependson:\n - ${cryptoKey}\n cryptoKey:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key\n properties:\n cryptoKeyId: kms-name\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-aiplatform.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTensorboard can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/tensorboards/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Tensorboard can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vertex/aiTensorboard:AiTensorboard default projects/{{project}}/locations/{{region}}/tensorboards/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiTensorboard:AiTensorboard default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiTensorboard:AiTensorboard default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiTensorboard:AiTensorboard default {{name}}\n```\n\n", "properties": { "blobStoragePathPrefix": { "type": "string", @@ -260340,7 +260340,7 @@ } }, "gcp:workstations/workstationCluster:WorkstationCluster": { - "description": "## Example Usage\n\n### Workstation Cluster Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultNetwork = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: defaultNetwork.name,\n});\nconst _default = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: defaultNetwork.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_network = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default_network.name)\ndefault = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default_network.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\nproject = gcp.organizations.get_project()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultNetwork = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = defaultNetwork.Name,\n });\n\n var @default = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = defaultNetwork.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/workstations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdefaultNetwork, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: defaultNetwork.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultNetwork = new Network(\"defaultNetwork\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(defaultNetwork.name())\n .build());\n\n var default_ = new WorkstationCluster(\"default\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(defaultNetwork.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:workstations:WorkstationCluster\n properties:\n workstationClusterId: workstation-cluster\n network: ${defaultNetwork.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${defaultNetwork.name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Cluster Private\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultNetwork = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster-private\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster-private\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: defaultNetwork.name,\n});\nconst _default = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster-private\",\n network: defaultNetwork.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n privateClusterConfig: {\n enablePrivateEndpoint: true,\n },\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_network = gcp.compute.Network(\"default\",\n name=\"workstation-cluster-private\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster-private\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default_network.name)\ndefault = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster-private\",\n network=default_network.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n private_cluster_config={\n \"enable_private_endpoint\": True,\n },\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\nproject = gcp.organizations.get_project()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultNetwork = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster-private\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster-private\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = defaultNetwork.Name,\n });\n\n var @default = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster-private\",\n Network = defaultNetwork.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n PrivateClusterConfig = new Gcp.Workstations.Inputs.WorkstationClusterPrivateClusterConfigArgs\n {\n EnablePrivateEndpoint = true,\n },\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/workstations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdefaultNetwork, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster-private\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster-private\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: defaultNetwork.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster-private\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPrivateClusterConfig: \u0026workstations.WorkstationClusterPrivateClusterConfigArgs{\n\t\t\t\tEnablePrivateEndpoint: pulumi.Bool(true),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationClusterPrivateClusterConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultNetwork = new Network(\"defaultNetwork\", NetworkArgs.builder()\n .name(\"workstation-cluster-private\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster-private\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(defaultNetwork.name())\n .build());\n\n var default_ = new WorkstationCluster(\"default\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster-private\")\n .network(defaultNetwork.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .privateClusterConfig(WorkstationClusterPrivateClusterConfigArgs.builder()\n .enablePrivateEndpoint(true)\n .build())\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:workstations:WorkstationCluster\n properties:\n workstationClusterId: workstation-cluster-private\n network: ${defaultNetwork.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n privateClusterConfig:\n enablePrivateEndpoint: true\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: workstation-cluster-private\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster-private\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${defaultNetwork.name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Cluster Custom Domain\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultNetwork = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster-custom-domain\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster-custom-domain\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: defaultNetwork.name,\n});\nconst _default = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster-custom-domain\",\n network: defaultNetwork.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n privateClusterConfig: {\n enablePrivateEndpoint: true,\n },\n domainConfig: {\n domain: \"workstations.example.com\",\n },\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_network = gcp.compute.Network(\"default\",\n name=\"workstation-cluster-custom-domain\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster-custom-domain\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default_network.name)\ndefault = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster-custom-domain\",\n network=default_network.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n private_cluster_config={\n \"enable_private_endpoint\": True,\n },\n domain_config={\n \"domain\": \"workstations.example.com\",\n },\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\nproject = gcp.organizations.get_project()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultNetwork = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster-custom-domain\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster-custom-domain\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = defaultNetwork.Name,\n });\n\n var @default = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster-custom-domain\",\n Network = defaultNetwork.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n PrivateClusterConfig = new Gcp.Workstations.Inputs.WorkstationClusterPrivateClusterConfigArgs\n {\n EnablePrivateEndpoint = true,\n },\n DomainConfig = new Gcp.Workstations.Inputs.WorkstationClusterDomainConfigArgs\n {\n Domain = \"workstations.example.com\",\n },\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/workstations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdefaultNetwork, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster-custom-domain\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster-custom-domain\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: defaultNetwork.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster-custom-domain\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPrivateClusterConfig: \u0026workstations.WorkstationClusterPrivateClusterConfigArgs{\n\t\t\t\tEnablePrivateEndpoint: pulumi.Bool(true),\n\t\t\t},\n\t\t\tDomainConfig: \u0026workstations.WorkstationClusterDomainConfigArgs{\n\t\t\t\tDomain: pulumi.String(\"workstations.example.com\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationClusterPrivateClusterConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationClusterDomainConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultNetwork = new Network(\"defaultNetwork\", NetworkArgs.builder()\n .name(\"workstation-cluster-custom-domain\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster-custom-domain\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(defaultNetwork.name())\n .build());\n\n var default_ = new WorkstationCluster(\"default\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster-custom-domain\")\n .network(defaultNetwork.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .privateClusterConfig(WorkstationClusterPrivateClusterConfigArgs.builder()\n .enablePrivateEndpoint(true)\n .build())\n .domainConfig(WorkstationClusterDomainConfigArgs.builder()\n .domain(\"workstations.example.com\")\n .build())\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:workstations:WorkstationCluster\n properties:\n workstationClusterId: workstation-cluster-custom-domain\n network: ${defaultNetwork.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n privateClusterConfig:\n enablePrivateEndpoint: true\n domainConfig:\n domain: workstations.example.com\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: workstation-cluster-custom-domain\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster-custom-domain\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${defaultNetwork.name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nWorkstationCluster can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/workstationClusters/{{workstation_cluster_id}}`\n\n* `{{project}}/{{location}}/{{workstation_cluster_id}}`\n\n* `{{location}}/{{workstation_cluster_id}}`\n\nWhen using the `pulumi import` command, WorkstationCluster can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:workstations/workstationCluster:WorkstationCluster default projects/{{project}}/locations/{{location}}/workstationClusters/{{workstation_cluster_id}}\n```\n\n```sh\n$ pulumi import gcp:workstations/workstationCluster:WorkstationCluster default {{project}}/{{location}}/{{workstation_cluster_id}}\n```\n\n```sh\n$ pulumi import gcp:workstations/workstationCluster:WorkstationCluster default {{location}}/{{workstation_cluster_id}}\n```\n\n", + "description": "## Example Usage\n\n### Workstation Cluster Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultNetwork = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: defaultNetwork.name,\n});\nconst _default = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: defaultNetwork.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_network = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default_network.name)\ndefault = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default_network.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\nproject = gcp.organizations.get_project()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultNetwork = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = defaultNetwork.Name,\n });\n\n var @default = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = defaultNetwork.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/workstations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdefaultNetwork, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: defaultNetwork.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultNetwork = new Network(\"defaultNetwork\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(defaultNetwork.name())\n .build());\n\n var default_ = new WorkstationCluster(\"default\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(defaultNetwork.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:workstations:WorkstationCluster\n properties:\n workstationClusterId: workstation-cluster\n network: ${defaultNetwork.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${defaultNetwork.name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Cluster Private\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultNetwork = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster-private\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster-private\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: defaultNetwork.name,\n});\nconst _default = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster-private\",\n network: defaultNetwork.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n privateClusterConfig: {\n enablePrivateEndpoint: true,\n },\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_network = gcp.compute.Network(\"default\",\n name=\"workstation-cluster-private\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster-private\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default_network.name)\ndefault = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster-private\",\n network=default_network.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n private_cluster_config={\n \"enable_private_endpoint\": True,\n },\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\nproject = gcp.organizations.get_project()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultNetwork = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster-private\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster-private\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = defaultNetwork.Name,\n });\n\n var @default = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster-private\",\n Network = defaultNetwork.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n PrivateClusterConfig = new Gcp.Workstations.Inputs.WorkstationClusterPrivateClusterConfigArgs\n {\n EnablePrivateEndpoint = true,\n },\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/workstations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdefaultNetwork, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster-private\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster-private\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: defaultNetwork.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster-private\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPrivateClusterConfig: \u0026workstations.WorkstationClusterPrivateClusterConfigArgs{\n\t\t\t\tEnablePrivateEndpoint: pulumi.Bool(true),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationClusterPrivateClusterConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultNetwork = new Network(\"defaultNetwork\", NetworkArgs.builder()\n .name(\"workstation-cluster-private\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster-private\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(defaultNetwork.name())\n .build());\n\n var default_ = new WorkstationCluster(\"default\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster-private\")\n .network(defaultNetwork.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .privateClusterConfig(WorkstationClusterPrivateClusterConfigArgs.builder()\n .enablePrivateEndpoint(true)\n .build())\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:workstations:WorkstationCluster\n properties:\n workstationClusterId: workstation-cluster-private\n network: ${defaultNetwork.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n privateClusterConfig:\n enablePrivateEndpoint: true\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: workstation-cluster-private\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster-private\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${defaultNetwork.name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Cluster Custom Domain\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultNetwork = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster-custom-domain\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster-custom-domain\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: defaultNetwork.name,\n});\nconst _default = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster-custom-domain\",\n network: defaultNetwork.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n privateClusterConfig: {\n enablePrivateEndpoint: true,\n },\n domainConfig: {\n domain: \"workstations.example.com\",\n },\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_network = gcp.compute.Network(\"default\",\n name=\"workstation-cluster-custom-domain\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster-custom-domain\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default_network.name)\ndefault = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster-custom-domain\",\n network=default_network.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n private_cluster_config={\n \"enable_private_endpoint\": True,\n },\n domain_config={\n \"domain\": \"workstations.example.com\",\n },\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\nproject = gcp.organizations.get_project()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultNetwork = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster-custom-domain\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster-custom-domain\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = defaultNetwork.Name,\n });\n\n var @default = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster-custom-domain\",\n Network = defaultNetwork.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n PrivateClusterConfig = new Gcp.Workstations.Inputs.WorkstationClusterPrivateClusterConfigArgs\n {\n EnablePrivateEndpoint = true,\n },\n DomainConfig = new Gcp.Workstations.Inputs.WorkstationClusterDomainConfigArgs\n {\n Domain = \"workstations.example.com\",\n },\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/workstations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdefaultNetwork, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster-custom-domain\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster-custom-domain\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: defaultNetwork.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster-custom-domain\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPrivateClusterConfig: \u0026workstations.WorkstationClusterPrivateClusterConfigArgs{\n\t\t\t\tEnablePrivateEndpoint: pulumi.Bool(true),\n\t\t\t},\n\t\t\tDomainConfig: \u0026workstations.WorkstationClusterDomainConfigArgs{\n\t\t\t\tDomain: pulumi.String(\"workstations.example.com\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationClusterPrivateClusterConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationClusterDomainConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultNetwork = new Network(\"defaultNetwork\", NetworkArgs.builder()\n .name(\"workstation-cluster-custom-domain\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster-custom-domain\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(defaultNetwork.name())\n .build());\n\n var default_ = new WorkstationCluster(\"default\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster-custom-domain\")\n .network(defaultNetwork.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .privateClusterConfig(WorkstationClusterPrivateClusterConfigArgs.builder()\n .enablePrivateEndpoint(true)\n .build())\n .domainConfig(WorkstationClusterDomainConfigArgs.builder()\n .domain(\"workstations.example.com\")\n .build())\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:workstations:WorkstationCluster\n properties:\n workstationClusterId: workstation-cluster-custom-domain\n network: ${defaultNetwork.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n privateClusterConfig:\n enablePrivateEndpoint: true\n domainConfig:\n domain: workstations.example.com\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: workstation-cluster-custom-domain\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster-custom-domain\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${defaultNetwork.name}\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nWorkstationCluster can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/workstationClusters/{{workstation_cluster_id}}`\n\n* `{{project}}/{{location}}/{{workstation_cluster_id}}`\n\n* `{{location}}/{{workstation_cluster_id}}`\n\nWhen using the `pulumi import` command, WorkstationCluster can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:workstations/workstationCluster:WorkstationCluster default projects/{{project}}/locations/{{location}}/workstationClusters/{{workstation_cluster_id}}\n```\n\n```sh\n$ pulumi import gcp:workstations/workstationCluster:WorkstationCluster default {{project}}/{{location}}/{{workstation_cluster_id}}\n```\n\n```sh\n$ pulumi import gcp:workstations/workstationCluster:WorkstationCluster default {{location}}/{{workstation_cluster_id}}\n```\n\n", "properties": { "annotations": { "type": "object", @@ -260628,7 +260628,7 @@ } }, "gcp:workstations/workstationConfig:WorkstationConfig": { - "description": "## Example Usage\n\n### Workstation Config Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst tagKey1 = new gcp.tags.TagKey(\"tag_key1\", {\n parent: \"organizations/123456789\",\n shortName: \"keyname\",\n});\nconst tagValue1 = new gcp.tags.TagValue(\"tag_value1\", {\n parent: pulumi.interpolate`tagKeys/${tagKey1.name}`,\n shortName: \"valuename\",\n});\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n idleTimeout: \"600s\",\n runningTimeout: \"21600s\",\n replicaZones: [\n \"us-central1-a\",\n \"us-central1-b\",\n ],\n annotations: {\n \"label-one\": \"value-one\",\n },\n labels: {\n label: \"key\",\n },\n host: {\n gceInstance: {\n machineType: \"e2-standard-4\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n disableSsh: false,\n vmTags: pulumi.all([tagKey1.name, tagValue1.name]).apply(([tagKey1Name, tagValue1Name]) =\u003e {\n [`tagKeys/${tagKey1Name}`]: `tagValues/${tagValue1Name}`,\n }),\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntag_key1 = gcp.tags.TagKey(\"tag_key1\",\n parent=\"organizations/123456789\",\n short_name=\"keyname\")\ntag_value1 = gcp.tags.TagValue(\"tag_value1\",\n parent=tag_key1.name.apply(lambda name: f\"tagKeys/{name}\"),\n short_name=\"valuename\")\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n idle_timeout=\"600s\",\n running_timeout=\"21600s\",\n replica_zones=[\n \"us-central1-a\",\n \"us-central1-b\",\n ],\n annotations={\n \"label-one\": \"value-one\",\n },\n labels={\n \"label\": \"key\",\n },\n host={\n \"gce_instance\": {\n \"machine_type\": \"e2-standard-4\",\n \"boot_disk_size_gb\": 35,\n \"disable_public_ip_addresses\": True,\n \"disable_ssh\": False,\n \"vm_tags\": pulumi.Output.all(\n tagKey1Name=tag_key1.name,\n tagValue1Name=tag_value1.name\n).apply(lambda resolved_outputs: {\n \"\": f\"tagValues/{resolved_outputs['tagValue1Name']}\",\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 tagKey1 = new Gcp.Tags.TagKey(\"tag_key1\", new()\n {\n Parent = \"organizations/123456789\",\n ShortName = \"keyname\",\n });\n\n var tagValue1 = new Gcp.Tags.TagValue(\"tag_value1\", new()\n {\n Parent = tagKey1.Name.Apply(name =\u003e $\"tagKeys/{name}\"),\n ShortName = \"valuename\",\n });\n\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n IdleTimeout = \"600s\",\n RunningTimeout = \"21600s\",\n ReplicaZones = new[]\n {\n \"us-central1-a\",\n \"us-central1-b\",\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Labels = \n {\n { \"label\", \"key\" },\n },\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"e2-standard-4\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n DisableSsh = false,\n VmTags = Output.Tuple(tagKey1.Name, tagValue1.Name).Apply(values =\u003e\n {\n var tagKey1Name = values.Item1;\n var tagValue1Name = values.Item2;\n return \n {\n { $\"tagKeys/{tagKey1Name}\", $\"tagValues/{tagValue1Name}\" },\n };\n }),\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/tags\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/workstations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\ntagKey1, err := tags.NewTagKey(ctx, \"tag_key1\", \u0026tags.TagKeyArgs{\nParent: pulumi.String(\"organizations/123456789\"),\nShortName: pulumi.String(\"keyname\"),\n})\nif err != nil {\nreturn err\n}\ntagValue1, err := tags.NewTagValue(ctx, \"tag_value1\", \u0026tags.TagValueArgs{\nParent: tagKey1.Name.ApplyT(func(name string) (string, error) {\nreturn fmt.Sprintf(\"tagKeys/%v\", name), nil\n}).(pulumi.StringOutput),\nShortName: pulumi.String(\"valuename\"),\n})\nif err != nil {\nreturn err\n}\n_, err = compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\nName: pulumi.String(\"workstation-cluster\"),\nAutoCreateSubnetworks: pulumi.Bool(false),\n})\nif err != nil {\nreturn err\n}\ndefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\nName: pulumi.String(\"workstation-cluster\"),\nIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\nRegion: pulumi.String(\"us-central1\"),\nNetwork: _default.Name,\n})\nif err != nil {\nreturn err\n}\ndefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\nWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\nNetwork: _default.ID(),\nSubnetwork: defaultSubnetwork.ID(),\nLocation: pulumi.String(\"us-central1\"),\nLabels: pulumi.StringMap{\n\"label\": pulumi.String(\"key\"),\n},\nAnnotations: pulumi.StringMap{\n\"label-one\": pulumi.String(\"value-one\"),\n},\n})\nif err != nil {\nreturn err\n}\n_, err = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\nWorkstationConfigId: pulumi.String(\"workstation-config\"),\nWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\nLocation: pulumi.String(\"us-central1\"),\nIdleTimeout: pulumi.String(\"600s\"),\nRunningTimeout: pulumi.String(\"21600s\"),\nReplicaZones: pulumi.StringArray{\npulumi.String(\"us-central1-a\"),\npulumi.String(\"us-central1-b\"),\n},\nAnnotations: pulumi.StringMap{\n\"label-one\": pulumi.String(\"value-one\"),\n},\nLabels: pulumi.StringMap{\n\"label\": pulumi.String(\"key\"),\n},\nHost: \u0026workstations.WorkstationConfigHostArgs{\nGceInstance: \u0026workstations.WorkstationConfigHostGceInstanceArgs{\nMachineType: pulumi.String(\"e2-standard-4\"),\nBootDiskSizeGb: pulumi.Int(35),\nDisablePublicIpAddresses: pulumi.Bool(true),\nDisableSsh: pulumi.Bool(false),\nVmTags: pulumi.All(tagKey1.Name,tagValue1.Name).ApplyT(func(_args []interface{}) (map[string]string, error) {\ntagKey1Name := _args[0].(string)\ntagValue1Name := _args[1].(string)\nreturn map[string]string{\nfmt.Sprintf(\"tagKeys/%v\", tagKey1Name): fmt.Sprintf(\"tagValues/%v\", tagValue1Name),\n}, nil\n}).(pulumi.Map[string]stringOutput),\n},\n},\n})\nif err != nil {\nreturn err\n}\nreturn nil\n})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.tags.TagKey;\nimport com.pulumi.gcp.tags.TagKeyArgs;\nimport com.pulumi.gcp.tags.TagValue;\nimport com.pulumi.gcp.tags.TagValueArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var tagKey1 = new TagKey(\"tagKey1\", TagKeyArgs.builder()\n .parent(\"organizations/123456789\")\n .shortName(\"keyname\")\n .build());\n\n var tagValue1 = new TagValue(\"tagValue1\", TagValueArgs.builder()\n .parent(tagKey1.name().applyValue(name -\u003e String.format(\"tagKeys/%s\", name)))\n .shortName(\"valuename\")\n .build());\n\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .idleTimeout(\"600s\")\n .runningTimeout(\"21600s\")\n .replicaZones( \n \"us-central1-a\",\n \"us-central1-b\")\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .labels(Map.of(\"label\", \"key\"))\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"e2-standard-4\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .disableSsh(false)\n .vmTags(Output.tuple(tagKey1.name(), tagValue1.name()).applyValue(values -\u003e {\n var tagKey1Name = values.t1;\n var tagValue1Name = values.t2;\n return Map.of(String.format(\"tagKeys/%s\", tagKey1Name), String.format(\"tagValues/%s\", tagValue1Name));\n }))\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tagKey1:\n type: gcp:tags:TagKey\n name: tag_key1\n properties:\n parent: organizations/123456789\n shortName: keyname\n tagValue1:\n type: gcp:tags:TagValue\n name: tag_value1\n properties:\n parent: tagKeys/${tagKey1.name}\n shortName: valuename\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n idleTimeout: 600s\n runningTimeout: 21600s\n replicaZones:\n - us-central1-a\n - us-central1-b\n annotations:\n label-one: value-one\n labels:\n label: key\n host:\n gceInstance:\n machineType: e2-standard-4\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n disableSsh: false\n vmTags:\n tagKeys/${tagKey1.name}: tagValues/${tagValue1.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Config Container\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n host: {\n gceInstance: {\n machineType: \"n1-standard-4\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n enableNestedVirtualization: true,\n },\n },\n container: {\n image: \"intellij\",\n env: {\n NAME: \"FOO\",\n BABE: \"bar\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n host={\n \"gce_instance\": {\n \"machine_type\": \"n1-standard-4\",\n \"boot_disk_size_gb\": 35,\n \"disable_public_ip_addresses\": True,\n \"enable_nested_virtualization\": True,\n },\n },\n container={\n \"image\": \"intellij\",\n \"env\": {\n \"name\": \"FOO\",\n \"babe\": \"bar\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"n1-standard-4\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n EnableNestedVirtualization = true,\n },\n },\n Container = new Gcp.Workstations.Inputs.WorkstationConfigContainerArgs\n {\n Image = \"intellij\",\n Env = \n {\n { \"NAME\", \"FOO\" },\n { \"BABE\", \"bar\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/workstations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\n\t\t\tWorkstationConfigId: pulumi.String(\"workstation-config\"),\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHost: \u0026workstations.WorkstationConfigHostArgs{\n\t\t\t\tGceInstance: \u0026workstations.WorkstationConfigHostGceInstanceArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"n1-standard-4\"),\n\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\n\t\t\t\t\tDisablePublicIpAddresses: pulumi.Bool(true),\n\t\t\t\t\tEnableNestedVirtualization: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tContainer: \u0026workstations.WorkstationConfigContainerArgs{\n\t\t\t\tImage: pulumi.String(\"intellij\"),\n\t\t\t\tEnv: pulumi.StringMap{\n\t\t\t\t\t\"NAME\": pulumi.String(\"FOO\"),\n\t\t\t\t\t\"BABE\": pulumi.String(\"bar\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigContainerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"n1-standard-4\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .enableNestedVirtualization(true)\n .build())\n .build())\n .container(WorkstationConfigContainerArgs.builder()\n .image(\"intellij\")\n .env(Map.ofEntries(\n Map.entry(\"NAME\", \"FOO\"),\n Map.entry(\"BABE\", \"bar\")\n ))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n host:\n gceInstance:\n machineType: n1-standard-4\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n enableNestedVirtualization: true\n container:\n image: intellij\n env:\n NAME: FOO\n BABE: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Config Persistent Directories\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n host: {\n gceInstance: {\n machineType: \"e2-standard-4\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n shieldedInstanceConfig: {\n enableSecureBoot: true,\n enableVtpm: true,\n },\n },\n },\n persistentDirectories: [{\n mountPath: \"/home\",\n gcePd: {\n sizeGb: 200,\n fsType: \"ext4\",\n diskType: \"pd-standard\",\n reclaimPolicy: \"DELETE\",\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n host={\n \"gce_instance\": {\n \"machine_type\": \"e2-standard-4\",\n \"boot_disk_size_gb\": 35,\n \"disable_public_ip_addresses\": True,\n \"shielded_instance_config\": {\n \"enable_secure_boot\": True,\n \"enable_vtpm\": True,\n },\n },\n },\n persistent_directories=[{\n \"mount_path\": \"/home\",\n \"gce_pd\": {\n \"size_gb\": 200,\n \"fs_type\": \"ext4\",\n \"disk_type\": \"pd-standard\",\n \"reclaim_policy\": \"DELETE\",\n },\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"e2-standard-4\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n ShieldedInstanceConfig = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs\n {\n EnableSecureBoot = true,\n EnableVtpm = true,\n },\n },\n },\n PersistentDirectories = new[]\n {\n new Gcp.Workstations.Inputs.WorkstationConfigPersistentDirectoryArgs\n {\n MountPath = \"/home\",\n GcePd = new Gcp.Workstations.Inputs.WorkstationConfigPersistentDirectoryGcePdArgs\n {\n SizeGb = 200,\n FsType = \"ext4\",\n DiskType = \"pd-standard\",\n ReclaimPolicy = \"DELETE\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/workstations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\n\t\t\tWorkstationConfigId: pulumi.String(\"workstation-config\"),\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHost: \u0026workstations.WorkstationConfigHostArgs{\n\t\t\t\tGceInstance: \u0026workstations.WorkstationConfigHostGceInstanceArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\n\t\t\t\t\tDisablePublicIpAddresses: pulumi.Bool(true),\n\t\t\t\t\tShieldedInstanceConfig: \u0026workstations.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs{\n\t\t\t\t\t\tEnableSecureBoot: pulumi.Bool(true),\n\t\t\t\t\t\tEnableVtpm: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tPersistentDirectories: workstations.WorkstationConfigPersistentDirectoryArray{\n\t\t\t\t\u0026workstations.WorkstationConfigPersistentDirectoryArgs{\n\t\t\t\t\tMountPath: pulumi.String(\"/home\"),\n\t\t\t\t\tGcePd: \u0026workstations.WorkstationConfigPersistentDirectoryGcePdArgs{\n\t\t\t\t\t\tSizeGb: pulumi.Int(200),\n\t\t\t\t\t\tFsType: pulumi.String(\"ext4\"),\n\t\t\t\t\t\tDiskType: pulumi.String(\"pd-standard\"),\n\t\t\t\t\t\tReclaimPolicy: pulumi.String(\"DELETE\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigPersistentDirectoryArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigPersistentDirectoryGcePdArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"e2-standard-4\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .shieldedInstanceConfig(WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs.builder()\n .enableSecureBoot(true)\n .enableVtpm(true)\n .build())\n .build())\n .build())\n .persistentDirectories(WorkstationConfigPersistentDirectoryArgs.builder()\n .mountPath(\"/home\")\n .gcePd(WorkstationConfigPersistentDirectoryGcePdArgs.builder()\n .sizeGb(200)\n .fsType(\"ext4\")\n .diskType(\"pd-standard\")\n .reclaimPolicy(\"DELETE\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n host:\n gceInstance:\n machineType: e2-standard-4\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n shieldedInstanceConfig:\n enableSecureBoot: true\n enableVtpm: true\n persistentDirectories:\n - mountPath: /home\n gcePd:\n sizeGb: 200\n fsType: ext4\n diskType: pd-standard\n reclaimPolicy: DELETE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Config Source Snapshot\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst mySourceDisk = new gcp.compute.Disk(\"my_source_disk\", {\n name: \"workstation-config\",\n size: 10,\n type: \"pd-ssd\",\n zone: \"us-central1-a\",\n});\nconst mySourceSnapshot = new gcp.compute.Snapshot(\"my_source_snapshot\", {\n name: \"workstation-config\",\n sourceDisk: mySourceDisk.name,\n zone: \"us-central1-a\",\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: defaultWorkstationCluster.location,\n persistentDirectories: [{\n mountPath: \"/home\",\n gcePd: {\n sourceSnapshot: mySourceSnapshot.id,\n reclaimPolicy: \"DELETE\",\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\nmy_source_disk = gcp.compute.Disk(\"my_source_disk\",\n name=\"workstation-config\",\n size=10,\n type=\"pd-ssd\",\n zone=\"us-central1-a\")\nmy_source_snapshot = gcp.compute.Snapshot(\"my_source_snapshot\",\n name=\"workstation-config\",\n source_disk=my_source_disk.name,\n zone=\"us-central1-a\")\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\")\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=default_workstation_cluster.location,\n persistent_directories=[{\n \"mount_path\": \"/home\",\n \"gce_pd\": {\n \"source_snapshot\": my_source_snapshot.id,\n \"reclaim_policy\": \"DELETE\",\n },\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var mySourceDisk = new Gcp.Compute.Disk(\"my_source_disk\", new()\n {\n Name = \"workstation-config\",\n Size = 10,\n Type = \"pd-ssd\",\n Zone = \"us-central1-a\",\n });\n\n var mySourceSnapshot = new Gcp.Compute.Snapshot(\"my_source_snapshot\", new()\n {\n Name = \"workstation-config\",\n SourceDisk = mySourceDisk.Name,\n Zone = \"us-central1-a\",\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = defaultWorkstationCluster.Location,\n PersistentDirectories = new[]\n {\n new Gcp.Workstations.Inputs.WorkstationConfigPersistentDirectoryArgs\n {\n MountPath = \"/home\",\n GcePd = new Gcp.Workstations.Inputs.WorkstationConfigPersistentDirectoryGcePdArgs\n {\n SourceSnapshot = mySourceSnapshot.Id,\n ReclaimPolicy = \"DELETE\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/workstations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmySourceDisk, err := compute.NewDisk(ctx, \"my_source_disk\", \u0026compute.DiskArgs{\n\t\t\tName: pulumi.String(\"workstation-config\"),\n\t\t\tSize: pulumi.Int(10),\n\t\t\tType: pulumi.String(\"pd-ssd\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmySourceSnapshot, err := compute.NewSnapshot(ctx, \"my_source_snapshot\", \u0026compute.SnapshotArgs{\n\t\t\tName: pulumi.String(\"workstation-config\"),\n\t\t\tSourceDisk: mySourceDisk.Name,\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\n\t\t\tWorkstationConfigId: pulumi.String(\"workstation-config\"),\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: defaultWorkstationCluster.Location,\n\t\t\tPersistentDirectories: workstations.WorkstationConfigPersistentDirectoryArray{\n\t\t\t\t\u0026workstations.WorkstationConfigPersistentDirectoryArgs{\n\t\t\t\t\tMountPath: pulumi.String(\"/home\"),\n\t\t\t\t\tGcePd: \u0026workstations.WorkstationConfigPersistentDirectoryGcePdArgs{\n\t\t\t\t\t\tSourceSnapshot: mySourceSnapshot.ID(),\n\t\t\t\t\t\tReclaimPolicy: pulumi.String(\"DELETE\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.Disk;\nimport com.pulumi.gcp.compute.DiskArgs;\nimport com.pulumi.gcp.compute.Snapshot;\nimport com.pulumi.gcp.compute.SnapshotArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigPersistentDirectoryArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigPersistentDirectoryGcePdArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var mySourceDisk = new Disk(\"mySourceDisk\", DiskArgs.builder()\n .name(\"workstation-config\")\n .size(10)\n .type(\"pd-ssd\")\n .zone(\"us-central1-a\")\n .build());\n\n var mySourceSnapshot = new Snapshot(\"mySourceSnapshot\", SnapshotArgs.builder()\n .name(\"workstation-config\")\n .sourceDisk(mySourceDisk.name())\n .zone(\"us-central1-a\")\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(defaultWorkstationCluster.location())\n .persistentDirectories(WorkstationConfigPersistentDirectoryArgs.builder()\n .mountPath(\"/home\")\n .gcePd(WorkstationConfigPersistentDirectoryGcePdArgs.builder()\n .sourceSnapshot(mySourceSnapshot.id())\n .reclaimPolicy(\"DELETE\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n mySourceDisk:\n type: gcp:compute:Disk\n name: my_source_disk\n properties:\n name: workstation-config\n size: 10\n type: pd-ssd\n zone: us-central1-a\n mySourceSnapshot:\n type: gcp:compute:Snapshot\n name: my_source_snapshot\n properties:\n name: workstation-config\n sourceDisk: ${mySourceDisk.name}\n zone: us-central1-a\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: ${defaultWorkstationCluster.location}\n persistentDirectories:\n - mountPath: /home\n gcePd:\n sourceSnapshot: ${mySourceSnapshot.id}\n reclaimPolicy: DELETE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Config Shielded Instance Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n host: {\n gceInstance: {\n machineType: \"e2-standard-4\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n shieldedInstanceConfig: {\n enableSecureBoot: true,\n enableVtpm: true,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n host={\n \"gce_instance\": {\n \"machine_type\": \"e2-standard-4\",\n \"boot_disk_size_gb\": 35,\n \"disable_public_ip_addresses\": True,\n \"shielded_instance_config\": {\n \"enable_secure_boot\": True,\n \"enable_vtpm\": True,\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"e2-standard-4\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n ShieldedInstanceConfig = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs\n {\n EnableSecureBoot = true,\n EnableVtpm = true,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/workstations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\n\t\t\tWorkstationConfigId: pulumi.String(\"workstation-config\"),\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHost: \u0026workstations.WorkstationConfigHostArgs{\n\t\t\t\tGceInstance: \u0026workstations.WorkstationConfigHostGceInstanceArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\n\t\t\t\t\tDisablePublicIpAddresses: pulumi.Bool(true),\n\t\t\t\t\tShieldedInstanceConfig: \u0026workstations.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs{\n\t\t\t\t\t\tEnableSecureBoot: pulumi.Bool(true),\n\t\t\t\t\t\tEnableVtpm: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"e2-standard-4\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .shieldedInstanceConfig(WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs.builder()\n .enableSecureBoot(true)\n .enableVtpm(true)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n host:\n gceInstance:\n machineType: e2-standard-4\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n shieldedInstanceConfig:\n enableSecureBoot: true\n enableVtpm: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Config Accelerators\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n host: {\n gceInstance: {\n machineType: \"n1-standard-2\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n accelerators: [{\n type: \"nvidia-tesla-t4\",\n count: 1,\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n host={\n \"gce_instance\": {\n \"machine_type\": \"n1-standard-2\",\n \"boot_disk_size_gb\": 35,\n \"disable_public_ip_addresses\": True,\n \"accelerators\": [{\n \"type\": \"nvidia-tesla-t4\",\n \"count\": 1,\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"n1-standard-2\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n Accelerators = new[]\n {\n new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceAcceleratorArgs\n {\n Type = \"nvidia-tesla-t4\",\n Count = 1,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/workstations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\n\t\t\tWorkstationConfigId: pulumi.String(\"workstation-config\"),\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHost: \u0026workstations.WorkstationConfigHostArgs{\n\t\t\t\tGceInstance: \u0026workstations.WorkstationConfigHostGceInstanceArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"n1-standard-2\"),\n\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\n\t\t\t\t\tDisablePublicIpAddresses: pulumi.Bool(true),\n\t\t\t\t\tAccelerators: workstations.WorkstationConfigHostGceInstanceAcceleratorArray{\n\t\t\t\t\t\t\u0026workstations.WorkstationConfigHostGceInstanceAcceleratorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"nvidia-tesla-t4\"),\n\t\t\t\t\t\t\tCount: pulumi.Int(1),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"n1-standard-2\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .accelerators(WorkstationConfigHostGceInstanceAcceleratorArgs.builder()\n .type(\"nvidia-tesla-t4\")\n .count(\"1\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n host:\n gceInstance:\n machineType: n1-standard-2\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n accelerators:\n - type: nvidia-tesla-t4\n count: '1'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Config Boost\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n host: {\n gceInstance: {\n machineType: \"e2-standard-4\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n boostConfigs: [\n {\n id: \"boost-1\",\n machineType: \"n1-standard-2\",\n accelerators: [{\n type: \"nvidia-tesla-t4\",\n count: 1,\n }],\n },\n {\n id: \"boost-2\",\n machineType: \"n1-standard-2\",\n poolSize: 2,\n bootDiskSizeGb: 30,\n enableNestedVirtualization: true,\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n host={\n \"gce_instance\": {\n \"machine_type\": \"e2-standard-4\",\n \"boot_disk_size_gb\": 35,\n \"disable_public_ip_addresses\": True,\n \"boost_configs\": [\n {\n \"id\": \"boost-1\",\n \"machine_type\": \"n1-standard-2\",\n \"accelerators\": [{\n \"type\": \"nvidia-tesla-t4\",\n \"count\": 1,\n }],\n },\n {\n \"id\": \"boost-2\",\n \"machine_type\": \"n1-standard-2\",\n \"pool_size\": 2,\n \"boot_disk_size_gb\": 30,\n \"enable_nested_virtualization\": True,\n },\n ],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"e2-standard-4\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n BoostConfigs = new[]\n {\n new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceBoostConfigArgs\n {\n Id = \"boost-1\",\n MachineType = \"n1-standard-2\",\n Accelerators = new[]\n {\n new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceBoostConfigAcceleratorArgs\n {\n Type = \"nvidia-tesla-t4\",\n Count = 1,\n },\n },\n },\n new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceBoostConfigArgs\n {\n Id = \"boost-2\",\n MachineType = \"n1-standard-2\",\n PoolSize = 2,\n BootDiskSizeGb = 30,\n EnableNestedVirtualization = true,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/workstations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\n\t\t\tWorkstationConfigId: pulumi.String(\"workstation-config\"),\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHost: \u0026workstations.WorkstationConfigHostArgs{\n\t\t\t\tGceInstance: \u0026workstations.WorkstationConfigHostGceInstanceArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\n\t\t\t\t\tDisablePublicIpAddresses: pulumi.Bool(true),\n\t\t\t\t\tBoostConfigs: workstations.WorkstationConfigHostGceInstanceBoostConfigArray{\n\t\t\t\t\t\t\u0026workstations.WorkstationConfigHostGceInstanceBoostConfigArgs{\n\t\t\t\t\t\t\tId: pulumi.String(\"boost-1\"),\n\t\t\t\t\t\t\tMachineType: pulumi.String(\"n1-standard-2\"),\n\t\t\t\t\t\t\tAccelerators: workstations.WorkstationConfigHostGceInstanceBoostConfigAcceleratorArray{\n\t\t\t\t\t\t\t\t\u0026workstations.WorkstationConfigHostGceInstanceBoostConfigAcceleratorArgs{\n\t\t\t\t\t\t\t\t\tType: pulumi.String(\"nvidia-tesla-t4\"),\n\t\t\t\t\t\t\t\t\tCount: pulumi.Int(1),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026workstations.WorkstationConfigHostGceInstanceBoostConfigArgs{\n\t\t\t\t\t\t\tId: pulumi.String(\"boost-2\"),\n\t\t\t\t\t\t\tMachineType: pulumi.String(\"n1-standard-2\"),\n\t\t\t\t\t\t\tPoolSize: pulumi.Int(2),\n\t\t\t\t\t\t\tBootDiskSizeGb: pulumi.Int(30),\n\t\t\t\t\t\t\tEnableNestedVirtualization: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"e2-standard-4\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .boostConfigs( \n WorkstationConfigHostGceInstanceBoostConfigArgs.builder()\n .id(\"boost-1\")\n .machineType(\"n1-standard-2\")\n .accelerators(WorkstationConfigHostGceInstanceBoostConfigAcceleratorArgs.builder()\n .type(\"nvidia-tesla-t4\")\n .count(\"1\")\n .build())\n .build(),\n WorkstationConfigHostGceInstanceBoostConfigArgs.builder()\n .id(\"boost-2\")\n .machineType(\"n1-standard-2\")\n .poolSize(2)\n .bootDiskSizeGb(30)\n .enableNestedVirtualization(true)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n host:\n gceInstance:\n machineType: e2-standard-4\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n boostConfigs:\n - id: boost-1\n machineType: n1-standard-2\n accelerators:\n - type: nvidia-tesla-t4\n count: '1'\n - id: boost-2\n machineType: n1-standard-2\n poolSize: 2\n bootDiskSizeGb: 30\n enableNestedVirtualization: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Config Encryption Key\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultKeyRing = new gcp.kms.KeyRing(\"default\", {\n name: \"workstation-cluster\",\n location: \"us-central1\",\n});\nconst defaultCryptoKey = new gcp.kms.CryptoKey(\"default\", {\n name: \"workstation-cluster\",\n keyRing: defaultKeyRing.id,\n});\nconst defaultAccount = new gcp.serviceaccount.Account(\"default\", {\n accountId: \"my-account\",\n displayName: \"Service Account\",\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n host: {\n gceInstance: {\n machineType: \"e2-standard-4\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n shieldedInstanceConfig: {\n enableSecureBoot: true,\n enableVtpm: true,\n },\n },\n },\n encryptionKey: {\n kmsKey: defaultCryptoKey.id,\n kmsKeyServiceAccount: defaultAccount.email,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\ndefault_key_ring = gcp.kms.KeyRing(\"default\",\n name=\"workstation-cluster\",\n location=\"us-central1\")\ndefault_crypto_key = gcp.kms.CryptoKey(\"default\",\n name=\"workstation-cluster\",\n key_ring=default_key_ring.id)\ndefault_account = gcp.serviceaccount.Account(\"default\",\n account_id=\"my-account\",\n display_name=\"Service Account\")\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n host={\n \"gce_instance\": {\n \"machine_type\": \"e2-standard-4\",\n \"boot_disk_size_gb\": 35,\n \"disable_public_ip_addresses\": True,\n \"shielded_instance_config\": {\n \"enable_secure_boot\": True,\n \"enable_vtpm\": True,\n },\n },\n },\n encryption_key={\n \"kms_key\": default_crypto_key.id,\n \"kms_key_service_account\": default_account.email,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultKeyRing = new Gcp.Kms.KeyRing(\"default\", new()\n {\n Name = \"workstation-cluster\",\n Location = \"us-central1\",\n });\n\n var defaultCryptoKey = new Gcp.Kms.CryptoKey(\"default\", new()\n {\n Name = \"workstation-cluster\",\n KeyRing = defaultKeyRing.Id,\n });\n\n var defaultAccount = new Gcp.ServiceAccount.Account(\"default\", new()\n {\n AccountId = \"my-account\",\n DisplayName = \"Service Account\",\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"e2-standard-4\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n ShieldedInstanceConfig = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs\n {\n EnableSecureBoot = true,\n EnableVtpm = true,\n },\n },\n },\n EncryptionKey = new Gcp.Workstations.Inputs.WorkstationConfigEncryptionKeyArgs\n {\n KmsKey = defaultCryptoKey.Id,\n KmsKeyServiceAccount = defaultAccount.Email,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/workstations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultKeyRing, err := kms.NewKeyRing(ctx, \"default\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultCryptoKey, err := kms.NewCryptoKey(ctx, \"default\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tKeyRing: defaultKeyRing.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultAccount, err := serviceaccount.NewAccount(ctx, \"default\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-account\"),\n\t\t\tDisplayName: pulumi.String(\"Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\n\t\t\tWorkstationConfigId: pulumi.String(\"workstation-config\"),\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHost: \u0026workstations.WorkstationConfigHostArgs{\n\t\t\t\tGceInstance: \u0026workstations.WorkstationConfigHostGceInstanceArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\n\t\t\t\t\tDisablePublicIpAddresses: pulumi.Bool(true),\n\t\t\t\t\tShieldedInstanceConfig: \u0026workstations.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs{\n\t\t\t\t\t\tEnableSecureBoot: pulumi.Bool(true),\n\t\t\t\t\t\tEnableVtpm: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEncryptionKey: \u0026workstations.WorkstationConfigEncryptionKeyArgs{\n\t\t\t\tKmsKey: defaultCryptoKey.ID(),\n\t\t\t\tKmsKeyServiceAccount: defaultAccount.Email,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigEncryptionKeyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultKeyRing = new KeyRing(\"defaultKeyRing\", KeyRingArgs.builder()\n .name(\"workstation-cluster\")\n .location(\"us-central1\")\n .build());\n\n var defaultCryptoKey = new CryptoKey(\"defaultCryptoKey\", CryptoKeyArgs.builder()\n .name(\"workstation-cluster\")\n .keyRing(defaultKeyRing.id())\n .build());\n\n var defaultAccount = new Account(\"defaultAccount\", AccountArgs.builder()\n .accountId(\"my-account\")\n .displayName(\"Service Account\")\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"e2-standard-4\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .shieldedInstanceConfig(WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs.builder()\n .enableSecureBoot(true)\n .enableVtpm(true)\n .build())\n .build())\n .build())\n .encryptionKey(WorkstationConfigEncryptionKeyArgs.builder()\n .kmsKey(defaultCryptoKey.id())\n .kmsKeyServiceAccount(defaultAccount.email())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultKeyRing:\n type: gcp:kms:KeyRing\n name: default\n properties:\n name: workstation-cluster\n location: us-central1\n defaultCryptoKey:\n type: gcp:kms:CryptoKey\n name: default\n properties:\n name: workstation-cluster\n keyRing: ${defaultKeyRing.id}\n defaultAccount:\n type: gcp:serviceaccount:Account\n name: default\n properties:\n accountId: my-account\n displayName: Service Account\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n host:\n gceInstance:\n machineType: e2-standard-4\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n shieldedInstanceConfig:\n enableSecureBoot: true\n enableVtpm: true\n encryptionKey:\n kmsKey: ${defaultCryptoKey.id}\n kmsKeyServiceAccount: ${defaultAccount.email}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nWorkstationConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/workstationClusters/{{workstation_cluster_id}}/workstationConfigs/{{workstation_config_id}}`\n\n* `{{project}}/{{location}}/{{workstation_cluster_id}}/{{workstation_config_id}}`\n\n* `{{location}}/{{workstation_cluster_id}}/{{workstation_config_id}}`\n\nWhen using the `pulumi import` command, WorkstationConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:workstations/workstationConfig:WorkstationConfig default projects/{{project}}/locations/{{location}}/workstationClusters/{{workstation_cluster_id}}/workstationConfigs/{{workstation_config_id}}\n```\n\n```sh\n$ pulumi import gcp:workstations/workstationConfig:WorkstationConfig default {{project}}/{{location}}/{{workstation_cluster_id}}/{{workstation_config_id}}\n```\n\n```sh\n$ pulumi import gcp:workstations/workstationConfig:WorkstationConfig default {{location}}/{{workstation_cluster_id}}/{{workstation_config_id}}\n```\n\n", + "description": "## Example Usage\n\n### Workstation Config Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst tagKey1 = new gcp.tags.TagKey(\"tag_key1\", {\n parent: \"organizations/123456789\",\n shortName: \"keyname\",\n});\nconst tagValue1 = new gcp.tags.TagValue(\"tag_value1\", {\n parent: pulumi.interpolate`tagKeys/${tagKey1.name}`,\n shortName: \"valuename\",\n});\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n idleTimeout: \"600s\",\n runningTimeout: \"21600s\",\n replicaZones: [\n \"us-central1-a\",\n \"us-central1-b\",\n ],\n annotations: {\n \"label-one\": \"value-one\",\n },\n labels: {\n label: \"key\",\n },\n host: {\n gceInstance: {\n machineType: \"e2-standard-4\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n disableSsh: false,\n vmTags: pulumi.all([tagKey1.name, tagValue1.name]).apply(([tagKey1Name, tagValue1Name]) =\u003e {\n [`tagKeys/${tagKey1Name}`]: `tagValues/${tagValue1Name}`,\n }),\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntag_key1 = gcp.tags.TagKey(\"tag_key1\",\n parent=\"organizations/123456789\",\n short_name=\"keyname\")\ntag_value1 = gcp.tags.TagValue(\"tag_value1\",\n parent=tag_key1.name.apply(lambda name: f\"tagKeys/{name}\"),\n short_name=\"valuename\")\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n idle_timeout=\"600s\",\n running_timeout=\"21600s\",\n replica_zones=[\n \"us-central1-a\",\n \"us-central1-b\",\n ],\n annotations={\n \"label-one\": \"value-one\",\n },\n labels={\n \"label\": \"key\",\n },\n host={\n \"gce_instance\": {\n \"machine_type\": \"e2-standard-4\",\n \"boot_disk_size_gb\": 35,\n \"disable_public_ip_addresses\": True,\n \"disable_ssh\": False,\n \"vm_tags\": pulumi.Output.all(\n tagKey1Name=tag_key1.name,\n tagValue1Name=tag_value1.name\n).apply(lambda resolved_outputs: {\n f\"tagKeys/{resolved_outputs['tagKey1Name']}\": f\"tagValues/{resolved_outputs['tagValue1Name']}\",\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 tagKey1 = new Gcp.Tags.TagKey(\"tag_key1\", new()\n {\n Parent = \"organizations/123456789\",\n ShortName = \"keyname\",\n });\n\n var tagValue1 = new Gcp.Tags.TagValue(\"tag_value1\", new()\n {\n Parent = tagKey1.Name.Apply(name =\u003e $\"tagKeys/{name}\"),\n ShortName = \"valuename\",\n });\n\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n IdleTimeout = \"600s\",\n RunningTimeout = \"21600s\",\n ReplicaZones = new[]\n {\n \"us-central1-a\",\n \"us-central1-b\",\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n Labels = \n {\n { \"label\", \"key\" },\n },\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"e2-standard-4\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n DisableSsh = false,\n VmTags = Output.Tuple(tagKey1.Name, tagValue1.Name).Apply(values =\u003e\n {\n var tagKey1Name = values.Item1;\n var tagValue1Name = values.Item2;\n return \n {\n { $\"tagKeys/{tagKey1Name}\", $\"tagValues/{tagValue1Name}\" },\n };\n }),\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/tags\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/workstations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\ntagKey1, err := tags.NewTagKey(ctx, \"tag_key1\", \u0026tags.TagKeyArgs{\nParent: pulumi.String(\"organizations/123456789\"),\nShortName: pulumi.String(\"keyname\"),\n})\nif err != nil {\nreturn err\n}\ntagValue1, err := tags.NewTagValue(ctx, \"tag_value1\", \u0026tags.TagValueArgs{\nParent: tagKey1.Name.ApplyT(func(name string) (string, error) {\nreturn fmt.Sprintf(\"tagKeys/%v\", name), nil\n}).(pulumi.StringOutput),\nShortName: pulumi.String(\"valuename\"),\n})\nif err != nil {\nreturn err\n}\n_, err = compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\nName: pulumi.String(\"workstation-cluster\"),\nAutoCreateSubnetworks: pulumi.Bool(false),\n})\nif err != nil {\nreturn err\n}\ndefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\nName: pulumi.String(\"workstation-cluster\"),\nIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\nRegion: pulumi.String(\"us-central1\"),\nNetwork: _default.Name,\n})\nif err != nil {\nreturn err\n}\ndefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\nWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\nNetwork: _default.ID(),\nSubnetwork: defaultSubnetwork.ID(),\nLocation: pulumi.String(\"us-central1\"),\nLabels: pulumi.StringMap{\n\"label\": pulumi.String(\"key\"),\n},\nAnnotations: pulumi.StringMap{\n\"label-one\": pulumi.String(\"value-one\"),\n},\n})\nif err != nil {\nreturn err\n}\n_, err = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\nWorkstationConfigId: pulumi.String(\"workstation-config\"),\nWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\nLocation: pulumi.String(\"us-central1\"),\nIdleTimeout: pulumi.String(\"600s\"),\nRunningTimeout: pulumi.String(\"21600s\"),\nReplicaZones: pulumi.StringArray{\npulumi.String(\"us-central1-a\"),\npulumi.String(\"us-central1-b\"),\n},\nAnnotations: pulumi.StringMap{\n\"label-one\": pulumi.String(\"value-one\"),\n},\nLabels: pulumi.StringMap{\n\"label\": pulumi.String(\"key\"),\n},\nHost: \u0026workstations.WorkstationConfigHostArgs{\nGceInstance: \u0026workstations.WorkstationConfigHostGceInstanceArgs{\nMachineType: pulumi.String(\"e2-standard-4\"),\nBootDiskSizeGb: pulumi.Int(35),\nDisablePublicIpAddresses: pulumi.Bool(true),\nDisableSsh: pulumi.Bool(false),\nVmTags: pulumi.All(tagKey1.Name,tagValue1.Name).ApplyT(func(_args []interface{}) (map[string]string, error) {\ntagKey1Name := _args[0].(string)\ntagValue1Name := _args[1].(string)\nreturn map[string]string{\nfmt.Sprintf(\"tagKeys/%v\", tagKey1Name): fmt.Sprintf(\"tagValues/%v\", tagValue1Name),\n}, nil\n}).(pulumi.Map[string]stringOutput),\n},\n},\n})\nif err != nil {\nreturn err\n}\nreturn nil\n})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.tags.TagKey;\nimport com.pulumi.gcp.tags.TagKeyArgs;\nimport com.pulumi.gcp.tags.TagValue;\nimport com.pulumi.gcp.tags.TagValueArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var tagKey1 = new TagKey(\"tagKey1\", TagKeyArgs.builder()\n .parent(\"organizations/123456789\")\n .shortName(\"keyname\")\n .build());\n\n var tagValue1 = new TagValue(\"tagValue1\", TagValueArgs.builder()\n .parent(tagKey1.name().applyValue(name -\u003e String.format(\"tagKeys/%s\", name)))\n .shortName(\"valuename\")\n .build());\n\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .idleTimeout(\"600s\")\n .runningTimeout(\"21600s\")\n .replicaZones( \n \"us-central1-a\",\n \"us-central1-b\")\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .labels(Map.of(\"label\", \"key\"))\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"e2-standard-4\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .disableSsh(false)\n .vmTags(Output.tuple(tagKey1.name(), tagValue1.name()).applyValue(values -\u003e {\n var tagKey1Name = values.t1;\n var tagValue1Name = values.t2;\n return Map.of(String.format(\"tagKeys/%s\", tagKey1Name), String.format(\"tagValues/%s\", tagValue1Name));\n }))\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tagKey1:\n type: gcp:tags:TagKey\n name: tag_key1\n properties:\n parent: organizations/123456789\n shortName: keyname\n tagValue1:\n type: gcp:tags:TagValue\n name: tag_value1\n properties:\n parent: tagKeys/${tagKey1.name}\n shortName: valuename\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n idleTimeout: 600s\n runningTimeout: 21600s\n replicaZones:\n - us-central1-a\n - us-central1-b\n annotations:\n label-one: value-one\n labels:\n label: key\n host:\n gceInstance:\n machineType: e2-standard-4\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n disableSsh: false\n vmTags:\n tagKeys/${tagKey1.name}: tagValues/${tagValue1.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Config Container\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n host: {\n gceInstance: {\n machineType: \"n1-standard-4\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n enableNestedVirtualization: true,\n },\n },\n container: {\n image: \"intellij\",\n env: {\n NAME: \"FOO\",\n BABE: \"bar\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n host={\n \"gce_instance\": {\n \"machine_type\": \"n1-standard-4\",\n \"boot_disk_size_gb\": 35,\n \"disable_public_ip_addresses\": True,\n \"enable_nested_virtualization\": True,\n },\n },\n container={\n \"image\": \"intellij\",\n \"env\": {\n \"NAME\": \"FOO\",\n \"BABE\": \"bar\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"n1-standard-4\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n EnableNestedVirtualization = true,\n },\n },\n Container = new Gcp.Workstations.Inputs.WorkstationConfigContainerArgs\n {\n Image = \"intellij\",\n Env = \n {\n { \"NAME\", \"FOO\" },\n { \"BABE\", \"bar\" },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/workstations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\n\t\t\tWorkstationConfigId: pulumi.String(\"workstation-config\"),\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHost: \u0026workstations.WorkstationConfigHostArgs{\n\t\t\t\tGceInstance: \u0026workstations.WorkstationConfigHostGceInstanceArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"n1-standard-4\"),\n\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\n\t\t\t\t\tDisablePublicIpAddresses: pulumi.Bool(true),\n\t\t\t\t\tEnableNestedVirtualization: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tContainer: \u0026workstations.WorkstationConfigContainerArgs{\n\t\t\t\tImage: pulumi.String(\"intellij\"),\n\t\t\t\tEnv: pulumi.StringMap{\n\t\t\t\t\t\"NAME\": pulumi.String(\"FOO\"),\n\t\t\t\t\t\"BABE\": pulumi.String(\"bar\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigContainerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"n1-standard-4\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .enableNestedVirtualization(true)\n .build())\n .build())\n .container(WorkstationConfigContainerArgs.builder()\n .image(\"intellij\")\n .env(Map.ofEntries(\n Map.entry(\"NAME\", \"FOO\"),\n Map.entry(\"BABE\", \"bar\")\n ))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n host:\n gceInstance:\n machineType: n1-standard-4\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n enableNestedVirtualization: true\n container:\n image: intellij\n env:\n NAME: FOO\n BABE: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Config Persistent Directories\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n host: {\n gceInstance: {\n machineType: \"e2-standard-4\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n shieldedInstanceConfig: {\n enableSecureBoot: true,\n enableVtpm: true,\n },\n },\n },\n persistentDirectories: [{\n mountPath: \"/home\",\n gcePd: {\n sizeGb: 200,\n fsType: \"ext4\",\n diskType: \"pd-standard\",\n reclaimPolicy: \"DELETE\",\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n host={\n \"gce_instance\": {\n \"machine_type\": \"e2-standard-4\",\n \"boot_disk_size_gb\": 35,\n \"disable_public_ip_addresses\": True,\n \"shielded_instance_config\": {\n \"enable_secure_boot\": True,\n \"enable_vtpm\": True,\n },\n },\n },\n persistent_directories=[{\n \"mount_path\": \"/home\",\n \"gce_pd\": {\n \"size_gb\": 200,\n \"fs_type\": \"ext4\",\n \"disk_type\": \"pd-standard\",\n \"reclaim_policy\": \"DELETE\",\n },\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"e2-standard-4\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n ShieldedInstanceConfig = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs\n {\n EnableSecureBoot = true,\n EnableVtpm = true,\n },\n },\n },\n PersistentDirectories = new[]\n {\n new Gcp.Workstations.Inputs.WorkstationConfigPersistentDirectoryArgs\n {\n MountPath = \"/home\",\n GcePd = new Gcp.Workstations.Inputs.WorkstationConfigPersistentDirectoryGcePdArgs\n {\n SizeGb = 200,\n FsType = \"ext4\",\n DiskType = \"pd-standard\",\n ReclaimPolicy = \"DELETE\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/workstations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\n\t\t\tWorkstationConfigId: pulumi.String(\"workstation-config\"),\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHost: \u0026workstations.WorkstationConfigHostArgs{\n\t\t\t\tGceInstance: \u0026workstations.WorkstationConfigHostGceInstanceArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\n\t\t\t\t\tDisablePublicIpAddresses: pulumi.Bool(true),\n\t\t\t\t\tShieldedInstanceConfig: \u0026workstations.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs{\n\t\t\t\t\t\tEnableSecureBoot: pulumi.Bool(true),\n\t\t\t\t\t\tEnableVtpm: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tPersistentDirectories: workstations.WorkstationConfigPersistentDirectoryArray{\n\t\t\t\t\u0026workstations.WorkstationConfigPersistentDirectoryArgs{\n\t\t\t\t\tMountPath: pulumi.String(\"/home\"),\n\t\t\t\t\tGcePd: \u0026workstations.WorkstationConfigPersistentDirectoryGcePdArgs{\n\t\t\t\t\t\tSizeGb: pulumi.Int(200),\n\t\t\t\t\t\tFsType: pulumi.String(\"ext4\"),\n\t\t\t\t\t\tDiskType: pulumi.String(\"pd-standard\"),\n\t\t\t\t\t\tReclaimPolicy: pulumi.String(\"DELETE\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigPersistentDirectoryArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigPersistentDirectoryGcePdArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"e2-standard-4\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .shieldedInstanceConfig(WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs.builder()\n .enableSecureBoot(true)\n .enableVtpm(true)\n .build())\n .build())\n .build())\n .persistentDirectories(WorkstationConfigPersistentDirectoryArgs.builder()\n .mountPath(\"/home\")\n .gcePd(WorkstationConfigPersistentDirectoryGcePdArgs.builder()\n .sizeGb(200)\n .fsType(\"ext4\")\n .diskType(\"pd-standard\")\n .reclaimPolicy(\"DELETE\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n host:\n gceInstance:\n machineType: e2-standard-4\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n shieldedInstanceConfig:\n enableSecureBoot: true\n enableVtpm: true\n persistentDirectories:\n - mountPath: /home\n gcePd:\n sizeGb: 200\n fsType: ext4\n diskType: pd-standard\n reclaimPolicy: DELETE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Config Source Snapshot\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst mySourceDisk = new gcp.compute.Disk(\"my_source_disk\", {\n name: \"workstation-config\",\n size: 10,\n type: \"pd-ssd\",\n zone: \"us-central1-a\",\n});\nconst mySourceSnapshot = new gcp.compute.Snapshot(\"my_source_snapshot\", {\n name: \"workstation-config\",\n sourceDisk: mySourceDisk.name,\n zone: \"us-central1-a\",\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: defaultWorkstationCluster.location,\n persistentDirectories: [{\n mountPath: \"/home\",\n gcePd: {\n sourceSnapshot: mySourceSnapshot.id,\n reclaimPolicy: \"DELETE\",\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\nmy_source_disk = gcp.compute.Disk(\"my_source_disk\",\n name=\"workstation-config\",\n size=10,\n type=\"pd-ssd\",\n zone=\"us-central1-a\")\nmy_source_snapshot = gcp.compute.Snapshot(\"my_source_snapshot\",\n name=\"workstation-config\",\n source_disk=my_source_disk.name,\n zone=\"us-central1-a\")\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\")\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=default_workstation_cluster.location,\n persistent_directories=[{\n \"mount_path\": \"/home\",\n \"gce_pd\": {\n \"source_snapshot\": my_source_snapshot.id,\n \"reclaim_policy\": \"DELETE\",\n },\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var mySourceDisk = new Gcp.Compute.Disk(\"my_source_disk\", new()\n {\n Name = \"workstation-config\",\n Size = 10,\n Type = \"pd-ssd\",\n Zone = \"us-central1-a\",\n });\n\n var mySourceSnapshot = new Gcp.Compute.Snapshot(\"my_source_snapshot\", new()\n {\n Name = \"workstation-config\",\n SourceDisk = mySourceDisk.Name,\n Zone = \"us-central1-a\",\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = defaultWorkstationCluster.Location,\n PersistentDirectories = new[]\n {\n new Gcp.Workstations.Inputs.WorkstationConfigPersistentDirectoryArgs\n {\n MountPath = \"/home\",\n GcePd = new Gcp.Workstations.Inputs.WorkstationConfigPersistentDirectoryGcePdArgs\n {\n SourceSnapshot = mySourceSnapshot.Id,\n ReclaimPolicy = \"DELETE\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/workstations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmySourceDisk, err := compute.NewDisk(ctx, \"my_source_disk\", \u0026compute.DiskArgs{\n\t\t\tName: pulumi.String(\"workstation-config\"),\n\t\t\tSize: pulumi.Int(10),\n\t\t\tType: pulumi.String(\"pd-ssd\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmySourceSnapshot, err := compute.NewSnapshot(ctx, \"my_source_snapshot\", \u0026compute.SnapshotArgs{\n\t\t\tName: pulumi.String(\"workstation-config\"),\n\t\t\tSourceDisk: mySourceDisk.Name,\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\n\t\t\tWorkstationConfigId: pulumi.String(\"workstation-config\"),\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: defaultWorkstationCluster.Location,\n\t\t\tPersistentDirectories: workstations.WorkstationConfigPersistentDirectoryArray{\n\t\t\t\t\u0026workstations.WorkstationConfigPersistentDirectoryArgs{\n\t\t\t\t\tMountPath: pulumi.String(\"/home\"),\n\t\t\t\t\tGcePd: \u0026workstations.WorkstationConfigPersistentDirectoryGcePdArgs{\n\t\t\t\t\t\tSourceSnapshot: mySourceSnapshot.ID(),\n\t\t\t\t\t\tReclaimPolicy: pulumi.String(\"DELETE\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.Disk;\nimport com.pulumi.gcp.compute.DiskArgs;\nimport com.pulumi.gcp.compute.Snapshot;\nimport com.pulumi.gcp.compute.SnapshotArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigPersistentDirectoryArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigPersistentDirectoryGcePdArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var mySourceDisk = new Disk(\"mySourceDisk\", DiskArgs.builder()\n .name(\"workstation-config\")\n .size(10)\n .type(\"pd-ssd\")\n .zone(\"us-central1-a\")\n .build());\n\n var mySourceSnapshot = new Snapshot(\"mySourceSnapshot\", SnapshotArgs.builder()\n .name(\"workstation-config\")\n .sourceDisk(mySourceDisk.name())\n .zone(\"us-central1-a\")\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(defaultWorkstationCluster.location())\n .persistentDirectories(WorkstationConfigPersistentDirectoryArgs.builder()\n .mountPath(\"/home\")\n .gcePd(WorkstationConfigPersistentDirectoryGcePdArgs.builder()\n .sourceSnapshot(mySourceSnapshot.id())\n .reclaimPolicy(\"DELETE\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n mySourceDisk:\n type: gcp:compute:Disk\n name: my_source_disk\n properties:\n name: workstation-config\n size: 10\n type: pd-ssd\n zone: us-central1-a\n mySourceSnapshot:\n type: gcp:compute:Snapshot\n name: my_source_snapshot\n properties:\n name: workstation-config\n sourceDisk: ${mySourceDisk.name}\n zone: us-central1-a\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: ${defaultWorkstationCluster.location}\n persistentDirectories:\n - mountPath: /home\n gcePd:\n sourceSnapshot: ${mySourceSnapshot.id}\n reclaimPolicy: DELETE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Config Shielded Instance Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n host: {\n gceInstance: {\n machineType: \"e2-standard-4\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n shieldedInstanceConfig: {\n enableSecureBoot: true,\n enableVtpm: true,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n host={\n \"gce_instance\": {\n \"machine_type\": \"e2-standard-4\",\n \"boot_disk_size_gb\": 35,\n \"disable_public_ip_addresses\": True,\n \"shielded_instance_config\": {\n \"enable_secure_boot\": True,\n \"enable_vtpm\": True,\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"e2-standard-4\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n ShieldedInstanceConfig = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs\n {\n EnableSecureBoot = true,\n EnableVtpm = true,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/workstations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\n\t\t\tWorkstationConfigId: pulumi.String(\"workstation-config\"),\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHost: \u0026workstations.WorkstationConfigHostArgs{\n\t\t\t\tGceInstance: \u0026workstations.WorkstationConfigHostGceInstanceArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\n\t\t\t\t\tDisablePublicIpAddresses: pulumi.Bool(true),\n\t\t\t\t\tShieldedInstanceConfig: \u0026workstations.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs{\n\t\t\t\t\t\tEnableSecureBoot: pulumi.Bool(true),\n\t\t\t\t\t\tEnableVtpm: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"e2-standard-4\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .shieldedInstanceConfig(WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs.builder()\n .enableSecureBoot(true)\n .enableVtpm(true)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n host:\n gceInstance:\n machineType: e2-standard-4\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n shieldedInstanceConfig:\n enableSecureBoot: true\n enableVtpm: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Config Accelerators\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n host: {\n gceInstance: {\n machineType: \"n1-standard-2\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n accelerators: [{\n type: \"nvidia-tesla-t4\",\n count: 1,\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n host={\n \"gce_instance\": {\n \"machine_type\": \"n1-standard-2\",\n \"boot_disk_size_gb\": 35,\n \"disable_public_ip_addresses\": True,\n \"accelerators\": [{\n \"type\": \"nvidia-tesla-t4\",\n \"count\": 1,\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"n1-standard-2\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n Accelerators = new[]\n {\n new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceAcceleratorArgs\n {\n Type = \"nvidia-tesla-t4\",\n Count = 1,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/workstations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\n\t\t\tWorkstationConfigId: pulumi.String(\"workstation-config\"),\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHost: \u0026workstations.WorkstationConfigHostArgs{\n\t\t\t\tGceInstance: \u0026workstations.WorkstationConfigHostGceInstanceArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"n1-standard-2\"),\n\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\n\t\t\t\t\tDisablePublicIpAddresses: pulumi.Bool(true),\n\t\t\t\t\tAccelerators: workstations.WorkstationConfigHostGceInstanceAcceleratorArray{\n\t\t\t\t\t\t\u0026workstations.WorkstationConfigHostGceInstanceAcceleratorArgs{\n\t\t\t\t\t\t\tType: pulumi.String(\"nvidia-tesla-t4\"),\n\t\t\t\t\t\t\tCount: pulumi.Int(1),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"n1-standard-2\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .accelerators(WorkstationConfigHostGceInstanceAcceleratorArgs.builder()\n .type(\"nvidia-tesla-t4\")\n .count(\"1\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n host:\n gceInstance:\n machineType: n1-standard-2\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n accelerators:\n - type: nvidia-tesla-t4\n count: '1'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Config Boost\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n host: {\n gceInstance: {\n machineType: \"e2-standard-4\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n boostConfigs: [\n {\n id: \"boost-1\",\n machineType: \"n1-standard-2\",\n accelerators: [{\n type: \"nvidia-tesla-t4\",\n count: 1,\n }],\n },\n {\n id: \"boost-2\",\n machineType: \"n1-standard-2\",\n poolSize: 2,\n bootDiskSizeGb: 30,\n enableNestedVirtualization: true,\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n host={\n \"gce_instance\": {\n \"machine_type\": \"e2-standard-4\",\n \"boot_disk_size_gb\": 35,\n \"disable_public_ip_addresses\": True,\n \"boost_configs\": [\n {\n \"id\": \"boost-1\",\n \"machine_type\": \"n1-standard-2\",\n \"accelerators\": [{\n \"type\": \"nvidia-tesla-t4\",\n \"count\": 1,\n }],\n },\n {\n \"id\": \"boost-2\",\n \"machine_type\": \"n1-standard-2\",\n \"pool_size\": 2,\n \"boot_disk_size_gb\": 30,\n \"enable_nested_virtualization\": True,\n },\n ],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"e2-standard-4\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n BoostConfigs = new[]\n {\n new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceBoostConfigArgs\n {\n Id = \"boost-1\",\n MachineType = \"n1-standard-2\",\n Accelerators = new[]\n {\n new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceBoostConfigAcceleratorArgs\n {\n Type = \"nvidia-tesla-t4\",\n Count = 1,\n },\n },\n },\n new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceBoostConfigArgs\n {\n Id = \"boost-2\",\n MachineType = \"n1-standard-2\",\n PoolSize = 2,\n BootDiskSizeGb = 30,\n EnableNestedVirtualization = true,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/workstations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\n\t\t\tWorkstationConfigId: pulumi.String(\"workstation-config\"),\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHost: \u0026workstations.WorkstationConfigHostArgs{\n\t\t\t\tGceInstance: \u0026workstations.WorkstationConfigHostGceInstanceArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\n\t\t\t\t\tDisablePublicIpAddresses: pulumi.Bool(true),\n\t\t\t\t\tBoostConfigs: workstations.WorkstationConfigHostGceInstanceBoostConfigArray{\n\t\t\t\t\t\t\u0026workstations.WorkstationConfigHostGceInstanceBoostConfigArgs{\n\t\t\t\t\t\t\tId: pulumi.String(\"boost-1\"),\n\t\t\t\t\t\t\tMachineType: pulumi.String(\"n1-standard-2\"),\n\t\t\t\t\t\t\tAccelerators: workstations.WorkstationConfigHostGceInstanceBoostConfigAcceleratorArray{\n\t\t\t\t\t\t\t\t\u0026workstations.WorkstationConfigHostGceInstanceBoostConfigAcceleratorArgs{\n\t\t\t\t\t\t\t\t\tType: pulumi.String(\"nvidia-tesla-t4\"),\n\t\t\t\t\t\t\t\t\tCount: pulumi.Int(1),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026workstations.WorkstationConfigHostGceInstanceBoostConfigArgs{\n\t\t\t\t\t\t\tId: pulumi.String(\"boost-2\"),\n\t\t\t\t\t\t\tMachineType: pulumi.String(\"n1-standard-2\"),\n\t\t\t\t\t\t\tPoolSize: pulumi.Int(2),\n\t\t\t\t\t\t\tBootDiskSizeGb: pulumi.Int(30),\n\t\t\t\t\t\t\tEnableNestedVirtualization: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"e2-standard-4\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .boostConfigs( \n WorkstationConfigHostGceInstanceBoostConfigArgs.builder()\n .id(\"boost-1\")\n .machineType(\"n1-standard-2\")\n .accelerators(WorkstationConfigHostGceInstanceBoostConfigAcceleratorArgs.builder()\n .type(\"nvidia-tesla-t4\")\n .count(\"1\")\n .build())\n .build(),\n WorkstationConfigHostGceInstanceBoostConfigArgs.builder()\n .id(\"boost-2\")\n .machineType(\"n1-standard-2\")\n .poolSize(2)\n .bootDiskSizeGb(30)\n .enableNestedVirtualization(true)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n host:\n gceInstance:\n machineType: e2-standard-4\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n boostConfigs:\n - id: boost-1\n machineType: n1-standard-2\n accelerators:\n - type: nvidia-tesla-t4\n count: '1'\n - id: boost-2\n machineType: n1-standard-2\n poolSize: 2\n bootDiskSizeGb: 30\n enableNestedVirtualization: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Workstation Config Encryption Key\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultKeyRing = new gcp.kms.KeyRing(\"default\", {\n name: \"workstation-cluster\",\n location: \"us-central1\",\n});\nconst defaultCryptoKey = new gcp.kms.CryptoKey(\"default\", {\n name: \"workstation-cluster\",\n keyRing: defaultKeyRing.id,\n});\nconst defaultAccount = new gcp.serviceaccount.Account(\"default\", {\n accountId: \"my-account\",\n displayName: \"Service Account\",\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n host: {\n gceInstance: {\n machineType: \"e2-standard-4\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n shieldedInstanceConfig: {\n enableSecureBoot: true,\n enableVtpm: true,\n },\n },\n },\n encryptionKey: {\n kmsKey: defaultCryptoKey.id,\n kmsKeyServiceAccount: defaultAccount.email,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\ndefault_key_ring = gcp.kms.KeyRing(\"default\",\n name=\"workstation-cluster\",\n location=\"us-central1\")\ndefault_crypto_key = gcp.kms.CryptoKey(\"default\",\n name=\"workstation-cluster\",\n key_ring=default_key_ring.id)\ndefault_account = gcp.serviceaccount.Account(\"default\",\n account_id=\"my-account\",\n display_name=\"Service Account\")\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n host={\n \"gce_instance\": {\n \"machine_type\": \"e2-standard-4\",\n \"boot_disk_size_gb\": 35,\n \"disable_public_ip_addresses\": True,\n \"shielded_instance_config\": {\n \"enable_secure_boot\": True,\n \"enable_vtpm\": True,\n },\n },\n },\n encryption_key={\n \"kms_key\": default_crypto_key.id,\n \"kms_key_service_account\": default_account.email,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultKeyRing = new Gcp.Kms.KeyRing(\"default\", new()\n {\n Name = \"workstation-cluster\",\n Location = \"us-central1\",\n });\n\n var defaultCryptoKey = new Gcp.Kms.CryptoKey(\"default\", new()\n {\n Name = \"workstation-cluster\",\n KeyRing = defaultKeyRing.Id,\n });\n\n var defaultAccount = new Gcp.ServiceAccount.Account(\"default\", new()\n {\n AccountId = \"my-account\",\n DisplayName = \"Service Account\",\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"e2-standard-4\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n ShieldedInstanceConfig = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs\n {\n EnableSecureBoot = true,\n EnableVtpm = true,\n },\n },\n },\n EncryptionKey = new Gcp.Workstations.Inputs.WorkstationConfigEncryptionKeyArgs\n {\n KmsKey = defaultCryptoKey.Id,\n KmsKeyServiceAccount = defaultAccount.Email,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/workstations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultKeyRing, err := kms.NewKeyRing(ctx, \"default\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultCryptoKey, err := kms.NewCryptoKey(ctx, \"default\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tKeyRing: defaultKeyRing.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultAccount, err := serviceaccount.NewAccount(ctx, \"default\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-account\"),\n\t\t\tDisplayName: pulumi.String(\"Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\n\t\t\tWorkstationConfigId: pulumi.String(\"workstation-config\"),\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHost: \u0026workstations.WorkstationConfigHostArgs{\n\t\t\t\tGceInstance: \u0026workstations.WorkstationConfigHostGceInstanceArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\n\t\t\t\t\tDisablePublicIpAddresses: pulumi.Bool(true),\n\t\t\t\t\tShieldedInstanceConfig: \u0026workstations.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs{\n\t\t\t\t\t\tEnableSecureBoot: pulumi.Bool(true),\n\t\t\t\t\t\tEnableVtpm: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEncryptionKey: \u0026workstations.WorkstationConfigEncryptionKeyArgs{\n\t\t\t\tKmsKey: defaultCryptoKey.ID(),\n\t\t\t\tKmsKeyServiceAccount: defaultAccount.Email,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigEncryptionKeyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultKeyRing = new KeyRing(\"defaultKeyRing\", KeyRingArgs.builder()\n .name(\"workstation-cluster\")\n .location(\"us-central1\")\n .build());\n\n var defaultCryptoKey = new CryptoKey(\"defaultCryptoKey\", CryptoKeyArgs.builder()\n .name(\"workstation-cluster\")\n .keyRing(defaultKeyRing.id())\n .build());\n\n var defaultAccount = new Account(\"defaultAccount\", AccountArgs.builder()\n .accountId(\"my-account\")\n .displayName(\"Service Account\")\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"e2-standard-4\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .shieldedInstanceConfig(WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs.builder()\n .enableSecureBoot(true)\n .enableVtpm(true)\n .build())\n .build())\n .build())\n .encryptionKey(WorkstationConfigEncryptionKeyArgs.builder()\n .kmsKey(defaultCryptoKey.id())\n .kmsKeyServiceAccount(defaultAccount.email())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultKeyRing:\n type: gcp:kms:KeyRing\n name: default\n properties:\n name: workstation-cluster\n location: us-central1\n defaultCryptoKey:\n type: gcp:kms:CryptoKey\n name: default\n properties:\n name: workstation-cluster\n keyRing: ${defaultKeyRing.id}\n defaultAccount:\n type: gcp:serviceaccount:Account\n name: default\n properties:\n accountId: my-account\n displayName: Service Account\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n host:\n gceInstance:\n machineType: e2-standard-4\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n shieldedInstanceConfig:\n enableSecureBoot: true\n enableVtpm: true\n encryptionKey:\n kmsKey: ${defaultCryptoKey.id}\n kmsKeyServiceAccount: ${defaultAccount.email}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nWorkstationConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/workstationClusters/{{workstation_cluster_id}}/workstationConfigs/{{workstation_config_id}}`\n\n* `{{project}}/{{location}}/{{workstation_cluster_id}}/{{workstation_config_id}}`\n\n* `{{location}}/{{workstation_cluster_id}}/{{workstation_config_id}}`\n\nWhen using the `pulumi import` command, WorkstationConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:workstations/workstationConfig:WorkstationConfig default projects/{{project}}/locations/{{location}}/workstationClusters/{{workstation_cluster_id}}/workstationConfigs/{{workstation_config_id}}\n```\n\n```sh\n$ pulumi import gcp:workstations/workstationConfig:WorkstationConfig default {{project}}/{{location}}/{{workstation_cluster_id}}/{{workstation_config_id}}\n```\n\n```sh\n$ pulumi import gcp:workstations/workstationConfig:WorkstationConfig default {{location}}/{{workstation_cluster_id}}/{{workstation_config_id}}\n```\n\n", "properties": { "annotations": { "type": "object", @@ -261969,7 +261969,7 @@ } }, "gcp:alloydb/getLocations:getLocations": { - "description": "Use this data source to get information about the available locations. For more details refer the [API docs](https://cloud.google.com/alloydb/docs/reference/rest/v1/projects.locations).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst qa = gcp.alloydb.getLocations({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nqa = gcp.alloydb.get_locations()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var qa = Gcp.Alloydb.GetLocations.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/alloydb\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := alloydb.GetLocations(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.alloydb.AlloydbFunctions;\nimport com.pulumi.gcp.alloydb.inputs.GetLocationsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var qa = AlloydbFunctions.getLocations();\n\n }\n}\n```\n```yaml\nvariables:\n qa:\n fn::invoke:\n Function: gcp:alloydb:getLocations\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Use this data source to get information about the available locations. For more details refer the [API docs](https://cloud.google.com/alloydb/docs/reference/rest/v1/projects.locations).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst qa = gcp.alloydb.getLocations({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nqa = gcp.alloydb.get_locations()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var qa = Gcp.Alloydb.GetLocations.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/alloydb\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := alloydb.GetLocations(ctx, \u0026alloydb.GetLocationsArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.alloydb.AlloydbFunctions;\nimport com.pulumi.gcp.alloydb.inputs.GetLocationsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var qa = AlloydbFunctions.getLocations();\n\n }\n}\n```\n```yaml\nvariables:\n qa:\n fn::invoke:\n Function: gcp:alloydb:getLocations\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getLocations.\n", "properties": { @@ -262279,7 +262279,7 @@ } }, "gcp:appengine/getDefaultServiceAccount:getDefaultServiceAccount": { - "description": "Use this data source to retrieve the default App Engine service account for the specified project.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.appengine.getDefaultServiceAccount({});\nexport const defaultAccount = _default.then(_default =\u003e _default.email);\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.appengine.get_default_service_account()\npulumi.export(\"defaultAccount\", default.email)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.AppEngine.GetDefaultServiceAccount.Invoke();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"defaultAccount\"] = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Email)),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/appengine\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := appengine.GetDefaultServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"defaultAccount\", _default.Email)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.appengine.AppengineFunctions;\nimport com.pulumi.gcp.appengine.inputs.GetDefaultServiceAccountArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = AppengineFunctions.getDefaultServiceAccount();\n\n ctx.export(\"defaultAccount\", default_.email());\n }\n}\n```\n```yaml\nvariables:\n default:\n fn::invoke:\n Function: gcp:appengine:getDefaultServiceAccount\n Arguments: {}\noutputs:\n defaultAccount: ${default.email}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Use this data source to retrieve the default App Engine service account for the specified project.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.appengine.getDefaultServiceAccount({});\nexport const defaultAccount = _default.then(_default =\u003e _default.email);\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.appengine.get_default_service_account()\npulumi.export(\"defaultAccount\", default.email)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.AppEngine.GetDefaultServiceAccount.Invoke();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"defaultAccount\"] = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Email)),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/appengine\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := appengine.GetDefaultServiceAccount(ctx, \u0026appengine.GetDefaultServiceAccountArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"defaultAccount\", _default.Email)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.appengine.AppengineFunctions;\nimport com.pulumi.gcp.appengine.inputs.GetDefaultServiceAccountArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = AppengineFunctions.getDefaultServiceAccount();\n\n ctx.export(\"defaultAccount\", default_.email());\n }\n}\n```\n```yaml\nvariables:\n default:\n fn::invoke:\n Function: gcp:appengine:getDefaultServiceAccount\n Arguments: {}\noutputs:\n defaultAccount: ${default.email}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getDefaultServiceAccount.\n", "properties": { @@ -262667,7 +262667,7 @@ } }, "gcp:artifactregistry/getLocations:getLocations": { - "description": "Get Artifact Registry locations available for a project. \n\nTo get more information about Artifact Registry, see:\n\n* [API documentation](https://cloud.google.com/artifact-registry/docs/reference/rest/v1/projects.locations/list)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/artifact-registry/docs/overview)\n \n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst available = gcp.artifactregistry.getLocations({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\navailable = gcp.artifactregistry.get_locations()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var available = Gcp.ArtifactRegistry.GetLocations.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := artifactregistry.GetLocations(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.ArtifactregistryFunctions;\nimport com.pulumi.gcp.artifactregistry.inputs.GetLocationsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var available = ArtifactregistryFunctions.getLocations();\n\n }\n}\n```\n```yaml\nvariables:\n available:\n fn::invoke:\n Function: gcp:artifactregistry:getLocations\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### Multi-Regional Artifact Registry Deployment\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst available = gcp.artifactregistry.getLocations({});\nconst repoOne = new gcp.artifactregistry.Repository(\"repo_one\", {\n location: available.then(available =\u003e available.locations?.[0]),\n repositoryId: \"repo-one\",\n format: \"apt\",\n});\nconst repoTwo = new gcp.artifactregistry.Repository(\"repo_two\", {\n location: available.then(available =\u003e available.locations?.[1]),\n repositoryId: \"repo-two\",\n format: \"apt\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\navailable = gcp.artifactregistry.get_locations()\nrepo_one = gcp.artifactregistry.Repository(\"repo_one\",\n location=available.locations[0],\n repository_id=\"repo-one\",\n format=\"apt\")\nrepo_two = gcp.artifactregistry.Repository(\"repo_two\",\n location=available.locations[1],\n repository_id=\"repo-two\",\n format=\"apt\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var available = Gcp.ArtifactRegistry.GetLocations.Invoke();\n\n var repoOne = new Gcp.ArtifactRegistry.Repository(\"repo_one\", new()\n {\n Location = available.Apply(getLocationsResult =\u003e getLocationsResult.Locations[0]),\n RepositoryId = \"repo-one\",\n Format = \"apt\",\n });\n\n var repoTwo = new Gcp.ArtifactRegistry.Repository(\"repo_two\", new()\n {\n Location = available.Apply(getLocationsResult =\u003e getLocationsResult.Locations[1]),\n RepositoryId = \"repo-two\",\n Format = \"apt\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tavailable, err := artifactregistry.GetLocations(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"repo_one\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(available.Locations[0]),\n\t\t\tRepositoryId: pulumi.String(\"repo-one\"),\n\t\t\tFormat: pulumi.String(\"apt\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"repo_two\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(available.Locations[1]),\n\t\t\tRepositoryId: pulumi.String(\"repo-two\"),\n\t\t\tFormat: pulumi.String(\"apt\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.ArtifactregistryFunctions;\nimport com.pulumi.gcp.artifactregistry.inputs.GetLocationsArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var available = ArtifactregistryFunctions.getLocations();\n\n var repoOne = new Repository(\"repoOne\", RepositoryArgs.builder()\n .location(available.applyValue(getLocationsResult -\u003e getLocationsResult.locations()[0]))\n .repositoryId(\"repo-one\")\n .format(\"apt\")\n .build());\n\n var repoTwo = new Repository(\"repoTwo\", RepositoryArgs.builder()\n .location(available.applyValue(getLocationsResult -\u003e getLocationsResult.locations()[1]))\n .repositoryId(\"repo-two\")\n .format(\"apt\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n repoOne:\n type: gcp:artifactregistry:Repository\n name: repo_one\n properties:\n location: ${available.locations[0]}\n repositoryId: repo-one\n format: apt\n repoTwo:\n type: gcp:artifactregistry:Repository\n name: repo_two\n properties:\n location: ${available.locations[1]}\n repositoryId: repo-two\n format: apt\nvariables:\n available:\n fn::invoke:\n Function: gcp:artifactregistry:getLocations\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Get Artifact Registry locations available for a project. \n\nTo get more information about Artifact Registry, see:\n\n* [API documentation](https://cloud.google.com/artifact-registry/docs/reference/rest/v1/projects.locations/list)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/artifact-registry/docs/overview)\n \n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst available = gcp.artifactregistry.getLocations({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\navailable = gcp.artifactregistry.get_locations()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var available = Gcp.ArtifactRegistry.GetLocations.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := artifactregistry.GetLocations(ctx, \u0026artifactregistry.GetLocationsArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.ArtifactregistryFunctions;\nimport com.pulumi.gcp.artifactregistry.inputs.GetLocationsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var available = ArtifactregistryFunctions.getLocations();\n\n }\n}\n```\n```yaml\nvariables:\n available:\n fn::invoke:\n Function: gcp:artifactregistry:getLocations\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### Multi-Regional Artifact Registry Deployment\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst available = gcp.artifactregistry.getLocations({});\nconst repoOne = new gcp.artifactregistry.Repository(\"repo_one\", {\n location: available.then(available =\u003e available.locations?.[0]),\n repositoryId: \"repo-one\",\n format: \"apt\",\n});\nconst repoTwo = new gcp.artifactregistry.Repository(\"repo_two\", {\n location: available.then(available =\u003e available.locations?.[1]),\n repositoryId: \"repo-two\",\n format: \"apt\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\navailable = gcp.artifactregistry.get_locations()\nrepo_one = gcp.artifactregistry.Repository(\"repo_one\",\n location=available.locations[0],\n repository_id=\"repo-one\",\n format=\"apt\")\nrepo_two = gcp.artifactregistry.Repository(\"repo_two\",\n location=available.locations[1],\n repository_id=\"repo-two\",\n format=\"apt\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var available = Gcp.ArtifactRegistry.GetLocations.Invoke();\n\n var repoOne = new Gcp.ArtifactRegistry.Repository(\"repo_one\", new()\n {\n Location = available.Apply(getLocationsResult =\u003e getLocationsResult.Locations[0]),\n RepositoryId = \"repo-one\",\n Format = \"apt\",\n });\n\n var repoTwo = new Gcp.ArtifactRegistry.Repository(\"repo_two\", new()\n {\n Location = available.Apply(getLocationsResult =\u003e getLocationsResult.Locations[1]),\n RepositoryId = \"repo-two\",\n Format = \"apt\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tavailable, err := artifactregistry.GetLocations(ctx, \u0026artifactregistry.GetLocationsArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"repo_one\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(available.Locations[0]),\n\t\t\tRepositoryId: pulumi.String(\"repo-one\"),\n\t\t\tFormat: pulumi.String(\"apt\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"repo_two\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(available.Locations[1]),\n\t\t\tRepositoryId: pulumi.String(\"repo-two\"),\n\t\t\tFormat: pulumi.String(\"apt\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.ArtifactregistryFunctions;\nimport com.pulumi.gcp.artifactregistry.inputs.GetLocationsArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var available = ArtifactregistryFunctions.getLocations();\n\n var repoOne = new Repository(\"repoOne\", RepositoryArgs.builder()\n .location(available.applyValue(getLocationsResult -\u003e getLocationsResult.locations()[0]))\n .repositoryId(\"repo-one\")\n .format(\"apt\")\n .build());\n\n var repoTwo = new Repository(\"repoTwo\", RepositoryArgs.builder()\n .location(available.applyValue(getLocationsResult -\u003e getLocationsResult.locations()[1]))\n .repositoryId(\"repo-two\")\n .format(\"apt\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n repoOne:\n type: gcp:artifactregistry:Repository\n name: repo_one\n properties:\n location: ${available.locations[0]}\n repositoryId: repo-one\n format: apt\n repoTwo:\n type: gcp:artifactregistry:Repository\n name: repo_two\n properties:\n location: ${available.locations[1]}\n repositoryId: repo-two\n format: apt\nvariables:\n available:\n fn::invoke:\n Function: gcp:artifactregistry:getLocations\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getLocations.\n", "properties": { @@ -263511,7 +263511,7 @@ } }, "gcp:bigquery/getDefaultServiceAccount:getDefaultServiceAccount": { - "description": "Get the email address of a project's unique BigQuery service account.\n\nEach Google Cloud project has a unique service account used by BigQuery. When using\nBigQuery with [customer-managed encryption keys](https://cloud.google.com/bigquery/docs/customer-managed-encryption),\nthis account needs to be granted the\n`cloudkms.cryptoKeyEncrypterDecrypter` IAM role on the customer-managed Cloud KMS key used to protect the data.\n\nFor more information see\n[the API reference](https://cloud.google.com/bigquery/docs/reference/rest/v2/projects/getServiceAccount).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bqSa = gcp.bigquery.getDefaultServiceAccount({});\nconst keySaUser = new gcp.kms.CryptoKeyIAMMember(\"key_sa_user\", {\n cryptoKeyId: key.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: bqSa.then(bqSa =\u003e `serviceAccount:${bqSa.email}`),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbq_sa = gcp.bigquery.get_default_service_account()\nkey_sa_user = gcp.kms.CryptoKeyIAMMember(\"key_sa_user\",\n crypto_key_id=key[\"id\"],\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:{bq_sa.email}\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bqSa = Gcp.BigQuery.GetDefaultServiceAccount.Invoke();\n\n var keySaUser = new Gcp.Kms.CryptoKeyIAMMember(\"key_sa_user\", new()\n {\n CryptoKeyId = key.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:{bqSa.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Email)}\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbqSa, err := bigquery.GetDefaultServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kms.NewCryptoKeyIAMMember(ctx, \"key_sa_user\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.Any(key.Id),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:%v\", bqSa.Email),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.BigqueryFunctions;\nimport com.pulumi.gcp.bigquery.inputs.GetDefaultServiceAccountArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var bqSa = BigqueryFunctions.getDefaultServiceAccount();\n\n var keySaUser = new CryptoKeyIAMMember(\"keySaUser\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(key.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:%s\", bqSa.applyValue(getDefaultServiceAccountResult -\u003e getDefaultServiceAccountResult.email())))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n keySaUser:\n type: gcp:kms:CryptoKeyIAMMember\n name: key_sa_user\n properties:\n cryptoKeyId: ${key.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:${bqSa.email}\nvariables:\n bqSa:\n fn::invoke:\n Function: gcp:bigquery:getDefaultServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Get the email address of a project's unique BigQuery service account.\n\nEach Google Cloud project has a unique service account used by BigQuery. When using\nBigQuery with [customer-managed encryption keys](https://cloud.google.com/bigquery/docs/customer-managed-encryption),\nthis account needs to be granted the\n`cloudkms.cryptoKeyEncrypterDecrypter` IAM role on the customer-managed Cloud KMS key used to protect the data.\n\nFor more information see\n[the API reference](https://cloud.google.com/bigquery/docs/reference/rest/v2/projects/getServiceAccount).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bqSa = gcp.bigquery.getDefaultServiceAccount({});\nconst keySaUser = new gcp.kms.CryptoKeyIAMMember(\"key_sa_user\", {\n cryptoKeyId: key.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: bqSa.then(bqSa =\u003e `serviceAccount:${bqSa.email}`),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbq_sa = gcp.bigquery.get_default_service_account()\nkey_sa_user = gcp.kms.CryptoKeyIAMMember(\"key_sa_user\",\n crypto_key_id=key[\"id\"],\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:{bq_sa.email}\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bqSa = Gcp.BigQuery.GetDefaultServiceAccount.Invoke();\n\n var keySaUser = new Gcp.Kms.CryptoKeyIAMMember(\"key_sa_user\", new()\n {\n CryptoKeyId = key.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:{bqSa.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Email)}\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbqSa, err := bigquery.GetDefaultServiceAccount(ctx, \u0026bigquery.GetDefaultServiceAccountArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kms.NewCryptoKeyIAMMember(ctx, \"key_sa_user\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.Any(key.Id),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:%v\", bqSa.Email),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.BigqueryFunctions;\nimport com.pulumi.gcp.bigquery.inputs.GetDefaultServiceAccountArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var bqSa = BigqueryFunctions.getDefaultServiceAccount();\n\n var keySaUser = new CryptoKeyIAMMember(\"keySaUser\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(key.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:%s\", bqSa.applyValue(getDefaultServiceAccountResult -\u003e getDefaultServiceAccountResult.email())))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n keySaUser:\n type: gcp:kms:CryptoKeyIAMMember\n name: key_sa_user\n properties:\n cryptoKeyId: ${key.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:${bqSa.email}\nvariables:\n bqSa:\n fn::invoke:\n Function: gcp:bigquery:getDefaultServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getDefaultServiceAccount.\n", "properties": { @@ -264433,7 +264433,7 @@ } }, "gcp:certificatemanager/getCertificates:getCertificates": { - "description": "List all certificates within Google Certificate Manager for a given project, region or filter.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.certificatemanager.getCertificates({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.certificatemanager.get_certificates()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.CertificateManager.GetCertificates.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := certificatemanager.GetCertificates(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificatemanager.CertificatemanagerFunctions;\nimport com.pulumi.gcp.certificatemanager.inputs.GetCertificatesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = CertificatemanagerFunctions.getCertificates();\n\n }\n}\n```\n```yaml\nvariables:\n default:\n fn::invoke:\n Function: gcp:certificatemanager:getCertificates\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With A Filter\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.certificatemanager.getCertificates({\n filter: \"name:projects/PROJECT_ID/locations/REGION/certificates/certificate-name-*\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.certificatemanager.get_certificates(filter=\"name:projects/PROJECT_ID/locations/REGION/certificates/certificate-name-*\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.CertificateManager.GetCertificates.Invoke(new()\n {\n Filter = \"name:projects/PROJECT_ID/locations/REGION/certificates/certificate-name-*\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := certificatemanager.GetCertificates(ctx, \u0026certificatemanager.GetCertificatesArgs{\n\t\t\tFilter: pulumi.StringRef(\"name:projects/PROJECT_ID/locations/REGION/certificates/certificate-name-*\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificatemanager.CertificatemanagerFunctions;\nimport com.pulumi.gcp.certificatemanager.inputs.GetCertificatesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = CertificatemanagerFunctions.getCertificates(GetCertificatesArgs.builder()\n .filter(\"name:projects/PROJECT_ID/locations/REGION/certificates/certificate-name-*\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n default:\n fn::invoke:\n Function: gcp:certificatemanager:getCertificates\n Arguments:\n filter: name:projects/PROJECT_ID/locations/REGION/certificates/certificate-name-*\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "List all certificates within Google Certificate Manager for a given project, region or filter.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.certificatemanager.getCertificates({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.certificatemanager.get_certificates()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.CertificateManager.GetCertificates.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := certificatemanager.GetCertificates(ctx, \u0026certificatemanager.GetCertificatesArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificatemanager.CertificatemanagerFunctions;\nimport com.pulumi.gcp.certificatemanager.inputs.GetCertificatesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = CertificatemanagerFunctions.getCertificates();\n\n }\n}\n```\n```yaml\nvariables:\n default:\n fn::invoke:\n Function: gcp:certificatemanager:getCertificates\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### With A Filter\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.certificatemanager.getCertificates({\n filter: \"name:projects/PROJECT_ID/locations/REGION/certificates/certificate-name-*\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.certificatemanager.get_certificates(filter=\"name:projects/PROJECT_ID/locations/REGION/certificates/certificate-name-*\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.CertificateManager.GetCertificates.Invoke(new()\n {\n Filter = \"name:projects/PROJECT_ID/locations/REGION/certificates/certificate-name-*\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificatemanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := certificatemanager.GetCertificates(ctx, \u0026certificatemanager.GetCertificatesArgs{\n\t\t\tFilter: pulumi.StringRef(\"name:projects/PROJECT_ID/locations/REGION/certificates/certificate-name-*\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificatemanager.CertificatemanagerFunctions;\nimport com.pulumi.gcp.certificatemanager.inputs.GetCertificatesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = CertificatemanagerFunctions.getCertificates(GetCertificatesArgs.builder()\n .filter(\"name:projects/PROJECT_ID/locations/REGION/certificates/certificate-name-*\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n default:\n fn::invoke:\n Function: gcp:certificatemanager:getCertificates\n Arguments:\n filter: name:projects/PROJECT_ID/locations/REGION/certificates/certificate-name-*\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getCertificates.\n", "properties": { @@ -265827,7 +265827,7 @@ } }, "gcp:cloudrun/getLocations:getLocations": { - "description": "Get Cloud Run locations available for a project. \n\nTo get more information about Cloud Run, see:\n\n* [API documentation](https://cloud.google.com/run/docs/reference/rest/v1/projects.locations)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/run/docs/)\n \n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst available = gcp.cloudrun.getLocations({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\navailable = gcp.cloudrun.get_locations()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var available = Gcp.CloudRun.GetLocations.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrun\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudrun.GetLocations(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudrun.CloudrunFunctions;\nimport com.pulumi.gcp.cloudrun.inputs.GetLocationsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var available = CloudrunFunctions.getLocations();\n\n }\n}\n```\n```yaml\nvariables:\n available:\n fn::invoke:\n Function: gcp:cloudrun:getLocations\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n", + "description": "Get Cloud Run locations available for a project. \n\nTo get more information about Cloud Run, see:\n\n* [API documentation](https://cloud.google.com/run/docs/reference/rest/v1/projects.locations)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/run/docs/)\n \n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst available = gcp.cloudrun.getLocations({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\navailable = gcp.cloudrun.get_locations()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var available = Gcp.CloudRun.GetLocations.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrun\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudrun.GetLocations(ctx, \u0026cloudrun.GetLocationsArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudrun.CloudrunFunctions;\nimport com.pulumi.gcp.cloudrun.inputs.GetLocationsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var available = CloudrunFunctions.getLocations();\n\n }\n}\n```\n```yaml\nvariables:\n available:\n fn::invoke:\n Function: gcp:cloudrun:getLocations\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n", "inputs": { "description": "A collection of arguments for invoking getLocations.\n", "properties": { @@ -266694,7 +266694,7 @@ } }, "gcp:composer/getImageVersions:getImageVersions": { - "description": "Provides access to available Cloud Composer versions in a region for a given project.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst all = gcp.composer.getImageVersions({});\nconst test = new gcp.composer.Environment(\"test\", {\n name: \"test-env\",\n region: \"us-central1\",\n config: {\n softwareConfig: {\n imageVersion: all.then(all =\u003e all.imageVersions?.[0]?.imageVersionId),\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nall = gcp.composer.get_image_versions()\ntest = gcp.composer.Environment(\"test\",\n name=\"test-env\",\n region=\"us-central1\",\n config={\n \"software_config\": {\n \"image_version\": all.image_versions[0].image_version_id,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var all = Gcp.Composer.GetImageVersions.Invoke();\n\n var test = new Gcp.Composer.Environment(\"test\", new()\n {\n Name = \"test-env\",\n Region = \"us-central1\",\n Config = new Gcp.Composer.Inputs.EnvironmentConfigArgs\n {\n SoftwareConfig = new Gcp.Composer.Inputs.EnvironmentConfigSoftwareConfigArgs\n {\n ImageVersion = all.Apply(getImageVersionsResult =\u003e getImageVersionsResult.ImageVersions[0]?.ImageVersionId),\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/composer\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tall, err := composer.GetImageVersions(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = composer.NewEnvironment(ctx, \"test\", \u0026composer.EnvironmentArgs{\n\t\t\tName: pulumi.String(\"test-env\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tConfig: \u0026composer.EnvironmentConfigArgs{\n\t\t\t\tSoftwareConfig: \u0026composer.EnvironmentConfigSoftwareConfigArgs{\n\t\t\t\t\tImageVersion: pulumi.String(all.ImageVersions[0].ImageVersionId),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.composer.ComposerFunctions;\nimport com.pulumi.gcp.composer.inputs.GetImageVersionsArgs;\nimport com.pulumi.gcp.composer.Environment;\nimport com.pulumi.gcp.composer.EnvironmentArgs;\nimport com.pulumi.gcp.composer.inputs.EnvironmentConfigArgs;\nimport com.pulumi.gcp.composer.inputs.EnvironmentConfigSoftwareConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var all = ComposerFunctions.getImageVersions();\n\n var test = new Environment(\"test\", EnvironmentArgs.builder()\n .name(\"test-env\")\n .region(\"us-central1\")\n .config(EnvironmentConfigArgs.builder()\n .softwareConfig(EnvironmentConfigSoftwareConfigArgs.builder()\n .imageVersion(all.applyValue(getImageVersionsResult -\u003e getImageVersionsResult.imageVersions()[0].imageVersionId()))\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:composer:Environment\n properties:\n name: test-env\n region: us-central1\n config:\n softwareConfig:\n imageVersion: ${all.imageVersions[0].imageVersionId}\nvariables:\n all:\n fn::invoke:\n Function: gcp:composer:getImageVersions\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Provides access to available Cloud Composer versions in a region for a given project.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst all = gcp.composer.getImageVersions({});\nconst test = new gcp.composer.Environment(\"test\", {\n name: \"test-env\",\n region: \"us-central1\",\n config: {\n softwareConfig: {\n imageVersion: all.then(all =\u003e all.imageVersions?.[0]?.imageVersionId),\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nall = gcp.composer.get_image_versions()\ntest = gcp.composer.Environment(\"test\",\n name=\"test-env\",\n region=\"us-central1\",\n config={\n \"software_config\": {\n \"image_version\": all.image_versions[0].image_version_id,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var all = Gcp.Composer.GetImageVersions.Invoke();\n\n var test = new Gcp.Composer.Environment(\"test\", new()\n {\n Name = \"test-env\",\n Region = \"us-central1\",\n Config = new Gcp.Composer.Inputs.EnvironmentConfigArgs\n {\n SoftwareConfig = new Gcp.Composer.Inputs.EnvironmentConfigSoftwareConfigArgs\n {\n ImageVersion = all.Apply(getImageVersionsResult =\u003e getImageVersionsResult.ImageVersions[0]?.ImageVersionId),\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/composer\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tall, err := composer.GetImageVersions(ctx, \u0026composer.GetImageVersionsArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = composer.NewEnvironment(ctx, \"test\", \u0026composer.EnvironmentArgs{\n\t\t\tName: pulumi.String(\"test-env\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tConfig: \u0026composer.EnvironmentConfigArgs{\n\t\t\t\tSoftwareConfig: \u0026composer.EnvironmentConfigSoftwareConfigArgs{\n\t\t\t\t\tImageVersion: pulumi.String(all.ImageVersions[0].ImageVersionId),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.composer.ComposerFunctions;\nimport com.pulumi.gcp.composer.inputs.GetImageVersionsArgs;\nimport com.pulumi.gcp.composer.Environment;\nimport com.pulumi.gcp.composer.EnvironmentArgs;\nimport com.pulumi.gcp.composer.inputs.EnvironmentConfigArgs;\nimport com.pulumi.gcp.composer.inputs.EnvironmentConfigSoftwareConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var all = ComposerFunctions.getImageVersions();\n\n var test = new Environment(\"test\", EnvironmentArgs.builder()\n .name(\"test-env\")\n .region(\"us-central1\")\n .config(EnvironmentConfigArgs.builder()\n .softwareConfig(EnvironmentConfigSoftwareConfigArgs.builder()\n .imageVersion(all.applyValue(getImageVersionsResult -\u003e getImageVersionsResult.imageVersions()[0].imageVersionId()))\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:composer:Environment\n properties:\n name: test-env\n region: us-central1\n config:\n softwareConfig:\n imageVersion: ${all.imageVersions[0].imageVersionId}\nvariables:\n all:\n fn::invoke:\n Function: gcp:composer:getImageVersions\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getImageVersions.\n", "properties": { @@ -267478,7 +267478,7 @@ } }, "gcp:compute/getDefaultServiceAccount:getDefaultServiceAccount": { - "description": "Use this data source to retrieve default service account for this project\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.compute.getDefaultServiceAccount({});\nexport const defaultAccount = _default.then(_default =\u003e _default.email);\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_default_service_account()\npulumi.export(\"defaultAccount\", default.email)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Compute.GetDefaultServiceAccount.Invoke();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"defaultAccount\"] = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Email)),\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_default, err := compute.GetDefaultServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"defaultAccount\", _default.Email)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetDefaultServiceAccountArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = ComputeFunctions.getDefaultServiceAccount();\n\n ctx.export(\"defaultAccount\", default_.email());\n }\n}\n```\n```yaml\nvariables:\n default:\n fn::invoke:\n Function: gcp:compute:getDefaultServiceAccount\n Arguments: {}\noutputs:\n defaultAccount: ${default.email}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Use this data source to retrieve default service account for this project\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.compute.getDefaultServiceAccount({});\nexport const defaultAccount = _default.then(_default =\u003e _default.email);\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_default_service_account()\npulumi.export(\"defaultAccount\", default.email)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Compute.GetDefaultServiceAccount.Invoke();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"defaultAccount\"] = @default.Apply(@default =\u003e @default.Apply(getDefaultServiceAccountResult =\u003e getDefaultServiceAccountResult.Email)),\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_default, err := compute.GetDefaultServiceAccount(ctx, \u0026compute.GetDefaultServiceAccountArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"defaultAccount\", _default.Email)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetDefaultServiceAccountArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = ComputeFunctions.getDefaultServiceAccount();\n\n ctx.export(\"defaultAccount\", default_.email());\n }\n}\n```\n```yaml\nvariables:\n default:\n fn::invoke:\n Function: gcp:compute:getDefaultServiceAccount\n Arguments: {}\noutputs:\n defaultAccount: ${default.email}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getDefaultServiceAccount.\n", "properties": { @@ -269323,7 +269323,7 @@ } }, "gcp:compute/getInstanceSerialPort:getInstanceSerialPort": { - "description": "Get the serial port output from a Compute Instance. For more information see\nthe official [API](https://cloud.google.com/compute/docs/instances/viewing-serial-port-output) documentation.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst serial = gcp.compute.getInstanceSerialPort({\n instance: \"my-instance\",\n zone: \"us-central1-a\",\n port: 1,\n});\nexport const serialOut = serial.then(serial =\u003e serial.contents);\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nserial = gcp.compute.get_instance_serial_port(instance=\"my-instance\",\n zone=\"us-central1-a\",\n port=1)\npulumi.export(\"serialOut\", serial.contents)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var serial = Gcp.Compute.GetInstanceSerialPort.Invoke(new()\n {\n Instance = \"my-instance\",\n Zone = \"us-central1-a\",\n Port = 1,\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"serialOut\"] = serial.Apply(getInstanceSerialPortResult =\u003e getInstanceSerialPortResult.Contents),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tserial, err := compute.GetInstanceSerialPort(ctx, \u0026compute.GetInstanceSerialPortArgs{\n\t\t\tInstance: \"my-instance\",\n\t\t\tZone: pulumi.StringRef(\"us-central1-a\"),\n\t\t\tPort: 1,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"serialOut\", serial.Contents)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetInstanceSerialPortArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var serial = ComputeFunctions.getInstanceSerialPort(GetInstanceSerialPortArgs.builder()\n .instance(\"my-instance\")\n .zone(\"us-central1-a\")\n .port(1)\n .build());\n\n ctx.export(\"serialOut\", serial.applyValue(getInstanceSerialPortResult -\u003e getInstanceSerialPortResult.contents()));\n }\n}\n```\n```yaml\nvariables:\n serial:\n fn::invoke:\n Function: gcp:compute:getInstanceSerialPort\n Arguments:\n instance: my-instance\n zone: us-central1-a\n port: 1\noutputs:\n serialOut: ${serial.contents}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nUsing the serial port output to generate a windows password, derived from the [official guide](https://cloud.google.com/compute/docs/instances/windows/automate-pw-generation):\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst windows = new gcp.compute.Instance(\"windows\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n network: \"default\",\n }],\n name: \"windows-instance\",\n machineType: \"e2-medium\",\n zone: \"us-central1-a\",\n bootDisk: {\n initializeParams: {\n image: \"windows-cloud/windows-2019\",\n },\n },\n metadata: {\n \"serial-port-logging-enable\": \"TRUE\",\n \"windows-keys\": JSON.stringify({\n email: \"example.user@example.com\",\n expireOn: \"2020-04-14T01:37:19Z\",\n exponent: \"AQAB\",\n modulus: \"wgsquN4IBNPqIUnu+h/5Za1kujb2YRhX1vCQVQAkBwnWigcCqOBVfRa5JoZfx6KIvEXjWqa77jPvlsxM4WPqnDIM2qiK36up3SKkYwFjff6F2ni/ry8vrwXCX3sGZ1hbIHlK0O012HpA3ISeEswVZmX2X67naOvJXfY5v0hGPWqCADao+xVxrmxsZD4IWnKl1UaZzI5lhAzr8fw6utHwx1EZ/MSgsEki6tujcZfN+GUDRnmJGQSnPTXmsf7Q4DKreTZk49cuyB3prV91S0x3DYjCUpSXrkVy1Ha5XicGD/q+ystuFsJnrrhbNXJbpSjM6sjo/aduAkZJl4FmOt0R7Q==\",\n userName: \"example-user\",\n }),\n },\n serviceAccount: {\n scopes: [\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n ],\n },\n});\nconst serial = pulumi.all([windows.name, windows.zone]).apply(([name, zone]) =\u003e gcp.compute.getInstanceSerialPortOutput({\n instance: name,\n zone: zone,\n port: 4,\n}));\nexport const serialOut = serial.apply(serial =\u003e serial.contents);\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\nwindows = gcp.compute.Instance(\"windows\",\n network_interfaces=[{\n \"access_configs\": [{}],\n \"network\": \"default\",\n }],\n name=\"windows-instance\",\n machine_type=\"e2-medium\",\n zone=\"us-central1-a\",\n boot_disk={\n \"initialize_params\": {\n \"image\": \"windows-cloud/windows-2019\",\n },\n },\n metadata={\n \"serial-port-logging-enable\": \"TRUE\",\n \"windows-keys\": json.dumps({\n \"email\": \"example.user@example.com\",\n \"expireOn\": \"2020-04-14T01:37:19Z\",\n \"exponent\": \"AQAB\",\n \"modulus\": \"wgsquN4IBNPqIUnu+h/5Za1kujb2YRhX1vCQVQAkBwnWigcCqOBVfRa5JoZfx6KIvEXjWqa77jPvlsxM4WPqnDIM2qiK36up3SKkYwFjff6F2ni/ry8vrwXCX3sGZ1hbIHlK0O012HpA3ISeEswVZmX2X67naOvJXfY5v0hGPWqCADao+xVxrmxsZD4IWnKl1UaZzI5lhAzr8fw6utHwx1EZ/MSgsEki6tujcZfN+GUDRnmJGQSnPTXmsf7Q4DKreTZk49cuyB3prV91S0x3DYjCUpSXrkVy1Ha5XicGD/q+ystuFsJnrrhbNXJbpSjM6sjo/aduAkZJl4FmOt0R7Q==\",\n \"userName\": \"example-user\",\n }),\n },\n service_account={\n \"scopes\": [\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n ],\n })\nserial = pulumi.Output.all(\n name=windows.name,\n zone=windows.zone\n).apply(lambda resolved_outputs: gcp.compute.get_instance_serial_port_output(instance=resolved_outputs['name'],\n zone=resolved_outputs['zone'],\n port=4))\n\npulumi.export(\"serialOut\", serial.contents)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var windows = new Gcp.Compute.Instance(\"windows\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Network = \"default\",\n },\n },\n Name = \"windows-instance\",\n MachineType = \"e2-medium\",\n Zone = \"us-central1-a\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = \"windows-cloud/windows-2019\",\n },\n },\n Metadata = \n {\n { \"serial-port-logging-enable\", \"TRUE\" },\n { \"windows-keys\", JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"email\"] = \"example.user@example.com\",\n [\"expireOn\"] = \"2020-04-14T01:37:19Z\",\n [\"exponent\"] = \"AQAB\",\n [\"modulus\"] = \"wgsquN4IBNPqIUnu+h/5Za1kujb2YRhX1vCQVQAkBwnWigcCqOBVfRa5JoZfx6KIvEXjWqa77jPvlsxM4WPqnDIM2qiK36up3SKkYwFjff6F2ni/ry8vrwXCX3sGZ1hbIHlK0O012HpA3ISeEswVZmX2X67naOvJXfY5v0hGPWqCADao+xVxrmxsZD4IWnKl1UaZzI5lhAzr8fw6utHwx1EZ/MSgsEki6tujcZfN+GUDRnmJGQSnPTXmsf7Q4DKreTZk49cuyB3prV91S0x3DYjCUpSXrkVy1Ha5XicGD/q+ystuFsJnrrhbNXJbpSjM6sjo/aduAkZJl4FmOt0R7Q==\",\n [\"userName\"] = \"example-user\",\n }) },\n },\n ServiceAccount = new Gcp.Compute.Inputs.InstanceServiceAccountArgs\n {\n Scopes = new[]\n {\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n },\n },\n });\n\n var serial = Gcp.Compute.GetInstanceSerialPort.Invoke(new()\n {\n Instance = windows.Name,\n Zone = windows.Zone,\n Port = 4,\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"serialOut\"] = serial.Apply(getInstanceSerialPortResult =\u003e getInstanceSerialPortResult.Contents),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"email\": \"example.user@example.com\",\n\t\t\t\"expireOn\": \"2020-04-14T01:37:19Z\",\n\t\t\t\"exponent\": \"AQAB\",\n\t\t\t\"modulus\": \"wgsquN4IBNPqIUnu+h/5Za1kujb2YRhX1vCQVQAkBwnWigcCqOBVfRa5JoZfx6KIvEXjWqa77jPvlsxM4WPqnDIM2qiK36up3SKkYwFjff6F2ni/ry8vrwXCX3sGZ1hbIHlK0O012HpA3ISeEswVZmX2X67naOvJXfY5v0hGPWqCADao+xVxrmxsZD4IWnKl1UaZzI5lhAzr8fw6utHwx1EZ/MSgsEki6tujcZfN+GUDRnmJGQSnPTXmsf7Q4DKreTZk49cuyB3prV91S0x3DYjCUpSXrkVy1Ha5XicGD/q+ystuFsJnrrhbNXJbpSjM6sjo/aduAkZJl4FmOt0R7Q==\",\n\t\t\t\"userName\": \"example-user\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\twindows, err := compute.NewInstance(ctx, \"windows\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tAccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{\n\t\t\t\t\t\tnil,\n\t\t\t\t\t},\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"windows-instance\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(\"windows-cloud/windows-2019\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\"serial-port-logging-enable\": pulumi.String(\"TRUE\"),\n\t\t\t\t\"windows-keys\": pulumi.String(json0),\n\t\t\t},\n\t\t\tServiceAccount: \u0026compute.InstanceServiceAccountArgs{\n\t\t\t\tScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"userinfo-email\"),\n\t\t\t\t\tpulumi.String(\"compute-ro\"),\n\t\t\t\t\tpulumi.String(\"storage-ro\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserial := pulumi.All(windows.Name, windows.Zone).ApplyT(func(_args []interface{}) (compute.GetInstanceSerialPortResult, error) {\n\t\t\tname := _args[0].(string)\n\t\t\tzone := _args[1].(string)\n\t\t\treturn compute.GetInstanceSerialPortResult(interface{}(compute.GetInstanceSerialPortOutput(ctx, compute.GetInstanceSerialPortOutputArgs{\n\t\t\t\tInstance: name,\n\t\t\t\tZone: zone,\n\t\t\t\tPort: 4,\n\t\t\t}, nil))), nil\n\t\t}).(compute.GetInstanceSerialPortResultOutput)\n\t\tctx.Export(\"serialOut\", serial.ApplyT(func(serial compute.GetInstanceSerialPortResult) (*string, error) {\n\t\t\treturn \u0026serial.Contents, nil\n\t\t}).(pulumi.StringPtrOutput))\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceServiceAccountArgs;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetInstanceSerialPortArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var windows = new Instance(\"windows\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .network(\"default\")\n .build())\n .name(\"windows-instance\")\n .machineType(\"e2-medium\")\n .zone(\"us-central1-a\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(\"windows-cloud/windows-2019\")\n .build())\n .build())\n .metadata(Map.ofEntries(\n Map.entry(\"serial-port-logging-enable\", \"TRUE\"),\n Map.entry(\"windows-keys\", serializeJson(\n jsonObject(\n jsonProperty(\"email\", \"example.user@example.com\"),\n jsonProperty(\"expireOn\", \"2020-04-14T01:37:19Z\"),\n jsonProperty(\"exponent\", \"AQAB\"),\n jsonProperty(\"modulus\", \"wgsquN4IBNPqIUnu+h/5Za1kujb2YRhX1vCQVQAkBwnWigcCqOBVfRa5JoZfx6KIvEXjWqa77jPvlsxM4WPqnDIM2qiK36up3SKkYwFjff6F2ni/ry8vrwXCX3sGZ1hbIHlK0O012HpA3ISeEswVZmX2X67naOvJXfY5v0hGPWqCADao+xVxrmxsZD4IWnKl1UaZzI5lhAzr8fw6utHwx1EZ/MSgsEki6tujcZfN+GUDRnmJGQSnPTXmsf7Q4DKreTZk49cuyB3prV91S0x3DYjCUpSXrkVy1Ha5XicGD/q+ystuFsJnrrhbNXJbpSjM6sjo/aduAkZJl4FmOt0R7Q==\"),\n jsonProperty(\"userName\", \"example-user\")\n )))\n ))\n .serviceAccount(InstanceServiceAccountArgs.builder()\n .scopes( \n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\")\n .build())\n .build());\n\n final var serial = ComputeFunctions.getInstanceSerialPort(GetInstanceSerialPortArgs.builder()\n .instance(windows.name())\n .zone(windows.zone())\n .port(4)\n .build());\n\n ctx.export(\"serialOut\", serial.applyValue(getInstanceSerialPortResult -\u003e getInstanceSerialPortResult).applyValue(serial -\u003e serial.applyValue(getInstanceSerialPortResult -\u003e getInstanceSerialPortResult.contents())));\n }\n}\n```\n```yaml\nresources:\n windows:\n type: gcp:compute:Instance\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n network: default\n name: windows-instance\n machineType: e2-medium\n zone: us-central1-a\n bootDisk:\n initializeParams:\n image: windows-cloud/windows-2019\n metadata:\n serial-port-logging-enable: TRUE\n windows-keys:\n fn::toJSON:\n email: example.user@example.com\n expireOn: 2020-04-14T01:37:19Z\n exponent: AQAB\n modulus: wgsquN4IBNPqIUnu+h/5Za1kujb2YRhX1vCQVQAkBwnWigcCqOBVfRa5JoZfx6KIvEXjWqa77jPvlsxM4WPqnDIM2qiK36up3SKkYwFjff6F2ni/ry8vrwXCX3sGZ1hbIHlK0O012HpA3ISeEswVZmX2X67naOvJXfY5v0hGPWqCADao+xVxrmxsZD4IWnKl1UaZzI5lhAzr8fw6utHwx1EZ/MSgsEki6tujcZfN+GUDRnmJGQSnPTXmsf7Q4DKreTZk49cuyB3prV91S0x3DYjCUpSXrkVy1Ha5XicGD/q+ystuFsJnrrhbNXJbpSjM6sjo/aduAkZJl4FmOt0R7Q==\n userName: example-user\n serviceAccount:\n scopes:\n - userinfo-email\n - compute-ro\n - storage-ro\nvariables:\n serial:\n fn::invoke:\n Function: gcp:compute:getInstanceSerialPort\n Arguments:\n instance: ${windows.name}\n zone: ${windows.zone}\n port: 4\noutputs:\n serialOut: ${serial.contents}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Get the serial port output from a Compute Instance. For more information see\nthe official [API](https://cloud.google.com/compute/docs/instances/viewing-serial-port-output) documentation.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst serial = gcp.compute.getInstanceSerialPort({\n instance: \"my-instance\",\n zone: \"us-central1-a\",\n port: 1,\n});\nexport const serialOut = serial.then(serial =\u003e serial.contents);\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nserial = gcp.compute.get_instance_serial_port(instance=\"my-instance\",\n zone=\"us-central1-a\",\n port=1)\npulumi.export(\"serialOut\", serial.contents)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var serial = Gcp.Compute.GetInstanceSerialPort.Invoke(new()\n {\n Instance = \"my-instance\",\n Zone = \"us-central1-a\",\n Port = 1,\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"serialOut\"] = serial.Apply(getInstanceSerialPortResult =\u003e getInstanceSerialPortResult.Contents),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tserial, err := compute.GetInstanceSerialPort(ctx, \u0026compute.GetInstanceSerialPortArgs{\n\t\t\tInstance: \"my-instance\",\n\t\t\tZone: pulumi.StringRef(\"us-central1-a\"),\n\t\t\tPort: 1,\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"serialOut\", serial.Contents)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetInstanceSerialPortArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var serial = ComputeFunctions.getInstanceSerialPort(GetInstanceSerialPortArgs.builder()\n .instance(\"my-instance\")\n .zone(\"us-central1-a\")\n .port(1)\n .build());\n\n ctx.export(\"serialOut\", serial.applyValue(getInstanceSerialPortResult -\u003e getInstanceSerialPortResult.contents()));\n }\n}\n```\n```yaml\nvariables:\n serial:\n fn::invoke:\n Function: gcp:compute:getInstanceSerialPort\n Arguments:\n instance: my-instance\n zone: us-central1-a\n port: 1\noutputs:\n serialOut: ${serial.contents}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nUsing the serial port output to generate a windows password, derived from the [official guide](https://cloud.google.com/compute/docs/instances/windows/automate-pw-generation):\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst windows = new gcp.compute.Instance(\"windows\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n network: \"default\",\n }],\n name: \"windows-instance\",\n machineType: \"e2-medium\",\n zone: \"us-central1-a\",\n bootDisk: {\n initializeParams: {\n image: \"windows-cloud/windows-2019\",\n },\n },\n metadata: {\n \"serial-port-logging-enable\": \"TRUE\",\n \"windows-keys\": JSON.stringify({\n email: \"example.user@example.com\",\n expireOn: \"2020-04-14T01:37:19Z\",\n exponent: \"AQAB\",\n modulus: \"wgsquN4IBNPqIUnu+h/5Za1kujb2YRhX1vCQVQAkBwnWigcCqOBVfRa5JoZfx6KIvEXjWqa77jPvlsxM4WPqnDIM2qiK36up3SKkYwFjff6F2ni/ry8vrwXCX3sGZ1hbIHlK0O012HpA3ISeEswVZmX2X67naOvJXfY5v0hGPWqCADao+xVxrmxsZD4IWnKl1UaZzI5lhAzr8fw6utHwx1EZ/MSgsEki6tujcZfN+GUDRnmJGQSnPTXmsf7Q4DKreTZk49cuyB3prV91S0x3DYjCUpSXrkVy1Ha5XicGD/q+ystuFsJnrrhbNXJbpSjM6sjo/aduAkZJl4FmOt0R7Q==\",\n userName: \"example-user\",\n }),\n },\n serviceAccount: {\n scopes: [\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n ],\n },\n});\nconst serial = pulumi.all([windows.name, windows.zone]).apply(([name, zone]) =\u003e gcp.compute.getInstanceSerialPortOutput({\n instance: name,\n zone: zone,\n port: 4,\n}));\nexport const serialOut = serial.apply(serial =\u003e serial.contents);\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\nwindows = gcp.compute.Instance(\"windows\",\n network_interfaces=[{\n \"access_configs\": [{}],\n \"network\": \"default\",\n }],\n name=\"windows-instance\",\n machine_type=\"e2-medium\",\n zone=\"us-central1-a\",\n boot_disk={\n \"initialize_params\": {\n \"image\": \"windows-cloud/windows-2019\",\n },\n },\n metadata={\n \"serial-port-logging-enable\": \"TRUE\",\n \"windows-keys\": json.dumps({\n \"email\": \"example.user@example.com\",\n \"expireOn\": \"2020-04-14T01:37:19Z\",\n \"exponent\": \"AQAB\",\n \"modulus\": \"wgsquN4IBNPqIUnu+h/5Za1kujb2YRhX1vCQVQAkBwnWigcCqOBVfRa5JoZfx6KIvEXjWqa77jPvlsxM4WPqnDIM2qiK36up3SKkYwFjff6F2ni/ry8vrwXCX3sGZ1hbIHlK0O012HpA3ISeEswVZmX2X67naOvJXfY5v0hGPWqCADao+xVxrmxsZD4IWnKl1UaZzI5lhAzr8fw6utHwx1EZ/MSgsEki6tujcZfN+GUDRnmJGQSnPTXmsf7Q4DKreTZk49cuyB3prV91S0x3DYjCUpSXrkVy1Ha5XicGD/q+ystuFsJnrrhbNXJbpSjM6sjo/aduAkZJl4FmOt0R7Q==\",\n \"userName\": \"example-user\",\n }),\n },\n service_account={\n \"scopes\": [\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n ],\n })\nserial = pulumi.Output.all(\n name=windows.name,\n zone=windows.zone\n).apply(lambda resolved_outputs: gcp.compute.get_instance_serial_port_output(instance=resolved_outputs['name'],\n zone=resolved_outputs['zone'],\n port=4))\n\npulumi.export(\"serialOut\", serial.contents)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var windows = new Gcp.Compute.Instance(\"windows\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Network = \"default\",\n },\n },\n Name = \"windows-instance\",\n MachineType = \"e2-medium\",\n Zone = \"us-central1-a\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = \"windows-cloud/windows-2019\",\n },\n },\n Metadata = \n {\n { \"serial-port-logging-enable\", \"TRUE\" },\n { \"windows-keys\", JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"email\"] = \"example.user@example.com\",\n [\"expireOn\"] = \"2020-04-14T01:37:19Z\",\n [\"exponent\"] = \"AQAB\",\n [\"modulus\"] = \"wgsquN4IBNPqIUnu+h/5Za1kujb2YRhX1vCQVQAkBwnWigcCqOBVfRa5JoZfx6KIvEXjWqa77jPvlsxM4WPqnDIM2qiK36up3SKkYwFjff6F2ni/ry8vrwXCX3sGZ1hbIHlK0O012HpA3ISeEswVZmX2X67naOvJXfY5v0hGPWqCADao+xVxrmxsZD4IWnKl1UaZzI5lhAzr8fw6utHwx1EZ/MSgsEki6tujcZfN+GUDRnmJGQSnPTXmsf7Q4DKreTZk49cuyB3prV91S0x3DYjCUpSXrkVy1Ha5XicGD/q+ystuFsJnrrhbNXJbpSjM6sjo/aduAkZJl4FmOt0R7Q==\",\n [\"userName\"] = \"example-user\",\n }) },\n },\n ServiceAccount = new Gcp.Compute.Inputs.InstanceServiceAccountArgs\n {\n Scopes = new[]\n {\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n },\n },\n });\n\n var serial = Gcp.Compute.GetInstanceSerialPort.Invoke(new()\n {\n Instance = windows.Name,\n Zone = windows.Zone,\n Port = 4,\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"serialOut\"] = serial.Apply(getInstanceSerialPortResult =\u003e getInstanceSerialPortResult.Contents),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"email\": \"example.user@example.com\",\n\t\t\t\"expireOn\": \"2020-04-14T01:37:19Z\",\n\t\t\t\"exponent\": \"AQAB\",\n\t\t\t\"modulus\": \"wgsquN4IBNPqIUnu+h/5Za1kujb2YRhX1vCQVQAkBwnWigcCqOBVfRa5JoZfx6KIvEXjWqa77jPvlsxM4WPqnDIM2qiK36up3SKkYwFjff6F2ni/ry8vrwXCX3sGZ1hbIHlK0O012HpA3ISeEswVZmX2X67naOvJXfY5v0hGPWqCADao+xVxrmxsZD4IWnKl1UaZzI5lhAzr8fw6utHwx1EZ/MSgsEki6tujcZfN+GUDRnmJGQSnPTXmsf7Q4DKreTZk49cuyB3prV91S0x3DYjCUpSXrkVy1Ha5XicGD/q+ystuFsJnrrhbNXJbpSjM6sjo/aduAkZJl4FmOt0R7Q==\",\n\t\t\t\"userName\": \"example-user\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\twindows, err := compute.NewInstance(ctx, \"windows\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tAccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{\n\t\t\t\t\t\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(\"windows-instance\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(\"windows-cloud/windows-2019\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\"serial-port-logging-enable\": pulumi.String(\"TRUE\"),\n\t\t\t\t\"windows-keys\": pulumi.String(json0),\n\t\t\t},\n\t\t\tServiceAccount: \u0026compute.InstanceServiceAccountArgs{\n\t\t\t\tScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"userinfo-email\"),\n\t\t\t\t\tpulumi.String(\"compute-ro\"),\n\t\t\t\t\tpulumi.String(\"storage-ro\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserial := pulumi.All(windows.Name, windows.Zone).ApplyT(func(_args []interface{}) (compute.GetInstanceSerialPortResult, error) {\n\t\t\tname := _args[0].(string)\n\t\t\tzone := _args[1].(string)\n\t\t\treturn compute.GetInstanceSerialPortResult(interface{}(compute.GetInstanceSerialPortOutput(ctx, compute.GetInstanceSerialPortOutputArgs{\n\t\t\t\tInstance: name,\n\t\t\t\tZone: zone,\n\t\t\t\tPort: 4,\n\t\t\t}, nil))), nil\n\t\t}).(compute.GetInstanceSerialPortResultOutput)\n\t\tctx.Export(\"serialOut\", serial.ApplyT(func(serial compute.GetInstanceSerialPortResult) (*string, error) {\n\t\t\treturn \u0026serial.Contents, nil\n\t\t}).(pulumi.StringPtrOutput))\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceServiceAccountArgs;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetInstanceSerialPortArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var windows = new Instance(\"windows\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .network(\"default\")\n .build())\n .name(\"windows-instance\")\n .machineType(\"e2-medium\")\n .zone(\"us-central1-a\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(\"windows-cloud/windows-2019\")\n .build())\n .build())\n .metadata(Map.ofEntries(\n Map.entry(\"serial-port-logging-enable\", \"TRUE\"),\n Map.entry(\"windows-keys\", serializeJson(\n jsonObject(\n jsonProperty(\"email\", \"example.user@example.com\"),\n jsonProperty(\"expireOn\", \"2020-04-14T01:37:19Z\"),\n jsonProperty(\"exponent\", \"AQAB\"),\n jsonProperty(\"modulus\", \"wgsquN4IBNPqIUnu+h/5Za1kujb2YRhX1vCQVQAkBwnWigcCqOBVfRa5JoZfx6KIvEXjWqa77jPvlsxM4WPqnDIM2qiK36up3SKkYwFjff6F2ni/ry8vrwXCX3sGZ1hbIHlK0O012HpA3ISeEswVZmX2X67naOvJXfY5v0hGPWqCADao+xVxrmxsZD4IWnKl1UaZzI5lhAzr8fw6utHwx1EZ/MSgsEki6tujcZfN+GUDRnmJGQSnPTXmsf7Q4DKreTZk49cuyB3prV91S0x3DYjCUpSXrkVy1Ha5XicGD/q+ystuFsJnrrhbNXJbpSjM6sjo/aduAkZJl4FmOt0R7Q==\"),\n jsonProperty(\"userName\", \"example-user\")\n )))\n ))\n .serviceAccount(InstanceServiceAccountArgs.builder()\n .scopes( \n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\")\n .build())\n .build());\n\n final var serial = ComputeFunctions.getInstanceSerialPort(GetInstanceSerialPortArgs.builder()\n .instance(windows.name())\n .zone(windows.zone())\n .port(4)\n .build());\n\n ctx.export(\"serialOut\", serial.applyValue(getInstanceSerialPortResult -\u003e getInstanceSerialPortResult).applyValue(serial -\u003e serial.applyValue(getInstanceSerialPortResult -\u003e getInstanceSerialPortResult.contents())));\n }\n}\n```\n```yaml\nresources:\n windows:\n type: gcp:compute:Instance\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n network: default\n name: windows-instance\n machineType: e2-medium\n zone: us-central1-a\n bootDisk:\n initializeParams:\n image: windows-cloud/windows-2019\n metadata:\n serial-port-logging-enable: TRUE\n windows-keys:\n fn::toJSON:\n email: example.user@example.com\n expireOn: 2020-04-14T01:37:19Z\n exponent: AQAB\n modulus: wgsquN4IBNPqIUnu+h/5Za1kujb2YRhX1vCQVQAkBwnWigcCqOBVfRa5JoZfx6KIvEXjWqa77jPvlsxM4WPqnDIM2qiK36up3SKkYwFjff6F2ni/ry8vrwXCX3sGZ1hbIHlK0O012HpA3ISeEswVZmX2X67naOvJXfY5v0hGPWqCADao+xVxrmxsZD4IWnKl1UaZzI5lhAzr8fw6utHwx1EZ/MSgsEki6tujcZfN+GUDRnmJGQSnPTXmsf7Q4DKreTZk49cuyB3prV91S0x3DYjCUpSXrkVy1Ha5XicGD/q+ystuFsJnrrhbNXJbpSjM6sjo/aduAkZJl4FmOt0R7Q==\n userName: example-user\n serviceAccount:\n scopes:\n - userinfo-email\n - compute-ro\n - storage-ro\nvariables:\n serial:\n fn::invoke:\n Function: gcp:compute:getInstanceSerialPort\n Arguments:\n instance: ${windows.name}\n zone: ${windows.zone}\n port: 4\noutputs:\n serialOut: ${serial.contents}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getInstanceSerialPort.\n", "properties": { @@ -269646,7 +269646,7 @@ } }, "gcp:compute/getLBIPRanges:getLBIPRanges": { - "description": "Use this data source to access IP ranges in your firewall rules.\n\nhttps://cloud.google.com/compute/docs/load-balancing/health-checks#health_check_source_ips_and_firewall_rules\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst ranges = gcp.compute.getLBIPRanges({});\nconst lb = new gcp.compute.Firewall(\"lb\", {\n name: \"lb-firewall\",\n network: main.name,\n allows: [{\n protocol: \"tcp\",\n ports: [\"80\"],\n }],\n sourceRanges: ranges.then(ranges =\u003e ranges.networks),\n targetTags: [\"InstanceBehindLoadBalancer\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nranges = gcp.compute.get_lbip_ranges()\nlb = gcp.compute.Firewall(\"lb\",\n name=\"lb-firewall\",\n network=main[\"name\"],\n allows=[{\n \"protocol\": \"tcp\",\n \"ports\": [\"80\"],\n }],\n source_ranges=ranges.networks,\n target_tags=[\"InstanceBehindLoadBalancer\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var ranges = Gcp.Compute.GetLBIPRanges.Invoke();\n\n var lb = new Gcp.Compute.Firewall(\"lb\", new()\n {\n Name = \"lb-firewall\",\n Network = main.Name,\n Allows = new[]\n {\n new Gcp.Compute.Inputs.FirewallAllowArgs\n {\n Protocol = \"tcp\",\n Ports = new[]\n {\n \"80\",\n },\n },\n },\n SourceRanges = ranges.Apply(getLBIPRangesResult =\u003e getLBIPRangesResult.Networks),\n TargetTags = new[]\n {\n \"InstanceBehindLoadBalancer\",\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\tranges, err := compute.GetLBIPRanges(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewFirewall(ctx, \"lb\", \u0026compute.FirewallArgs{\n\t\t\tName: pulumi.String(\"lb-firewall\"),\n\t\t\tNetwork: pulumi.Any(main.Name),\n\t\t\tAllows: compute.FirewallAllowArray{\n\t\t\t\t\u0026compute.FirewallAllowArgs{\n\t\t\t\t\tProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t\tPorts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"80\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSourceRanges: interface{}(ranges.Networks),\n\t\t\tTargetTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"InstanceBehindLoadBalancer\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.Firewall;\nimport com.pulumi.gcp.compute.FirewallArgs;\nimport com.pulumi.gcp.compute.inputs.FirewallAllowArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var ranges = ComputeFunctions.getLBIPRanges();\n\n var lb = new Firewall(\"lb\", FirewallArgs.builder()\n .name(\"lb-firewall\")\n .network(main.name())\n .allows(FirewallAllowArgs.builder()\n .protocol(\"tcp\")\n .ports(\"80\")\n .build())\n .sourceRanges(ranges.applyValue(getLBIPRangesResult -\u003e getLBIPRangesResult.networks()))\n .targetTags(\"InstanceBehindLoadBalancer\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n lb:\n type: gcp:compute:Firewall\n properties:\n name: lb-firewall\n network: ${main.name}\n allows:\n - protocol: tcp\n ports:\n - '80'\n sourceRanges: ${ranges.networks}\n targetTags:\n - InstanceBehindLoadBalancer\nvariables:\n ranges:\n fn::invoke:\n Function: gcp:compute:getLBIPRanges\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Use this data source to access IP ranges in your firewall rules.\n\nhttps://cloud.google.com/compute/docs/load-balancing/health-checks#health_check_source_ips_and_firewall_rules\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst ranges = gcp.compute.getLBIPRanges({});\nconst lb = new gcp.compute.Firewall(\"lb\", {\n name: \"lb-firewall\",\n network: main.name,\n allows: [{\n protocol: \"tcp\",\n ports: [\"80\"],\n }],\n sourceRanges: ranges.then(ranges =\u003e ranges.networks),\n targetTags: [\"InstanceBehindLoadBalancer\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nranges = gcp.compute.get_lbip_ranges()\nlb = gcp.compute.Firewall(\"lb\",\n name=\"lb-firewall\",\n network=main[\"name\"],\n allows=[{\n \"protocol\": \"tcp\",\n \"ports\": [\"80\"],\n }],\n source_ranges=ranges.networks,\n target_tags=[\"InstanceBehindLoadBalancer\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var ranges = Gcp.Compute.GetLBIPRanges.Invoke();\n\n var lb = new Gcp.Compute.Firewall(\"lb\", new()\n {\n Name = \"lb-firewall\",\n Network = main.Name,\n Allows = new[]\n {\n new Gcp.Compute.Inputs.FirewallAllowArgs\n {\n Protocol = \"tcp\",\n Ports = new[]\n {\n \"80\",\n },\n },\n },\n SourceRanges = ranges.Apply(getLBIPRangesResult =\u003e getLBIPRangesResult.Networks),\n TargetTags = new[]\n {\n \"InstanceBehindLoadBalancer\",\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\tranges, err := compute.GetLBIPRanges(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewFirewall(ctx, \"lb\", \u0026compute.FirewallArgs{\n\t\t\tName: pulumi.String(\"lb-firewall\"),\n\t\t\tNetwork: pulumi.Any(main.Name),\n\t\t\tAllows: compute.FirewallAllowArray{\n\t\t\t\t\u0026compute.FirewallAllowArgs{\n\t\t\t\t\tProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t\tPorts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"80\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSourceRanges: interface{}(ranges.Networks),\n\t\t\tTargetTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"InstanceBehindLoadBalancer\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.Firewall;\nimport com.pulumi.gcp.compute.FirewallArgs;\nimport com.pulumi.gcp.compute.inputs.FirewallAllowArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var ranges = ComputeFunctions.getLBIPRanges();\n\n var lb = new Firewall(\"lb\", FirewallArgs.builder()\n .name(\"lb-firewall\")\n .network(main.name())\n .allows(FirewallAllowArgs.builder()\n .protocol(\"tcp\")\n .ports(\"80\")\n .build())\n .sourceRanges(ranges.applyValue(getLBIPRangesResult -\u003e getLBIPRangesResult.networks()))\n .targetTags(\"InstanceBehindLoadBalancer\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n lb:\n type: gcp:compute:Firewall\n properties:\n name: lb-firewall\n network: ${main.name}\n allows:\n - protocol: tcp\n ports:\n - '80'\n sourceRanges: ${ranges.networks}\n targetTags:\n - InstanceBehindLoadBalancer\nvariables:\n ranges:\n fn::invoke:\n Function: gcp:compute:getLBIPRanges\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "outputs": { "description": "A collection of values returned by getLBIPRanges.\n", "properties": { @@ -269783,7 +269783,7 @@ } }, "gcp:compute/getNetblockIPRanges:getNetblockIPRanges": { - "description": "Use this data source to get the IP addresses from different special IP ranges on Google Cloud Platform.\n\n## Example Usage\n\n### Cloud Ranges\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst netblock = gcp.compute.getNetblockIPRanges({});\nexport const cidrBlocks = netblock.then(netblock =\u003e netblock.cidrBlocks);\nexport const cidrBlocksIpv4 = netblock.then(netblock =\u003e netblock.cidrBlocksIpv4s);\nexport const cidrBlocksIpv6 = netblock.then(netblock =\u003e netblock.cidrBlocksIpv6s);\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetblock = gcp.compute.get_netblock_ip_ranges()\npulumi.export(\"cidrBlocks\", netblock.cidr_blocks)\npulumi.export(\"cidrBlocksIpv4\", netblock.cidr_blocks_ipv4s)\npulumi.export(\"cidrBlocksIpv6\", netblock.cidr_blocks_ipv6s)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var netblock = Gcp.Compute.GetNetblockIPRanges.Invoke();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"cidrBlocks\"] = netblock.Apply(getNetblockIPRangesResult =\u003e getNetblockIPRangesResult.CidrBlocks),\n [\"cidrBlocksIpv4\"] = netblock.Apply(getNetblockIPRangesResult =\u003e getNetblockIPRangesResult.CidrBlocksIpv4s),\n [\"cidrBlocksIpv6\"] = netblock.Apply(getNetblockIPRangesResult =\u003e getNetblockIPRangesResult.CidrBlocksIpv6s),\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\tnetblock, err := compute.GetNetblockIPRanges(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"cidrBlocks\", netblock.CidrBlocks)\n\t\tctx.Export(\"cidrBlocksIpv4\", netblock.CidrBlocksIpv4s)\n\t\tctx.Export(\"cidrBlocksIpv6\", netblock.CidrBlocksIpv6s)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetblockIPRangesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var netblock = ComputeFunctions.getNetblockIPRanges();\n\n ctx.export(\"cidrBlocks\", netblock.applyValue(getNetblockIPRangesResult -\u003e getNetblockIPRangesResult.cidrBlocks()));\n ctx.export(\"cidrBlocksIpv4\", netblock.applyValue(getNetblockIPRangesResult -\u003e getNetblockIPRangesResult.cidrBlocksIpv4s()));\n ctx.export(\"cidrBlocksIpv6\", netblock.applyValue(getNetblockIPRangesResult -\u003e getNetblockIPRangesResult.cidrBlocksIpv6s()));\n }\n}\n```\n```yaml\nvariables:\n netblock:\n fn::invoke:\n Function: gcp:compute:getNetblockIPRanges\n Arguments: {}\noutputs:\n cidrBlocks: ${netblock.cidrBlocks}\n cidrBlocksIpv4: ${netblock.cidrBlocksIpv4s}\n cidrBlocksIpv6: ${netblock.cidrBlocksIpv6s}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Allow Health Checks\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst legacy-hcs = gcp.compute.getNetblockIPRanges({\n rangeType: \"legacy-health-checkers\",\n});\nconst _default = new gcp.compute.Network(\"default\", {name: \"test-network\"});\nconst allow_hcs = new gcp.compute.Firewall(\"allow-hcs\", {\n name: \"allow-hcs\",\n network: _default.name,\n allows: [{\n protocol: \"tcp\",\n ports: [\"80\"],\n }],\n sourceRanges: legacy_hcs.then(legacy_hcs =\u003e legacy_hcs.cidrBlocksIpv4s),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nlegacy_hcs = gcp.compute.get_netblock_ip_ranges(range_type=\"legacy-health-checkers\")\ndefault = gcp.compute.Network(\"default\", name=\"test-network\")\nallow_hcs = gcp.compute.Firewall(\"allow-hcs\",\n name=\"allow-hcs\",\n network=default.name,\n allows=[{\n \"protocol\": \"tcp\",\n \"ports\": [\"80\"],\n }],\n source_ranges=legacy_hcs.cidr_blocks_ipv4s)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var legacy_hcs = Gcp.Compute.GetNetblockIPRanges.Invoke(new()\n {\n RangeType = \"legacy-health-checkers\",\n });\n\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"test-network\",\n });\n\n var allow_hcs = new Gcp.Compute.Firewall(\"allow-hcs\", new()\n {\n Name = \"allow-hcs\",\n Network = @default.Name,\n Allows = new[]\n {\n new Gcp.Compute.Inputs.FirewallAllowArgs\n {\n Protocol = \"tcp\",\n Ports = new[]\n {\n \"80\",\n },\n },\n },\n SourceRanges = legacy_hcs.Apply(legacy_hcs =\u003e legacy_hcs.Apply(getNetblockIPRangesResult =\u003e getNetblockIPRangesResult.CidrBlocksIpv4s)),\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\tlegacy_hcs, err := compute.GetNetblockIPRanges(ctx, \u0026compute.GetNetblockIPRangesArgs{\n\t\t\tRangeType: pulumi.StringRef(\"legacy-health-checkers\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"test-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewFirewall(ctx, \"allow-hcs\", \u0026compute.FirewallArgs{\n\t\t\tName: pulumi.String(\"allow-hcs\"),\n\t\t\tNetwork: _default.Name,\n\t\t\tAllows: compute.FirewallAllowArray{\n\t\t\t\t\u0026compute.FirewallAllowArgs{\n\t\t\t\t\tProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t\tPorts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"80\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSourceRanges: interface{}(legacy_hcs.CidrBlocksIpv4s),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetblockIPRangesArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Firewall;\nimport com.pulumi.gcp.compute.FirewallArgs;\nimport com.pulumi.gcp.compute.inputs.FirewallAllowArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var legacy-hcs = ComputeFunctions.getNetblockIPRanges(GetNetblockIPRangesArgs.builder()\n .rangeType(\"legacy-health-checkers\")\n .build());\n\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"test-network\")\n .build());\n\n var allow_hcs = new Firewall(\"allow-hcs\", FirewallArgs.builder()\n .name(\"allow-hcs\")\n .network(default_.name())\n .allows(FirewallAllowArgs.builder()\n .protocol(\"tcp\")\n .ports(\"80\")\n .build())\n .sourceRanges(legacy_hcs.cidrBlocksIpv4s())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n allow-hcs:\n type: gcp:compute:Firewall\n properties:\n name: allow-hcs\n network: ${default.name}\n allows:\n - protocol: tcp\n ports:\n - '80'\n sourceRanges: ${[\"legacy-hcs\"].cidrBlocksIpv4s}\n default:\n type: gcp:compute:Network\n properties:\n name: test-network\nvariables:\n legacy-hcs:\n fn::invoke:\n Function: gcp:compute:getNetblockIPRanges\n Arguments:\n rangeType: legacy-health-checkers\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Use this data source to get the IP addresses from different special IP ranges on Google Cloud Platform.\n\n## Example Usage\n\n### Cloud Ranges\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst netblock = gcp.compute.getNetblockIPRanges({});\nexport const cidrBlocks = netblock.then(netblock =\u003e netblock.cidrBlocks);\nexport const cidrBlocksIpv4 = netblock.then(netblock =\u003e netblock.cidrBlocksIpv4s);\nexport const cidrBlocksIpv6 = netblock.then(netblock =\u003e netblock.cidrBlocksIpv6s);\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetblock = gcp.compute.get_netblock_ip_ranges()\npulumi.export(\"cidrBlocks\", netblock.cidr_blocks)\npulumi.export(\"cidrBlocksIpv4\", netblock.cidr_blocks_ipv4s)\npulumi.export(\"cidrBlocksIpv6\", netblock.cidr_blocks_ipv6s)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var netblock = Gcp.Compute.GetNetblockIPRanges.Invoke();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"cidrBlocks\"] = netblock.Apply(getNetblockIPRangesResult =\u003e getNetblockIPRangesResult.CidrBlocks),\n [\"cidrBlocksIpv4\"] = netblock.Apply(getNetblockIPRangesResult =\u003e getNetblockIPRangesResult.CidrBlocksIpv4s),\n [\"cidrBlocksIpv6\"] = netblock.Apply(getNetblockIPRangesResult =\u003e getNetblockIPRangesResult.CidrBlocksIpv6s),\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\tnetblock, err := compute.GetNetblockIPRanges(ctx, \u0026compute.GetNetblockIPRangesArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"cidrBlocks\", netblock.CidrBlocks)\n\t\tctx.Export(\"cidrBlocksIpv4\", netblock.CidrBlocksIpv4s)\n\t\tctx.Export(\"cidrBlocksIpv6\", netblock.CidrBlocksIpv6s)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetblockIPRangesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var netblock = ComputeFunctions.getNetblockIPRanges();\n\n ctx.export(\"cidrBlocks\", netblock.applyValue(getNetblockIPRangesResult -\u003e getNetblockIPRangesResult.cidrBlocks()));\n ctx.export(\"cidrBlocksIpv4\", netblock.applyValue(getNetblockIPRangesResult -\u003e getNetblockIPRangesResult.cidrBlocksIpv4s()));\n ctx.export(\"cidrBlocksIpv6\", netblock.applyValue(getNetblockIPRangesResult -\u003e getNetblockIPRangesResult.cidrBlocksIpv6s()));\n }\n}\n```\n```yaml\nvariables:\n netblock:\n fn::invoke:\n Function: gcp:compute:getNetblockIPRanges\n Arguments: {}\noutputs:\n cidrBlocks: ${netblock.cidrBlocks}\n cidrBlocksIpv4: ${netblock.cidrBlocksIpv4s}\n cidrBlocksIpv6: ${netblock.cidrBlocksIpv6s}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Allow Health Checks\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst legacy-hcs = gcp.compute.getNetblockIPRanges({\n rangeType: \"legacy-health-checkers\",\n});\nconst _default = new gcp.compute.Network(\"default\", {name: \"test-network\"});\nconst allow_hcs = new gcp.compute.Firewall(\"allow-hcs\", {\n name: \"allow-hcs\",\n network: _default.name,\n allows: [{\n protocol: \"tcp\",\n ports: [\"80\"],\n }],\n sourceRanges: legacy_hcs.then(legacy_hcs =\u003e legacy_hcs.cidrBlocksIpv4s),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nlegacy_hcs = gcp.compute.get_netblock_ip_ranges(range_type=\"legacy-health-checkers\")\ndefault = gcp.compute.Network(\"default\", name=\"test-network\")\nallow_hcs = gcp.compute.Firewall(\"allow-hcs\",\n name=\"allow-hcs\",\n network=default.name,\n allows=[{\n \"protocol\": \"tcp\",\n \"ports\": [\"80\"],\n }],\n source_ranges=legacy_hcs.cidr_blocks_ipv4s)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var legacy_hcs = Gcp.Compute.GetNetblockIPRanges.Invoke(new()\n {\n RangeType = \"legacy-health-checkers\",\n });\n\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"test-network\",\n });\n\n var allow_hcs = new Gcp.Compute.Firewall(\"allow-hcs\", new()\n {\n Name = \"allow-hcs\",\n Network = @default.Name,\n Allows = new[]\n {\n new Gcp.Compute.Inputs.FirewallAllowArgs\n {\n Protocol = \"tcp\",\n Ports = new[]\n {\n \"80\",\n },\n },\n },\n SourceRanges = legacy_hcs.Apply(legacy_hcs =\u003e legacy_hcs.Apply(getNetblockIPRangesResult =\u003e getNetblockIPRangesResult.CidrBlocksIpv4s)),\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\tlegacy_hcs, err := compute.GetNetblockIPRanges(ctx, \u0026compute.GetNetblockIPRangesArgs{\n\t\t\tRangeType: pulumi.StringRef(\"legacy-health-checkers\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"test-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewFirewall(ctx, \"allow-hcs\", \u0026compute.FirewallArgs{\n\t\t\tName: pulumi.String(\"allow-hcs\"),\n\t\t\tNetwork: _default.Name,\n\t\t\tAllows: compute.FirewallAllowArray{\n\t\t\t\t\u0026compute.FirewallAllowArgs{\n\t\t\t\t\tProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t\tPorts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"80\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tSourceRanges: interface{}(legacy_hcs.CidrBlocksIpv4s),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetblockIPRangesArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Firewall;\nimport com.pulumi.gcp.compute.FirewallArgs;\nimport com.pulumi.gcp.compute.inputs.FirewallAllowArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var legacy-hcs = ComputeFunctions.getNetblockIPRanges(GetNetblockIPRangesArgs.builder()\n .rangeType(\"legacy-health-checkers\")\n .build());\n\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"test-network\")\n .build());\n\n var allow_hcs = new Firewall(\"allow-hcs\", FirewallArgs.builder()\n .name(\"allow-hcs\")\n .network(default_.name())\n .allows(FirewallAllowArgs.builder()\n .protocol(\"tcp\")\n .ports(\"80\")\n .build())\n .sourceRanges(legacy_hcs.cidrBlocksIpv4s())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n allow-hcs:\n type: gcp:compute:Firewall\n properties:\n name: allow-hcs\n network: ${default.name}\n allows:\n - protocol: tcp\n ports:\n - '80'\n sourceRanges: ${[\"legacy-hcs\"].cidrBlocksIpv4s}\n default:\n type: gcp:compute:Network\n properties:\n name: test-network\nvariables:\n legacy-hcs:\n fn::invoke:\n Function: gcp:compute:getNetblockIPRanges\n Arguments:\n rangeType: legacy-health-checkers\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getNetblockIPRanges.\n", "properties": { @@ -270952,7 +270952,7 @@ } }, "gcp:compute/getRegions:getRegions": { - "description": "Provides access to available Google Compute regions for a given project.\nSee more about [regions and zones](https://cloud.google.com/compute/docs/regions-zones/) in the upstream docs.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nexport = async () =\u003e {\n const available = await gcp.compute.getRegions({});\n const cluster: gcp.compute.Subnetwork[] = [];\n for (const range = {value: 0}; range.value \u003c available.names.length; range.value++) {\n cluster.push(new gcp.compute.Subnetwork(`cluster-${range.value}`, {\n name: \"my-network\",\n ipCidrRange: `10.36.${range.value}.0/24`,\n network: \"my-network\",\n region: available.names[range.value],\n }));\n }\n}\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\navailable = gcp.compute.get_regions()\ncluster = []\nfor range in [{\"value\": i} for i in range(0, len(available.names))]:\n cluster.append(gcp.compute.Subnetwork(f\"cluster-{range['value']}\",\n name=\"my-network\",\n ip_cidr_range=f\"10.36.{range['value']}.0/24\",\n network=\"my-network\",\n region=available.names[range[\"value\"]]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(async() =\u003e \n{\n var available = await Gcp.Compute.GetRegions.InvokeAsync();\n\n var cluster = new List\u003cGcp.Compute.Subnetwork\u003e();\n for (var rangeIndex = 0; rangeIndex \u003c available.Names.Length; rangeIndex++)\n {\n var range = new { Value = rangeIndex };\n cluster.Add(new Gcp.Compute.Subnetwork($\"cluster-{range.Value}\", new()\n {\n Name = \"my-network\",\n IpCidrRange = $\"10.36.{range.Value}.0/24\",\n Network = \"my-network\",\n Region = available.Names[range.Value],\n }));\n }\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tavailable, err := compute.GetRegions(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvar cluster []*compute.Subnetwork\n\t\tfor index := 0; index \u003c int(len(available.Names)); index++ {\n\t\t\tkey0 := index\n\t\t\tval0 := index\n\t\t\t__res, err := compute.NewSubnetwork(ctx, fmt.Sprintf(\"cluster-%v\", key0), \u0026compute.SubnetworkArgs{\n\t\t\t\tName: pulumi.String(\"my-network\"),\n\t\t\t\tIpCidrRange: pulumi.Sprintf(\"10.36.%v.0/24\", val0),\n\t\t\t\tNetwork: pulumi.String(\"my-network\"),\n\t\t\t\tRegion: pulumi.String(available.Names[val0]),\n\t\t\t})\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tcluster = append(cluster, __res)\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetRegionsArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.codegen.internal.KeyedValue;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var available = ComputeFunctions.getRegions();\n\n for (var i = 0; i \u003c available.applyValue(getRegionsResult -\u003e getRegionsResult.names()).length(); i++) {\n new Subnetwork(\"cluster-\" + i, SubnetworkArgs.builder()\n .name(\"my-network\")\n .ipCidrRange(String.format(\"10.36.%s.0/24\", range.value()))\n .network(\"my-network\")\n .region(available.applyValue(getRegionsResult -\u003e getRegionsResult.names())[range.value()])\n .build());\n\n \n}\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Provides access to available Google Compute regions for a given project.\nSee more about [regions and zones](https://cloud.google.com/compute/docs/regions-zones/) in the upstream docs.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nexport = async () =\u003e {\n const available = await gcp.compute.getRegions({});\n const cluster: gcp.compute.Subnetwork[] = [];\n for (const range = {value: 0}; range.value \u003c available.names.length; range.value++) {\n cluster.push(new gcp.compute.Subnetwork(`cluster-${range.value}`, {\n name: \"my-network\",\n ipCidrRange: `10.36.${range.value}.0/24`,\n network: \"my-network\",\n region: available.names[range.value],\n }));\n }\n}\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\navailable = gcp.compute.get_regions()\ncluster = []\nfor range in [{\"value\": i} for i in range(0, len(available.names))]:\n cluster.append(gcp.compute.Subnetwork(f\"cluster-{range['value']}\",\n name=\"my-network\",\n ip_cidr_range=f\"10.36.{range['value']}.0/24\",\n network=\"my-network\",\n region=available.names[range[\"value\"]]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(async() =\u003e \n{\n var available = await Gcp.Compute.GetRegions.InvokeAsync();\n\n var cluster = new List\u003cGcp.Compute.Subnetwork\u003e();\n for (var rangeIndex = 0; rangeIndex \u003c available.Names.Length; rangeIndex++)\n {\n var range = new { Value = rangeIndex };\n cluster.Add(new Gcp.Compute.Subnetwork($\"cluster-{range.Value}\", new()\n {\n Name = \"my-network\",\n IpCidrRange = $\"10.36.{range.Value}.0/24\",\n Network = \"my-network\",\n Region = available.Names[range.Value],\n }));\n }\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tavailable, err := compute.GetRegions(ctx, \u0026compute.GetRegionsArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvar cluster []*compute.Subnetwork\n\t\tfor index := 0; index \u003c int(len(available.Names)); index++ {\n\t\t\tkey0 := index\n\t\t\tval0 := index\n\t\t\t__res, err := compute.NewSubnetwork(ctx, fmt.Sprintf(\"cluster-%v\", key0), \u0026compute.SubnetworkArgs{\n\t\t\t\tName: pulumi.String(\"my-network\"),\n\t\t\t\tIpCidrRange: pulumi.Sprintf(\"10.36.%v.0/24\", val0),\n\t\t\t\tNetwork: pulumi.String(\"my-network\"),\n\t\t\t\tRegion: pulumi.String(available.Names[val0]),\n\t\t\t})\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tcluster = append(cluster, __res)\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetRegionsArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.codegen.internal.KeyedValue;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var available = ComputeFunctions.getRegions();\n\n for (var i = 0; i \u003c available.applyValue(getRegionsResult -\u003e getRegionsResult.names()).length(); i++) {\n new Subnetwork(\"cluster-\" + i, SubnetworkArgs.builder()\n .name(\"my-network\")\n .ipCidrRange(String.format(\"10.36.%s.0/24\", range.value()))\n .network(\"my-network\")\n .region(available.applyValue(getRegionsResult -\u003e getRegionsResult.names())[range.value()])\n .build());\n\n \n}\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getRegions.\n", "properties": { @@ -273078,7 +273078,7 @@ } }, "gcp:container/getRegistryRepository:getRegistryRepository": { - "description": "This data source fetches the project name, and provides the appropriate URLs to use for container registry for this project.\n\nThe URLs are computed entirely offline - as long as the project exists, they will be valid, but this data source does not contact Google Container Registry (GCR) at any point.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst foo = gcp.container.getRegistryRepository({});\nexport const gcrLocation = foo.then(foo =\u003e foo.repositoryUrl);\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfoo = gcp.container.get_registry_repository()\npulumi.export(\"gcrLocation\", foo.repository_url)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var foo = Gcp.Container.GetRegistryRepository.Invoke();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"gcrLocation\"] = foo.Apply(getRegistryRepositoryResult =\u003e getRegistryRepositoryResult.RepositoryUrl),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfoo, err := container.GetRegistryRepository(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"gcrLocation\", foo.RepositoryUrl)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.container.ContainerFunctions;\nimport com.pulumi.gcp.container.inputs.GetRegistryRepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var foo = ContainerFunctions.getRegistryRepository();\n\n ctx.export(\"gcrLocation\", foo.applyValue(getRegistryRepositoryResult -\u003e getRegistryRepositoryResult.repositoryUrl()));\n }\n}\n```\n```yaml\nvariables:\n foo:\n fn::invoke:\n Function: gcp:container:getRegistryRepository\n Arguments: {}\noutputs:\n gcrLocation: ${foo.repositoryUrl}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "This data source fetches the project name, and provides the appropriate URLs to use for container registry for this project.\n\nThe URLs are computed entirely offline - as long as the project exists, they will be valid, but this data source does not contact Google Container Registry (GCR) at any point.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst foo = gcp.container.getRegistryRepository({});\nexport const gcrLocation = foo.then(foo =\u003e foo.repositoryUrl);\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfoo = gcp.container.get_registry_repository()\npulumi.export(\"gcrLocation\", foo.repository_url)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var foo = Gcp.Container.GetRegistryRepository.Invoke();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"gcrLocation\"] = foo.Apply(getRegistryRepositoryResult =\u003e getRegistryRepositoryResult.RepositoryUrl),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfoo, err := container.GetRegistryRepository(ctx, \u0026container.GetRegistryRepositoryArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"gcrLocation\", foo.RepositoryUrl)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.container.ContainerFunctions;\nimport com.pulumi.gcp.container.inputs.GetRegistryRepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var foo = ContainerFunctions.getRegistryRepository();\n\n ctx.export(\"gcrLocation\", foo.applyValue(getRegistryRepositoryResult -\u003e getRegistryRepositoryResult.repositoryUrl()));\n }\n}\n```\n```yaml\nvariables:\n foo:\n fn::invoke:\n Function: gcp:container:getRegistryRepository\n Arguments: {}\noutputs:\n gcrLocation: ${foo.repositoryUrl}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getRegistryRepository.\n", "properties": { @@ -277801,7 +277801,7 @@ } }, "gcp:kms/getKMSSecretCiphertext:getKMSSecretCiphertext": { - "description": "!\u003e **Warning:** This data source is deprecated. Use the `gcp.kms.SecretCiphertext` **resource** instead.\n\nThis data source allows you to encrypt data with Google Cloud KMS and use the\nciphertext within your resource definitions.\n\nFor more information see\n[the official documentation](https://cloud.google.com/kms/docs/encrypt-decrypt).\n\n\u003e **NOTE:** Using this data source will allow you to conceal secret data within your\nresource definitions, but it does not take care of protecting that data in the\nlogging output, plan output, or state output. Please take care to secure your secret\ndata outside of resource definitions.\n\n## Example Usage\n\nFirst, create a KMS KeyRing and CryptoKey using the resource definitions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myKeyRing = new gcp.kms.KeyRing(\"my_key_ring\", {\n project: \"my-project\",\n name: \"my-key-ring\",\n location: \"us-central1\",\n});\nconst myCryptoKey = new gcp.kms.CryptoKey(\"my_crypto_key\", {\n name: \"my-crypto-key\",\n keyRing: myKeyRing.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_key_ring = gcp.kms.KeyRing(\"my_key_ring\",\n project=\"my-project\",\n name=\"my-key-ring\",\n location=\"us-central1\")\nmy_crypto_key = gcp.kms.CryptoKey(\"my_crypto_key\",\n name=\"my-crypto-key\",\n key_ring=my_key_ring.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var myKeyRing = new Gcp.Kms.KeyRing(\"my_key_ring\", new()\n {\n Project = \"my-project\",\n Name = \"my-key-ring\",\n Location = \"us-central1\",\n });\n\n var myCryptoKey = new Gcp.Kms.CryptoKey(\"my_crypto_key\", new()\n {\n Name = \"my-crypto-key\",\n KeyRing = myKeyRing.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyKeyRing, err := kms.NewKeyRing(ctx, \"my_key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tProject: pulumi.String(\"my-project\"),\n\t\t\tName: pulumi.String(\"my-key-ring\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kms.NewCryptoKey(ctx, \"my_crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"my-crypto-key\"),\n\t\t\tKeyRing: myKeyRing.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var myKeyRing = new KeyRing(\"myKeyRing\", KeyRingArgs.builder()\n .project(\"my-project\")\n .name(\"my-key-ring\")\n .location(\"us-central1\")\n .build());\n\n var myCryptoKey = new CryptoKey(\"myCryptoKey\", CryptoKeyArgs.builder()\n .name(\"my-crypto-key\")\n .keyRing(myKeyRing.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myKeyRing:\n type: gcp:kms:KeyRing\n name: my_key_ring\n properties:\n project: my-project\n name: my-key-ring\n location: us-central1\n myCryptoKey:\n type: gcp:kms:CryptoKey\n name: my_crypto_key\n properties:\n name: my-crypto-key\n keyRing: ${myKeyRing.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nNext, encrypt some sensitive information and use the encrypted data in your resource definitions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myPassword = gcp.kms.getKMSSecretCiphertext({\n cryptoKey: myCryptoKey.id,\n plaintext: \"my-secret-password\",\n});\nconst instance = new gcp.compute.Instance(\"instance\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n network: \"default\",\n }],\n name: \"test\",\n machineType: \"e2-medium\",\n zone: \"us-central1-a\",\n bootDisk: {\n initializeParams: {\n image: \"debian-cloud/debian-11\",\n },\n },\n metadata: {\n password: myPassword.then(myPassword =\u003e myPassword.ciphertext),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_password = gcp.kms.get_kms_secret_ciphertext(crypto_key=my_crypto_key[\"id\"],\n plaintext=\"my-secret-password\")\ninstance = gcp.compute.Instance(\"instance\",\n network_interfaces=[{\n \"access_configs\": [{}],\n \"network\": \"default\",\n }],\n name=\"test\",\n machine_type=\"e2-medium\",\n zone=\"us-central1-a\",\n boot_disk={\n \"initialize_params\": {\n \"image\": \"debian-cloud/debian-11\",\n },\n },\n metadata={\n \"password\": my_password.ciphertext,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var myPassword = Gcp.Kms.GetKMSSecretCiphertext.Invoke(new()\n {\n CryptoKey = myCryptoKey.Id,\n Plaintext = \"my-secret-password\",\n });\n\n var instance = new Gcp.Compute.Instance(\"instance\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Network = \"default\",\n },\n },\n Name = \"test\",\n MachineType = \"e2-medium\",\n Zone = \"us-central1-a\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = \"debian-cloud/debian-11\",\n },\n },\n Metadata = \n {\n { \"password\", myPassword.Apply(getKMSSecretCiphertextResult =\u003e getKMSSecretCiphertextResult.Ciphertext) },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyPassword, err := kms.GetKMSSecretCiphertext(ctx, \u0026kms.GetKMSSecretCiphertextArgs{\n\t\t\tCryptoKey: myCryptoKey.Id,\n\t\t\tPlaintext: \"my-secret-password\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"instance\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tAccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{\n\t\t\t\t\t\tnil,\n\t\t\t\t\t},\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"test\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(\"debian-cloud/debian-11\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\"password\": pulumi.String(myPassword.Ciphertext),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.kms.KmsFunctions;\nimport com.pulumi.gcp.kms.inputs.GetKMSSecretCiphertextArgs;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var myPassword = KmsFunctions.getKMSSecretCiphertext(GetKMSSecretCiphertextArgs.builder()\n .cryptoKey(myCryptoKey.id())\n .plaintext(\"my-secret-password\")\n .build());\n\n var instance = new Instance(\"instance\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .network(\"default\")\n .build())\n .name(\"test\")\n .machineType(\"e2-medium\")\n .zone(\"us-central1-a\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(\"debian-cloud/debian-11\")\n .build())\n .build())\n .metadata(Map.of(\"password\", myPassword.applyValue(getKMSSecretCiphertextResult -\u003e getKMSSecretCiphertextResult.ciphertext())))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:compute:Instance\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n network: default\n name: test\n machineType: e2-medium\n zone: us-central1-a\n bootDisk:\n initializeParams:\n image: debian-cloud/debian-11\n metadata:\n password: ${myPassword.ciphertext}\nvariables:\n myPassword:\n fn::invoke:\n Function: gcp:kms:getKMSSecretCiphertext\n Arguments:\n cryptoKey: ${myCryptoKey.id}\n plaintext: my-secret-password\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nThe resulting instance can then access the encrypted password from its metadata\nand decrypt it, e.g. using the [Cloud SDK](https://cloud.google.com/sdk/gcloud/reference/kms/decrypt)):\n\n```bash\n$ curl -H \"Metadata-Flavor: Google\" http://metadata.google.internal/computeMetadata/v1/instance/attributes/password \\\n\u003e | base64 -d | gcloud kms decrypt \\\n\u003e --project my-project \\\n\u003e --location us-central1 \\\n\u003e --keyring my-key-ring \\\n\u003e --key my-crypto-key \\\n\u003e --plaintext-file - \\\n\u003e --ciphertext-file - \\\nmy-secret-password\n```\n", + "description": "!\u003e **Warning:** This data source is deprecated. Use the `gcp.kms.SecretCiphertext` **resource** instead.\n\nThis data source allows you to encrypt data with Google Cloud KMS and use the\nciphertext within your resource definitions.\n\nFor more information see\n[the official documentation](https://cloud.google.com/kms/docs/encrypt-decrypt).\n\n\u003e **NOTE:** Using this data source will allow you to conceal secret data within your\nresource definitions, but it does not take care of protecting that data in the\nlogging output, plan output, or state output. Please take care to secure your secret\ndata outside of resource definitions.\n\n## Example Usage\n\nFirst, create a KMS KeyRing and CryptoKey using the resource definitions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myKeyRing = new gcp.kms.KeyRing(\"my_key_ring\", {\n project: \"my-project\",\n name: \"my-key-ring\",\n location: \"us-central1\",\n});\nconst myCryptoKey = new gcp.kms.CryptoKey(\"my_crypto_key\", {\n name: \"my-crypto-key\",\n keyRing: myKeyRing.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_key_ring = gcp.kms.KeyRing(\"my_key_ring\",\n project=\"my-project\",\n name=\"my-key-ring\",\n location=\"us-central1\")\nmy_crypto_key = gcp.kms.CryptoKey(\"my_crypto_key\",\n name=\"my-crypto-key\",\n key_ring=my_key_ring.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var myKeyRing = new Gcp.Kms.KeyRing(\"my_key_ring\", new()\n {\n Project = \"my-project\",\n Name = \"my-key-ring\",\n Location = \"us-central1\",\n });\n\n var myCryptoKey = new Gcp.Kms.CryptoKey(\"my_crypto_key\", new()\n {\n Name = \"my-crypto-key\",\n KeyRing = myKeyRing.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyKeyRing, err := kms.NewKeyRing(ctx, \"my_key_ring\", \u0026kms.KeyRingArgs{\n\t\t\tProject: pulumi.String(\"my-project\"),\n\t\t\tName: pulumi.String(\"my-key-ring\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kms.NewCryptoKey(ctx, \"my_crypto_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"my-crypto-key\"),\n\t\t\tKeyRing: myKeyRing.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var myKeyRing = new KeyRing(\"myKeyRing\", KeyRingArgs.builder()\n .project(\"my-project\")\n .name(\"my-key-ring\")\n .location(\"us-central1\")\n .build());\n\n var myCryptoKey = new CryptoKey(\"myCryptoKey\", CryptoKeyArgs.builder()\n .name(\"my-crypto-key\")\n .keyRing(myKeyRing.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myKeyRing:\n type: gcp:kms:KeyRing\n name: my_key_ring\n properties:\n project: my-project\n name: my-key-ring\n location: us-central1\n myCryptoKey:\n type: gcp:kms:CryptoKey\n name: my_crypto_key\n properties:\n name: my-crypto-key\n keyRing: ${myKeyRing.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nNext, encrypt some sensitive information and use the encrypted data in your resource definitions:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myPassword = gcp.kms.getKMSSecretCiphertext({\n cryptoKey: myCryptoKey.id,\n plaintext: \"my-secret-password\",\n});\nconst instance = new gcp.compute.Instance(\"instance\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n network: \"default\",\n }],\n name: \"test\",\n machineType: \"e2-medium\",\n zone: \"us-central1-a\",\n bootDisk: {\n initializeParams: {\n image: \"debian-cloud/debian-11\",\n },\n },\n metadata: {\n password: myPassword.then(myPassword =\u003e myPassword.ciphertext),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_password = gcp.kms.get_kms_secret_ciphertext(crypto_key=my_crypto_key[\"id\"],\n plaintext=\"my-secret-password\")\ninstance = gcp.compute.Instance(\"instance\",\n network_interfaces=[{\n \"access_configs\": [{}],\n \"network\": \"default\",\n }],\n name=\"test\",\n machine_type=\"e2-medium\",\n zone=\"us-central1-a\",\n boot_disk={\n \"initialize_params\": {\n \"image\": \"debian-cloud/debian-11\",\n },\n },\n metadata={\n \"password\": my_password.ciphertext,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var myPassword = Gcp.Kms.GetKMSSecretCiphertext.Invoke(new()\n {\n CryptoKey = myCryptoKey.Id,\n Plaintext = \"my-secret-password\",\n });\n\n var instance = new Gcp.Compute.Instance(\"instance\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Network = \"default\",\n },\n },\n Name = \"test\",\n MachineType = \"e2-medium\",\n Zone = \"us-central1-a\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = \"debian-cloud/debian-11\",\n },\n },\n Metadata = \n {\n { \"password\", myPassword.Apply(getKMSSecretCiphertextResult =\u003e getKMSSecretCiphertextResult.Ciphertext) },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyPassword, err := kms.GetKMSSecretCiphertext(ctx, \u0026kms.GetKMSSecretCiphertextArgs{\n\t\t\tCryptoKey: myCryptoKey.Id,\n\t\t\tPlaintext: \"my-secret-password\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"instance\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tAccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{\n\t\t\t\t\t\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(\"test\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(\"debian-cloud/debian-11\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\"password\": pulumi.String(myPassword.Ciphertext),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.kms.KmsFunctions;\nimport com.pulumi.gcp.kms.inputs.GetKMSSecretCiphertextArgs;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var myPassword = KmsFunctions.getKMSSecretCiphertext(GetKMSSecretCiphertextArgs.builder()\n .cryptoKey(myCryptoKey.id())\n .plaintext(\"my-secret-password\")\n .build());\n\n var instance = new Instance(\"instance\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .network(\"default\")\n .build())\n .name(\"test\")\n .machineType(\"e2-medium\")\n .zone(\"us-central1-a\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(\"debian-cloud/debian-11\")\n .build())\n .build())\n .metadata(Map.of(\"password\", myPassword.applyValue(getKMSSecretCiphertextResult -\u003e getKMSSecretCiphertextResult.ciphertext())))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:compute:Instance\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n network: default\n name: test\n machineType: e2-medium\n zone: us-central1-a\n bootDisk:\n initializeParams:\n image: debian-cloud/debian-11\n metadata:\n password: ${myPassword.ciphertext}\nvariables:\n myPassword:\n fn::invoke:\n Function: gcp:kms:getKMSSecretCiphertext\n Arguments:\n cryptoKey: ${myCryptoKey.id}\n plaintext: my-secret-password\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nThe resulting instance can then access the encrypted password from its metadata\nand decrypt it, e.g. using the [Cloud SDK](https://cloud.google.com/sdk/gcloud/reference/kms/decrypt)):\n\n```bash\n$ curl -H \"Metadata-Flavor: Google\" http://metadata.google.internal/computeMetadata/v1/instance/attributes/password \\\n\u003e | base64 -d | gcloud kms decrypt \\\n\u003e --project my-project \\\n\u003e --location us-central1 \\\n\u003e --keyring my-key-ring \\\n\u003e --key my-crypto-key \\\n\u003e --plaintext-file - \\\n\u003e --ciphertext-file - \\\nmy-secret-password\n```\n", "inputs": { "description": "A collection of arguments for invoking getKMSSecretCiphertext.\n", "properties": { @@ -278853,7 +278853,7 @@ } }, "gcp:monitoring/getUptimeCheckIPs:getUptimeCheckIPs": { - "description": "Returns the list of IP addresses that checkers run from. For more information see\nthe [official documentation](https://cloud.google.com/monitoring/uptime-checks#get-ips).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst ips = gcp.monitoring.getUptimeCheckIPs({});\nexport const ipList = ips.then(ips =\u003e ips.uptimeCheckIps);\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nips = gcp.monitoring.get_uptime_check_i_ps()\npulumi.export(\"ipList\", ips.uptime_check_ips)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var ips = Gcp.Monitoring.GetUptimeCheckIPs.Invoke();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"ipList\"] = ips.Apply(getUptimeCheckIPsResult =\u003e getUptimeCheckIPsResult.UptimeCheckIps),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/monitoring\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tips, err := monitoring.GetUptimeCheckIPs(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"ipList\", ips.UptimeCheckIps)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.monitoring.MonitoringFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var ips = MonitoringFunctions.getUptimeCheckIPs();\n\n ctx.export(\"ipList\", ips.applyValue(getUptimeCheckIPsResult -\u003e getUptimeCheckIPsResult.uptimeCheckIps()));\n }\n}\n```\n```yaml\nvariables:\n ips:\n fn::invoke:\n Function: gcp:monitoring:getUptimeCheckIPs\n Arguments: {}\noutputs:\n ipList: ${ips.uptimeCheckIps}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Returns the list of IP addresses that checkers run from. For more information see\nthe [official documentation](https://cloud.google.com/monitoring/uptime-checks#get-ips).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst ips = gcp.monitoring.getUptimeCheckIPs({});\nexport const ipList = ips.then(ips =\u003e ips.uptimeCheckIps);\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nips = gcp.monitoring.get_uptime_check_i_ps()\npulumi.export(\"ipList\", ips.uptime_check_ips)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var ips = Gcp.Monitoring.GetUptimeCheckIPs.Invoke();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"ipList\"] = ips.Apply(getUptimeCheckIPsResult =\u003e getUptimeCheckIPsResult.UptimeCheckIps),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/monitoring\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tips, err := monitoring.GetUptimeCheckIPs(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"ipList\", ips.UptimeCheckIps)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.monitoring.MonitoringFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var ips = MonitoringFunctions.getUptimeCheckIPs();\n\n ctx.export(\"ipList\", ips.applyValue(getUptimeCheckIPsResult -\u003e getUptimeCheckIPsResult.uptimeCheckIps()));\n }\n}\n```\n```yaml\nvariables:\n ips:\n fn::invoke:\n Function: gcp:monitoring:getUptimeCheckIPs\n Arguments: {}\noutputs:\n ipList: ${ips.uptimeCheckIps}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "outputs": { "description": "A collection of values returned by getUptimeCheckIPs.\n", "properties": { @@ -279182,7 +279182,7 @@ } }, "gcp:organizations/getClientConfig:getClientConfig": { - "description": "## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst current = gcp.organizations.getClientConfig({});\nexport const project = current.then(current =\u003e current.project);\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncurrent = gcp.organizations.get_client_config()\npulumi.export(\"project\", current.project)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Gcp.Organizations.GetClientConfig.Invoke();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"project\"] = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := organizations.GetClientConfig(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"project\", current.Project)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = OrganizationsFunctions.getClientConfig();\n\n ctx.export(\"project\", current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()));\n }\n}\n```\n```yaml\nvariables:\n current:\n fn::invoke:\n Function: gcp:organizations:getClientConfig\n Arguments: {}\noutputs:\n project: ${current.project}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### Configure Kubernetes Provider With OAuth2 Access Token\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.container.ContainerFunctions;\nimport com.pulumi.gcp.container.inputs.GetClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = OrganizationsFunctions.getClientConfig();\n\n final var myCluster = ContainerFunctions.getCluster(GetClusterArgs.builder()\n .name(\"my-cluster\")\n .zone(\"us-east1-a\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n default:\n fn::invoke:\n Function: gcp:organizations:getClientConfig\n Arguments: {}\n myCluster:\n fn::invoke:\n Function: gcp:container:getCluster\n Arguments:\n name: my-cluster\n zone: us-east1-a\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst current = gcp.organizations.getClientConfig({});\nexport const project = current.then(current =\u003e current.project);\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncurrent = gcp.organizations.get_client_config()\npulumi.export(\"project\", current.project)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = Gcp.Organizations.GetClientConfig.Invoke();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"project\"] = current.Apply(getClientConfigResult =\u003e getClientConfigResult.Project),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := organizations.GetClientConfig(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"project\", current.Project)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = OrganizationsFunctions.getClientConfig();\n\n ctx.export(\"project\", current.applyValue(getClientConfigResult -\u003e getClientConfigResult.project()));\n }\n}\n```\n```yaml\nvariables:\n current:\n fn::invoke:\n Function: gcp:organizations:getClientConfig\n Arguments: {}\noutputs:\n project: ${current.project}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### Configure Kubernetes Provider With OAuth2 Access Token\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.container.ContainerFunctions;\nimport com.pulumi.gcp.container.inputs.GetClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = OrganizationsFunctions.getClientConfig();\n\n final var myCluster = ContainerFunctions.getCluster(GetClusterArgs.builder()\n .name(\"my-cluster\")\n .zone(\"us-east1-a\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n default:\n fn::invoke:\n Function: gcp:organizations:getClientConfig\n Arguments: {}\n myCluster:\n fn::invoke:\n Function: gcp:container:getCluster\n Arguments:\n name: my-cluster\n zone: us-east1-a\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "outputs": { "description": "A collection of values returned by getClientConfig.\n", "properties": { @@ -279226,7 +279226,7 @@ } }, "gcp:organizations/getClientOpenIdUserInfo:getClientOpenIdUserInfo": { - "description": "Get OpenID userinfo about the credentials used with the Google provider,\nspecifically the email.\n\nThis datasource enables you to export the email of the account you've\nauthenticated the provider with; this can be used alongside\n`data.google_client_config`'s `access_token` to perform OpenID Connect\nauthentication with GKE and configure an RBAC role for the email used.\n\n\u003e This resource will only work as expected if the provider is configured to\nuse the `https://www.googleapis.com/auth/userinfo.email` scope! You will\nreceive an error otherwise. The provider uses this scope by default.\n\n## Example Usage\n\n### Exporting An Email\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nexport = async () =\u003e {\n const me = await gcp.organizations.getClientOpenIdUserInfo({});\n return {\n \"my-email\": me.email,\n };\n}\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nme = gcp.organizations.get_client_open_id_user_info()\npulumi.export(\"my-email\", me.email)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var me = Gcp.Organizations.GetClientOpenIdUserInfo.Invoke();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"my-email\"] = me.Apply(getClientOpenIdUserInfoResult =\u003e getClientOpenIdUserInfoResult.Email),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tme, err := organizations.GetClientOpenIdUserInfo(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"my-email\", me.Email)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var me = OrganizationsFunctions.getClientOpenIdUserInfo();\n\n ctx.export(\"my-email\", me.applyValue(getClientOpenIdUserInfoResult -\u003e getClientOpenIdUserInfoResult.email()));\n }\n}\n```\n```yaml\nvariables:\n me:\n fn::invoke:\n Function: gcp:organizations:getClientOpenIdUserInfo\n Arguments: {}\noutputs:\n my-email: ${me.email}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### OpenID Connect W/ Kubernetes Provider + RBAC IAM Role\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nresources:\n user:\n type: kubernetes:rbac.authorization.k8s.io/v1:ClusterRoleBinding\n properties:\n metadata:\n name: provider-user-admin\n roleRef:\n apiGroup: rbac.authorization.k8s.io\n kind: ClusterRole\n name: cluster-admin\n subject:\n - kind: User\n name: ${providerIdentity.email}\nvariables:\n providerIdentity:\n fn::invoke:\n Function: gcp:organizations:getClientOpenIdUserInfo\n Arguments: {}\n provider:\n fn::invoke:\n Function: gcp:organizations:getClientConfig\n Arguments: {}\n myCluster:\n fn::invoke:\n Function: gcp:container:getCluster\n Arguments:\n name: my-cluster\n zone: us-east1-a\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Get OpenID userinfo about the credentials used with the Google provider,\nspecifically the email.\n\nThis datasource enables you to export the email of the account you've\nauthenticated the provider with; this can be used alongside\n`data.google_client_config`'s `access_token` to perform OpenID Connect\nauthentication with GKE and configure an RBAC role for the email used.\n\n\u003e This resource will only work as expected if the provider is configured to\nuse the `https://www.googleapis.com/auth/userinfo.email` scope! You will\nreceive an error otherwise. The provider uses this scope by default.\n\n## Example Usage\n\n### Exporting An Email\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nexport = async () =\u003e {\n const me = await gcp.organizations.getClientOpenIdUserInfo({});\n return {\n \"my-email\": me.email,\n };\n}\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nme = gcp.organizations.get_client_open_id_user_info()\npulumi.export(\"my-email\", me.email)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var me = Gcp.Organizations.GetClientOpenIdUserInfo.Invoke();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"my-email\"] = me.Apply(getClientOpenIdUserInfoResult =\u003e getClientOpenIdUserInfoResult.Email),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tme, err := organizations.GetClientOpenIdUserInfo(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"my-email\", me.Email)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var me = OrganizationsFunctions.getClientOpenIdUserInfo();\n\n ctx.export(\"my-email\", me.applyValue(getClientOpenIdUserInfoResult -\u003e getClientOpenIdUserInfoResult.email()));\n }\n}\n```\n```yaml\nvariables:\n me:\n fn::invoke:\n Function: gcp:organizations:getClientOpenIdUserInfo\n Arguments: {}\noutputs:\n my-email: ${me.email}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### OpenID Connect W/ Kubernetes Provider + RBAC IAM Role\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nresources:\n user:\n type: kubernetes:rbac.authorization.k8s.io/v1:ClusterRoleBinding\n properties:\n metadata:\n name: provider-user-admin\n roleRef:\n apiGroup: rbac.authorization.k8s.io\n kind: ClusterRole\n name: cluster-admin\n subject:\n - kind: User\n name: ${providerIdentity.email}\nvariables:\n providerIdentity:\n fn::invoke:\n Function: gcp:organizations:getClientOpenIdUserInfo\n Arguments: {}\n provider:\n fn::invoke:\n Function: gcp:organizations:getClientConfig\n Arguments: {}\n myCluster:\n fn::invoke:\n Function: gcp:container:getCluster\n Arguments:\n name: my-cluster\n zone: us-east1-a\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "outputs": { "description": "A collection of values returned by getClientOpenIdUserInfo.\n", "properties": { @@ -279480,7 +279480,7 @@ } }, "gcp:organizations/getProject:getProject": { - "description": "Use this data source to get project details.\nFor more information see\n[API](https://cloud.google.com/resource-manager/reference/rest/v1/projects#Project)\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nexport const projectNumber = project.then(project =\u003e project.number);\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\npulumi.export(\"projectNumber\", project.number)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"projectNumber\"] = project.Apply(getProjectResult =\u003e getProjectResult.Number),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"projectNumber\", project.Number)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n ctx.export(\"projectNumber\", project.applyValue(getProjectResult -\u003e getProjectResult.number()));\n }\n}\n```\n```yaml\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\noutputs:\n projectNumber: ${project.number}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Use this data source to get project details.\nFor more information see\n[API](https://cloud.google.com/resource-manager/reference/rest/v1/projects#Project)\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nexport const projectNumber = project.then(project =\u003e project.number);\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\npulumi.export(\"projectNumber\", project.number)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"projectNumber\"] = project.Apply(getProjectResult =\u003e getProjectResult.Number),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"projectNumber\", project.Number)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n ctx.export(\"projectNumber\", project.applyValue(getProjectResult -\u003e getProjectResult.number()));\n }\n}\n```\n```yaml\nvariables:\n project:\n fn::invoke:\n Function: gcp:organizations:getProject\n Arguments: {}\noutputs:\n projectNumber: ${project.number}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getProject.\n", "properties": { @@ -281127,7 +281127,7 @@ } }, "gcp:secretmanager/getSecrets:getSecrets": { - "description": "Use this data source to list the Secret Manager Secrets\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secrets = gcp.secretmanager.getSecrets({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecrets = gcp.secretmanager.get_secrets()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var secrets = Gcp.SecretManager.GetSecrets.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := secretmanager.GetSecrets(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.SecretmanagerFunctions;\nimport com.pulumi.gcp.secretmanager.inputs.GetSecretsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var secrets = SecretmanagerFunctions.getSecrets();\n\n }\n}\n```\n```yaml\nvariables:\n secrets:\n fn::invoke:\n Function: gcp:secretmanager:getSecrets\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Use this data source to list the Secret Manager Secrets\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst secrets = gcp.secretmanager.getSecrets({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecrets = gcp.secretmanager.get_secrets()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var secrets = Gcp.SecretManager.GetSecrets.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := secretmanager.GetSecrets(ctx, \u0026secretmanager.GetSecretsArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.SecretmanagerFunctions;\nimport com.pulumi.gcp.secretmanager.inputs.GetSecretsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var secrets = SecretmanagerFunctions.getSecrets();\n\n }\n}\n```\n```yaml\nvariables:\n secrets:\n fn::invoke:\n Function: gcp:secretmanager:getSecrets\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getSecrets.\n", "properties": { @@ -281468,7 +281468,7 @@ } }, "gcp:serviceaccount/getAccountAccessToken:getAccountAccessToken": { - "description": "This data source provides a google `oauth2` `access_token` for a different service account than the one initially running the script.\n\nFor more information see\n[the official documentation](https://cloud.google.com/iam/docs/creating-short-lived-service-account-credentials) as well as [iamcredentials.generateAccessToken()](https://cloud.google.com/iam/credentials/reference/rest/v1/projects.serviceAccounts/generateAccessToken)\n\n## Example Usage\n\nTo allow `service_A` to impersonate `service_B`, grant the [Service Account Token Creator](https://cloud.google.com/iam/docs/service-accounts#the_service_account_token_creator_role) on B to A. \n\nIn the IAM policy below, `service_A` is given the Token Creator role impersonate `service_B`\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst token_creator_iam = new gcp.serviceaccount.IAMBinding(\"token-creator-iam\", {\n serviceAccountId: \"projects/-/serviceAccounts/service_B@projectB.iam.gserviceaccount.com\",\n role: \"roles/iam.serviceAccountTokenCreator\",\n members: [\"serviceAccount:service_A@projectA.iam.gserviceaccount.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntoken_creator_iam = gcp.serviceaccount.IAMBinding(\"token-creator-iam\",\n service_account_id=\"projects/-/serviceAccounts/service_B@projectB.iam.gserviceaccount.com\",\n role=\"roles/iam.serviceAccountTokenCreator\",\n members=[\"serviceAccount:service_A@projectA.iam.gserviceaccount.com\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var token_creator_iam = new Gcp.ServiceAccount.IAMBinding(\"token-creator-iam\", new()\n {\n ServiceAccountId = \"projects/-/serviceAccounts/service_B@projectB.iam.gserviceaccount.com\",\n Role = \"roles/iam.serviceAccountTokenCreator\",\n Members = new[]\n {\n \"serviceAccount:service_A@projectA.iam.gserviceaccount.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := serviceaccount.NewIAMBinding(ctx, \"token-creator-iam\", \u0026serviceaccount.IAMBindingArgs{\n\t\t\tServiceAccountId: pulumi.String(\"projects/-/serviceAccounts/service_B@projectB.iam.gserviceaccount.com\"),\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountTokenCreator\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"serviceAccount:service_A@projectA.iam.gserviceaccount.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.serviceaccount.IAMBinding;\nimport com.pulumi.gcp.serviceaccount.IAMBindingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var token_creator_iam = new IAMBinding(\"token-creator-iam\", IAMBindingArgs.builder()\n .serviceAccountId(\"projects/-/serviceAccounts/service_B@projectB.iam.gserviceaccount.com\")\n .role(\"roles/iam.serviceAccountTokenCreator\")\n .members(\"serviceAccount:service_A@projectA.iam.gserviceaccount.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n token-creator-iam:\n type: gcp:serviceaccount:IAMBinding\n properties:\n serviceAccountId: projects/-/serviceAccounts/service_B@projectB.iam.gserviceaccount.com\n role: roles/iam.serviceAccountTokenCreator\n members:\n - serviceAccount:service_A@projectA.iam.gserviceaccount.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nOnce the IAM permissions are set, you can apply the new token to a provider bootstrapped with it. Any resources that references the aliased provider will run as the new identity.\n\nIn the example below, `gcp.organizations.Project` will run as `service_B`.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nexport = async () =\u003e {\n const default = await gcp.organizations.getClientConfig({});\n const defaultGetAccountAccessToken = await gcp.serviceaccount.getAccountAccessToken({\n targetServiceAccount: \"service_B@projectB.iam.gserviceaccount.com\",\n scopes: [\n \"userinfo-email\",\n \"cloud-platform\",\n ],\n lifetime: \"300s\",\n });\n const me = await gcp.organizations.getClientOpenIdUserInfo({});\n return {\n \"target-email\": me.email,\n };\n}\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.organizations.get_client_config()\ndefault_get_account_access_token = gcp.serviceaccount.get_account_access_token(target_service_account=\"service_B@projectB.iam.gserviceaccount.com\",\n scopes=[\n \"userinfo-email\",\n \"cloud-platform\",\n ],\n lifetime=\"300s\")\nme = gcp.organizations.get_client_open_id_user_info()\npulumi.export(\"target-email\", me.email)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Organizations.GetClientConfig.Invoke();\n\n var defaultGetAccountAccessToken = Gcp.ServiceAccount.GetAccountAccessToken.Invoke(new()\n {\n TargetServiceAccount = \"service_B@projectB.iam.gserviceaccount.com\",\n Scopes = new[]\n {\n \"userinfo-email\",\n \"cloud-platform\",\n },\n Lifetime = \"300s\",\n });\n\n var me = Gcp.Organizations.GetClientOpenIdUserInfo.Invoke();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"target-email\"] = me.Apply(getClientOpenIdUserInfoResult =\u003e getClientOpenIdUserInfoResult.Email),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := organizations.GetClientConfig(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.GetAccountAccessToken(ctx, \u0026serviceaccount.GetAccountAccessTokenArgs{\n\t\t\tTargetServiceAccount: \"service_B@projectB.iam.gserviceaccount.com\",\n\t\t\tScopes: []string{\n\t\t\t\t\"userinfo-email\",\n\t\t\t\t\"cloud-platform\",\n\t\t\t},\n\t\t\tLifetime: pulumi.StringRef(\"300s\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tme, err := organizations.GetClientOpenIdUserInfo(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"target-email\", me.Email)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.serviceaccount.ServiceaccountFunctions;\nimport com.pulumi.gcp.serviceaccount.inputs.GetAccountAccessTokenArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = OrganizationsFunctions.getClientConfig();\n\n final var defaultGetAccountAccessToken = ServiceaccountFunctions.getAccountAccessToken(GetAccountAccessTokenArgs.builder()\n .targetServiceAccount(\"service_B@projectB.iam.gserviceaccount.com\")\n .scopes( \n \"userinfo-email\",\n \"cloud-platform\")\n .lifetime(\"300s\")\n .build());\n\n final var me = OrganizationsFunctions.getClientOpenIdUserInfo();\n\n ctx.export(\"target-email\", me.applyValue(getClientOpenIdUserInfoResult -\u003e getClientOpenIdUserInfoResult.email()));\n }\n}\n```\n```yaml\nvariables:\n default:\n fn::invoke:\n Function: gcp:organizations:getClientConfig\n Arguments: {}\n defaultGetAccountAccessToken:\n fn::invoke:\n Function: gcp:serviceaccount:getAccountAccessToken\n Arguments:\n targetServiceAccount: service_B@projectB.iam.gserviceaccount.com\n scopes:\n - userinfo-email\n - cloud-platform\n lifetime: 300s\n me:\n fn::invoke:\n Function: gcp:organizations:getClientOpenIdUserInfo\n Arguments: {}\noutputs:\n target-email: ${me.email}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003e *Note*: the generated token is non-refreshable and can have a maximum `lifetime` of `3600` seconds.\n", + "description": "This data source provides a google `oauth2` `access_token` for a different service account than the one initially running the script.\n\nFor more information see\n[the official documentation](https://cloud.google.com/iam/docs/creating-short-lived-service-account-credentials) as well as [iamcredentials.generateAccessToken()](https://cloud.google.com/iam/credentials/reference/rest/v1/projects.serviceAccounts/generateAccessToken)\n\n## Example Usage\n\nTo allow `service_A` to impersonate `service_B`, grant the [Service Account Token Creator](https://cloud.google.com/iam/docs/service-accounts#the_service_account_token_creator_role) on B to A. \n\nIn the IAM policy below, `service_A` is given the Token Creator role impersonate `service_B`\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst token_creator_iam = new gcp.serviceaccount.IAMBinding(\"token-creator-iam\", {\n serviceAccountId: \"projects/-/serviceAccounts/service_B@projectB.iam.gserviceaccount.com\",\n role: \"roles/iam.serviceAccountTokenCreator\",\n members: [\"serviceAccount:service_A@projectA.iam.gserviceaccount.com\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntoken_creator_iam = gcp.serviceaccount.IAMBinding(\"token-creator-iam\",\n service_account_id=\"projects/-/serviceAccounts/service_B@projectB.iam.gserviceaccount.com\",\n role=\"roles/iam.serviceAccountTokenCreator\",\n members=[\"serviceAccount:service_A@projectA.iam.gserviceaccount.com\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var token_creator_iam = new Gcp.ServiceAccount.IAMBinding(\"token-creator-iam\", new()\n {\n ServiceAccountId = \"projects/-/serviceAccounts/service_B@projectB.iam.gserviceaccount.com\",\n Role = \"roles/iam.serviceAccountTokenCreator\",\n Members = new[]\n {\n \"serviceAccount:service_A@projectA.iam.gserviceaccount.com\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := serviceaccount.NewIAMBinding(ctx, \"token-creator-iam\", \u0026serviceaccount.IAMBindingArgs{\n\t\t\tServiceAccountId: pulumi.String(\"projects/-/serviceAccounts/service_B@projectB.iam.gserviceaccount.com\"),\n\t\t\tRole: pulumi.String(\"roles/iam.serviceAccountTokenCreator\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"serviceAccount:service_A@projectA.iam.gserviceaccount.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.serviceaccount.IAMBinding;\nimport com.pulumi.gcp.serviceaccount.IAMBindingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var token_creator_iam = new IAMBinding(\"token-creator-iam\", IAMBindingArgs.builder()\n .serviceAccountId(\"projects/-/serviceAccounts/service_B@projectB.iam.gserviceaccount.com\")\n .role(\"roles/iam.serviceAccountTokenCreator\")\n .members(\"serviceAccount:service_A@projectA.iam.gserviceaccount.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n token-creator-iam:\n type: gcp:serviceaccount:IAMBinding\n properties:\n serviceAccountId: projects/-/serviceAccounts/service_B@projectB.iam.gserviceaccount.com\n role: roles/iam.serviceAccountTokenCreator\n members:\n - serviceAccount:service_A@projectA.iam.gserviceaccount.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nOnce the IAM permissions are set, you can apply the new token to a provider bootstrapped with it. Any resources that references the aliased provider will run as the new identity.\n\nIn the example below, `gcp.organizations.Project` will run as `service_B`.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nexport = async () =\u003e {\n const default = await gcp.organizations.getClientConfig({});\n const defaultGetAccountAccessToken = await gcp.serviceaccount.getAccountAccessToken({\n targetServiceAccount: \"service_B@projectB.iam.gserviceaccount.com\",\n scopes: [\n \"userinfo-email\",\n \"cloud-platform\",\n ],\n lifetime: \"300s\",\n });\n const me = await gcp.organizations.getClientOpenIdUserInfo({});\n return {\n \"target-email\": me.email,\n };\n}\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.organizations.get_client_config()\ndefault_get_account_access_token = gcp.serviceaccount.get_account_access_token(target_service_account=\"service_B@projectB.iam.gserviceaccount.com\",\n scopes=[\n \"userinfo-email\",\n \"cloud-platform\",\n ],\n lifetime=\"300s\")\nme = gcp.organizations.get_client_open_id_user_info()\npulumi.export(\"target-email\", me.email)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Organizations.GetClientConfig.Invoke();\n\n var defaultGetAccountAccessToken = Gcp.ServiceAccount.GetAccountAccessToken.Invoke(new()\n {\n TargetServiceAccount = \"service_B@projectB.iam.gserviceaccount.com\",\n Scopes = new[]\n {\n \"userinfo-email\",\n \"cloud-platform\",\n },\n Lifetime = \"300s\",\n });\n\n var me = Gcp.Organizations.GetClientOpenIdUserInfo.Invoke();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"target-email\"] = me.Apply(getClientOpenIdUserInfoResult =\u003e getClientOpenIdUserInfoResult.Email),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := organizations.GetClientConfig(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.GetAccountAccessToken(ctx, \u0026serviceaccount.GetAccountAccessTokenArgs{\n\t\t\tTargetServiceAccount: \"service_B@projectB.iam.gserviceaccount.com\",\n\t\t\tScopes: []string{\n\t\t\t\t\"userinfo-email\",\n\t\t\t\t\"cloud-platform\",\n\t\t\t},\n\t\t\tLifetime: pulumi.StringRef(\"300s\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tme, err := organizations.GetClientOpenIdUserInfo(ctx, map[string]interface{}{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"target-email\", me.Email)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.serviceaccount.ServiceaccountFunctions;\nimport com.pulumi.gcp.serviceaccount.inputs.GetAccountAccessTokenArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = OrganizationsFunctions.getClientConfig();\n\n final var defaultGetAccountAccessToken = ServiceaccountFunctions.getAccountAccessToken(GetAccountAccessTokenArgs.builder()\n .targetServiceAccount(\"service_B@projectB.iam.gserviceaccount.com\")\n .scopes( \n \"userinfo-email\",\n \"cloud-platform\")\n .lifetime(\"300s\")\n .build());\n\n final var me = OrganizationsFunctions.getClientOpenIdUserInfo();\n\n ctx.export(\"target-email\", me.applyValue(getClientOpenIdUserInfoResult -\u003e getClientOpenIdUserInfoResult.email()));\n }\n}\n```\n```yaml\nvariables:\n default:\n fn::invoke:\n Function: gcp:organizations:getClientConfig\n Arguments: {}\n defaultGetAccountAccessToken:\n fn::invoke:\n Function: gcp:serviceaccount:getAccountAccessToken\n Arguments:\n targetServiceAccount: service_B@projectB.iam.gserviceaccount.com\n scopes:\n - userinfo-email\n - cloud-platform\n lifetime: 300s\n me:\n fn::invoke:\n Function: gcp:organizations:getClientOpenIdUserInfo\n Arguments: {}\noutputs:\n target-email: ${me.email}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003e *Note*: the generated token is non-refreshable and can have a maximum `lifetime` of `3600` seconds.\n", "inputs": { "description": "A collection of arguments for invoking getAccountAccessToken.\n", "properties": { @@ -283611,7 +283611,7 @@ } }, "gcp:storage/getProjectServiceAccount:getProjectServiceAccount": { - "description": "Get the email address of a project's unique [automatic Google Cloud Storage service account](https://cloud.google.com/storage/docs/projects#service-accounts).\n\nFor each Google Cloud project, Google maintains a unique service account which\nis used as the identity for various Google Cloud Storage operations, including\noperations involving\n[customer-managed encryption keys](https://cloud.google.com/storage/docs/encryption/customer-managed-keys)\nand those involving\n[storage notifications to pub/sub](https://cloud.google.com/storage/docs/gsutil/commands/notification).\nThis automatic Google service account requires access to the relevant Cloud KMS keys or pub/sub topics, respectively, in order for Cloud Storage to use\nthese customer-managed resources.\n\nThe service account has a well-known, documented naming format which is parameterised on the numeric Google project ID.\nHowever, as noted in [the docs](https://cloud.google.com/storage/docs/projects#service-accounts), it is only created when certain relevant actions occur which\npresuppose its existence.\nThese actions include calling a [Cloud Storage API endpoint](https://cloud.google.com/storage/docs/json_api/v1/projects/serviceAccount/get) to yield the\nservice account's identity, or performing some operations in the UI which must use the service account's identity, such as attempting to list Cloud KMS keys\non the bucket creation page.\n\nUse of this data source calls the relevant API endpoint to obtain the service account's identity and thus ensures it exists prior to any API operations\nwhich demand its existence, such as specifying it in Cloud IAM policy.\nAlways prefer to use this data source over interpolating the project ID into the well-known format for this service account, as the latter approach may cause\nprovider update errors in cases where the service account does not yet exist.\n\n\u003e When you write provider code which uses features depending on this service account *and* your provider code adds the service account in IAM policy on other resources,\n you must take care for race conditions between the establishment of the IAM policy and creation of the relevant Cloud Storage resource.\n Cloud Storage APIs will require permissions on resources such as pub/sub topics or Cloud KMS keys to exist *before* the attempt to utilise them in a\n bucket configuration, otherwise the API calls will fail.\n You may need to use `depends_on` to create an explicit dependency between the IAM policy resource and the Cloud Storage resource which depends on it.\n See the examples here and in the `gcp.storage.Notification` resource.\n\nFor more information see\n[the API reference](https://cloud.google.com/storage/docs/json_api/v1/projects/serviceAccount).\n\n## Example Usage\n\n### Pub/Sub Notifications\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst gcsAccount = gcp.storage.getProjectServiceAccount({});\nconst binding = new gcp.pubsub.TopicIAMBinding(\"binding\", {\n topic: topic.name,\n role: \"roles/pubsub.publisher\",\n members: [gcsAccount.then(gcsAccount =\u003e `serviceAccount:${gcsAccount.emailAddress}`)],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ngcs_account = gcp.storage.get_project_service_account()\nbinding = gcp.pubsub.TopicIAMBinding(\"binding\",\n topic=topic[\"name\"],\n role=\"roles/pubsub.publisher\",\n members=[f\"serviceAccount:{gcs_account.email_address}\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var gcsAccount = Gcp.Storage.GetProjectServiceAccount.Invoke();\n\n var binding = new Gcp.PubSub.TopicIAMBinding(\"binding\", new()\n {\n Topic = topic.Name,\n Role = \"roles/pubsub.publisher\",\n Members = new[]\n {\n $\"serviceAccount:{gcsAccount.Apply(getProjectServiceAccountResult =\u003e getProjectServiceAccountResult.EmailAddress)}\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tgcsAccount, err := storage.GetProjectServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewTopicIAMBinding(ctx, \"binding\", \u0026pubsub.TopicIAMBindingArgs{\n\t\t\tTopic: pulumi.Any(topic.Name),\n\t\t\tRole: pulumi.String(\"roles/pubsub.publisher\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:%v\", gcsAccount.EmailAddress),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.StorageFunctions;\nimport com.pulumi.gcp.storage.inputs.GetProjectServiceAccountArgs;\nimport com.pulumi.gcp.pubsub.TopicIAMBinding;\nimport com.pulumi.gcp.pubsub.TopicIAMBindingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var gcsAccount = StorageFunctions.getProjectServiceAccount();\n\n var binding = new TopicIAMBinding(\"binding\", TopicIAMBindingArgs.builder()\n .topic(topic.name())\n .role(\"roles/pubsub.publisher\")\n .members(String.format(\"serviceAccount:%s\", gcsAccount.applyValue(getProjectServiceAccountResult -\u003e getProjectServiceAccountResult.emailAddress())))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n binding:\n type: gcp:pubsub:TopicIAMBinding\n properties:\n topic: ${topic.name}\n role: roles/pubsub.publisher\n members:\n - serviceAccount:${gcsAccount.emailAddress}\nvariables:\n gcsAccount:\n fn::invoke:\n Function: gcp:storage:getProjectServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### Cloud KMS Keys\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst gcsAccount = gcp.storage.getProjectServiceAccount({});\nconst binding = new gcp.kms.CryptoKeyIAMBinding(\"binding\", {\n cryptoKeyId: \"your-crypto-key-id\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members: [gcsAccount.then(gcsAccount =\u003e `serviceAccount:${gcsAccount.emailAddress}`)],\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"kms-protected-bucket\",\n location: \"US\",\n encryption: {\n defaultKmsKeyName: \"your-crypto-key-id\",\n },\n}, {\n dependsOn: [binding],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ngcs_account = gcp.storage.get_project_service_account()\nbinding = gcp.kms.CryptoKeyIAMBinding(\"binding\",\n crypto_key_id=\"your-crypto-key-id\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members=[f\"serviceAccount:{gcs_account.email_address}\"])\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"kms-protected-bucket\",\n location=\"US\",\n encryption={\n \"default_kms_key_name\": \"your-crypto-key-id\",\n },\n opts = pulumi.ResourceOptions(depends_on=[binding]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var gcsAccount = Gcp.Storage.GetProjectServiceAccount.Invoke();\n\n var binding = new Gcp.Kms.CryptoKeyIAMBinding(\"binding\", new()\n {\n CryptoKeyId = \"your-crypto-key-id\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Members = new[]\n {\n $\"serviceAccount:{gcsAccount.Apply(getProjectServiceAccountResult =\u003e getProjectServiceAccountResult.EmailAddress)}\",\n },\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = \"kms-protected-bucket\",\n Location = \"US\",\n Encryption = new Gcp.Storage.Inputs.BucketEncryptionArgs\n {\n DefaultKmsKeyName = \"your-crypto-key-id\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n binding,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tgcsAccount, err := storage.GetProjectServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbinding, err := kms.NewCryptoKeyIAMBinding(ctx, \"binding\", \u0026kms.CryptoKeyIAMBindingArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"your-crypto-key-id\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:%v\", gcsAccount.EmailAddress),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"kms-protected-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tEncryption: \u0026storage.BucketEncryptionArgs{\n\t\t\t\tDefaultKmsKeyName: pulumi.String(\"your-crypto-key-id\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tbinding,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.StorageFunctions;\nimport com.pulumi.gcp.storage.inputs.GetProjectServiceAccountArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBinding;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBindingArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.inputs.BucketEncryptionArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var gcsAccount = StorageFunctions.getProjectServiceAccount();\n\n var binding = new CryptoKeyIAMBinding(\"binding\", CryptoKeyIAMBindingArgs.builder()\n .cryptoKeyId(\"your-crypto-key-id\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .members(String.format(\"serviceAccount:%s\", gcsAccount.applyValue(getProjectServiceAccountResult -\u003e getProjectServiceAccountResult.emailAddress())))\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(\"kms-protected-bucket\")\n .location(\"US\")\n .encryption(BucketEncryptionArgs.builder()\n .defaultKmsKeyName(\"your-crypto-key-id\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(binding)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n binding:\n type: gcp:kms:CryptoKeyIAMBinding\n properties:\n cryptoKeyId: your-crypto-key-id\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n members:\n - serviceAccount:${gcsAccount.emailAddress}\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: kms-protected-bucket\n location: US\n encryption:\n defaultKmsKeyName: your-crypto-key-id\n options:\n dependson:\n - ${binding}\nvariables:\n gcsAccount:\n fn::invoke:\n Function: gcp:storage:getProjectServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Get the email address of a project's unique [automatic Google Cloud Storage service account](https://cloud.google.com/storage/docs/projects#service-accounts).\n\nFor each Google Cloud project, Google maintains a unique service account which\nis used as the identity for various Google Cloud Storage operations, including\noperations involving\n[customer-managed encryption keys](https://cloud.google.com/storage/docs/encryption/customer-managed-keys)\nand those involving\n[storage notifications to pub/sub](https://cloud.google.com/storage/docs/gsutil/commands/notification).\nThis automatic Google service account requires access to the relevant Cloud KMS keys or pub/sub topics, respectively, in order for Cloud Storage to use\nthese customer-managed resources.\n\nThe service account has a well-known, documented naming format which is parameterised on the numeric Google project ID.\nHowever, as noted in [the docs](https://cloud.google.com/storage/docs/projects#service-accounts), it is only created when certain relevant actions occur which\npresuppose its existence.\nThese actions include calling a [Cloud Storage API endpoint](https://cloud.google.com/storage/docs/json_api/v1/projects/serviceAccount/get) to yield the\nservice account's identity, or performing some operations in the UI which must use the service account's identity, such as attempting to list Cloud KMS keys\non the bucket creation page.\n\nUse of this data source calls the relevant API endpoint to obtain the service account's identity and thus ensures it exists prior to any API operations\nwhich demand its existence, such as specifying it in Cloud IAM policy.\nAlways prefer to use this data source over interpolating the project ID into the well-known format for this service account, as the latter approach may cause\nprovider update errors in cases where the service account does not yet exist.\n\n\u003e When you write provider code which uses features depending on this service account *and* your provider code adds the service account in IAM policy on other resources,\n you must take care for race conditions between the establishment of the IAM policy and creation of the relevant Cloud Storage resource.\n Cloud Storage APIs will require permissions on resources such as pub/sub topics or Cloud KMS keys to exist *before* the attempt to utilise them in a\n bucket configuration, otherwise the API calls will fail.\n You may need to use `depends_on` to create an explicit dependency between the IAM policy resource and the Cloud Storage resource which depends on it.\n See the examples here and in the `gcp.storage.Notification` resource.\n\nFor more information see\n[the API reference](https://cloud.google.com/storage/docs/json_api/v1/projects/serviceAccount).\n\n## Example Usage\n\n### Pub/Sub Notifications\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst gcsAccount = gcp.storage.getProjectServiceAccount({});\nconst binding = new gcp.pubsub.TopicIAMBinding(\"binding\", {\n topic: topic.name,\n role: \"roles/pubsub.publisher\",\n members: [gcsAccount.then(gcsAccount =\u003e `serviceAccount:${gcsAccount.emailAddress}`)],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ngcs_account = gcp.storage.get_project_service_account()\nbinding = gcp.pubsub.TopicIAMBinding(\"binding\",\n topic=topic[\"name\"],\n role=\"roles/pubsub.publisher\",\n members=[f\"serviceAccount:{gcs_account.email_address}\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var gcsAccount = Gcp.Storage.GetProjectServiceAccount.Invoke();\n\n var binding = new Gcp.PubSub.TopicIAMBinding(\"binding\", new()\n {\n Topic = topic.Name,\n Role = \"roles/pubsub.publisher\",\n Members = new[]\n {\n $\"serviceAccount:{gcsAccount.Apply(getProjectServiceAccountResult =\u003e getProjectServiceAccountResult.EmailAddress)}\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/pubsub\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tgcsAccount, err := storage.GetProjectServiceAccount(ctx, \u0026storage.GetProjectServiceAccountArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewTopicIAMBinding(ctx, \"binding\", \u0026pubsub.TopicIAMBindingArgs{\n\t\t\tTopic: pulumi.Any(topic.Name),\n\t\t\tRole: pulumi.String(\"roles/pubsub.publisher\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:%v\", gcsAccount.EmailAddress),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.StorageFunctions;\nimport com.pulumi.gcp.storage.inputs.GetProjectServiceAccountArgs;\nimport com.pulumi.gcp.pubsub.TopicIAMBinding;\nimport com.pulumi.gcp.pubsub.TopicIAMBindingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var gcsAccount = StorageFunctions.getProjectServiceAccount();\n\n var binding = new TopicIAMBinding(\"binding\", TopicIAMBindingArgs.builder()\n .topic(topic.name())\n .role(\"roles/pubsub.publisher\")\n .members(String.format(\"serviceAccount:%s\", gcsAccount.applyValue(getProjectServiceAccountResult -\u003e getProjectServiceAccountResult.emailAddress())))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n binding:\n type: gcp:pubsub:TopicIAMBinding\n properties:\n topic: ${topic.name}\n role: roles/pubsub.publisher\n members:\n - serviceAccount:${gcsAccount.emailAddress}\nvariables:\n gcsAccount:\n fn::invoke:\n Function: gcp:storage:getProjectServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### Cloud KMS Keys\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst gcsAccount = gcp.storage.getProjectServiceAccount({});\nconst binding = new gcp.kms.CryptoKeyIAMBinding(\"binding\", {\n cryptoKeyId: \"your-crypto-key-id\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members: [gcsAccount.then(gcsAccount =\u003e `serviceAccount:${gcsAccount.emailAddress}`)],\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: \"kms-protected-bucket\",\n location: \"US\",\n encryption: {\n defaultKmsKeyName: \"your-crypto-key-id\",\n },\n}, {\n dependsOn: [binding],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ngcs_account = gcp.storage.get_project_service_account()\nbinding = gcp.kms.CryptoKeyIAMBinding(\"binding\",\n crypto_key_id=\"your-crypto-key-id\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members=[f\"serviceAccount:{gcs_account.email_address}\"])\nbucket = gcp.storage.Bucket(\"bucket\",\n name=\"kms-protected-bucket\",\n location=\"US\",\n encryption={\n \"default_kms_key_name\": \"your-crypto-key-id\",\n },\n opts = pulumi.ResourceOptions(depends_on=[binding]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var gcsAccount = Gcp.Storage.GetProjectServiceAccount.Invoke();\n\n var binding = new Gcp.Kms.CryptoKeyIAMBinding(\"binding\", new()\n {\n CryptoKeyId = \"your-crypto-key-id\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Members = new[]\n {\n $\"serviceAccount:{gcsAccount.Apply(getProjectServiceAccountResult =\u003e getProjectServiceAccountResult.EmailAddress)}\",\n },\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = \"kms-protected-bucket\",\n Location = \"US\",\n Encryption = new Gcp.Storage.Inputs.BucketEncryptionArgs\n {\n DefaultKmsKeyName = \"your-crypto-key-id\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n binding,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tgcsAccount, err := storage.GetProjectServiceAccount(ctx, \u0026storage.GetProjectServiceAccountArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbinding, err := kms.NewCryptoKeyIAMBinding(ctx, \"binding\", \u0026kms.CryptoKeyIAMBindingArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"your-crypto-key-id\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:%v\", gcsAccount.EmailAddress),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"kms-protected-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tEncryption: \u0026storage.BucketEncryptionArgs{\n\t\t\t\tDefaultKmsKeyName: pulumi.String(\"your-crypto-key-id\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tbinding,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.StorageFunctions;\nimport com.pulumi.gcp.storage.inputs.GetProjectServiceAccountArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBinding;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBindingArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.inputs.BucketEncryptionArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var gcsAccount = StorageFunctions.getProjectServiceAccount();\n\n var binding = new CryptoKeyIAMBinding(\"binding\", CryptoKeyIAMBindingArgs.builder()\n .cryptoKeyId(\"your-crypto-key-id\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .members(String.format(\"serviceAccount:%s\", gcsAccount.applyValue(getProjectServiceAccountResult -\u003e getProjectServiceAccountResult.emailAddress())))\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(\"kms-protected-bucket\")\n .location(\"US\")\n .encryption(BucketEncryptionArgs.builder()\n .defaultKmsKeyName(\"your-crypto-key-id\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(binding)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n binding:\n type: gcp:kms:CryptoKeyIAMBinding\n properties:\n cryptoKeyId: your-crypto-key-id\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n members:\n - serviceAccount:${gcsAccount.emailAddress}\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: kms-protected-bucket\n location: US\n encryption:\n defaultKmsKeyName: your-crypto-key-id\n options:\n dependson:\n - ${binding}\nvariables:\n gcsAccount:\n fn::invoke:\n Function: gcp:storage:getProjectServiceAccount\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getProjectServiceAccount.\n", "properties": { @@ -283660,7 +283660,7 @@ } }, "gcp:storage/getTransferProjectServiceAccount:getTransferProjectServiceAccount": { - "description": "Use this data source to retrieve Storage Transfer service account for this project\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.storage.getTransferProjectServiceAccount({});\nexport const defaultAccount = _default.then(_default =\u003e _default.email);\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.storage.get_transfer_project_service_account()\npulumi.export(\"defaultAccount\", default.email)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Storage.GetTransferProjectServiceAccount.Invoke();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"defaultAccount\"] = @default.Apply(@default =\u003e @default.Apply(getTransferProjectServiceAccountResult =\u003e getTransferProjectServiceAccountResult.Email)),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := storage.GetTransferProjectServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"defaultAccount\", _default.Email)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.StorageFunctions;\nimport com.pulumi.gcp.storage.inputs.GetTransferProjectServiceAccountArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = StorageFunctions.getTransferProjectServiceAccount();\n\n ctx.export(\"defaultAccount\", default_.email());\n }\n}\n```\n```yaml\nvariables:\n default:\n fn::invoke:\n Function: gcp:storage:getTransferProjectServiceAccount\n Arguments: {}\noutputs:\n defaultAccount: ${default.email}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Use this data source to retrieve Storage Transfer service account for this project\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.storage.getTransferProjectServiceAccount({});\nexport const defaultAccount = _default.then(_default =\u003e _default.email);\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.storage.get_transfer_project_service_account()\npulumi.export(\"defaultAccount\", default.email)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Storage.GetTransferProjectServiceAccount.Invoke();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"defaultAccount\"] = @default.Apply(@default =\u003e @default.Apply(getTransferProjectServiceAccountResult =\u003e getTransferProjectServiceAccountResult.Email)),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := storage.GetTransferProjectServiceAccount(ctx, \u0026storage.GetTransferProjectServiceAccountArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"defaultAccount\", _default.Email)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.StorageFunctions;\nimport com.pulumi.gcp.storage.inputs.GetTransferProjectServiceAccountArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = StorageFunctions.getTransferProjectServiceAccount();\n\n ctx.export(\"defaultAccount\", default_.email());\n }\n}\n```\n```yaml\nvariables:\n default:\n fn::invoke:\n Function: gcp:storage:getTransferProjectServiceAccount\n Arguments: {}\noutputs:\n defaultAccount: ${default.email}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getTransferProjectServiceAccount.\n", "properties": { @@ -283706,7 +283706,7 @@ }, "gcp:storage/getTransferProjectServieAccount:getTransferProjectServieAccount": { "deprecationMessage": "gcp.storage.getTransferProjectServieAccount has been deprecated in favor of gcp.storage.getTransferProjectServiceAccount", - "description": "Use this data source to retrieve Storage Transfer service account for this project\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.storage.getTransferProjectServiceAccount({});\nexport const defaultAccount = _default.then(_default =\u003e _default.email);\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.storage.get_transfer_project_service_account()\npulumi.export(\"defaultAccount\", default.email)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Storage.GetTransferProjectServiceAccount.Invoke();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"defaultAccount\"] = @default.Apply(@default =\u003e @default.Apply(getTransferProjectServiceAccountResult =\u003e getTransferProjectServiceAccountResult.Email)),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := storage.GetTransferProjectServiceAccount(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"defaultAccount\", _default.Email)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.StorageFunctions;\nimport com.pulumi.gcp.storage.inputs.GetTransferProjectServiceAccountArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = StorageFunctions.getTransferProjectServiceAccount();\n\n ctx.export(\"defaultAccount\", default_.email());\n }\n}\n```\n```yaml\nvariables:\n default:\n fn::invoke:\n Function: gcp:storage:getTransferProjectServiceAccount\n Arguments: {}\noutputs:\n defaultAccount: ${default.email}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Use this data source to retrieve Storage Transfer service account for this project\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.storage.getTransferProjectServiceAccount({});\nexport const defaultAccount = _default.then(_default =\u003e _default.email);\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.storage.get_transfer_project_service_account()\npulumi.export(\"defaultAccount\", default.email)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Storage.GetTransferProjectServiceAccount.Invoke();\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"defaultAccount\"] = @default.Apply(@default =\u003e @default.Apply(getTransferProjectServiceAccountResult =\u003e getTransferProjectServiceAccountResult.Email)),\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := storage.GetTransferProjectServiceAccount(ctx, \u0026storage.GetTransferProjectServiceAccountArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"defaultAccount\", _default.Email)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.StorageFunctions;\nimport com.pulumi.gcp.storage.inputs.GetTransferProjectServiceAccountArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = StorageFunctions.getTransferProjectServiceAccount();\n\n ctx.export(\"defaultAccount\", default_.email());\n }\n}\n```\n```yaml\nvariables:\n default:\n fn::invoke:\n Function: gcp:storage:getTransferProjectServiceAccount\n Arguments: {}\noutputs:\n defaultAccount: ${default.email}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getTransferProjectServieAccount.\n", "properties": { @@ -284053,7 +284053,7 @@ } }, "gcp:tpu/getTensorflowVersions:getTensorflowVersions": { - "description": "Get TensorFlow versions available for a project. For more information see the [official documentation](https://cloud.google.com/tpu/docs/) and [API](https://cloud.google.com/tpu/docs/reference/rest/v1/projects.locations.tensorflowVersions).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst available = gcp.tpu.getTensorflowVersions({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\navailable = gcp.tpu.get_tensorflow_versions()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var available = Gcp.Tpu.GetTensorflowVersions.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/tpu\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := tpu.GetTensorflowVersions(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.tpu.TpuFunctions;\nimport com.pulumi.gcp.tpu.inputs.GetTensorflowVersionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var available = TpuFunctions.getTensorflowVersions();\n\n }\n}\n```\n```yaml\nvariables:\n available:\n fn::invoke:\n Function: gcp:tpu:getTensorflowVersions\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### Configure Basic TPU Node With Available Version\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst available = gcp.tpu.getTensorflowVersions({});\nconst tpu = new gcp.tpu.Node(\"tpu\", {\n name: \"test-tpu\",\n zone: \"us-central1-b\",\n acceleratorType: \"v3-8\",\n tensorflowVersion: available.then(available =\u003e available.versions?.[0]),\n cidrBlock: \"10.2.0.0/29\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\navailable = gcp.tpu.get_tensorflow_versions()\ntpu = gcp.tpu.Node(\"tpu\",\n name=\"test-tpu\",\n zone=\"us-central1-b\",\n accelerator_type=\"v3-8\",\n tensorflow_version=available.versions[0],\n cidr_block=\"10.2.0.0/29\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var available = Gcp.Tpu.GetTensorflowVersions.Invoke();\n\n var tpu = new Gcp.Tpu.Node(\"tpu\", new()\n {\n Name = \"test-tpu\",\n Zone = \"us-central1-b\",\n AcceleratorType = \"v3-8\",\n TensorflowVersion = available.Apply(getTensorflowVersionsResult =\u003e getTensorflowVersionsResult.Versions[0]),\n CidrBlock = \"10.2.0.0/29\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/tpu\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tavailable, err := tpu.GetTensorflowVersions(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = tpu.NewNode(ctx, \"tpu\", \u0026tpu.NodeArgs{\n\t\t\tName: pulumi.String(\"test-tpu\"),\n\t\t\tZone: pulumi.String(\"us-central1-b\"),\n\t\t\tAcceleratorType: pulumi.String(\"v3-8\"),\n\t\t\tTensorflowVersion: pulumi.String(available.Versions[0]),\n\t\t\tCidrBlock: pulumi.String(\"10.2.0.0/29\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.tpu.TpuFunctions;\nimport com.pulumi.gcp.tpu.inputs.GetTensorflowVersionsArgs;\nimport com.pulumi.gcp.tpu.Node;\nimport com.pulumi.gcp.tpu.NodeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var available = TpuFunctions.getTensorflowVersions();\n\n var tpu = new Node(\"tpu\", NodeArgs.builder()\n .name(\"test-tpu\")\n .zone(\"us-central1-b\")\n .acceleratorType(\"v3-8\")\n .tensorflowVersion(available.applyValue(getTensorflowVersionsResult -\u003e getTensorflowVersionsResult.versions()[0]))\n .cidrBlock(\"10.2.0.0/29\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tpu:\n type: gcp:tpu:Node\n properties:\n name: test-tpu\n zone: us-central1-b\n acceleratorType: v3-8\n tensorflowVersion: ${available.versions[0]}\n cidrBlock: 10.2.0.0/29\nvariables:\n available:\n fn::invoke:\n Function: gcp:tpu:getTensorflowVersions\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Get TensorFlow versions available for a project. For more information see the [official documentation](https://cloud.google.com/tpu/docs/) and [API](https://cloud.google.com/tpu/docs/reference/rest/v1/projects.locations.tensorflowVersions).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst available = gcp.tpu.getTensorflowVersions({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\navailable = gcp.tpu.get_tensorflow_versions()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var available = Gcp.Tpu.GetTensorflowVersions.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/tpu\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := tpu.GetTensorflowVersions(ctx, \u0026tpu.GetTensorflowVersionsArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.tpu.TpuFunctions;\nimport com.pulumi.gcp.tpu.inputs.GetTensorflowVersionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var available = TpuFunctions.getTensorflowVersions();\n\n }\n}\n```\n```yaml\nvariables:\n available:\n fn::invoke:\n Function: gcp:tpu:getTensorflowVersions\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### Configure Basic TPU Node With Available Version\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst available = gcp.tpu.getTensorflowVersions({});\nconst tpu = new gcp.tpu.Node(\"tpu\", {\n name: \"test-tpu\",\n zone: \"us-central1-b\",\n acceleratorType: \"v3-8\",\n tensorflowVersion: available.then(available =\u003e available.versions?.[0]),\n cidrBlock: \"10.2.0.0/29\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\navailable = gcp.tpu.get_tensorflow_versions()\ntpu = gcp.tpu.Node(\"tpu\",\n name=\"test-tpu\",\n zone=\"us-central1-b\",\n accelerator_type=\"v3-8\",\n tensorflow_version=available.versions[0],\n cidr_block=\"10.2.0.0/29\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var available = Gcp.Tpu.GetTensorflowVersions.Invoke();\n\n var tpu = new Gcp.Tpu.Node(\"tpu\", new()\n {\n Name = \"test-tpu\",\n Zone = \"us-central1-b\",\n AcceleratorType = \"v3-8\",\n TensorflowVersion = available.Apply(getTensorflowVersionsResult =\u003e getTensorflowVersionsResult.Versions[0]),\n CidrBlock = \"10.2.0.0/29\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/tpu\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tavailable, err := tpu.GetTensorflowVersions(ctx, \u0026tpu.GetTensorflowVersionsArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = tpu.NewNode(ctx, \"tpu\", \u0026tpu.NodeArgs{\n\t\t\tName: pulumi.String(\"test-tpu\"),\n\t\t\tZone: pulumi.String(\"us-central1-b\"),\n\t\t\tAcceleratorType: pulumi.String(\"v3-8\"),\n\t\t\tTensorflowVersion: pulumi.String(available.Versions[0]),\n\t\t\tCidrBlock: pulumi.String(\"10.2.0.0/29\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.tpu.TpuFunctions;\nimport com.pulumi.gcp.tpu.inputs.GetTensorflowVersionsArgs;\nimport com.pulumi.gcp.tpu.Node;\nimport com.pulumi.gcp.tpu.NodeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var available = TpuFunctions.getTensorflowVersions();\n\n var tpu = new Node(\"tpu\", NodeArgs.builder()\n .name(\"test-tpu\")\n .zone(\"us-central1-b\")\n .acceleratorType(\"v3-8\")\n .tensorflowVersion(available.applyValue(getTensorflowVersionsResult -\u003e getTensorflowVersionsResult.versions()[0]))\n .cidrBlock(\"10.2.0.0/29\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tpu:\n type: gcp:tpu:Node\n properties:\n name: test-tpu\n zone: us-central1-b\n acceleratorType: v3-8\n tensorflowVersion: ${available.versions[0]}\n cidrBlock: 10.2.0.0/29\nvariables:\n available:\n fn::invoke:\n Function: gcp:tpu:getTensorflowVersions\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getTensorflowVersions.\n", "properties": { @@ -284099,7 +284099,7 @@ } }, "gcp:tpu/getV2AcceleratorTypes:getV2AcceleratorTypes": { - "description": "Get accelerator types available for a project. For more information see the [official documentation](https://cloud.google.com/tpu/docs/) and [API](https://cloud.google.com/tpu/docs/reference/rest/v2/projects.locations.acceleratorTypes).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst available = gcp.tpu.getV2AcceleratorTypes({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\navailable = gcp.tpu.get_v2_accelerator_types()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var available = Gcp.Tpu.GetV2AcceleratorTypes.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/tpu\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := tpu.GetV2AcceleratorTypes(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.tpu.TpuFunctions;\nimport com.pulumi.gcp.tpu.inputs.GetV2AcceleratorTypesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var available = TpuFunctions.getV2AcceleratorTypes();\n\n }\n}\n```\n```yaml\nvariables:\n available:\n fn::invoke:\n Function: gcp:tpu:getV2AcceleratorTypes\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### Configure Basic TPU VM With Available Type\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst available = gcp.tpu.getV2AcceleratorTypes({});\nconst availableGetV2RuntimeVersions = gcp.tpu.getV2RuntimeVersions({});\nconst tpu = new gcp.tpu.V2Vm(\"tpu\", {\n name: \"test-tpu\",\n zone: \"us-central1-b\",\n runtimeVersion: availableGetV2RuntimeVersions.then(availableGetV2RuntimeVersions =\u003e availableGetV2RuntimeVersions.versions?.[0]),\n acceleratorType: available.then(available =\u003e available.types?.[0]),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\navailable = gcp.tpu.get_v2_accelerator_types()\navailable_get_v2_runtime_versions = gcp.tpu.get_v2_runtime_versions()\ntpu = gcp.tpu.V2Vm(\"tpu\",\n name=\"test-tpu\",\n zone=\"us-central1-b\",\n runtime_version=available_get_v2_runtime_versions.versions[0],\n accelerator_type=available.types[0])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var available = Gcp.Tpu.GetV2AcceleratorTypes.Invoke();\n\n var availableGetV2RuntimeVersions = Gcp.Tpu.GetV2RuntimeVersions.Invoke();\n\n var tpu = new Gcp.Tpu.V2Vm(\"tpu\", new()\n {\n Name = \"test-tpu\",\n Zone = \"us-central1-b\",\n RuntimeVersion = availableGetV2RuntimeVersions.Apply(getV2RuntimeVersionsResult =\u003e getV2RuntimeVersionsResult.Versions[0]),\n AcceleratorType = available.Apply(getV2AcceleratorTypesResult =\u003e getV2AcceleratorTypesResult.Types[0]),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/tpu\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tavailable, err := tpu.GetV2AcceleratorTypes(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tavailableGetV2RuntimeVersions, err := tpu.GetV2RuntimeVersions(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = tpu.NewV2Vm(ctx, \"tpu\", \u0026tpu.V2VmArgs{\n\t\t\tName: pulumi.String(\"test-tpu\"),\n\t\t\tZone: pulumi.String(\"us-central1-b\"),\n\t\t\tRuntimeVersion: pulumi.String(availableGetV2RuntimeVersions.Versions[0]),\n\t\t\tAcceleratorType: pulumi.String(available.Types[0]),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.tpu.TpuFunctions;\nimport com.pulumi.gcp.tpu.inputs.GetV2AcceleratorTypesArgs;\nimport com.pulumi.gcp.tpu.inputs.GetV2RuntimeVersionsArgs;\nimport com.pulumi.gcp.tpu.V2Vm;\nimport com.pulumi.gcp.tpu.V2VmArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var available = TpuFunctions.getV2AcceleratorTypes();\n\n final var availableGetV2RuntimeVersions = TpuFunctions.getV2RuntimeVersions();\n\n var tpu = new V2Vm(\"tpu\", V2VmArgs.builder()\n .name(\"test-tpu\")\n .zone(\"us-central1-b\")\n .runtimeVersion(availableGetV2RuntimeVersions.applyValue(getV2RuntimeVersionsResult -\u003e getV2RuntimeVersionsResult.versions()[0]))\n .acceleratorType(available.applyValue(getV2AcceleratorTypesResult -\u003e getV2AcceleratorTypesResult.types()[0]))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tpu:\n type: gcp:tpu:V2Vm\n properties:\n name: test-tpu\n zone: us-central1-b\n runtimeVersion: ${availableGetV2RuntimeVersions.versions[0]}\n acceleratorType: ${available.types[0]}\nvariables:\n available:\n fn::invoke:\n Function: gcp:tpu:getV2AcceleratorTypes\n Arguments: {}\n availableGetV2RuntimeVersions:\n fn::invoke:\n Function: gcp:tpu:getV2RuntimeVersions\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Get accelerator types available for a project. For more information see the [official documentation](https://cloud.google.com/tpu/docs/) and [API](https://cloud.google.com/tpu/docs/reference/rest/v2/projects.locations.acceleratorTypes).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst available = gcp.tpu.getV2AcceleratorTypes({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\navailable = gcp.tpu.get_v2_accelerator_types()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var available = Gcp.Tpu.GetV2AcceleratorTypes.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/tpu\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := tpu.GetV2AcceleratorTypes(ctx, \u0026tpu.GetV2AcceleratorTypesArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.tpu.TpuFunctions;\nimport com.pulumi.gcp.tpu.inputs.GetV2AcceleratorTypesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var available = TpuFunctions.getV2AcceleratorTypes();\n\n }\n}\n```\n```yaml\nvariables:\n available:\n fn::invoke:\n Function: gcp:tpu:getV2AcceleratorTypes\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### Configure Basic TPU VM With Available Type\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst available = gcp.tpu.getV2AcceleratorTypes({});\nconst availableGetV2RuntimeVersions = gcp.tpu.getV2RuntimeVersions({});\nconst tpu = new gcp.tpu.V2Vm(\"tpu\", {\n name: \"test-tpu\",\n zone: \"us-central1-b\",\n runtimeVersion: availableGetV2RuntimeVersions.then(availableGetV2RuntimeVersions =\u003e availableGetV2RuntimeVersions.versions?.[0]),\n acceleratorType: available.then(available =\u003e available.types?.[0]),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\navailable = gcp.tpu.get_v2_accelerator_types()\navailable_get_v2_runtime_versions = gcp.tpu.get_v2_runtime_versions()\ntpu = gcp.tpu.V2Vm(\"tpu\",\n name=\"test-tpu\",\n zone=\"us-central1-b\",\n runtime_version=available_get_v2_runtime_versions.versions[0],\n accelerator_type=available.types[0])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var available = Gcp.Tpu.GetV2AcceleratorTypes.Invoke();\n\n var availableGetV2RuntimeVersions = Gcp.Tpu.GetV2RuntimeVersions.Invoke();\n\n var tpu = new Gcp.Tpu.V2Vm(\"tpu\", new()\n {\n Name = \"test-tpu\",\n Zone = \"us-central1-b\",\n RuntimeVersion = availableGetV2RuntimeVersions.Apply(getV2RuntimeVersionsResult =\u003e getV2RuntimeVersionsResult.Versions[0]),\n AcceleratorType = available.Apply(getV2AcceleratorTypesResult =\u003e getV2AcceleratorTypesResult.Types[0]),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/tpu\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tavailable, err := tpu.GetV2AcceleratorTypes(ctx, \u0026tpu.GetV2AcceleratorTypesArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tavailableGetV2RuntimeVersions, err := tpu.GetV2RuntimeVersions(ctx, \u0026tpu.GetV2RuntimeVersionsArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = tpu.NewV2Vm(ctx, \"tpu\", \u0026tpu.V2VmArgs{\n\t\t\tName: pulumi.String(\"test-tpu\"),\n\t\t\tZone: pulumi.String(\"us-central1-b\"),\n\t\t\tRuntimeVersion: pulumi.String(availableGetV2RuntimeVersions.Versions[0]),\n\t\t\tAcceleratorType: pulumi.String(available.Types[0]),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.tpu.TpuFunctions;\nimport com.pulumi.gcp.tpu.inputs.GetV2AcceleratorTypesArgs;\nimport com.pulumi.gcp.tpu.inputs.GetV2RuntimeVersionsArgs;\nimport com.pulumi.gcp.tpu.V2Vm;\nimport com.pulumi.gcp.tpu.V2VmArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var available = TpuFunctions.getV2AcceleratorTypes();\n\n final var availableGetV2RuntimeVersions = TpuFunctions.getV2RuntimeVersions();\n\n var tpu = new V2Vm(\"tpu\", V2VmArgs.builder()\n .name(\"test-tpu\")\n .zone(\"us-central1-b\")\n .runtimeVersion(availableGetV2RuntimeVersions.applyValue(getV2RuntimeVersionsResult -\u003e getV2RuntimeVersionsResult.versions()[0]))\n .acceleratorType(available.applyValue(getV2AcceleratorTypesResult -\u003e getV2AcceleratorTypesResult.types()[0]))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tpu:\n type: gcp:tpu:V2Vm\n properties:\n name: test-tpu\n zone: us-central1-b\n runtimeVersion: ${availableGetV2RuntimeVersions.versions[0]}\n acceleratorType: ${available.types[0]}\nvariables:\n available:\n fn::invoke:\n Function: gcp:tpu:getV2AcceleratorTypes\n Arguments: {}\n availableGetV2RuntimeVersions:\n fn::invoke:\n Function: gcp:tpu:getV2RuntimeVersions\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getV2AcceleratorTypes.\n", "properties": { @@ -284145,7 +284145,7 @@ } }, "gcp:tpu/getV2RuntimeVersions:getV2RuntimeVersions": { - "description": "Get runtime versions available for a project. For more information see the [official documentation](https://cloud.google.com/tpu/docs/) and [API](https://cloud.google.com/tpu/docs/reference/rest/v2/projects.locations.runtimeVersions).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst available = gcp.tpu.getV2RuntimeVersions({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\navailable = gcp.tpu.get_v2_runtime_versions()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var available = Gcp.Tpu.GetV2RuntimeVersions.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/tpu\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := tpu.GetV2RuntimeVersions(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.tpu.TpuFunctions;\nimport com.pulumi.gcp.tpu.inputs.GetV2RuntimeVersionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var available = TpuFunctions.getV2RuntimeVersions();\n\n }\n}\n```\n```yaml\nvariables:\n available:\n fn::invoke:\n Function: gcp:tpu:getV2RuntimeVersions\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### Configure Basic TPU VM With Available Version\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst available = gcp.tpu.getV2RuntimeVersions({});\nconst tpu = new gcp.tpu.V2Vm(\"tpu\", {\n name: \"test-tpu\",\n zone: \"us-central1-b\",\n runtimeVersion: available.then(available =\u003e available.versions?.[0]),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\navailable = gcp.tpu.get_v2_runtime_versions()\ntpu = gcp.tpu.V2Vm(\"tpu\",\n name=\"test-tpu\",\n zone=\"us-central1-b\",\n runtime_version=available.versions[0])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var available = Gcp.Tpu.GetV2RuntimeVersions.Invoke();\n\n var tpu = new Gcp.Tpu.V2Vm(\"tpu\", new()\n {\n Name = \"test-tpu\",\n Zone = \"us-central1-b\",\n RuntimeVersion = available.Apply(getV2RuntimeVersionsResult =\u003e getV2RuntimeVersionsResult.Versions[0]),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/tpu\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tavailable, err := tpu.GetV2RuntimeVersions(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = tpu.NewV2Vm(ctx, \"tpu\", \u0026tpu.V2VmArgs{\n\t\t\tName: pulumi.String(\"test-tpu\"),\n\t\t\tZone: pulumi.String(\"us-central1-b\"),\n\t\t\tRuntimeVersion: pulumi.String(available.Versions[0]),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.tpu.TpuFunctions;\nimport com.pulumi.gcp.tpu.inputs.GetV2RuntimeVersionsArgs;\nimport com.pulumi.gcp.tpu.V2Vm;\nimport com.pulumi.gcp.tpu.V2VmArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var available = TpuFunctions.getV2RuntimeVersions();\n\n var tpu = new V2Vm(\"tpu\", V2VmArgs.builder()\n .name(\"test-tpu\")\n .zone(\"us-central1-b\")\n .runtimeVersion(available.applyValue(getV2RuntimeVersionsResult -\u003e getV2RuntimeVersionsResult.versions()[0]))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tpu:\n type: gcp:tpu:V2Vm\n properties:\n name: test-tpu\n zone: us-central1-b\n runtimeVersion: ${available.versions[0]}\nvariables:\n available:\n fn::invoke:\n Function: gcp:tpu:getV2RuntimeVersions\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Get runtime versions available for a project. For more information see the [official documentation](https://cloud.google.com/tpu/docs/) and [API](https://cloud.google.com/tpu/docs/reference/rest/v2/projects.locations.runtimeVersions).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst available = gcp.tpu.getV2RuntimeVersions({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\navailable = gcp.tpu.get_v2_runtime_versions()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var available = Gcp.Tpu.GetV2RuntimeVersions.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/tpu\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := tpu.GetV2RuntimeVersions(ctx, \u0026tpu.GetV2RuntimeVersionsArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.tpu.TpuFunctions;\nimport com.pulumi.gcp.tpu.inputs.GetV2RuntimeVersionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var available = TpuFunctions.getV2RuntimeVersions();\n\n }\n}\n```\n```yaml\nvariables:\n available:\n fn::invoke:\n Function: gcp:tpu:getV2RuntimeVersions\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\n### Configure Basic TPU VM With Available Version\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst available = gcp.tpu.getV2RuntimeVersions({});\nconst tpu = new gcp.tpu.V2Vm(\"tpu\", {\n name: \"test-tpu\",\n zone: \"us-central1-b\",\n runtimeVersion: available.then(available =\u003e available.versions?.[0]),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\navailable = gcp.tpu.get_v2_runtime_versions()\ntpu = gcp.tpu.V2Vm(\"tpu\",\n name=\"test-tpu\",\n zone=\"us-central1-b\",\n runtime_version=available.versions[0])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var available = Gcp.Tpu.GetV2RuntimeVersions.Invoke();\n\n var tpu = new Gcp.Tpu.V2Vm(\"tpu\", new()\n {\n Name = \"test-tpu\",\n Zone = \"us-central1-b\",\n RuntimeVersion = available.Apply(getV2RuntimeVersionsResult =\u003e getV2RuntimeVersionsResult.Versions[0]),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/tpu\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tavailable, err := tpu.GetV2RuntimeVersions(ctx, \u0026tpu.GetV2RuntimeVersionsArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = tpu.NewV2Vm(ctx, \"tpu\", \u0026tpu.V2VmArgs{\n\t\t\tName: pulumi.String(\"test-tpu\"),\n\t\t\tZone: pulumi.String(\"us-central1-b\"),\n\t\t\tRuntimeVersion: pulumi.String(available.Versions[0]),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.tpu.TpuFunctions;\nimport com.pulumi.gcp.tpu.inputs.GetV2RuntimeVersionsArgs;\nimport com.pulumi.gcp.tpu.V2Vm;\nimport com.pulumi.gcp.tpu.V2VmArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var available = TpuFunctions.getV2RuntimeVersions();\n\n var tpu = new V2Vm(\"tpu\", V2VmArgs.builder()\n .name(\"test-tpu\")\n .zone(\"us-central1-b\")\n .runtimeVersion(available.applyValue(getV2RuntimeVersionsResult -\u003e getV2RuntimeVersionsResult.versions()[0]))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tpu:\n type: gcp:tpu:V2Vm\n properties:\n name: test-tpu\n zone: us-central1-b\n runtimeVersion: ${available.versions[0]}\nvariables:\n available:\n fn::invoke:\n Function: gcp:tpu:getV2RuntimeVersions\n Arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getV2RuntimeVersions.\n", "properties": { diff --git a/provider/go.mod b/provider/go.mod index 0390e3a0bf..e500dcc9a9 100644 --- a/provider/go.mod +++ b/provider/go.mod @@ -13,7 +13,7 @@ require ( github.com/pulumi/pulumi-terraform-bridge/pf v0.44.1 github.com/pulumi/pulumi-terraform-bridge/v3 v3.91.1 github.com/pulumi/pulumi/pkg/v3 v3.133.0 - github.com/pulumi/pulumi/sdk/v3 v3.133.0 + github.com/pulumi/pulumi/sdk/v3 v3.134.1 github.com/stretchr/testify v1.9.0 google.golang.org/api v0.193.0 sourcegraph.com/sourcegraph/appdash v0.0.0-20211028080628-e2786a622600 @@ -212,7 +212,7 @@ require ( github.com/pulumi/inflector v0.1.1 // indirect github.com/pulumi/pulumi-java/pkg v0.16.1 // indirect github.com/pulumi/pulumi-terraform-bridge/x/muxer v0.0.9-0.20240227144008-2da15b3d6f6e // indirect - github.com/pulumi/pulumi-yaml v1.10.0 // indirect + github.com/pulumi/pulumi-yaml v1.10.3 // indirect github.com/pulumi/schema-tools v0.1.2 // indirect github.com/pulumi/terraform-diff-reader v0.0.2 // indirect github.com/rivo/uniseg v0.4.4 // indirect @@ -281,3 +281,7 @@ require ( lukechampine.com/frand v1.4.2 // indirect mvdan.cc/gofumpt v0.5.0 // indirect ) + +replace github.com/pulumi/pulumi/pkg/v3 => github.com/pulumi/pulumi/pkg/v3 v3.134.2-0.20240930184128-135d6264bcc6 + +replace github.com/pulumi/pulumi/sdk/v3 => github.com/pulumi/pulumi/sdk/v3 v3.134.2-0.20240930184128-135d6264bcc6 diff --git a/provider/go.sum b/provider/go.sum index 77630bb052..220e5d258f 100644 --- a/provider/go.sum +++ b/provider/go.sum @@ -1989,12 +1989,12 @@ github.com/pulumi/pulumi-terraform-bridge/v3 v3.91.1 h1:Twh0IKS1pGHP6LHDq1oR0vbH github.com/pulumi/pulumi-terraform-bridge/v3 v3.91.1/go.mod h1:DvueDDtOIbf7W1Or4oH0o7F990ozp/ROmlm/vgLoe+g= github.com/pulumi/pulumi-terraform-bridge/x/muxer v0.0.9-0.20240227144008-2da15b3d6f6e h1:yON1jwN6gg4cjnOQF607I3fTiFyIDr9WSsQNXHD6wbM= github.com/pulumi/pulumi-terraform-bridge/x/muxer v0.0.9-0.20240227144008-2da15b3d6f6e/go.mod h1:AvlZujvfRiEu+60frCGEhaLeGttjHwM/g+47+IdPZXw= -github.com/pulumi/pulumi-yaml v1.10.0 h1:djbgMJCxJBmYMr4kOpAXH5iauxGohYjEuTLfxD3NUUI= -github.com/pulumi/pulumi-yaml v1.10.0/go.mod h1://lTvwHpgJ+WBKeMGiLrd/jinc4dl3eWV5LZ3G8iCfE= -github.com/pulumi/pulumi/pkg/v3 v3.133.0 h1:j1rd7ToLZIQc5H0427ISOXSbOIIemZ6B0MXtRhQ38Yg= -github.com/pulumi/pulumi/pkg/v3 v3.133.0/go.mod h1:JtMAnrsFIccO138WcMfPdhO0PioDukKihnZC0xTRLwo= -github.com/pulumi/pulumi/sdk/v3 v3.133.0 h1:o+7dbJZY9BVgAjOF5GYIWgjp/zpKAgWZwD4pPjUMXKQ= -github.com/pulumi/pulumi/sdk/v3 v3.133.0/go.mod h1:J5kQEX8v87aeUhk6NdQXnjCo1DbiOnOiL3Sf2DuDda8= +github.com/pulumi/pulumi-yaml v1.10.3 h1:j5cjPiE32ILmjrWnC1cfZ0MWdqCZ8fg9wlaWk7HOtM4= +github.com/pulumi/pulumi-yaml v1.10.3/go.mod h1:MFMQXkaUP5YQUKVJ6Z/aagZDl2f8hdU9oGaJfTcMf1Y= +github.com/pulumi/pulumi/pkg/v3 v3.134.2-0.20240930184128-135d6264bcc6 h1:mM4RGu/JnhW/d2kZuwaksOIisw5ff620k2c1wFbmW5Y= +github.com/pulumi/pulumi/pkg/v3 v3.134.2-0.20240930184128-135d6264bcc6/go.mod h1:Be8oFq0YzWMXCq7BN3+YO18XzYjQzowHr8DmtT2sMQE= +github.com/pulumi/pulumi/sdk/v3 v3.134.2-0.20240930184128-135d6264bcc6 h1:Hsll4DRkGnzT8kTsSdWDlcd9hs690aKoJNpoXVvhO2o= +github.com/pulumi/pulumi/sdk/v3 v3.134.2-0.20240930184128-135d6264bcc6/go.mod h1:J5kQEX8v87aeUhk6NdQXnjCo1DbiOnOiL3Sf2DuDda8= github.com/pulumi/schema-tools v0.1.2 h1:Fd9xvUjgck4NA+7/jSk7InqCUT4Kj940+EcnbQKpfZo= github.com/pulumi/schema-tools v0.1.2/go.mod h1:62lgj52Tzq11eqWTIaKd+EVyYAu5dEcDJxMhTjvMO/k= github.com/pulumi/terraform-diff-reader v0.0.2 h1:kTE4nEXU3/SYXESvAIem+wyHMI3abqkI3OhJ0G04LLI= diff --git a/sdk/go.mod b/sdk/go.mod index 748ed3f127..dd0a7e3658 100644 --- a/sdk/go.mod +++ b/sdk/go.mod @@ -89,3 +89,7 @@ require ( gopkg.in/yaml.v3 v3.0.1 // indirect lukechampine.com/frand v1.4.2 // indirect ) + +replace github.com/pulumi/pulumi/pkg/v3 => github.com/pulumi/pulumi/pkg/v3 v3.134.2-0.20240930184128-135d6264bcc6 + +replace github.com/pulumi/pulumi/sdk/v3 => github.com/pulumi/pulumi/sdk/v3 v3.134.2-0.20240930184128-135d6264bcc6 diff --git a/sdk/go.sum b/sdk/go.sum index 15266336e9..f27b6bca7e 100644 --- a/sdk/go.sum +++ b/sdk/go.sum @@ -150,8 +150,8 @@ github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 h1:vkHw5I/plNdTr435 github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231/go.mod h1:murToZ2N9hNJzewjHBgfFdXhZKjY3z5cYC1VXk+lbFE= github.com/pulumi/esc v0.9.1 h1:HH5eEv8sgyxSpY5a8yePyqFXzA8cvBvapfH8457+mIs= github.com/pulumi/esc v0.9.1/go.mod h1:oEJ6bOsjYlQUpjf70GiX+CXn3VBmpwFDxUTlmtUN84c= -github.com/pulumi/pulumi/sdk/v3 v3.133.0 h1:o+7dbJZY9BVgAjOF5GYIWgjp/zpKAgWZwD4pPjUMXKQ= -github.com/pulumi/pulumi/sdk/v3 v3.133.0/go.mod h1:J5kQEX8v87aeUhk6NdQXnjCo1DbiOnOiL3Sf2DuDda8= +github.com/pulumi/pulumi/sdk/v3 v3.134.2-0.20240930184128-135d6264bcc6 h1:Hsll4DRkGnzT8kTsSdWDlcd9hs690aKoJNpoXVvhO2o= +github.com/pulumi/pulumi/sdk/v3 v3.134.2-0.20240930184128-135d6264bcc6/go.mod h1:J5kQEX8v87aeUhk6NdQXnjCo1DbiOnOiL3Sf2DuDda8= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= From 05e90edc43f0905f62f7d8eb1ce4d37b3ca11708 Mon Sep 17 00:00:00 2001 From: pulumi-bot Date: Tue, 1 Oct 2024 00:23:04 +0000 Subject: [PATCH 2/2] make build_sdks --- sdk/go/gcp/alloydb/cluster.go | 6 +- sdk/go/gcp/alloydb/getLocations.go | 2 +- sdk/go/gcp/alloydb/instance.go | 4 +- sdk/go/gcp/alloydb/user.go | 4 +- sdk/go/gcp/apigee/addonsConfig.go | 2 +- sdk/go/gcp/apigee/endpointAttachment.go | 2 +- sdk/go/gcp/apigee/envGroup.go | 2 +- sdk/go/gcp/apigee/environment.go | 2 +- sdk/go/gcp/apigee/environmentKeyvaluemaps.go | 2 +- .../apigee/environmentKeyvaluemapsEntries.go | 2 +- sdk/go/gcp/apigee/instance.go | 8 +- sdk/go/gcp/apigee/natAddress.go | 2 +- sdk/go/gcp/apigee/organization.go | 8 +- .../gcp/appengine/getDefaultServiceAccount.go | 2 +- sdk/go/gcp/applicationintegration/client.go | 2 +- sdk/go/gcp/artifactregistry/getLocations.go | 4 +- sdk/go/gcp/artifactregistry/repository.go | 22 +-- sdk/go/gcp/bigquery/connection.go | 6 +- sdk/go/gcp/bigquery/dataTransferConfig.go | 6 +- .../gcp/bigquery/getDefaultServiceAccount.go | 2 +- sdk/go/gcp/bigquery/routine.go | 8 +- .../gcp/bigqueryanalyticshub/dataExchange.go | 2 +- sdk/go/gcp/bigqueryanalyticshub/listing.go | 2 +- sdk/go/gcp/billing/budget.go | 10 +- .../gcp/certificatemanager/getCertificates.go | 2 +- .../gcp/cloudbuild/bitbucketServerConfig.go | 2 +- sdk/go/gcp/cloudbuild/trigger.go | 4 +- sdk/go/gcp/cloudbuildv2/connection.go | 6 +- sdk/go/gcp/cloudbuildv2/repository.go | 6 +- sdk/go/gcp/clouddeploy/deliveryPipeline.go | 10 +- sdk/go/gcp/clouddeploy/target.go | 4 +- sdk/go/gcp/cloudfunctionsv2/function.go | 8 +- sdk/go/gcp/cloudrun/getLocations.go | 2 +- sdk/go/gcp/cloudrunv2/job.go | 8 +- sdk/go/gcp/cloudrunv2/service.go | 8 +- sdk/go/gcp/cloudscheduler/job.go | 4 +- sdk/go/gcp/composer/getImageVersions.go | 2 +- sdk/go/gcp/compute/firewallPolicyWithRules.go | 2 +- .../gcp/compute/getDefaultServiceAccount.go | 2 +- sdk/go/gcp/compute/getInstanceSerialPort.go | 2 +- sdk/go/gcp/compute/getLBIPRanges.go | 2 +- sdk/go/gcp/compute/getNetblockIPRanges.go | 2 +- sdk/go/gcp/compute/getRegions.go | 2 +- sdk/go/gcp/compute/instance.go | 4 +- sdk/go/gcp/compute/instanceTemplate.go | 4 +- sdk/go/gcp/compute/interconnect.go | 2 +- sdk/go/gcp/compute/networkEndpoint.go | 2 +- sdk/go/gcp/compute/networkEndpointList.go | 4 +- .../compute/networkFirewallPolicyWithRules.go | 2 +- .../gcp/compute/networkPeeringRoutesConfig.go | 2 +- sdk/go/gcp/compute/packetMirroring.go | 2 +- sdk/go/gcp/compute/regionNetworkEndpoint.go | 2 +- .../gcp/compute/regionNetworkEndpointGroup.go | 2 +- sdk/go/gcp/compute/regionTargetHttpsProxy.go | 2 +- sdk/go/gcp/compute/targetHttpsProxy.go | 2 +- sdk/go/gcp/compute/targetInstance.go | 2 +- sdk/go/gcp/container/attachedCluster.go | 6 +- sdk/go/gcp/container/getRegistryRepository.go | 2 +- .../connectionProfile.go | 14 +- .../databasemigrationservice/migrationJob.go | 10 +- sdk/go/gcp/dataform/repository.go | 2 +- .../gcp/dataform/repositoryReleaseConfig.go | 2 +- .../gcp/dataform/repositoryWorkflowConfig.go | 2 +- sdk/go/gcp/datafusion/instance.go | 4 +- .../dataloss/preventionDeidentifyTemplate.go | 4 +- .../gcp/dataloss/preventionInspectTemplate.go | 2 +- sdk/go/gcp/dataloss/preventionJobTrigger.go | 6 +- sdk/go/gcp/dataplex/datascan.go | 10 +- sdk/go/gcp/dataplex/task.go | 6 +- sdk/go/gcp/dataplex/zone.go | 2 +- sdk/go/gcp/dataproc/metastoreFederation.go | 2 +- sdk/go/gcp/datastream/stream.go | 46 +++--- sdk/go/gcp/developerconnect/connection.go | 2 +- sdk/go/gcp/discoveryengine/dataStore.go | 2 +- sdk/go/gcp/discoveryengine/searchEngine.go | 2 +- sdk/go/gcp/dns/managedZone.go | 2 +- sdk/go/gcp/dns/recordSet.go | 2 +- sdk/go/gcp/dns/responsePolicy.go | 2 +- sdk/go/gcp/edgecontainer/cluster.go | 6 +- sdk/go/gcp/edgecontainer/nodePool.go | 6 +- sdk/go/gcp/edgecontainer/vpnConnection.go | 2 +- sdk/go/gcp/essentialcontacts/contact.go | 2 +- .../documentAiWarehouseDocumentSchema.go | 4 +- .../documentAiWarehouseLocation.go | 2 +- sdk/go/gcp/firestore/backupSchedule.go | 2 +- sdk/go/gcp/firestore/database.go | 4 +- sdk/go/gcp/firestore/field.go | 4 +- sdk/go/gcp/firestore/index.go | 2 +- sdk/go/gcp/gkebackup/backupPlan.go | 2 +- sdk/go/gcp/gkehub/feature.go | 4 +- .../gcp/gkehub/membershipRbacRoleBinding.go | 2 +- sdk/go/gcp/gkeonprem/bareMetalAdminCluster.go | 16 +- sdk/go/gcp/gkeonprem/bareMetalCluster.go | 16 +- sdk/go/gcp/gkeonprem/bareMetalNodePool.go | 14 +- sdk/go/gcp/gkeonprem/vmwareCluster.go | 6 +- sdk/go/gcp/gkeonprem/vmwareNodePool.go | 4 +- sdk/go/gcp/healthcare/dataset.go | 2 +- .../gcp/integrationconnectors/connection.go | 4 +- .../gcp/integrationconnectors/managedZone.go | 2 +- sdk/go/gcp/kms/getKMSSecretCiphertext.go | 2 +- sdk/go/gcp/kms/secretCiphertext.go | 2 +- sdk/go/gcp/looker/instance.go | 2 +- sdk/go/gcp/managedkafka/cluster.go | 4 +- sdk/go/gcp/managedkafka/topic.go | 2 +- sdk/go/gcp/memorystore/instance.go | 6 +- sdk/go/gcp/monitoring/getUptimeCheckIPs.go | 2 +- .../gcp/networkmanagement/connectivityTest.go | 4 +- .../networksecurity/gatewaySecurityPolicy.go | 4 +- sdk/go/gcp/networksecurity/serverTlsPolicy.go | 2 +- .../networksecurity/tlsInspectionPolicy.go | 6 +- sdk/go/gcp/networkservices/edgeCacheKeyset.go | 2 +- sdk/go/gcp/networkservices/edgeCacheOrigin.go | 2 +- .../gcp/networkservices/edgeCacheService.go | 2 +- sdk/go/gcp/organizations/getClientConfig.go | 2 +- .../organizations/getClientOpenIdUserInfo.go | 2 +- sdk/go/gcp/organizations/getProject.go | 2 +- sdk/go/gcp/osconfig/patchDeployment.go | 2 +- sdk/go/gcp/oslogin/sshPublicKey.go | 2 +- .../privilegedaccessmanager/entitlement.go | 2 +- sdk/go/gcp/projects/iamMemberRemove.go | 2 +- sdk/go/gcp/projects/serviceIdentity.go | 2 +- sdk/go/gcp/pubsub/liteReservation.go | 2 +- sdk/go/gcp/pubsub/liteSubscription.go | 2 +- sdk/go/gcp/pubsub/liteTopic.go | 2 +- sdk/go/gcp/pubsub/subscription.go | 12 +- sdk/go/gcp/recaptcha/enterpriseKey.go | 2 +- sdk/go/gcp/secretmanager/getSecrets.go | 2 +- sdk/go/gcp/secretmanager/regionalSecret.go | 4 +- sdk/go/gcp/secretmanager/secret.go | 6 +- sdk/go/gcp/secretmanager/secretVersion.go | 2 +- sdk/go/gcp/securesourcemanager/instance.go | 8 +- .../gcp/securitycenter/instanceIamBinding.go | 4 +- .../gcp/securitycenter/instanceIamMember.go | 4 +- .../gcp/securitycenter/instanceIamPolicy.go | 4 +- .../serviceaccount/getAccountAccessToken.go | 4 +- sdk/go/gcp/serviceaccount/iambinding.go | 4 +- sdk/go/gcp/serviceaccount/iammember.go | 4 +- sdk/go/gcp/serviceaccount/iampolicy.go | 4 +- sdk/go/gcp/servicedirectory/endpoint.go | 2 +- sdk/go/gcp/spanner/backupSchedule.go | 4 +- .../gcp/storage/getProjectServiceAccount.go | 4 +- .../getTransferProjectServiceAccount.go | 2 +- .../getTransferProjectServieAccount.go | 2 +- sdk/go/gcp/storage/insightsReportConfig.go | 2 +- sdk/go/gcp/storage/notification.go | 2 +- sdk/go/gcp/tpu/getTensorflowVersions.go | 4 +- sdk/go/gcp/tpu/getV2AcceleratorTypes.go | 6 +- sdk/go/gcp/tpu/getV2RuntimeVersions.go | 4 +- sdk/go/gcp/tpu/node.go | 4 +- sdk/go/gcp/tpu/v2vm.go | 6 +- sdk/go/gcp/vertex/aiEndpoint.go | 2 +- sdk/go/gcp/vertex/aiFeatureOnlineStore.go | 6 +- .../vertex/aiFeatureOnlineStoreFeatureview.go | 6 +- sdk/go/gcp/vertex/aiIndex.go | 2 +- sdk/go/gcp/vertex/aiIndexEndpoint.go | 4 +- .../vertex/aiIndexEndpointDeployedIndex.go | 4 +- sdk/go/gcp/vertex/aiTensorboard.go | 2 +- sdk/go/gcp/workstations/workstationCluster.go | 6 +- .../pulumi/gcp/osconfig/PatchDeployment.java | 147 ++++++++++++++++++ sdk/python/pulumi_gcp/_utilities.py | 2 +- .../get_folder_service_account.py | 13 +- .../get_organization_service_account.py | 13 +- .../get_project_service_account.py | 13 +- .../get_access_policy_iam_policy.py | 13 +- .../pulumi_gcp/alloydb/get_locations.py | 12 +- .../alloydb/get_supported_database_flags.py | 14 +- .../apigateway/get_api_config_iam_policy.py | 17 +- .../apigateway/get_api_iam_policy.py | 15 +- .../apigateway/get_gateway_iam_policy.py | 17 +- .../apigee/get_environment_iam_policy.py | 15 +- .../appengine/engine_split_traffic.py | 8 +- .../appengine/get_default_service_account.py | 16 +- .../pulumi_gcp/apphub/get_application.py | 24 ++- .../apphub/get_discovered_service.py | 18 ++- .../apphub/get_discovered_workload.py | 18 ++- .../artifactregistry/get_docker_image.py | 25 ++- .../artifactregistry/get_locations.py | 12 +- .../artifactregistry/get_repository.py | 31 +++- .../get_repository_iam_policy.py | 17 +- .../get_management_server.py | 17 +- .../beyondcorp/get_app_connection.py | 23 ++- .../beyondcorp/get_app_connector.py | 21 ++- .../pulumi_gcp/beyondcorp/get_app_gateway.py | 24 ++- sdk/python/pulumi_gcp/biglake/table.py | 24 +-- sdk/python/pulumi_gcp/bigquery/connection.py | 4 +- sdk/python/pulumi_gcp/bigquery/dataset.py | 4 +- .../pulumi_gcp/bigquery/dataset_access.py | 4 +- .../bigquery/get_connection_iam_policy.py | 17 +- sdk/python/pulumi_gcp/bigquery/get_dataset.py | 34 +++- .../bigquery/get_dataset_iam_policy.py | 15 +- .../bigquery/get_default_service_account.py | 13 +- .../bigquery/get_table_iam_policy.py | 17 +- sdk/python/pulumi_gcp/bigquery/get_tables.py | 14 +- sdk/python/pulumi_gcp/bigquery/routine.py | 12 +- .../get_data_exchange_iam_policy.py | 17 +- .../get_listing_iam_policy.py | 19 ++- .../bigquerydatapolicy/get_iam_policy.py | 17 +- .../bigtable/get_instance_iam_policy.py | 15 +- .../bigtable/get_table_iam_policy.py | 17 +- .../billing/get_account_iam_policy.py | 13 +- .../get_attestor_iam_policy.py | 15 +- .../certificateauthority/get_authority.py | 38 ++++- .../get_ca_pool_iam_policy.py | 17 +- .../get_certificate_template_iam_policy.py | 17 +- .../certificatemanager/get_certificate_map.py | 20 ++- .../certificatemanager/get_certificates.py | 14 +- .../cloudasset/get_resources_search_all.py | 16 +- .../cloudasset/get_search_all_resources.py | 16 +- .../pulumi_gcp/cloudbuild/get_trigger.py | 37 ++++- sdk/python/pulumi_gcp/cloudbuild/trigger.py | 36 ++--- .../cloudbuildv2/get_connection_iam_policy.py | 17 +- .../clouddeploy/delivery_pipeline.py | 20 +-- .../get_custom_target_type_iam_policy.py | 17 +- .../get_delivery_pipeline_iam_policy.py | 17 +- .../clouddeploy/get_target_iam_policy.py | 17 +- .../pulumi_gcp/cloudfunctions/get_function.py | 47 +++++- .../cloudfunctions/get_function_iam_policy.py | 17 +- .../pulumi_gcp/cloudfunctionsv2/function.py | 44 +++--- .../cloudfunctionsv2/get_function.py | 27 +++- .../get_function_iam_policy.py | 17 +- .../cloudidentity/get_group_lookup.py | 12 +- .../cloudidentity/get_group_memberships.py | 12 +- .../get_group_transitive_memberships.py | 12 +- .../pulumi_gcp/cloudidentity/get_groups.py | 12 +- .../pulumi_gcp/cloudquota/get_s_quota_info.py | 29 +++- .../cloudquota/get_s_quota_infos.py | 14 +- .../pulumi_gcp/cloudrun/get_locations.py | 12 +- sdk/python/pulumi_gcp/cloudrun/get_service.py | 20 ++- .../cloudrun/get_service_iam_policy.py | 17 +- sdk/python/pulumi_gcp/cloudrun/service.py | 28 ++-- sdk/python/pulumi_gcp/cloudrunv2/get_job.py | 43 ++++- .../cloudrunv2/get_job_iam_policy.py | 17 +- .../pulumi_gcp/cloudrunv2/get_service.py | 49 +++++- .../cloudrunv2/get_service_iam_policy.py | 17 +- sdk/python/pulumi_gcp/cloudscheduler/job.py | 8 +- .../cloudtasks/get_queue_iam_policy.py | 17 +- .../pulumi_gcp/composer/get_environment.py | 20 ++- .../pulumi_gcp/composer/get_image_versions.py | 14 +- .../composer/get_user_workloads_config_map.py | 18 ++- .../composer/get_user_workloads_secret.py | 18 ++- sdk/python/pulumi_gcp/compute/get_address.py | 25 ++- .../pulumi_gcp/compute/get_addresses.py | 16 +- .../pulumi_gcp/compute/get_backend_bucket.py | 22 ++- .../compute/get_backend_bucket_iam_policy.py | 15 +- .../pulumi_gcp/compute/get_backend_service.py | 43 ++++- .../compute/get_backend_service_iam_policy.py | 15 +- .../pulumi_gcp/compute/get_certificate.py | 21 ++- .../compute/get_default_service_account.py | 16 +- sdk/python/pulumi_gcp/compute/get_disk.py | 49 +++++- .../pulumi_gcp/compute/get_disk_iam_policy.py | 17 +- .../pulumi_gcp/compute/get_forwarding_rule.py | 47 +++++- .../compute/get_forwarding_rules.py | 14 +- .../pulumi_gcp/compute/get_global_address.py | 23 ++- .../compute/get_global_forwarding_rule.py | 35 ++++- .../pulumi_gcp/compute/get_hc_vpn_gateway.py | 21 ++- .../pulumi_gcp/compute/get_health_check.py | 29 +++- sdk/python/pulumi_gcp/compute/get_image.py | 34 +++- .../compute/get_image_iam_policy.py | 15 +- sdk/python/pulumi_gcp/compute/get_instance.py | 53 ++++++- .../pulumi_gcp/compute/get_instance_group.py | 22 ++- .../compute/get_instance_group_manager.py | 42 ++++- .../compute/get_instance_iam_policy.py | 17 +- .../compute/get_instance_serial_port.py | 18 ++- .../compute/get_instance_template.py | 49 +++++- .../pulumi_gcp/compute/get_lbip_ranges.py | 11 +- .../compute/get_machine_image_iam_policy.py | 15 +- .../pulumi_gcp/compute/get_machine_types.py | 16 +- .../compute/get_netblock_ip_ranges.py | 14 +- sdk/python/pulumi_gcp/compute/get_network.py | 18 ++- .../compute/get_network_endpoint_group.py | 23 ++- .../pulumi_gcp/compute/get_network_peering.py | 21 ++- sdk/python/pulumi_gcp/compute/get_networks.py | 13 +- .../pulumi_gcp/compute/get_node_types.py | 14 +- .../get_region_backend_service_iam_policy.py | 17 +- .../pulumi_gcp/compute/get_region_disk.py | 39 ++++- .../compute/get_region_disk_iam_policy.py | 17 +- .../compute/get_region_instance_group.py | 19 ++- .../compute/get_region_instance_template.py | 48 +++++- .../get_region_network_endpoint_group.py | 26 +++- .../compute/get_region_ssl_certificate.py | 23 ++- sdk/python/pulumi_gcp/compute/get_regions.py | 14 +- .../pulumi_gcp/compute/get_reservation.py | 23 ++- .../pulumi_gcp/compute/get_resource_policy.py | 21 ++- sdk/python/pulumi_gcp/compute/get_router.py | 22 ++- .../pulumi_gcp/compute/get_router_nat.py | 36 ++++- .../pulumi_gcp/compute/get_router_status.py | 18 ++- .../pulumi_gcp/compute/get_security_policy.py | 22 ++- sdk/python/pulumi_gcp/compute/get_snapshot.py | 34 +++- .../compute/get_snapshot_iam_policy.py | 15 +- .../pulumi_gcp/compute/get_ssl_policy.py | 21 ++- .../pulumi_gcp/compute/get_subnetwork.py | 24 ++- .../compute/get_subnetwork_iam_policy.py | 17 +- .../pulumi_gcp/compute/get_subnetworks.py | 16 +- .../pulumi_gcp/compute/get_vpn_gateway.py | 18 ++- sdk/python/pulumi_gcp/compute/get_zones.py | 16 +- .../pulumi_gcp/compute/router_status.py | 18 ++- .../pulumi_gcp/container/aws_node_pool.py | 24 +-- .../get_attached_install_manifest.py | 18 ++- .../container/get_attached_versions.py | 14 +- .../pulumi_gcp/container/get_aws_versions.py | 15 +- .../container/get_azure_versions.py | 15 +- .../pulumi_gcp/container/get_cluster.py | 91 ++++++++++- .../container/get_engine_versions.py | 22 ++- .../container/get_registry_image.py | 20 ++- .../container/get_registry_repository.py | 14 +- .../containeranalysis/get_note_iam_policy.py | 15 +- .../datacatalog/get_entry_group_iam_policy.py | 17 +- .../datacatalog/get_policy_tag_iam_policy.py | 13 +- .../get_tag_template_iam_policy.py | 17 +- .../datacatalog/get_taxonomy_iam_policy.py | 17 +- .../dataform/get_repository_iam_policy.py | 17 +- .../datafusion/get_instance_iam_policy.py | 17 +- .../dataplex/get_aspect_type_iam_policy.py | 17 +- .../dataplex/get_asset_iam_policy.py | 21 ++- .../dataplex/get_datascan_iam_policy.py | 17 +- .../dataplex/get_entry_group_iam_policy.py | 17 +- .../dataplex/get_entry_type_iam_policy.py | 17 +- .../dataplex/get_lake_iam_policy.py | 17 +- .../dataplex/get_task_iam_policy.py | 19 ++- .../dataplex/get_zone_iam_policy.py | 19 ++- sdk/python/pulumi_gcp/dataplex/task.py | 8 +- sdk/python/pulumi_gcp/dataproc/cluster.py | 4 +- .../get_autoscaling_policy_iam_policy.py | 17 +- .../dataproc/get_cluster_iam_policy.py | 17 +- .../pulumi_gcp/dataproc/get_job_iam_policy.py | 17 +- .../get_metastore_federation_iam_policy.py | 17 +- .../dataproc/get_metastore_service.py | 38 ++++- .../get_metastore_service_iam_policy.py | 17 +- sdk/python/pulumi_gcp/dataproc/job.py | 8 +- .../pulumi_gcp/datastream/get_static_ips.py | 14 +- sdk/python/pulumi_gcp/diagflow/cx_flow.py | 8 +- sdk/python/pulumi_gcp/diagflow/cx_page.py | 20 +-- sdk/python/pulumi_gcp/dns/get_keys.py | 15 +- sdk/python/pulumi_gcp/dns/get_managed_zone.py | 18 ++- .../dns/get_managed_zone_iam_policy.py | 15 +- .../pulumi_gcp/dns/get_managed_zones.py | 12 +- sdk/python/pulumi_gcp/dns/get_record_set.py | 19 ++- .../get_service_consumers_iam_policy.py | 15 +- .../endpoints/get_service_iam_policy.py | 13 +- .../pulumi_gcp/filestore/get_instance.py | 29 +++- .../firebase/extensions_instance.py | 48 +++--- .../pulumi_gcp/firebase/get_android_app.py | 21 ++- .../firebase/get_android_app_config.py | 15 +- .../pulumi_gcp/firebase/get_apple_app.py | 20 ++- .../firebase/get_apple_app_config.py | 15 +- .../firebase/get_hosting_channel.py | 20 ++- sdk/python/pulumi_gcp/firebase/get_web_app.py | 18 ++- .../pulumi_gcp/firebase/get_web_app_config.py | 20 ++- .../pulumi_gcp/folder/get_iam_policy.py | 13 +- .../folder/get_organization_policy.py | 19 ++- .../gkebackup/get_backup_plan_iam_policy.py | 17 +- .../gkebackup/get_restore_plan_iam_policy.py | 17 +- .../gkehub/get_feature_iam_policy.py | 17 +- .../gkehub/get_membership_binding.py | 27 +++- .../gkehub/get_membership_iam_policy.py | 17 +- .../pulumi_gcp/gkehub/get_scope_iam_policy.py | 15 +- .../get_consent_store_iam_policy.py | 15 +- .../healthcare/get_dataset_iam_policy.py | 13 +- .../healthcare/get_dicom_store_iam_policy.py | 13 +- .../healthcare/get_fhir_store_iam_policy.py | 13 +- .../healthcare/get_hl7_v2_store_iam_policy.py | 13 +- sdk/python/pulumi_gcp/iam/get_rule.py | 14 +- .../iam/get_testable_permissions.py | 16 +- .../iam/get_workload_identity_pool.py | 18 ++- .../get_workload_identity_pool_provider.py | 26 +++- .../iap/get_app_engine_service_iam_policy.py | 17 +- .../iap/get_app_engine_version_iam_policy.py | 19 ++- sdk/python/pulumi_gcp/iap/get_client.py | 15 +- .../iap/get_tunnel_dest_group_iam_policy.py | 17 +- .../pulumi_gcp/iap/get_tunnel_iam_policy.py | 13 +- .../iap/get_tunnel_instance_iam_policy.py | 17 +- .../iap/get_web_backend_service_iam_policy.py | 15 +- .../pulumi_gcp/iap/get_web_iam_policy.py | 13 +- ...t_web_region_backend_service_iam_policy.py | 17 +- .../iap/get_web_type_app_engine_iam_policy.py | 15 +- .../iap/get_web_type_compute_iam_policy.py | 13 +- .../pulumi_gcp/identityplatform/config.py | 4 +- .../kms/get_crypto_key_iam_policy.py | 13 +- .../kms/get_crypto_key_latest_version.py | 19 ++- .../pulumi_gcp/kms/get_crypto_key_versions.py | 15 +- sdk/python/pulumi_gcp/kms/get_crypto_keys.py | 14 +- .../kms/get_ekm_connection_iam_policy.py | 17 +- .../pulumi_gcp/kms/get_key_ring_iam_policy.py | 13 +- sdk/python/pulumi_gcp/kms/get_key_rings.py | 16 +- .../pulumi_gcp/kms/get_kms_crypto_key.py | 25 ++- .../kms/get_kms_crypto_key_version.py | 18 ++- sdk/python/pulumi_gcp/kms/get_kms_key_ring.py | 15 +- sdk/python/pulumi_gcp/kms/get_kms_secret.py | 16 +- .../kms/get_kms_secret_asymmetric.py | 16 +- .../kms/get_kms_secret_ciphertext.py | 14 +- .../pulumi_gcp/logging/get_folder_settings.py | 17 +- .../logging/get_log_view_iam_policy.py | 19 ++- .../logging/get_organization_settings.py | 17 +- .../logging/get_project_cmek_settings.py | 16 +- .../logging/get_project_settings.py | 17 +- sdk/python/pulumi_gcp/logging/get_sink.py | 18 ++- .../monitoring/get_app_engine_service.py | 18 ++- .../monitoring/get_cluster_istio_service.py | 24 ++- .../monitoring/get_istio_canonical_service.py | 22 ++- .../monitoring/get_mesh_istio_service.py | 22 ++- .../monitoring/get_notification_channel.py | 25 ++- .../monitoring/get_secret_version.py | 20 ++- .../monitoring/get_uptime_check_i_ps.py | 10 +- .../get_address_group_iam_policy.py | 17 +- .../networkservices/edge_cache_service.py | 4 +- .../pulumi_gcp/networkservices/http_route.py | 8 +- .../notebooks/get_instance_iam_policy.py | 17 +- .../notebooks/get_runtime_iam_policy.py | 17 +- .../organizations/get_active_folder.py | 16 +- .../organizations/get_billing_account.py | 19 ++- .../organizations/get_client_config.py | 14 +- .../get_client_open_id_user_info.py | 10 +- .../pulumi_gcp/organizations/get_folder.py | 21 ++- .../pulumi_gcp/organizations/get_folders.py | 12 +- .../organizations/get_iam_policy.py | 14 +- .../organizations/get_organization.py | 18 ++- .../pulumi_gcp/organizations/get_project.py | 22 ++- .../osconfig/os_policy_assignment.py | 8 +- .../pulumi_gcp/projects/get_iam_policy.py | 13 +- .../projects/get_organization_policy.py | 19 ++- sdk/python/pulumi_gcp/projects/get_project.py | 12 +- .../projects/get_project_service.py | 16 +- .../pubsub/get_schema_iam_policy.py | 15 +- .../pulumi_gcp/pubsub/get_subscription.py | 29 +++- .../pubsub/get_subscription_iam_policy.py | 15 +- sdk/python/pulumi_gcp/pubsub/get_topic.py | 21 ++- .../pulumi_gcp/pubsub/get_topic_iam_policy.py | 15 +- sdk/python/pulumi_gcp/pubsub/subscription.py | 4 +- sdk/python/pulumi_gcp/redis/get_instance.py | 48 +++++- .../pulumi_gcp/runtimeconfig/get_config.py | 14 +- .../runtimeconfig/get_config_iam_policy.py | 15 +- .../pulumi_gcp/runtimeconfig/get_variable.py | 18 ++- .../secretmanager/get_regional_secret.py | 29 +++- .../get_regional_secret_iam_policy.py | 17 +- .../get_regional_secret_version.py | 23 ++- .../pulumi_gcp/secretmanager/get_secret.py | 27 +++- .../secretmanager/get_secret_iam_policy.py | 15 +- .../secretmanager/get_secret_version.py | 20 ++- .../get_secret_version_access.py | 17 +- .../pulumi_gcp/secretmanager/get_secrets.py | 14 +- .../get_instance_iam_policy.py | 17 +- .../get_repository_iam_policy.py | 17 +- .../securitycenter/get_source_iam_policy.py | 15 +- .../get_v2_organization_source_iam_policy.py | 15 +- .../pulumi_gcp/serviceaccount/get_account.py | 18 ++- .../get_account_access_token.py | 18 ++- .../serviceaccount/get_account_id_token.py | 18 ++- .../serviceaccount/get_account_jwt.py | 18 ++- .../serviceaccount/get_account_key.py | 17 +- .../serviceaccount/get_iam_policy.py | 13 +- .../get_namespace_iam_policy.py | 13 +- .../get_service_iam_policy.py | 13 +- .../get_peered_dns_domain.py | 19 ++- .../pulumi_gcp/siteverification/get_token.py | 16 +- .../pulumi_gcp/sourcerepo/get_repository.py | 16 +- .../sourcerepo/get_repository_iam_policy.py | 15 +- .../spanner/get_database_iam_policy.py | 17 +- sdk/python/pulumi_gcp/spanner/get_instance.py | 26 +++- .../spanner/get_instance_iam_policy.py | 15 +- sdk/python/pulumi_gcp/sql/get_backup_run.py | 20 ++- sdk/python/pulumi_gcp/sql/get_ca_certs.py | 15 +- sdk/python/pulumi_gcp/sql/get_database.py | 19 ++- .../pulumi_gcp/sql/get_database_instance.py | 36 ++++- ..._database_instance_latest_recovery_time.py | 14 +- .../pulumi_gcp/sql/get_database_instances.py | 22 ++- sdk/python/pulumi_gcp/sql/get_databases.py | 14 +- sdk/python/pulumi_gcp/sql/get_tiers.py | 12 +- sdk/python/pulumi_gcp/storage/get_bucket.py | 38 ++++- .../storage/get_bucket_iam_policy.py | 13 +- .../pulumi_gcp/storage/get_bucket_object.py | 34 +++- .../storage/get_bucket_object_content.py | 35 ++++- .../pulumi_gcp/storage/get_bucket_objects.py | 16 +- sdk/python/pulumi_gcp/storage/get_buckets.py | 14 +- .../storage/get_managed_folder_iam_policy.py | 15 +- .../storage/get_object_signed_url.py | 26 +++- .../storage/get_project_service_account.py | 15 +- .../get_transfer_project_service_account.py | 14 +- .../get_transfer_project_servie_account.py | 14 +- sdk/python/pulumi_gcp/tags/get_tag_key.py | 18 ++- .../pulumi_gcp/tags/get_tag_key_iam_policy.py | 13 +- sdk/python/pulumi_gcp/tags/get_tag_keys.py | 12 +- sdk/python/pulumi_gcp/tags/get_tag_value.py | 18 ++- .../tags/get_tag_value_iam_policy.py | 13 +- sdk/python/pulumi_gcp/tags/get_tag_values.py | 12 +- .../pulumi_gcp/tpu/get_tensorflow_versions.py | 14 +- .../tpu/get_v2_accelerator_types.py | 14 +- .../pulumi_gcp/tpu/get_v2_runtime_versions.py | 14 +- .../vertex/get_ai_endpoint_iam_policy.py | 17 +- ...t_ai_featurestore_entitytype_iam_policy.py | 15 +- .../vertex/get_ai_featurestore_iam_policy.py | 17 +- sdk/python/pulumi_gcp/vertex/get_ai_index.py | 28 +++- .../pulumi_gcp/vmwareengine/get_cluster.py | 17 +- .../vmwareengine/get_external_access_rule.py | 25 ++- .../vmwareengine/get_external_address.py | 20 ++- .../pulumi_gcp/vmwareengine/get_network.py | 20 ++- .../vmwareengine/get_network_peering.py | 27 +++- .../vmwareengine/get_network_policy.py | 24 ++- .../vmwareengine/get_nsx_credentials.py | 13 +- .../vmwareengine/get_private_cloud.py | 26 +++- .../pulumi_gcp/vmwareengine/get_subnet.py | 24 ++- .../vmwareengine/get_vcenter_credentials.py | 13 +- .../pulumi_gcp/vpcaccess/get_connector.py | 26 +++- .../workbench/get_instance_iam_policy.py | 17 +- .../get_workstation_config_iam_policy.py | 19 ++- .../get_workstation_iam_policy.py | 21 ++- .../workstations/workstation_config.py | 12 +- 506 files changed, 5595 insertions(+), 1796 deletions(-) diff --git a/sdk/go/gcp/alloydb/cluster.go b/sdk/go/gcp/alloydb/cluster.go index f250e2e702..5d2cc7aedf 100644 --- a/sdk/go/gcp/alloydb/cluster.go +++ b/sdk/go/gcp/alloydb/cluster.go @@ -46,7 +46,7 @@ import ( // if err != nil { // return err // } -// _, err = organizations.LookupProject(ctx, nil, nil) +// _, err = organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -123,7 +123,7 @@ import ( // if err != nil { // return err // } -// _, err = organizations.LookupProject(ctx, nil, nil) +// _, err = organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -217,7 +217,7 @@ import ( // if err != nil { // return err // } -// _, err = organizations.LookupProject(ctx, nil, nil) +// _, err = organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/alloydb/getLocations.go b/sdk/go/gcp/alloydb/getLocations.go index 52d7bf605f..855ac41926 100644 --- a/sdk/go/gcp/alloydb/getLocations.go +++ b/sdk/go/gcp/alloydb/getLocations.go @@ -27,7 +27,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := alloydb.GetLocations(ctx, nil, nil) +// _, err := alloydb.GetLocations(ctx, &alloydb.GetLocationsArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/alloydb/instance.go b/sdk/go/gcp/alloydb/instance.go index 46b994820e..b665f25f59 100644 --- a/sdk/go/gcp/alloydb/instance.go +++ b/sdk/go/gcp/alloydb/instance.go @@ -83,7 +83,7 @@ import ( // if err != nil { // return err // } -// _, err = organizations.LookupProject(ctx, nil, nil) +// _, err = organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -191,7 +191,7 @@ import ( // if err != nil { // return err // } -// _, err = organizations.LookupProject(ctx, nil, nil) +// _, err = organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/alloydb/user.go b/sdk/go/gcp/alloydb/user.go index 985510eb5a..24bf35c35f 100644 --- a/sdk/go/gcp/alloydb/user.go +++ b/sdk/go/gcp/alloydb/user.go @@ -88,7 +88,7 @@ import ( // if err != nil { // return err // } -// _, err = organizations.LookupProject(ctx, nil, nil) +// _, err = organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -177,7 +177,7 @@ import ( // if err != nil { // return err // } -// _, err = organizations.LookupProject(ctx, nil, nil) +// _, err = organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/apigee/addonsConfig.go b/sdk/go/gcp/apigee/addonsConfig.go index b61ebc2015..f26f3ce70f 100644 --- a/sdk/go/gcp/apigee/addonsConfig.go +++ b/sdk/go/gcp/apigee/addonsConfig.go @@ -73,7 +73,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// current, err := organizations.GetClientConfig(ctx, nil, nil) +// current, err := organizations.GetClientConfig(ctx, map[string]interface{}{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/apigee/endpointAttachment.go b/sdk/go/gcp/apigee/endpointAttachment.go index ade140cd00..d3dae5f321 100644 --- a/sdk/go/gcp/apigee/endpointAttachment.go +++ b/sdk/go/gcp/apigee/endpointAttachment.go @@ -39,7 +39,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// current, err := organizations.GetClientConfig(ctx, nil, nil) +// current, err := organizations.GetClientConfig(ctx, map[string]interface{}{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/apigee/envGroup.go b/sdk/go/gcp/apigee/envGroup.go index 381453da6d..d8b4d14c19 100644 --- a/sdk/go/gcp/apigee/envGroup.go +++ b/sdk/go/gcp/apigee/envGroup.go @@ -39,7 +39,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// current, err := organizations.GetClientConfig(ctx, nil, nil) +// current, err := organizations.GetClientConfig(ctx, map[string]interface{}{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/apigee/environment.go b/sdk/go/gcp/apigee/environment.go index decfbf8df4..4dc2f4b030 100644 --- a/sdk/go/gcp/apigee/environment.go +++ b/sdk/go/gcp/apigee/environment.go @@ -39,7 +39,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// current, err := organizations.GetClientConfig(ctx, nil, nil) +// current, err := organizations.GetClientConfig(ctx, map[string]interface{}{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/apigee/environmentKeyvaluemaps.go b/sdk/go/gcp/apigee/environmentKeyvaluemaps.go index 538261005a..91475d1fe1 100644 --- a/sdk/go/gcp/apigee/environmentKeyvaluemaps.go +++ b/sdk/go/gcp/apigee/environmentKeyvaluemaps.go @@ -39,7 +39,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// current, err := organizations.GetClientConfig(ctx, nil, nil) +// current, err := organizations.GetClientConfig(ctx, map[string]interface{}{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/apigee/environmentKeyvaluemapsEntries.go b/sdk/go/gcp/apigee/environmentKeyvaluemapsEntries.go index 8449206a68..08f3eae647 100644 --- a/sdk/go/gcp/apigee/environmentKeyvaluemapsEntries.go +++ b/sdk/go/gcp/apigee/environmentKeyvaluemapsEntries.go @@ -39,7 +39,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// current, err := organizations.GetClientConfig(ctx, nil, nil) +// current, err := organizations.GetClientConfig(ctx, map[string]interface{}{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/apigee/instance.go b/sdk/go/gcp/apigee/instance.go index becef51e1e..a8ec817a91 100644 --- a/sdk/go/gcp/apigee/instance.go +++ b/sdk/go/gcp/apigee/instance.go @@ -39,7 +39,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// current, err := organizations.GetClientConfig(ctx, nil, nil) +// current, err := organizations.GetClientConfig(ctx, map[string]interface{}{}, nil) // if err != nil { // return err // } @@ -109,7 +109,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// current, err := organizations.GetClientConfig(ctx, nil, nil) +// current, err := organizations.GetClientConfig(ctx, map[string]interface{}{}, nil) // if err != nil { // return err // } @@ -180,7 +180,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// current, err := organizations.GetClientConfig(ctx, nil, nil) +// current, err := organizations.GetClientConfig(ctx, map[string]interface{}{}, nil) // if err != nil { // return err // } @@ -253,7 +253,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// current, err := organizations.GetClientConfig(ctx, nil, nil) +// current, err := organizations.GetClientConfig(ctx, map[string]interface{}{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/apigee/natAddress.go b/sdk/go/gcp/apigee/natAddress.go index 879687bd88..3301fe4802 100644 --- a/sdk/go/gcp/apigee/natAddress.go +++ b/sdk/go/gcp/apigee/natAddress.go @@ -42,7 +42,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// current, err := organizations.GetClientConfig(ctx, nil, nil) +// current, err := organizations.GetClientConfig(ctx, map[string]interface{}{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/apigee/organization.go b/sdk/go/gcp/apigee/organization.go index fe215a79c4..2bc8fbbfb0 100644 --- a/sdk/go/gcp/apigee/organization.go +++ b/sdk/go/gcp/apigee/organization.go @@ -39,7 +39,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// current, err := organizations.GetClientConfig(ctx, nil, nil) +// current, err := organizations.GetClientConfig(ctx, map[string]interface{}{}, nil) // if err != nil { // return err // } @@ -99,7 +99,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// current, err := organizations.GetClientConfig(ctx, nil, nil) +// current, err := organizations.GetClientConfig(ctx, map[string]interface{}{}, nil) // if err != nil { // return err // } @@ -136,7 +136,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// current, err := organizations.GetClientConfig(ctx, nil, nil) +// current, err := organizations.GetClientConfig(ctx, map[string]interface{}{}, nil) // if err != nil { // return err // } @@ -231,7 +231,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// current, err := organizations.GetClientConfig(ctx, nil, nil) +// current, err := organizations.GetClientConfig(ctx, map[string]interface{}{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/appengine/getDefaultServiceAccount.go b/sdk/go/gcp/appengine/getDefaultServiceAccount.go index 0857c34c23..f78fdcfc7d 100644 --- a/sdk/go/gcp/appengine/getDefaultServiceAccount.go +++ b/sdk/go/gcp/appengine/getDefaultServiceAccount.go @@ -27,7 +27,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _default, err := appengine.GetDefaultServiceAccount(ctx, nil, nil) +// _default, err := appengine.GetDefaultServiceAccount(ctx, &appengine.GetDefaultServiceAccountArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/applicationintegration/client.go b/sdk/go/gcp/applicationintegration/client.go index 5d0d6d4b74..28e3383bd2 100644 --- a/sdk/go/gcp/applicationintegration/client.go +++ b/sdk/go/gcp/applicationintegration/client.go @@ -65,7 +65,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// testProject, err := organizations.LookupProject(ctx, nil, nil) +// testProject, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/artifactregistry/getLocations.go b/sdk/go/gcp/artifactregistry/getLocations.go index f84b8bb1c0..8e861d422e 100644 --- a/sdk/go/gcp/artifactregistry/getLocations.go +++ b/sdk/go/gcp/artifactregistry/getLocations.go @@ -33,7 +33,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := artifactregistry.GetLocations(ctx, nil, nil) +// _, err := artifactregistry.GetLocations(ctx, &artifactregistry.GetLocationsArgs{}, nil) // if err != nil { // return err // } @@ -57,7 +57,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// available, err := artifactregistry.GetLocations(ctx, nil, nil) +// available, err := artifactregistry.GetLocations(ctx, &artifactregistry.GetLocationsArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/artifactregistry/repository.go b/sdk/go/gcp/artifactregistry/repository.go index 876a124b2a..85fb3b136e 100644 --- a/sdk/go/gcp/artifactregistry/repository.go +++ b/sdk/go/gcp/artifactregistry/repository.go @@ -99,7 +99,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -387,14 +387,14 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } // _, err = secretmanager.NewSecret(ctx, "example-remote-secret", &secretmanager.SecretArgs{ // SecretId: pulumi.String("example-secret"), // Replication: &secretmanager.SecretReplicationArgs{ -// Auto: nil, +// Auto: &secretmanager.SecretReplicationAutoArgs{}, // }, // }) // if err != nil { @@ -461,14 +461,14 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } // _, err = secretmanager.NewSecret(ctx, "example-remote-secret", &secretmanager.SecretArgs{ // SecretId: pulumi.String("example-secret"), // Replication: &secretmanager.SecretReplicationArgs{ -// Auto: nil, +// Auto: &secretmanager.SecretReplicationAutoArgs{}, // }, // }) // if err != nil { @@ -537,14 +537,14 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } // _, err = secretmanager.NewSecret(ctx, "example-remote-secret", &secretmanager.SecretArgs{ // SecretId: pulumi.String("example-secret"), // Replication: &secretmanager.SecretReplicationArgs{ -// Auto: nil, +// Auto: &secretmanager.SecretReplicationAutoArgs{}, // }, // }) // if err != nil { @@ -613,14 +613,14 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } // _, err = secretmanager.NewSecret(ctx, "example-remote-secret", &secretmanager.SecretArgs{ // SecretId: pulumi.String("example-secret"), // Replication: &secretmanager.SecretReplicationArgs{ -// Auto: nil, +// Auto: &secretmanager.SecretReplicationAutoArgs{}, // }, // }) // if err != nil { @@ -689,14 +689,14 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } // _, err = secretmanager.NewSecret(ctx, "example-remote-secret", &secretmanager.SecretArgs{ // SecretId: pulumi.String("example-secret"), // Replication: &secretmanager.SecretReplicationArgs{ -// Auto: nil, +// Auto: &secretmanager.SecretReplicationAutoArgs{}, // }, // }) // if err != nil { diff --git a/sdk/go/gcp/bigquery/connection.go b/sdk/go/gcp/bigquery/connection.go index a5e05d47b2..df54f37ab1 100644 --- a/sdk/go/gcp/bigquery/connection.go +++ b/sdk/go/gcp/bigquery/connection.go @@ -40,7 +40,7 @@ import ( // Location: pulumi.String("US"), // FriendlyName: pulumi.String("👋"), // Description: pulumi.String("a riveting description"), -// CloudResource: nil, +// CloudResource: &bigquery.ConnectionCloudResourceArgs{}, // }) // if err != nil { // return err @@ -427,11 +427,11 @@ import ( // if err != nil { // return err // } -// bqSa, err := bigquery.GetDefaultServiceAccount(ctx, nil, nil) +// bqSa, err := bigquery.GetDefaultServiceAccount(ctx, &bigquery.GetDefaultServiceAccountArgs{}, nil) // if err != nil { // return err // } -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/bigquery/dataTransferConfig.go b/sdk/go/gcp/bigquery/dataTransferConfig.go index 4a19d01b95..3255606ab8 100644 --- a/sdk/go/gcp/bigquery/dataTransferConfig.go +++ b/sdk/go/gcp/bigquery/dataTransferConfig.go @@ -41,7 +41,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -105,7 +105,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -182,7 +182,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := organizations.LookupProject(ctx, nil, nil) +// _, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/bigquery/getDefaultServiceAccount.go b/sdk/go/gcp/bigquery/getDefaultServiceAccount.go index f59e8e15a1..86538e1104 100644 --- a/sdk/go/gcp/bigquery/getDefaultServiceAccount.go +++ b/sdk/go/gcp/bigquery/getDefaultServiceAccount.go @@ -38,7 +38,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// bqSa, err := bigquery.GetDefaultServiceAccount(ctx, nil, nil) +// bqSa, err := bigquery.GetDefaultServiceAccount(ctx, &bigquery.GetDefaultServiceAccountArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/bigquery/routine.go b/sdk/go/gcp/bigquery/routine.go index 5e6c1c128a..082fcc340c 100644 --- a/sdk/go/gcp/bigquery/routine.go +++ b/sdk/go/gcp/bigquery/routine.go @@ -192,7 +192,7 @@ import ( // testConnection, err := bigquery.NewConnection(ctx, "test", &bigquery.ConnectionArgs{ // ConnectionId: pulumi.String("connection_id"), // Location: pulumi.String("US"), -// Spark: nil, +// Spark: &bigquery.ConnectionSparkArgs{}, // }) // if err != nil { // return err @@ -263,7 +263,7 @@ import ( // testConnection, err := bigquery.NewConnection(ctx, "test", &bigquery.ConnectionArgs{ // ConnectionId: pulumi.String("connection_id"), // Location: pulumi.String("US"), -// Spark: nil, +// Spark: &bigquery.ConnectionSparkArgs{}, // }) // if err != nil { // return err @@ -320,7 +320,7 @@ import ( // testConnection, err := bigquery.NewConnection(ctx, "test", &bigquery.ConnectionArgs{ // ConnectionId: pulumi.String("connection_id"), // Location: pulumi.String("US"), -// Spark: nil, +// Spark: &bigquery.ConnectionSparkArgs{}, // }) // if err != nil { // return err @@ -419,7 +419,7 @@ import ( // testConnection, err := bigquery.NewConnection(ctx, "test", &bigquery.ConnectionArgs{ // ConnectionId: pulumi.String("connection_id"), // Location: pulumi.String("US"), -// CloudResource: nil, +// CloudResource: &bigquery.ConnectionCloudResourceArgs{}, // }) // if err != nil { // return err diff --git a/sdk/go/gcp/bigqueryanalyticshub/dataExchange.go b/sdk/go/gcp/bigqueryanalyticshub/dataExchange.go index 3ec9fa6a1e..8d29489365 100644 --- a/sdk/go/gcp/bigqueryanalyticshub/dataExchange.go +++ b/sdk/go/gcp/bigqueryanalyticshub/dataExchange.go @@ -70,7 +70,7 @@ import ( // DisplayName: pulumi.String("dcr_data_exchange"), // Description: pulumi.String("example dcr data exchange"), // SharingEnvironmentConfig: &bigqueryanalyticshub.DataExchangeSharingEnvironmentConfigArgs{ -// DcrExchangeConfig: nil, +// DcrExchangeConfig: &bigqueryanalyticshub.DataExchangeSharingEnvironmentConfigDcrExchangeConfigArgs{}, // }, // }) // if err != nil { diff --git a/sdk/go/gcp/bigqueryanalyticshub/listing.go b/sdk/go/gcp/bigqueryanalyticshub/listing.go index 3f330ddc9f..d787cdcf0e 100644 --- a/sdk/go/gcp/bigqueryanalyticshub/listing.go +++ b/sdk/go/gcp/bigqueryanalyticshub/listing.go @@ -149,7 +149,7 @@ import ( // DisplayName: pulumi.String("dcr_data_exchange"), // Description: pulumi.String("example dcr data exchange"), // SharingEnvironmentConfig: &bigqueryanalyticshub.DataExchangeSharingEnvironmentConfigArgs{ -// DcrExchangeConfig: nil, +// DcrExchangeConfig: &bigqueryanalyticshub.DataExchangeSharingEnvironmentConfigDcrExchangeConfigArgs{}, // }, // }) // if err != nil { diff --git a/sdk/go/gcp/billing/budget.go b/sdk/go/gcp/billing/budget.go index 5c7607be11..5676c20420 100644 --- a/sdk/go/gcp/billing/budget.go +++ b/sdk/go/gcp/billing/budget.go @@ -95,7 +95,7 @@ import ( // if err != nil { // return err // } -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -147,7 +147,7 @@ import ( // if err != nil { // return err // } -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -218,7 +218,7 @@ import ( // if err != nil { // return err // } -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -293,7 +293,7 @@ import ( // if err != nil { // return err // } -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -347,7 +347,7 @@ import ( // if err != nil { // return err // } -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/certificatemanager/getCertificates.go b/sdk/go/gcp/certificatemanager/getCertificates.go index c083643e4d..c46f8839b7 100644 --- a/sdk/go/gcp/certificatemanager/getCertificates.go +++ b/sdk/go/gcp/certificatemanager/getCertificates.go @@ -27,7 +27,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := certificatemanager.GetCertificates(ctx, nil, nil) +// _, err := certificatemanager.GetCertificates(ctx, &certificatemanager.GetCertificatesArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/cloudbuild/bitbucketServerConfig.go b/sdk/go/gcp/cloudbuild/bitbucketServerConfig.go index 9bbb9662fb..54176f4cc4 100644 --- a/sdk/go/gcp/cloudbuild/bitbucketServerConfig.go +++ b/sdk/go/gcp/cloudbuild/bitbucketServerConfig.go @@ -119,7 +119,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/cloudbuild/trigger.go b/sdk/go/gcp/cloudbuild/trigger.go index ff77368186..66232d8f2b 100644 --- a/sdk/go/gcp/cloudbuild/trigger.go +++ b/sdk/go/gcp/cloudbuild/trigger.go @@ -217,7 +217,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -393,7 +393,7 @@ import ( // if err != nil { // return err // } -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/cloudbuildv2/connection.go b/sdk/go/gcp/cloudbuildv2/connection.go index 20c47aa5d2..9dd228bf30 100644 --- a/sdk/go/gcp/cloudbuildv2/connection.go +++ b/sdk/go/gcp/cloudbuildv2/connection.go @@ -74,7 +74,7 @@ import ( // _, err := secretmanager.NewSecret(ctx, "private-key-secret", &secretmanager.SecretArgs{ // SecretId: pulumi.String("ghe-pk-secret"), // Replication: &secretmanager.SecretReplicationArgs{ -// Auto: nil, +// Auto: &secretmanager.SecretReplicationAutoArgs{}, // }, // }) // if err != nil { @@ -96,7 +96,7 @@ import ( // _, err = secretmanager.NewSecret(ctx, "webhook-secret-secret", &secretmanager.SecretArgs{ // SecretId: pulumi.String("github-token-secret"), // Replication: &secretmanager.SecretReplicationArgs{ -// Auto: nil, +// Auto: &secretmanager.SecretReplicationAutoArgs{}, // }, // }) // if err != nil { @@ -179,7 +179,7 @@ import ( // _, err := secretmanager.NewSecret(ctx, "github-token-secret", &secretmanager.SecretArgs{ // SecretId: pulumi.String("github-token-secret"), // Replication: &secretmanager.SecretReplicationArgs{ -// Auto: nil, +// Auto: &secretmanager.SecretReplicationAutoArgs{}, // }, // }) // if err != nil { diff --git a/sdk/go/gcp/cloudbuildv2/repository.go b/sdk/go/gcp/cloudbuildv2/repository.go index c31da1103f..14af3d1162 100644 --- a/sdk/go/gcp/cloudbuildv2/repository.go +++ b/sdk/go/gcp/cloudbuildv2/repository.go @@ -42,7 +42,7 @@ import ( // _, err := secretmanager.NewSecret(ctx, "private-key-secret", &secretmanager.SecretArgs{ // SecretId: pulumi.String("ghe-pk-secret"), // Replication: &secretmanager.SecretReplicationArgs{ -// Auto: nil, +// Auto: &secretmanager.SecretReplicationAutoArgs{}, // }, // }) // if err != nil { @@ -64,7 +64,7 @@ import ( // _, err = secretmanager.NewSecret(ctx, "webhook-secret-secret", &secretmanager.SecretArgs{ // SecretId: pulumi.String("github-token-secret"), // Replication: &secretmanager.SecretReplicationArgs{ -// Auto: nil, +// Auto: &secretmanager.SecretReplicationAutoArgs{}, // }, // }) // if err != nil { @@ -156,7 +156,7 @@ import ( // _, err := secretmanager.NewSecret(ctx, "github-token-secret", &secretmanager.SecretArgs{ // SecretId: pulumi.String("github-token-secret"), // Replication: &secretmanager.SecretReplicationArgs{ -// Auto: nil, +// Auto: &secretmanager.SecretReplicationAutoArgs{}, // }, // }) // if err != nil { diff --git a/sdk/go/gcp/clouddeploy/deliveryPipeline.go b/sdk/go/gcp/clouddeploy/deliveryPipeline.go index f3bc08b8c3..57a09ff7a6 100644 --- a/sdk/go/gcp/clouddeploy/deliveryPipeline.go +++ b/sdk/go/gcp/clouddeploy/deliveryPipeline.go @@ -43,7 +43,7 @@ import ( // Values: pulumi.StringMap{ // "deployParameterKey": pulumi.String("deployParameterValue"), // }, -// MatchTargetLabels: nil, +// MatchTargetLabels: pulumi.StringMap{}, // }, // }, // Profiles: pulumi.StringArray{ @@ -102,7 +102,7 @@ import ( // Values: pulumi.StringMap{ // "deployParameterKey": pulumi.String("deployParameterValue"), // }, -// MatchTargetLabels: nil, +// MatchTargetLabels: pulumi.StringMap{}, // }, // }, // Profiles: pulumi.StringArray{ @@ -161,7 +161,7 @@ import ( // Values: pulumi.StringMap{ // "deployParameterKey": pulumi.String("deployParameterValue"), // }, -// MatchTargetLabels: nil, +// MatchTargetLabels: pulumi.StringMap{}, // }, // }, // Profiles: pulumi.StringArray{ @@ -220,7 +220,7 @@ import ( // Values: pulumi.StringMap{ // "deployParameterKey": pulumi.String("deployParameterValue"), // }, -// MatchTargetLabels: nil, +// MatchTargetLabels: pulumi.StringMap{}, // }, // }, // Profiles: pulumi.StringArray{ @@ -279,7 +279,7 @@ import ( // Values: pulumi.StringMap{ // "deployParameterKey": pulumi.String("deployParameterValue"), // }, -// MatchTargetLabels: nil, +// MatchTargetLabels: pulumi.StringMap{}, // }, // }, // Profiles: pulumi.StringArray{ diff --git a/sdk/go/gcp/clouddeploy/target.go b/sdk/go/gcp/clouddeploy/target.go index feaa0622e3..b7003c7372 100644 --- a/sdk/go/gcp/clouddeploy/target.go +++ b/sdk/go/gcp/clouddeploy/target.go @@ -33,7 +33,7 @@ import ( // _, err := clouddeploy.NewTarget(ctx, "primary", &clouddeploy.TargetArgs{ // Location: pulumi.String("us-west1"), // Name: pulumi.String("target"), -// DeployParameters: nil, +// DeployParameters: pulumi.StringMap{}, // Description: pulumi.String("multi-target description"), // ExecutionConfigs: clouddeploy.TargetExecutionConfigArray{ // &clouddeploy.TargetExecutionConfigArgs{ @@ -86,7 +86,7 @@ import ( // _, err := clouddeploy.NewTarget(ctx, "primary", &clouddeploy.TargetArgs{ // Location: pulumi.String("us-west1"), // Name: pulumi.String("target"), -// DeployParameters: nil, +// DeployParameters: pulumi.StringMap{}, // Description: pulumi.String("basic description"), // ExecutionConfigs: clouddeploy.TargetExecutionConfigArray{ // &clouddeploy.TargetExecutionConfigArgs{ diff --git a/sdk/go/gcp/cloudfunctionsv2/function.go b/sdk/go/gcp/cloudfunctionsv2/function.go index 83288ef172..66ff2639f8 100644 --- a/sdk/go/gcp/cloudfunctionsv2/function.go +++ b/sdk/go/gcp/cloudfunctionsv2/function.go @@ -340,7 +340,7 @@ import ( // if err != nil { // return err // } -// gcsAccount, err := storage.GetProjectServiceAccount(ctx, nil, nil) +// gcsAccount, err := storage.GetProjectServiceAccount(ctx, &storage.GetProjectServiceAccountArgs{}, nil) // if err != nil { // return err // } @@ -1011,7 +1011,7 @@ import ( // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { // project := "my-project-name" -// projectGetProject, err := organizations.LookupProject(ctx, nil, nil) +// projectGetProject, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -1181,7 +1181,7 @@ import ( // Object: object.Name, // }, // }, -// AutomaticUpdatePolicy: nil, +// AutomaticUpdatePolicy: &cloudfunctionsv2.FunctionBuildConfigAutomaticUpdatePolicyArgs{}, // }, // ServiceConfig: &cloudfunctionsv2.FunctionServiceConfigArgs{ // MaxInstanceCount: pulumi.Int(3), @@ -1277,7 +1277,7 @@ import ( // Object: object.Name, // }, // }, -// OnDeployUpdatePolicy: nil, +// OnDeployUpdatePolicy: &cloudfunctionsv2.FunctionBuildConfigOnDeployUpdatePolicyArgs{}, // }, // ServiceConfig: &cloudfunctionsv2.FunctionServiceConfigArgs{ // MaxInstanceCount: pulumi.Int(3), diff --git a/sdk/go/gcp/cloudrun/getLocations.go b/sdk/go/gcp/cloudrun/getLocations.go index 615600c0ef..1e0e333ad9 100644 --- a/sdk/go/gcp/cloudrun/getLocations.go +++ b/sdk/go/gcp/cloudrun/getLocations.go @@ -33,7 +33,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := cloudrun.GetLocations(ctx, nil, nil) +// _, err := cloudrun.GetLocations(ctx, &cloudrun.GetLocationsArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/cloudrunv2/job.go b/sdk/go/gcp/cloudrunv2/job.go index a81a601b03..df12e87f97 100644 --- a/sdk/go/gcp/cloudrunv2/job.go +++ b/sdk/go/gcp/cloudrunv2/job.go @@ -122,7 +122,7 @@ import ( // secret, err := secretmanager.NewSecret(ctx, "secret", &secretmanager.SecretArgs{ // SecretId: pulumi.String("secret"), // Replication: &secretmanager.SecretReplicationArgs{ -// Auto: nil, +// Auto: &secretmanager.SecretReplicationAutoArgs{}, // }, // }) // if err != nil { @@ -188,7 +188,7 @@ import ( // if err != nil { // return err // } -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -356,7 +356,7 @@ import ( // secret, err := secretmanager.NewSecret(ctx, "secret", &secretmanager.SecretArgs{ // SecretId: pulumi.String("secret"), // Replication: &secretmanager.SecretReplicationArgs{ -// Auto: nil, +// Auto: &secretmanager.SecretReplicationAutoArgs{}, // }, // }) // if err != nil { @@ -369,7 +369,7 @@ import ( // if err != nil { // return err // } -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/cloudrunv2/service.go b/sdk/go/gcp/cloudrunv2/service.go index dce4b2ea77..9204e18a76 100644 --- a/sdk/go/gcp/cloudrunv2/service.go +++ b/sdk/go/gcp/cloudrunv2/service.go @@ -120,7 +120,7 @@ import ( // secret, err := secretmanager.NewSecret(ctx, "secret", &secretmanager.SecretArgs{ // SecretId: pulumi.String("secret-1"), // Replication: &secretmanager.SecretReplicationArgs{ -// Auto: nil, +// Auto: &secretmanager.SecretReplicationAutoArgs{}, // }, // }) // if err != nil { @@ -203,7 +203,7 @@ import ( // if err != nil { // return err // } -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -408,7 +408,7 @@ import ( // secret, err := secretmanager.NewSecret(ctx, "secret", &secretmanager.SecretArgs{ // SecretId: pulumi.String("secret-1"), // Replication: &secretmanager.SecretReplicationArgs{ -// Auto: nil, +// Auto: &secretmanager.SecretReplicationAutoArgs{}, // }, // }) // if err != nil { @@ -460,7 +460,7 @@ import ( // if err != nil { // return err // } -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/cloudscheduler/job.go b/sdk/go/gcp/cloudscheduler/job.go index 6f2b40148a..3ecf73b2ed 100644 --- a/sdk/go/gcp/cloudscheduler/job.go +++ b/sdk/go/gcp/cloudscheduler/job.go @@ -221,7 +221,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _default, err := compute.GetDefaultServiceAccount(ctx, nil, nil) +// _default, err := compute.GetDefaultServiceAccount(ctx, &compute.GetDefaultServiceAccountArgs{}, nil) // if err != nil { // return err // } @@ -262,7 +262,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _default, err := compute.GetDefaultServiceAccount(ctx, nil, nil) +// _default, err := compute.GetDefaultServiceAccount(ctx, &compute.GetDefaultServiceAccountArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/composer/getImageVersions.go b/sdk/go/gcp/composer/getImageVersions.go index e531bcea5e..7d8205c9af 100644 --- a/sdk/go/gcp/composer/getImageVersions.go +++ b/sdk/go/gcp/composer/getImageVersions.go @@ -27,7 +27,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// all, err := composer.GetImageVersions(ctx, nil, nil) +// all, err := composer.GetImageVersions(ctx, &composer.GetImageVersionsArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/compute/firewallPolicyWithRules.go b/sdk/go/gcp/compute/firewallPolicyWithRules.go index b7d1ef910c..31e07f96c9 100644 --- a/sdk/go/gcp/compute/firewallPolicyWithRules.go +++ b/sdk/go/gcp/compute/firewallPolicyWithRules.go @@ -32,7 +32,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/compute/getDefaultServiceAccount.go b/sdk/go/gcp/compute/getDefaultServiceAccount.go index e45ac09d7e..fcf2e6f54c 100644 --- a/sdk/go/gcp/compute/getDefaultServiceAccount.go +++ b/sdk/go/gcp/compute/getDefaultServiceAccount.go @@ -27,7 +27,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _default, err := compute.GetDefaultServiceAccount(ctx, nil, nil) +// _default, err := compute.GetDefaultServiceAccount(ctx, &compute.GetDefaultServiceAccountArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/compute/getInstanceSerialPort.go b/sdk/go/gcp/compute/getInstanceSerialPort.go index c6589a9a96..54a9c8ae70 100644 --- a/sdk/go/gcp/compute/getInstanceSerialPort.go +++ b/sdk/go/gcp/compute/getInstanceSerialPort.go @@ -74,7 +74,7 @@ import ( // NetworkInterfaces: compute.InstanceNetworkInterfaceArray{ // &compute.InstanceNetworkInterfaceArgs{ // AccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{ -// nil, +// &compute.InstanceNetworkInterfaceAccessConfigArgs{}, // }, // Network: pulumi.String("default"), // }, diff --git a/sdk/go/gcp/compute/getLBIPRanges.go b/sdk/go/gcp/compute/getLBIPRanges.go index 94e503ea7f..d78caa636e 100644 --- a/sdk/go/gcp/compute/getLBIPRanges.go +++ b/sdk/go/gcp/compute/getLBIPRanges.go @@ -29,7 +29,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// ranges, err := compute.GetLBIPRanges(ctx, nil, nil) +// ranges, err := compute.GetLBIPRanges(ctx, map[string]interface{}{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/compute/getNetblockIPRanges.go b/sdk/go/gcp/compute/getNetblockIPRanges.go index 1539b61db9..b9e157c3e6 100644 --- a/sdk/go/gcp/compute/getNetblockIPRanges.go +++ b/sdk/go/gcp/compute/getNetblockIPRanges.go @@ -29,7 +29,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// netblock, err := compute.GetNetblockIPRanges(ctx, nil, nil) +// netblock, err := compute.GetNetblockIPRanges(ctx, &compute.GetNetblockIPRangesArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/compute/getRegions.go b/sdk/go/gcp/compute/getRegions.go index 0231ca7e51..c472729d95 100644 --- a/sdk/go/gcp/compute/getRegions.go +++ b/sdk/go/gcp/compute/getRegions.go @@ -28,7 +28,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// available, err := compute.GetRegions(ctx, nil, nil) +// available, err := compute.GetRegions(ctx, &compute.GetRegionsArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/compute/instance.go b/sdk/go/gcp/compute/instance.go index 68fb944676..c90d0fe59d 100644 --- a/sdk/go/gcp/compute/instance.go +++ b/sdk/go/gcp/compute/instance.go @@ -43,7 +43,7 @@ import ( // NetworkInterfaces: compute.InstanceNetworkInterfaceArray{ // &compute.InstanceNetworkInterfaceArgs{ // AccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{ -// nil, +// &compute.InstanceNetworkInterfaceAccessConfigArgs{}, // }, // Network: pulumi.String("default"), // }, @@ -116,7 +116,7 @@ import ( // NetworkInterfaces: compute.InstanceNetworkInterfaceArray{ // &compute.InstanceNetworkInterfaceArgs{ // AccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{ -// nil, +// &compute.InstanceNetworkInterfaceAccessConfigArgs{}, // }, // Network: pulumi.String("default"), // }, diff --git a/sdk/go/gcp/compute/instanceTemplate.go b/sdk/go/gcp/compute/instanceTemplate.go index 42b6af85c9..be02b4fef2 100644 --- a/sdk/go/gcp/compute/instanceTemplate.go +++ b/sdk/go/gcp/compute/instanceTemplate.go @@ -141,7 +141,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _default, err := compute.GetDefaultServiceAccount(ctx, nil, nil) +// _default, err := compute.GetDefaultServiceAccount(ctx, &compute.GetDefaultServiceAccountArgs{}, nil) // if err != nil { // return err // } @@ -260,7 +260,7 @@ import ( // NetworkInterfaces: compute.InstanceTemplateNetworkInterfaceArray{ // &compute.InstanceTemplateNetworkInterfaceArgs{ // AccessConfigs: compute.InstanceTemplateNetworkInterfaceAccessConfigArray{ -// nil, +// &compute.InstanceTemplateNetworkInterfaceAccessConfigArgs{}, // }, // Network: pulumi.String("default"), // }, diff --git a/sdk/go/gcp/compute/interconnect.go b/sdk/go/gcp/compute/interconnect.go index 08eeb6e33a..7ba8b8202f 100644 --- a/sdk/go/gcp/compute/interconnect.go +++ b/sdk/go/gcp/compute/interconnect.go @@ -40,7 +40,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/compute/networkEndpoint.go b/sdk/go/gcp/compute/networkEndpoint.go index bb66b6d499..3f9adeb12b 100644 --- a/sdk/go/gcp/compute/networkEndpoint.go +++ b/sdk/go/gcp/compute/networkEndpoint.go @@ -71,7 +71,7 @@ import ( // NetworkInterfaces: compute.InstanceNetworkInterfaceArray{ // &compute.InstanceNetworkInterfaceArgs{ // AccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{ -// nil, +// &compute.InstanceNetworkInterfaceAccessConfigArgs{}, // }, // Subnetwork: defaultSubnetwork.ID(), // }, diff --git a/sdk/go/gcp/compute/networkEndpointList.go b/sdk/go/gcp/compute/networkEndpointList.go index 1e4c664025..76d5033f2b 100644 --- a/sdk/go/gcp/compute/networkEndpointList.go +++ b/sdk/go/gcp/compute/networkEndpointList.go @@ -74,7 +74,7 @@ import ( // NetworkInterfaces: compute.InstanceNetworkInterfaceArray{ // &compute.InstanceNetworkInterfaceArgs{ // AccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{ -// nil, +// &compute.InstanceNetworkInterfaceAccessConfigArgs{}, // }, // Subnetwork: defaultSubnetwork.ID(), // }, @@ -94,7 +94,7 @@ import ( // NetworkInterfaces: compute.InstanceNetworkInterfaceArray{ // &compute.InstanceNetworkInterfaceArgs{ // AccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{ -// nil, +// &compute.InstanceNetworkInterfaceAccessConfigArgs{}, // }, // Subnetwork: defaultSubnetwork.ID(), // }, diff --git a/sdk/go/gcp/compute/networkFirewallPolicyWithRules.go b/sdk/go/gcp/compute/networkFirewallPolicyWithRules.go index 1894e583bc..64c02d2e97 100644 --- a/sdk/go/gcp/compute/networkFirewallPolicyWithRules.go +++ b/sdk/go/gcp/compute/networkFirewallPolicyWithRules.go @@ -33,7 +33,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/compute/networkPeeringRoutesConfig.go b/sdk/go/gcp/compute/networkPeeringRoutesConfig.go index db36aea568..6b012918bc 100644 --- a/sdk/go/gcp/compute/networkPeeringRoutesConfig.go +++ b/sdk/go/gcp/compute/networkPeeringRoutesConfig.go @@ -138,7 +138,7 @@ import ( // EnablePrivateNodes: pulumi.Bool(true), // MasterIpv4CidrBlock: pulumi.String("10.42.0.0/28"), // }, -// MasterAuthorizedNetworksConfig: nil, +// MasterAuthorizedNetworksConfig: &container.ClusterMasterAuthorizedNetworksConfigArgs{}, // IpAllocationPolicy: &container.ClusterIpAllocationPolicyArgs{ // ClusterSecondaryRangeName: containerSubnetwork.SecondaryIpRanges.ApplyT(func(secondaryIpRanges []compute.SubnetworkSecondaryIpRange) (*string, error) { // return &secondaryIpRanges[0].RangeName, nil diff --git a/sdk/go/gcp/compute/packetMirroring.go b/sdk/go/gcp/compute/packetMirroring.go index d35fb107a9..40c9a4b5b3 100644 --- a/sdk/go/gcp/compute/packetMirroring.go +++ b/sdk/go/gcp/compute/packetMirroring.go @@ -48,7 +48,7 @@ import ( // NetworkInterfaces: compute.InstanceNetworkInterfaceArray{ // &compute.InstanceNetworkInterfaceArgs{ // AccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{ -// nil, +// &compute.InstanceNetworkInterfaceAccessConfigArgs{}, // }, // Network: _default.ID(), // }, diff --git a/sdk/go/gcp/compute/regionNetworkEndpoint.go b/sdk/go/gcp/compute/regionNetworkEndpoint.go index 8a4e9ea77c..4f3e80e8c7 100644 --- a/sdk/go/gcp/compute/regionNetworkEndpoint.go +++ b/sdk/go/gcp/compute/regionNetworkEndpoint.go @@ -165,7 +165,7 @@ import ( // NetworkInterfaces: compute.InstanceNetworkInterfaceArray{ // &compute.InstanceNetworkInterfaceArgs{ // AccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{ -// nil, +// &compute.InstanceNetworkInterfaceAccessConfigArgs{}, // }, // Subnetwork: defaultSubnetwork.ID(), // }, diff --git a/sdk/go/gcp/compute/regionNetworkEndpointGroup.go b/sdk/go/gcp/compute/regionNetworkEndpointGroup.go index 0f289313f3..82e6d1e068 100644 --- a/sdk/go/gcp/compute/regionNetworkEndpointGroup.go +++ b/sdk/go/gcp/compute/regionNetworkEndpointGroup.go @@ -262,7 +262,7 @@ import ( // Name: pulumi.String("appengine-neg"), // NetworkEndpointType: pulumi.String("SERVERLESS"), // Region: pulumi.String("us-central1"), -// AppEngine: nil, +// AppEngine: &compute.RegionNetworkEndpointGroupAppEngineArgs{}, // }) // if err != nil { // return err diff --git a/sdk/go/gcp/compute/regionTargetHttpsProxy.go b/sdk/go/gcp/compute/regionTargetHttpsProxy.go index 3f7c2a4705..46e3e9a375 100644 --- a/sdk/go/gcp/compute/regionTargetHttpsProxy.go +++ b/sdk/go/gcp/compute/regionTargetHttpsProxy.go @@ -253,7 +253,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/compute/targetHttpsProxy.go b/sdk/go/gcp/compute/targetHttpsProxy.go index 5b2e00aa13..fbeb073d98 100644 --- a/sdk/go/gcp/compute/targetHttpsProxy.go +++ b/sdk/go/gcp/compute/targetHttpsProxy.go @@ -243,7 +243,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/compute/targetInstance.go b/sdk/go/gcp/compute/targetInstance.go index 7580cb6142..84bbbd5d92 100644 --- a/sdk/go/gcp/compute/targetInstance.go +++ b/sdk/go/gcp/compute/targetInstance.go @@ -181,7 +181,7 @@ import ( // NetworkInterfaces: compute.InstanceNetworkInterfaceArray{ // &compute.InstanceNetworkInterfaceArgs{ // AccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{ -// nil, +// &compute.InstanceNetworkInterfaceAccessConfigArgs{}, // }, // Network: _default.SelfLink, // Subnetwork: defaultSubnetwork.SelfLink, diff --git a/sdk/go/gcp/container/attachedCluster.go b/sdk/go/gcp/container/attachedCluster.go index e9557f8b48..270b3e2972 100644 --- a/sdk/go/gcp/container/attachedCluster.go +++ b/sdk/go/gcp/container/attachedCluster.go @@ -40,7 +40,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -91,7 +91,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -186,7 +186,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/container/getRegistryRepository.go b/sdk/go/gcp/container/getRegistryRepository.go index 30d8e174a7..20cbef8af1 100644 --- a/sdk/go/gcp/container/getRegistryRepository.go +++ b/sdk/go/gcp/container/getRegistryRepository.go @@ -29,7 +29,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// foo, err := container.GetRegistryRepository(ctx, nil, nil) +// foo, err := container.GetRegistryRepository(ctx, &container.GetRegistryRepositoryArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/databasemigrationservice/connectionProfile.go b/sdk/go/gcp/databasemigrationservice/connectionProfile.go index 91bb1817fd..3d7062e72d 100644 --- a/sdk/go/gcp/databasemigrationservice/connectionProfile.go +++ b/sdk/go/gcp/databasemigrationservice/connectionProfile.go @@ -40,7 +40,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -246,7 +246,7 @@ import ( // Username: pulumi.String("username"), // Password: pulumi.String("password"), // DatabaseService: pulumi.String("dbprovider"), -// StaticServiceIpConnectivity: nil, +// StaticServiceIpConnectivity: &databasemigrationservice.ConnectionProfileOracleStaticServiceIpConnectivityArgs{}, // }, // }) // if err != nil { @@ -274,7 +274,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := organizations.LookupProject(ctx, nil, nil) +// _, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -327,7 +327,7 @@ import ( // MachineConfig: &databasemigrationservice.ConnectionProfileAlloydbSettingsPrimaryInstanceSettingsMachineConfigArgs{ // CpuCount: pulumi.Int(2), // }, -// DatabaseFlags: nil, +// DatabaseFlags: pulumi.StringMap{}, // Labels: pulumi.StringMap{ // "alloysinstfoo": pulumi.String("allowinstbar"), // }, @@ -361,7 +361,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := organizations.LookupProject(ctx, nil, nil) +// _, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -414,7 +414,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := organizations.LookupProject(ctx, nil, nil) +// _, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -469,7 +469,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := organizations.LookupProject(ctx, nil, nil) +// _, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/databasemigrationservice/migrationJob.go b/sdk/go/gcp/databasemigrationservice/migrationJob.go index f3cc93e3e9..57aa9d820c 100644 --- a/sdk/go/gcp/databasemigrationservice/migrationJob.go +++ b/sdk/go/gcp/databasemigrationservice/migrationJob.go @@ -39,7 +39,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := organizations.LookupProject(ctx, nil, nil) +// _, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -185,7 +185,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := organizations.LookupProject(ctx, nil, nil) +// _, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -282,7 +282,7 @@ import ( // Labels: pulumi.StringMap{ // "foo": pulumi.String("bar"), // }, -// StaticIpConnectivity: nil, +// StaticIpConnectivity: &databasemigrationservice.MigrationJobStaticIpConnectivityArgs{}, // Source: sourceCp.Name, // Destination: destinationCp.Name, // Type: pulumi.String("CONTINUOUS"), @@ -314,7 +314,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := organizations.LookupProject(ctx, nil, nil) +// _, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -451,7 +451,7 @@ import ( // Labels: pulumi.StringMap{ // "foo": pulumi.String("bar"), // }, -// StaticIpConnectivity: nil, +// StaticIpConnectivity: &databasemigrationservice.MigrationJobStaticIpConnectivityArgs{}, // Source: sourceCp.Name, // Destination: destinationCp.Name, // Type: pulumi.String("CONTINUOUS"), diff --git a/sdk/go/gcp/dataform/repository.go b/sdk/go/gcp/dataform/repository.go index 696ff72fe2..53119df46d 100644 --- a/sdk/go/gcp/dataform/repository.go +++ b/sdk/go/gcp/dataform/repository.go @@ -34,7 +34,7 @@ import ( // secret, err := secretmanager.NewSecret(ctx, "secret", &secretmanager.SecretArgs{ // SecretId: pulumi.String("my-secret"), // Replication: &secretmanager.SecretReplicationArgs{ -// Auto: nil, +// Auto: &secretmanager.SecretReplicationAutoArgs{}, // }, // }) // if err != nil { diff --git a/sdk/go/gcp/dataform/repositoryReleaseConfig.go b/sdk/go/gcp/dataform/repositoryReleaseConfig.go index 742ab26e5b..48ac846e19 100644 --- a/sdk/go/gcp/dataform/repositoryReleaseConfig.go +++ b/sdk/go/gcp/dataform/repositoryReleaseConfig.go @@ -39,7 +39,7 @@ import ( // secret, err := secretmanager.NewSecret(ctx, "secret", &secretmanager.SecretArgs{ // SecretId: pulumi.String("my_secret"), // Replication: &secretmanager.SecretReplicationArgs{ -// Auto: nil, +// Auto: &secretmanager.SecretReplicationAutoArgs{}, // }, // }) // if err != nil { diff --git a/sdk/go/gcp/dataform/repositoryWorkflowConfig.go b/sdk/go/gcp/dataform/repositoryWorkflowConfig.go index 82f2214bba..cd1a0c3732 100644 --- a/sdk/go/gcp/dataform/repositoryWorkflowConfig.go +++ b/sdk/go/gcp/dataform/repositoryWorkflowConfig.go @@ -40,7 +40,7 @@ import ( // secret, err := secretmanager.NewSecret(ctx, "secret", &secretmanager.SecretArgs{ // SecretId: pulumi.String("my_secret"), // Replication: &secretmanager.SecretReplicationArgs{ -// Auto: nil, +// Auto: &secretmanager.SecretReplicationAutoArgs{}, // }, // }) // if err != nil { diff --git a/sdk/go/gcp/datafusion/instance.go b/sdk/go/gcp/datafusion/instance.go index 7539d0e1bd..b13eb51dd7 100644 --- a/sdk/go/gcp/datafusion/instance.go +++ b/sdk/go/gcp/datafusion/instance.go @@ -67,7 +67,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _default, err := appengine.GetDefaultServiceAccount(ctx, nil, nil) +// _default, err := appengine.GetDefaultServiceAccount(ctx, &appengine.GetDefaultServiceAccountArgs{}, nil) // if err != nil { // return err // } @@ -218,7 +218,7 @@ import ( // if err != nil { // return err // } -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/dataloss/preventionDeidentifyTemplate.go b/sdk/go/gcp/dataloss/preventionDeidentifyTemplate.go index 6780bcf220..5ae82c451f 100644 --- a/sdk/go/gcp/dataloss/preventionDeidentifyTemplate.go +++ b/sdk/go/gcp/dataloss/preventionDeidentifyTemplate.go @@ -181,10 +181,10 @@ import ( // }, // }, // &dataloss.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformArgs{ -// AllInfoTypes: nil, +// AllInfoTypes: &dataloss.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformAllInfoTypesArgs{}, // }, // &dataloss.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformArgs{ -// AllText: nil, +// AllText: &dataloss.PreventionDeidentifyTemplateDeidentifyConfigImageTransformationsTransformAllTextArgs{}, // }, // }, // }, diff --git a/sdk/go/gcp/dataloss/preventionInspectTemplate.go b/sdk/go/gcp/dataloss/preventionInspectTemplate.go index eeb1ee4986..be5505888a 100644 --- a/sdk/go/gcp/dataloss/preventionInspectTemplate.go +++ b/sdk/go/gcp/dataloss/preventionInspectTemplate.go @@ -280,7 +280,7 @@ import ( // Name: pulumi.String("MY_CUSTOM_TYPE"), // }, // Likelihood: pulumi.String("UNLIKELY"), -// SurrogateType: nil, +// SurrogateType: &dataloss.PreventionInspectTemplateInspectConfigCustomInfoTypeSurrogateTypeArgs{}, // }, // }, // InfoTypes: dataloss.PreventionInspectTemplateInspectConfigInfoTypeArray{ diff --git a/sdk/go/gcp/dataloss/preventionJobTrigger.go b/sdk/go/gcp/dataloss/preventionJobTrigger.go index 7992519ee7..6f017d2d08 100644 --- a/sdk/go/gcp/dataloss/preventionJobTrigger.go +++ b/sdk/go/gcp/dataloss/preventionJobTrigger.go @@ -227,7 +227,7 @@ import ( // InspectTemplateName: pulumi.String("sample-inspect-template"), // Actions: dataloss.PreventionJobTriggerInspectJobActionArray{ // &dataloss.PreventionJobTriggerInspectJobActionArgs{ -// JobNotificationEmails: nil, +// JobNotificationEmails: &dataloss.PreventionJobTriggerInspectJobActionJobNotificationEmailsArgs{}, // }, // }, // StorageConfig: &dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{ @@ -377,7 +377,7 @@ import ( // Parent: pulumi.String("projects/my-project-name"), // Triggers: dataloss.PreventionJobTriggerTriggerArray{ // &dataloss.PreventionJobTriggerTriggerArgs{ -// Manual: nil, +// Manual: &dataloss.PreventionJobTriggerTriggerManualArgs{}, // }, // }, // InspectJob: &dataloss.PreventionJobTriggerInspectJobArgs{ @@ -571,7 +571,7 @@ import ( // InspectTemplateName: pulumi.String("sample-inspect-template"), // Actions: dataloss.PreventionJobTriggerInspectJobActionArray{ // &dataloss.PreventionJobTriggerInspectJobActionArgs{ -// PublishToStackdriver: nil, +// PublishToStackdriver: &dataloss.PreventionJobTriggerInspectJobActionPublishToStackdriverArgs{}, // }, // }, // StorageConfig: &dataloss.PreventionJobTriggerInspectJobStorageConfigArgs{ diff --git a/sdk/go/gcp/dataplex/datascan.go b/sdk/go/gcp/dataplex/datascan.go index 28ce110bf4..dd117b9956 100644 --- a/sdk/go/gcp/dataplex/datascan.go +++ b/sdk/go/gcp/dataplex/datascan.go @@ -44,10 +44,10 @@ import ( // }, // ExecutionSpec: &dataplex.DatascanExecutionSpecArgs{ // Trigger: &dataplex.DatascanExecutionSpecTriggerArgs{ -// OnDemand: nil, +// OnDemand: &dataplex.DatascanExecutionSpecTriggerOnDemandArgs{}, // }, // }, -// DataProfileSpec: nil, +// DataProfileSpec: &dataplex.DatascanDataProfileSpecArgs{}, // Project: pulumi.String("my-project-name"), // }) // if err != nil { @@ -154,7 +154,7 @@ import ( // }, // ExecutionSpec: &dataplex.DatascanExecutionSpecArgs{ // Trigger: &dataplex.DatascanExecutionSpecTriggerArgs{ -// OnDemand: nil, +// OnDemand: &dataplex.DatascanExecutionSpecTriggerOnDemandArgs{}, // }, // }, // DataQualitySpec: &dataplex.DatascanDataQualitySpecArgs{ @@ -220,7 +220,7 @@ import ( // Column: pulumi.String("address"), // Dimension: pulumi.String("VALIDITY"), // Threshold: pulumi.Float64(0.99), -// NonNullExpectation: nil, +// NonNullExpectation: &dataplex.DatascanDataQualitySpecRuleNonNullExpectationArgs{}, // }, // &dataplex.DatascanDataQualitySpecRuleArgs{ // Column: pulumi.String("council_district"), @@ -256,7 +256,7 @@ import ( // &dataplex.DatascanDataQualitySpecRuleArgs{ // Column: pulumi.String("address"), // Dimension: pulumi.String("UNIQUENESS"), -// UniquenessExpectation: nil, +// UniquenessExpectation: &dataplex.DatascanDataQualitySpecRuleUniquenessExpectationArgs{}, // }, // &dataplex.DatascanDataQualitySpecRuleArgs{ // Column: pulumi.String("number_of_docks"), diff --git a/sdk/go/gcp/dataplex/task.go b/sdk/go/gcp/dataplex/task.go index a157fed33b..21947bf55d 100644 --- a/sdk/go/gcp/dataplex/task.go +++ b/sdk/go/gcp/dataplex/task.go @@ -39,7 +39,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -112,7 +112,7 @@ import ( // if err != nil { // return err // } -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -209,7 +209,7 @@ import ( // if err != nil { // return err // } -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/dataplex/zone.go b/sdk/go/gcp/dataplex/zone.go index 874f6b7381..bfbe2c5aa9 100644 --- a/sdk/go/gcp/dataplex/zone.go +++ b/sdk/go/gcp/dataplex/zone.go @@ -57,7 +57,7 @@ import ( // Description: pulumi.String("Zone for DCL"), // DisplayName: pulumi.String("Zone for DCL"), // Project: pulumi.String("my-project-name"), -// Labels: nil, +// Labels: pulumi.StringMap{}, // }) // if err != nil { // return err diff --git a/sdk/go/gcp/dataproc/metastoreFederation.go b/sdk/go/gcp/dataproc/metastoreFederation.go index e6cb3e4365..63a417ae7c 100644 --- a/sdk/go/gcp/dataproc/metastoreFederation.go +++ b/sdk/go/gcp/dataproc/metastoreFederation.go @@ -89,7 +89,7 @@ import ( // if err != nil { // return err // } -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/datastream/stream.go b/sdk/go/gcp/datastream/stream.go index d016520489..c6b47fbd2c 100644 --- a/sdk/go/gcp/datastream/stream.go +++ b/sdk/go/gcp/datastream/stream.go @@ -43,7 +43,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -312,7 +312,7 @@ import ( // DisplayName: pulumi.String("BigQuery Destination"), // Location: pulumi.String("us-central1"), // ConnectionProfileId: pulumi.String("destination-profile"), -// BigqueryProfile: nil, +// BigqueryProfile: &datastream.ConnectionProfileBigqueryProfileArgs{}, // }) // if err != nil { // return err @@ -436,7 +436,7 @@ import ( // DisplayName: pulumi.String("BigQuery Destination"), // Location: pulumi.String("us-central1"), // ConnectionProfileId: pulumi.String("destination-profile"), -// BigqueryProfile: nil, +// BigqueryProfile: &datastream.ConnectionProfileBigqueryProfileArgs{}, // }) // if err != nil { // return err @@ -485,7 +485,7 @@ import ( // }, // }, // }, -// DropLargeObjects: nil, +// DropLargeObjects: &datastream.StreamSourceConfigOracleSourceConfigDropLargeObjectsArgs{}, // }, // }, // DestinationConfig: &datastream.StreamDestinationConfigArgs{ @@ -610,7 +610,7 @@ import ( // DisplayName: pulumi.String("BigQuery Destination"), // Location: pulumi.String("us-central1"), // ConnectionProfileId: pulumi.String("destination-profile"), -// BigqueryProfile: nil, +// BigqueryProfile: &datastream.ConnectionProfileBigqueryProfileArgs{}, // }) // if err != nil { // return err @@ -634,7 +634,7 @@ import ( // }, // }, // }, -// TransactionLogs: nil, +// TransactionLogs: &datastream.StreamSourceConfigSqlServerSourceConfigTransactionLogsArgs{}, // }, // }, // DestinationConfig: &datastream.StreamDestinationConfigArgs{ @@ -648,7 +648,7 @@ import ( // }, // }, // }, -// BackfillNone: nil, +// BackfillNone: &datastream.StreamBackfillNoneArgs{}, // }) // if err != nil { // return err @@ -741,7 +741,7 @@ import ( // DisplayName: pulumi.String("BigQuery Destination"), // Location: pulumi.String("us-central1"), // ConnectionProfileId: pulumi.String("destination-profile"), -// BigqueryProfile: nil, +// BigqueryProfile: &datastream.ConnectionProfileBigqueryProfileArgs{}, // }) // if err != nil { // return err @@ -765,7 +765,7 @@ import ( // }, // }, // }, -// ChangeTables: nil, +// ChangeTables: &datastream.StreamSourceConfigSqlServerSourceConfigChangeTablesArgs{}, // }, // }, // DestinationConfig: &datastream.StreamDestinationConfigArgs{ @@ -779,7 +779,7 @@ import ( // }, // }, // }, -// BackfillNone: nil, +// BackfillNone: &datastream.StreamBackfillNoneArgs{}, // }) // if err != nil { // return err @@ -819,7 +819,7 @@ import ( // DisplayName: pulumi.String("Connection profile"), // Location: pulumi.String("us-central1"), // ConnectionProfileId: pulumi.String("dest-profile"), -// BigqueryProfile: nil, +// BigqueryProfile: &datastream.ConnectionProfileBigqueryProfileArgs{}, // }) // if err != nil { // return err @@ -894,7 +894,7 @@ import ( // StreamId: pulumi.String("postgres-bigquery"), // SourceConfig: &datastream.StreamSourceConfigArgs{ // SourceConnectionProfile: sourceConnectionProfile.ID(), -// MysqlSourceConfig: nil, +// MysqlSourceConfig: &datastream.StreamSourceConfigMysqlSourceConfigArgs{}, // }, // DestinationConfig: &datastream.StreamDestinationConfigArgs{ // DestinationConnectionProfile: destinationConnectionProfile2.ID(), @@ -905,7 +905,7 @@ import ( // }, // }, // }, -// BackfillAll: nil, +// BackfillAll: &datastream.StreamBackfillAllArgs{}, // }) // if err != nil { // return err @@ -943,7 +943,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := organizations.LookupProject(ctx, nil, nil) +// _, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -1018,7 +1018,7 @@ import ( // if err != nil { // return err // } -// bqSa, err := bigquery.GetDefaultServiceAccount(ctx, nil, nil) +// bqSa, err := bigquery.GetDefaultServiceAccount(ctx, &bigquery.GetDefaultServiceAccountArgs{}, nil) // if err != nil { // return err // } @@ -1034,7 +1034,7 @@ import ( // DisplayName: pulumi.String("Connection profile"), // Location: pulumi.String("us-central1"), // ConnectionProfileId: pulumi.String("destination-profile"), -// BigqueryProfile: nil, +// BigqueryProfile: &datastream.ConnectionProfileBigqueryProfileArgs{}, // }) // if err != nil { // return err @@ -1045,7 +1045,7 @@ import ( // DisplayName: pulumi.String("my stream"), // SourceConfig: &datastream.StreamSourceConfigArgs{ // SourceConnectionProfile: sourceConnectionProfile.ID(), -// MysqlSourceConfig: nil, +// MysqlSourceConfig: &datastream.StreamSourceConfigMysqlSourceConfigArgs{}, // }, // DestinationConfig: &datastream.StreamDestinationConfigArgs{ // DestinationConnectionProfile: destinationConnectionProfile.ID(), @@ -1058,7 +1058,7 @@ import ( // }, // }, // }, -// BackfillNone: nil, +// BackfillNone: &datastream.StreamBackfillNoneArgs{}, // }, pulumi.DependsOn([]pulumi.Resource{ // bigqueryKeyUser, // })) @@ -1087,7 +1087,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := organizations.LookupProject(ctx, nil, nil) +// _, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -1166,7 +1166,7 @@ import ( // DisplayName: pulumi.String("Connection profile"), // Location: pulumi.String("us-central1"), // ConnectionProfileId: pulumi.String("destination-profile"), -// BigqueryProfile: nil, +// BigqueryProfile: &datastream.ConnectionProfileBigqueryProfileArgs{}, // }) // if err != nil { // return err @@ -1177,7 +1177,7 @@ import ( // DisplayName: pulumi.String("my stream"), // SourceConfig: &datastream.StreamSourceConfigArgs{ // SourceConnectionProfile: sourceConnectionProfile.ID(), -// MysqlSourceConfig: nil, +// MysqlSourceConfig: &datastream.StreamSourceConfigMysqlSourceConfigArgs{}, // }, // DestinationConfig: &datastream.StreamDestinationConfigArgs{ // DestinationConnectionProfile: destinationConnectionProfile.ID(), @@ -1187,10 +1187,10 @@ import ( // Location: pulumi.String("us-central1"), // }, // }, -// AppendOnly: nil, +// AppendOnly: &datastream.StreamDestinationConfigBigqueryDestinationConfigAppendOnlyArgs{}, // }, // }, -// BackfillNone: nil, +// BackfillNone: &datastream.StreamBackfillNoneArgs{}, // }) // if err != nil { // return err diff --git a/sdk/go/gcp/developerconnect/connection.go b/sdk/go/gcp/developerconnect/connection.go index 738ccd3743..98c5ee1eec 100644 --- a/sdk/go/gcp/developerconnect/connection.go +++ b/sdk/go/gcp/developerconnect/connection.go @@ -66,7 +66,7 @@ import ( // _, err := secretmanager.NewSecret(ctx, "github-token-secret", &secretmanager.SecretArgs{ // SecretId: pulumi.String("github-token-secret"), // Replication: &secretmanager.SecretReplicationArgs{ -// Auto: nil, +// Auto: &secretmanager.SecretReplicationAutoArgs{}, // }, // }) // if err != nil { diff --git a/sdk/go/gcp/discoveryengine/dataStore.go b/sdk/go/gcp/discoveryengine/dataStore.go index 563a3ff847..67441d839b 100644 --- a/sdk/go/gcp/discoveryengine/dataStore.go +++ b/sdk/go/gcp/discoveryengine/dataStore.go @@ -84,7 +84,7 @@ import ( // CreateAdvancedSiteSearch: pulumi.Bool(false), // DocumentProcessingConfig: &discoveryengine.DataStoreDocumentProcessingConfigArgs{ // DefaultParsingConfig: &discoveryengine.DataStoreDocumentProcessingConfigDefaultParsingConfigArgs{ -// DigitalParsingConfig: nil, +// DigitalParsingConfig: &discoveryengine.DataStoreDocumentProcessingConfigDefaultParsingConfigDigitalParsingConfigArgs{}, // }, // ParsingConfigOverrides: discoveryengine.DataStoreDocumentProcessingConfigParsingConfigOverrideArray{ // &discoveryengine.DataStoreDocumentProcessingConfigParsingConfigOverrideArgs{ diff --git a/sdk/go/gcp/discoveryengine/searchEngine.go b/sdk/go/gcp/discoveryengine/searchEngine.go index f7613376f2..4de41a8d41 100644 --- a/sdk/go/gcp/discoveryengine/searchEngine.go +++ b/sdk/go/gcp/discoveryengine/searchEngine.go @@ -58,7 +58,7 @@ import ( // DataStoreIds: pulumi.StringArray{ // basic.DataStoreId, // }, -// SearchEngineConfig: nil, +// SearchEngineConfig: &discoveryengine.SearchEngineSearchEngineConfigArgs{}, // }) // if err != nil { // return err diff --git a/sdk/go/gcp/dns/managedZone.go b/sdk/go/gcp/dns/managedZone.go index f65f34fb23..5fcffcbd2f 100644 --- a/sdk/go/gcp/dns/managedZone.go +++ b/sdk/go/gcp/dns/managedZone.go @@ -237,7 +237,7 @@ import ( // Enabled: pulumi.Bool(true), // }, // }, -// MasterAuthorizedNetworksConfig: nil, +// MasterAuthorizedNetworksConfig: &container.ClusterMasterAuthorizedNetworksConfigArgs{}, // IpAllocationPolicy: &container.ClusterIpAllocationPolicyArgs{ // ClusterSecondaryRangeName: subnetwork_1.SecondaryIpRanges.ApplyT(func(secondaryIpRanges []compute.SubnetworkSecondaryIpRange) (*string, error) { // return &secondaryIpRanges[0].RangeName, nil diff --git a/sdk/go/gcp/dns/recordSet.go b/sdk/go/gcp/dns/recordSet.go index 5f86dd56a2..68bfe3773b 100644 --- a/sdk/go/gcp/dns/recordSet.go +++ b/sdk/go/gcp/dns/recordSet.go @@ -35,7 +35,7 @@ import ( // NetworkInterfaces: compute.InstanceNetworkInterfaceArray{ // &compute.InstanceNetworkInterfaceArgs{ // AccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{ -// nil, +// &compute.InstanceNetworkInterfaceAccessConfigArgs{}, // }, // Network: pulumi.String("default"), // }, diff --git a/sdk/go/gcp/dns/responsePolicy.go b/sdk/go/gcp/dns/responsePolicy.go index 688c62821c..036c82346e 100644 --- a/sdk/go/gcp/dns/responsePolicy.go +++ b/sdk/go/gcp/dns/responsePolicy.go @@ -85,7 +85,7 @@ import ( // Enabled: pulumi.Bool(true), // }, // }, -// MasterAuthorizedNetworksConfig: nil, +// MasterAuthorizedNetworksConfig: &container.ClusterMasterAuthorizedNetworksConfigArgs{}, // IpAllocationPolicy: &container.ClusterIpAllocationPolicyArgs{ // ClusterSecondaryRangeName: subnetwork_1.SecondaryIpRanges.ApplyT(func(secondaryIpRanges []compute.SubnetworkSecondaryIpRange) (*string, error) { // return &secondaryIpRanges[0].RangeName, nil diff --git a/sdk/go/gcp/edgecontainer/cluster.go b/sdk/go/gcp/edgecontainer/cluster.go index ebf4f53896..a8310740b2 100644 --- a/sdk/go/gcp/edgecontainer/cluster.go +++ b/sdk/go/gcp/edgecontainer/cluster.go @@ -39,7 +39,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -92,7 +92,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -152,7 +152,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/edgecontainer/nodePool.go b/sdk/go/gcp/edgecontainer/nodePool.go index ce1dfea12e..3fdb8de812 100644 --- a/sdk/go/gcp/edgecontainer/nodePool.go +++ b/sdk/go/gcp/edgecontainer/nodePool.go @@ -39,7 +39,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -103,7 +103,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -189,7 +189,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/edgecontainer/vpnConnection.go b/sdk/go/gcp/edgecontainer/vpnConnection.go index f86ee4ead6..7892df5020 100644 --- a/sdk/go/gcp/edgecontainer/vpnConnection.go +++ b/sdk/go/gcp/edgecontainer/vpnConnection.go @@ -40,7 +40,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/essentialcontacts/contact.go b/sdk/go/gcp/essentialcontacts/contact.go index 01a278593b..b504c44895 100644 --- a/sdk/go/gcp/essentialcontacts/contact.go +++ b/sdk/go/gcp/essentialcontacts/contact.go @@ -43,7 +43,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/essentialcontacts/documentAiWarehouseDocumentSchema.go b/sdk/go/gcp/essentialcontacts/documentAiWarehouseDocumentSchema.go index 8d79291044..2335381c22 100644 --- a/sdk/go/gcp/essentialcontacts/documentAiWarehouseDocumentSchema.go +++ b/sdk/go/gcp/essentialcontacts/documentAiWarehouseDocumentSchema.go @@ -37,7 +37,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -62,7 +62,7 @@ import ( // ProcessorType: pulumi.String("dummy_processor"), // }, // }, -// TextTypeOptions: nil, +// TextTypeOptions: &essentialcontacts.DocumentAiWarehouseDocumentSchemaPropertyDefinitionTextTypeOptionsArgs{}, // }, // }, // }) diff --git a/sdk/go/gcp/essentialcontacts/documentAiWarehouseLocation.go b/sdk/go/gcp/essentialcontacts/documentAiWarehouseLocation.go index fa41a1285a..b5085d6ca1 100644 --- a/sdk/go/gcp/essentialcontacts/documentAiWarehouseLocation.go +++ b/sdk/go/gcp/essentialcontacts/documentAiWarehouseLocation.go @@ -37,7 +37,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/firestore/backupSchedule.go b/sdk/go/gcp/firestore/backupSchedule.go index bd3b347a1d..c42eb7f9dd 100644 --- a/sdk/go/gcp/firestore/backupSchedule.go +++ b/sdk/go/gcp/firestore/backupSchedule.go @@ -58,7 +58,7 @@ import ( // Project: pulumi.String("my-project-name"), // Database: database.Name, // Retention: pulumi.String("8467200s"), -// DailyRecurrence: nil, +// DailyRecurrence: &firestore.BackupScheduleDailyRecurrenceArgs{}, // }) // if err != nil { // return err diff --git a/sdk/go/gcp/firestore/database.go b/sdk/go/gcp/firestore/database.go index 67e5dc3fe9..ad33e26fc8 100644 --- a/sdk/go/gcp/firestore/database.go +++ b/sdk/go/gcp/firestore/database.go @@ -107,7 +107,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -239,7 +239,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/firestore/field.go b/sdk/go/gcp/firestore/field.go index 5f896ac23d..b503c1db8a 100644 --- a/sdk/go/gcp/firestore/field.go +++ b/sdk/go/gcp/firestore/field.go @@ -111,8 +111,8 @@ import ( // Database: database.Name, // Collection: pulumi.String("chatrooms"), // Field: pulumi.String("timestamp"), -// TtlConfig: nil, -// IndexConfig: nil, +// TtlConfig: &firestore.FieldTtlConfigArgs{}, +// IndexConfig: &firestore.FieldIndexConfigArgs{}, // }) // if err != nil { // return err diff --git a/sdk/go/gcp/firestore/index.go b/sdk/go/gcp/firestore/index.go index df1695a111..8d64a3f915 100644 --- a/sdk/go/gcp/firestore/index.go +++ b/sdk/go/gcp/firestore/index.go @@ -173,7 +173,7 @@ import ( // FieldPath: pulumi.String("description"), // VectorConfig: &firestore.IndexFieldVectorConfigArgs{ // Dimension: pulumi.Int(128), -// Flat: nil, +// Flat: &firestore.IndexFieldVectorConfigFlatArgs{}, // }, // }, // }, diff --git a/sdk/go/gcp/gkebackup/backupPlan.go b/sdk/go/gcp/gkebackup/backupPlan.go index 5225d24434..db8d8ff680 100644 --- a/sdk/go/gcp/gkebackup/backupPlan.go +++ b/sdk/go/gcp/gkebackup/backupPlan.go @@ -93,7 +93,7 @@ import ( // Name: pulumi.String("autopilot-cluster"), // Location: pulumi.String("us-central1"), // EnableAutopilot: pulumi.Bool(true), -// IpAllocationPolicy: nil, +// IpAllocationPolicy: &container.ClusterIpAllocationPolicyArgs{}, // ReleaseChannel: &container.ClusterReleaseChannelArgs{ // Channel: pulumi.String("RAPID"), // }, diff --git a/sdk/go/gcp/gkehub/feature.go b/sdk/go/gcp/gkehub/feature.go index c4c3490a73..0e73afd5f7 100644 --- a/sdk/go/gcp/gkehub/feature.go +++ b/sdk/go/gcp/gkehub/feature.go @@ -468,7 +468,7 @@ import ( // Policycontroller: &gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerArgs{ // PolicyControllerHubConfig: &gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigArgs{ // InstallSpec: pulumi.String("INSTALL_SPEC_ENABLED"), -// PolicyContent: nil, +// PolicyContent: &gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigPolicyContentArgs{}, // ConstraintViolationLimit: pulumi.Int(50), // ReferentialRulesEnabled: pulumi.Bool(true), // LogDeniesEnabled: pulumi.Bool(true), @@ -478,7 +478,7 @@ import ( // Component: pulumi.String("admission"), // }, // }, -// Monitoring: nil, +// Monitoring: &gkehub.FeatureFleetDefaultMemberConfigPolicycontrollerPolicyControllerHubConfigMonitoringArgs{}, // }, // }, // }, diff --git a/sdk/go/gcp/gkehub/membershipRbacRoleBinding.go b/sdk/go/gcp/gkehub/membershipRbacRoleBinding.go index 7abffcc35c..5c00249199 100644 --- a/sdk/go/gcp/gkehub/membershipRbacRoleBinding.go +++ b/sdk/go/gcp/gkehub/membershipRbacRoleBinding.go @@ -58,7 +58,7 @@ import ( // if err != nil { // return err // } -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/gkeonprem/bareMetalAdminCluster.go b/sdk/go/gcp/gkeonprem/bareMetalAdminCluster.go index 3528417166..64f0c61e04 100644 --- a/sdk/go/gcp/gkeonprem/bareMetalAdminCluster.go +++ b/sdk/go/gcp/gkeonprem/bareMetalAdminCluster.go @@ -50,19 +50,19 @@ import ( // ControlPlane: &gkeonprem.BareMetalAdminClusterControlPlaneArgs{ // ControlPlaneNodePoolConfig: &gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigArgs{ // NodePoolConfig: &gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs{ -// Labels: nil, +// Labels: pulumi.StringMap{}, // OperatingSystem: pulumi.String("LINUX"), // NodeConfigs: gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArray{ // &gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{ -// Labels: nil, +// Labels: pulumi.StringMap{}, // NodeIp: pulumi.String("10.200.0.2"), // }, // &gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{ -// Labels: nil, +// Labels: pulumi.StringMap{}, // NodeIp: pulumi.String("10.200.0.3"), // }, // &gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{ -// Labels: nil, +// Labels: pulumi.StringMap{}, // NodeIp: pulumi.String("10.200.0.4"), // }, // }, @@ -140,19 +140,19 @@ import ( // ControlPlane: &gkeonprem.BareMetalAdminClusterControlPlaneArgs{ // ControlPlaneNodePoolConfig: &gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigArgs{ // NodePoolConfig: &gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs{ -// Labels: nil, +// Labels: pulumi.StringMap{}, // OperatingSystem: pulumi.String("LINUX"), // NodeConfigs: gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArray{ // &gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{ -// Labels: nil, +// Labels: pulumi.StringMap{}, // NodeIp: pulumi.String("10.200.0.2"), // }, // &gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{ -// Labels: nil, +// Labels: pulumi.StringMap{}, // NodeIp: pulumi.String("10.200.0.3"), // }, // &gkeonprem.BareMetalAdminClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{ -// Labels: nil, +// Labels: pulumi.StringMap{}, // NodeIp: pulumi.String("10.200.0.4"), // }, // }, diff --git a/sdk/go/gcp/gkeonprem/bareMetalCluster.go b/sdk/go/gcp/gkeonprem/bareMetalCluster.go index df56761000..86ea33ea4a 100644 --- a/sdk/go/gcp/gkeonprem/bareMetalCluster.go +++ b/sdk/go/gcp/gkeonprem/bareMetalCluster.go @@ -48,11 +48,11 @@ import ( // ControlPlane: &gkeonprem.BareMetalClusterControlPlaneArgs{ // ControlPlaneNodePoolConfig: &gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs{ // NodePoolConfig: &gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs{ -// Labels: nil, +// Labels: pulumi.StringMap{}, // OperatingSystem: pulumi.String("LINUX"), // NodeConfigs: gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArray{ // &gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{ -// Labels: nil, +// Labels: pulumi.StringMap{}, // NodeIp: pulumi.String("10.200.0.9"), // }, // }, @@ -151,11 +151,11 @@ import ( // ControlPlane: &gkeonprem.BareMetalClusterControlPlaneArgs{ // ControlPlaneNodePoolConfig: &gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs{ // NodePoolConfig: &gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs{ -// Labels: nil, +// Labels: pulumi.StringMap{}, // OperatingSystem: pulumi.String("LINUX"), // NodeConfigs: gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArray{ // &gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{ -// Labels: nil, +// Labels: pulumi.StringMap{}, // NodeIp: pulumi.String("10.200.0.9"), // }, // }, @@ -250,11 +250,11 @@ import ( // ControlPlane: &gkeonprem.BareMetalClusterControlPlaneArgs{ // ControlPlaneNodePoolConfig: &gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs{ // NodePoolConfig: &gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs{ -// Labels: nil, +// Labels: pulumi.StringMap{}, // OperatingSystem: pulumi.String("LINUX"), // NodeConfigs: gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArray{ // &gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{ -// Labels: nil, +// Labels: pulumi.StringMap{}, // NodeIp: pulumi.String("10.200.0.9"), // }, // }, @@ -311,11 +311,11 @@ import ( // }, // LoadBalancerNodePoolConfig: &gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigArgs{ // NodePoolConfig: &gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigArgs{ -// Labels: nil, +// Labels: pulumi.StringMap{}, // OperatingSystem: pulumi.String("LINUX"), // NodeConfigs: gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigNodeConfigArray{ // &gkeonprem.BareMetalClusterLoadBalancerBgpLbConfigLoadBalancerNodePoolConfigNodePoolConfigNodeConfigArgs{ -// Labels: nil, +// Labels: pulumi.StringMap{}, // NodeIp: pulumi.String("10.200.0.9"), // }, // }, diff --git a/sdk/go/gcp/gkeonprem/bareMetalNodePool.go b/sdk/go/gcp/gkeonprem/bareMetalNodePool.go index bfb92379f3..52415ef905 100644 --- a/sdk/go/gcp/gkeonprem/bareMetalNodePool.go +++ b/sdk/go/gcp/gkeonprem/bareMetalNodePool.go @@ -48,11 +48,11 @@ import ( // ControlPlane: &gkeonprem.BareMetalClusterControlPlaneArgs{ // ControlPlaneNodePoolConfig: &gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs{ // NodePoolConfig: &gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs{ -// Labels: nil, +// Labels: pulumi.StringMap{}, // OperatingSystem: pulumi.String("LINUX"), // NodeConfigs: gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArray{ // &gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{ -// Labels: nil, +// Labels: pulumi.StringMap{}, // NodeIp: pulumi.String("10.200.0.9"), // }, // }, @@ -165,11 +165,11 @@ import ( // ControlPlane: &gkeonprem.BareMetalClusterControlPlaneArgs{ // ControlPlaneNodePoolConfig: &gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigArgs{ // NodePoolConfig: &gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigArgs{ -// Labels: nil, +// Labels: pulumi.StringMap{}, // OperatingSystem: pulumi.String("LINUX"), // NodeConfigs: gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArray{ // &gkeonprem.BareMetalClusterControlPlaneControlPlaneNodePoolConfigNodePoolConfigNodeConfigArgs{ -// Labels: nil, +// Labels: pulumi.StringMap{}, // NodeIp: pulumi.String("10.200.0.9"), // }, // }, @@ -234,14 +234,14 @@ import ( // DisplayName: pulumi.String("test-name"), // BareMetalCluster: default_full.Name, // Location: pulumi.String("us-west1"), -// Annotations: nil, +// Annotations: pulumi.StringMap{}, // NodePoolConfig: &gkeonprem.BareMetalNodePoolNodePoolConfigArgs{ // OperatingSystem: pulumi.String("LINUX"), -// Labels: nil, +// Labels: pulumi.StringMap{}, // NodeConfigs: gkeonprem.BareMetalNodePoolNodePoolConfigNodeConfigArray{ // &gkeonprem.BareMetalNodePoolNodePoolConfigNodeConfigArgs{ // NodeIp: pulumi.String("10.200.0.11"), -// Labels: nil, +// Labels: pulumi.StringMap{}, // }, // }, // Taints: gkeonprem.BareMetalNodePoolNodePoolConfigTaintArray{ diff --git a/sdk/go/gcp/gkeonprem/vmwareCluster.go b/sdk/go/gcp/gkeonprem/vmwareCluster.go index d8a8450d0a..e27310233d 100644 --- a/sdk/go/gcp/gkeonprem/vmwareCluster.go +++ b/sdk/go/gcp/gkeonprem/vmwareCluster.go @@ -36,7 +36,7 @@ import ( // AdminClusterMembership: pulumi.String("projects/870316890899/locations/global/memberships/gkeonprem-terraform-test"), // Description: pulumi.String("test cluster"), // OnPremVersion: pulumi.String("1.13.1-gke.35"), -// Annotations: nil, +// Annotations: pulumi.StringMap{}, // NetworkConfig: &gkeonprem.VMwareClusterNetworkConfigArgs{ // ServiceAddressCidrBlocks: pulumi.StringArray{ // pulumi.String("10.96.0.0/12"), @@ -108,7 +108,7 @@ import ( // AdminClusterMembership: pulumi.String("projects/870316890899/locations/global/memberships/gkeonprem-terraform-test"), // Description: pulumi.String("test cluster"), // OnPremVersion: pulumi.String("1.13.1-gke.35"), -// Annotations: nil, +// Annotations: pulumi.StringMap{}, // NetworkConfig: &gkeonprem.VMwareClusterNetworkConfigArgs{ // ServiceAddressCidrBlocks: pulumi.StringArray{ // pulumi.String("10.96.0.0/12"), @@ -205,7 +205,7 @@ import ( // AdminClusterMembership: pulumi.String("projects/870316890899/locations/global/memberships/gkeonprem-terraform-test"), // Description: pulumi.String("test cluster"), // OnPremVersion: pulumi.String("1.13.1-gke.35"), -// Annotations: nil, +// Annotations: pulumi.StringMap{}, // NetworkConfig: &gkeonprem.VMwareClusterNetworkConfigArgs{ // ServiceAddressCidrBlocks: pulumi.StringArray{ // pulumi.String("10.96.0.0/12"), diff --git a/sdk/go/gcp/gkeonprem/vmwareNodePool.go b/sdk/go/gcp/gkeonprem/vmwareNodePool.go index ba330b3c75..2c4e99b8d1 100644 --- a/sdk/go/gcp/gkeonprem/vmwareNodePool.go +++ b/sdk/go/gcp/gkeonprem/vmwareNodePool.go @@ -166,7 +166,7 @@ import ( // Name: pulumi.String("my-nodepool"), // Location: pulumi.String("us-west1"), // VmwareCluster: default_full.Name, -// Annotations: nil, +// Annotations: pulumi.StringMap{}, // Config: &gkeonprem.VMwareNodePoolConfigArgs{ // Cpus: pulumi.Int(4), // MemoryMb: pulumi.Int(8196), @@ -185,7 +185,7 @@ import ( // Effect: pulumi.String("NO_SCHEDULE"), // }, // }, -// Labels: nil, +// Labels: pulumi.StringMap{}, // VsphereConfig: &gkeonprem.VMwareNodePoolConfigVsphereConfigArgs{ // Datastore: pulumi.String("test-datastore"), // Tags: gkeonprem.VMwareNodePoolConfigVsphereConfigTagArray{ diff --git a/sdk/go/gcp/healthcare/dataset.go b/sdk/go/gcp/healthcare/dataset.go index cb9e0df57f..e37bc3675b 100644 --- a/sdk/go/gcp/healthcare/dataset.go +++ b/sdk/go/gcp/healthcare/dataset.go @@ -67,7 +67,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/integrationconnectors/connection.go b/sdk/go/gcp/integrationconnectors/connection.go index 0a18ead0ef..be4a73fa31 100644 --- a/sdk/go/gcp/integrationconnectors/connection.go +++ b/sdk/go/gcp/integrationconnectors/connection.go @@ -39,7 +39,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// testProject, err := organizations.LookupProject(ctx, nil, nil) +// testProject, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -85,7 +85,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// testProject, err := organizations.LookupProject(ctx, nil, nil) +// testProject, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/integrationconnectors/managedZone.go b/sdk/go/gcp/integrationconnectors/managedZone.go index c838b58815..02587c2f3e 100644 --- a/sdk/go/gcp/integrationconnectors/managedZone.go +++ b/sdk/go/gcp/integrationconnectors/managedZone.go @@ -52,7 +52,7 @@ import ( // if err != nil { // return err // } -// testProject, err := organizations.LookupProject(ctx, nil, nil) +// testProject, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/kms/getKMSSecretCiphertext.go b/sdk/go/gcp/kms/getKMSSecretCiphertext.go index aa8ccaad23..dbdefd4676 100644 --- a/sdk/go/gcp/kms/getKMSSecretCiphertext.go +++ b/sdk/go/gcp/kms/getKMSSecretCiphertext.go @@ -87,7 +87,7 @@ import ( // NetworkInterfaces: compute.InstanceNetworkInterfaceArray{ // &compute.InstanceNetworkInterfaceArgs{ // AccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{ -// nil, +// &compute.InstanceNetworkInterfaceAccessConfigArgs{}, // }, // Network: pulumi.String("default"), // }, diff --git a/sdk/go/gcp/kms/secretCiphertext.go b/sdk/go/gcp/kms/secretCiphertext.go index 6ee05e32d0..ab408085b4 100644 --- a/sdk/go/gcp/kms/secretCiphertext.go +++ b/sdk/go/gcp/kms/secretCiphertext.go @@ -68,7 +68,7 @@ import ( // NetworkInterfaces: compute.InstanceNetworkInterfaceArray{ // &compute.InstanceNetworkInterfaceArgs{ // AccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{ -// nil, +// &compute.InstanceNetworkInterfaceAccessConfigArgs{}, // }, // Network: pulumi.String("default"), // }, diff --git a/sdk/go/gcp/looker/instance.go b/sdk/go/gcp/looker/instance.go index bfbc95025f..3284088a00 100644 --- a/sdk/go/gcp/looker/instance.go +++ b/sdk/go/gcp/looker/instance.go @@ -249,7 +249,7 @@ import ( // if err != nil { // return err // } -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/managedkafka/cluster.go b/sdk/go/gcp/managedkafka/cluster.go index df0ae29bec..ee98facec1 100644 --- a/sdk/go/gcp/managedkafka/cluster.go +++ b/sdk/go/gcp/managedkafka/cluster.go @@ -31,7 +31,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -99,7 +99,7 @@ import ( // if err != nil { // return err // } -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/managedkafka/topic.go b/sdk/go/gcp/managedkafka/topic.go index 84af2201c1..49c86432c5 100644 --- a/sdk/go/gcp/managedkafka/topic.go +++ b/sdk/go/gcp/managedkafka/topic.go @@ -31,7 +31,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/memorystore/instance.go b/sdk/go/gcp/memorystore/instance.go index ec1d62875e..f46aec8b52 100644 --- a/sdk/go/gcp/memorystore/instance.go +++ b/sdk/go/gcp/memorystore/instance.go @@ -62,7 +62,7 @@ import ( // if err != nil { // return err // } -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -136,7 +136,7 @@ import ( // if err != nil { // return err // } -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -232,7 +232,7 @@ import ( // if err != nil { // return err // } -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/monitoring/getUptimeCheckIPs.go b/sdk/go/gcp/monitoring/getUptimeCheckIPs.go index e2dad2a0ae..5179835fe7 100644 --- a/sdk/go/gcp/monitoring/getUptimeCheckIPs.go +++ b/sdk/go/gcp/monitoring/getUptimeCheckIPs.go @@ -28,7 +28,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// ips, err := monitoring.GetUptimeCheckIPs(ctx, nil, nil) +// ips, err := monitoring.GetUptimeCheckIPs(ctx, map[string]interface{}{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/networkmanagement/connectivityTest.go b/sdk/go/gcp/networkmanagement/connectivityTest.go index 230525b20e..3a63d525ac 100644 --- a/sdk/go/gcp/networkmanagement/connectivityTest.go +++ b/sdk/go/gcp/networkmanagement/connectivityTest.go @@ -56,7 +56,7 @@ import ( // NetworkInterfaces: compute.InstanceNetworkInterfaceArray{ // &compute.InstanceNetworkInterfaceArgs{ // AccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{ -// nil, +// &compute.InstanceNetworkInterfaceAccessConfigArgs{}, // }, // Network: vpc.ID(), // }, @@ -76,7 +76,7 @@ import ( // NetworkInterfaces: compute.InstanceNetworkInterfaceArray{ // &compute.InstanceNetworkInterfaceArgs{ // AccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{ -// nil, +// &compute.InstanceNetworkInterfaceAccessConfigArgs{}, // }, // Network: vpc.ID(), // }, diff --git a/sdk/go/gcp/networksecurity/gatewaySecurityPolicy.go b/sdk/go/gcp/networksecurity/gatewaySecurityPolicy.go index 656b160b1d..ea751cd399 100644 --- a/sdk/go/gcp/networksecurity/gatewaySecurityPolicy.go +++ b/sdk/go/gcp/networksecurity/gatewaySecurityPolicy.go @@ -79,7 +79,7 @@ import ( // IsCa: pulumi.Bool(false), // }, // KeyUsage: &certificateauthority.CaPoolIssuancePolicyBaselineValuesKeyUsageArgs{ -// BaseKeyUsage: nil, +// BaseKeyUsage: &certificateauthority.CaPoolIssuancePolicyBaselineValuesKeyUsageBaseKeyUsageArgs{}, // ExtendedKeyUsage: &certificateauthority.CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs{ // ServerAuth: pulumi.Bool(true), // }, @@ -128,7 +128,7 @@ import ( // if err != nil { // return err // } -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/networksecurity/serverTlsPolicy.go b/sdk/go/gcp/networksecurity/serverTlsPolicy.go index 1ba265cba8..14013b461e 100644 --- a/sdk/go/gcp/networksecurity/serverTlsPolicy.go +++ b/sdk/go/gcp/networksecurity/serverTlsPolicy.go @@ -152,7 +152,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/networksecurity/tlsInspectionPolicy.go b/sdk/go/gcp/networksecurity/tlsInspectionPolicy.go index 1b004929ac..0cdc3d9348 100644 --- a/sdk/go/gcp/networksecurity/tlsInspectionPolicy.go +++ b/sdk/go/gcp/networksecurity/tlsInspectionPolicy.go @@ -55,7 +55,7 @@ import ( // IsCa: pulumi.Bool(false), // }, // KeyUsage: &certificateauthority.CaPoolIssuancePolicyBaselineValuesKeyUsageArgs{ -// BaseKeyUsage: nil, +// BaseKeyUsage: &certificateauthority.CaPoolIssuancePolicyBaselineValuesKeyUsageBaseKeyUsageArgs{}, // ExtendedKeyUsage: &certificateauthority.CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs{ // ServerAuth: pulumi.Bool(true), // }, @@ -104,7 +104,7 @@ import ( // if err != nil { // return err // } -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -167,7 +167,7 @@ import ( // IsCa: pulumi.Bool(false), // }, // KeyUsage: &certificateauthority.CaPoolIssuancePolicyBaselineValuesKeyUsageArgs{ -// BaseKeyUsage: nil, +// BaseKeyUsage: &certificateauthority.CaPoolIssuancePolicyBaselineValuesKeyUsageBaseKeyUsageArgs{}, // ExtendedKeyUsage: &certificateauthority.CaPoolIssuancePolicyBaselineValuesKeyUsageExtendedKeyUsageArgs{ // ServerAuth: pulumi.Bool(true), // }, diff --git a/sdk/go/gcp/networkservices/edgeCacheKeyset.go b/sdk/go/gcp/networkservices/edgeCacheKeyset.go index f9d2650dfb..9fdf2f6b71 100644 --- a/sdk/go/gcp/networkservices/edgeCacheKeyset.go +++ b/sdk/go/gcp/networkservices/edgeCacheKeyset.go @@ -75,7 +75,7 @@ import ( // _, err := secretmanager.NewSecret(ctx, "secret-basic", &secretmanager.SecretArgs{ // SecretId: pulumi.String("secret-name"), // Replication: &secretmanager.SecretReplicationArgs{ -// Auto: nil, +// Auto: &secretmanager.SecretReplicationAutoArgs{}, // }, // }) // if err != nil { diff --git a/sdk/go/gcp/networkservices/edgeCacheOrigin.go b/sdk/go/gcp/networkservices/edgeCacheOrigin.go index 36e7795813..5875b25423 100644 --- a/sdk/go/gcp/networkservices/edgeCacheOrigin.go +++ b/sdk/go/gcp/networkservices/edgeCacheOrigin.go @@ -146,7 +146,7 @@ import ( // _, err := secretmanager.NewSecret(ctx, "secret-basic", &secretmanager.SecretArgs{ // SecretId: pulumi.String("secret-name"), // Replication: &secretmanager.SecretReplicationArgs{ -// Auto: nil, +// Auto: &secretmanager.SecretReplicationAutoArgs{}, // }, // }) // if err != nil { diff --git a/sdk/go/gcp/networkservices/edgeCacheService.go b/sdk/go/gcp/networkservices/edgeCacheService.go index c35c806e93..bf4f034cac 100644 --- a/sdk/go/gcp/networkservices/edgeCacheService.go +++ b/sdk/go/gcp/networkservices/edgeCacheService.go @@ -385,7 +385,7 @@ import ( // _, err := secretmanager.NewSecret(ctx, "secret-basic", &secretmanager.SecretArgs{ // SecretId: pulumi.String("secret-name"), // Replication: &secretmanager.SecretReplicationArgs{ -// Auto: nil, +// Auto: &secretmanager.SecretReplicationAutoArgs{}, // }, // }) // if err != nil { diff --git a/sdk/go/gcp/organizations/getClientConfig.go b/sdk/go/gcp/organizations/getClientConfig.go index 8103025c89..029d298143 100644 --- a/sdk/go/gcp/organizations/getClientConfig.go +++ b/sdk/go/gcp/organizations/getClientConfig.go @@ -25,7 +25,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// current, err := organizations.GetClientConfig(ctx, nil, nil) +// current, err := organizations.GetClientConfig(ctx, map[string]interface{}{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/organizations/getClientOpenIdUserInfo.go b/sdk/go/gcp/organizations/getClientOpenIdUserInfo.go index b8859b5642..003d7a2d4e 100644 --- a/sdk/go/gcp/organizations/getClientOpenIdUserInfo.go +++ b/sdk/go/gcp/organizations/getClientOpenIdUserInfo.go @@ -39,7 +39,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// me, err := organizations.GetClientOpenIdUserInfo(ctx, nil, nil) +// me, err := organizations.GetClientOpenIdUserInfo(ctx, map[string]interface{}{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/organizations/getProject.go b/sdk/go/gcp/organizations/getProject.go index de13d8e3b9..11a9199b84 100644 --- a/sdk/go/gcp/organizations/getProject.go +++ b/sdk/go/gcp/organizations/getProject.go @@ -29,7 +29,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/osconfig/patchDeployment.go b/sdk/go/gcp/osconfig/patchDeployment.go index ca100e9ca0..f6cde13d92 100644 --- a/sdk/go/gcp/osconfig/patchDeployment.go +++ b/sdk/go/gcp/osconfig/patchDeployment.go @@ -334,7 +334,7 @@ import ( // }, // Monthly: &osconfig.PatchDeploymentRecurringScheduleMonthlyArgs{ // WeekDayOfMonth: &osconfig.PatchDeploymentRecurringScheduleMonthlyWeekDayOfMonthArgs{ -// WeekOrdinal: int(-1), +// WeekOrdinal: pulumi.Int(-1), // DayOfWeek: pulumi.String("TUESDAY"), // DayOffset: pulumi.Int(3), // }, diff --git a/sdk/go/gcp/oslogin/sshPublicKey.go b/sdk/go/gcp/oslogin/sshPublicKey.go index 9c0ec80390..855f22bf20 100644 --- a/sdk/go/gcp/oslogin/sshPublicKey.go +++ b/sdk/go/gcp/oslogin/sshPublicKey.go @@ -38,7 +38,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// me, err := organizations.GetClientOpenIdUserInfo(ctx, nil, nil) +// me, err := organizations.GetClientOpenIdUserInfo(ctx, map[string]interface{}{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/privilegedaccessmanager/entitlement.go b/sdk/go/gcp/privilegedaccessmanager/entitlement.go index d8d6bfef0e..a30c03724d 100644 --- a/sdk/go/gcp/privilegedaccessmanager/entitlement.go +++ b/sdk/go/gcp/privilegedaccessmanager/entitlement.go @@ -36,7 +36,7 @@ import ( // MaxRequestDuration: pulumi.String("43200s"), // Parent: pulumi.String("projects/my-project-name"), // RequesterJustificationConfig: &privilegedaccessmanager.EntitlementRequesterJustificationConfigArgs{ -// Unstructured: nil, +// Unstructured: &privilegedaccessmanager.EntitlementRequesterJustificationConfigUnstructuredArgs{}, // }, // EligibleUsers: privilegedaccessmanager.EntitlementEligibleUserArray{ // &privilegedaccessmanager.EntitlementEligibleUserArgs{ diff --git a/sdk/go/gcp/projects/iamMemberRemove.go b/sdk/go/gcp/projects/iamMemberRemove.go index 64ba079e78..fe855c752b 100644 --- a/sdk/go/gcp/projects/iamMemberRemove.go +++ b/sdk/go/gcp/projects/iamMemberRemove.go @@ -49,7 +49,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := organizations.LookupProject(ctx, nil, nil) +// _, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/projects/serviceIdentity.go b/sdk/go/gcp/projects/serviceIdentity.go index 756ec9fef8..3960dd5fce 100644 --- a/sdk/go/gcp/projects/serviceIdentity.go +++ b/sdk/go/gcp/projects/serviceIdentity.go @@ -42,7 +42,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/pubsub/liteReservation.go b/sdk/go/gcp/pubsub/liteReservation.go index d08b7a72c5..c238268336 100644 --- a/sdk/go/gcp/pubsub/liteReservation.go +++ b/sdk/go/gcp/pubsub/liteReservation.go @@ -37,7 +37,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/pubsub/liteSubscription.go b/sdk/go/gcp/pubsub/liteSubscription.go index 4779edcccb..f22b6ff288 100644 --- a/sdk/go/gcp/pubsub/liteSubscription.go +++ b/sdk/go/gcp/pubsub/liteSubscription.go @@ -38,7 +38,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/pubsub/liteTopic.go b/sdk/go/gcp/pubsub/liteTopic.go index 9cb033c803..fb17083446 100644 --- a/sdk/go/gcp/pubsub/liteTopic.go +++ b/sdk/go/gcp/pubsub/liteTopic.go @@ -36,7 +36,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/pubsub/subscription.go b/sdk/go/gcp/pubsub/subscription.go index 3d4da8a570..8c4c032c7b 100644 --- a/sdk/go/gcp/pubsub/subscription.go +++ b/sdk/go/gcp/pubsub/subscription.go @@ -217,7 +217,7 @@ import ( // if err != nil { // return err // } -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -310,7 +310,7 @@ import ( // if err != nil { // return err // } -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -412,7 +412,7 @@ import ( // if err != nil { // return err // } -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -518,7 +518,7 @@ import ( // if err != nil { // return err // } -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -586,7 +586,7 @@ import ( // if err != nil { // return err // } -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -696,7 +696,7 @@ import ( // if err != nil { // return err // } -// _, err = organizations.LookupProject(ctx, nil, nil) +// _, err = organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/recaptcha/enterpriseKey.go b/sdk/go/gcp/recaptcha/enterpriseKey.go index 0d1b6a1419..2b67cb5298 100644 --- a/sdk/go/gcp/recaptcha/enterpriseKey.go +++ b/sdk/go/gcp/recaptcha/enterpriseKey.go @@ -109,7 +109,7 @@ import ( // IntegrationType: pulumi.String("SCORE"), // AllowAllDomains: pulumi.Bool(true), // }, -// Labels: nil, +// Labels: pulumi.StringMap{}, // }) // if err != nil { // return err diff --git a/sdk/go/gcp/secretmanager/getSecrets.go b/sdk/go/gcp/secretmanager/getSecrets.go index 3524c81a4d..04f4fc7b6f 100644 --- a/sdk/go/gcp/secretmanager/getSecrets.go +++ b/sdk/go/gcp/secretmanager/getSecrets.go @@ -27,7 +27,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := secretmanager.GetSecrets(ctx, nil, nil) +// _, err := secretmanager.GetSecrets(ctx, &secretmanager.GetSecretsArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/secretmanager/regionalSecret.go b/sdk/go/gcp/secretmanager/regionalSecret.go index 8f2f74c2fc..512c182e2c 100644 --- a/sdk/go/gcp/secretmanager/regionalSecret.go +++ b/sdk/go/gcp/secretmanager/regionalSecret.go @@ -72,7 +72,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -119,7 +119,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/secretmanager/secret.go b/sdk/go/gcp/secretmanager/secret.go index fa66a4d6c3..b56b05beca 100644 --- a/sdk/go/gcp/secretmanager/secret.go +++ b/sdk/go/gcp/secretmanager/secret.go @@ -87,7 +87,7 @@ import ( // "key5": pulumi.String("someval5"), // }, // Replication: &secretmanager.SecretReplicationArgs{ -// Auto: nil, +// Auto: &secretmanager.SecretReplicationAutoArgs{}, // }, // }) // if err != nil { @@ -116,7 +116,7 @@ import ( // SecretId: pulumi.String("secret"), // VersionDestroyTtl: pulumi.String("2592000s"), // Replication: &secretmanager.SecretReplicationArgs{ -// Auto: nil, +// Auto: &secretmanager.SecretReplicationAutoArgs{}, // }, // }) // if err != nil { @@ -145,7 +145,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/secretmanager/secretVersion.go b/sdk/go/gcp/secretmanager/secretVersion.go index c3234a90c0..5d3fb8a6d0 100644 --- a/sdk/go/gcp/secretmanager/secretVersion.go +++ b/sdk/go/gcp/secretmanager/secretVersion.go @@ -36,7 +36,7 @@ import ( // "label": pulumi.String("my-label"), // }, // Replication: &secretmanager.SecretReplicationArgs{ -// Auto: nil, +// Auto: &secretmanager.SecretReplicationAutoArgs{}, // }, // }) // if err != nil { diff --git a/sdk/go/gcp/securesourcemanager/instance.go b/sdk/go/gcp/securesourcemanager/instance.go index a8a042e224..ebd11190bc 100644 --- a/sdk/go/gcp/securesourcemanager/instance.go +++ b/sdk/go/gcp/securesourcemanager/instance.go @@ -83,7 +83,7 @@ import ( // if err != nil { // return err // } -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -177,7 +177,7 @@ import ( // if err != nil { // return err // } -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -240,7 +240,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -491,7 +491,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/securitycenter/instanceIamBinding.go b/sdk/go/gcp/securitycenter/instanceIamBinding.go index a5271f48b5..ab49a00b65 100644 --- a/sdk/go/gcp/securitycenter/instanceIamBinding.go +++ b/sdk/go/gcp/securitycenter/instanceIamBinding.go @@ -67,7 +67,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _default, err := appengine.GetDefaultServiceAccount(ctx, nil, nil) +// _default, err := appengine.GetDefaultServiceAccount(ctx, &appengine.GetDefaultServiceAccountArgs{}, nil) // if err != nil { // return err // } @@ -218,7 +218,7 @@ import ( // if err != nil { // return err // } -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/securitycenter/instanceIamMember.go b/sdk/go/gcp/securitycenter/instanceIamMember.go index 593cf85720..c7dd77dbfa 100644 --- a/sdk/go/gcp/securitycenter/instanceIamMember.go +++ b/sdk/go/gcp/securitycenter/instanceIamMember.go @@ -67,7 +67,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _default, err := appengine.GetDefaultServiceAccount(ctx, nil, nil) +// _default, err := appengine.GetDefaultServiceAccount(ctx, &appengine.GetDefaultServiceAccountArgs{}, nil) // if err != nil { // return err // } @@ -218,7 +218,7 @@ import ( // if err != nil { // return err // } -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/securitycenter/instanceIamPolicy.go b/sdk/go/gcp/securitycenter/instanceIamPolicy.go index 175335e4fe..078c22e779 100644 --- a/sdk/go/gcp/securitycenter/instanceIamPolicy.go +++ b/sdk/go/gcp/securitycenter/instanceIamPolicy.go @@ -67,7 +67,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _default, err := appengine.GetDefaultServiceAccount(ctx, nil, nil) +// _default, err := appengine.GetDefaultServiceAccount(ctx, &appengine.GetDefaultServiceAccountArgs{}, nil) // if err != nil { // return err // } @@ -218,7 +218,7 @@ import ( // if err != nil { // return err // } -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/serviceaccount/getAccountAccessToken.go b/sdk/go/gcp/serviceaccount/getAccountAccessToken.go index 95a0117616..35992fdb29 100644 --- a/sdk/go/gcp/serviceaccount/getAccountAccessToken.go +++ b/sdk/go/gcp/serviceaccount/getAccountAccessToken.go @@ -67,7 +67,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := organizations.GetClientConfig(ctx, nil, nil) +// _, err := organizations.GetClientConfig(ctx, map[string]interface{}{}, nil) // if err != nil { // return err // } @@ -82,7 +82,7 @@ import ( // if err != nil { // return err // } -// me, err := organizations.GetClientOpenIdUserInfo(ctx, nil, nil) +// me, err := organizations.GetClientOpenIdUserInfo(ctx, map[string]interface{}{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/serviceaccount/iambinding.go b/sdk/go/gcp/serviceaccount/iambinding.go index 543f99e9d5..b8b3a65910 100644 --- a/sdk/go/gcp/serviceaccount/iambinding.go +++ b/sdk/go/gcp/serviceaccount/iambinding.go @@ -170,7 +170,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _default, err := compute.GetDefaultServiceAccount(ctx, nil, nil) +// _default, err := compute.GetDefaultServiceAccount(ctx, &compute.GetDefaultServiceAccountArgs{}, nil) // if err != nil { // return err // } @@ -392,7 +392,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _default, err := compute.GetDefaultServiceAccount(ctx, nil, nil) +// _default, err := compute.GetDefaultServiceAccount(ctx, &compute.GetDefaultServiceAccountArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/serviceaccount/iammember.go b/sdk/go/gcp/serviceaccount/iammember.go index 8930560260..692499ed21 100644 --- a/sdk/go/gcp/serviceaccount/iammember.go +++ b/sdk/go/gcp/serviceaccount/iammember.go @@ -170,7 +170,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _default, err := compute.GetDefaultServiceAccount(ctx, nil, nil) +// _default, err := compute.GetDefaultServiceAccount(ctx, &compute.GetDefaultServiceAccountArgs{}, nil) // if err != nil { // return err // } @@ -392,7 +392,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _default, err := compute.GetDefaultServiceAccount(ctx, nil, nil) +// _default, err := compute.GetDefaultServiceAccount(ctx, &compute.GetDefaultServiceAccountArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/serviceaccount/iampolicy.go b/sdk/go/gcp/serviceaccount/iampolicy.go index bda640cc27..e662035ada 100644 --- a/sdk/go/gcp/serviceaccount/iampolicy.go +++ b/sdk/go/gcp/serviceaccount/iampolicy.go @@ -170,7 +170,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _default, err := compute.GetDefaultServiceAccount(ctx, nil, nil) +// _default, err := compute.GetDefaultServiceAccount(ctx, &compute.GetDefaultServiceAccountArgs{}, nil) // if err != nil { // return err // } @@ -392,7 +392,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _default, err := compute.GetDefaultServiceAccount(ctx, nil, nil) +// _default, err := compute.GetDefaultServiceAccount(ctx, &compute.GetDefaultServiceAccountArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/servicedirectory/endpoint.go b/sdk/go/gcp/servicedirectory/endpoint.go index 248dff3ac4..271e6a93c4 100644 --- a/sdk/go/gcp/servicedirectory/endpoint.go +++ b/sdk/go/gcp/servicedirectory/endpoint.go @@ -86,7 +86,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/spanner/backupSchedule.go b/sdk/go/gcp/spanner/backupSchedule.go index 2b05b44036..e81f244d54 100644 --- a/sdk/go/gcp/spanner/backupSchedule.go +++ b/sdk/go/gcp/spanner/backupSchedule.go @@ -75,7 +75,7 @@ import ( // Text: pulumi.String("0 12 * * *"), // }, // }, -// FullBackupSpec: nil, +// FullBackupSpec: &spanner.BackupScheduleFullBackupSpecArgs{}, // }) // if err != nil { // return err @@ -131,7 +131,7 @@ import ( // Text: pulumi.String("0 12 * * *"), // }, // }, -// IncrementalBackupSpec: nil, +// IncrementalBackupSpec: &spanner.BackupScheduleIncrementalBackupSpecArgs{}, // }) // if err != nil { // return err diff --git a/sdk/go/gcp/storage/getProjectServiceAccount.go b/sdk/go/gcp/storage/getProjectServiceAccount.go index 6247063556..0c84ef760e 100644 --- a/sdk/go/gcp/storage/getProjectServiceAccount.go +++ b/sdk/go/gcp/storage/getProjectServiceAccount.go @@ -64,7 +64,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// gcsAccount, err := storage.GetProjectServiceAccount(ctx, nil, nil) +// gcsAccount, err := storage.GetProjectServiceAccount(ctx, &storage.GetProjectServiceAccountArgs{}, nil) // if err != nil { // return err // } @@ -101,7 +101,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// gcsAccount, err := storage.GetProjectServiceAccount(ctx, nil, nil) +// gcsAccount, err := storage.GetProjectServiceAccount(ctx, &storage.GetProjectServiceAccountArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/storage/getTransferProjectServiceAccount.go b/sdk/go/gcp/storage/getTransferProjectServiceAccount.go index 19b1e4eaab..f730aae25a 100644 --- a/sdk/go/gcp/storage/getTransferProjectServiceAccount.go +++ b/sdk/go/gcp/storage/getTransferProjectServiceAccount.go @@ -27,7 +27,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _default, err := storage.GetTransferProjectServiceAccount(ctx, nil, nil) +// _default, err := storage.GetTransferProjectServiceAccount(ctx, &storage.GetTransferProjectServiceAccountArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/storage/getTransferProjectServieAccount.go b/sdk/go/gcp/storage/getTransferProjectServieAccount.go index 6f2b2d132e..7f46f7df68 100644 --- a/sdk/go/gcp/storage/getTransferProjectServieAccount.go +++ b/sdk/go/gcp/storage/getTransferProjectServieAccount.go @@ -27,7 +27,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _default, err := storage.GetTransferProjectServiceAccount(ctx, nil, nil) +// _default, err := storage.GetTransferProjectServiceAccount(ctx, &storage.GetTransferProjectServiceAccountArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/storage/insightsReportConfig.go b/sdk/go/gcp/storage/insightsReportConfig.go index c52f327f2e..eb2c825b6d 100644 --- a/sdk/go/gcp/storage/insightsReportConfig.go +++ b/sdk/go/gcp/storage/insightsReportConfig.go @@ -39,7 +39,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/storage/notification.go b/sdk/go/gcp/storage/notification.go index 8bb906ae96..e7b630f876 100644 --- a/sdk/go/gcp/storage/notification.go +++ b/sdk/go/gcp/storage/notification.go @@ -49,7 +49,7 @@ import ( // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { // // Enable notifications by giving the correct IAM permission to the unique service account. -// gcsAccount, err := storage.GetProjectServiceAccount(ctx, nil, nil) +// gcsAccount, err := storage.GetProjectServiceAccount(ctx, &storage.GetProjectServiceAccountArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/tpu/getTensorflowVersions.go b/sdk/go/gcp/tpu/getTensorflowVersions.go index ebafd53581..0ee41e3342 100644 --- a/sdk/go/gcp/tpu/getTensorflowVersions.go +++ b/sdk/go/gcp/tpu/getTensorflowVersions.go @@ -27,7 +27,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := tpu.GetTensorflowVersions(ctx, nil, nil) +// _, err := tpu.GetTensorflowVersions(ctx, &tpu.GetTensorflowVersionsArgs{}, nil) // if err != nil { // return err // } @@ -51,7 +51,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// available, err := tpu.GetTensorflowVersions(ctx, nil, nil) +// available, err := tpu.GetTensorflowVersions(ctx, &tpu.GetTensorflowVersionsArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/tpu/getV2AcceleratorTypes.go b/sdk/go/gcp/tpu/getV2AcceleratorTypes.go index e1a90d2de0..67cf8a0922 100644 --- a/sdk/go/gcp/tpu/getV2AcceleratorTypes.go +++ b/sdk/go/gcp/tpu/getV2AcceleratorTypes.go @@ -27,7 +27,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := tpu.GetV2AcceleratorTypes(ctx, nil, nil) +// _, err := tpu.GetV2AcceleratorTypes(ctx, &tpu.GetV2AcceleratorTypesArgs{}, nil) // if err != nil { // return err // } @@ -51,11 +51,11 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// available, err := tpu.GetV2AcceleratorTypes(ctx, nil, nil) +// available, err := tpu.GetV2AcceleratorTypes(ctx, &tpu.GetV2AcceleratorTypesArgs{}, nil) // if err != nil { // return err // } -// availableGetV2RuntimeVersions, err := tpu.GetV2RuntimeVersions(ctx, nil, nil) +// availableGetV2RuntimeVersions, err := tpu.GetV2RuntimeVersions(ctx, &tpu.GetV2RuntimeVersionsArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/tpu/getV2RuntimeVersions.go b/sdk/go/gcp/tpu/getV2RuntimeVersions.go index f8e37303bb..8250e783c3 100644 --- a/sdk/go/gcp/tpu/getV2RuntimeVersions.go +++ b/sdk/go/gcp/tpu/getV2RuntimeVersions.go @@ -27,7 +27,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := tpu.GetV2RuntimeVersions(ctx, nil, nil) +// _, err := tpu.GetV2RuntimeVersions(ctx, &tpu.GetV2RuntimeVersionsArgs{}, nil) // if err != nil { // return err // } @@ -51,7 +51,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// available, err := tpu.GetV2RuntimeVersions(ctx, nil, nil) +// available, err := tpu.GetV2RuntimeVersions(ctx, &tpu.GetV2RuntimeVersionsArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/tpu/node.go b/sdk/go/gcp/tpu/node.go index 97e45ef089..f8533ffe24 100644 --- a/sdk/go/gcp/tpu/node.go +++ b/sdk/go/gcp/tpu/node.go @@ -36,7 +36,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// available, err := tpu.GetTensorflowVersions(ctx, nil, nil) +// available, err := tpu.GetTensorflowVersions(ctx, &tpu.GetTensorflowVersionsArgs{}, nil) // if err != nil { // return err // } @@ -71,7 +71,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// available, err := tpu.GetTensorflowVersions(ctx, nil, nil) +// available, err := tpu.GetTensorflowVersions(ctx, &tpu.GetTensorflowVersionsArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/tpu/v2vm.go b/sdk/go/gcp/tpu/v2vm.go index b89668f65c..48ea2a9b68 100644 --- a/sdk/go/gcp/tpu/v2vm.go +++ b/sdk/go/gcp/tpu/v2vm.go @@ -28,7 +28,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := tpu.GetV2RuntimeVersions(ctx, nil, nil) +// _, err := tpu.GetV2RuntimeVersions(ctx, &tpu.GetV2RuntimeVersionsArgs{}, nil) // if err != nil { // return err // } @@ -62,11 +62,11 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := tpu.GetV2RuntimeVersions(ctx, nil, nil) +// _, err := tpu.GetV2RuntimeVersions(ctx, &tpu.GetV2RuntimeVersionsArgs{}, nil) // if err != nil { // return err // } -// _, err = tpu.GetV2AcceleratorTypes(ctx, nil, nil) +// _, err = tpu.GetV2AcceleratorTypes(ctx, &tpu.GetV2AcceleratorTypesArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/vertex/aiEndpoint.go b/sdk/go/gcp/vertex/aiEndpoint.go index 5e875eb761..96c06fd2cc 100644 --- a/sdk/go/gcp/vertex/aiEndpoint.go +++ b/sdk/go/gcp/vertex/aiEndpoint.go @@ -68,7 +68,7 @@ import ( // if err != nil { // return err // } -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/vertex/aiFeatureOnlineStore.go b/sdk/go/gcp/vertex/aiFeatureOnlineStore.go index 1ad72f26cb..7acc9008b1 100644 --- a/sdk/go/gcp/vertex/aiFeatureOnlineStore.go +++ b/sdk/go/gcp/vertex/aiFeatureOnlineStore.go @@ -72,7 +72,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -82,7 +82,7 @@ import ( // "foo": pulumi.String("bar"), // }, // Region: pulumi.String("us-central1"), -// Optimized: nil, +// Optimized: &vertex.AiFeatureOnlineStoreOptimizedArgs{}, // DedicatedServingEndpoint: &vertex.AiFeatureOnlineStoreDedicatedServingEndpointArgs{ // PrivateServiceConnectConfig: &vertex.AiFeatureOnlineStoreDedicatedServingEndpointPrivateServiceConnectConfigArgs{ // EnablePrivateServiceConnect: pulumi.Bool(true), @@ -136,7 +136,7 @@ import ( // if err != nil { // return err // } -// _, err = organizations.LookupProject(ctx, nil, nil) +// _, err = organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/vertex/aiFeatureOnlineStoreFeatureview.go b/sdk/go/gcp/vertex/aiFeatureOnlineStoreFeatureview.go index dd7fc36171..86cd17f427 100644 --- a/sdk/go/gcp/vertex/aiFeatureOnlineStoreFeatureview.go +++ b/sdk/go/gcp/vertex/aiFeatureOnlineStoreFeatureview.go @@ -119,7 +119,7 @@ import ( // if err != nil { // return err // } -// _, err = organizations.LookupProject(ctx, nil, nil) +// _, err = organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -281,7 +281,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// testProject, err := organizations.LookupProject(ctx, nil, nil) +// testProject, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -601,7 +601,7 @@ import ( // if err != nil { // return err // } -// _, err = organizations.LookupProject(ctx, nil, nil) +// _, err = organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/vertex/aiIndex.go b/sdk/go/gcp/vertex/aiIndex.go index bb85c7e214..f8a4b3194a 100644 --- a/sdk/go/gcp/vertex/aiIndex.go +++ b/sdk/go/gcp/vertex/aiIndex.go @@ -141,7 +141,7 @@ import ( // DistanceMeasureType: pulumi.String("COSINE_DISTANCE"), // FeatureNormType: pulumi.String("UNIT_L2_NORM"), // AlgorithmConfig: &vertex.AiIndexMetadataConfigAlgorithmConfigArgs{ -// BruteForceConfig: nil, +// BruteForceConfig: &vertex.AiIndexMetadataConfigAlgorithmConfigBruteForceConfigArgs{}, // }, // }, // }, diff --git a/sdk/go/gcp/vertex/aiIndexEndpoint.go b/sdk/go/gcp/vertex/aiIndexEndpoint.go index b1edc0caee..7477282a1a 100644 --- a/sdk/go/gcp/vertex/aiIndexEndpoint.go +++ b/sdk/go/gcp/vertex/aiIndexEndpoint.go @@ -65,7 +65,7 @@ import ( // if err != nil { // return err // } -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -105,7 +105,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/vertex/aiIndexEndpointDeployedIndex.go b/sdk/go/gcp/vertex/aiIndexEndpointDeployedIndex.go index 6f93fe76eb..a2649649e6 100644 --- a/sdk/go/gcp/vertex/aiIndexEndpointDeployedIndex.go +++ b/sdk/go/gcp/vertex/aiIndexEndpointDeployedIndex.go @@ -89,7 +89,7 @@ import ( // if err != nil { // return err // } -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -215,7 +215,7 @@ import ( // if err != nil { // return err // } -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/vertex/aiTensorboard.go b/sdk/go/gcp/vertex/aiTensorboard.go index bb6ba1772e..fba03959b1 100644 --- a/sdk/go/gcp/vertex/aiTensorboard.go +++ b/sdk/go/gcp/vertex/aiTensorboard.go @@ -71,7 +71,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// project, err := organizations.LookupProject(ctx, nil, nil) +// project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/go/gcp/workstations/workstationCluster.go b/sdk/go/gcp/workstations/workstationCluster.go index 7e0aa91cec..d03598fe2e 100644 --- a/sdk/go/gcp/workstations/workstationCluster.go +++ b/sdk/go/gcp/workstations/workstationCluster.go @@ -61,7 +61,7 @@ import ( // if err != nil { // return err // } -// _, err = organizations.LookupProject(ctx, nil, nil) +// _, err = organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -120,7 +120,7 @@ import ( // if err != nil { // return err // } -// _, err = organizations.LookupProject(ctx, nil, nil) +// _, err = organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } @@ -182,7 +182,7 @@ import ( // if err != nil { // return err // } -// _, err = organizations.LookupProject(ctx, nil, nil) +// _, err = organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil) // if err != nil { // return err // } diff --git a/sdk/java/src/main/java/com/pulumi/gcp/osconfig/PatchDeployment.java b/sdk/java/src/main/java/com/pulumi/gcp/osconfig/PatchDeployment.java index 98c8bf8ca7..0a238de37a 100644 --- a/sdk/java/src/main/java/com/pulumi/gcp/osconfig/PatchDeployment.java +++ b/sdk/java/src/main/java/com/pulumi/gcp/osconfig/PatchDeployment.java @@ -276,6 +276,153 @@ * ### Os Config Patch Deployment Full * * <!--Start PulumiCodeChooser --> + *
+ * {@code
+ * package generated_program;
+ * 
+ * import com.pulumi.Context;
+ * import com.pulumi.Pulumi;
+ * import com.pulumi.core.Output;
+ * import com.pulumi.gcp.osconfig.PatchDeployment;
+ * import com.pulumi.gcp.osconfig.PatchDeploymentArgs;
+ * import com.pulumi.gcp.osconfig.inputs.PatchDeploymentInstanceFilterArgs;
+ * import com.pulumi.gcp.osconfig.inputs.PatchDeploymentPatchConfigArgs;
+ * import com.pulumi.gcp.osconfig.inputs.PatchDeploymentPatchConfigAptArgs;
+ * import com.pulumi.gcp.osconfig.inputs.PatchDeploymentPatchConfigYumArgs;
+ * import com.pulumi.gcp.osconfig.inputs.PatchDeploymentPatchConfigGooArgs;
+ * import com.pulumi.gcp.osconfig.inputs.PatchDeploymentPatchConfigZypperArgs;
+ * import com.pulumi.gcp.osconfig.inputs.PatchDeploymentPatchConfigWindowsUpdateArgs;
+ * import com.pulumi.gcp.osconfig.inputs.PatchDeploymentPatchConfigPreStepArgs;
+ * import com.pulumi.gcp.osconfig.inputs.PatchDeploymentPatchConfigPreStepLinuxExecStepConfigArgs;
+ * import com.pulumi.gcp.osconfig.inputs.PatchDeploymentPatchConfigPreStepWindowsExecStepConfigArgs;
+ * import com.pulumi.gcp.osconfig.inputs.PatchDeploymentPatchConfigPostStepArgs;
+ * import com.pulumi.gcp.osconfig.inputs.PatchDeploymentPatchConfigPostStepLinuxExecStepConfigArgs;
+ * import com.pulumi.gcp.osconfig.inputs.PatchDeploymentPatchConfigPostStepLinuxExecStepConfigGcsObjectArgs;
+ * import com.pulumi.gcp.osconfig.inputs.PatchDeploymentPatchConfigPostStepWindowsExecStepConfigArgs;
+ * import com.pulumi.gcp.osconfig.inputs.PatchDeploymentPatchConfigPostStepWindowsExecStepConfigGcsObjectArgs;
+ * import com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleArgs;
+ * import com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleTimeZoneArgs;
+ * import com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleTimeOfDayArgs;
+ * import com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleMonthlyArgs;
+ * import com.pulumi.gcp.osconfig.inputs.PatchDeploymentRecurringScheduleMonthlyWeekDayOfMonthArgs;
+ * import com.pulumi.gcp.osconfig.inputs.PatchDeploymentRolloutArgs;
+ * import com.pulumi.gcp.osconfig.inputs.PatchDeploymentRolloutDisruptionBudgetArgs;
+ * 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 patch = new PatchDeployment("patch", PatchDeploymentArgs.builder()
+ *             .patchDeploymentId("patch-deploy")
+ *             .instanceFilter(PatchDeploymentInstanceFilterArgs.builder()
+ *                 .groupLabels(PatchDeploymentInstanceFilterGroupLabelArgs.builder()
+ *                     .labels(Map.ofEntries(
+ *                         Map.entry("env", "dev"),
+ *                         Map.entry("app", "web")
+ *                     ))
+ *                     .build())
+ *                 .instanceNamePrefixes("test-")
+ *                 .zones(                
+ *                     "us-central1-a",
+ *                     "us-central-1c")
+ *                 .build())
+ *             .patchConfig(PatchDeploymentPatchConfigArgs.builder()
+ *                 .migInstancesAllowed(true)
+ *                 .rebootConfig("ALWAYS")
+ *                 .apt(PatchDeploymentPatchConfigAptArgs.builder()
+ *                     .type("DIST")
+ *                     .excludes("python")
+ *                     .build())
+ *                 .yum(PatchDeploymentPatchConfigYumArgs.builder()
+ *                     .security(true)
+ *                     .minimal(true)
+ *                     .excludes("bash")
+ *                     .build())
+ *                 .goo(PatchDeploymentPatchConfigGooArgs.builder()
+ *                     .enabled(true)
+ *                     .build())
+ *                 .zypper(PatchDeploymentPatchConfigZypperArgs.builder()
+ *                     .categories("security")
+ *                     .build())
+ *                 .windowsUpdate(PatchDeploymentPatchConfigWindowsUpdateArgs.builder()
+ *                     .classifications(                    
+ *                         "CRITICAL",
+ *                         "SECURITY",
+ *                         "UPDATE")
+ *                     .excludes("5012170")
+ *                     .build())
+ *                 .preStep(PatchDeploymentPatchConfigPreStepArgs.builder()
+ *                     .linuxExecStepConfig(PatchDeploymentPatchConfigPreStepLinuxExecStepConfigArgs.builder()
+ *                         .allowedSuccessCodes(                        
+ *                             0,
+ *                             3)
+ *                         .localPath("/tmp/pre_patch_script.sh")
+ *                         .build())
+ *                     .windowsExecStepConfig(PatchDeploymentPatchConfigPreStepWindowsExecStepConfigArgs.builder()
+ *                         .interpreter("SHELL")
+ *                         .allowedSuccessCodes(                        
+ *                             0,
+ *                             2)
+ *                         .localPath("C:\\Users\\user\\pre-patch-script.cmd")
+ *                         .build())
+ *                     .build())
+ *                 .postStep(PatchDeploymentPatchConfigPostStepArgs.builder()
+ *                     .linuxExecStepConfig(PatchDeploymentPatchConfigPostStepLinuxExecStepConfigArgs.builder()
+ *                         .gcsObject(PatchDeploymentPatchConfigPostStepLinuxExecStepConfigGcsObjectArgs.builder()
+ *                             .bucket("my-patch-scripts")
+ *                             .generationNumber("1523477886880")
+ *                             .object("linux/post_patch_script")
+ *                             .build())
+ *                         .build())
+ *                     .windowsExecStepConfig(PatchDeploymentPatchConfigPostStepWindowsExecStepConfigArgs.builder()
+ *                         .interpreter("POWERSHELL")
+ *                         .gcsObject(PatchDeploymentPatchConfigPostStepWindowsExecStepConfigGcsObjectArgs.builder()
+ *                             .bucket("my-patch-scripts")
+ *                             .generationNumber("135920493447")
+ *                             .object("windows/post_patch_script.ps1")
+ *                             .build())
+ *                         .build())
+ *                     .build())
+ *                 .build())
+ *             .duration("10s")
+ *             .recurringSchedule(PatchDeploymentRecurringScheduleArgs.builder()
+ *                 .timeZone(PatchDeploymentRecurringScheduleTimeZoneArgs.builder()
+ *                     .id("America/New_York")
+ *                     .build())
+ *                 .timeOfDay(PatchDeploymentRecurringScheduleTimeOfDayArgs.builder()
+ *                     .hours(0)
+ *                     .minutes(30)
+ *                     .seconds(30)
+ *                     .nanos(20)
+ *                     .build())
+ *                 .monthly(PatchDeploymentRecurringScheduleMonthlyArgs.builder()
+ *                     .weekDayOfMonth(PatchDeploymentRecurringScheduleMonthlyWeekDayOfMonthArgs.builder()
+ *                         .weekOrdinal(-1)
+ *                         .dayOfWeek("TUESDAY")
+ *                         .dayOffset(3)
+ *                         .build())
+ *                     .build())
+ *                 .build())
+ *             .rollout(PatchDeploymentRolloutArgs.builder()
+ *                 .mode("ZONE_BY_ZONE")
+ *                 .disruptionBudget(PatchDeploymentRolloutDisruptionBudgetArgs.builder()
+ *                     .fixed(1)
+ *                     .build())
+ *                 .build())
+ *             .build());
+ * 
+ *     }
+ * }
+ * }
+ * 
* <!--End PulumiCodeChooser --> * * ## Import diff --git a/sdk/python/pulumi_gcp/_utilities.py b/sdk/python/pulumi_gcp/_utilities.py index d14b49ace3..3ce408d5ff 100644 --- a/sdk/python/pulumi_gcp/_utilities.py +++ b/sdk/python/pulumi_gcp/_utilities.py @@ -264,7 +264,7 @@ def call_plain( output = pulumi.runtime.call(tok, props, res, typ) # Ingoring deps silently. They are typically non-empty, r.f() calls include r as a dependency. - result, known, secret, _ = _sync_await(asyncio.ensure_future(_await_output(output))) + result, known, secret, _ = _sync_await(asyncio.create_task(_await_output(output))) problem = None if not known: diff --git a/sdk/python/pulumi_gcp/accessapproval/get_folder_service_account.py b/sdk/python/pulumi_gcp/accessapproval/get_folder_service_account.py index 9308433c7b..c9ab3f2c35 100644 --- a/sdk/python/pulumi_gcp/accessapproval/get_folder_service_account.py +++ b/sdk/python/pulumi_gcp/accessapproval/get_folder_service_account.py @@ -120,9 +120,6 @@ def get_folder_service_account(folder_id: Optional[str] = None, folder_id=pulumi.get(__ret__, 'folder_id'), id=pulumi.get(__ret__, 'id'), name=pulumi.get(__ret__, 'name')) - - -@_utilities.lift_output_func(get_folder_service_account) def get_folder_service_account_output(folder_id: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetFolderServiceAccountResult]: """ @@ -150,4 +147,12 @@ def get_folder_service_account_output(folder_id: Optional[pulumi.Input[str]] = N :param str folder_id: The folder ID the service account was created for. """ - ... + __args__ = dict() + __args__['folderId'] = folder_id + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:accessapproval/getFolderServiceAccount:getFolderServiceAccount', __args__, opts=opts, typ=GetFolderServiceAccountResult) + return __ret__.apply(lambda __response__: GetFolderServiceAccountResult( + account_email=pulumi.get(__response__, 'account_email'), + folder_id=pulumi.get(__response__, 'folder_id'), + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'))) diff --git a/sdk/python/pulumi_gcp/accessapproval/get_organization_service_account.py b/sdk/python/pulumi_gcp/accessapproval/get_organization_service_account.py index 5856ee97f4..980a7d302c 100644 --- a/sdk/python/pulumi_gcp/accessapproval/get_organization_service_account.py +++ b/sdk/python/pulumi_gcp/accessapproval/get_organization_service_account.py @@ -120,9 +120,6 @@ def get_organization_service_account(organization_id: Optional[str] = None, id=pulumi.get(__ret__, 'id'), name=pulumi.get(__ret__, 'name'), organization_id=pulumi.get(__ret__, 'organization_id')) - - -@_utilities.lift_output_func(get_organization_service_account) def get_organization_service_account_output(organization_id: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetOrganizationServiceAccountResult]: """ @@ -150,4 +147,12 @@ def get_organization_service_account_output(organization_id: Optional[pulumi.Inp :param str organization_id: The organization ID the service account was created for. """ - ... + __args__ = dict() + __args__['organizationId'] = organization_id + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:accessapproval/getOrganizationServiceAccount:getOrganizationServiceAccount', __args__, opts=opts, typ=GetOrganizationServiceAccountResult) + return __ret__.apply(lambda __response__: GetOrganizationServiceAccountResult( + account_email=pulumi.get(__response__, 'account_email'), + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'), + organization_id=pulumi.get(__response__, 'organization_id'))) diff --git a/sdk/python/pulumi_gcp/accessapproval/get_project_service_account.py b/sdk/python/pulumi_gcp/accessapproval/get_project_service_account.py index 34801ac2c8..47f4e923c4 100644 --- a/sdk/python/pulumi_gcp/accessapproval/get_project_service_account.py +++ b/sdk/python/pulumi_gcp/accessapproval/get_project_service_account.py @@ -120,9 +120,6 @@ def get_project_service_account(project_id: Optional[str] = None, id=pulumi.get(__ret__, 'id'), name=pulumi.get(__ret__, 'name'), project_id=pulumi.get(__ret__, 'project_id')) - - -@_utilities.lift_output_func(get_project_service_account) def get_project_service_account_output(project_id: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetProjectServiceAccountResult]: """ @@ -150,4 +147,12 @@ def get_project_service_account_output(project_id: Optional[pulumi.Input[str]] = :param str project_id: The project ID the service account was created for. """ - ... + __args__ = dict() + __args__['projectId'] = project_id + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:accessapproval/getProjectServiceAccount:getProjectServiceAccount', __args__, opts=opts, typ=GetProjectServiceAccountResult) + return __ret__.apply(lambda __response__: GetProjectServiceAccountResult( + account_email=pulumi.get(__response__, 'account_email'), + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'), + project_id=pulumi.get(__response__, 'project_id'))) diff --git a/sdk/python/pulumi_gcp/accesscontextmanager/get_access_policy_iam_policy.py b/sdk/python/pulumi_gcp/accesscontextmanager/get_access_policy_iam_policy.py index c5b31dcc9c..ba2ddac77a 100644 --- a/sdk/python/pulumi_gcp/accesscontextmanager/get_access_policy_iam_policy.py +++ b/sdk/python/pulumi_gcp/accesscontextmanager/get_access_policy_iam_policy.py @@ -110,9 +110,6 @@ def get_access_policy_iam_policy(name: Optional[str] = None, id=pulumi.get(__ret__, 'id'), name=pulumi.get(__ret__, 'name'), policy_data=pulumi.get(__ret__, 'policy_data')) - - -@_utilities.lift_output_func(get_access_policy_iam_policy) def get_access_policy_iam_policy_output(name: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetAccessPolicyIamPolicyResult]: """ @@ -130,4 +127,12 @@ def get_access_policy_iam_policy_output(name: Optional[pulumi.Input[str]] = None :param str name: Used to find the parent resource to bind the IAM policy to """ - ... + __args__ = dict() + __args__['name'] = name + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:accesscontextmanager/getAccessPolicyIamPolicy:getAccessPolicyIamPolicy', __args__, opts=opts, typ=GetAccessPolicyIamPolicyResult) + return __ret__.apply(lambda __response__: GetAccessPolicyIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'), + policy_data=pulumi.get(__response__, 'policy_data'))) diff --git a/sdk/python/pulumi_gcp/alloydb/get_locations.py b/sdk/python/pulumi_gcp/alloydb/get_locations.py index a14dd6ec51..683648b28d 100644 --- a/sdk/python/pulumi_gcp/alloydb/get_locations.py +++ b/sdk/python/pulumi_gcp/alloydb/get_locations.py @@ -97,9 +97,6 @@ def get_locations(project: Optional[str] = None, id=pulumi.get(__ret__, 'id'), locations=pulumi.get(__ret__, 'locations'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_locations) def get_locations_output(project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetLocationsResult]: """ @@ -117,4 +114,11 @@ def get_locations_output(project: Optional[pulumi.Input[Optional[str]]] = None, :param str project: The ID of the project. """ - ... + __args__ = dict() + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:alloydb/getLocations:getLocations', __args__, opts=opts, typ=GetLocationsResult) + return __ret__.apply(lambda __response__: GetLocationsResult( + id=pulumi.get(__response__, 'id'), + locations=pulumi.get(__response__, 'locations'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/alloydb/get_supported_database_flags.py b/sdk/python/pulumi_gcp/alloydb/get_supported_database_flags.py index 0fc63154ea..b073f3c702 100644 --- a/sdk/python/pulumi_gcp/alloydb/get_supported_database_flags.py +++ b/sdk/python/pulumi_gcp/alloydb/get_supported_database_flags.py @@ -110,9 +110,6 @@ def get_supported_database_flags(location: Optional[str] = None, location=pulumi.get(__ret__, 'location'), project=pulumi.get(__ret__, 'project'), supported_database_flags=pulumi.get(__ret__, 'supported_database_flags')) - - -@_utilities.lift_output_func(get_supported_database_flags) def get_supported_database_flags_output(location: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetSupportedDatabaseFlagsResult]: @@ -132,4 +129,13 @@ def get_supported_database_flags_output(location: Optional[pulumi.Input[str]] = :param str location: The canonical id of the location. For example: `us-east1`. :param str project: The ID of the project. """ - ... + __args__ = dict() + __args__['location'] = location + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:alloydb/getSupportedDatabaseFlags:getSupportedDatabaseFlags', __args__, opts=opts, typ=GetSupportedDatabaseFlagsResult) + return __ret__.apply(lambda __response__: GetSupportedDatabaseFlagsResult( + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + project=pulumi.get(__response__, 'project'), + supported_database_flags=pulumi.get(__response__, 'supported_database_flags'))) diff --git a/sdk/python/pulumi_gcp/apigateway/get_api_config_iam_policy.py b/sdk/python/pulumi_gcp/apigateway/get_api_config_iam_policy.py index 5e939e803f..071ab91b4f 100644 --- a/sdk/python/pulumi_gcp/apigateway/get_api_config_iam_policy.py +++ b/sdk/python/pulumi_gcp/apigateway/get_api_config_iam_policy.py @@ -127,9 +127,6 @@ def get_api_config_iam_policy(api: Optional[str] = None, id=pulumi.get(__ret__, 'id'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_api_config_iam_policy) def get_api_config_iam_policy_output(api: Optional[pulumi.Input[str]] = None, api_config: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -142,4 +139,16 @@ def get_api_config_iam_policy_output(api: Optional[pulumi.Input[str]] = None, :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['api'] = api + __args__['apiConfig'] = api_config + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:apigateway/getApiConfigIamPolicy:getApiConfigIamPolicy', __args__, opts=opts, typ=GetApiConfigIamPolicyResult) + return __ret__.apply(lambda __response__: GetApiConfigIamPolicyResult( + api=pulumi.get(__response__, 'api'), + api_config=pulumi.get(__response__, 'api_config'), + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/apigateway/get_api_iam_policy.py b/sdk/python/pulumi_gcp/apigateway/get_api_iam_policy.py index b3c7160cf9..3491331d39 100644 --- a/sdk/python/pulumi_gcp/apigateway/get_api_iam_policy.py +++ b/sdk/python/pulumi_gcp/apigateway/get_api_iam_policy.py @@ -113,9 +113,6 @@ def get_api_iam_policy(api: Optional[str] = None, id=pulumi.get(__ret__, 'id'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_api_iam_policy) def get_api_iam_policy_output(api: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetApiIamPolicyResult]: @@ -125,4 +122,14 @@ def get_api_iam_policy_output(api: Optional[pulumi.Input[str]] = None, :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['api'] = api + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:apigateway/getApiIamPolicy:getApiIamPolicy', __args__, opts=opts, typ=GetApiIamPolicyResult) + return __ret__.apply(lambda __response__: GetApiIamPolicyResult( + api=pulumi.get(__response__, 'api'), + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/apigateway/get_gateway_iam_policy.py b/sdk/python/pulumi_gcp/apigateway/get_gateway_iam_policy.py index f6aef1c6eb..daf430e315 100644 --- a/sdk/python/pulumi_gcp/apigateway/get_gateway_iam_policy.py +++ b/sdk/python/pulumi_gcp/apigateway/get_gateway_iam_policy.py @@ -129,9 +129,6 @@ def get_gateway_iam_policy(gateway: Optional[str] = None, policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project'), region=pulumi.get(__ret__, 'region')) - - -@_utilities.lift_output_func(get_gateway_iam_policy) def get_gateway_iam_policy_output(gateway: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, region: Optional[pulumi.Input[Optional[str]]] = None, @@ -146,4 +143,16 @@ def get_gateway_iam_policy_output(gateway: Optional[pulumi.Input[str]] = None, the value will be parsed from the identifier of the parent resource. If no region is provided in the parent identifier and no region is specified, it is taken from the provider configuration. """ - ... + __args__ = dict() + __args__['gateway'] = gateway + __args__['project'] = project + __args__['region'] = region + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:apigateway/getGatewayIamPolicy:getGatewayIamPolicy', __args__, opts=opts, typ=GetGatewayIamPolicyResult) + return __ret__.apply(lambda __response__: GetGatewayIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + gateway=pulumi.get(__response__, 'gateway'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'), + region=pulumi.get(__response__, 'region'))) diff --git a/sdk/python/pulumi_gcp/apigee/get_environment_iam_policy.py b/sdk/python/pulumi_gcp/apigee/get_environment_iam_policy.py index 3e4acebffb..ffcb392934 100644 --- a/sdk/python/pulumi_gcp/apigee/get_environment_iam_policy.py +++ b/sdk/python/pulumi_gcp/apigee/get_environment_iam_policy.py @@ -123,9 +123,6 @@ def get_environment_iam_policy(env_id: Optional[str] = None, id=pulumi.get(__ret__, 'id'), org_id=pulumi.get(__ret__, 'org_id'), policy_data=pulumi.get(__ret__, 'policy_data')) - - -@_utilities.lift_output_func(get_environment_iam_policy) def get_environment_iam_policy_output(env_id: Optional[pulumi.Input[str]] = None, org_id: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetEnvironmentIamPolicyResult]: @@ -145,4 +142,14 @@ def get_environment_iam_policy_output(env_id: Optional[pulumi.Input[str]] = None :param str env_id: Used to find the parent resource to bind the IAM policy to """ - ... + __args__ = dict() + __args__['envId'] = env_id + __args__['orgId'] = org_id + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:apigee/getEnvironmentIamPolicy:getEnvironmentIamPolicy', __args__, opts=opts, typ=GetEnvironmentIamPolicyResult) + return __ret__.apply(lambda __response__: GetEnvironmentIamPolicyResult( + env_id=pulumi.get(__response__, 'env_id'), + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + org_id=pulumi.get(__response__, 'org_id'), + policy_data=pulumi.get(__response__, 'policy_data'))) diff --git a/sdk/python/pulumi_gcp/appengine/engine_split_traffic.py b/sdk/python/pulumi_gcp/appengine/engine_split_traffic.py index 502a5b885b..258cffb7b5 100644 --- a/sdk/python/pulumi_gcp/appengine/engine_split_traffic.py +++ b/sdk/python/pulumi_gcp/appengine/engine_split_traffic.py @@ -237,8 +237,8 @@ def __init__(__self__, liveappV1Version_id=liveapp_v1.version_id, liveappV2Version_id=liveapp_v2.version_id ).apply(lambda resolved_outputs: { - "": 0.75, - "": 0.25, + resolved_outputs['liveappV1Version_id']: 0.75, + resolved_outputs['liveappV2Version_id']: 0.25, }) , }) @@ -352,8 +352,8 @@ def __init__(__self__, liveappV1Version_id=liveapp_v1.version_id, liveappV2Version_id=liveapp_v2.version_id ).apply(lambda resolved_outputs: { - "": 0.75, - "": 0.25, + resolved_outputs['liveappV1Version_id']: 0.75, + resolved_outputs['liveappV2Version_id']: 0.25, }) , }) diff --git a/sdk/python/pulumi_gcp/appengine/get_default_service_account.py b/sdk/python/pulumi_gcp/appengine/get_default_service_account.py index 5290351992..c5145f118b 100644 --- a/sdk/python/pulumi_gcp/appengine/get_default_service_account.py +++ b/sdk/python/pulumi_gcp/appengine/get_default_service_account.py @@ -149,9 +149,6 @@ def get_default_service_account(project: Optional[str] = None, name=pulumi.get(__ret__, 'name'), project=pulumi.get(__ret__, 'project'), unique_id=pulumi.get(__ret__, 'unique_id')) - - -@_utilities.lift_output_func(get_default_service_account) def get_default_service_account_output(project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetDefaultServiceAccountResult]: """ @@ -170,4 +167,15 @@ def get_default_service_account_output(project: Optional[pulumi.Input[Optional[s :param str project: The project ID. If it is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:appengine/getDefaultServiceAccount:getDefaultServiceAccount', __args__, opts=opts, typ=GetDefaultServiceAccountResult) + return __ret__.apply(lambda __response__: GetDefaultServiceAccountResult( + display_name=pulumi.get(__response__, 'display_name'), + email=pulumi.get(__response__, 'email'), + id=pulumi.get(__response__, 'id'), + member=pulumi.get(__response__, 'member'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + unique_id=pulumi.get(__response__, 'unique_id'))) diff --git a/sdk/python/pulumi_gcp/apphub/get_application.py b/sdk/python/pulumi_gcp/apphub/get_application.py index 1214498116..ee7224e9f1 100644 --- a/sdk/python/pulumi_gcp/apphub/get_application.py +++ b/sdk/python/pulumi_gcp/apphub/get_application.py @@ -197,9 +197,6 @@ def get_application(application_id: Optional[str] = None, state=pulumi.get(__ret__, 'state'), uid=pulumi.get(__ret__, 'uid'), update_time=pulumi.get(__ret__, 'update_time')) - - -@_utilities.lift_output_func(get_application) def get_application_output(application_id: Optional[pulumi.Input[str]] = None, location: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[str]] = None, @@ -218,4 +215,23 @@ def get_application_output(application_id: Optional[pulumi.Input[str]] = None, location="location") ``` """ - ... + __args__ = dict() + __args__['applicationId'] = application_id + __args__['location'] = location + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:apphub/getApplication:getApplication', __args__, opts=opts, typ=GetApplicationResult) + return __ret__.apply(lambda __response__: GetApplicationResult( + application_id=pulumi.get(__response__, 'application_id'), + attributes=pulumi.get(__response__, 'attributes'), + create_time=pulumi.get(__response__, 'create_time'), + description=pulumi.get(__response__, 'description'), + display_name=pulumi.get(__response__, 'display_name'), + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + scopes=pulumi.get(__response__, 'scopes'), + state=pulumi.get(__response__, 'state'), + uid=pulumi.get(__response__, 'uid'), + update_time=pulumi.get(__response__, 'update_time'))) diff --git a/sdk/python/pulumi_gcp/apphub/get_discovered_service.py b/sdk/python/pulumi_gcp/apphub/get_discovered_service.py index e58a7390fd..48bb463ab8 100644 --- a/sdk/python/pulumi_gcp/apphub/get_discovered_service.py +++ b/sdk/python/pulumi_gcp/apphub/get_discovered_service.py @@ -153,9 +153,6 @@ def get_discovered_service(location: Optional[str] = None, service_properties=pulumi.get(__ret__, 'service_properties'), service_references=pulumi.get(__ret__, 'service_references'), service_uri=pulumi.get(__ret__, 'service_uri')) - - -@_utilities.lift_output_func(get_discovered_service) def get_discovered_service_output(location: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, service_uri: Optional[pulumi.Input[str]] = None, @@ -178,4 +175,17 @@ def get_discovered_service_output(location: Optional[pulumi.Input[str]] = None, :param str project: The host project of the discovered service. :param str service_uri: The uri of the service. """ - ... + __args__ = dict() + __args__['location'] = location + __args__['project'] = project + __args__['serviceUri'] = service_uri + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:apphub/getDiscoveredService:getDiscoveredService', __args__, opts=opts, typ=GetDiscoveredServiceResult) + return __ret__.apply(lambda __response__: GetDiscoveredServiceResult( + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + service_properties=pulumi.get(__response__, 'service_properties'), + service_references=pulumi.get(__response__, 'service_references'), + service_uri=pulumi.get(__response__, 'service_uri'))) diff --git a/sdk/python/pulumi_gcp/apphub/get_discovered_workload.py b/sdk/python/pulumi_gcp/apphub/get_discovered_workload.py index 420cdeee9a..fef1bc7365 100644 --- a/sdk/python/pulumi_gcp/apphub/get_discovered_workload.py +++ b/sdk/python/pulumi_gcp/apphub/get_discovered_workload.py @@ -153,9 +153,6 @@ def get_discovered_workload(location: Optional[str] = None, workload_properties=pulumi.get(__ret__, 'workload_properties'), workload_references=pulumi.get(__ret__, 'workload_references'), workload_uri=pulumi.get(__ret__, 'workload_uri')) - - -@_utilities.lift_output_func(get_discovered_workload) def get_discovered_workload_output(location: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, workload_uri: Optional[pulumi.Input[str]] = None, @@ -178,4 +175,17 @@ def get_discovered_workload_output(location: Optional[pulumi.Input[str]] = None, :param str project: The host project of the discovered workload. :param str workload_uri: The uri of the workload (instance group managed by the Instance Group Manager). Example: "//compute.googleapis.com/projects/1/regions/us-east1/instanceGroups/id1" """ - ... + __args__ = dict() + __args__['location'] = location + __args__['project'] = project + __args__['workloadUri'] = workload_uri + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:apphub/getDiscoveredWorkload:getDiscoveredWorkload', __args__, opts=opts, typ=GetDiscoveredWorkloadResult) + return __ret__.apply(lambda __response__: GetDiscoveredWorkloadResult( + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + workload_properties=pulumi.get(__response__, 'workload_properties'), + workload_references=pulumi.get(__response__, 'workload_references'), + workload_uri=pulumi.get(__response__, 'workload_uri'))) diff --git a/sdk/python/pulumi_gcp/artifactregistry/get_docker_image.py b/sdk/python/pulumi_gcp/artifactregistry/get_docker_image.py index 0519d032d9..34d997a159 100644 --- a/sdk/python/pulumi_gcp/artifactregistry/get_docker_image.py +++ b/sdk/python/pulumi_gcp/artifactregistry/get_docker_image.py @@ -226,9 +226,6 @@ def get_docker_image(image_name: Optional[str] = None, tags=pulumi.get(__ret__, 'tags'), update_time=pulumi.get(__ret__, 'update_time'), upload_time=pulumi.get(__ret__, 'upload_time')) - - -@_utilities.lift_output_func(get_docker_image) def get_docker_image_output(image_name: Optional[pulumi.Input[str]] = None, location: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -246,4 +243,24 @@ def get_docker_image_output(image_name: Optional[pulumi.Input[str]] = None, :param str project: The project ID in which the resource belongs. If it is not provided, the provider project is used. :param str repository_id: The last part of the repository name to fetch from. """ - ... + __args__ = dict() + __args__['imageName'] = image_name + __args__['location'] = location + __args__['project'] = project + __args__['repositoryId'] = repository_id + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:artifactregistry/getDockerImage:getDockerImage', __args__, opts=opts, typ=GetDockerImageResult) + return __ret__.apply(lambda __response__: GetDockerImageResult( + build_time=pulumi.get(__response__, 'build_time'), + id=pulumi.get(__response__, 'id'), + image_name=pulumi.get(__response__, 'image_name'), + image_size_bytes=pulumi.get(__response__, 'image_size_bytes'), + location=pulumi.get(__response__, 'location'), + media_type=pulumi.get(__response__, 'media_type'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + repository_id=pulumi.get(__response__, 'repository_id'), + self_link=pulumi.get(__response__, 'self_link'), + tags=pulumi.get(__response__, 'tags'), + update_time=pulumi.get(__response__, 'update_time'), + upload_time=pulumi.get(__response__, 'upload_time'))) diff --git a/sdk/python/pulumi_gcp/artifactregistry/get_locations.py b/sdk/python/pulumi_gcp/artifactregistry/get_locations.py index f5fa296a2a..77fb2d289a 100644 --- a/sdk/python/pulumi_gcp/artifactregistry/get_locations.py +++ b/sdk/python/pulumi_gcp/artifactregistry/get_locations.py @@ -120,9 +120,6 @@ def get_locations(project: Optional[str] = None, id=pulumi.get(__ret__, 'id'), locations=pulumi.get(__ret__, 'locations'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_locations) def get_locations_output(project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetLocationsResult]: """ @@ -164,4 +161,11 @@ def get_locations_output(project: Optional[pulumi.Input[Optional[str]]] = None, :param str project: The project to list versions for. If it is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:artifactregistry/getLocations:getLocations', __args__, opts=opts, typ=GetLocationsResult) + return __ret__.apply(lambda __response__: GetLocationsResult( + id=pulumi.get(__response__, 'id'), + locations=pulumi.get(__response__, 'locations'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/artifactregistry/get_repository.py b/sdk/python/pulumi_gcp/artifactregistry/get_repository.py index 9027acb8a6..37ae71388a 100644 --- a/sdk/python/pulumi_gcp/artifactregistry/get_repository.py +++ b/sdk/python/pulumi_gcp/artifactregistry/get_repository.py @@ -276,9 +276,6 @@ def get_repository(location: Optional[str] = None, repository_id=pulumi.get(__ret__, 'repository_id'), update_time=pulumi.get(__ret__, 'update_time'), virtual_repository_configs=pulumi.get(__ret__, 'virtual_repository_configs')) - - -@_utilities.lift_output_func(get_repository) def get_repository_output(location: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, repository_id: Optional[pulumi.Input[str]] = None, @@ -306,4 +303,30 @@ def get_repository_output(location: Optional[pulumi.Input[str]] = None, is not provided, the provider project is used. :param str repository_id: The last part of the repository name. """ - ... + __args__ = dict() + __args__['location'] = location + __args__['project'] = project + __args__['repositoryId'] = repository_id + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:artifactregistry/getRepository:getRepository', __args__, opts=opts, typ=GetRepositoryResult) + return __ret__.apply(lambda __response__: GetRepositoryResult( + cleanup_policies=pulumi.get(__response__, 'cleanup_policies'), + cleanup_policy_dry_run=pulumi.get(__response__, 'cleanup_policy_dry_run'), + create_time=pulumi.get(__response__, 'create_time'), + description=pulumi.get(__response__, 'description'), + docker_configs=pulumi.get(__response__, 'docker_configs'), + effective_labels=pulumi.get(__response__, 'effective_labels'), + format=pulumi.get(__response__, 'format'), + id=pulumi.get(__response__, 'id'), + kms_key_name=pulumi.get(__response__, 'kms_key_name'), + labels=pulumi.get(__response__, 'labels'), + location=pulumi.get(__response__, 'location'), + maven_configs=pulumi.get(__response__, 'maven_configs'), + mode=pulumi.get(__response__, 'mode'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + pulumi_labels=pulumi.get(__response__, 'pulumi_labels'), + remote_repository_configs=pulumi.get(__response__, 'remote_repository_configs'), + repository_id=pulumi.get(__response__, 'repository_id'), + update_time=pulumi.get(__response__, 'update_time'), + virtual_repository_configs=pulumi.get(__response__, 'virtual_repository_configs'))) diff --git a/sdk/python/pulumi_gcp/artifactregistry/get_repository_iam_policy.py b/sdk/python/pulumi_gcp/artifactregistry/get_repository_iam_policy.py index 88d209c1cd..c193d345c1 100644 --- a/sdk/python/pulumi_gcp/artifactregistry/get_repository_iam_policy.py +++ b/sdk/python/pulumi_gcp/artifactregistry/get_repository_iam_policy.py @@ -142,9 +142,6 @@ def get_repository_iam_policy(location: Optional[str] = None, policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project'), repository=pulumi.get(__ret__, 'repository')) - - -@_utilities.lift_output_func(get_repository_iam_policy) def get_repository_iam_policy_output(location: Optional[pulumi.Input[Optional[str]]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, repository: Optional[pulumi.Input[str]] = None, @@ -172,4 +169,16 @@ def get_repository_iam_policy_output(location: Optional[pulumi.Input[Optional[st If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. :param str repository: Used to find the parent resource to bind the IAM policy to """ - ... + __args__ = dict() + __args__['location'] = location + __args__['project'] = project + __args__['repository'] = repository + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:artifactregistry/getRepositoryIamPolicy:getRepositoryIamPolicy', __args__, opts=opts, typ=GetRepositoryIamPolicyResult) + return __ret__.apply(lambda __response__: GetRepositoryIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'), + repository=pulumi.get(__response__, 'repository'))) diff --git a/sdk/python/pulumi_gcp/backupdisasterrecovery/get_management_server.py b/sdk/python/pulumi_gcp/backupdisasterrecovery/get_management_server.py index 34dce468e1..c1b7ac407c 100644 --- a/sdk/python/pulumi_gcp/backupdisasterrecovery/get_management_server.py +++ b/sdk/python/pulumi_gcp/backupdisasterrecovery/get_management_server.py @@ -139,9 +139,6 @@ def get_management_server(location: Optional[str] = None, oauth2_client_id=pulumi.get(__ret__, 'oauth2_client_id'), project=pulumi.get(__ret__, 'project'), type=pulumi.get(__ret__, 'type')) - - -@_utilities.lift_output_func(get_management_server) def get_management_server_output(location: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetManagementServerResult]: """ @@ -154,4 +151,16 @@ def get_management_server_output(location: Optional[pulumi.Input[str]] = None, my_backup_dr_management_server = gcp.backupdisasterrecovery.get_management_server(location="us-central1") ``` """ - ... + __args__ = dict() + __args__['location'] = location + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:backupdisasterrecovery/getManagementServer:getManagementServer', __args__, opts=opts, typ=GetManagementServerResult) + return __ret__.apply(lambda __response__: GetManagementServerResult( + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + management_uris=pulumi.get(__response__, 'management_uris'), + name=pulumi.get(__response__, 'name'), + networks=pulumi.get(__response__, 'networks'), + oauth2_client_id=pulumi.get(__response__, 'oauth2_client_id'), + project=pulumi.get(__response__, 'project'), + type=pulumi.get(__response__, 'type'))) diff --git a/sdk/python/pulumi_gcp/beyondcorp/get_app_connection.py b/sdk/python/pulumi_gcp/beyondcorp/get_app_connection.py index 11ba361576..5b42aa8dd9 100644 --- a/sdk/python/pulumi_gcp/beyondcorp/get_app_connection.py +++ b/sdk/python/pulumi_gcp/beyondcorp/get_app_connection.py @@ -194,9 +194,6 @@ def get_app_connection(name: Optional[str] = None, pulumi_labels=pulumi.get(__ret__, 'pulumi_labels'), region=pulumi.get(__ret__, 'region'), type=pulumi.get(__ret__, 'type')) - - -@_utilities.lift_output_func(get_app_connection) def get_app_connection_output(name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, region: Optional[pulumi.Input[Optional[str]]] = None, @@ -222,4 +219,22 @@ def get_app_connection_output(name: Optional[pulumi.Input[str]] = None, :param str region: The region in which the resource belongs. If it is not provided, the provider region is used. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + __args__['region'] = region + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:beyondcorp/getAppConnection:getAppConnection', __args__, opts=opts, typ=GetAppConnectionResult) + return __ret__.apply(lambda __response__: GetAppConnectionResult( + application_endpoints=pulumi.get(__response__, 'application_endpoints'), + connectors=pulumi.get(__response__, 'connectors'), + display_name=pulumi.get(__response__, 'display_name'), + effective_labels=pulumi.get(__response__, 'effective_labels'), + gateways=pulumi.get(__response__, 'gateways'), + id=pulumi.get(__response__, 'id'), + labels=pulumi.get(__response__, 'labels'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + pulumi_labels=pulumi.get(__response__, 'pulumi_labels'), + region=pulumi.get(__response__, 'region'), + type=pulumi.get(__response__, 'type'))) diff --git a/sdk/python/pulumi_gcp/beyondcorp/get_app_connector.py b/sdk/python/pulumi_gcp/beyondcorp/get_app_connector.py index a59ed8418a..d99da69aba 100644 --- a/sdk/python/pulumi_gcp/beyondcorp/get_app_connector.py +++ b/sdk/python/pulumi_gcp/beyondcorp/get_app_connector.py @@ -174,9 +174,6 @@ def get_app_connector(name: Optional[str] = None, pulumi_labels=pulumi.get(__ret__, 'pulumi_labels'), region=pulumi.get(__ret__, 'region'), state=pulumi.get(__ret__, 'state')) - - -@_utilities.lift_output_func(get_app_connector) def get_app_connector_output(name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, region: Optional[pulumi.Input[Optional[str]]] = None, @@ -202,4 +199,20 @@ def get_app_connector_output(name: Optional[pulumi.Input[str]] = None, :param str region: The region in which the resource belongs. If it is not provided, the provider region is used. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + __args__['region'] = region + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:beyondcorp/getAppConnector:getAppConnector', __args__, opts=opts, typ=GetAppConnectorResult) + return __ret__.apply(lambda __response__: GetAppConnectorResult( + display_name=pulumi.get(__response__, 'display_name'), + effective_labels=pulumi.get(__response__, 'effective_labels'), + id=pulumi.get(__response__, 'id'), + labels=pulumi.get(__response__, 'labels'), + name=pulumi.get(__response__, 'name'), + principal_infos=pulumi.get(__response__, 'principal_infos'), + project=pulumi.get(__response__, 'project'), + pulumi_labels=pulumi.get(__response__, 'pulumi_labels'), + region=pulumi.get(__response__, 'region'), + state=pulumi.get(__response__, 'state'))) diff --git a/sdk/python/pulumi_gcp/beyondcorp/get_app_gateway.py b/sdk/python/pulumi_gcp/beyondcorp/get_app_gateway.py index 966056fe23..6ffa5bd793 100644 --- a/sdk/python/pulumi_gcp/beyondcorp/get_app_gateway.py +++ b/sdk/python/pulumi_gcp/beyondcorp/get_app_gateway.py @@ -204,9 +204,6 @@ def get_app_gateway(name: Optional[str] = None, state=pulumi.get(__ret__, 'state'), type=pulumi.get(__ret__, 'type'), uri=pulumi.get(__ret__, 'uri')) - - -@_utilities.lift_output_func(get_app_gateway) def get_app_gateway_output(name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, region: Optional[pulumi.Input[Optional[str]]] = None, @@ -232,4 +229,23 @@ def get_app_gateway_output(name: Optional[pulumi.Input[str]] = None, :param str region: The region in which the resource belongs. If it is not provided, the provider region is used. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + __args__['region'] = region + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:beyondcorp/getAppGateway:getAppGateway', __args__, opts=opts, typ=GetAppGatewayResult) + return __ret__.apply(lambda __response__: GetAppGatewayResult( + allocated_connections=pulumi.get(__response__, 'allocated_connections'), + display_name=pulumi.get(__response__, 'display_name'), + effective_labels=pulumi.get(__response__, 'effective_labels'), + host_type=pulumi.get(__response__, 'host_type'), + id=pulumi.get(__response__, 'id'), + labels=pulumi.get(__response__, 'labels'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + pulumi_labels=pulumi.get(__response__, 'pulumi_labels'), + region=pulumi.get(__response__, 'region'), + state=pulumi.get(__response__, 'state'), + type=pulumi.get(__response__, 'type'), + uri=pulumi.get(__response__, 'uri'))) diff --git a/sdk/python/pulumi_gcp/biglake/table.py b/sdk/python/pulumi_gcp/biglake/table.py index fe6ba5c2f7..ee5d2157ac 100644 --- a/sdk/python/pulumi_gcp/biglake/table.py +++ b/sdk/python/pulumi_gcp/biglake/table.py @@ -369,13 +369,13 @@ def __init__(__self__, "output_format": "org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat", }, "parameters": { - "spark_sql_create_version": "3.1.3", - "spark_sql_sources_schema_num_parts": "1", - "transient_last_ddl_time": "1680894197", - "spark_sql_partition_provider": "catalog", + "spark.sql.create.version": "3.1.3", + "spark.sql.sources.schema.numParts": "1", + "transient_lastDdlTime": "1680894197", + "spark.sql.partitionProvider": "catalog", "owner": "John Doe", - "spark_sql_sources_schema_part_0": "{\\"type\\":\\"struct\\",\\"fields\\":[{\\"name\\":\\"id\\",\\"type\\":\\"integer\\",\\"nullable\\":true,\\"metadata\\":{}},{\\"name\\":\\"name\\",\\"type\\":\\"string\\",\\"nullable\\":true,\\"metadata\\":{}},{\\"name\\":\\"age\\",\\"type\\":\\"integer\\",\\"nullable\\":true,\\"metadata\\":{}}]}", - "spark_sql_sources_provider": "iceberg", + "spark.sql.sources.schema.part.0": "{\\"type\\":\\"struct\\",\\"fields\\":[{\\"name\\":\\"id\\",\\"type\\":\\"integer\\",\\"nullable\\":true,\\"metadata\\":{}},{\\"name\\":\\"name\\",\\"type\\":\\"string\\",\\"nullable\\":true,\\"metadata\\":{}},{\\"name\\":\\"age\\",\\"type\\":\\"integer\\",\\"nullable\\":true,\\"metadata\\":{}}]}", + "spark.sql.sources.provider": "iceberg", "provider": "iceberg", }, }) @@ -475,13 +475,13 @@ def __init__(__self__, "output_format": "org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat", }, "parameters": { - "spark_sql_create_version": "3.1.3", - "spark_sql_sources_schema_num_parts": "1", - "transient_last_ddl_time": "1680894197", - "spark_sql_partition_provider": "catalog", + "spark.sql.create.version": "3.1.3", + "spark.sql.sources.schema.numParts": "1", + "transient_lastDdlTime": "1680894197", + "spark.sql.partitionProvider": "catalog", "owner": "John Doe", - "spark_sql_sources_schema_part_0": "{\\"type\\":\\"struct\\",\\"fields\\":[{\\"name\\":\\"id\\",\\"type\\":\\"integer\\",\\"nullable\\":true,\\"metadata\\":{}},{\\"name\\":\\"name\\",\\"type\\":\\"string\\",\\"nullable\\":true,\\"metadata\\":{}},{\\"name\\":\\"age\\",\\"type\\":\\"integer\\",\\"nullable\\":true,\\"metadata\\":{}}]}", - "spark_sql_sources_provider": "iceberg", + "spark.sql.sources.schema.part.0": "{\\"type\\":\\"struct\\",\\"fields\\":[{\\"name\\":\\"id\\",\\"type\\":\\"integer\\",\\"nullable\\":true,\\"metadata\\":{}},{\\"name\\":\\"name\\",\\"type\\":\\"string\\",\\"nullable\\":true,\\"metadata\\":{}},{\\"name\\":\\"age\\",\\"type\\":\\"integer\\",\\"nullable\\":true,\\"metadata\\":{}}]}", + "spark.sql.sources.provider": "iceberg", "provider": "iceberg", }, }) diff --git a/sdk/python/pulumi_gcp/bigquery/connection.py b/sdk/python/pulumi_gcp/bigquery/connection.py index ea92d306fd..814df8d8ef 100644 --- a/sdk/python/pulumi_gcp/bigquery/connection.py +++ b/sdk/python/pulumi_gcp/bigquery/connection.py @@ -708,7 +708,7 @@ def __init__(__self__, cluster_config={ "software_config": { "override_properties": { - "dataproc_dataproc_allow_zero_workers": "true", + "dataproc:dataproc.allow.zero.workers": "true", }, }, "master_config": { @@ -1014,7 +1014,7 @@ def __init__(__self__, cluster_config={ "software_config": { "override_properties": { - "dataproc_dataproc_allow_zero_workers": "true", + "dataproc:dataproc.allow.zero.workers": "true", }, }, "master_config": { diff --git a/sdk/python/pulumi_gcp/bigquery/dataset.py b/sdk/python/pulumi_gcp/bigquery/dataset.py index e7febf7c0d..b66b713a3c 100644 --- a/sdk/python/pulumi_gcp/bigquery/dataset.py +++ b/sdk/python/pulumi_gcp/bigquery/dataset.py @@ -1081,7 +1081,7 @@ def __init__(__self__, "name": "value", "argument_kind": "FIXED_TYPE", "data_type": json.dumps({ - "type_kind": "INT64", + "typeKind": "INT64", }), }], return_table_type=json.dumps({ @@ -1366,7 +1366,7 @@ def __init__(__self__, "name": "value", "argument_kind": "FIXED_TYPE", "data_type": json.dumps({ - "type_kind": "INT64", + "typeKind": "INT64", }), }], return_table_type=json.dumps({ diff --git a/sdk/python/pulumi_gcp/bigquery/dataset_access.py b/sdk/python/pulumi_gcp/bigquery/dataset_access.py index e5ed6cad62..9e23c793cf 100644 --- a/sdk/python/pulumi_gcp/bigquery/dataset_access.py +++ b/sdk/python/pulumi_gcp/bigquery/dataset_access.py @@ -614,7 +614,7 @@ def __init__(__self__, "name": "value", "argument_kind": "FIXED_TYPE", "data_type": json.dumps({ - "type_kind": "INT64", + "typeKind": "INT64", }), }], return_table_type=json.dumps({ @@ -768,7 +768,7 @@ def __init__(__self__, "name": "value", "argument_kind": "FIXED_TYPE", "data_type": json.dumps({ - "type_kind": "INT64", + "typeKind": "INT64", }), }], return_table_type=json.dumps({ diff --git a/sdk/python/pulumi_gcp/bigquery/get_connection_iam_policy.py b/sdk/python/pulumi_gcp/bigquery/get_connection_iam_policy.py index 4981a29543..7419f5da6a 100644 --- a/sdk/python/pulumi_gcp/bigquery/get_connection_iam_policy.py +++ b/sdk/python/pulumi_gcp/bigquery/get_connection_iam_policy.py @@ -148,9 +148,6 @@ def get_connection_iam_policy(connection_id: Optional[str] = None, location=pulumi.get(__ret__, 'location'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_connection_iam_policy) def get_connection_iam_policy_output(connection_id: Optional[pulumi.Input[str]] = None, location: Optional[pulumi.Input[Optional[str]]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -184,4 +181,16 @@ def get_connection_iam_policy_output(connection_id: Optional[pulumi.Input[str]] :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['connectionId'] = connection_id + __args__['location'] = location + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:bigquery/getConnectionIamPolicy:getConnectionIamPolicy', __args__, opts=opts, typ=GetConnectionIamPolicyResult) + return __ret__.apply(lambda __response__: GetConnectionIamPolicyResult( + connection_id=pulumi.get(__response__, 'connection_id'), + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/bigquery/get_dataset.py b/sdk/python/pulumi_gcp/bigquery/get_dataset.py index ab0e9e0688..a2c6976ef8 100644 --- a/sdk/python/pulumi_gcp/bigquery/get_dataset.py +++ b/sdk/python/pulumi_gcp/bigquery/get_dataset.py @@ -311,9 +311,6 @@ def get_dataset(dataset_id: Optional[str] = None, resource_tags=pulumi.get(__ret__, 'resource_tags'), self_link=pulumi.get(__ret__, 'self_link'), storage_billing_model=pulumi.get(__ret__, 'storage_billing_model')) - - -@_utilities.lift_output_func(get_dataset) def get_dataset_output(dataset_id: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetDatasetResult]: @@ -337,4 +334,33 @@ def get_dataset_output(dataset_id: Optional[pulumi.Input[str]] = None, :param str project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['datasetId'] = dataset_id + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:bigquery/getDataset:getDataset', __args__, opts=opts, typ=GetDatasetResult) + return __ret__.apply(lambda __response__: GetDatasetResult( + accesses=pulumi.get(__response__, 'accesses'), + creation_time=pulumi.get(__response__, 'creation_time'), + dataset_id=pulumi.get(__response__, 'dataset_id'), + default_collation=pulumi.get(__response__, 'default_collation'), + default_encryption_configurations=pulumi.get(__response__, 'default_encryption_configurations'), + default_partition_expiration_ms=pulumi.get(__response__, 'default_partition_expiration_ms'), + default_table_expiration_ms=pulumi.get(__response__, 'default_table_expiration_ms'), + delete_contents_on_destroy=pulumi.get(__response__, 'delete_contents_on_destroy'), + description=pulumi.get(__response__, 'description'), + effective_labels=pulumi.get(__response__, 'effective_labels'), + etag=pulumi.get(__response__, 'etag'), + external_dataset_references=pulumi.get(__response__, 'external_dataset_references'), + friendly_name=pulumi.get(__response__, 'friendly_name'), + id=pulumi.get(__response__, 'id'), + is_case_insensitive=pulumi.get(__response__, 'is_case_insensitive'), + labels=pulumi.get(__response__, 'labels'), + last_modified_time=pulumi.get(__response__, 'last_modified_time'), + location=pulumi.get(__response__, 'location'), + max_time_travel_hours=pulumi.get(__response__, 'max_time_travel_hours'), + project=pulumi.get(__response__, 'project'), + pulumi_labels=pulumi.get(__response__, 'pulumi_labels'), + resource_tags=pulumi.get(__response__, 'resource_tags'), + self_link=pulumi.get(__response__, 'self_link'), + storage_billing_model=pulumi.get(__response__, 'storage_billing_model'))) diff --git a/sdk/python/pulumi_gcp/bigquery/get_dataset_iam_policy.py b/sdk/python/pulumi_gcp/bigquery/get_dataset_iam_policy.py index 92a94647a0..ddd1e50796 100644 --- a/sdk/python/pulumi_gcp/bigquery/get_dataset_iam_policy.py +++ b/sdk/python/pulumi_gcp/bigquery/get_dataset_iam_policy.py @@ -123,9 +123,6 @@ def get_dataset_iam_policy(dataset_id: Optional[str] = None, id=pulumi.get(__ret__, 'id'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_dataset_iam_policy) def get_dataset_iam_policy_output(dataset_id: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetDatasetIamPolicyResult]: @@ -146,4 +143,14 @@ def get_dataset_iam_policy_output(dataset_id: Optional[pulumi.Input[str]] = None :param str project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['datasetId'] = dataset_id + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:bigquery/getDatasetIamPolicy:getDatasetIamPolicy', __args__, opts=opts, typ=GetDatasetIamPolicyResult) + return __ret__.apply(lambda __response__: GetDatasetIamPolicyResult( + dataset_id=pulumi.get(__response__, 'dataset_id'), + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/bigquery/get_default_service_account.py b/sdk/python/pulumi_gcp/bigquery/get_default_service_account.py index 9276771b31..280951f61f 100644 --- a/sdk/python/pulumi_gcp/bigquery/get_default_service_account.py +++ b/sdk/python/pulumi_gcp/bigquery/get_default_service_account.py @@ -122,9 +122,6 @@ def get_default_service_account(project: Optional[str] = None, id=pulumi.get(__ret__, 'id'), member=pulumi.get(__ret__, 'member'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_default_service_account) def get_default_service_account_output(project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetDefaultServiceAccountResult]: """ @@ -154,4 +151,12 @@ def get_default_service_account_output(project: Optional[pulumi.Input[Optional[s :param str project: The project the unique service account was created for. If it is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:bigquery/getDefaultServiceAccount:getDefaultServiceAccount', __args__, opts=opts, typ=GetDefaultServiceAccountResult) + return __ret__.apply(lambda __response__: GetDefaultServiceAccountResult( + email=pulumi.get(__response__, 'email'), + id=pulumi.get(__response__, 'id'), + member=pulumi.get(__response__, 'member'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/bigquery/get_table_iam_policy.py b/sdk/python/pulumi_gcp/bigquery/get_table_iam_policy.py index 3ed17ddb8b..785ce048e4 100644 --- a/sdk/python/pulumi_gcp/bigquery/get_table_iam_policy.py +++ b/sdk/python/pulumi_gcp/bigquery/get_table_iam_policy.py @@ -137,9 +137,6 @@ def get_table_iam_policy(dataset_id: Optional[str] = None, policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project'), table_id=pulumi.get(__ret__, 'table_id')) - - -@_utilities.lift_output_func(get_table_iam_policy) def get_table_iam_policy_output(dataset_id: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, table_id: Optional[pulumi.Input[str]] = None, @@ -162,4 +159,16 @@ def get_table_iam_policy_output(dataset_id: Optional[pulumi.Input[str]] = None, :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['datasetId'] = dataset_id + __args__['project'] = project + __args__['tableId'] = table_id + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:bigquery/getTableIamPolicy:getTableIamPolicy', __args__, opts=opts, typ=GetTableIamPolicyResult) + return __ret__.apply(lambda __response__: GetTableIamPolicyResult( + dataset_id=pulumi.get(__response__, 'dataset_id'), + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'), + table_id=pulumi.get(__response__, 'table_id'))) diff --git a/sdk/python/pulumi_gcp/bigquery/get_tables.py b/sdk/python/pulumi_gcp/bigquery/get_tables.py index 38e1485ae3..19697a13f8 100644 --- a/sdk/python/pulumi_gcp/bigquery/get_tables.py +++ b/sdk/python/pulumi_gcp/bigquery/get_tables.py @@ -114,9 +114,6 @@ def get_tables(dataset_id: Optional[str] = None, id=pulumi.get(__ret__, 'id'), project=pulumi.get(__ret__, 'project'), tables=pulumi.get(__ret__, 'tables')) - - -@_utilities.lift_output_func(get_tables) def get_tables_output(dataset_id: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetTablesResult]: @@ -140,4 +137,13 @@ def get_tables_output(dataset_id: Optional[pulumi.Input[str]] = None, :param str project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['datasetId'] = dataset_id + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:bigquery/getTables:getTables', __args__, opts=opts, typ=GetTablesResult) + return __ret__.apply(lambda __response__: GetTablesResult( + dataset_id=pulumi.get(__response__, 'dataset_id'), + id=pulumi.get(__response__, 'id'), + project=pulumi.get(__response__, 'project'), + tables=pulumi.get(__response__, 'tables'))) diff --git a/sdk/python/pulumi_gcp/bigquery/routine.py b/sdk/python/pulumi_gcp/bigquery/routine.py index a46e6cec5a..4048799c5e 100644 --- a/sdk/python/pulumi_gcp/bigquery/routine.py +++ b/sdk/python/pulumi_gcp/bigquery/routine.py @@ -731,7 +731,7 @@ def __init__(__self__, "name": "value", "argument_kind": "FIXED_TYPE", "data_type": json.dumps({ - "type_kind": "INT64", + "typeKind": "INT64", }), }], return_table_type=json.dumps({ @@ -834,8 +834,8 @@ def __init__(__self__, "main_class": "com.google.test.jar.MainClass", "jar_uris": ["gs://test-bucket/uberjar_spark_spark3.jar"], "properties": { - "spark_dataproc_scaling_version": "2", - "spark_reducer_fetch_migrated_shuffle_enabled": "true", + "spark.dataproc.scaling.version": "2", + "spark.reducer.fetchMigratedShuffle.enabled": "true", }, }) ``` @@ -1026,7 +1026,7 @@ def __init__(__self__, "name": "value", "argument_kind": "FIXED_TYPE", "data_type": json.dumps({ - "type_kind": "INT64", + "typeKind": "INT64", }), }], return_table_type=json.dumps({ @@ -1129,8 +1129,8 @@ def __init__(__self__, "main_class": "com.google.test.jar.MainClass", "jar_uris": ["gs://test-bucket/uberjar_spark_spark3.jar"], "properties": { - "spark_dataproc_scaling_version": "2", - "spark_reducer_fetch_migrated_shuffle_enabled": "true", + "spark.dataproc.scaling.version": "2", + "spark.reducer.fetchMigratedShuffle.enabled": "true", }, }) ``` diff --git a/sdk/python/pulumi_gcp/bigqueryanalyticshub/get_data_exchange_iam_policy.py b/sdk/python/pulumi_gcp/bigqueryanalyticshub/get_data_exchange_iam_policy.py index cb895f38f0..f01c22cb8d 100644 --- a/sdk/python/pulumi_gcp/bigqueryanalyticshub/get_data_exchange_iam_policy.py +++ b/sdk/python/pulumi_gcp/bigqueryanalyticshub/get_data_exchange_iam_policy.py @@ -142,9 +142,6 @@ def get_data_exchange_iam_policy(data_exchange_id: Optional[str] = None, location=pulumi.get(__ret__, 'location'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_data_exchange_iam_policy) def get_data_exchange_iam_policy_output(data_exchange_id: Optional[pulumi.Input[str]] = None, location: Optional[pulumi.Input[Optional[str]]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -172,4 +169,16 @@ def get_data_exchange_iam_policy_output(data_exchange_id: Optional[pulumi.Input[ :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['dataExchangeId'] = data_exchange_id + __args__['location'] = location + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:bigqueryanalyticshub/getDataExchangeIamPolicy:getDataExchangeIamPolicy', __args__, opts=opts, typ=GetDataExchangeIamPolicyResult) + return __ret__.apply(lambda __response__: GetDataExchangeIamPolicyResult( + data_exchange_id=pulumi.get(__response__, 'data_exchange_id'), + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/bigqueryanalyticshub/get_listing_iam_policy.py b/sdk/python/pulumi_gcp/bigqueryanalyticshub/get_listing_iam_policy.py index 2652ec5d22..915a21534f 100644 --- a/sdk/python/pulumi_gcp/bigqueryanalyticshub/get_listing_iam_policy.py +++ b/sdk/python/pulumi_gcp/bigqueryanalyticshub/get_listing_iam_policy.py @@ -156,9 +156,6 @@ def get_listing_iam_policy(data_exchange_id: Optional[str] = None, location=pulumi.get(__ret__, 'location'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_listing_iam_policy) def get_listing_iam_policy_output(data_exchange_id: Optional[pulumi.Input[str]] = None, listing_id: Optional[pulumi.Input[str]] = None, location: Optional[pulumi.Input[Optional[str]]] = None, @@ -189,4 +186,18 @@ def get_listing_iam_policy_output(data_exchange_id: Optional[pulumi.Input[str]] :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['dataExchangeId'] = data_exchange_id + __args__['listingId'] = listing_id + __args__['location'] = location + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:bigqueryanalyticshub/getListingIamPolicy:getListingIamPolicy', __args__, opts=opts, typ=GetListingIamPolicyResult) + return __ret__.apply(lambda __response__: GetListingIamPolicyResult( + data_exchange_id=pulumi.get(__response__, 'data_exchange_id'), + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + listing_id=pulumi.get(__response__, 'listing_id'), + location=pulumi.get(__response__, 'location'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/bigquerydatapolicy/get_iam_policy.py b/sdk/python/pulumi_gcp/bigquerydatapolicy/get_iam_policy.py index 71a0c88e9e..e16a93b43e 100644 --- a/sdk/python/pulumi_gcp/bigquerydatapolicy/get_iam_policy.py +++ b/sdk/python/pulumi_gcp/bigquerydatapolicy/get_iam_policy.py @@ -141,9 +141,6 @@ def get_iam_policy(data_policy_id: Optional[str] = None, location=pulumi.get(__ret__, 'location'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_iam_policy) def get_iam_policy_output(data_policy_id: Optional[pulumi.Input[str]] = None, location: Optional[pulumi.Input[Optional[str]]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -170,4 +167,16 @@ def get_iam_policy_output(data_policy_id: Optional[pulumi.Input[str]] = None, :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['dataPolicyId'] = data_policy_id + __args__['location'] = location + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:bigquerydatapolicy/getIamPolicy:getIamPolicy', __args__, opts=opts, typ=GetIamPolicyResult) + return __ret__.apply(lambda __response__: GetIamPolicyResult( + data_policy_id=pulumi.get(__response__, 'data_policy_id'), + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/bigtable/get_instance_iam_policy.py b/sdk/python/pulumi_gcp/bigtable/get_instance_iam_policy.py index 7564a3e393..1520545acf 100644 --- a/sdk/python/pulumi_gcp/bigtable/get_instance_iam_policy.py +++ b/sdk/python/pulumi_gcp/bigtable/get_instance_iam_policy.py @@ -121,9 +121,6 @@ def get_instance_iam_policy(instance: Optional[str] = None, instance=pulumi.get(__ret__, 'instance'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_instance_iam_policy) def get_instance_iam_policy_output(instance: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetInstanceIamPolicyResult]: @@ -142,4 +139,14 @@ def get_instance_iam_policy_output(instance: Optional[pulumi.Input[str]] = None, :param str instance: The name or relative resource id of the instance to manage IAM policies for. """ - ... + __args__ = dict() + __args__['instance'] = instance + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:bigtable/getInstanceIamPolicy:getInstanceIamPolicy', __args__, opts=opts, typ=GetInstanceIamPolicyResult) + return __ret__.apply(lambda __response__: GetInstanceIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + instance=pulumi.get(__response__, 'instance'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/bigtable/get_table_iam_policy.py b/sdk/python/pulumi_gcp/bigtable/get_table_iam_policy.py index 9a2e0b2605..516ef4b063 100644 --- a/sdk/python/pulumi_gcp/bigtable/get_table_iam_policy.py +++ b/sdk/python/pulumi_gcp/bigtable/get_table_iam_policy.py @@ -135,9 +135,6 @@ def get_table_iam_policy(instance: Optional[str] = None, policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project'), table=pulumi.get(__ret__, 'table')) - - -@_utilities.lift_output_func(get_table_iam_policy) def get_table_iam_policy_output(instance: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, table: Optional[pulumi.Input[str]] = None, @@ -159,4 +156,16 @@ def get_table_iam_policy_output(instance: Optional[pulumi.Input[str]] = None, :param str instance: The name or relative resource id of the instance that owns the table. :param str table: The name or relative resource id of the table to manage IAM policies for. """ - ... + __args__ = dict() + __args__['instance'] = instance + __args__['project'] = project + __args__['table'] = table + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:bigtable/getTableIamPolicy:getTableIamPolicy', __args__, opts=opts, typ=GetTableIamPolicyResult) + return __ret__.apply(lambda __response__: GetTableIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + instance=pulumi.get(__response__, 'instance'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'), + table=pulumi.get(__response__, 'table'))) diff --git a/sdk/python/pulumi_gcp/billing/get_account_iam_policy.py b/sdk/python/pulumi_gcp/billing/get_account_iam_policy.py index 2ad3f02588..a07ecf2d4d 100644 --- a/sdk/python/pulumi_gcp/billing/get_account_iam_policy.py +++ b/sdk/python/pulumi_gcp/billing/get_account_iam_policy.py @@ -109,9 +109,6 @@ def get_account_iam_policy(billing_account_id: Optional[str] = None, etag=pulumi.get(__ret__, 'etag'), id=pulumi.get(__ret__, 'id'), policy_data=pulumi.get(__ret__, 'policy_data')) - - -@_utilities.lift_output_func(get_account_iam_policy) def get_account_iam_policy_output(billing_account_id: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetAccountIamPolicyResult]: """ @@ -129,4 +126,12 @@ def get_account_iam_policy_output(billing_account_id: Optional[pulumi.Input[str] :param str billing_account_id: The billing account id. """ - ... + __args__ = dict() + __args__['billingAccountId'] = billing_account_id + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:billing/getAccountIamPolicy:getAccountIamPolicy', __args__, opts=opts, typ=GetAccountIamPolicyResult) + return __ret__.apply(lambda __response__: GetAccountIamPolicyResult( + billing_account_id=pulumi.get(__response__, 'billing_account_id'), + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'))) diff --git a/sdk/python/pulumi_gcp/binaryauthorization/get_attestor_iam_policy.py b/sdk/python/pulumi_gcp/binaryauthorization/get_attestor_iam_policy.py index 6e3c8c0152..6c946abaea 100644 --- a/sdk/python/pulumi_gcp/binaryauthorization/get_attestor_iam_policy.py +++ b/sdk/python/pulumi_gcp/binaryauthorization/get_attestor_iam_policy.py @@ -125,9 +125,6 @@ def get_attestor_iam_policy(attestor: Optional[str] = None, id=pulumi.get(__ret__, 'id'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_attestor_iam_policy) def get_attestor_iam_policy_output(attestor: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetAttestorIamPolicyResult]: @@ -149,4 +146,14 @@ def get_attestor_iam_policy_output(attestor: Optional[pulumi.Input[str]] = None, :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['attestor'] = attestor + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:binaryauthorization/getAttestorIamPolicy:getAttestorIamPolicy', __args__, opts=opts, typ=GetAttestorIamPolicyResult) + return __ret__.apply(lambda __response__: GetAttestorIamPolicyResult( + attestor=pulumi.get(__response__, 'attestor'), + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/certificateauthority/get_authority.py b/sdk/python/pulumi_gcp/certificateauthority/get_authority.py index 01dd0ae184..f1dc5ef916 100644 --- a/sdk/python/pulumi_gcp/certificateauthority/get_authority.py +++ b/sdk/python/pulumi_gcp/certificateauthority/get_authority.py @@ -342,9 +342,6 @@ def get_authority(certificate_authority_id: Optional[str] = None, subordinate_configs=pulumi.get(__ret__, 'subordinate_configs'), type=pulumi.get(__ret__, 'type'), update_time=pulumi.get(__ret__, 'update_time')) - - -@_utilities.lift_output_func(get_authority) def get_authority_output(certificate_authority_id: Optional[pulumi.Input[Optional[str]]] = None, location: Optional[pulumi.Input[Optional[str]]] = None, pool: Optional[pulumi.Input[Optional[str]]] = None, @@ -374,4 +371,37 @@ def get_authority_output(certificate_authority_id: Optional[pulumi.Input[Optiona :param str project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['certificateAuthorityId'] = certificate_authority_id + __args__['location'] = location + __args__['pool'] = pool + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:certificateauthority/getAuthority:getAuthority', __args__, opts=opts, typ=GetAuthorityResult) + return __ret__.apply(lambda __response__: GetAuthorityResult( + access_urls=pulumi.get(__response__, 'access_urls'), + certificate_authority_id=pulumi.get(__response__, 'certificate_authority_id'), + configs=pulumi.get(__response__, 'configs'), + create_time=pulumi.get(__response__, 'create_time'), + deletion_protection=pulumi.get(__response__, 'deletion_protection'), + desired_state=pulumi.get(__response__, 'desired_state'), + effective_labels=pulumi.get(__response__, 'effective_labels'), + gcs_bucket=pulumi.get(__response__, 'gcs_bucket'), + id=pulumi.get(__response__, 'id'), + ignore_active_certificates_on_deletion=pulumi.get(__response__, 'ignore_active_certificates_on_deletion'), + key_specs=pulumi.get(__response__, 'key_specs'), + labels=pulumi.get(__response__, 'labels'), + lifetime=pulumi.get(__response__, 'lifetime'), + location=pulumi.get(__response__, 'location'), + name=pulumi.get(__response__, 'name'), + pem_ca_certificate=pulumi.get(__response__, 'pem_ca_certificate'), + pem_ca_certificates=pulumi.get(__response__, 'pem_ca_certificates'), + pem_csr=pulumi.get(__response__, 'pem_csr'), + pool=pulumi.get(__response__, 'pool'), + project=pulumi.get(__response__, 'project'), + pulumi_labels=pulumi.get(__response__, 'pulumi_labels'), + skip_grace_period=pulumi.get(__response__, 'skip_grace_period'), + state=pulumi.get(__response__, 'state'), + subordinate_configs=pulumi.get(__response__, 'subordinate_configs'), + type=pulumi.get(__response__, 'type'), + update_time=pulumi.get(__response__, 'update_time'))) diff --git a/sdk/python/pulumi_gcp/certificateauthority/get_ca_pool_iam_policy.py b/sdk/python/pulumi_gcp/certificateauthority/get_ca_pool_iam_policy.py index 719bbede67..208fe81602 100644 --- a/sdk/python/pulumi_gcp/certificateauthority/get_ca_pool_iam_policy.py +++ b/sdk/python/pulumi_gcp/certificateauthority/get_ca_pool_iam_policy.py @@ -141,9 +141,6 @@ def get_ca_pool_iam_policy(ca_pool: Optional[str] = None, location=pulumi.get(__ret__, 'location'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_ca_pool_iam_policy) def get_ca_pool_iam_policy_output(ca_pool: Optional[pulumi.Input[str]] = None, location: Optional[pulumi.Input[Optional[str]]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -170,4 +167,16 @@ def get_ca_pool_iam_policy_output(ca_pool: Optional[pulumi.Input[str]] = None, :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['caPool'] = ca_pool + __args__['location'] = location + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:certificateauthority/getCaPoolIamPolicy:getCaPoolIamPolicy', __args__, opts=opts, typ=GetCaPoolIamPolicyResult) + return __ret__.apply(lambda __response__: GetCaPoolIamPolicyResult( + ca_pool=pulumi.get(__response__, 'ca_pool'), + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/certificateauthority/get_certificate_template_iam_policy.py b/sdk/python/pulumi_gcp/certificateauthority/get_certificate_template_iam_policy.py index 854dd23dd2..c9cb25092b 100644 --- a/sdk/python/pulumi_gcp/certificateauthority/get_certificate_template_iam_policy.py +++ b/sdk/python/pulumi_gcp/certificateauthority/get_certificate_template_iam_policy.py @@ -139,9 +139,6 @@ def get_certificate_template_iam_policy(certificate_template: Optional[str] = No location=pulumi.get(__ret__, 'location'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_certificate_template_iam_policy) def get_certificate_template_iam_policy_output(certificate_template: Optional[pulumi.Input[str]] = None, location: Optional[pulumi.Input[Optional[str]]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -166,4 +163,16 @@ def get_certificate_template_iam_policy_output(certificate_template: Optional[pu :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['certificateTemplate'] = certificate_template + __args__['location'] = location + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:certificateauthority/getCertificateTemplateIamPolicy:getCertificateTemplateIamPolicy', __args__, opts=opts, typ=GetCertificateTemplateIamPolicyResult) + return __ret__.apply(lambda __response__: GetCertificateTemplateIamPolicyResult( + certificate_template=pulumi.get(__response__, 'certificate_template'), + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/certificatemanager/get_certificate_map.py b/sdk/python/pulumi_gcp/certificatemanager/get_certificate_map.py index 1109e4cfda..37cbc50b8e 100644 --- a/sdk/python/pulumi_gcp/certificatemanager/get_certificate_map.py +++ b/sdk/python/pulumi_gcp/certificatemanager/get_certificate_map.py @@ -170,9 +170,6 @@ def get_certificate_map(name: Optional[str] = None, project=pulumi.get(__ret__, 'project'), pulumi_labels=pulumi.get(__ret__, 'pulumi_labels'), update_time=pulumi.get(__ret__, 'update_time')) - - -@_utilities.lift_output_func(get_certificate_map) def get_certificate_map_output(name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetCertificateMapResult]: @@ -195,4 +192,19 @@ def get_certificate_map_output(name: Optional[pulumi.Input[str]] = None, :param str project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:certificatemanager/getCertificateMap:getCertificateMap', __args__, opts=opts, typ=GetCertificateMapResult) + return __ret__.apply(lambda __response__: GetCertificateMapResult( + create_time=pulumi.get(__response__, 'create_time'), + description=pulumi.get(__response__, 'description'), + effective_labels=pulumi.get(__response__, 'effective_labels'), + gclb_targets=pulumi.get(__response__, 'gclb_targets'), + id=pulumi.get(__response__, 'id'), + labels=pulumi.get(__response__, 'labels'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + pulumi_labels=pulumi.get(__response__, 'pulumi_labels'), + update_time=pulumi.get(__response__, 'update_time'))) diff --git a/sdk/python/pulumi_gcp/certificatemanager/get_certificates.py b/sdk/python/pulumi_gcp/certificatemanager/get_certificates.py index 7c512dd447..0a8db32a9f 100644 --- a/sdk/python/pulumi_gcp/certificatemanager/get_certificates.py +++ b/sdk/python/pulumi_gcp/certificatemanager/get_certificates.py @@ -116,9 +116,6 @@ def get_certificates(filter: Optional[str] = None, filter=pulumi.get(__ret__, 'filter'), id=pulumi.get(__ret__, 'id'), region=pulumi.get(__ret__, 'region')) - - -@_utilities.lift_output_func(get_certificates) def get_certificates_output(filter: Optional[pulumi.Input[Optional[str]]] = None, region: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetCertificatesResult]: @@ -147,4 +144,13 @@ def get_certificates_output(filter: Optional[pulumi.Input[Optional[str]]] = None :param str filter: Filter expression to restrict the certificates returned. :param str region: The region in which the resource belongs. If it is not provided, `GLOBAL` is used. """ - ... + __args__ = dict() + __args__['filter'] = filter + __args__['region'] = region + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:certificatemanager/getCertificates:getCertificates', __args__, opts=opts, typ=GetCertificatesResult) + return __ret__.apply(lambda __response__: GetCertificatesResult( + certificates=pulumi.get(__response__, 'certificates'), + filter=pulumi.get(__response__, 'filter'), + id=pulumi.get(__response__, 'id'), + region=pulumi.get(__response__, 'region'))) diff --git a/sdk/python/pulumi_gcp/cloudasset/get_resources_search_all.py b/sdk/python/pulumi_gcp/cloudasset/get_resources_search_all.py index f0413def84..25721f5faf 100644 --- a/sdk/python/pulumi_gcp/cloudasset/get_resources_search_all.py +++ b/sdk/python/pulumi_gcp/cloudasset/get_resources_search_all.py @@ -145,9 +145,6 @@ def get_resources_search_all(asset_types: Optional[Sequence[str]] = None, query=pulumi.get(__ret__, 'query'), results=pulumi.get(__ret__, 'results'), scope=pulumi.get(__ret__, 'scope')) - - -@_utilities.lift_output_func(get_resources_search_all) def get_resources_search_all_output(asset_types: Optional[pulumi.Input[Optional[Sequence[str]]]] = None, query: Optional[pulumi.Input[Optional[str]]] = None, scope: Optional[pulumi.Input[str]] = None, @@ -191,4 +188,15 @@ def get_resources_search_all_output(asset_types: Optional[pulumi.Input[Optional[ :param str query: The query statement. See [how to construct a query](https://cloud.google.com/asset-inventory/docs/searching-resources#how_to_construct_a_query) for more information. If not specified or empty, it will search all the resources within the specified `scope` and `asset_types`. :param str scope: A scope can be a project, a folder, or an organization. The allowed value must be: organization number (such as "organizations/123"), folder number (such as "folders/1234"), project number (such as "projects/12345") or project id (such as "projects/abc") """ - ... + __args__ = dict() + __args__['assetTypes'] = asset_types + __args__['query'] = query + __args__['scope'] = scope + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:cloudasset/getResourcesSearchAll:getResourcesSearchAll', __args__, opts=opts, typ=GetResourcesSearchAllResult) + return __ret__.apply(lambda __response__: GetResourcesSearchAllResult( + asset_types=pulumi.get(__response__, 'asset_types'), + id=pulumi.get(__response__, 'id'), + query=pulumi.get(__response__, 'query'), + results=pulumi.get(__response__, 'results'), + scope=pulumi.get(__response__, 'scope'))) diff --git a/sdk/python/pulumi_gcp/cloudasset/get_search_all_resources.py b/sdk/python/pulumi_gcp/cloudasset/get_search_all_resources.py index 418e1dbe13..3a2973cb3a 100644 --- a/sdk/python/pulumi_gcp/cloudasset/get_search_all_resources.py +++ b/sdk/python/pulumi_gcp/cloudasset/get_search_all_resources.py @@ -149,9 +149,6 @@ def get_search_all_resources(asset_types: Optional[Sequence[str]] = None, query=pulumi.get(__ret__, 'query'), results=pulumi.get(__ret__, 'results'), scope=pulumi.get(__ret__, 'scope')) - - -@_utilities.lift_output_func(get_search_all_resources) def get_search_all_resources_output(asset_types: Optional[pulumi.Input[Optional[Sequence[str]]]] = None, query: Optional[pulumi.Input[Optional[str]]] = None, scope: Optional[pulumi.Input[str]] = None, @@ -199,4 +196,15 @@ def get_search_all_resources_output(asset_types: Optional[pulumi.Input[Optional[ :param str query: The query statement. See [how to construct a query](https://cloud.google.com/asset-inventory/docs/searching-resources#how_to_construct_a_query) for more information. If not specified or empty, it will search all the resources within the specified `scope` and `asset_types`. :param str scope: A scope can be a project, a folder, or an organization. The search is limited to the resources within the scope. The allowed value must be: organization number (such as "organizations/123"), folder number (such as "folders/1234"), project number (such as "projects/12345") or project id (such as "projects/abc") """ - ... + __args__ = dict() + __args__['assetTypes'] = asset_types + __args__['query'] = query + __args__['scope'] = scope + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:cloudasset/getSearchAllResources:getSearchAllResources', __args__, opts=opts, typ=GetSearchAllResourcesResult) + return __ret__.apply(lambda __response__: GetSearchAllResourcesResult( + asset_types=pulumi.get(__response__, 'asset_types'), + id=pulumi.get(__response__, 'id'), + query=pulumi.get(__response__, 'query'), + results=pulumi.get(__response__, 'results'), + scope=pulumi.get(__response__, 'scope'))) diff --git a/sdk/python/pulumi_gcp/cloudbuild/get_trigger.py b/sdk/python/pulumi_gcp/cloudbuild/get_trigger.py index 2cc5359820..7273f9549a 100644 --- a/sdk/python/pulumi_gcp/cloudbuild/get_trigger.py +++ b/sdk/python/pulumi_gcp/cloudbuild/get_trigger.py @@ -338,9 +338,6 @@ def get_trigger(location: Optional[str] = None, trigger_id=pulumi.get(__ret__, 'trigger_id'), trigger_templates=pulumi.get(__ret__, 'trigger_templates'), webhook_configs=pulumi.get(__ret__, 'webhook_configs')) - - -@_utilities.lift_output_func(get_trigger) def get_trigger_output(location: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, trigger_id: Optional[pulumi.Input[str]] = None, @@ -370,4 +367,36 @@ def get_trigger_output(location: Optional[pulumi.Input[str]] = None, :param str project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. :param str trigger_id: The unique identifier for the trigger.. """ - ... + __args__ = dict() + __args__['location'] = location + __args__['project'] = project + __args__['triggerId'] = trigger_id + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:cloudbuild/getTrigger:getTrigger', __args__, opts=opts, typ=GetTriggerResult) + return __ret__.apply(lambda __response__: GetTriggerResult( + approval_configs=pulumi.get(__response__, 'approval_configs'), + bitbucket_server_trigger_configs=pulumi.get(__response__, 'bitbucket_server_trigger_configs'), + builds=pulumi.get(__response__, 'builds'), + create_time=pulumi.get(__response__, 'create_time'), + description=pulumi.get(__response__, 'description'), + disabled=pulumi.get(__response__, 'disabled'), + filename=pulumi.get(__response__, 'filename'), + filter=pulumi.get(__response__, 'filter'), + git_file_sources=pulumi.get(__response__, 'git_file_sources'), + githubs=pulumi.get(__response__, 'githubs'), + id=pulumi.get(__response__, 'id'), + ignored_files=pulumi.get(__response__, 'ignored_files'), + include_build_logs=pulumi.get(__response__, 'include_build_logs'), + included_files=pulumi.get(__response__, 'included_files'), + location=pulumi.get(__response__, 'location'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + pubsub_configs=pulumi.get(__response__, 'pubsub_configs'), + repository_event_configs=pulumi.get(__response__, 'repository_event_configs'), + service_account=pulumi.get(__response__, 'service_account'), + source_to_builds=pulumi.get(__response__, 'source_to_builds'), + substitutions=pulumi.get(__response__, 'substitutions'), + tags=pulumi.get(__response__, 'tags'), + trigger_id=pulumi.get(__response__, 'trigger_id'), + trigger_templates=pulumi.get(__response__, 'trigger_templates'), + webhook_configs=pulumi.get(__response__, 'webhook_configs'))) diff --git a/sdk/python/pulumi_gcp/cloudbuild/trigger.py b/sdk/python/pulumi_gcp/cloudbuild/trigger.py index 591c5923d5..faac22ab2c 100644 --- a/sdk/python/pulumi_gcp/cloudbuild/trigger.py +++ b/sdk/python/pulumi_gcp/cloudbuild/trigger.py @@ -1103,15 +1103,15 @@ def __init__(__self__, "newFeature", ], "substitutions": { - "__foo": "bar", - "__baz": "qux", + "_FOO": "bar", + "_BAZ": "qux", }, "queue_ttl": "20s", "logs_bucket": "gs://mybucket/logs", "secrets": [{ "kms_key_name": "projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name", "secret_env": { - "password": "ZW5jcnlwdGVkLXBhc3N3b3JkCg==", + "PASSWORD": "ZW5jcnlwdGVkLXBhc3N3b3JkCg==", }, }], "available_secrets": { @@ -1472,15 +1472,15 @@ def __init__(__self__, "newFeature", ], "substitutions": { - "__foo": "bar", - "__baz": "qux", + "_FOO": "bar", + "_BAZ": "qux", }, "queue_ttl": "20s", "logs_bucket": "gs://mybucket/logs", "secrets": [{ "kms_key_name": "projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name", "secret_env": { - "password": "ZW5jcnlwdGVkLXBhc3N3b3JkCg==", + "PASSWORD": "ZW5jcnlwdGVkLXBhc3N3b3JkCg==", }, }], "available_secrets": { @@ -1551,15 +1551,15 @@ def __init__(__self__, "newFeature", ], "substitutions": { - "__foo": "bar", - "__baz": "qux", + "_FOO": "bar", + "_BAZ": "qux", }, "queue_ttl": "20s", "logs_bucket": "gs://mybucket/logs", "secrets": [{ "kms_key_name": "projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name", "secret_env": { - "password": "ZW5jcnlwdGVkLXBhc3N3b3JkCg==", + "PASSWORD": "ZW5jcnlwdGVkLXBhc3N3b3JkCg==", }, }], "available_secrets": { @@ -1817,15 +1817,15 @@ def __init__(__self__, "newFeature", ], "substitutions": { - "__foo": "bar", - "__baz": "qux", + "_FOO": "bar", + "_BAZ": "qux", }, "queue_ttl": "20s", "logs_bucket": "gs://mybucket/logs", "secrets": [{ "kms_key_name": "projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name", "secret_env": { - "password": "ZW5jcnlwdGVkLXBhc3N3b3JkCg==", + "PASSWORD": "ZW5jcnlwdGVkLXBhc3N3b3JkCg==", }, }], "available_secrets": { @@ -2186,15 +2186,15 @@ def __init__(__self__, "newFeature", ], "substitutions": { - "__foo": "bar", - "__baz": "qux", + "_FOO": "bar", + "_BAZ": "qux", }, "queue_ttl": "20s", "logs_bucket": "gs://mybucket/logs", "secrets": [{ "kms_key_name": "projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name", "secret_env": { - "password": "ZW5jcnlwdGVkLXBhc3N3b3JkCg==", + "PASSWORD": "ZW5jcnlwdGVkLXBhc3N3b3JkCg==", }, }], "available_secrets": { @@ -2265,15 +2265,15 @@ def __init__(__self__, "newFeature", ], "substitutions": { - "__foo": "bar", - "__baz": "qux", + "_FOO": "bar", + "_BAZ": "qux", }, "queue_ttl": "20s", "logs_bucket": "gs://mybucket/logs", "secrets": [{ "kms_key_name": "projects/myProject/locations/global/keyRings/keyring-name/cryptoKeys/key-name", "secret_env": { - "password": "ZW5jcnlwdGVkLXBhc3N3b3JkCg==", + "PASSWORD": "ZW5jcnlwdGVkLXBhc3N3b3JkCg==", }, }], "available_secrets": { diff --git a/sdk/python/pulumi_gcp/cloudbuildv2/get_connection_iam_policy.py b/sdk/python/pulumi_gcp/cloudbuildv2/get_connection_iam_policy.py index 5112a7b631..33fbd01973 100644 --- a/sdk/python/pulumi_gcp/cloudbuildv2/get_connection_iam_policy.py +++ b/sdk/python/pulumi_gcp/cloudbuildv2/get_connection_iam_policy.py @@ -141,9 +141,6 @@ def get_connection_iam_policy(location: Optional[str] = None, name=pulumi.get(__ret__, 'name'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_connection_iam_policy) def get_connection_iam_policy_output(location: Optional[pulumi.Input[Optional[str]]] = None, name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -170,4 +167,16 @@ def get_connection_iam_policy_output(location: Optional[pulumi.Input[Optional[st :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['location'] = location + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:cloudbuildv2/getConnectionIamPolicy:getConnectionIamPolicy', __args__, opts=opts, typ=GetConnectionIamPolicyResult) + return __ret__.apply(lambda __response__: GetConnectionIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + name=pulumi.get(__response__, 'name'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/clouddeploy/delivery_pipeline.py b/sdk/python/pulumi_gcp/clouddeploy/delivery_pipeline.py index e65b2223b1..db014ecee1 100644 --- a/sdk/python/pulumi_gcp/clouddeploy/delivery_pipeline.py +++ b/sdk/python/pulumi_gcp/clouddeploy/delivery_pipeline.py @@ -484,7 +484,7 @@ def __init__(__self__, { "deploy_parameters": [{ "values": { - "deploy_parameter_key": "deployParameterValue", + "deployParameterKey": "deployParameterValue", }, "match_target_labels": {}, }], @@ -525,7 +525,7 @@ def __init__(__self__, { "deploy_parameters": [{ "values": { - "deploy_parameter_key": "deployParameterValue", + "deployParameterKey": "deployParameterValue", }, "match_target_labels": {}, }], @@ -566,7 +566,7 @@ def __init__(__self__, { "deploy_parameters": [{ "values": { - "deploy_parameter_key": "deployParameterValue", + "deployParameterKey": "deployParameterValue", }, "match_target_labels": {}, }], @@ -607,7 +607,7 @@ def __init__(__self__, { "deploy_parameters": [{ "values": { - "deploy_parameter_key": "deployParameterValue", + "deployParameterKey": "deployParameterValue", }, "match_target_labels": {}, }], @@ -648,7 +648,7 @@ def __init__(__self__, { "deploy_parameters": [{ "values": { - "deploy_parameter_key": "deployParameterValue", + "deployParameterKey": "deployParameterValue", }, "match_target_labels": {}, }], @@ -745,7 +745,7 @@ def __init__(__self__, { "deploy_parameters": [{ "values": { - "deploy_parameter_key": "deployParameterValue", + "deployParameterKey": "deployParameterValue", }, "match_target_labels": {}, }], @@ -786,7 +786,7 @@ def __init__(__self__, { "deploy_parameters": [{ "values": { - "deploy_parameter_key": "deployParameterValue", + "deployParameterKey": "deployParameterValue", }, "match_target_labels": {}, }], @@ -827,7 +827,7 @@ def __init__(__self__, { "deploy_parameters": [{ "values": { - "deploy_parameter_key": "deployParameterValue", + "deployParameterKey": "deployParameterValue", }, "match_target_labels": {}, }], @@ -868,7 +868,7 @@ def __init__(__self__, { "deploy_parameters": [{ "values": { - "deploy_parameter_key": "deployParameterValue", + "deployParameterKey": "deployParameterValue", }, "match_target_labels": {}, }], @@ -909,7 +909,7 @@ def __init__(__self__, { "deploy_parameters": [{ "values": { - "deploy_parameter_key": "deployParameterValue", + "deployParameterKey": "deployParameterValue", }, "match_target_labels": {}, }], diff --git a/sdk/python/pulumi_gcp/clouddeploy/get_custom_target_type_iam_policy.py b/sdk/python/pulumi_gcp/clouddeploy/get_custom_target_type_iam_policy.py index d086b01487..ea57004616 100644 --- a/sdk/python/pulumi_gcp/clouddeploy/get_custom_target_type_iam_policy.py +++ b/sdk/python/pulumi_gcp/clouddeploy/get_custom_target_type_iam_policy.py @@ -141,9 +141,6 @@ def get_custom_target_type_iam_policy(location: Optional[str] = None, name=pulumi.get(__ret__, 'name'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_custom_target_type_iam_policy) def get_custom_target_type_iam_policy_output(location: Optional[pulumi.Input[Optional[str]]] = None, name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -170,4 +167,16 @@ def get_custom_target_type_iam_policy_output(location: Optional[pulumi.Input[Opt :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['location'] = location + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:clouddeploy/getCustomTargetTypeIamPolicy:getCustomTargetTypeIamPolicy', __args__, opts=opts, typ=GetCustomTargetTypeIamPolicyResult) + return __ret__.apply(lambda __response__: GetCustomTargetTypeIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + name=pulumi.get(__response__, 'name'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/clouddeploy/get_delivery_pipeline_iam_policy.py b/sdk/python/pulumi_gcp/clouddeploy/get_delivery_pipeline_iam_policy.py index 5725f1d4af..56adc36d6b 100644 --- a/sdk/python/pulumi_gcp/clouddeploy/get_delivery_pipeline_iam_policy.py +++ b/sdk/python/pulumi_gcp/clouddeploy/get_delivery_pipeline_iam_policy.py @@ -138,9 +138,6 @@ def get_delivery_pipeline_iam_policy(location: Optional[str] = None, name=pulumi.get(__ret__, 'name'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_delivery_pipeline_iam_policy) def get_delivery_pipeline_iam_policy_output(location: Optional[pulumi.Input[Optional[str]]] = None, name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -164,4 +161,16 @@ def get_delivery_pipeline_iam_policy_output(location: Optional[pulumi.Input[Opti :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['location'] = location + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:clouddeploy/getDeliveryPipelineIamPolicy:getDeliveryPipelineIamPolicy', __args__, opts=opts, typ=GetDeliveryPipelineIamPolicyResult) + return __ret__.apply(lambda __response__: GetDeliveryPipelineIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + name=pulumi.get(__response__, 'name'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/clouddeploy/get_target_iam_policy.py b/sdk/python/pulumi_gcp/clouddeploy/get_target_iam_policy.py index ebbbfae934..6cb4e47e7f 100644 --- a/sdk/python/pulumi_gcp/clouddeploy/get_target_iam_policy.py +++ b/sdk/python/pulumi_gcp/clouddeploy/get_target_iam_policy.py @@ -138,9 +138,6 @@ def get_target_iam_policy(location: Optional[str] = None, name=pulumi.get(__ret__, 'name'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_target_iam_policy) def get_target_iam_policy_output(location: Optional[pulumi.Input[Optional[str]]] = None, name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -164,4 +161,16 @@ def get_target_iam_policy_output(location: Optional[pulumi.Input[Optional[str]]] :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['location'] = location + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:clouddeploy/getTargetIamPolicy:getTargetIamPolicy', __args__, opts=opts, typ=GetTargetIamPolicyResult) + return __ret__.apply(lambda __response__: GetTargetIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + name=pulumi.get(__response__, 'name'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/cloudfunctions/get_function.py b/sdk/python/pulumi_gcp/cloudfunctions/get_function.py index 803e697baa..4cad4b743d 100644 --- a/sdk/python/pulumi_gcp/cloudfunctions/get_function.py +++ b/sdk/python/pulumi_gcp/cloudfunctions/get_function.py @@ -490,9 +490,6 @@ def get_function(name: Optional[str] = None, version_id=pulumi.get(__ret__, 'version_id'), vpc_connector=pulumi.get(__ret__, 'vpc_connector'), vpc_connector_egress_settings=pulumi.get(__ret__, 'vpc_connector_egress_settings')) - - -@_utilities.lift_output_func(get_function) def get_function_output(name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, region: Optional[pulumi.Input[Optional[str]]] = None, @@ -520,4 +517,46 @@ def get_function_output(name: Optional[pulumi.Input[str]] = None, :param str region: The region in which the resource belongs. If it is not provided, the provider region is used. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + __args__['region'] = region + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:cloudfunctions/getFunction:getFunction', __args__, opts=opts, typ=GetFunctionResult) + return __ret__.apply(lambda __response__: GetFunctionResult( + available_memory_mb=pulumi.get(__response__, 'available_memory_mb'), + build_environment_variables=pulumi.get(__response__, 'build_environment_variables'), + build_service_account=pulumi.get(__response__, 'build_service_account'), + build_worker_pool=pulumi.get(__response__, 'build_worker_pool'), + description=pulumi.get(__response__, 'description'), + docker_registry=pulumi.get(__response__, 'docker_registry'), + docker_repository=pulumi.get(__response__, 'docker_repository'), + effective_labels=pulumi.get(__response__, 'effective_labels'), + entry_point=pulumi.get(__response__, 'entry_point'), + environment_variables=pulumi.get(__response__, 'environment_variables'), + event_triggers=pulumi.get(__response__, 'event_triggers'), + https_trigger_security_level=pulumi.get(__response__, 'https_trigger_security_level'), + https_trigger_url=pulumi.get(__response__, 'https_trigger_url'), + id=pulumi.get(__response__, 'id'), + ingress_settings=pulumi.get(__response__, 'ingress_settings'), + kms_key_name=pulumi.get(__response__, 'kms_key_name'), + labels=pulumi.get(__response__, 'labels'), + max_instances=pulumi.get(__response__, 'max_instances'), + min_instances=pulumi.get(__response__, 'min_instances'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + pulumi_labels=pulumi.get(__response__, 'pulumi_labels'), + region=pulumi.get(__response__, 'region'), + runtime=pulumi.get(__response__, 'runtime'), + secret_environment_variables=pulumi.get(__response__, 'secret_environment_variables'), + secret_volumes=pulumi.get(__response__, 'secret_volumes'), + service_account_email=pulumi.get(__response__, 'service_account_email'), + source_archive_bucket=pulumi.get(__response__, 'source_archive_bucket'), + source_archive_object=pulumi.get(__response__, 'source_archive_object'), + source_repositories=pulumi.get(__response__, 'source_repositories'), + status=pulumi.get(__response__, 'status'), + timeout=pulumi.get(__response__, 'timeout'), + trigger_http=pulumi.get(__response__, 'trigger_http'), + version_id=pulumi.get(__response__, 'version_id'), + vpc_connector=pulumi.get(__response__, 'vpc_connector'), + vpc_connector_egress_settings=pulumi.get(__response__, 'vpc_connector_egress_settings'))) diff --git a/sdk/python/pulumi_gcp/cloudfunctions/get_function_iam_policy.py b/sdk/python/pulumi_gcp/cloudfunctions/get_function_iam_policy.py index b44ce6f60d..844d311019 100644 --- a/sdk/python/pulumi_gcp/cloudfunctions/get_function_iam_policy.py +++ b/sdk/python/pulumi_gcp/cloudfunctions/get_function_iam_policy.py @@ -141,9 +141,6 @@ def get_function_iam_policy(cloud_function: Optional[str] = None, policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project'), region=pulumi.get(__ret__, 'region')) - - -@_utilities.lift_output_func(get_function_iam_policy) def get_function_iam_policy_output(cloud_function: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, region: Optional[pulumi.Input[Optional[str]]] = None, @@ -170,4 +167,16 @@ def get_function_iam_policy_output(cloud_function: Optional[pulumi.Input[str]] = the value will be parsed from the identifier of the parent resource. If no region is provided in the parent identifier and no region is specified, it is taken from the provider configuration. """ - ... + __args__ = dict() + __args__['cloudFunction'] = cloud_function + __args__['project'] = project + __args__['region'] = region + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:cloudfunctions/getFunctionIamPolicy:getFunctionIamPolicy', __args__, opts=opts, typ=GetFunctionIamPolicyResult) + return __ret__.apply(lambda __response__: GetFunctionIamPolicyResult( + cloud_function=pulumi.get(__response__, 'cloud_function'), + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'), + region=pulumi.get(__response__, 'region'))) diff --git a/sdk/python/pulumi_gcp/cloudfunctionsv2/function.py b/sdk/python/pulumi_gcp/cloudfunctionsv2/function.py index 269043a67f..831d90206b 100644 --- a/sdk/python/pulumi_gcp/cloudfunctionsv2/function.py +++ b/sdk/python/pulumi_gcp/cloudfunctionsv2/function.py @@ -561,7 +561,7 @@ def __init__(__self__, "runtime": "nodejs16", "entry_point": "helloPubSub", "environment_variables": { - "buil_d__confi_g__test": "build_test", + "BUILD_CONFIG_TEST": "build_test", }, "source": { "storage_source": { @@ -578,8 +578,8 @@ def __init__(__self__, "max_instance_request_concurrency": 80, "available_cpu": "4", "environment_variables": { - "servic_e__confi_g__test": "config_test", - "servic_e__confi_g__dif_f__test": account.email, + "SERVICE_CONFIG_TEST": "config_test", + "SERVICE_CONFIG_DIFF_TEST": account.email, }, "ingress_settings": "ALLOW_INTERNAL_ONLY", "all_traffic_on_latest_revision": True, @@ -709,7 +709,7 @@ def __init__(__self__, "runtime": "nodejs12", "entry_point": "entryPoint", "environment_variables": { - "buil_d__confi_g__test": "build_test", + "BUILD_CONFIG_TEST": "build_test", }, "source": { "storage_source": { @@ -724,7 +724,7 @@ def __init__(__self__, "available_memory": "256M", "timeout_seconds": 60, "environment_variables": { - "servic_e__confi_g__test": "config_test", + "SERVICE_CONFIG_TEST": "config_test", }, "ingress_settings": "ALLOW_INTERNAL_ONLY", "all_traffic_on_latest_revision": True, @@ -795,7 +795,7 @@ def __init__(__self__, "runtime": "nodejs12", "entry_point": "entryPoint", "environment_variables": { - "buil_d__confi_g__test": "build_test", + "BUILD_CONFIG_TEST": "build_test", }, "source": { "storage_source": { @@ -810,7 +810,7 @@ def __init__(__self__, "available_memory": "256M", "timeout_seconds": 60, "environment_variables": { - "servic_e__confi_g__test": "config_test", + "SERVICE_CONFIG_TEST": "config_test", }, "ingress_settings": "ALLOW_INTERNAL_ONLY", "all_traffic_on_latest_revision": True, @@ -1150,7 +1150,7 @@ def __init__(__self__, "runtime": "nodejs16", "entry_point": "helloPubSub", "environment_variables": { - "buil_d__confi_g__test": "build_test", + "BUILD_CONFIG_TEST": "build_test", }, "source": { "storage_source": { @@ -1168,7 +1168,7 @@ def __init__(__self__, "max_instance_request_concurrency": 80, "available_cpu": "4", "environment_variables": { - "servic_e__confi_g__test": "config_test", + "SERVICE_CONFIG_TEST": "config_test", }, "ingress_settings": "ALLOW_INTERNAL_ONLY", "all_traffic_on_latest_revision": True, @@ -1208,7 +1208,7 @@ def __init__(__self__, "runtime": "nodejs16", "entry_point": "helloPubSub", "environment_variables": { - "buil_d__confi_g__test": "build_test", + "BUILD_CONFIG_TEST": "build_test", }, "source": { "storage_source": { @@ -1226,7 +1226,7 @@ def __init__(__self__, "max_instance_request_concurrency": 80, "available_cpu": "4", "environment_variables": { - "servic_e__confi_g__test": "config_test", + "SERVICE_CONFIG_TEST": "config_test", }, "ingress_settings": "ALLOW_INTERNAL_ONLY", "all_traffic_on_latest_revision": True, @@ -1367,7 +1367,7 @@ def __init__(__self__, "runtime": "nodejs16", "entry_point": "helloPubSub", "environment_variables": { - "buil_d__confi_g__test": "build_test", + "BUILD_CONFIG_TEST": "build_test", }, "source": { "storage_source": { @@ -1384,8 +1384,8 @@ def __init__(__self__, "max_instance_request_concurrency": 80, "available_cpu": "4", "environment_variables": { - "servic_e__confi_g__test": "config_test", - "servic_e__confi_g__dif_f__test": account.email, + "SERVICE_CONFIG_TEST": "config_test", + "SERVICE_CONFIG_DIFF_TEST": account.email, }, "ingress_settings": "ALLOW_INTERNAL_ONLY", "all_traffic_on_latest_revision": True, @@ -1515,7 +1515,7 @@ def __init__(__self__, "runtime": "nodejs12", "entry_point": "entryPoint", "environment_variables": { - "buil_d__confi_g__test": "build_test", + "BUILD_CONFIG_TEST": "build_test", }, "source": { "storage_source": { @@ -1530,7 +1530,7 @@ def __init__(__self__, "available_memory": "256M", "timeout_seconds": 60, "environment_variables": { - "servic_e__confi_g__test": "config_test", + "SERVICE_CONFIG_TEST": "config_test", }, "ingress_settings": "ALLOW_INTERNAL_ONLY", "all_traffic_on_latest_revision": True, @@ -1601,7 +1601,7 @@ def __init__(__self__, "runtime": "nodejs12", "entry_point": "entryPoint", "environment_variables": { - "buil_d__confi_g__test": "build_test", + "BUILD_CONFIG_TEST": "build_test", }, "source": { "storage_source": { @@ -1616,7 +1616,7 @@ def __init__(__self__, "available_memory": "256M", "timeout_seconds": 60, "environment_variables": { - "servic_e__confi_g__test": "config_test", + "SERVICE_CONFIG_TEST": "config_test", }, "ingress_settings": "ALLOW_INTERNAL_ONLY", "all_traffic_on_latest_revision": True, @@ -1956,7 +1956,7 @@ def __init__(__self__, "runtime": "nodejs16", "entry_point": "helloPubSub", "environment_variables": { - "buil_d__confi_g__test": "build_test", + "BUILD_CONFIG_TEST": "build_test", }, "source": { "storage_source": { @@ -1974,7 +1974,7 @@ def __init__(__self__, "max_instance_request_concurrency": 80, "available_cpu": "4", "environment_variables": { - "servic_e__confi_g__test": "config_test", + "SERVICE_CONFIG_TEST": "config_test", }, "ingress_settings": "ALLOW_INTERNAL_ONLY", "all_traffic_on_latest_revision": True, @@ -2014,7 +2014,7 @@ def __init__(__self__, "runtime": "nodejs16", "entry_point": "helloPubSub", "environment_variables": { - "buil_d__confi_g__test": "build_test", + "BUILD_CONFIG_TEST": "build_test", }, "source": { "storage_source": { @@ -2032,7 +2032,7 @@ def __init__(__self__, "max_instance_request_concurrency": 80, "available_cpu": "4", "environment_variables": { - "servic_e__confi_g__test": "config_test", + "SERVICE_CONFIG_TEST": "config_test", }, "ingress_settings": "ALLOW_INTERNAL_ONLY", "all_traffic_on_latest_revision": True, diff --git a/sdk/python/pulumi_gcp/cloudfunctionsv2/get_function.py b/sdk/python/pulumi_gcp/cloudfunctionsv2/get_function.py index 318c536044..407efb12c8 100644 --- a/sdk/python/pulumi_gcp/cloudfunctionsv2/get_function.py +++ b/sdk/python/pulumi_gcp/cloudfunctionsv2/get_function.py @@ -236,9 +236,6 @@ def get_function(location: Optional[str] = None, state=pulumi.get(__ret__, 'state'), update_time=pulumi.get(__ret__, 'update_time'), url=pulumi.get(__ret__, 'url')) - - -@_utilities.lift_output_func(get_function) def get_function_output(location: Optional[pulumi.Input[str]] = None, name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -266,4 +263,26 @@ def get_function_output(location: Optional[pulumi.Input[str]] = None, :param str project: The project in which the resource belongs. If it is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['location'] = location + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:cloudfunctionsv2/getFunction:getFunction', __args__, opts=opts, typ=GetFunctionResult) + return __ret__.apply(lambda __response__: GetFunctionResult( + build_configs=pulumi.get(__response__, 'build_configs'), + description=pulumi.get(__response__, 'description'), + effective_labels=pulumi.get(__response__, 'effective_labels'), + environment=pulumi.get(__response__, 'environment'), + event_triggers=pulumi.get(__response__, 'event_triggers'), + id=pulumi.get(__response__, 'id'), + kms_key_name=pulumi.get(__response__, 'kms_key_name'), + labels=pulumi.get(__response__, 'labels'), + location=pulumi.get(__response__, 'location'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + pulumi_labels=pulumi.get(__response__, 'pulumi_labels'), + service_configs=pulumi.get(__response__, 'service_configs'), + state=pulumi.get(__response__, 'state'), + update_time=pulumi.get(__response__, 'update_time'), + url=pulumi.get(__response__, 'url'))) diff --git a/sdk/python/pulumi_gcp/cloudfunctionsv2/get_function_iam_policy.py b/sdk/python/pulumi_gcp/cloudfunctionsv2/get_function_iam_policy.py index 8ffb368cd6..aac89ac3fc 100644 --- a/sdk/python/pulumi_gcp/cloudfunctionsv2/get_function_iam_policy.py +++ b/sdk/python/pulumi_gcp/cloudfunctionsv2/get_function_iam_policy.py @@ -141,9 +141,6 @@ def get_function_iam_policy(cloud_function: Optional[str] = None, location=pulumi.get(__ret__, 'location'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_function_iam_policy) def get_function_iam_policy_output(cloud_function: Optional[pulumi.Input[str]] = None, location: Optional[pulumi.Input[Optional[str]]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -170,4 +167,16 @@ def get_function_iam_policy_output(cloud_function: Optional[pulumi.Input[str]] = :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['cloudFunction'] = cloud_function + __args__['location'] = location + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:cloudfunctionsv2/getFunctionIamPolicy:getFunctionIamPolicy', __args__, opts=opts, typ=GetFunctionIamPolicyResult) + return __ret__.apply(lambda __response__: GetFunctionIamPolicyResult( + cloud_function=pulumi.get(__response__, 'cloud_function'), + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/cloudidentity/get_group_lookup.py b/sdk/python/pulumi_gcp/cloudidentity/get_group_lookup.py index 006d4bcef9..5be9bd6454 100644 --- a/sdk/python/pulumi_gcp/cloudidentity/get_group_lookup.py +++ b/sdk/python/pulumi_gcp/cloudidentity/get_group_lookup.py @@ -104,9 +104,6 @@ def get_group_lookup(group_key: Optional[Union['GetGroupLookupGroupKeyArgs', 'Ge group_key=pulumi.get(__ret__, 'group_key'), id=pulumi.get(__ret__, 'id'), name=pulumi.get(__ret__, 'name')) - - -@_utilities.lift_output_func(get_group_lookup) def get_group_lookup_output(group_key: Optional[pulumi.Input[Union['GetGroupLookupGroupKeyArgs', 'GetGroupLookupGroupKeyArgsDict']]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetGroupLookupResult]: """ @@ -130,4 +127,11 @@ def get_group_lookup_output(group_key: Optional[pulumi.Input[Union['GetGroupLook An entity can represent either a group with an optional namespace or a user without a namespace. The combination of id and namespace must be unique; however, the same id can be used with different namespaces. Structure is documented below. """ - ... + __args__ = dict() + __args__['groupKey'] = group_key + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:cloudidentity/getGroupLookup:getGroupLookup', __args__, opts=opts, typ=GetGroupLookupResult) + return __ret__.apply(lambda __response__: GetGroupLookupResult( + group_key=pulumi.get(__response__, 'group_key'), + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'))) diff --git a/sdk/python/pulumi_gcp/cloudidentity/get_group_memberships.py b/sdk/python/pulumi_gcp/cloudidentity/get_group_memberships.py index 5d3a1dad36..6aff4d68ab 100644 --- a/sdk/python/pulumi_gcp/cloudidentity/get_group_memberships.py +++ b/sdk/python/pulumi_gcp/cloudidentity/get_group_memberships.py @@ -105,9 +105,6 @@ def get_group_memberships(group: Optional[str] = None, group=pulumi.get(__ret__, 'group'), id=pulumi.get(__ret__, 'id'), memberships=pulumi.get(__ret__, 'memberships')) - - -@_utilities.lift_output_func(get_group_memberships) def get_group_memberships_output(group: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetGroupMembershipsResult]: """ @@ -133,4 +130,11 @@ def get_group_memberships_output(group: Optional[pulumi.Input[str]] = None, :param str group: The parent Group resource under which to lookup the Membership names. Must be of the form groups/{group_id}. """ - ... + __args__ = dict() + __args__['group'] = group + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:cloudidentity/getGroupMemberships:getGroupMemberships', __args__, opts=opts, typ=GetGroupMembershipsResult) + return __ret__.apply(lambda __response__: GetGroupMembershipsResult( + group=pulumi.get(__response__, 'group'), + id=pulumi.get(__response__, 'id'), + memberships=pulumi.get(__response__, 'memberships'))) diff --git a/sdk/python/pulumi_gcp/cloudidentity/get_group_transitive_memberships.py b/sdk/python/pulumi_gcp/cloudidentity/get_group_transitive_memberships.py index 339df8e654..a17e1e9fc1 100644 --- a/sdk/python/pulumi_gcp/cloudidentity/get_group_transitive_memberships.py +++ b/sdk/python/pulumi_gcp/cloudidentity/get_group_transitive_memberships.py @@ -82,12 +82,16 @@ def get_group_transitive_memberships(group: Optional[str] = None, group=pulumi.get(__ret__, 'group'), id=pulumi.get(__ret__, 'id'), memberships=pulumi.get(__ret__, 'memberships')) - - -@_utilities.lift_output_func(get_group_transitive_memberships) def get_group_transitive_memberships_output(group: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetGroupTransitiveMembershipsResult]: """ Use this data source to access information about an existing resource. """ - ... + __args__ = dict() + __args__['group'] = group + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:cloudidentity/getGroupTransitiveMemberships:getGroupTransitiveMemberships', __args__, opts=opts, typ=GetGroupTransitiveMembershipsResult) + return __ret__.apply(lambda __response__: GetGroupTransitiveMembershipsResult( + group=pulumi.get(__response__, 'group'), + id=pulumi.get(__response__, 'id'), + memberships=pulumi.get(__response__, 'memberships'))) diff --git a/sdk/python/pulumi_gcp/cloudidentity/get_groups.py b/sdk/python/pulumi_gcp/cloudidentity/get_groups.py index 8267b36510..d81411d724 100644 --- a/sdk/python/pulumi_gcp/cloudidentity/get_groups.py +++ b/sdk/python/pulumi_gcp/cloudidentity/get_groups.py @@ -99,9 +99,6 @@ def get_groups(parent: Optional[str] = None, groups=pulumi.get(__ret__, 'groups'), id=pulumi.get(__ret__, 'id'), parent=pulumi.get(__ret__, 'parent')) - - -@_utilities.lift_output_func(get_groups) def get_groups_output(parent: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetGroupsResult]: """ @@ -121,4 +118,11 @@ def get_groups_output(parent: Optional[pulumi.Input[str]] = None, :param str parent: The parent resource under which to list all Groups. Must be of the form identitysources/{identity_source_id} for external- identity-mapped groups or customers/{customer_id} for Google Groups. """ - ... + __args__ = dict() + __args__['parent'] = parent + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:cloudidentity/getGroups:getGroups', __args__, opts=opts, typ=GetGroupsResult) + return __ret__.apply(lambda __response__: GetGroupsResult( + groups=pulumi.get(__response__, 'groups'), + id=pulumi.get(__response__, 'id'), + parent=pulumi.get(__response__, 'parent'))) diff --git a/sdk/python/pulumi_gcp/cloudquota/get_s_quota_info.py b/sdk/python/pulumi_gcp/cloudquota/get_s_quota_info.py index 337cb17c4f..379a362c50 100644 --- a/sdk/python/pulumi_gcp/cloudquota/get_s_quota_info.py +++ b/sdk/python/pulumi_gcp/cloudquota/get_s_quota_info.py @@ -294,9 +294,6 @@ def get_s_quota_info(parent: Optional[str] = None, refresh_interval=pulumi.get(__ret__, 'refresh_interval'), service=pulumi.get(__ret__, 'service'), service_request_quota_uri=pulumi.get(__ret__, 'service_request_quota_uri')) - - -@_utilities.lift_output_func(get_s_quota_info) def get_s_quota_info_output(parent: Optional[pulumi.Input[str]] = None, quota_id: Optional[pulumi.Input[str]] = None, service: Optional[pulumi.Input[str]] = None, @@ -320,4 +317,28 @@ def get_s_quota_info_output(parent: Optional[pulumi.Input[str]] = None, :param str quota_id: The id of the quota, which is unique within the service. :param str service: The name of the service in which the quota is defined. """ - ... + __args__ = dict() + __args__['parent'] = parent + __args__['quotaId'] = quota_id + __args__['service'] = service + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:cloudquota/getSQuotaInfo:getSQuotaInfo', __args__, opts=opts, typ=GetSQuotaInfoResult) + return __ret__.apply(lambda __response__: GetSQuotaInfoResult( + container_type=pulumi.get(__response__, 'container_type'), + dimensions=pulumi.get(__response__, 'dimensions'), + dimensions_infos=pulumi.get(__response__, 'dimensions_infos'), + id=pulumi.get(__response__, 'id'), + is_concurrent=pulumi.get(__response__, 'is_concurrent'), + is_fixed=pulumi.get(__response__, 'is_fixed'), + is_precise=pulumi.get(__response__, 'is_precise'), + metric=pulumi.get(__response__, 'metric'), + metric_display_name=pulumi.get(__response__, 'metric_display_name'), + metric_unit=pulumi.get(__response__, 'metric_unit'), + name=pulumi.get(__response__, 'name'), + parent=pulumi.get(__response__, 'parent'), + quota_display_name=pulumi.get(__response__, 'quota_display_name'), + quota_id=pulumi.get(__response__, 'quota_id'), + quota_increase_eligibilities=pulumi.get(__response__, 'quota_increase_eligibilities'), + refresh_interval=pulumi.get(__response__, 'refresh_interval'), + service=pulumi.get(__response__, 'service'), + service_request_quota_uri=pulumi.get(__response__, 'service_request_quota_uri'))) diff --git a/sdk/python/pulumi_gcp/cloudquota/get_s_quota_infos.py b/sdk/python/pulumi_gcp/cloudquota/get_s_quota_infos.py index 838e3d5d6b..1a1fff9258 100644 --- a/sdk/python/pulumi_gcp/cloudquota/get_s_quota_infos.py +++ b/sdk/python/pulumi_gcp/cloudquota/get_s_quota_infos.py @@ -111,9 +111,6 @@ def get_s_quota_infos(parent: Optional[str] = None, parent=pulumi.get(__ret__, 'parent'), quota_infos=pulumi.get(__ret__, 'quota_infos'), service=pulumi.get(__ret__, 'service')) - - -@_utilities.lift_output_func(get_s_quota_infos) def get_s_quota_infos_output(parent: Optional[pulumi.Input[str]] = None, service: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetSQuotaInfosResult]: @@ -134,4 +131,13 @@ def get_s_quota_infos_output(parent: Optional[pulumi.Input[str]] = None, :param str parent: Parent value of QuotaInfo resources. Listing across different resource containers (such as 'projects/-') is not allowed. Allowed parents are "projects/[project-id / number]" or "folders/[folder-id / number]" or "organizations/[org-id / number]. :param str service: The name of the service in which the quotas are defined. """ - ... + __args__ = dict() + __args__['parent'] = parent + __args__['service'] = service + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:cloudquota/getSQuotaInfos:getSQuotaInfos', __args__, opts=opts, typ=GetSQuotaInfosResult) + return __ret__.apply(lambda __response__: GetSQuotaInfosResult( + id=pulumi.get(__response__, 'id'), + parent=pulumi.get(__response__, 'parent'), + quota_infos=pulumi.get(__response__, 'quota_infos'), + service=pulumi.get(__response__, 'service'))) diff --git a/sdk/python/pulumi_gcp/cloudrun/get_locations.py b/sdk/python/pulumi_gcp/cloudrun/get_locations.py index 68988961a1..933fad8091 100644 --- a/sdk/python/pulumi_gcp/cloudrun/get_locations.py +++ b/sdk/python/pulumi_gcp/cloudrun/get_locations.py @@ -103,9 +103,6 @@ def get_locations(project: Optional[str] = None, id=pulumi.get(__ret__, 'id'), locations=pulumi.get(__ret__, 'locations'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_locations) def get_locations_output(project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetLocationsResult]: """ @@ -130,4 +127,11 @@ def get_locations_output(project: Optional[pulumi.Input[Optional[str]]] = None, :param str project: The project to list versions for. If it is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:cloudrun/getLocations:getLocations', __args__, opts=opts, typ=GetLocationsResult) + return __ret__.apply(lambda __response__: GetLocationsResult( + id=pulumi.get(__response__, 'id'), + locations=pulumi.get(__response__, 'locations'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/cloudrun/get_service.py b/sdk/python/pulumi_gcp/cloudrun/get_service.py index b02bf01f85..d480d8654f 100644 --- a/sdk/python/pulumi_gcp/cloudrun/get_service.py +++ b/sdk/python/pulumi_gcp/cloudrun/get_service.py @@ -166,9 +166,6 @@ def get_service(location: Optional[str] = None, statuses=pulumi.get(__ret__, 'statuses'), templates=pulumi.get(__ret__, 'templates'), traffics=pulumi.get(__ret__, 'traffics')) - - -@_utilities.lift_output_func(get_service) def get_service_output(location: Optional[pulumi.Input[str]] = None, name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -196,4 +193,19 @@ def get_service_output(location: Optional[pulumi.Input[str]] = None, :param str project: The project in which the resource belongs. If it is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['location'] = location + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:cloudrun/getService:getService', __args__, opts=opts, typ=GetServiceResult) + return __ret__.apply(lambda __response__: GetServiceResult( + autogenerate_revision_name=pulumi.get(__response__, 'autogenerate_revision_name'), + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + metadatas=pulumi.get(__response__, 'metadatas'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + statuses=pulumi.get(__response__, 'statuses'), + templates=pulumi.get(__response__, 'templates'), + traffics=pulumi.get(__response__, 'traffics'))) diff --git a/sdk/python/pulumi_gcp/cloudrun/get_service_iam_policy.py b/sdk/python/pulumi_gcp/cloudrun/get_service_iam_policy.py index 4e13f714f9..a8d2ab1b44 100644 --- a/sdk/python/pulumi_gcp/cloudrun/get_service_iam_policy.py +++ b/sdk/python/pulumi_gcp/cloudrun/get_service_iam_policy.py @@ -141,9 +141,6 @@ def get_service_iam_policy(location: Optional[str] = None, policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project'), service=pulumi.get(__ret__, 'service')) - - -@_utilities.lift_output_func(get_service_iam_policy) def get_service_iam_policy_output(location: Optional[pulumi.Input[Optional[str]]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, service: Optional[pulumi.Input[str]] = None, @@ -170,4 +167,16 @@ def get_service_iam_policy_output(location: Optional[pulumi.Input[Optional[str]] If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. :param str service: Used to find the parent resource to bind the IAM policy to """ - ... + __args__ = dict() + __args__['location'] = location + __args__['project'] = project + __args__['service'] = service + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:cloudrun/getServiceIamPolicy:getServiceIamPolicy', __args__, opts=opts, typ=GetServiceIamPolicyResult) + return __ret__.apply(lambda __response__: GetServiceIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'), + service=pulumi.get(__response__, 'service'))) diff --git a/sdk/python/pulumi_gcp/cloudrun/service.py b/sdk/python/pulumi_gcp/cloudrun/service.py index 1666307d11..9ed1c5f628 100644 --- a/sdk/python/pulumi_gcp/cloudrun/service.py +++ b/sdk/python/pulumi_gcp/cloudrun/service.py @@ -387,7 +387,7 @@ def __init__(__self__, "service_account_email": sa.email, }, "attributes": { - "x_goog_version": "v1", + "x-goog-version": "v1", }, }) ``` @@ -438,9 +438,9 @@ def __init__(__self__, }, "metadata": { "annotations": { - "autoscaling_knative_dev_max_scale": "1000", - "run_googleapis_com_cloudsql_instances": instance.connection_name, - "run_googleapis_com_client_name": "demo", + "autoscaling.knative.dev/maxScale": "1000", + "run.googleapis.com/cloudsql-instances": instance.connection_name, + "run.googleapis.com/client-name": "demo", }, }, }, @@ -519,14 +519,14 @@ def __init__(__self__, location="us-central1", metadata={ "annotations": { - "run_googleapis_com_launch_stage": "BETA", + "run.googleapis.com/launch-stage": "BETA", }, }, template={ "metadata": { "annotations": { - "run_googleapis_com_container_dependencies": json.dumps({ - "hello_1": ["hello-2"], + "run.googleapis.com/container-dependencies": json.dumps({ + "hello-1": ["hello-2"], }), }, }, @@ -679,7 +679,7 @@ def __init__(__self__, "service_account_email": sa.email, }, "attributes": { - "x_goog_version": "v1", + "x-goog-version": "v1", }, }) ``` @@ -730,9 +730,9 @@ def __init__(__self__, }, "metadata": { "annotations": { - "autoscaling_knative_dev_max_scale": "1000", - "run_googleapis_com_cloudsql_instances": instance.connection_name, - "run_googleapis_com_client_name": "demo", + "autoscaling.knative.dev/maxScale": "1000", + "run.googleapis.com/cloudsql-instances": instance.connection_name, + "run.googleapis.com/client-name": "demo", }, }, }, @@ -811,14 +811,14 @@ def __init__(__self__, location="us-central1", metadata={ "annotations": { - "run_googleapis_com_launch_stage": "BETA", + "run.googleapis.com/launch-stage": "BETA", }, }, template={ "metadata": { "annotations": { - "run_googleapis_com_container_dependencies": json.dumps({ - "hello_1": ["hello-2"], + "run.googleapis.com/container-dependencies": json.dumps({ + "hello-1": ["hello-2"], }), }, }, diff --git a/sdk/python/pulumi_gcp/cloudrunv2/get_job.py b/sdk/python/pulumi_gcp/cloudrunv2/get_job.py index 755e0ba29f..36cfbf3796 100644 --- a/sdk/python/pulumi_gcp/cloudrunv2/get_job.py +++ b/sdk/python/pulumi_gcp/cloudrunv2/get_job.py @@ -396,9 +396,6 @@ def get_job(location: Optional[str] = None, terminal_conditions=pulumi.get(__ret__, 'terminal_conditions'), uid=pulumi.get(__ret__, 'uid'), update_time=pulumi.get(__ret__, 'update_time')) - - -@_utilities.lift_output_func(get_job) def get_job_output(location: Optional[pulumi.Input[Optional[str]]] = None, name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -426,4 +423,42 @@ def get_job_output(location: Optional[pulumi.Input[Optional[str]]] = None, :param str project: The project in which the resource belongs. If it is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['location'] = location + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:cloudrunv2/getJob:getJob', __args__, opts=opts, typ=GetJobResult) + return __ret__.apply(lambda __response__: GetJobResult( + annotations=pulumi.get(__response__, 'annotations'), + binary_authorizations=pulumi.get(__response__, 'binary_authorizations'), + client=pulumi.get(__response__, 'client'), + client_version=pulumi.get(__response__, 'client_version'), + conditions=pulumi.get(__response__, 'conditions'), + create_time=pulumi.get(__response__, 'create_time'), + creator=pulumi.get(__response__, 'creator'), + delete_time=pulumi.get(__response__, 'delete_time'), + deletion_protection=pulumi.get(__response__, 'deletion_protection'), + effective_annotations=pulumi.get(__response__, 'effective_annotations'), + effective_labels=pulumi.get(__response__, 'effective_labels'), + etag=pulumi.get(__response__, 'etag'), + execution_count=pulumi.get(__response__, 'execution_count'), + expire_time=pulumi.get(__response__, 'expire_time'), + generation=pulumi.get(__response__, 'generation'), + id=pulumi.get(__response__, 'id'), + labels=pulumi.get(__response__, 'labels'), + last_modifier=pulumi.get(__response__, 'last_modifier'), + latest_created_executions=pulumi.get(__response__, 'latest_created_executions'), + launch_stage=pulumi.get(__response__, 'launch_stage'), + location=pulumi.get(__response__, 'location'), + name=pulumi.get(__response__, 'name'), + observed_generation=pulumi.get(__response__, 'observed_generation'), + project=pulumi.get(__response__, 'project'), + pulumi_labels=pulumi.get(__response__, 'pulumi_labels'), + reconciling=pulumi.get(__response__, 'reconciling'), + run_execution_token=pulumi.get(__response__, 'run_execution_token'), + start_execution_token=pulumi.get(__response__, 'start_execution_token'), + templates=pulumi.get(__response__, 'templates'), + terminal_conditions=pulumi.get(__response__, 'terminal_conditions'), + uid=pulumi.get(__response__, 'uid'), + update_time=pulumi.get(__response__, 'update_time'))) diff --git a/sdk/python/pulumi_gcp/cloudrunv2/get_job_iam_policy.py b/sdk/python/pulumi_gcp/cloudrunv2/get_job_iam_policy.py index 10c9cac7e8..963697d7ae 100644 --- a/sdk/python/pulumi_gcp/cloudrunv2/get_job_iam_policy.py +++ b/sdk/python/pulumi_gcp/cloudrunv2/get_job_iam_policy.py @@ -141,9 +141,6 @@ def get_job_iam_policy(location: Optional[str] = None, name=pulumi.get(__ret__, 'name'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_job_iam_policy) def get_job_iam_policy_output(location: Optional[pulumi.Input[Optional[str]]] = None, name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -170,4 +167,16 @@ def get_job_iam_policy_output(location: Optional[pulumi.Input[Optional[str]]] = :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['location'] = location + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:cloudrunv2/getJobIamPolicy:getJobIamPolicy', __args__, opts=opts, typ=GetJobIamPolicyResult) + return __ret__.apply(lambda __response__: GetJobIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + name=pulumi.get(__response__, 'name'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/cloudrunv2/get_service.py b/sdk/python/pulumi_gcp/cloudrunv2/get_service.py index a0190658c5..1f6b7cc895 100644 --- a/sdk/python/pulumi_gcp/cloudrunv2/get_service.py +++ b/sdk/python/pulumi_gcp/cloudrunv2/get_service.py @@ -456,9 +456,6 @@ def get_service(location: Optional[str] = None, uid=pulumi.get(__ret__, 'uid'), update_time=pulumi.get(__ret__, 'update_time'), uri=pulumi.get(__ret__, 'uri')) - - -@_utilities.lift_output_func(get_service) def get_service_output(location: Optional[pulumi.Input[Optional[str]]] = None, name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -486,4 +483,48 @@ def get_service_output(location: Optional[pulumi.Input[Optional[str]]] = None, :param str project: The project in which the resource belongs. If it is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['location'] = location + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:cloudrunv2/getService:getService', __args__, opts=opts, typ=GetServiceResult) + return __ret__.apply(lambda __response__: GetServiceResult( + annotations=pulumi.get(__response__, 'annotations'), + binary_authorizations=pulumi.get(__response__, 'binary_authorizations'), + client=pulumi.get(__response__, 'client'), + client_version=pulumi.get(__response__, 'client_version'), + conditions=pulumi.get(__response__, 'conditions'), + create_time=pulumi.get(__response__, 'create_time'), + creator=pulumi.get(__response__, 'creator'), + custom_audiences=pulumi.get(__response__, 'custom_audiences'), + default_uri_disabled=pulumi.get(__response__, 'default_uri_disabled'), + delete_time=pulumi.get(__response__, 'delete_time'), + deletion_protection=pulumi.get(__response__, 'deletion_protection'), + description=pulumi.get(__response__, 'description'), + effective_annotations=pulumi.get(__response__, 'effective_annotations'), + effective_labels=pulumi.get(__response__, 'effective_labels'), + etag=pulumi.get(__response__, 'etag'), + expire_time=pulumi.get(__response__, 'expire_time'), + generation=pulumi.get(__response__, 'generation'), + id=pulumi.get(__response__, 'id'), + ingress=pulumi.get(__response__, 'ingress'), + labels=pulumi.get(__response__, 'labels'), + last_modifier=pulumi.get(__response__, 'last_modifier'), + latest_created_revision=pulumi.get(__response__, 'latest_created_revision'), + latest_ready_revision=pulumi.get(__response__, 'latest_ready_revision'), + launch_stage=pulumi.get(__response__, 'launch_stage'), + location=pulumi.get(__response__, 'location'), + name=pulumi.get(__response__, 'name'), + observed_generation=pulumi.get(__response__, 'observed_generation'), + project=pulumi.get(__response__, 'project'), + pulumi_labels=pulumi.get(__response__, 'pulumi_labels'), + reconciling=pulumi.get(__response__, 'reconciling'), + scalings=pulumi.get(__response__, 'scalings'), + templates=pulumi.get(__response__, 'templates'), + terminal_conditions=pulumi.get(__response__, 'terminal_conditions'), + traffic_statuses=pulumi.get(__response__, 'traffic_statuses'), + traffics=pulumi.get(__response__, 'traffics'), + uid=pulumi.get(__response__, 'uid'), + update_time=pulumi.get(__response__, 'update_time'), + uri=pulumi.get(__response__, 'uri'))) diff --git a/sdk/python/pulumi_gcp/cloudrunv2/get_service_iam_policy.py b/sdk/python/pulumi_gcp/cloudrunv2/get_service_iam_policy.py index cd4ed17c0f..3892746112 100644 --- a/sdk/python/pulumi_gcp/cloudrunv2/get_service_iam_policy.py +++ b/sdk/python/pulumi_gcp/cloudrunv2/get_service_iam_policy.py @@ -141,9 +141,6 @@ def get_service_iam_policy(location: Optional[str] = None, name=pulumi.get(__ret__, 'name'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_service_iam_policy) def get_service_iam_policy_output(location: Optional[pulumi.Input[Optional[str]]] = None, name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -170,4 +167,16 @@ def get_service_iam_policy_output(location: Optional[pulumi.Input[Optional[str]] :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['location'] = location + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:cloudrunv2/getServiceIamPolicy:getServiceIamPolicy', __args__, opts=opts, typ=GetServiceIamPolicyResult) + return __ret__.apply(lambda __response__: GetServiceIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + name=pulumi.get(__response__, 'name'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/cloudscheduler/job.py b/sdk/python/pulumi_gcp/cloudscheduler/job.py index 00033a4638..0ca945327e 100644 --- a/sdk/python/pulumi_gcp/cloudscheduler/job.py +++ b/sdk/python/pulumi_gcp/cloudscheduler/job.py @@ -602,7 +602,7 @@ def __init__(__self__, "uri": "https://example.com/", "body": std.base64encode(input="{\\"foo\\":\\"bar\\"}").result, "headers": { - "content__type": "application/json", + "Content-Type": "application/json", }, }) ``` @@ -628,7 +628,7 @@ def __init__(__self__, "uri": "https://example.com/ping", "body": std.base64encode(input="{\\"foo\\":\\"bar\\"}").result, "headers": { - "content__type": "application/json", + "Content-Type": "application/json", }, }) ``` @@ -829,7 +829,7 @@ def __init__(__self__, "uri": "https://example.com/", "body": std.base64encode(input="{\\"foo\\":\\"bar\\"}").result, "headers": { - "content__type": "application/json", + "Content-Type": "application/json", }, }) ``` @@ -855,7 +855,7 @@ def __init__(__self__, "uri": "https://example.com/ping", "body": std.base64encode(input="{\\"foo\\":\\"bar\\"}").result, "headers": { - "content__type": "application/json", + "Content-Type": "application/json", }, }) ``` diff --git a/sdk/python/pulumi_gcp/cloudtasks/get_queue_iam_policy.py b/sdk/python/pulumi_gcp/cloudtasks/get_queue_iam_policy.py index 3c7456c467..e22495e141 100644 --- a/sdk/python/pulumi_gcp/cloudtasks/get_queue_iam_policy.py +++ b/sdk/python/pulumi_gcp/cloudtasks/get_queue_iam_policy.py @@ -141,9 +141,6 @@ def get_queue_iam_policy(location: Optional[str] = None, name=pulumi.get(__ret__, 'name'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_queue_iam_policy) def get_queue_iam_policy_output(location: Optional[pulumi.Input[Optional[str]]] = None, name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -170,4 +167,16 @@ def get_queue_iam_policy_output(location: Optional[pulumi.Input[Optional[str]]] :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['location'] = location + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:cloudtasks/getQueueIamPolicy:getQueueIamPolicy', __args__, opts=opts, typ=GetQueueIamPolicyResult) + return __ret__.apply(lambda __response__: GetQueueIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + name=pulumi.get(__response__, 'name'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/composer/get_environment.py b/sdk/python/pulumi_gcp/composer/get_environment.py index 3c55d1d7f6..668ab93b35 100644 --- a/sdk/python/pulumi_gcp/composer/get_environment.py +++ b/sdk/python/pulumi_gcp/composer/get_environment.py @@ -166,9 +166,6 @@ def get_environment(name: Optional[str] = None, pulumi_labels=pulumi.get(__ret__, 'pulumi_labels'), region=pulumi.get(__ret__, 'region'), storage_configs=pulumi.get(__ret__, 'storage_configs')) - - -@_utilities.lift_output_func(get_environment) def get_environment_output(name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, region: Optional[pulumi.Input[Optional[str]]] = None, @@ -193,4 +190,19 @@ def get_environment_output(name: Optional[pulumi.Input[str]] = None, If it is not provided, the provider project is used. :param str region: The location or Compute Engine region of the environment. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + __args__['region'] = region + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:composer/getEnvironment:getEnvironment', __args__, opts=opts, typ=GetEnvironmentResult) + return __ret__.apply(lambda __response__: GetEnvironmentResult( + configs=pulumi.get(__response__, 'configs'), + effective_labels=pulumi.get(__response__, 'effective_labels'), + id=pulumi.get(__response__, 'id'), + labels=pulumi.get(__response__, 'labels'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + pulumi_labels=pulumi.get(__response__, 'pulumi_labels'), + region=pulumi.get(__response__, 'region'), + storage_configs=pulumi.get(__response__, 'storage_configs'))) diff --git a/sdk/python/pulumi_gcp/composer/get_image_versions.py b/sdk/python/pulumi_gcp/composer/get_image_versions.py index d6a092a82a..d5b6162990 100644 --- a/sdk/python/pulumi_gcp/composer/get_image_versions.py +++ b/sdk/python/pulumi_gcp/composer/get_image_versions.py @@ -120,9 +120,6 @@ def get_image_versions(project: Optional[str] = None, image_versions=pulumi.get(__ret__, 'image_versions'), project=pulumi.get(__ret__, 'project'), region=pulumi.get(__ret__, 'region')) - - -@_utilities.lift_output_func(get_image_versions) def get_image_versions_output(project: Optional[pulumi.Input[Optional[str]]] = None, region: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetImageVersionsResult]: @@ -152,4 +149,13 @@ def get_image_versions_output(project: Optional[pulumi.Input[Optional[str]]] = N :param str region: The location to list versions in. If it is not provider, the provider region is used. """ - ... + __args__ = dict() + __args__['project'] = project + __args__['region'] = region + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:composer/getImageVersions:getImageVersions', __args__, opts=opts, typ=GetImageVersionsResult) + return __ret__.apply(lambda __response__: GetImageVersionsResult( + id=pulumi.get(__response__, 'id'), + image_versions=pulumi.get(__response__, 'image_versions'), + project=pulumi.get(__response__, 'project'), + region=pulumi.get(__response__, 'region'))) diff --git a/sdk/python/pulumi_gcp/composer/get_user_workloads_config_map.py b/sdk/python/pulumi_gcp/composer/get_user_workloads_config_map.py index 0558c06c9b..eae29fbc04 100644 --- a/sdk/python/pulumi_gcp/composer/get_user_workloads_config_map.py +++ b/sdk/python/pulumi_gcp/composer/get_user_workloads_config_map.py @@ -151,9 +151,6 @@ def get_user_workloads_config_map(environment: Optional[str] = None, name=pulumi.get(__ret__, 'name'), project=pulumi.get(__ret__, 'project'), region=pulumi.get(__ret__, 'region')) - - -@_utilities.lift_output_func(get_user_workloads_config_map) def get_user_workloads_config_map_output(environment: Optional[pulumi.Input[str]] = None, name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -192,4 +189,17 @@ def get_user_workloads_config_map_output(environment: Optional[pulumi.Input[str] If it is not provided, the provider project is used. :param str region: The location or Compute Engine region of the environment. """ - ... + __args__ = dict() + __args__['environment'] = environment + __args__['name'] = name + __args__['project'] = project + __args__['region'] = region + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:composer/getUserWorkloadsConfigMap:getUserWorkloadsConfigMap', __args__, opts=opts, typ=GetUserWorkloadsConfigMapResult) + return __ret__.apply(lambda __response__: GetUserWorkloadsConfigMapResult( + data=pulumi.get(__response__, 'data'), + environment=pulumi.get(__response__, 'environment'), + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + region=pulumi.get(__response__, 'region'))) diff --git a/sdk/python/pulumi_gcp/composer/get_user_workloads_secret.py b/sdk/python/pulumi_gcp/composer/get_user_workloads_secret.py index 726edd9e28..07bcdb56d4 100644 --- a/sdk/python/pulumi_gcp/composer/get_user_workloads_secret.py +++ b/sdk/python/pulumi_gcp/composer/get_user_workloads_secret.py @@ -148,9 +148,6 @@ def get_user_workloads_secret(environment: Optional[str] = None, name=pulumi.get(__ret__, 'name'), project=pulumi.get(__ret__, 'project'), region=pulumi.get(__ret__, 'region')) - - -@_utilities.lift_output_func(get_user_workloads_secret) def get_user_workloads_secret_output(environment: Optional[pulumi.Input[str]] = None, name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -190,4 +187,17 @@ def get_user_workloads_secret_output(environment: Optional[pulumi.Input[str]] = If it is not provided, the provider project is used. :param str region: The location or Compute Engine region of the environment. """ - ... + __args__ = dict() + __args__['environment'] = environment + __args__['name'] = name + __args__['project'] = project + __args__['region'] = region + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:composer/getUserWorkloadsSecret:getUserWorkloadsSecret', __args__, opts=opts, typ=GetUserWorkloadsSecretResult) + return __ret__.apply(lambda __response__: GetUserWorkloadsSecretResult( + data=pulumi.get(__response__, 'data'), + environment=pulumi.get(__response__, 'environment'), + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + region=pulumi.get(__response__, 'region'))) diff --git a/sdk/python/pulumi_gcp/compute/get_address.py b/sdk/python/pulumi_gcp/compute/get_address.py index 9eed99370b..8d110ba1fc 100644 --- a/sdk/python/pulumi_gcp/compute/get_address.py +++ b/sdk/python/pulumi_gcp/compute/get_address.py @@ -232,9 +232,6 @@ def get_address(name: Optional[str] = None, status=pulumi.get(__ret__, 'status'), subnetwork=pulumi.get(__ret__, 'subnetwork'), users=pulumi.get(__ret__, 'users')) - - -@_utilities.lift_output_func(get_address) def get_address_output(name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, region: Optional[pulumi.Input[Optional[str]]] = None, @@ -270,4 +267,24 @@ def get_address_output(name: Optional[pulumi.Input[str]] = None, :param str region: The Region in which the created address reside. If it is not provided, the provider region is used. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + __args__['region'] = region + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getAddress:getAddress', __args__, opts=opts, typ=GetAddressResult) + return __ret__.apply(lambda __response__: GetAddressResult( + address=pulumi.get(__response__, 'address'), + address_type=pulumi.get(__response__, 'address_type'), + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'), + network=pulumi.get(__response__, 'network'), + network_tier=pulumi.get(__response__, 'network_tier'), + prefix_length=pulumi.get(__response__, 'prefix_length'), + project=pulumi.get(__response__, 'project'), + purpose=pulumi.get(__response__, 'purpose'), + region=pulumi.get(__response__, 'region'), + self_link=pulumi.get(__response__, 'self_link'), + status=pulumi.get(__response__, 'status'), + subnetwork=pulumi.get(__response__, 'subnetwork'), + users=pulumi.get(__response__, 'users'))) diff --git a/sdk/python/pulumi_gcp/compute/get_addresses.py b/sdk/python/pulumi_gcp/compute/get_addresses.py index 264a43bd68..c1c5b6e005 100644 --- a/sdk/python/pulumi_gcp/compute/get_addresses.py +++ b/sdk/python/pulumi_gcp/compute/get_addresses.py @@ -160,9 +160,6 @@ def get_addresses(filter: Optional[str] = None, id=pulumi.get(__ret__, 'id'), project=pulumi.get(__ret__, 'project'), region=pulumi.get(__ret__, 'region')) - - -@_utilities.lift_output_func(get_addresses) def get_addresses_output(filter: Optional[pulumi.Input[Optional[str]]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, region: Optional[pulumi.Input[Optional[str]]] = None, @@ -218,4 +215,15 @@ def get_addresses_output(filter: Optional[pulumi.Input[Optional[str]]] = None, :param str region: Region that should be considered to search addresses. All regions are considered if missing. """ - ... + __args__ = dict() + __args__['filter'] = filter + __args__['project'] = project + __args__['region'] = region + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getAddresses:getAddresses', __args__, opts=opts, typ=GetAddressesResult) + return __ret__.apply(lambda __response__: GetAddressesResult( + addresses=pulumi.get(__response__, 'addresses'), + filter=pulumi.get(__response__, 'filter'), + id=pulumi.get(__response__, 'id'), + project=pulumi.get(__response__, 'project'), + region=pulumi.get(__response__, 'region'))) diff --git a/sdk/python/pulumi_gcp/compute/get_backend_bucket.py b/sdk/python/pulumi_gcp/compute/get_backend_bucket.py index 47dd7a7220..ff9ee580b7 100644 --- a/sdk/python/pulumi_gcp/compute/get_backend_bucket.py +++ b/sdk/python/pulumi_gcp/compute/get_backend_bucket.py @@ -190,9 +190,6 @@ def get_backend_bucket(name: Optional[str] = None, name=pulumi.get(__ret__, 'name'), project=pulumi.get(__ret__, 'project'), self_link=pulumi.get(__ret__, 'self_link')) - - -@_utilities.lift_output_func(get_backend_bucket) def get_backend_bucket_output(name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetBackendBucketResult]: @@ -215,4 +212,21 @@ def get_backend_bucket_output(name: Optional[pulumi.Input[str]] = None, :param str project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getBackendBucket:getBackendBucket', __args__, opts=opts, typ=GetBackendBucketResult) + return __ret__.apply(lambda __response__: GetBackendBucketResult( + bucket_name=pulumi.get(__response__, 'bucket_name'), + cdn_policies=pulumi.get(__response__, 'cdn_policies'), + compression_mode=pulumi.get(__response__, 'compression_mode'), + creation_timestamp=pulumi.get(__response__, 'creation_timestamp'), + custom_response_headers=pulumi.get(__response__, 'custom_response_headers'), + description=pulumi.get(__response__, 'description'), + edge_security_policy=pulumi.get(__response__, 'edge_security_policy'), + enable_cdn=pulumi.get(__response__, 'enable_cdn'), + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + self_link=pulumi.get(__response__, 'self_link'))) diff --git a/sdk/python/pulumi_gcp/compute/get_backend_bucket_iam_policy.py b/sdk/python/pulumi_gcp/compute/get_backend_bucket_iam_policy.py index ed9dcb9be4..bd8da18645 100644 --- a/sdk/python/pulumi_gcp/compute/get_backend_bucket_iam_policy.py +++ b/sdk/python/pulumi_gcp/compute/get_backend_bucket_iam_policy.py @@ -114,9 +114,6 @@ def get_backend_bucket_iam_policy(name: Optional[str] = None, name=pulumi.get(__ret__, 'name'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_backend_bucket_iam_policy) def get_backend_bucket_iam_policy_output(name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetBackendBucketIamPolicyResult]: @@ -127,4 +124,14 @@ def get_backend_bucket_iam_policy_output(name: Optional[pulumi.Input[str]] = Non :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getBackendBucketIamPolicy:getBackendBucketIamPolicy', __args__, opts=opts, typ=GetBackendBucketIamPolicyResult) + return __ret__.apply(lambda __response__: GetBackendBucketIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/compute/get_backend_service.py b/sdk/python/pulumi_gcp/compute/get_backend_service.py index d0387eebad..6decc525e4 100644 --- a/sdk/python/pulumi_gcp/compute/get_backend_service.py +++ b/sdk/python/pulumi_gcp/compute/get_backend_service.py @@ -440,9 +440,6 @@ def get_backend_service(name: Optional[str] = None, service_lb_policy=pulumi.get(__ret__, 'service_lb_policy'), session_affinity=pulumi.get(__ret__, 'session_affinity'), timeout_sec=pulumi.get(__ret__, 'timeout_sec')) - - -@_utilities.lift_output_func(get_backend_service) def get_backend_service_output(name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetBackendServiceResult]: @@ -469,4 +466,42 @@ def get_backend_service_output(name: Optional[pulumi.Input[str]] = None, - - - :param str project: The project in which the resource belongs. If it is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getBackendService:getBackendService', __args__, opts=opts, typ=GetBackendServiceResult) + return __ret__.apply(lambda __response__: GetBackendServiceResult( + affinity_cookie_ttl_sec=pulumi.get(__response__, 'affinity_cookie_ttl_sec'), + backends=pulumi.get(__response__, 'backends'), + cdn_policies=pulumi.get(__response__, 'cdn_policies'), + circuit_breakers=pulumi.get(__response__, 'circuit_breakers'), + compression_mode=pulumi.get(__response__, 'compression_mode'), + connection_draining_timeout_sec=pulumi.get(__response__, 'connection_draining_timeout_sec'), + consistent_hash=pulumi.get(__response__, 'consistent_hash'), + creation_timestamp=pulumi.get(__response__, 'creation_timestamp'), + custom_request_headers=pulumi.get(__response__, 'custom_request_headers'), + custom_response_headers=pulumi.get(__response__, 'custom_response_headers'), + description=pulumi.get(__response__, 'description'), + edge_security_policy=pulumi.get(__response__, 'edge_security_policy'), + enable_cdn=pulumi.get(__response__, 'enable_cdn'), + fingerprint=pulumi.get(__response__, 'fingerprint'), + generated_id=pulumi.get(__response__, 'generated_id'), + health_checks=pulumi.get(__response__, 'health_checks'), + iaps=pulumi.get(__response__, 'iaps'), + id=pulumi.get(__response__, 'id'), + load_balancing_scheme=pulumi.get(__response__, 'load_balancing_scheme'), + locality_lb_policies=pulumi.get(__response__, 'locality_lb_policies'), + locality_lb_policy=pulumi.get(__response__, 'locality_lb_policy'), + log_configs=pulumi.get(__response__, 'log_configs'), + name=pulumi.get(__response__, 'name'), + outlier_detections=pulumi.get(__response__, 'outlier_detections'), + port_name=pulumi.get(__response__, 'port_name'), + project=pulumi.get(__response__, 'project'), + protocol=pulumi.get(__response__, 'protocol'), + security_policy=pulumi.get(__response__, 'security_policy'), + security_settings=pulumi.get(__response__, 'security_settings'), + self_link=pulumi.get(__response__, 'self_link'), + service_lb_policy=pulumi.get(__response__, 'service_lb_policy'), + session_affinity=pulumi.get(__response__, 'session_affinity'), + timeout_sec=pulumi.get(__response__, 'timeout_sec'))) diff --git a/sdk/python/pulumi_gcp/compute/get_backend_service_iam_policy.py b/sdk/python/pulumi_gcp/compute/get_backend_service_iam_policy.py index 5151d1746f..79f99952fb 100644 --- a/sdk/python/pulumi_gcp/compute/get_backend_service_iam_policy.py +++ b/sdk/python/pulumi_gcp/compute/get_backend_service_iam_policy.py @@ -114,9 +114,6 @@ def get_backend_service_iam_policy(name: Optional[str] = None, name=pulumi.get(__ret__, 'name'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_backend_service_iam_policy) def get_backend_service_iam_policy_output(name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetBackendServiceIamPolicyResult]: @@ -127,4 +124,14 @@ def get_backend_service_iam_policy_output(name: Optional[pulumi.Input[str]] = No :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getBackendServiceIamPolicy:getBackendServiceIamPolicy', __args__, opts=opts, typ=GetBackendServiceIamPolicyResult) + return __ret__.apply(lambda __response__: GetBackendServiceIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/compute/get_certificate.py b/sdk/python/pulumi_gcp/compute/get_certificate.py index 2a19593fad..ff7a4c9e84 100644 --- a/sdk/python/pulumi_gcp/compute/get_certificate.py +++ b/sdk/python/pulumi_gcp/compute/get_certificate.py @@ -182,9 +182,6 @@ def get_certificate(name: Optional[str] = None, private_key=pulumi.get(__ret__, 'private_key'), project=pulumi.get(__ret__, 'project'), self_link=pulumi.get(__ret__, 'self_link')) - - -@_utilities.lift_output_func(get_certificate) def get_certificate_output(name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetCertificateResult]: @@ -210,4 +207,20 @@ def get_certificate_output(name: Optional[pulumi.Input[str]] = None, :param str project: The project in which the resource belongs. If it is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getCertificate:getCertificate', __args__, opts=opts, typ=GetCertificateResult) + return __ret__.apply(lambda __response__: GetCertificateResult( + certificate=pulumi.get(__response__, 'certificate'), + certificate_id=pulumi.get(__response__, 'certificate_id'), + creation_timestamp=pulumi.get(__response__, 'creation_timestamp'), + description=pulumi.get(__response__, 'description'), + expire_time=pulumi.get(__response__, 'expire_time'), + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'), + name_prefix=pulumi.get(__response__, 'name_prefix'), + private_key=pulumi.get(__response__, 'private_key'), + project=pulumi.get(__response__, 'project'), + self_link=pulumi.get(__response__, 'self_link'))) diff --git a/sdk/python/pulumi_gcp/compute/get_default_service_account.py b/sdk/python/pulumi_gcp/compute/get_default_service_account.py index 151a3ea51f..a2a86724b2 100644 --- a/sdk/python/pulumi_gcp/compute/get_default_service_account.py +++ b/sdk/python/pulumi_gcp/compute/get_default_service_account.py @@ -149,9 +149,6 @@ def get_default_service_account(project: Optional[str] = None, name=pulumi.get(__ret__, 'name'), project=pulumi.get(__ret__, 'project'), unique_id=pulumi.get(__ret__, 'unique_id')) - - -@_utilities.lift_output_func(get_default_service_account) def get_default_service_account_output(project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetDefaultServiceAccountResult]: """ @@ -170,4 +167,15 @@ def get_default_service_account_output(project: Optional[pulumi.Input[Optional[s :param str project: The project ID. If it is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getDefaultServiceAccount:getDefaultServiceAccount', __args__, opts=opts, typ=GetDefaultServiceAccountResult) + return __ret__.apply(lambda __response__: GetDefaultServiceAccountResult( + display_name=pulumi.get(__response__, 'display_name'), + email=pulumi.get(__response__, 'email'), + id=pulumi.get(__response__, 'id'), + member=pulumi.get(__response__, 'member'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + unique_id=pulumi.get(__response__, 'unique_id'))) diff --git a/sdk/python/pulumi_gcp/compute/get_disk.py b/sdk/python/pulumi_gcp/compute/get_disk.py index 9ef2ac891f..650fa20245 100644 --- a/sdk/python/pulumi_gcp/compute/get_disk.py +++ b/sdk/python/pulumi_gcp/compute/get_disk.py @@ -526,9 +526,6 @@ def get_disk(name: Optional[str] = None, type=pulumi.get(__ret__, 'type'), users=pulumi.get(__ret__, 'users'), zone=pulumi.get(__ret__, 'zone')) - - -@_utilities.lift_output_func(get_disk) def get_disk_output(name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, zone: Optional[pulumi.Input[Optional[str]]] = None, @@ -560,4 +557,48 @@ def get_disk_output(name: Optional[pulumi.Input[str]] = None, If it is not provided, the provider project is used. :param str zone: A reference to the zone where the disk resides. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + __args__['zone'] = zone + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getDisk:getDisk', __args__, opts=opts, typ=GetDiskResult) + return __ret__.apply(lambda __response__: GetDiskResult( + access_mode=pulumi.get(__response__, 'access_mode'), + async_primary_disks=pulumi.get(__response__, 'async_primary_disks'), + creation_timestamp=pulumi.get(__response__, 'creation_timestamp'), + description=pulumi.get(__response__, 'description'), + disk_encryption_keys=pulumi.get(__response__, 'disk_encryption_keys'), + disk_id=pulumi.get(__response__, 'disk_id'), + effective_labels=pulumi.get(__response__, 'effective_labels'), + enable_confidential_compute=pulumi.get(__response__, 'enable_confidential_compute'), + guest_os_features=pulumi.get(__response__, 'guest_os_features'), + id=pulumi.get(__response__, 'id'), + image=pulumi.get(__response__, 'image'), + interface=pulumi.get(__response__, 'interface'), + label_fingerprint=pulumi.get(__response__, 'label_fingerprint'), + labels=pulumi.get(__response__, 'labels'), + last_attach_timestamp=pulumi.get(__response__, 'last_attach_timestamp'), + last_detach_timestamp=pulumi.get(__response__, 'last_detach_timestamp'), + licenses=pulumi.get(__response__, 'licenses'), + multi_writer=pulumi.get(__response__, 'multi_writer'), + name=pulumi.get(__response__, 'name'), + physical_block_size_bytes=pulumi.get(__response__, 'physical_block_size_bytes'), + project=pulumi.get(__response__, 'project'), + provisioned_iops=pulumi.get(__response__, 'provisioned_iops'), + provisioned_throughput=pulumi.get(__response__, 'provisioned_throughput'), + pulumi_labels=pulumi.get(__response__, 'pulumi_labels'), + resource_policies=pulumi.get(__response__, 'resource_policies'), + self_link=pulumi.get(__response__, 'self_link'), + size=pulumi.get(__response__, 'size'), + snapshot=pulumi.get(__response__, 'snapshot'), + source_disk=pulumi.get(__response__, 'source_disk'), + source_disk_id=pulumi.get(__response__, 'source_disk_id'), + source_image_encryption_keys=pulumi.get(__response__, 'source_image_encryption_keys'), + source_image_id=pulumi.get(__response__, 'source_image_id'), + source_snapshot_encryption_keys=pulumi.get(__response__, 'source_snapshot_encryption_keys'), + source_snapshot_id=pulumi.get(__response__, 'source_snapshot_id'), + storage_pool=pulumi.get(__response__, 'storage_pool'), + type=pulumi.get(__response__, 'type'), + users=pulumi.get(__response__, 'users'), + zone=pulumi.get(__response__, 'zone'))) diff --git a/sdk/python/pulumi_gcp/compute/get_disk_iam_policy.py b/sdk/python/pulumi_gcp/compute/get_disk_iam_policy.py index 52e7c870f2..981553f671 100644 --- a/sdk/python/pulumi_gcp/compute/get_disk_iam_policy.py +++ b/sdk/python/pulumi_gcp/compute/get_disk_iam_policy.py @@ -141,9 +141,6 @@ def get_disk_iam_policy(name: Optional[str] = None, policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project'), zone=pulumi.get(__ret__, 'zone')) - - -@_utilities.lift_output_func(get_disk_iam_policy) def get_disk_iam_policy_output(name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, zone: Optional[pulumi.Input[Optional[str]]] = None, @@ -170,4 +167,16 @@ def get_disk_iam_policy_output(name: Optional[pulumi.Input[str]] = None, the value will be parsed from the identifier of the parent resource. If no zone is provided in the parent identifier and no zone is specified, it is taken from the provider configuration. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + __args__['zone'] = zone + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getDiskIamPolicy:getDiskIamPolicy', __args__, opts=opts, typ=GetDiskIamPolicyResult) + return __ret__.apply(lambda __response__: GetDiskIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'), + zone=pulumi.get(__response__, 'zone'))) diff --git a/sdk/python/pulumi_gcp/compute/get_forwarding_rule.py b/sdk/python/pulumi_gcp/compute/get_forwarding_rule.py index e2f3dfc097..96c2135285 100644 --- a/sdk/python/pulumi_gcp/compute/get_forwarding_rule.py +++ b/sdk/python/pulumi_gcp/compute/get_forwarding_rule.py @@ -435,9 +435,6 @@ def get_forwarding_rule(name: Optional[str] = None, source_ip_ranges=pulumi.get(__ret__, 'source_ip_ranges'), subnetwork=pulumi.get(__ret__, 'subnetwork'), target=pulumi.get(__ret__, 'target')) - - -@_utilities.lift_output_func(get_forwarding_rule) def get_forwarding_rule_output(name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, region: Optional[pulumi.Input[Optional[str]]] = None, @@ -464,4 +461,46 @@ def get_forwarding_rule_output(name: Optional[pulumi.Input[str]] = None, :param str region: The region in which the resource belongs. If it is not provided, the project region is used. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + __args__['region'] = region + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getForwardingRule:getForwardingRule', __args__, opts=opts, typ=GetForwardingRuleResult) + return __ret__.apply(lambda __response__: GetForwardingRuleResult( + all_ports=pulumi.get(__response__, 'all_ports'), + allow_global_access=pulumi.get(__response__, 'allow_global_access'), + allow_psc_global_access=pulumi.get(__response__, 'allow_psc_global_access'), + backend_service=pulumi.get(__response__, 'backend_service'), + base_forwarding_rule=pulumi.get(__response__, 'base_forwarding_rule'), + creation_timestamp=pulumi.get(__response__, 'creation_timestamp'), + description=pulumi.get(__response__, 'description'), + effective_labels=pulumi.get(__response__, 'effective_labels'), + forwarding_rule_id=pulumi.get(__response__, 'forwarding_rule_id'), + id=pulumi.get(__response__, 'id'), + ip_address=pulumi.get(__response__, 'ip_address'), + ip_protocol=pulumi.get(__response__, 'ip_protocol'), + ip_version=pulumi.get(__response__, 'ip_version'), + is_mirroring_collector=pulumi.get(__response__, 'is_mirroring_collector'), + label_fingerprint=pulumi.get(__response__, 'label_fingerprint'), + labels=pulumi.get(__response__, 'labels'), + load_balancing_scheme=pulumi.get(__response__, 'load_balancing_scheme'), + name=pulumi.get(__response__, 'name'), + network=pulumi.get(__response__, 'network'), + network_tier=pulumi.get(__response__, 'network_tier'), + no_automate_dns_zone=pulumi.get(__response__, 'no_automate_dns_zone'), + port_range=pulumi.get(__response__, 'port_range'), + ports=pulumi.get(__response__, 'ports'), + project=pulumi.get(__response__, 'project'), + psc_connection_id=pulumi.get(__response__, 'psc_connection_id'), + psc_connection_status=pulumi.get(__response__, 'psc_connection_status'), + pulumi_labels=pulumi.get(__response__, 'pulumi_labels'), + recreate_closed_psc=pulumi.get(__response__, 'recreate_closed_psc'), + region=pulumi.get(__response__, 'region'), + self_link=pulumi.get(__response__, 'self_link'), + service_directory_registrations=pulumi.get(__response__, 'service_directory_registrations'), + service_label=pulumi.get(__response__, 'service_label'), + service_name=pulumi.get(__response__, 'service_name'), + source_ip_ranges=pulumi.get(__response__, 'source_ip_ranges'), + subnetwork=pulumi.get(__response__, 'subnetwork'), + target=pulumi.get(__response__, 'target'))) diff --git a/sdk/python/pulumi_gcp/compute/get_forwarding_rules.py b/sdk/python/pulumi_gcp/compute/get_forwarding_rules.py index 3d9ef22835..b6383fd65e 100644 --- a/sdk/python/pulumi_gcp/compute/get_forwarding_rules.py +++ b/sdk/python/pulumi_gcp/compute/get_forwarding_rules.py @@ -119,9 +119,6 @@ def get_forwarding_rules(project: Optional[str] = None, project=pulumi.get(__ret__, 'project'), region=pulumi.get(__ret__, 'region'), rules=pulumi.get(__ret__, 'rules')) - - -@_utilities.lift_output_func(get_forwarding_rules) def get_forwarding_rules_output(project: Optional[pulumi.Input[Optional[str]]] = None, region: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetForwardingRulesResult]: @@ -144,4 +141,13 @@ def get_forwarding_rules_output(project: Optional[pulumi.Input[Optional[str]]] = These arguments must be set in either the provider or the resouce in order for the information to be queried. """ - ... + __args__ = dict() + __args__['project'] = project + __args__['region'] = region + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getForwardingRules:getForwardingRules', __args__, opts=opts, typ=GetForwardingRulesResult) + return __ret__.apply(lambda __response__: GetForwardingRulesResult( + id=pulumi.get(__response__, 'id'), + project=pulumi.get(__response__, 'project'), + region=pulumi.get(__response__, 'region'), + rules=pulumi.get(__response__, 'rules'))) diff --git a/sdk/python/pulumi_gcp/compute/get_global_address.py b/sdk/python/pulumi_gcp/compute/get_global_address.py index a0a6048fe8..c74d23adb7 100644 --- a/sdk/python/pulumi_gcp/compute/get_global_address.py +++ b/sdk/python/pulumi_gcp/compute/get_global_address.py @@ -218,9 +218,6 @@ def get_global_address(name: Optional[str] = None, status=pulumi.get(__ret__, 'status'), subnetwork=pulumi.get(__ret__, 'subnetwork'), users=pulumi.get(__ret__, 'users')) - - -@_utilities.lift_output_func(get_global_address) def get_global_address_output(name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetGlobalAddressResult]: @@ -253,4 +250,22 @@ def get_global_address_output(name: Optional[pulumi.Input[str]] = None, :param str project: The project in which the resource belongs. If it is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getGlobalAddress:getGlobalAddress', __args__, opts=opts, typ=GetGlobalAddressResult) + return __ret__.apply(lambda __response__: GetGlobalAddressResult( + address=pulumi.get(__response__, 'address'), + address_type=pulumi.get(__response__, 'address_type'), + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'), + network=pulumi.get(__response__, 'network'), + network_tier=pulumi.get(__response__, 'network_tier'), + prefix_length=pulumi.get(__response__, 'prefix_length'), + project=pulumi.get(__response__, 'project'), + purpose=pulumi.get(__response__, 'purpose'), + self_link=pulumi.get(__response__, 'self_link'), + status=pulumi.get(__response__, 'status'), + subnetwork=pulumi.get(__response__, 'subnetwork'), + users=pulumi.get(__response__, 'users'))) diff --git a/sdk/python/pulumi_gcp/compute/get_global_forwarding_rule.py b/sdk/python/pulumi_gcp/compute/get_global_forwarding_rule.py index be96ce6ed7..e18acf8305 100644 --- a/sdk/python/pulumi_gcp/compute/get_global_forwarding_rule.py +++ b/sdk/python/pulumi_gcp/compute/get_global_forwarding_rule.py @@ -320,9 +320,6 @@ def get_global_forwarding_rule(name: Optional[str] = None, source_ip_ranges=pulumi.get(__ret__, 'source_ip_ranges'), subnetwork=pulumi.get(__ret__, 'subnetwork'), target=pulumi.get(__ret__, 'target')) - - -@_utilities.lift_output_func(get_global_forwarding_rule) def get_global_forwarding_rule_output(name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetGlobalForwardingRuleResult]: @@ -345,4 +342,34 @@ def get_global_forwarding_rule_output(name: Optional[pulumi.Input[str]] = None, :param str project: The project in which the resource belongs. If it is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getGlobalForwardingRule:getGlobalForwardingRule', __args__, opts=opts, typ=GetGlobalForwardingRuleResult) + return __ret__.apply(lambda __response__: GetGlobalForwardingRuleResult( + allow_psc_global_access=pulumi.get(__response__, 'allow_psc_global_access'), + base_forwarding_rule=pulumi.get(__response__, 'base_forwarding_rule'), + description=pulumi.get(__response__, 'description'), + effective_labels=pulumi.get(__response__, 'effective_labels'), + id=pulumi.get(__response__, 'id'), + ip_address=pulumi.get(__response__, 'ip_address'), + ip_protocol=pulumi.get(__response__, 'ip_protocol'), + ip_version=pulumi.get(__response__, 'ip_version'), + label_fingerprint=pulumi.get(__response__, 'label_fingerprint'), + labels=pulumi.get(__response__, 'labels'), + load_balancing_scheme=pulumi.get(__response__, 'load_balancing_scheme'), + metadata_filters=pulumi.get(__response__, 'metadata_filters'), + name=pulumi.get(__response__, 'name'), + network=pulumi.get(__response__, 'network'), + no_automate_dns_zone=pulumi.get(__response__, 'no_automate_dns_zone'), + port_range=pulumi.get(__response__, 'port_range'), + project=pulumi.get(__response__, 'project'), + psc_connection_id=pulumi.get(__response__, 'psc_connection_id'), + psc_connection_status=pulumi.get(__response__, 'psc_connection_status'), + pulumi_labels=pulumi.get(__response__, 'pulumi_labels'), + self_link=pulumi.get(__response__, 'self_link'), + service_directory_registrations=pulumi.get(__response__, 'service_directory_registrations'), + source_ip_ranges=pulumi.get(__response__, 'source_ip_ranges'), + subnetwork=pulumi.get(__response__, 'subnetwork'), + target=pulumi.get(__response__, 'target'))) diff --git a/sdk/python/pulumi_gcp/compute/get_hc_vpn_gateway.py b/sdk/python/pulumi_gcp/compute/get_hc_vpn_gateway.py index 97b9b745aa..7b5588da86 100644 --- a/sdk/python/pulumi_gcp/compute/get_hc_vpn_gateway.py +++ b/sdk/python/pulumi_gcp/compute/get_hc_vpn_gateway.py @@ -175,9 +175,6 @@ def get_hc_vpn_gateway(name: Optional[str] = None, self_link=pulumi.get(__ret__, 'self_link'), stack_type=pulumi.get(__ret__, 'stack_type'), vpn_interfaces=pulumi.get(__ret__, 'vpn_interfaces')) - - -@_utilities.lift_output_func(get_hc_vpn_gateway) def get_hc_vpn_gateway_output(name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, region: Optional[pulumi.Input[Optional[str]]] = None, @@ -204,4 +201,20 @@ def get_hc_vpn_gateway_output(name: Optional[pulumi.Input[str]] = None, :param str region: The region in which the resource belongs. If it is not provided, the project region is used. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + __args__['region'] = region + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getHcVpnGateway:getHcVpnGateway', __args__, opts=opts, typ=GetHcVpnGatewayResult) + return __ret__.apply(lambda __response__: GetHcVpnGatewayResult( + description=pulumi.get(__response__, 'description'), + gateway_ip_version=pulumi.get(__response__, 'gateway_ip_version'), + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'), + network=pulumi.get(__response__, 'network'), + project=pulumi.get(__response__, 'project'), + region=pulumi.get(__response__, 'region'), + self_link=pulumi.get(__response__, 'self_link'), + stack_type=pulumi.get(__response__, 'stack_type'), + vpn_interfaces=pulumi.get(__response__, 'vpn_interfaces'))) diff --git a/sdk/python/pulumi_gcp/compute/get_health_check.py b/sdk/python/pulumi_gcp/compute/get_health_check.py index bad2ca77ae..8f8369bd52 100644 --- a/sdk/python/pulumi_gcp/compute/get_health_check.py +++ b/sdk/python/pulumi_gcp/compute/get_health_check.py @@ -260,9 +260,6 @@ def get_health_check(name: Optional[str] = None, timeout_sec=pulumi.get(__ret__, 'timeout_sec'), type=pulumi.get(__ret__, 'type'), unhealthy_threshold=pulumi.get(__ret__, 'unhealthy_threshold')) - - -@_utilities.lift_output_func(get_health_check) def get_health_check_output(name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetHealthCheckResult]: @@ -285,4 +282,28 @@ def get_health_check_output(name: Optional[pulumi.Input[str]] = None, :param str project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getHealthCheck:getHealthCheck', __args__, opts=opts, typ=GetHealthCheckResult) + return __ret__.apply(lambda __response__: GetHealthCheckResult( + check_interval_sec=pulumi.get(__response__, 'check_interval_sec'), + creation_timestamp=pulumi.get(__response__, 'creation_timestamp'), + description=pulumi.get(__response__, 'description'), + grpc_health_checks=pulumi.get(__response__, 'grpc_health_checks'), + healthy_threshold=pulumi.get(__response__, 'healthy_threshold'), + http2_health_checks=pulumi.get(__response__, 'http2_health_checks'), + http_health_checks=pulumi.get(__response__, 'http_health_checks'), + https_health_checks=pulumi.get(__response__, 'https_health_checks'), + id=pulumi.get(__response__, 'id'), + log_configs=pulumi.get(__response__, 'log_configs'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + self_link=pulumi.get(__response__, 'self_link'), + source_regions=pulumi.get(__response__, 'source_regions'), + ssl_health_checks=pulumi.get(__response__, 'ssl_health_checks'), + tcp_health_checks=pulumi.get(__response__, 'tcp_health_checks'), + timeout_sec=pulumi.get(__response__, 'timeout_sec'), + type=pulumi.get(__response__, 'type'), + unhealthy_threshold=pulumi.get(__response__, 'unhealthy_threshold'))) diff --git a/sdk/python/pulumi_gcp/compute/get_image.py b/sdk/python/pulumi_gcp/compute/get_image.py index e0217f8594..cfc440304b 100644 --- a/sdk/python/pulumi_gcp/compute/get_image.py +++ b/sdk/python/pulumi_gcp/compute/get_image.py @@ -356,9 +356,6 @@ def get_image(family: Optional[str] = None, source_disk_id=pulumi.get(__ret__, 'source_disk_id'), source_image_id=pulumi.get(__ret__, 'source_image_id'), status=pulumi.get(__ret__, 'status')) - - -@_utilities.lift_output_func(get_image) def get_image_output(family: Optional[pulumi.Input[Optional[str]]] = None, filter: Optional[pulumi.Input[Optional[str]]] = None, most_recent: Optional[pulumi.Input[Optional[bool]]] = None, @@ -400,4 +397,33 @@ def get_image_output(family: Optional[pulumi.Input[Optional[str]]] = None, provided, the provider project is used. If you are using a [public base image][pubimg], be sure to specify the correct Image Project. """ - ... + __args__ = dict() + __args__['family'] = family + __args__['filter'] = filter + __args__['mostRecent'] = most_recent + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getImage:getImage', __args__, opts=opts, typ=GetImageResult) + return __ret__.apply(lambda __response__: GetImageResult( + archive_size_bytes=pulumi.get(__response__, 'archive_size_bytes'), + creation_timestamp=pulumi.get(__response__, 'creation_timestamp'), + description=pulumi.get(__response__, 'description'), + disk_size_gb=pulumi.get(__response__, 'disk_size_gb'), + family=pulumi.get(__response__, 'family'), + filter=pulumi.get(__response__, 'filter'), + id=pulumi.get(__response__, 'id'), + image_encryption_key_sha256=pulumi.get(__response__, 'image_encryption_key_sha256'), + image_id=pulumi.get(__response__, 'image_id'), + label_fingerprint=pulumi.get(__response__, 'label_fingerprint'), + labels=pulumi.get(__response__, 'labels'), + licenses=pulumi.get(__response__, 'licenses'), + most_recent=pulumi.get(__response__, 'most_recent'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + self_link=pulumi.get(__response__, 'self_link'), + source_disk=pulumi.get(__response__, 'source_disk'), + source_disk_encryption_key_sha256=pulumi.get(__response__, 'source_disk_encryption_key_sha256'), + source_disk_id=pulumi.get(__response__, 'source_disk_id'), + source_image_id=pulumi.get(__response__, 'source_image_id'), + status=pulumi.get(__response__, 'status'))) diff --git a/sdk/python/pulumi_gcp/compute/get_image_iam_policy.py b/sdk/python/pulumi_gcp/compute/get_image_iam_policy.py index c3d9d7ad90..99885046a7 100644 --- a/sdk/python/pulumi_gcp/compute/get_image_iam_policy.py +++ b/sdk/python/pulumi_gcp/compute/get_image_iam_policy.py @@ -125,9 +125,6 @@ def get_image_iam_policy(image: Optional[str] = None, image=pulumi.get(__ret__, 'image'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_image_iam_policy) def get_image_iam_policy_output(image: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetImageIamPolicyResult]: @@ -149,4 +146,14 @@ def get_image_iam_policy_output(image: Optional[pulumi.Input[str]] = None, :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['image'] = image + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getImageIamPolicy:getImageIamPolicy', __args__, opts=opts, typ=GetImageIamPolicyResult) + return __ret__.apply(lambda __response__: GetImageIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + image=pulumi.get(__response__, 'image'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/compute/get_instance.py b/sdk/python/pulumi_gcp/compute/get_instance.py index 90c4cfedf5..63cf2801bf 100644 --- a/sdk/python/pulumi_gcp/compute/get_instance.py +++ b/sdk/python/pulumi_gcp/compute/get_instance.py @@ -569,9 +569,6 @@ def get_instance(name: Optional[str] = None, tags=pulumi.get(__ret__, 'tags'), tags_fingerprint=pulumi.get(__ret__, 'tags_fingerprint'), zone=pulumi.get(__ret__, 'zone')) - - -@_utilities.lift_output_func(get_instance) def get_instance_output(name: Optional[pulumi.Input[Optional[str]]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, self_link: Optional[pulumi.Input[Optional[str]]] = None, @@ -603,4 +600,52 @@ def get_instance_output(name: Optional[pulumi.Input[Optional[str]]] = None, value is ignored. If neither `self_link` nor `zone` are provided, the provider zone is used. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + __args__['selfLink'] = self_link + __args__['zone'] = zone + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getInstance:getInstance', __args__, opts=opts, typ=GetInstanceResult) + return __ret__.apply(lambda __response__: GetInstanceResult( + advanced_machine_features=pulumi.get(__response__, 'advanced_machine_features'), + allow_stopping_for_update=pulumi.get(__response__, 'allow_stopping_for_update'), + attached_disks=pulumi.get(__response__, 'attached_disks'), + boot_disks=pulumi.get(__response__, 'boot_disks'), + can_ip_forward=pulumi.get(__response__, 'can_ip_forward'), + confidential_instance_configs=pulumi.get(__response__, 'confidential_instance_configs'), + cpu_platform=pulumi.get(__response__, 'cpu_platform'), + current_status=pulumi.get(__response__, 'current_status'), + deletion_protection=pulumi.get(__response__, 'deletion_protection'), + description=pulumi.get(__response__, 'description'), + desired_status=pulumi.get(__response__, 'desired_status'), + effective_labels=pulumi.get(__response__, 'effective_labels'), + enable_display=pulumi.get(__response__, 'enable_display'), + guest_accelerators=pulumi.get(__response__, 'guest_accelerators'), + hostname=pulumi.get(__response__, 'hostname'), + id=pulumi.get(__response__, 'id'), + instance_id=pulumi.get(__response__, 'instance_id'), + label_fingerprint=pulumi.get(__response__, 'label_fingerprint'), + labels=pulumi.get(__response__, 'labels'), + machine_type=pulumi.get(__response__, 'machine_type'), + metadata=pulumi.get(__response__, 'metadata'), + metadata_fingerprint=pulumi.get(__response__, 'metadata_fingerprint'), + metadata_startup_script=pulumi.get(__response__, 'metadata_startup_script'), + min_cpu_platform=pulumi.get(__response__, 'min_cpu_platform'), + name=pulumi.get(__response__, 'name'), + network_interfaces=pulumi.get(__response__, 'network_interfaces'), + network_performance_configs=pulumi.get(__response__, 'network_performance_configs'), + params=pulumi.get(__response__, 'params'), + partner_metadata=pulumi.get(__response__, 'partner_metadata'), + project=pulumi.get(__response__, 'project'), + pulumi_labels=pulumi.get(__response__, 'pulumi_labels'), + reservation_affinities=pulumi.get(__response__, 'reservation_affinities'), + resource_policies=pulumi.get(__response__, 'resource_policies'), + schedulings=pulumi.get(__response__, 'schedulings'), + scratch_disks=pulumi.get(__response__, 'scratch_disks'), + self_link=pulumi.get(__response__, 'self_link'), + service_accounts=pulumi.get(__response__, 'service_accounts'), + shielded_instance_configs=pulumi.get(__response__, 'shielded_instance_configs'), + tags=pulumi.get(__response__, 'tags'), + tags_fingerprint=pulumi.get(__response__, 'tags_fingerprint'), + zone=pulumi.get(__response__, 'zone'))) diff --git a/sdk/python/pulumi_gcp/compute/get_instance_group.py b/sdk/python/pulumi_gcp/compute/get_instance_group.py index e36abea4c0..3c8731343d 100644 --- a/sdk/python/pulumi_gcp/compute/get_instance_group.py +++ b/sdk/python/pulumi_gcp/compute/get_instance_group.py @@ -194,9 +194,6 @@ def get_instance_group(name: Optional[str] = None, self_link=pulumi.get(__ret__, 'self_link'), size=pulumi.get(__ret__, 'size'), zone=pulumi.get(__ret__, 'zone')) - - -@_utilities.lift_output_func(get_instance_group) def get_instance_group_output(name: Optional[pulumi.Input[Optional[str]]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, self_link: Optional[pulumi.Input[Optional[str]]] = None, @@ -223,4 +220,21 @@ def get_instance_group_output(name: Optional[pulumi.Input[Optional[str]]] = None :param str zone: The zone of the instance group. If referencing the instance group by name and `zone` is not provided, the provider zone is used. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + __args__['selfLink'] = self_link + __args__['zone'] = zone + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getInstanceGroup:getInstanceGroup', __args__, opts=opts, typ=GetInstanceGroupResult) + return __ret__.apply(lambda __response__: GetInstanceGroupResult( + description=pulumi.get(__response__, 'description'), + id=pulumi.get(__response__, 'id'), + instances=pulumi.get(__response__, 'instances'), + name=pulumi.get(__response__, 'name'), + named_ports=pulumi.get(__response__, 'named_ports'), + network=pulumi.get(__response__, 'network'), + project=pulumi.get(__response__, 'project'), + self_link=pulumi.get(__response__, 'self_link'), + size=pulumi.get(__response__, 'size'), + zone=pulumi.get(__response__, 'zone'))) diff --git a/sdk/python/pulumi_gcp/compute/get_instance_group_manager.py b/sdk/python/pulumi_gcp/compute/get_instance_group_manager.py index afe0603a7d..899d42ae19 100644 --- a/sdk/python/pulumi_gcp/compute/get_instance_group_manager.py +++ b/sdk/python/pulumi_gcp/compute/get_instance_group_manager.py @@ -377,9 +377,6 @@ def get_instance_group_manager(name: Optional[str] = None, wait_for_instances=pulumi.get(__ret__, 'wait_for_instances'), wait_for_instances_status=pulumi.get(__ret__, 'wait_for_instances_status'), zone=pulumi.get(__ret__, 'zone')) - - -@_utilities.lift_output_func(get_instance_group_manager) def get_instance_group_manager_output(name: Optional[pulumi.Input[Optional[str]]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, self_link: Optional[pulumi.Input[Optional[str]]] = None, @@ -407,4 +404,41 @@ def get_instance_group_manager_output(name: Optional[pulumi.Input[Optional[str]] :param str self_link: The self link of the instance group. Either `name` or `self_link` must be provided. :param str zone: The zone of the instance group. If referencing the instance group by name and `zone` is not provided, the provider zone is used. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + __args__['selfLink'] = self_link + __args__['zone'] = zone + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getInstanceGroupManager:getInstanceGroupManager', __args__, opts=opts, typ=GetInstanceGroupManagerResult) + return __ret__.apply(lambda __response__: GetInstanceGroupManagerResult( + all_instances_configs=pulumi.get(__response__, 'all_instances_configs'), + auto_healing_policies=pulumi.get(__response__, 'auto_healing_policies'), + base_instance_name=pulumi.get(__response__, 'base_instance_name'), + creation_timestamp=pulumi.get(__response__, 'creation_timestamp'), + description=pulumi.get(__response__, 'description'), + fingerprint=pulumi.get(__response__, 'fingerprint'), + id=pulumi.get(__response__, 'id'), + instance_group=pulumi.get(__response__, 'instance_group'), + instance_lifecycle_policies=pulumi.get(__response__, 'instance_lifecycle_policies'), + list_managed_instances_results=pulumi.get(__response__, 'list_managed_instances_results'), + name=pulumi.get(__response__, 'name'), + named_ports=pulumi.get(__response__, 'named_ports'), + operation=pulumi.get(__response__, 'operation'), + params=pulumi.get(__response__, 'params'), + project=pulumi.get(__response__, 'project'), + self_link=pulumi.get(__response__, 'self_link'), + standby_policies=pulumi.get(__response__, 'standby_policies'), + stateful_disks=pulumi.get(__response__, 'stateful_disks'), + stateful_external_ips=pulumi.get(__response__, 'stateful_external_ips'), + stateful_internal_ips=pulumi.get(__response__, 'stateful_internal_ips'), + statuses=pulumi.get(__response__, 'statuses'), + target_pools=pulumi.get(__response__, 'target_pools'), + target_size=pulumi.get(__response__, 'target_size'), + target_stopped_size=pulumi.get(__response__, 'target_stopped_size'), + target_suspended_size=pulumi.get(__response__, 'target_suspended_size'), + update_policies=pulumi.get(__response__, 'update_policies'), + versions=pulumi.get(__response__, 'versions'), + wait_for_instances=pulumi.get(__response__, 'wait_for_instances'), + wait_for_instances_status=pulumi.get(__response__, 'wait_for_instances_status'), + zone=pulumi.get(__response__, 'zone'))) diff --git a/sdk/python/pulumi_gcp/compute/get_instance_iam_policy.py b/sdk/python/pulumi_gcp/compute/get_instance_iam_policy.py index 0145aa97be..19089d53af 100644 --- a/sdk/python/pulumi_gcp/compute/get_instance_iam_policy.py +++ b/sdk/python/pulumi_gcp/compute/get_instance_iam_policy.py @@ -141,9 +141,6 @@ def get_instance_iam_policy(instance_name: Optional[str] = None, policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project'), zone=pulumi.get(__ret__, 'zone')) - - -@_utilities.lift_output_func(get_instance_iam_policy) def get_instance_iam_policy_output(instance_name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, zone: Optional[pulumi.Input[Optional[str]]] = None, @@ -170,4 +167,16 @@ def get_instance_iam_policy_output(instance_name: Optional[pulumi.Input[str]] = the value will be parsed from the identifier of the parent resource. If no zone is provided in the parent identifier and no zone is specified, it is taken from the provider configuration. """ - ... + __args__ = dict() + __args__['instanceName'] = instance_name + __args__['project'] = project + __args__['zone'] = zone + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getInstanceIamPolicy:getInstanceIamPolicy', __args__, opts=opts, typ=GetInstanceIamPolicyResult) + return __ret__.apply(lambda __response__: GetInstanceIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + instance_name=pulumi.get(__response__, 'instance_name'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'), + zone=pulumi.get(__response__, 'zone'))) diff --git a/sdk/python/pulumi_gcp/compute/get_instance_serial_port.py b/sdk/python/pulumi_gcp/compute/get_instance_serial_port.py index 61e3f0be4e..3bfb56366d 100644 --- a/sdk/python/pulumi_gcp/compute/get_instance_serial_port.py +++ b/sdk/python/pulumi_gcp/compute/get_instance_serial_port.py @@ -190,9 +190,6 @@ def get_instance_serial_port(instance: Optional[str] = None, port=pulumi.get(__ret__, 'port'), project=pulumi.get(__ret__, 'project'), zone=pulumi.get(__ret__, 'zone')) - - -@_utilities.lift_output_func(get_instance_serial_port) def get_instance_serial_port_output(instance: Optional[pulumi.Input[str]] = None, port: Optional[pulumi.Input[int]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -271,4 +268,17 @@ def get_instance_serial_port_output(instance: Optional[pulumi.Input[str]] = None :param str zone: The zone in which the Compute Instance exists. If it is not provided, the provider zone is used. """ - ... + __args__ = dict() + __args__['instance'] = instance + __args__['port'] = port + __args__['project'] = project + __args__['zone'] = zone + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getInstanceSerialPort:getInstanceSerialPort', __args__, opts=opts, typ=GetInstanceSerialPortResult) + return __ret__.apply(lambda __response__: GetInstanceSerialPortResult( + contents=pulumi.get(__response__, 'contents'), + id=pulumi.get(__response__, 'id'), + instance=pulumi.get(__response__, 'instance'), + port=pulumi.get(__response__, 'port'), + project=pulumi.get(__response__, 'project'), + zone=pulumi.get(__response__, 'zone'))) diff --git a/sdk/python/pulumi_gcp/compute/get_instance_template.py b/sdk/python/pulumi_gcp/compute/get_instance_template.py index 6923fde685..438eeb2575 100644 --- a/sdk/python/pulumi_gcp/compute/get_instance_template.py +++ b/sdk/python/pulumi_gcp/compute/get_instance_template.py @@ -540,9 +540,6 @@ def get_instance_template(filter: Optional[str] = None, shielded_instance_configs=pulumi.get(__ret__, 'shielded_instance_configs'), tags=pulumi.get(__ret__, 'tags'), tags_fingerprint=pulumi.get(__ret__, 'tags_fingerprint')) - - -@_utilities.lift_output_func(get_instance_template) def get_instance_template_output(filter: Optional[pulumi.Input[Optional[str]]] = None, most_recent: Optional[pulumi.Input[Optional[bool]]] = None, name: Optional[pulumi.Input[Optional[str]]] = None, @@ -568,4 +565,48 @@ def get_instance_template_output(filter: Optional[pulumi.Input[Optional[str]]] = If `project` is not provided, the provider project is used. :param str self_link_unique: The self_link_unique URI of the instance template. One of `name`, `filter` or `self_link_unique` must be provided. """ - ... + __args__ = dict() + __args__['filter'] = filter + __args__['mostRecent'] = most_recent + __args__['name'] = name + __args__['project'] = project + __args__['selfLinkUnique'] = self_link_unique + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getInstanceTemplate:getInstanceTemplate', __args__, opts=opts, typ=GetInstanceTemplateResult) + return __ret__.apply(lambda __response__: GetInstanceTemplateResult( + advanced_machine_features=pulumi.get(__response__, 'advanced_machine_features'), + can_ip_forward=pulumi.get(__response__, 'can_ip_forward'), + confidential_instance_configs=pulumi.get(__response__, 'confidential_instance_configs'), + description=pulumi.get(__response__, 'description'), + disks=pulumi.get(__response__, 'disks'), + effective_labels=pulumi.get(__response__, 'effective_labels'), + enable_display=pulumi.get(__response__, 'enable_display'), + filter=pulumi.get(__response__, 'filter'), + guest_accelerators=pulumi.get(__response__, 'guest_accelerators'), + id=pulumi.get(__response__, 'id'), + instance_description=pulumi.get(__response__, 'instance_description'), + labels=pulumi.get(__response__, 'labels'), + machine_type=pulumi.get(__response__, 'machine_type'), + metadata=pulumi.get(__response__, 'metadata'), + metadata_fingerprint=pulumi.get(__response__, 'metadata_fingerprint'), + metadata_startup_script=pulumi.get(__response__, 'metadata_startup_script'), + min_cpu_platform=pulumi.get(__response__, 'min_cpu_platform'), + most_recent=pulumi.get(__response__, 'most_recent'), + name=pulumi.get(__response__, 'name'), + name_prefix=pulumi.get(__response__, 'name_prefix'), + network_interfaces=pulumi.get(__response__, 'network_interfaces'), + network_performance_configs=pulumi.get(__response__, 'network_performance_configs'), + partner_metadata=pulumi.get(__response__, 'partner_metadata'), + project=pulumi.get(__response__, 'project'), + pulumi_labels=pulumi.get(__response__, 'pulumi_labels'), + region=pulumi.get(__response__, 'region'), + reservation_affinities=pulumi.get(__response__, 'reservation_affinities'), + resource_manager_tags=pulumi.get(__response__, 'resource_manager_tags'), + resource_policies=pulumi.get(__response__, 'resource_policies'), + schedulings=pulumi.get(__response__, 'schedulings'), + self_link=pulumi.get(__response__, 'self_link'), + self_link_unique=pulumi.get(__response__, 'self_link_unique'), + service_accounts=pulumi.get(__response__, 'service_accounts'), + shielded_instance_configs=pulumi.get(__response__, 'shielded_instance_configs'), + tags=pulumi.get(__response__, 'tags'), + tags_fingerprint=pulumi.get(__response__, 'tags_fingerprint'))) diff --git a/sdk/python/pulumi_gcp/compute/get_lbip_ranges.py b/sdk/python/pulumi_gcp/compute/get_lbip_ranges.py index 660e736336..b9fd455f89 100644 --- a/sdk/python/pulumi_gcp/compute/get_lbip_ranges.py +++ b/sdk/python/pulumi_gcp/compute/get_lbip_ranges.py @@ -105,9 +105,6 @@ def get_lbip_ranges(opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGet http_ssl_tcp_internals=pulumi.get(__ret__, 'http_ssl_tcp_internals'), id=pulumi.get(__ret__, 'id'), networks=pulumi.get(__ret__, 'networks')) - - -@_utilities.lift_output_func(get_lbip_ranges) def get_lbip_ranges_output(opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetLBIPRangesResult]: """ Use this data source to access IP ranges in your firewall rules. @@ -132,4 +129,10 @@ def get_lbip_ranges_output(opts: Optional[pulumi.InvokeOptions] = None) -> pulum target_tags=["InstanceBehindLoadBalancer"]) ``` """ - ... + __args__ = dict() + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getLBIPRanges:getLBIPRanges', __args__, opts=opts, typ=GetLBIPRangesResult) + return __ret__.apply(lambda __response__: GetLBIPRangesResult( + http_ssl_tcp_internals=pulumi.get(__response__, 'http_ssl_tcp_internals'), + id=pulumi.get(__response__, 'id'), + networks=pulumi.get(__response__, 'networks'))) diff --git a/sdk/python/pulumi_gcp/compute/get_machine_image_iam_policy.py b/sdk/python/pulumi_gcp/compute/get_machine_image_iam_policy.py index b58bb28349..85a839afd5 100644 --- a/sdk/python/pulumi_gcp/compute/get_machine_image_iam_policy.py +++ b/sdk/python/pulumi_gcp/compute/get_machine_image_iam_policy.py @@ -114,9 +114,6 @@ def get_machine_image_iam_policy(machine_image: Optional[str] = None, machine_image=pulumi.get(__ret__, 'machine_image'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_machine_image_iam_policy) def get_machine_image_iam_policy_output(machine_image: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetMachineImageIamPolicyResult]: @@ -127,4 +124,14 @@ def get_machine_image_iam_policy_output(machine_image: Optional[pulumi.Input[str :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['machineImage'] = machine_image + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getMachineImageIamPolicy:getMachineImageIamPolicy', __args__, opts=opts, typ=GetMachineImageIamPolicyResult) + return __ret__.apply(lambda __response__: GetMachineImageIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + machine_image=pulumi.get(__response__, 'machine_image'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/compute/get_machine_types.py b/sdk/python/pulumi_gcp/compute/get_machine_types.py index fd8717c89e..a8f35533ac 100644 --- a/sdk/python/pulumi_gcp/compute/get_machine_types.py +++ b/sdk/python/pulumi_gcp/compute/get_machine_types.py @@ -122,9 +122,6 @@ def get_machine_types(filter: Optional[str] = None, machine_types=pulumi.get(__ret__, 'machine_types'), project=pulumi.get(__ret__, 'project'), zone=pulumi.get(__ret__, 'zone')) - - -@_utilities.lift_output_func(get_machine_types) def get_machine_types_output(filter: Optional[pulumi.Input[Optional[str]]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, zone: Optional[pulumi.Input[Optional[str]]] = None, @@ -145,4 +142,15 @@ def get_machine_types_output(filter: Optional[pulumi.Input[Optional[str]]] = Non :param str project: Project from which to list available zones. Defaults to project declared in the provider. :param str zone: Zone from which to list machine types. """ - ... + __args__ = dict() + __args__['filter'] = filter + __args__['project'] = project + __args__['zone'] = zone + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getMachineTypes:getMachineTypes', __args__, opts=opts, typ=GetMachineTypesResult) + return __ret__.apply(lambda __response__: GetMachineTypesResult( + filter=pulumi.get(__response__, 'filter'), + id=pulumi.get(__response__, 'id'), + machine_types=pulumi.get(__response__, 'machine_types'), + project=pulumi.get(__response__, 'project'), + zone=pulumi.get(__response__, 'zone'))) diff --git a/sdk/python/pulumi_gcp/compute/get_netblock_ip_ranges.py b/sdk/python/pulumi_gcp/compute/get_netblock_ip_ranges.py index 103d12aaed..92f5a4ca7d 100644 --- a/sdk/python/pulumi_gcp/compute/get_netblock_ip_ranges.py +++ b/sdk/python/pulumi_gcp/compute/get_netblock_ip_ranges.py @@ -163,9 +163,6 @@ def get_netblock_ip_ranges(range_type: Optional[str] = None, cidr_blocks_ipv6s=pulumi.get(__ret__, 'cidr_blocks_ipv6s'), id=pulumi.get(__ret__, 'id'), range_type=pulumi.get(__ret__, 'range_type')) - - -@_utilities.lift_output_func(get_netblock_ip_ranges) def get_netblock_ip_ranges_output(range_type: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetNetblockIPRangesResult]: """ @@ -224,4 +221,13 @@ def get_netblock_ip_ranges_output(range_type: Optional[pulumi.Input[Optional[str * `legacy-health-checkers` - Corresponds to the IP addresses used for legacy style health checkers (used by Network Load Balancing). [ More details.](https://cloud.google.com/load-balancing/docs/health-checks) """ - ... + __args__ = dict() + __args__['rangeType'] = range_type + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getNetblockIPRanges:getNetblockIPRanges', __args__, opts=opts, typ=GetNetblockIPRangesResult) + return __ret__.apply(lambda __response__: GetNetblockIPRangesResult( + cidr_blocks=pulumi.get(__response__, 'cidr_blocks'), + cidr_blocks_ipv4s=pulumi.get(__response__, 'cidr_blocks_ipv4s'), + cidr_blocks_ipv6s=pulumi.get(__response__, 'cidr_blocks_ipv6s'), + id=pulumi.get(__response__, 'id'), + range_type=pulumi.get(__response__, 'range_type'))) diff --git a/sdk/python/pulumi_gcp/compute/get_network.py b/sdk/python/pulumi_gcp/compute/get_network.py index 74e0cffc62..bfd7b97b46 100644 --- a/sdk/python/pulumi_gcp/compute/get_network.py +++ b/sdk/python/pulumi_gcp/compute/get_network.py @@ -165,9 +165,6 @@ def get_network(name: Optional[str] = None, project=pulumi.get(__ret__, 'project'), self_link=pulumi.get(__ret__, 'self_link'), subnetworks_self_links=pulumi.get(__ret__, 'subnetworks_self_links')) - - -@_utilities.lift_output_func(get_network) def get_network_output(name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetNetworkResult]: @@ -191,4 +188,17 @@ def get_network_output(name: Optional[pulumi.Input[str]] = None, :param str project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getNetwork:getNetwork', __args__, opts=opts, typ=GetNetworkResult) + return __ret__.apply(lambda __response__: GetNetworkResult( + description=pulumi.get(__response__, 'description'), + gateway_ipv4=pulumi.get(__response__, 'gateway_ipv4'), + id=pulumi.get(__response__, 'id'), + internal_ipv6_range=pulumi.get(__response__, 'internal_ipv6_range'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + self_link=pulumi.get(__response__, 'self_link'), + subnetworks_self_links=pulumi.get(__response__, 'subnetworks_self_links'))) diff --git a/sdk/python/pulumi_gcp/compute/get_network_endpoint_group.py b/sdk/python/pulumi_gcp/compute/get_network_endpoint_group.py index 4f13eb19a2..bac27a5641 100644 --- a/sdk/python/pulumi_gcp/compute/get_network_endpoint_group.py +++ b/sdk/python/pulumi_gcp/compute/get_network_endpoint_group.py @@ -206,9 +206,6 @@ def get_network_endpoint_group(name: Optional[str] = None, size=pulumi.get(__ret__, 'size'), subnetwork=pulumi.get(__ret__, 'subnetwork'), zone=pulumi.get(__ret__, 'zone')) - - -@_utilities.lift_output_func(get_network_endpoint_group) def get_network_endpoint_group_output(name: Optional[pulumi.Input[Optional[str]]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, self_link: Optional[pulumi.Input[Optional[str]]] = None, @@ -238,4 +235,22 @@ def get_network_endpoint_group_output(name: Optional[pulumi.Input[Optional[str]] :param str self_link: The Network Endpoint Group self_link. :param str zone: The Network Endpoint Group availability zone. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + __args__['selfLink'] = self_link + __args__['zone'] = zone + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getNetworkEndpointGroup:getNetworkEndpointGroup', __args__, opts=opts, typ=GetNetworkEndpointGroupResult) + return __ret__.apply(lambda __response__: GetNetworkEndpointGroupResult( + default_port=pulumi.get(__response__, 'default_port'), + description=pulumi.get(__response__, 'description'), + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'), + network=pulumi.get(__response__, 'network'), + network_endpoint_type=pulumi.get(__response__, 'network_endpoint_type'), + project=pulumi.get(__response__, 'project'), + self_link=pulumi.get(__response__, 'self_link'), + size=pulumi.get(__response__, 'size'), + subnetwork=pulumi.get(__response__, 'subnetwork'), + zone=pulumi.get(__response__, 'zone'))) diff --git a/sdk/python/pulumi_gcp/compute/get_network_peering.py b/sdk/python/pulumi_gcp/compute/get_network_peering.py index 45c7e07e59..a978040a53 100644 --- a/sdk/python/pulumi_gcp/compute/get_network_peering.py +++ b/sdk/python/pulumi_gcp/compute/get_network_peering.py @@ -194,9 +194,6 @@ def get_network_peering(name: Optional[str] = None, stack_type=pulumi.get(__ret__, 'stack_type'), state=pulumi.get(__ret__, 'state'), state_details=pulumi.get(__ret__, 'state_details')) - - -@_utilities.lift_output_func(get_network_peering) def get_network_peering_output(name: Optional[pulumi.Input[str]] = None, network: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetNetworkPeeringResult]: @@ -234,4 +231,20 @@ def get_network_peering_output(name: Optional[pulumi.Input[str]] = None, :param str name: Name of the peering. :param str network: The primary network of the peering. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['network'] = network + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getNetworkPeering:getNetworkPeering', __args__, opts=opts, typ=GetNetworkPeeringResult) + return __ret__.apply(lambda __response__: GetNetworkPeeringResult( + export_custom_routes=pulumi.get(__response__, 'export_custom_routes'), + export_subnet_routes_with_public_ip=pulumi.get(__response__, 'export_subnet_routes_with_public_ip'), + id=pulumi.get(__response__, 'id'), + import_custom_routes=pulumi.get(__response__, 'import_custom_routes'), + import_subnet_routes_with_public_ip=pulumi.get(__response__, 'import_subnet_routes_with_public_ip'), + name=pulumi.get(__response__, 'name'), + network=pulumi.get(__response__, 'network'), + peer_network=pulumi.get(__response__, 'peer_network'), + stack_type=pulumi.get(__response__, 'stack_type'), + state=pulumi.get(__response__, 'state'), + state_details=pulumi.get(__response__, 'state_details'))) diff --git a/sdk/python/pulumi_gcp/compute/get_networks.py b/sdk/python/pulumi_gcp/compute/get_networks.py index cf0486a538..1375e377d8 100644 --- a/sdk/python/pulumi_gcp/compute/get_networks.py +++ b/sdk/python/pulumi_gcp/compute/get_networks.py @@ -112,9 +112,6 @@ def get_networks(project: Optional[str] = None, networks=pulumi.get(__ret__, 'networks'), project=pulumi.get(__ret__, 'project'), self_link=pulumi.get(__ret__, 'self_link')) - - -@_utilities.lift_output_func(get_networks) def get_networks_output(project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetNetworksResult]: """ @@ -132,4 +129,12 @@ def get_networks_output(project: Optional[pulumi.Input[Optional[str]]] = None, :param str project: The name of the project. """ - ... + __args__ = dict() + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getNetworks:getNetworks', __args__, opts=opts, typ=GetNetworksResult) + return __ret__.apply(lambda __response__: GetNetworksResult( + id=pulumi.get(__response__, 'id'), + networks=pulumi.get(__response__, 'networks'), + project=pulumi.get(__response__, 'project'), + self_link=pulumi.get(__response__, 'self_link'))) diff --git a/sdk/python/pulumi_gcp/compute/get_node_types.py b/sdk/python/pulumi_gcp/compute/get_node_types.py index d01e8bac07..02ca872d82 100644 --- a/sdk/python/pulumi_gcp/compute/get_node_types.py +++ b/sdk/python/pulumi_gcp/compute/get_node_types.py @@ -117,9 +117,6 @@ def get_node_types(project: Optional[str] = None, names=pulumi.get(__ret__, 'names'), project=pulumi.get(__ret__, 'project'), zone=pulumi.get(__ret__, 'zone')) - - -@_utilities.lift_output_func(get_node_types) def get_node_types_output(project: Optional[pulumi.Input[Optional[str]]] = None, zone: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetNodeTypesResult]: @@ -147,4 +144,13 @@ def get_node_types_output(project: Optional[pulumi.Input[Optional[str]]] = None, :param str zone: The zone to list node types for. Should be in zone of intended node groups and region of referencing node template. If `zone` is not specified, the provider-level zone must be set and is used instead. """ - ... + __args__ = dict() + __args__['project'] = project + __args__['zone'] = zone + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getNodeTypes:getNodeTypes', __args__, opts=opts, typ=GetNodeTypesResult) + return __ret__.apply(lambda __response__: GetNodeTypesResult( + id=pulumi.get(__response__, 'id'), + names=pulumi.get(__response__, 'names'), + project=pulumi.get(__response__, 'project'), + zone=pulumi.get(__response__, 'zone'))) diff --git a/sdk/python/pulumi_gcp/compute/get_region_backend_service_iam_policy.py b/sdk/python/pulumi_gcp/compute/get_region_backend_service_iam_policy.py index d26d44764e..f6a56ae3e5 100644 --- a/sdk/python/pulumi_gcp/compute/get_region_backend_service_iam_policy.py +++ b/sdk/python/pulumi_gcp/compute/get_region_backend_service_iam_policy.py @@ -131,9 +131,6 @@ def get_region_backend_service_iam_policy(name: Optional[str] = None, policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project'), region=pulumi.get(__ret__, 'region')) - - -@_utilities.lift_output_func(get_region_backend_service_iam_policy) def get_region_backend_service_iam_policy_output(name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, region: Optional[pulumi.Input[Optional[str]]] = None, @@ -150,4 +147,16 @@ def get_region_backend_service_iam_policy_output(name: Optional[pulumi.Input[str the value will be parsed from the identifier of the parent resource. If no region is provided in the parent identifier and no region is specified, it is taken from the provider configuration. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + __args__['region'] = region + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getRegionBackendServiceIamPolicy:getRegionBackendServiceIamPolicy', __args__, opts=opts, typ=GetRegionBackendServiceIamPolicyResult) + return __ret__.apply(lambda __response__: GetRegionBackendServiceIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'), + region=pulumi.get(__response__, 'region'))) diff --git a/sdk/python/pulumi_gcp/compute/get_region_disk.py b/sdk/python/pulumi_gcp/compute/get_region_disk.py index 98d4f1c82c..ac37c9da99 100644 --- a/sdk/python/pulumi_gcp/compute/get_region_disk.py +++ b/sdk/python/pulumi_gcp/compute/get_region_disk.py @@ -346,9 +346,6 @@ def get_region_disk(name: Optional[str] = None, source_snapshot_id=pulumi.get(__ret__, 'source_snapshot_id'), type=pulumi.get(__ret__, 'type'), users=pulumi.get(__ret__, 'users')) - - -@_utilities.lift_output_func(get_region_disk) def get_region_disk_output(name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, region: Optional[pulumi.Input[Optional[str]]] = None, @@ -366,4 +363,38 @@ def get_region_disk_output(name: Optional[pulumi.Input[str]] = None, If it is not provided, the provider project is used. :param str region: A reference to the region where the disk resides. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + __args__['region'] = region + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getRegionDisk:getRegionDisk', __args__, opts=opts, typ=GetRegionDiskResult) + return __ret__.apply(lambda __response__: GetRegionDiskResult( + async_primary_disks=pulumi.get(__response__, 'async_primary_disks'), + creation_timestamp=pulumi.get(__response__, 'creation_timestamp'), + description=pulumi.get(__response__, 'description'), + disk_encryption_keys=pulumi.get(__response__, 'disk_encryption_keys'), + effective_labels=pulumi.get(__response__, 'effective_labels'), + guest_os_features=pulumi.get(__response__, 'guest_os_features'), + id=pulumi.get(__response__, 'id'), + interface=pulumi.get(__response__, 'interface'), + label_fingerprint=pulumi.get(__response__, 'label_fingerprint'), + labels=pulumi.get(__response__, 'labels'), + last_attach_timestamp=pulumi.get(__response__, 'last_attach_timestamp'), + last_detach_timestamp=pulumi.get(__response__, 'last_detach_timestamp'), + licenses=pulumi.get(__response__, 'licenses'), + name=pulumi.get(__response__, 'name'), + physical_block_size_bytes=pulumi.get(__response__, 'physical_block_size_bytes'), + project=pulumi.get(__response__, 'project'), + pulumi_labels=pulumi.get(__response__, 'pulumi_labels'), + region=pulumi.get(__response__, 'region'), + replica_zones=pulumi.get(__response__, 'replica_zones'), + self_link=pulumi.get(__response__, 'self_link'), + size=pulumi.get(__response__, 'size'), + snapshot=pulumi.get(__response__, 'snapshot'), + source_disk=pulumi.get(__response__, 'source_disk'), + source_disk_id=pulumi.get(__response__, 'source_disk_id'), + source_snapshot_encryption_keys=pulumi.get(__response__, 'source_snapshot_encryption_keys'), + source_snapshot_id=pulumi.get(__response__, 'source_snapshot_id'), + type=pulumi.get(__response__, 'type'), + users=pulumi.get(__response__, 'users'))) diff --git a/sdk/python/pulumi_gcp/compute/get_region_disk_iam_policy.py b/sdk/python/pulumi_gcp/compute/get_region_disk_iam_policy.py index 38abaa405a..853118b1b9 100644 --- a/sdk/python/pulumi_gcp/compute/get_region_disk_iam_policy.py +++ b/sdk/python/pulumi_gcp/compute/get_region_disk_iam_policy.py @@ -141,9 +141,6 @@ def get_region_disk_iam_policy(name: Optional[str] = None, policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project'), region=pulumi.get(__ret__, 'region')) - - -@_utilities.lift_output_func(get_region_disk_iam_policy) def get_region_disk_iam_policy_output(name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, region: Optional[pulumi.Input[Optional[str]]] = None, @@ -170,4 +167,16 @@ def get_region_disk_iam_policy_output(name: Optional[pulumi.Input[str]] = None, the value will be parsed from the identifier of the parent resource. If no region is provided in the parent identifier and no region is specified, it is taken from the provider configuration. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + __args__['region'] = region + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getRegionDiskIamPolicy:getRegionDiskIamPolicy', __args__, opts=opts, typ=GetRegionDiskIamPolicyResult) + return __ret__.apply(lambda __response__: GetRegionDiskIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'), + region=pulumi.get(__response__, 'region'))) diff --git a/sdk/python/pulumi_gcp/compute/get_region_instance_group.py b/sdk/python/pulumi_gcp/compute/get_region_instance_group.py index 719edb177b..6ce2cbc5a8 100644 --- a/sdk/python/pulumi_gcp/compute/get_region_instance_group.py +++ b/sdk/python/pulumi_gcp/compute/get_region_instance_group.py @@ -159,9 +159,6 @@ def get_region_instance_group(name: Optional[str] = None, region=pulumi.get(__ret__, 'region'), self_link=pulumi.get(__ret__, 'self_link'), size=pulumi.get(__ret__, 'size')) - - -@_utilities.lift_output_func(get_region_instance_group) def get_region_instance_group_output(name: Optional[pulumi.Input[Optional[str]]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, region: Optional[pulumi.Input[Optional[str]]] = None, @@ -192,4 +189,18 @@ def get_region_instance_group_output(name: Optional[pulumi.Input[Optional[str]]] - - - """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + __args__['region'] = region + __args__['selfLink'] = self_link + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getRegionInstanceGroup:getRegionInstanceGroup', __args__, opts=opts, typ=GetRegionInstanceGroupResult) + return __ret__.apply(lambda __response__: GetRegionInstanceGroupResult( + id=pulumi.get(__response__, 'id'), + instances=pulumi.get(__response__, 'instances'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + region=pulumi.get(__response__, 'region'), + self_link=pulumi.get(__response__, 'self_link'), + size=pulumi.get(__response__, 'size'))) diff --git a/sdk/python/pulumi_gcp/compute/get_region_instance_template.py b/sdk/python/pulumi_gcp/compute/get_region_instance_template.py index 0754c75434..b18b390c6d 100644 --- a/sdk/python/pulumi_gcp/compute/get_region_instance_template.py +++ b/sdk/python/pulumi_gcp/compute/get_region_instance_template.py @@ -527,9 +527,6 @@ def get_region_instance_template(filter: Optional[str] = None, shielded_instance_configs=pulumi.get(__ret__, 'shielded_instance_configs'), tags=pulumi.get(__ret__, 'tags'), tags_fingerprint=pulumi.get(__ret__, 'tags_fingerprint')) - - -@_utilities.lift_output_func(get_region_instance_template) def get_region_instance_template_output(filter: Optional[pulumi.Input[Optional[str]]] = None, most_recent: Optional[pulumi.Input[Optional[bool]]] = None, name: Optional[pulumi.Input[Optional[str]]] = None, @@ -566,4 +563,47 @@ def get_region_instance_template_output(filter: Optional[pulumi.Input[Optional[s :param str region: The Region in which the resource belongs. If `region` is not provided, the provider region is used. """ - ... + __args__ = dict() + __args__['filter'] = filter + __args__['mostRecent'] = most_recent + __args__['name'] = name + __args__['project'] = project + __args__['region'] = region + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getRegionInstanceTemplate:getRegionInstanceTemplate', __args__, opts=opts, typ=GetRegionInstanceTemplateResult) + return __ret__.apply(lambda __response__: GetRegionInstanceTemplateResult( + advanced_machine_features=pulumi.get(__response__, 'advanced_machine_features'), + can_ip_forward=pulumi.get(__response__, 'can_ip_forward'), + confidential_instance_configs=pulumi.get(__response__, 'confidential_instance_configs'), + description=pulumi.get(__response__, 'description'), + disks=pulumi.get(__response__, 'disks'), + effective_labels=pulumi.get(__response__, 'effective_labels'), + enable_display=pulumi.get(__response__, 'enable_display'), + filter=pulumi.get(__response__, 'filter'), + guest_accelerators=pulumi.get(__response__, 'guest_accelerators'), + id=pulumi.get(__response__, 'id'), + instance_description=pulumi.get(__response__, 'instance_description'), + labels=pulumi.get(__response__, 'labels'), + machine_type=pulumi.get(__response__, 'machine_type'), + metadata=pulumi.get(__response__, 'metadata'), + metadata_fingerprint=pulumi.get(__response__, 'metadata_fingerprint'), + metadata_startup_script=pulumi.get(__response__, 'metadata_startup_script'), + min_cpu_platform=pulumi.get(__response__, 'min_cpu_platform'), + most_recent=pulumi.get(__response__, 'most_recent'), + name=pulumi.get(__response__, 'name'), + name_prefix=pulumi.get(__response__, 'name_prefix'), + network_interfaces=pulumi.get(__response__, 'network_interfaces'), + network_performance_configs=pulumi.get(__response__, 'network_performance_configs'), + partner_metadata=pulumi.get(__response__, 'partner_metadata'), + project=pulumi.get(__response__, 'project'), + pulumi_labels=pulumi.get(__response__, 'pulumi_labels'), + region=pulumi.get(__response__, 'region'), + reservation_affinities=pulumi.get(__response__, 'reservation_affinities'), + resource_manager_tags=pulumi.get(__response__, 'resource_manager_tags'), + resource_policies=pulumi.get(__response__, 'resource_policies'), + schedulings=pulumi.get(__response__, 'schedulings'), + self_link=pulumi.get(__response__, 'self_link'), + service_accounts=pulumi.get(__response__, 'service_accounts'), + shielded_instance_configs=pulumi.get(__response__, 'shielded_instance_configs'), + tags=pulumi.get(__response__, 'tags'), + tags_fingerprint=pulumi.get(__response__, 'tags_fingerprint'))) diff --git a/sdk/python/pulumi_gcp/compute/get_region_network_endpoint_group.py b/sdk/python/pulumi_gcp/compute/get_region_network_endpoint_group.py index a48d89c6fc..de44368f46 100644 --- a/sdk/python/pulumi_gcp/compute/get_region_network_endpoint_group.py +++ b/sdk/python/pulumi_gcp/compute/get_region_network_endpoint_group.py @@ -232,9 +232,6 @@ def get_region_network_endpoint_group(name: Optional[str] = None, self_link=pulumi.get(__ret__, 'self_link'), serverless_deployments=pulumi.get(__ret__, 'serverless_deployments'), subnetwork=pulumi.get(__ret__, 'subnetwork')) - - -@_utilities.lift_output_func(get_region_network_endpoint_group) def get_region_network_endpoint_group_output(name: Optional[pulumi.Input[Optional[str]]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, region: Optional[pulumi.Input[Optional[str]]] = None, @@ -262,4 +259,25 @@ def get_region_network_endpoint_group_output(name: Optional[pulumi.Input[Optiona :param str region: A reference to the region where the Serverless REGs Reside. Provide either this or a `self_link`. :param str self_link: The Network Endpoint Group self_link. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + __args__['region'] = region + __args__['selfLink'] = self_link + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getRegionNetworkEndpointGroup:getRegionNetworkEndpointGroup', __args__, opts=opts, typ=GetRegionNetworkEndpointGroupResult) + return __ret__.apply(lambda __response__: GetRegionNetworkEndpointGroupResult( + app_engines=pulumi.get(__response__, 'app_engines'), + cloud_functions=pulumi.get(__response__, 'cloud_functions'), + cloud_runs=pulumi.get(__response__, 'cloud_runs'), + description=pulumi.get(__response__, 'description'), + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'), + network=pulumi.get(__response__, 'network'), + network_endpoint_type=pulumi.get(__response__, 'network_endpoint_type'), + project=pulumi.get(__response__, 'project'), + psc_target_service=pulumi.get(__response__, 'psc_target_service'), + region=pulumi.get(__response__, 'region'), + self_link=pulumi.get(__response__, 'self_link'), + serverless_deployments=pulumi.get(__response__, 'serverless_deployments'), + subnetwork=pulumi.get(__response__, 'subnetwork'))) diff --git a/sdk/python/pulumi_gcp/compute/get_region_ssl_certificate.py b/sdk/python/pulumi_gcp/compute/get_region_ssl_certificate.py index 26a30b3f9f..8d0238cda1 100644 --- a/sdk/python/pulumi_gcp/compute/get_region_ssl_certificate.py +++ b/sdk/python/pulumi_gcp/compute/get_region_ssl_certificate.py @@ -196,9 +196,6 @@ def get_region_ssl_certificate(name: Optional[str] = None, project=pulumi.get(__ret__, 'project'), region=pulumi.get(__ret__, 'region'), self_link=pulumi.get(__ret__, 'self_link')) - - -@_utilities.lift_output_func(get_region_ssl_certificate) def get_region_ssl_certificate_output(name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, region: Optional[pulumi.Input[Optional[str]]] = None, @@ -227,4 +224,22 @@ def get_region_ssl_certificate_output(name: Optional[pulumi.Input[str]] = None, :param str region: The region in which the resource belongs. If it is not provided, the provider region is used. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + __args__['region'] = region + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getRegionSslCertificate:getRegionSslCertificate', __args__, opts=opts, typ=GetRegionSslCertificateResult) + return __ret__.apply(lambda __response__: GetRegionSslCertificateResult( + certificate=pulumi.get(__response__, 'certificate'), + certificate_id=pulumi.get(__response__, 'certificate_id'), + creation_timestamp=pulumi.get(__response__, 'creation_timestamp'), + description=pulumi.get(__response__, 'description'), + expire_time=pulumi.get(__response__, 'expire_time'), + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'), + name_prefix=pulumi.get(__response__, 'name_prefix'), + private_key=pulumi.get(__response__, 'private_key'), + project=pulumi.get(__response__, 'project'), + region=pulumi.get(__response__, 'region'), + self_link=pulumi.get(__response__, 'self_link'))) diff --git a/sdk/python/pulumi_gcp/compute/get_regions.py b/sdk/python/pulumi_gcp/compute/get_regions.py index fbb94ae638..97f9a8ddf7 100644 --- a/sdk/python/pulumi_gcp/compute/get_regions.py +++ b/sdk/python/pulumi_gcp/compute/get_regions.py @@ -116,9 +116,6 @@ def get_regions(project: Optional[str] = None, names=pulumi.get(__ret__, 'names'), project=pulumi.get(__ret__, 'project'), status=pulumi.get(__ret__, 'status')) - - -@_utilities.lift_output_func(get_regions) def get_regions_output(project: Optional[pulumi.Input[Optional[str]]] = None, status: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetRegionsResult]: @@ -145,4 +142,13 @@ def get_regions_output(project: Optional[pulumi.Input[Optional[str]]] = None, :param str status: Allows to filter list of regions based on their current status. Status can be either `UP` or `DOWN`. Defaults to no filtering (all available regions - both `UP` and `DOWN`). """ - ... + __args__ = dict() + __args__['project'] = project + __args__['status'] = status + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getRegions:getRegions', __args__, opts=opts, typ=GetRegionsResult) + return __ret__.apply(lambda __response__: GetRegionsResult( + id=pulumi.get(__response__, 'id'), + names=pulumi.get(__response__, 'names'), + project=pulumi.get(__response__, 'project'), + status=pulumi.get(__response__, 'status'))) diff --git a/sdk/python/pulumi_gcp/compute/get_reservation.py b/sdk/python/pulumi_gcp/compute/get_reservation.py index 9f362a4893..1835915b40 100644 --- a/sdk/python/pulumi_gcp/compute/get_reservation.py +++ b/sdk/python/pulumi_gcp/compute/get_reservation.py @@ -190,9 +190,6 @@ def get_reservation(name: Optional[str] = None, specific_reservations=pulumi.get(__ret__, 'specific_reservations'), status=pulumi.get(__ret__, 'status'), zone=pulumi.get(__ret__, 'zone')) - - -@_utilities.lift_output_func(get_reservation) def get_reservation_output(name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, zone: Optional[pulumi.Input[str]] = None, @@ -214,4 +211,22 @@ def get_reservation_output(name: Optional[pulumi.Input[str]] = None, :param str project: Project from which to list the Compute Reservation. Defaults to project declared in the provider. :param str zone: Zone where the Compute Reservation resides. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + __args__['zone'] = zone + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getReservation:getReservation', __args__, opts=opts, typ=GetReservationResult) + return __ret__.apply(lambda __response__: GetReservationResult( + commitment=pulumi.get(__response__, 'commitment'), + creation_timestamp=pulumi.get(__response__, 'creation_timestamp'), + description=pulumi.get(__response__, 'description'), + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + self_link=pulumi.get(__response__, 'self_link'), + share_settings=pulumi.get(__response__, 'share_settings'), + specific_reservation_required=pulumi.get(__response__, 'specific_reservation_required'), + specific_reservations=pulumi.get(__response__, 'specific_reservations'), + status=pulumi.get(__response__, 'status'), + zone=pulumi.get(__response__, 'zone'))) diff --git a/sdk/python/pulumi_gcp/compute/get_resource_policy.py b/sdk/python/pulumi_gcp/compute/get_resource_policy.py index e8e733b4c2..1704d3b5cb 100644 --- a/sdk/python/pulumi_gcp/compute/get_resource_policy.py +++ b/sdk/python/pulumi_gcp/compute/get_resource_policy.py @@ -175,9 +175,6 @@ def get_resource_policy(name: Optional[str] = None, region=pulumi.get(__ret__, 'region'), self_link=pulumi.get(__ret__, 'self_link'), snapshot_schedule_policies=pulumi.get(__ret__, 'snapshot_schedule_policies')) - - -@_utilities.lift_output_func(get_resource_policy) def get_resource_policy_output(name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, region: Optional[pulumi.Input[Optional[str]]] = None, @@ -198,4 +195,20 @@ def get_resource_policy_output(name: Optional[pulumi.Input[str]] = None, :param str project: Project from which to list the Resource Policy. Defaults to project declared in the provider. :param str region: Region where the Resource Policy resides. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + __args__['region'] = region + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getResourcePolicy:getResourcePolicy', __args__, opts=opts, typ=GetResourcePolicyResult) + return __ret__.apply(lambda __response__: GetResourcePolicyResult( + description=pulumi.get(__response__, 'description'), + disk_consistency_group_policies=pulumi.get(__response__, 'disk_consistency_group_policies'), + group_placement_policies=pulumi.get(__response__, 'group_placement_policies'), + id=pulumi.get(__response__, 'id'), + instance_schedule_policies=pulumi.get(__response__, 'instance_schedule_policies'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + region=pulumi.get(__response__, 'region'), + self_link=pulumi.get(__response__, 'self_link'), + snapshot_schedule_policies=pulumi.get(__response__, 'snapshot_schedule_policies'))) diff --git a/sdk/python/pulumi_gcp/compute/get_router.py b/sdk/python/pulumi_gcp/compute/get_router.py index 486a3e54dc..20963d5dec 100644 --- a/sdk/python/pulumi_gcp/compute/get_router.py +++ b/sdk/python/pulumi_gcp/compute/get_router.py @@ -176,9 +176,6 @@ def get_router(name: Optional[str] = None, project=pulumi.get(__ret__, 'project'), region=pulumi.get(__ret__, 'region'), self_link=pulumi.get(__ret__, 'self_link')) - - -@_utilities.lift_output_func(get_router) def get_router_output(name: Optional[pulumi.Input[str]] = None, network: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -205,4 +202,21 @@ def get_router_output(name: Optional[pulumi.Input[str]] = None, :param str region: The region this router has been created in. If unspecified, this defaults to the region configured in the provider. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['network'] = network + __args__['project'] = project + __args__['region'] = region + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getRouter:getRouter', __args__, opts=opts, typ=GetRouterResult) + return __ret__.apply(lambda __response__: GetRouterResult( + bgps=pulumi.get(__response__, 'bgps'), + creation_timestamp=pulumi.get(__response__, 'creation_timestamp'), + description=pulumi.get(__response__, 'description'), + encrypted_interconnect_router=pulumi.get(__response__, 'encrypted_interconnect_router'), + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'), + network=pulumi.get(__response__, 'network'), + project=pulumi.get(__response__, 'project'), + region=pulumi.get(__response__, 'region'), + self_link=pulumi.get(__response__, 'self_link'))) diff --git a/sdk/python/pulumi_gcp/compute/get_router_nat.py b/sdk/python/pulumi_gcp/compute/get_router_nat.py index a8a744caab..612f9f06d0 100644 --- a/sdk/python/pulumi_gcp/compute/get_router_nat.py +++ b/sdk/python/pulumi_gcp/compute/get_router_nat.py @@ -322,9 +322,6 @@ def get_router_nat(name: Optional[str] = None, tcp_transitory_idle_timeout_sec=pulumi.get(__ret__, 'tcp_transitory_idle_timeout_sec'), type=pulumi.get(__ret__, 'type'), udp_idle_timeout_sec=pulumi.get(__ret__, 'udp_idle_timeout_sec')) - - -@_utilities.lift_output_func(get_router_nat) def get_router_nat_output(name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, region: Optional[pulumi.Input[Optional[str]]] = None, @@ -357,4 +354,35 @@ def get_router_nat_output(name: Optional[pulumi.Input[str]] = None, - - - """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + __args__['region'] = region + __args__['router'] = router + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getRouterNat:getRouterNat', __args__, opts=opts, typ=GetRouterNatResult) + return __ret__.apply(lambda __response__: GetRouterNatResult( + auto_network_tier=pulumi.get(__response__, 'auto_network_tier'), + drain_nat_ips=pulumi.get(__response__, 'drain_nat_ips'), + enable_dynamic_port_allocation=pulumi.get(__response__, 'enable_dynamic_port_allocation'), + enable_endpoint_independent_mapping=pulumi.get(__response__, 'enable_endpoint_independent_mapping'), + endpoint_types=pulumi.get(__response__, 'endpoint_types'), + icmp_idle_timeout_sec=pulumi.get(__response__, 'icmp_idle_timeout_sec'), + id=pulumi.get(__response__, 'id'), + log_configs=pulumi.get(__response__, 'log_configs'), + max_ports_per_vm=pulumi.get(__response__, 'max_ports_per_vm'), + min_ports_per_vm=pulumi.get(__response__, 'min_ports_per_vm'), + name=pulumi.get(__response__, 'name'), + nat_ip_allocate_option=pulumi.get(__response__, 'nat_ip_allocate_option'), + nat_ips=pulumi.get(__response__, 'nat_ips'), + project=pulumi.get(__response__, 'project'), + region=pulumi.get(__response__, 'region'), + router=pulumi.get(__response__, 'router'), + rules=pulumi.get(__response__, 'rules'), + source_subnetwork_ip_ranges_to_nat=pulumi.get(__response__, 'source_subnetwork_ip_ranges_to_nat'), + subnetworks=pulumi.get(__response__, 'subnetworks'), + tcp_established_idle_timeout_sec=pulumi.get(__response__, 'tcp_established_idle_timeout_sec'), + tcp_time_wait_timeout_sec=pulumi.get(__response__, 'tcp_time_wait_timeout_sec'), + tcp_transitory_idle_timeout_sec=pulumi.get(__response__, 'tcp_transitory_idle_timeout_sec'), + type=pulumi.get(__response__, 'type'), + udp_idle_timeout_sec=pulumi.get(__response__, 'udp_idle_timeout_sec'))) diff --git a/sdk/python/pulumi_gcp/compute/get_router_status.py b/sdk/python/pulumi_gcp/compute/get_router_status.py index cf6db6e764..db537daa38 100644 --- a/sdk/python/pulumi_gcp/compute/get_router_status.py +++ b/sdk/python/pulumi_gcp/compute/get_router_status.py @@ -157,9 +157,6 @@ def get_router_status(name: Optional[str] = None, network=pulumi.get(__ret__, 'network'), project=pulumi.get(__ret__, 'project'), region=pulumi.get(__ret__, 'region')) - - -@_utilities.lift_output_func(get_router_status) def get_router_status_output(name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, region: Optional[pulumi.Input[Optional[str]]] = None, @@ -188,4 +185,17 @@ def get_router_status_output(name: Optional[pulumi.Input[str]] = None, :param str region: The region this router has been created in. If unspecified, this defaults to the region configured in the provider. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + __args__['region'] = region + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getRouterStatus:getRouterStatus', __args__, opts=opts, typ=GetRouterStatusResult) + return __ret__.apply(lambda __response__: GetRouterStatusResult( + best_routes=pulumi.get(__response__, 'best_routes'), + best_routes_for_routers=pulumi.get(__response__, 'best_routes_for_routers'), + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'), + network=pulumi.get(__response__, 'network'), + project=pulumi.get(__response__, 'project'), + region=pulumi.get(__response__, 'region'))) diff --git a/sdk/python/pulumi_gcp/compute/get_security_policy.py b/sdk/python/pulumi_gcp/compute/get_security_policy.py index 6896c455eb..3204d6880b 100644 --- a/sdk/python/pulumi_gcp/compute/get_security_policy.py +++ b/sdk/python/pulumi_gcp/compute/get_security_policy.py @@ -186,9 +186,6 @@ def get_security_policy(name: Optional[str] = None, rules=pulumi.get(__ret__, 'rules'), self_link=pulumi.get(__ret__, 'self_link'), type=pulumi.get(__ret__, 'type')) - - -@_utilities.lift_output_func(get_security_policy) def get_security_policy_output(name: Optional[pulumi.Input[Optional[str]]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, self_link: Optional[pulumi.Input[Optional[str]]] = None, @@ -216,4 +213,21 @@ def get_security_policy_output(name: Optional[pulumi.Input[Optional[str]]] = Non :param str project: The project in which the resource belongs. If it is not provided, the provider project is used. :param str self_link: The self_link of the security policy. Provide either this or a `name` """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + __args__['selfLink'] = self_link + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getSecurityPolicy:getSecurityPolicy', __args__, opts=opts, typ=GetSecurityPolicyResult) + return __ret__.apply(lambda __response__: GetSecurityPolicyResult( + adaptive_protection_configs=pulumi.get(__response__, 'adaptive_protection_configs'), + advanced_options_configs=pulumi.get(__response__, 'advanced_options_configs'), + description=pulumi.get(__response__, 'description'), + fingerprint=pulumi.get(__response__, 'fingerprint'), + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + recaptcha_options_configs=pulumi.get(__response__, 'recaptcha_options_configs'), + rules=pulumi.get(__response__, 'rules'), + self_link=pulumi.get(__response__, 'self_link'), + type=pulumi.get(__response__, 'type'))) diff --git a/sdk/python/pulumi_gcp/compute/get_snapshot.py b/sdk/python/pulumi_gcp/compute/get_snapshot.py index a6e10b4269..3692c3e857 100644 --- a/sdk/python/pulumi_gcp/compute/get_snapshot.py +++ b/sdk/python/pulumi_gcp/compute/get_snapshot.py @@ -307,9 +307,6 @@ def get_snapshot(filter: Optional[str] = None, storage_bytes=pulumi.get(__ret__, 'storage_bytes'), storage_locations=pulumi.get(__ret__, 'storage_locations'), zone=pulumi.get(__ret__, 'zone')) - - -@_utilities.lift_output_func(get_snapshot) def get_snapshot_output(filter: Optional[pulumi.Input[Optional[str]]] = None, most_recent: Optional[pulumi.Input[Optional[bool]]] = None, name: Optional[pulumi.Input[Optional[str]]] = None, @@ -347,4 +344,33 @@ def get_snapshot_output(filter: Optional[pulumi.Input[Optional[str]]] = None, :param str project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['filter'] = filter + __args__['mostRecent'] = most_recent + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getSnapshot:getSnapshot', __args__, opts=opts, typ=GetSnapshotResult) + return __ret__.apply(lambda __response__: GetSnapshotResult( + chain_name=pulumi.get(__response__, 'chain_name'), + creation_timestamp=pulumi.get(__response__, 'creation_timestamp'), + description=pulumi.get(__response__, 'description'), + disk_size_gb=pulumi.get(__response__, 'disk_size_gb'), + effective_labels=pulumi.get(__response__, 'effective_labels'), + filter=pulumi.get(__response__, 'filter'), + id=pulumi.get(__response__, 'id'), + label_fingerprint=pulumi.get(__response__, 'label_fingerprint'), + labels=pulumi.get(__response__, 'labels'), + licenses=pulumi.get(__response__, 'licenses'), + most_recent=pulumi.get(__response__, 'most_recent'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + pulumi_labels=pulumi.get(__response__, 'pulumi_labels'), + self_link=pulumi.get(__response__, 'self_link'), + snapshot_encryption_keys=pulumi.get(__response__, 'snapshot_encryption_keys'), + snapshot_id=pulumi.get(__response__, 'snapshot_id'), + source_disk=pulumi.get(__response__, 'source_disk'), + source_disk_encryption_keys=pulumi.get(__response__, 'source_disk_encryption_keys'), + storage_bytes=pulumi.get(__response__, 'storage_bytes'), + storage_locations=pulumi.get(__response__, 'storage_locations'), + zone=pulumi.get(__response__, 'zone'))) diff --git a/sdk/python/pulumi_gcp/compute/get_snapshot_iam_policy.py b/sdk/python/pulumi_gcp/compute/get_snapshot_iam_policy.py index 14d9eceb8f..2529ea5bad 100644 --- a/sdk/python/pulumi_gcp/compute/get_snapshot_iam_policy.py +++ b/sdk/python/pulumi_gcp/compute/get_snapshot_iam_policy.py @@ -125,9 +125,6 @@ def get_snapshot_iam_policy(name: Optional[str] = None, name=pulumi.get(__ret__, 'name'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_snapshot_iam_policy) def get_snapshot_iam_policy_output(name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetSnapshotIamPolicyResult]: @@ -149,4 +146,14 @@ def get_snapshot_iam_policy_output(name: Optional[pulumi.Input[str]] = None, :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getSnapshotIamPolicy:getSnapshotIamPolicy', __args__, opts=opts, typ=GetSnapshotIamPolicyResult) + return __ret__.apply(lambda __response__: GetSnapshotIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/compute/get_ssl_policy.py b/sdk/python/pulumi_gcp/compute/get_ssl_policy.py index 33c4f48459..c3249a7bab 100644 --- a/sdk/python/pulumi_gcp/compute/get_ssl_policy.py +++ b/sdk/python/pulumi_gcp/compute/get_ssl_policy.py @@ -203,9 +203,6 @@ def get_ssl_policy(name: Optional[str] = None, profile=pulumi.get(__ret__, 'profile'), project=pulumi.get(__ret__, 'project'), self_link=pulumi.get(__ret__, 'self_link')) - - -@_utilities.lift_output_func(get_ssl_policy) def get_ssl_policy_output(name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetSSLPolicyResult]: @@ -229,4 +226,20 @@ def get_ssl_policy_output(name: Optional[pulumi.Input[str]] = None, :param str project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getSSLPolicy:getSSLPolicy', __args__, opts=opts, typ=GetSSLPolicyResult) + return __ret__.apply(lambda __response__: GetSSLPolicyResult( + creation_timestamp=pulumi.get(__response__, 'creation_timestamp'), + custom_features=pulumi.get(__response__, 'custom_features'), + description=pulumi.get(__response__, 'description'), + enabled_features=pulumi.get(__response__, 'enabled_features'), + fingerprint=pulumi.get(__response__, 'fingerprint'), + id=pulumi.get(__response__, 'id'), + min_tls_version=pulumi.get(__response__, 'min_tls_version'), + name=pulumi.get(__response__, 'name'), + profile=pulumi.get(__response__, 'profile'), + project=pulumi.get(__response__, 'project'), + self_link=pulumi.get(__response__, 'self_link'))) diff --git a/sdk/python/pulumi_gcp/compute/get_subnetwork.py b/sdk/python/pulumi_gcp/compute/get_subnetwork.py index 014d29a3c2..a94465ff46 100644 --- a/sdk/python/pulumi_gcp/compute/get_subnetwork.py +++ b/sdk/python/pulumi_gcp/compute/get_subnetwork.py @@ -224,9 +224,6 @@ def get_subnetwork(name: Optional[str] = None, region=pulumi.get(__ret__, 'region'), secondary_ip_ranges=pulumi.get(__ret__, 'secondary_ip_ranges'), self_link=pulumi.get(__ret__, 'self_link')) - - -@_utilities.lift_output_func(get_subnetwork) def get_subnetwork_output(name: Optional[pulumi.Input[Optional[str]]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, region: Optional[pulumi.Input[Optional[str]]] = None, @@ -255,4 +252,23 @@ def get_subnetwork_output(name: Optional[pulumi.Input[Optional[str]]] = None, :param str self_link: The self link of the subnetwork. If `self_link` is specified, `name`, `project`, and `region` are ignored. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + __args__['region'] = region + __args__['selfLink'] = self_link + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getSubnetwork:getSubnetwork', __args__, opts=opts, typ=GetSubnetworkResult) + return __ret__.apply(lambda __response__: GetSubnetworkResult( + description=pulumi.get(__response__, 'description'), + gateway_address=pulumi.get(__response__, 'gateway_address'), + id=pulumi.get(__response__, 'id'), + internal_ipv6_prefix=pulumi.get(__response__, 'internal_ipv6_prefix'), + ip_cidr_range=pulumi.get(__response__, 'ip_cidr_range'), + name=pulumi.get(__response__, 'name'), + network=pulumi.get(__response__, 'network'), + private_ip_google_access=pulumi.get(__response__, 'private_ip_google_access'), + project=pulumi.get(__response__, 'project'), + region=pulumi.get(__response__, 'region'), + secondary_ip_ranges=pulumi.get(__response__, 'secondary_ip_ranges'), + self_link=pulumi.get(__response__, 'self_link'))) diff --git a/sdk/python/pulumi_gcp/compute/get_subnetwork_iam_policy.py b/sdk/python/pulumi_gcp/compute/get_subnetwork_iam_policy.py index 4c0fc85fdf..86e9ab3695 100644 --- a/sdk/python/pulumi_gcp/compute/get_subnetwork_iam_policy.py +++ b/sdk/python/pulumi_gcp/compute/get_subnetwork_iam_policy.py @@ -142,9 +142,6 @@ def get_subnetwork_iam_policy(project: Optional[str] = None, project=pulumi.get(__ret__, 'project'), region=pulumi.get(__ret__, 'region'), subnetwork=pulumi.get(__ret__, 'subnetwork')) - - -@_utilities.lift_output_func(get_subnetwork_iam_policy) def get_subnetwork_iam_policy_output(project: Optional[pulumi.Input[Optional[str]]] = None, region: Optional[pulumi.Input[Optional[str]]] = None, subnetwork: Optional[pulumi.Input[str]] = None, @@ -172,4 +169,16 @@ def get_subnetwork_iam_policy_output(project: Optional[pulumi.Input[Optional[str region is specified, it is taken from the provider configuration. :param str subnetwork: Used to find the parent resource to bind the IAM policy to """ - ... + __args__ = dict() + __args__['project'] = project + __args__['region'] = region + __args__['subnetwork'] = subnetwork + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getSubnetworkIamPolicy:getSubnetworkIamPolicy', __args__, opts=opts, typ=GetSubnetworkIamPolicyResult) + return __ret__.apply(lambda __response__: GetSubnetworkIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'), + region=pulumi.get(__response__, 'region'), + subnetwork=pulumi.get(__response__, 'subnetwork'))) diff --git a/sdk/python/pulumi_gcp/compute/get_subnetworks.py b/sdk/python/pulumi_gcp/compute/get_subnetworks.py index 95e9960709..abb65067d4 100644 --- a/sdk/python/pulumi_gcp/compute/get_subnetworks.py +++ b/sdk/python/pulumi_gcp/compute/get_subnetworks.py @@ -129,9 +129,6 @@ def get_subnetworks(filter: Optional[str] = None, project=pulumi.get(__ret__, 'project'), region=pulumi.get(__ret__, 'region'), subnetworks=pulumi.get(__ret__, 'subnetworks')) - - -@_utilities.lift_output_func(get_subnetworks) def get_subnetworks_output(filter: Optional[pulumi.Input[Optional[str]]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, region: Optional[pulumi.Input[Optional[str]]] = None, @@ -159,4 +156,15 @@ def get_subnetworks_output(filter: Optional[pulumi.Input[Optional[str]]] = None, :param str region: The region this subnetwork has been created in. If unspecified, this defaults to the region configured in the provider. """ - ... + __args__ = dict() + __args__['filter'] = filter + __args__['project'] = project + __args__['region'] = region + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getSubnetworks:getSubnetworks', __args__, opts=opts, typ=GetSubnetworksResult) + return __ret__.apply(lambda __response__: GetSubnetworksResult( + filter=pulumi.get(__response__, 'filter'), + id=pulumi.get(__response__, 'id'), + project=pulumi.get(__response__, 'project'), + region=pulumi.get(__response__, 'region'), + subnetworks=pulumi.get(__response__, 'subnetworks'))) diff --git a/sdk/python/pulumi_gcp/compute/get_vpn_gateway.py b/sdk/python/pulumi_gcp/compute/get_vpn_gateway.py index 4277d5df0a..62c35daa60 100644 --- a/sdk/python/pulumi_gcp/compute/get_vpn_gateway.py +++ b/sdk/python/pulumi_gcp/compute/get_vpn_gateway.py @@ -156,9 +156,6 @@ def get_vpn_gateway(name: Optional[str] = None, project=pulumi.get(__ret__, 'project'), region=pulumi.get(__ret__, 'region'), self_link=pulumi.get(__ret__, 'self_link')) - - -@_utilities.lift_output_func(get_vpn_gateway) def get_vpn_gateway_output(name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, region: Optional[pulumi.Input[Optional[str]]] = None, @@ -185,4 +182,17 @@ def get_vpn_gateway_output(name: Optional[pulumi.Input[str]] = None, :param str region: The region in which the resource belongs. If it is not provided, the project region is used. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + __args__['region'] = region + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getVPNGateway:getVPNGateway', __args__, opts=opts, typ=GetVPNGatewayResult) + return __ret__.apply(lambda __response__: GetVPNGatewayResult( + description=pulumi.get(__response__, 'description'), + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'), + network=pulumi.get(__response__, 'network'), + project=pulumi.get(__response__, 'project'), + region=pulumi.get(__response__, 'region'), + self_link=pulumi.get(__response__, 'self_link'))) diff --git a/sdk/python/pulumi_gcp/compute/get_zones.py b/sdk/python/pulumi_gcp/compute/get_zones.py index 7d1b2862c4..02e055d72e 100644 --- a/sdk/python/pulumi_gcp/compute/get_zones.py +++ b/sdk/python/pulumi_gcp/compute/get_zones.py @@ -115,9 +115,6 @@ def get_zones(project: Optional[str] = None, project=pulumi.get(__ret__, 'project'), region=pulumi.get(__ret__, 'region'), status=pulumi.get(__ret__, 'status')) - - -@_utilities.lift_output_func(get_zones) def get_zones_output(project: Optional[pulumi.Input[Optional[str]]] = None, region: Optional[pulumi.Input[Optional[str]]] = None, status: Optional[pulumi.Input[Optional[str]]] = None, @@ -132,4 +129,15 @@ def get_zones_output(project: Optional[pulumi.Input[Optional[str]]] = None, :param str status: Allows to filter list of zones based on their current status. Status can be either `UP` or `DOWN`. Defaults to no filtering (all available zones - both `UP` and `DOWN`). """ - ... + __args__ = dict() + __args__['project'] = project + __args__['region'] = region + __args__['status'] = status + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/getZones:getZones', __args__, opts=opts, typ=GetZonesResult) + return __ret__.apply(lambda __response__: GetZonesResult( + id=pulumi.get(__response__, 'id'), + names=pulumi.get(__response__, 'names'), + project=pulumi.get(__response__, 'project'), + region=pulumi.get(__response__, 'region'), + status=pulumi.get(__response__, 'status'))) diff --git a/sdk/python/pulumi_gcp/compute/router_status.py b/sdk/python/pulumi_gcp/compute/router_status.py index 5c4984ef5c..b40e93b435 100644 --- a/sdk/python/pulumi_gcp/compute/router_status.py +++ b/sdk/python/pulumi_gcp/compute/router_status.py @@ -160,9 +160,6 @@ def router_status(name: Optional[str] = None, network=pulumi.get(__ret__, 'network'), project=pulumi.get(__ret__, 'project'), region=pulumi.get(__ret__, 'region')) - - -@_utilities.lift_output_func(router_status) def router_status_output(name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, region: Optional[pulumi.Input[Optional[str]]] = None, @@ -192,4 +189,17 @@ def router_status_output(name: Optional[pulumi.Input[str]] = None, unspecified, this defaults to the region configured in the provider. """ pulumi.log.warn("""router_status is deprecated: gcp.compute.RouterStatus has been deprecated in favor of gcp.compute.getRouterStatus""") - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + __args__['region'] = region + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:compute/routerStatus:RouterStatus', __args__, opts=opts, typ=RouterStatusResult) + return __ret__.apply(lambda __response__: RouterStatusResult( + best_routes=pulumi.get(__response__, 'best_routes'), + best_routes_for_routers=pulumi.get(__response__, 'best_routes_for_routers'), + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'), + network=pulumi.get(__response__, 'network'), + project=pulumi.get(__response__, 'project'), + region=pulumi.get(__response__, 'region'))) diff --git a/sdk/python/pulumi_gcp/container/aws_node_pool.py b/sdk/python/pulumi_gcp/container/aws_node_pool.py index edb27ab375..4489c63414 100644 --- a/sdk/python/pulumi_gcp/container/aws_node_pool.py +++ b/sdk/python/pulumi_gcp/container/aws_node_pool.py @@ -646,7 +646,7 @@ def __init__(__self__, "iam_instance_profile": "my--1p-dev-nodepool", "instance_type": "t3.medium", "labels": { - "label_one": "value-one", + "label-one": "value-one", }, "root_volume": { "iops": 3000, @@ -663,7 +663,7 @@ def __init__(__self__, "ec2_key_pair": "my--1p-dev-ssh", }, "tags": { - "tag_one": "value-one", + "tag-one": "value-one", }, "taints": [{ "effect": "PREFER_NO_SCHEDULE", @@ -768,7 +768,7 @@ def __init__(__self__, "iam_instance_profile": "my--1p-dev-nodepool", "instance_type": "t3.medium", "labels": { - "label_one": "value-one", + "label-one": "value-one", }, "root_volume": { "iops": 3000, @@ -785,7 +785,7 @@ def __init__(__self__, "ec2_key_pair": "my--1p-dev-ssh", }, "tags": { - "tag_one": "value-one", + "tag-one": "value-one", }, "taints": [{ "effect": "prefer_no_schedule", @@ -887,7 +887,7 @@ def __init__(__self__, "iam_instance_profile": "my--1p-dev-nodepool", "instance_type": "t3.medium", "labels": { - "label_one": "value-one", + "label-one": "value-one", }, "root_volume": { "iops": 3000, @@ -904,7 +904,7 @@ def __init__(__self__, "ec2_key_pair": "my--1p-dev-ssh", }, "tags": { - "tag_one": "value-one", + "tag-one": "value-one", }, "taints": [{ "effect": "prefer_no_schedule", @@ -1068,7 +1068,7 @@ def __init__(__self__, "iam_instance_profile": "my--1p-dev-nodepool", "instance_type": "t3.medium", "labels": { - "label_one": "value-one", + "label-one": "value-one", }, "root_volume": { "iops": 3000, @@ -1085,7 +1085,7 @@ def __init__(__self__, "ec2_key_pair": "my--1p-dev-ssh", }, "tags": { - "tag_one": "value-one", + "tag-one": "value-one", }, "taints": [{ "effect": "PREFER_NO_SCHEDULE", @@ -1190,7 +1190,7 @@ def __init__(__self__, "iam_instance_profile": "my--1p-dev-nodepool", "instance_type": "t3.medium", "labels": { - "label_one": "value-one", + "label-one": "value-one", }, "root_volume": { "iops": 3000, @@ -1207,7 +1207,7 @@ def __init__(__self__, "ec2_key_pair": "my--1p-dev-ssh", }, "tags": { - "tag_one": "value-one", + "tag-one": "value-one", }, "taints": [{ "effect": "prefer_no_schedule", @@ -1309,7 +1309,7 @@ def __init__(__self__, "iam_instance_profile": "my--1p-dev-nodepool", "instance_type": "t3.medium", "labels": { - "label_one": "value-one", + "label-one": "value-one", }, "root_volume": { "iops": 3000, @@ -1326,7 +1326,7 @@ def __init__(__self__, "ec2_key_pair": "my--1p-dev-ssh", }, "tags": { - "tag_one": "value-one", + "tag-one": "value-one", }, "taints": [{ "effect": "prefer_no_schedule", diff --git a/sdk/python/pulumi_gcp/container/get_attached_install_manifest.py b/sdk/python/pulumi_gcp/container/get_attached_install_manifest.py index bf4cd73a62..18ce04b388 100644 --- a/sdk/python/pulumi_gcp/container/get_attached_install_manifest.py +++ b/sdk/python/pulumi_gcp/container/get_attached_install_manifest.py @@ -140,9 +140,6 @@ def get_attached_install_manifest(cluster_id: Optional[str] = None, manifest=pulumi.get(__ret__, 'manifest'), platform_version=pulumi.get(__ret__, 'platform_version'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_attached_install_manifest) def get_attached_install_manifest_output(cluster_id: Optional[pulumi.Input[str]] = None, location: Optional[pulumi.Input[str]] = None, platform_version: Optional[pulumi.Input[str]] = None, @@ -171,4 +168,17 @@ def get_attached_install_manifest_output(cluster_id: Optional[pulumi.Input[str]] :param str project: ID of the project to list available platform versions for. Should match the project the cluster will be deployed to. Defaults to the project that the provider is authenticated with. """ - ... + __args__ = dict() + __args__['clusterId'] = cluster_id + __args__['location'] = location + __args__['platformVersion'] = platform_version + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:container/getAttachedInstallManifest:getAttachedInstallManifest', __args__, opts=opts, typ=GetAttachedInstallManifestResult) + return __ret__.apply(lambda __response__: GetAttachedInstallManifestResult( + cluster_id=pulumi.get(__response__, 'cluster_id'), + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + manifest=pulumi.get(__response__, 'manifest'), + platform_version=pulumi.get(__response__, 'platform_version'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/container/get_attached_versions.py b/sdk/python/pulumi_gcp/container/get_attached_versions.py index acdae76ab4..860bb33ec3 100644 --- a/sdk/python/pulumi_gcp/container/get_attached_versions.py +++ b/sdk/python/pulumi_gcp/container/get_attached_versions.py @@ -112,9 +112,6 @@ def get_attached_versions(location: Optional[str] = None, location=pulumi.get(__ret__, 'location'), project=pulumi.get(__ret__, 'project'), valid_versions=pulumi.get(__ret__, 'valid_versions')) - - -@_utilities.lift_output_func(get_attached_versions) def get_attached_versions_output(location: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetAttachedVersionsResult]: @@ -137,4 +134,13 @@ def get_attached_versions_output(location: Optional[pulumi.Input[str]] = None, :param str project: ID of the project to list available platform versions for. Should match the project the cluster will be deployed to. Defaults to the project that the provider is authenticated with. """ - ... + __args__ = dict() + __args__['location'] = location + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:container/getAttachedVersions:getAttachedVersions', __args__, opts=opts, typ=GetAttachedVersionsResult) + return __ret__.apply(lambda __response__: GetAttachedVersionsResult( + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + project=pulumi.get(__response__, 'project'), + valid_versions=pulumi.get(__response__, 'valid_versions'))) diff --git a/sdk/python/pulumi_gcp/container/get_aws_versions.py b/sdk/python/pulumi_gcp/container/get_aws_versions.py index bafc0c0cc9..17e706c496 100644 --- a/sdk/python/pulumi_gcp/container/get_aws_versions.py +++ b/sdk/python/pulumi_gcp/container/get_aws_versions.py @@ -125,9 +125,6 @@ def get_aws_versions(location: Optional[str] = None, project=pulumi.get(__ret__, 'project'), supported_regions=pulumi.get(__ret__, 'supported_regions'), valid_versions=pulumi.get(__ret__, 'valid_versions')) - - -@_utilities.lift_output_func(get_aws_versions) def get_aws_versions_output(location: Optional[pulumi.Input[Optional[str]]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetAwsVersionsResult]: @@ -150,4 +147,14 @@ def get_aws_versions_output(location: Optional[pulumi.Input[Optional[str]]] = No :param str project: ID of the project to list available cluster versions for. Should match the project the cluster will be deployed to. Defaults to the project that the provider is authenticated with. """ - ... + __args__ = dict() + __args__['location'] = location + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:container/getAwsVersions:getAwsVersions', __args__, opts=opts, typ=GetAwsVersionsResult) + return __ret__.apply(lambda __response__: GetAwsVersionsResult( + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + project=pulumi.get(__response__, 'project'), + supported_regions=pulumi.get(__response__, 'supported_regions'), + valid_versions=pulumi.get(__response__, 'valid_versions'))) diff --git a/sdk/python/pulumi_gcp/container/get_azure_versions.py b/sdk/python/pulumi_gcp/container/get_azure_versions.py index 5e61e50397..3dba8409d2 100644 --- a/sdk/python/pulumi_gcp/container/get_azure_versions.py +++ b/sdk/python/pulumi_gcp/container/get_azure_versions.py @@ -125,9 +125,6 @@ def get_azure_versions(location: Optional[str] = None, project=pulumi.get(__ret__, 'project'), supported_regions=pulumi.get(__ret__, 'supported_regions'), valid_versions=pulumi.get(__ret__, 'valid_versions')) - - -@_utilities.lift_output_func(get_azure_versions) def get_azure_versions_output(location: Optional[pulumi.Input[Optional[str]]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetAzureVersionsResult]: @@ -150,4 +147,14 @@ def get_azure_versions_output(location: Optional[pulumi.Input[Optional[str]]] = :param str project: ID of the project to list available cluster versions for. Should match the project the cluster will be deployed to. Defaults to the project that the provider is authenticated with. """ - ... + __args__ = dict() + __args__['location'] = location + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:container/getAzureVersions:getAzureVersions', __args__, opts=opts, typ=GetAzureVersionsResult) + return __ret__.apply(lambda __response__: GetAzureVersionsResult( + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + project=pulumi.get(__response__, 'project'), + supported_regions=pulumi.get(__response__, 'supported_regions'), + valid_versions=pulumi.get(__response__, 'valid_versions'))) diff --git a/sdk/python/pulumi_gcp/container/get_cluster.py b/sdk/python/pulumi_gcp/container/get_cluster.py index b2f2db07aa..c8d76e3590 100644 --- a/sdk/python/pulumi_gcp/container/get_cluster.py +++ b/sdk/python/pulumi_gcp/container/get_cluster.py @@ -878,9 +878,6 @@ def get_cluster(location: Optional[str] = None, vertical_pod_autoscalings=pulumi.get(__ret__, 'vertical_pod_autoscalings'), workload_alts_configs=pulumi.get(__ret__, 'workload_alts_configs'), workload_identity_configs=pulumi.get(__ret__, 'workload_identity_configs')) - - -@_utilities.lift_output_func(get_cluster) def get_cluster_output(location: Optional[pulumi.Input[Optional[str]]] = None, name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -910,4 +907,90 @@ def get_cluster_output(location: Optional[pulumi.Input[Optional[str]]] = None, :param str project: The project in which the resource belongs. If it is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['location'] = location + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:container/getCluster:getCluster', __args__, opts=opts, typ=GetClusterResult) + return __ret__.apply(lambda __response__: GetClusterResult( + addons_configs=pulumi.get(__response__, 'addons_configs'), + allow_net_admin=pulumi.get(__response__, 'allow_net_admin'), + authenticator_groups_configs=pulumi.get(__response__, 'authenticator_groups_configs'), + binary_authorizations=pulumi.get(__response__, 'binary_authorizations'), + cluster_autoscalings=pulumi.get(__response__, 'cluster_autoscalings'), + cluster_ipv4_cidr=pulumi.get(__response__, 'cluster_ipv4_cidr'), + cluster_telemetries=pulumi.get(__response__, 'cluster_telemetries'), + confidential_nodes=pulumi.get(__response__, 'confidential_nodes'), + cost_management_configs=pulumi.get(__response__, 'cost_management_configs'), + database_encryptions=pulumi.get(__response__, 'database_encryptions'), + datapath_provider=pulumi.get(__response__, 'datapath_provider'), + default_max_pods_per_node=pulumi.get(__response__, 'default_max_pods_per_node'), + default_snat_statuses=pulumi.get(__response__, 'default_snat_statuses'), + deletion_protection=pulumi.get(__response__, 'deletion_protection'), + description=pulumi.get(__response__, 'description'), + dns_configs=pulumi.get(__response__, 'dns_configs'), + effective_labels=pulumi.get(__response__, 'effective_labels'), + enable_autopilot=pulumi.get(__response__, 'enable_autopilot'), + enable_cilium_clusterwide_network_policy=pulumi.get(__response__, 'enable_cilium_clusterwide_network_policy'), + enable_fqdn_network_policy=pulumi.get(__response__, 'enable_fqdn_network_policy'), + enable_intranode_visibility=pulumi.get(__response__, 'enable_intranode_visibility'), + enable_k8s_beta_apis=pulumi.get(__response__, 'enable_k8s_beta_apis'), + enable_kubernetes_alpha=pulumi.get(__response__, 'enable_kubernetes_alpha'), + enable_l4_ilb_subsetting=pulumi.get(__response__, 'enable_l4_ilb_subsetting'), + enable_legacy_abac=pulumi.get(__response__, 'enable_legacy_abac'), + enable_multi_networking=pulumi.get(__response__, 'enable_multi_networking'), + enable_shielded_nodes=pulumi.get(__response__, 'enable_shielded_nodes'), + enable_tpu=pulumi.get(__response__, 'enable_tpu'), + endpoint=pulumi.get(__response__, 'endpoint'), + fleets=pulumi.get(__response__, 'fleets'), + gateway_api_configs=pulumi.get(__response__, 'gateway_api_configs'), + id=pulumi.get(__response__, 'id'), + identity_service_configs=pulumi.get(__response__, 'identity_service_configs'), + initial_node_count=pulumi.get(__response__, 'initial_node_count'), + ip_allocation_policies=pulumi.get(__response__, 'ip_allocation_policies'), + label_fingerprint=pulumi.get(__response__, 'label_fingerprint'), + location=pulumi.get(__response__, 'location'), + logging_configs=pulumi.get(__response__, 'logging_configs'), + logging_service=pulumi.get(__response__, 'logging_service'), + maintenance_policies=pulumi.get(__response__, 'maintenance_policies'), + master_authorized_networks_configs=pulumi.get(__response__, 'master_authorized_networks_configs'), + master_auths=pulumi.get(__response__, 'master_auths'), + master_version=pulumi.get(__response__, 'master_version'), + mesh_certificates=pulumi.get(__response__, 'mesh_certificates'), + min_master_version=pulumi.get(__response__, 'min_master_version'), + monitoring_configs=pulumi.get(__response__, 'monitoring_configs'), + monitoring_service=pulumi.get(__response__, 'monitoring_service'), + name=pulumi.get(__response__, 'name'), + network=pulumi.get(__response__, 'network'), + network_policies=pulumi.get(__response__, 'network_policies'), + networking_mode=pulumi.get(__response__, 'networking_mode'), + node_configs=pulumi.get(__response__, 'node_configs'), + node_locations=pulumi.get(__response__, 'node_locations'), + node_pool_auto_configs=pulumi.get(__response__, 'node_pool_auto_configs'), + node_pool_defaults=pulumi.get(__response__, 'node_pool_defaults'), + node_pools=pulumi.get(__response__, 'node_pools'), + node_version=pulumi.get(__response__, 'node_version'), + notification_configs=pulumi.get(__response__, 'notification_configs'), + operation=pulumi.get(__response__, 'operation'), + pod_security_policy_configs=pulumi.get(__response__, 'pod_security_policy_configs'), + private_cluster_configs=pulumi.get(__response__, 'private_cluster_configs'), + private_ipv6_google_access=pulumi.get(__response__, 'private_ipv6_google_access'), + project=pulumi.get(__response__, 'project'), + protect_configs=pulumi.get(__response__, 'protect_configs'), + pulumi_labels=pulumi.get(__response__, 'pulumi_labels'), + release_channels=pulumi.get(__response__, 'release_channels'), + remove_default_node_pool=pulumi.get(__response__, 'remove_default_node_pool'), + resource_labels=pulumi.get(__response__, 'resource_labels'), + resource_usage_export_configs=pulumi.get(__response__, 'resource_usage_export_configs'), + secret_manager_configs=pulumi.get(__response__, 'secret_manager_configs'), + security_posture_configs=pulumi.get(__response__, 'security_posture_configs'), + self_link=pulumi.get(__response__, 'self_link'), + service_external_ips_configs=pulumi.get(__response__, 'service_external_ips_configs'), + services_ipv4_cidr=pulumi.get(__response__, 'services_ipv4_cidr'), + subnetwork=pulumi.get(__response__, 'subnetwork'), + tpu_configs=pulumi.get(__response__, 'tpu_configs'), + tpu_ipv4_cidr_block=pulumi.get(__response__, 'tpu_ipv4_cidr_block'), + vertical_pod_autoscalings=pulumi.get(__response__, 'vertical_pod_autoscalings'), + workload_alts_configs=pulumi.get(__response__, 'workload_alts_configs'), + workload_identity_configs=pulumi.get(__response__, 'workload_identity_configs'))) diff --git a/sdk/python/pulumi_gcp/container/get_engine_versions.py b/sdk/python/pulumi_gcp/container/get_engine_versions.py index db7db5f443..ae7c1c18c2 100644 --- a/sdk/python/pulumi_gcp/container/get_engine_versions.py +++ b/sdk/python/pulumi_gcp/container/get_engine_versions.py @@ -226,9 +226,6 @@ def get_engine_versions(location: Optional[str] = None, valid_master_versions=pulumi.get(__ret__, 'valid_master_versions'), valid_node_versions=pulumi.get(__ret__, 'valid_node_versions'), version_prefix=pulumi.get(__ret__, 'version_prefix')) - - -@_utilities.lift_output_func(get_engine_versions) def get_engine_versions_output(location: Optional[pulumi.Input[Optional[str]]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, version_prefix: Optional[pulumi.Input[Optional[str]]] = None, @@ -276,4 +273,21 @@ def get_engine_versions_output(location: Optional[pulumi.Input[Optional[str]]] = versions like `1.12.5-gke.10` accidentally. See [the docs on versioning schema](https://cloud.google.com/kubernetes-engine/versioning-and-upgrades#versioning_scheme) for full details on how version strings are formatted. """ - ... + __args__ = dict() + __args__['location'] = location + __args__['project'] = project + __args__['versionPrefix'] = version_prefix + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:container/getEngineVersions:getEngineVersions', __args__, opts=opts, typ=GetEngineVersionsResult) + return __ret__.apply(lambda __response__: GetEngineVersionsResult( + default_cluster_version=pulumi.get(__response__, 'default_cluster_version'), + id=pulumi.get(__response__, 'id'), + latest_master_version=pulumi.get(__response__, 'latest_master_version'), + latest_node_version=pulumi.get(__response__, 'latest_node_version'), + location=pulumi.get(__response__, 'location'), + project=pulumi.get(__response__, 'project'), + release_channel_default_version=pulumi.get(__response__, 'release_channel_default_version'), + release_channel_latest_version=pulumi.get(__response__, 'release_channel_latest_version'), + valid_master_versions=pulumi.get(__response__, 'valid_master_versions'), + valid_node_versions=pulumi.get(__response__, 'valid_node_versions'), + version_prefix=pulumi.get(__response__, 'version_prefix'))) diff --git a/sdk/python/pulumi_gcp/container/get_registry_image.py b/sdk/python/pulumi_gcp/container/get_registry_image.py index 993a1007a3..03153f4320 100644 --- a/sdk/python/pulumi_gcp/container/get_registry_image.py +++ b/sdk/python/pulumi_gcp/container/get_registry_image.py @@ -151,9 +151,6 @@ def get_registry_image(digest: Optional[str] = None, project=pulumi.get(__ret__, 'project'), region=pulumi.get(__ret__, 'region'), tag=pulumi.get(__ret__, 'tag')) - - -@_utilities.lift_output_func(get_registry_image) def get_registry_image_output(digest: Optional[pulumi.Input[Optional[str]]] = None, name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -182,4 +179,19 @@ def get_registry_image_output(digest: Optional[pulumi.Input[Optional[str]]] = No :param str region: The GCR region to use. As of this writing, one of `asia`, `eu`, and `us`. See [the documentation](https://cloud.google.com/container-registry/docs/pushing-and-pulling) for additional information. :param str tag: The tag to fetch, if any. """ - ... + __args__ = dict() + __args__['digest'] = digest + __args__['name'] = name + __args__['project'] = project + __args__['region'] = region + __args__['tag'] = tag + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:container/getRegistryImage:getRegistryImage', __args__, opts=opts, typ=GetRegistryImageResult) + return __ret__.apply(lambda __response__: GetRegistryImageResult( + digest=pulumi.get(__response__, 'digest'), + id=pulumi.get(__response__, 'id'), + image_url=pulumi.get(__response__, 'image_url'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + region=pulumi.get(__response__, 'region'), + tag=pulumi.get(__response__, 'tag'))) diff --git a/sdk/python/pulumi_gcp/container/get_registry_repository.py b/sdk/python/pulumi_gcp/container/get_registry_repository.py index 7b9d24eb1c..e47bbb3c38 100644 --- a/sdk/python/pulumi_gcp/container/get_registry_repository.py +++ b/sdk/python/pulumi_gcp/container/get_registry_repository.py @@ -112,9 +112,6 @@ def get_registry_repository(project: Optional[str] = None, project=pulumi.get(__ret__, 'project'), region=pulumi.get(__ret__, 'region'), repository_url=pulumi.get(__ret__, 'repository_url')) - - -@_utilities.lift_output_func(get_registry_repository) def get_registry_repository_output(project: Optional[pulumi.Input[Optional[str]]] = None, region: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetRegistryRepositoryResult]: @@ -137,4 +134,13 @@ def get_registry_repository_output(project: Optional[pulumi.Input[Optional[str]] :param str project: The project ID that this repository is attached to. If not provided, provider project will be used instead. :param str region: The GCR region to use. As of this writing, one of `asia`, `eu`, and `us`. See [the documentation](https://cloud.google.com/container-registry/docs/pushing-and-pulling) for additional information. """ - ... + __args__ = dict() + __args__['project'] = project + __args__['region'] = region + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:container/getRegistryRepository:getRegistryRepository', __args__, opts=opts, typ=GetRegistryRepositoryResult) + return __ret__.apply(lambda __response__: GetRegistryRepositoryResult( + id=pulumi.get(__response__, 'id'), + project=pulumi.get(__response__, 'project'), + region=pulumi.get(__response__, 'region'), + repository_url=pulumi.get(__response__, 'repository_url'))) diff --git a/sdk/python/pulumi_gcp/containeranalysis/get_note_iam_policy.py b/sdk/python/pulumi_gcp/containeranalysis/get_note_iam_policy.py index 5b4d7af0ed..5bbd8523d6 100644 --- a/sdk/python/pulumi_gcp/containeranalysis/get_note_iam_policy.py +++ b/sdk/python/pulumi_gcp/containeranalysis/get_note_iam_policy.py @@ -125,9 +125,6 @@ def get_note_iam_policy(note: Optional[str] = None, note=pulumi.get(__ret__, 'note'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_note_iam_policy) def get_note_iam_policy_output(note: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetNoteIamPolicyResult]: @@ -149,4 +146,14 @@ def get_note_iam_policy_output(note: Optional[pulumi.Input[str]] = None, :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['note'] = note + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:containeranalysis/getNoteIamPolicy:getNoteIamPolicy', __args__, opts=opts, typ=GetNoteIamPolicyResult) + return __ret__.apply(lambda __response__: GetNoteIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + note=pulumi.get(__response__, 'note'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/datacatalog/get_entry_group_iam_policy.py b/sdk/python/pulumi_gcp/datacatalog/get_entry_group_iam_policy.py index c1bd559d6e..1877f8431d 100644 --- a/sdk/python/pulumi_gcp/datacatalog/get_entry_group_iam_policy.py +++ b/sdk/python/pulumi_gcp/datacatalog/get_entry_group_iam_policy.py @@ -136,9 +136,6 @@ def get_entry_group_iam_policy(entry_group: Optional[str] = None, policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project'), region=pulumi.get(__ret__, 'region')) - - -@_utilities.lift_output_func(get_entry_group_iam_policy) def get_entry_group_iam_policy_output(entry_group: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, region: Optional[pulumi.Input[Optional[str]]] = None, @@ -160,4 +157,16 @@ def get_entry_group_iam_policy_output(entry_group: Optional[pulumi.Input[str]] = :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['entryGroup'] = entry_group + __args__['project'] = project + __args__['region'] = region + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:datacatalog/getEntryGroupIamPolicy:getEntryGroupIamPolicy', __args__, opts=opts, typ=GetEntryGroupIamPolicyResult) + return __ret__.apply(lambda __response__: GetEntryGroupIamPolicyResult( + entry_group=pulumi.get(__response__, 'entry_group'), + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'), + region=pulumi.get(__response__, 'region'))) diff --git a/sdk/python/pulumi_gcp/datacatalog/get_policy_tag_iam_policy.py b/sdk/python/pulumi_gcp/datacatalog/get_policy_tag_iam_policy.py index f26e3081c0..0efc5452b8 100644 --- a/sdk/python/pulumi_gcp/datacatalog/get_policy_tag_iam_policy.py +++ b/sdk/python/pulumi_gcp/datacatalog/get_policy_tag_iam_policy.py @@ -110,9 +110,6 @@ def get_policy_tag_iam_policy(policy_tag: Optional[str] = None, id=pulumi.get(__ret__, 'id'), policy_data=pulumi.get(__ret__, 'policy_data'), policy_tag=pulumi.get(__ret__, 'policy_tag')) - - -@_utilities.lift_output_func(get_policy_tag_iam_policy) def get_policy_tag_iam_policy_output(policy_tag: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetPolicyTagIamPolicyResult]: """ @@ -130,4 +127,12 @@ def get_policy_tag_iam_policy_output(policy_tag: Optional[pulumi.Input[str]] = N :param str policy_tag: Used to find the parent resource to bind the IAM policy to """ - ... + __args__ = dict() + __args__['policyTag'] = policy_tag + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:datacatalog/getPolicyTagIamPolicy:getPolicyTagIamPolicy', __args__, opts=opts, typ=GetPolicyTagIamPolicyResult) + return __ret__.apply(lambda __response__: GetPolicyTagIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'), + policy_tag=pulumi.get(__response__, 'policy_tag'))) diff --git a/sdk/python/pulumi_gcp/datacatalog/get_tag_template_iam_policy.py b/sdk/python/pulumi_gcp/datacatalog/get_tag_template_iam_policy.py index b1442d4115..23472bdf40 100644 --- a/sdk/python/pulumi_gcp/datacatalog/get_tag_template_iam_policy.py +++ b/sdk/python/pulumi_gcp/datacatalog/get_tag_template_iam_policy.py @@ -136,9 +136,6 @@ def get_tag_template_iam_policy(project: Optional[str] = None, project=pulumi.get(__ret__, 'project'), region=pulumi.get(__ret__, 'region'), tag_template=pulumi.get(__ret__, 'tag_template')) - - -@_utilities.lift_output_func(get_tag_template_iam_policy) def get_tag_template_iam_policy_output(project: Optional[pulumi.Input[Optional[str]]] = None, region: Optional[pulumi.Input[Optional[str]]] = None, tag_template: Optional[pulumi.Input[str]] = None, @@ -160,4 +157,16 @@ def get_tag_template_iam_policy_output(project: Optional[pulumi.Input[Optional[s If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. :param str tag_template: Used to find the parent resource to bind the IAM policy to """ - ... + __args__ = dict() + __args__['project'] = project + __args__['region'] = region + __args__['tagTemplate'] = tag_template + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:datacatalog/getTagTemplateIamPolicy:getTagTemplateIamPolicy', __args__, opts=opts, typ=GetTagTemplateIamPolicyResult) + return __ret__.apply(lambda __response__: GetTagTemplateIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'), + region=pulumi.get(__response__, 'region'), + tag_template=pulumi.get(__response__, 'tag_template'))) diff --git a/sdk/python/pulumi_gcp/datacatalog/get_taxonomy_iam_policy.py b/sdk/python/pulumi_gcp/datacatalog/get_taxonomy_iam_policy.py index 74dc69e2cd..d7fce39b24 100644 --- a/sdk/python/pulumi_gcp/datacatalog/get_taxonomy_iam_policy.py +++ b/sdk/python/pulumi_gcp/datacatalog/get_taxonomy_iam_policy.py @@ -136,9 +136,6 @@ def get_taxonomy_iam_policy(project: Optional[str] = None, project=pulumi.get(__ret__, 'project'), region=pulumi.get(__ret__, 'region'), taxonomy=pulumi.get(__ret__, 'taxonomy')) - - -@_utilities.lift_output_func(get_taxonomy_iam_policy) def get_taxonomy_iam_policy_output(project: Optional[pulumi.Input[Optional[str]]] = None, region: Optional[pulumi.Input[Optional[str]]] = None, taxonomy: Optional[pulumi.Input[str]] = None, @@ -160,4 +157,16 @@ def get_taxonomy_iam_policy_output(project: Optional[pulumi.Input[Optional[str]] If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. :param str taxonomy: Used to find the parent resource to bind the IAM policy to """ - ... + __args__ = dict() + __args__['project'] = project + __args__['region'] = region + __args__['taxonomy'] = taxonomy + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:datacatalog/getTaxonomyIamPolicy:getTaxonomyIamPolicy', __args__, opts=opts, typ=GetTaxonomyIamPolicyResult) + return __ret__.apply(lambda __response__: GetTaxonomyIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'), + region=pulumi.get(__response__, 'region'), + taxonomy=pulumi.get(__response__, 'taxonomy'))) diff --git a/sdk/python/pulumi_gcp/dataform/get_repository_iam_policy.py b/sdk/python/pulumi_gcp/dataform/get_repository_iam_policy.py index b77275bdf3..8c3a1f8b24 100644 --- a/sdk/python/pulumi_gcp/dataform/get_repository_iam_policy.py +++ b/sdk/python/pulumi_gcp/dataform/get_repository_iam_policy.py @@ -129,9 +129,6 @@ def get_repository_iam_policy(project: Optional[str] = None, project=pulumi.get(__ret__, 'project'), region=pulumi.get(__ret__, 'region'), repository=pulumi.get(__ret__, 'repository')) - - -@_utilities.lift_output_func(get_repository_iam_policy) def get_repository_iam_policy_output(project: Optional[pulumi.Input[Optional[str]]] = None, region: Optional[pulumi.Input[Optional[str]]] = None, repository: Optional[pulumi.Input[str]] = None, @@ -146,4 +143,16 @@ def get_repository_iam_policy_output(project: Optional[pulumi.Input[Optional[str region is specified, it is taken from the provider configuration. :param str repository: Used to find the parent resource to bind the IAM policy to """ - ... + __args__ = dict() + __args__['project'] = project + __args__['region'] = region + __args__['repository'] = repository + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:dataform/getRepositoryIamPolicy:getRepositoryIamPolicy', __args__, opts=opts, typ=GetRepositoryIamPolicyResult) + return __ret__.apply(lambda __response__: GetRepositoryIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'), + region=pulumi.get(__response__, 'region'), + repository=pulumi.get(__response__, 'repository'))) diff --git a/sdk/python/pulumi_gcp/datafusion/get_instance_iam_policy.py b/sdk/python/pulumi_gcp/datafusion/get_instance_iam_policy.py index c719541184..96ec084141 100644 --- a/sdk/python/pulumi_gcp/datafusion/get_instance_iam_policy.py +++ b/sdk/python/pulumi_gcp/datafusion/get_instance_iam_policy.py @@ -142,9 +142,6 @@ def get_instance_iam_policy(name: Optional[str] = None, policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project'), region=pulumi.get(__ret__, 'region')) - - -@_utilities.lift_output_func(get_instance_iam_policy) def get_instance_iam_policy_output(name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, region: Optional[pulumi.Input[Optional[str]]] = None, @@ -172,4 +169,16 @@ def get_instance_iam_policy_output(name: Optional[pulumi.Input[str]] = None, the value will be parsed from the identifier of the parent resource. If no region is provided in the parent identifier and no region is specified, it is taken from the provider configuration. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + __args__['region'] = region + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:datafusion/getInstanceIamPolicy:getInstanceIamPolicy', __args__, opts=opts, typ=GetInstanceIamPolicyResult) + return __ret__.apply(lambda __response__: GetInstanceIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'), + region=pulumi.get(__response__, 'region'))) diff --git a/sdk/python/pulumi_gcp/dataplex/get_aspect_type_iam_policy.py b/sdk/python/pulumi_gcp/dataplex/get_aspect_type_iam_policy.py index a56e38c58f..14d69d5619 100644 --- a/sdk/python/pulumi_gcp/dataplex/get_aspect_type_iam_policy.py +++ b/sdk/python/pulumi_gcp/dataplex/get_aspect_type_iam_policy.py @@ -141,9 +141,6 @@ def get_aspect_type_iam_policy(aspect_type_id: Optional[str] = None, location=pulumi.get(__ret__, 'location'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_aspect_type_iam_policy) def get_aspect_type_iam_policy_output(aspect_type_id: Optional[pulumi.Input[str]] = None, location: Optional[pulumi.Input[Optional[str]]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -170,4 +167,16 @@ def get_aspect_type_iam_policy_output(aspect_type_id: Optional[pulumi.Input[str] :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['aspectTypeId'] = aspect_type_id + __args__['location'] = location + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:dataplex/getAspectTypeIamPolicy:getAspectTypeIamPolicy', __args__, opts=opts, typ=GetAspectTypeIamPolicyResult) + return __ret__.apply(lambda __response__: GetAspectTypeIamPolicyResult( + aspect_type_id=pulumi.get(__response__, 'aspect_type_id'), + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/dataplex/get_asset_iam_policy.py b/sdk/python/pulumi_gcp/dataplex/get_asset_iam_policy.py index 05fc6dbded..6d97762889 100644 --- a/sdk/python/pulumi_gcp/dataplex/get_asset_iam_policy.py +++ b/sdk/python/pulumi_gcp/dataplex/get_asset_iam_policy.py @@ -164,9 +164,6 @@ def get_asset_iam_policy(asset: Optional[str] = None, location=pulumi.get(__ret__, 'location'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_asset_iam_policy) def get_asset_iam_policy_output(asset: Optional[pulumi.Input[str]] = None, dataplex_zone: Optional[pulumi.Input[str]] = None, lake: Optional[pulumi.Input[str]] = None, @@ -194,4 +191,20 @@ def get_asset_iam_policy_output(asset: Optional[pulumi.Input[str]] = None, :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['asset'] = asset + __args__['dataplexZone'] = dataplex_zone + __args__['lake'] = lake + __args__['location'] = location + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:dataplex/getAssetIamPolicy:getAssetIamPolicy', __args__, opts=opts, typ=GetAssetIamPolicyResult) + return __ret__.apply(lambda __response__: GetAssetIamPolicyResult( + asset=pulumi.get(__response__, 'asset'), + dataplex_zone=pulumi.get(__response__, 'dataplex_zone'), + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + lake=pulumi.get(__response__, 'lake'), + location=pulumi.get(__response__, 'location'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/dataplex/get_datascan_iam_policy.py b/sdk/python/pulumi_gcp/dataplex/get_datascan_iam_policy.py index ca6bfa55ef..e904e14f67 100644 --- a/sdk/python/pulumi_gcp/dataplex/get_datascan_iam_policy.py +++ b/sdk/python/pulumi_gcp/dataplex/get_datascan_iam_policy.py @@ -141,9 +141,6 @@ def get_datascan_iam_policy(data_scan_id: Optional[str] = None, location=pulumi.get(__ret__, 'location'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_datascan_iam_policy) def get_datascan_iam_policy_output(data_scan_id: Optional[pulumi.Input[str]] = None, location: Optional[pulumi.Input[Optional[str]]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -170,4 +167,16 @@ def get_datascan_iam_policy_output(data_scan_id: Optional[pulumi.Input[str]] = N :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['dataScanId'] = data_scan_id + __args__['location'] = location + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:dataplex/getDatascanIamPolicy:getDatascanIamPolicy', __args__, opts=opts, typ=GetDatascanIamPolicyResult) + return __ret__.apply(lambda __response__: GetDatascanIamPolicyResult( + data_scan_id=pulumi.get(__response__, 'data_scan_id'), + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/dataplex/get_entry_group_iam_policy.py b/sdk/python/pulumi_gcp/dataplex/get_entry_group_iam_policy.py index cf217055b9..f5c9a7d6e4 100644 --- a/sdk/python/pulumi_gcp/dataplex/get_entry_group_iam_policy.py +++ b/sdk/python/pulumi_gcp/dataplex/get_entry_group_iam_policy.py @@ -141,9 +141,6 @@ def get_entry_group_iam_policy(entry_group_id: Optional[str] = None, location=pulumi.get(__ret__, 'location'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_entry_group_iam_policy) def get_entry_group_iam_policy_output(entry_group_id: Optional[pulumi.Input[str]] = None, location: Optional[pulumi.Input[Optional[str]]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -170,4 +167,16 @@ def get_entry_group_iam_policy_output(entry_group_id: Optional[pulumi.Input[str] :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['entryGroupId'] = entry_group_id + __args__['location'] = location + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:dataplex/getEntryGroupIamPolicy:getEntryGroupIamPolicy', __args__, opts=opts, typ=GetEntryGroupIamPolicyResult) + return __ret__.apply(lambda __response__: GetEntryGroupIamPolicyResult( + entry_group_id=pulumi.get(__response__, 'entry_group_id'), + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/dataplex/get_entry_type_iam_policy.py b/sdk/python/pulumi_gcp/dataplex/get_entry_type_iam_policy.py index fb8390be2d..ea68d11216 100644 --- a/sdk/python/pulumi_gcp/dataplex/get_entry_type_iam_policy.py +++ b/sdk/python/pulumi_gcp/dataplex/get_entry_type_iam_policy.py @@ -141,9 +141,6 @@ def get_entry_type_iam_policy(entry_type_id: Optional[str] = None, location=pulumi.get(__ret__, 'location'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_entry_type_iam_policy) def get_entry_type_iam_policy_output(entry_type_id: Optional[pulumi.Input[str]] = None, location: Optional[pulumi.Input[Optional[str]]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -170,4 +167,16 @@ def get_entry_type_iam_policy_output(entry_type_id: Optional[pulumi.Input[str]] :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['entryTypeId'] = entry_type_id + __args__['location'] = location + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:dataplex/getEntryTypeIamPolicy:getEntryTypeIamPolicy', __args__, opts=opts, typ=GetEntryTypeIamPolicyResult) + return __ret__.apply(lambda __response__: GetEntryTypeIamPolicyResult( + entry_type_id=pulumi.get(__response__, 'entry_type_id'), + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/dataplex/get_lake_iam_policy.py b/sdk/python/pulumi_gcp/dataplex/get_lake_iam_policy.py index a13602ec72..6078d572a4 100644 --- a/sdk/python/pulumi_gcp/dataplex/get_lake_iam_policy.py +++ b/sdk/python/pulumi_gcp/dataplex/get_lake_iam_policy.py @@ -138,9 +138,6 @@ def get_lake_iam_policy(lake: Optional[str] = None, location=pulumi.get(__ret__, 'location'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_lake_iam_policy) def get_lake_iam_policy_output(lake: Optional[pulumi.Input[str]] = None, location: Optional[pulumi.Input[Optional[str]]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -164,4 +161,16 @@ def get_lake_iam_policy_output(lake: Optional[pulumi.Input[str]] = None, :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['lake'] = lake + __args__['location'] = location + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:dataplex/getLakeIamPolicy:getLakeIamPolicy', __args__, opts=opts, typ=GetLakeIamPolicyResult) + return __ret__.apply(lambda __response__: GetLakeIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + lake=pulumi.get(__response__, 'lake'), + location=pulumi.get(__response__, 'location'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/dataplex/get_task_iam_policy.py b/sdk/python/pulumi_gcp/dataplex/get_task_iam_policy.py index 8f33e42368..564628a7aa 100644 --- a/sdk/python/pulumi_gcp/dataplex/get_task_iam_policy.py +++ b/sdk/python/pulumi_gcp/dataplex/get_task_iam_policy.py @@ -156,9 +156,6 @@ def get_task_iam_policy(lake: Optional[str] = None, policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project'), task_id=pulumi.get(__ret__, 'task_id')) - - -@_utilities.lift_output_func(get_task_iam_policy) def get_task_iam_policy_output(lake: Optional[pulumi.Input[str]] = None, location: Optional[pulumi.Input[Optional[str]]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -189,4 +186,18 @@ def get_task_iam_policy_output(lake: Optional[pulumi.Input[str]] = None, :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['lake'] = lake + __args__['location'] = location + __args__['project'] = project + __args__['taskId'] = task_id + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:dataplex/getTaskIamPolicy:getTaskIamPolicy', __args__, opts=opts, typ=GetTaskIamPolicyResult) + return __ret__.apply(lambda __response__: GetTaskIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + lake=pulumi.get(__response__, 'lake'), + location=pulumi.get(__response__, 'location'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'), + task_id=pulumi.get(__response__, 'task_id'))) diff --git a/sdk/python/pulumi_gcp/dataplex/get_zone_iam_policy.py b/sdk/python/pulumi_gcp/dataplex/get_zone_iam_policy.py index 8a9ff80c1d..f01cd7d9a9 100644 --- a/sdk/python/pulumi_gcp/dataplex/get_zone_iam_policy.py +++ b/sdk/python/pulumi_gcp/dataplex/get_zone_iam_policy.py @@ -151,9 +151,6 @@ def get_zone_iam_policy(dataplex_zone: Optional[str] = None, location=pulumi.get(__ret__, 'location'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_zone_iam_policy) def get_zone_iam_policy_output(dataplex_zone: Optional[pulumi.Input[str]] = None, lake: Optional[pulumi.Input[str]] = None, location: Optional[pulumi.Input[Optional[str]]] = None, @@ -179,4 +176,18 @@ def get_zone_iam_policy_output(dataplex_zone: Optional[pulumi.Input[str]] = None :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['dataplexZone'] = dataplex_zone + __args__['lake'] = lake + __args__['location'] = location + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:dataplex/getZoneIamPolicy:getZoneIamPolicy', __args__, opts=opts, typ=GetZoneIamPolicyResult) + return __ret__.apply(lambda __response__: GetZoneIamPolicyResult( + dataplex_zone=pulumi.get(__response__, 'dataplex_zone'), + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + lake=pulumi.get(__response__, 'lake'), + location=pulumi.get(__response__, 'location'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/dataplex/task.py b/sdk/python/pulumi_gcp/dataplex/task.py index 497995f851..93e0ae6cff 100644 --- a/sdk/python/pulumi_gcp/dataplex/task.py +++ b/sdk/python/pulumi_gcp/dataplex/task.py @@ -628,7 +628,7 @@ def __init__(__self__, execution_spec={ "service_account": f"{project.number}-compute@developer.gserviceaccount.com", "args": { - "tas_k__args": "--output_location,gs://spark-job/task-result, --output_format, json", + "TASK_ARGS": "--output_location,gs://spark-job/task-result, --output_format, json", }, }, spark={ @@ -684,7 +684,7 @@ def __init__(__self__, execution_spec={ "service_account": f"{project.number}-compute@developer.gserviceaccount.com", "args": { - "tas_k__args": "--output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json", + "TASK_ARGS": "--output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json", }, }, notebook={ @@ -838,7 +838,7 @@ def __init__(__self__, execution_spec={ "service_account": f"{project.number}-compute@developer.gserviceaccount.com", "args": { - "tas_k__args": "--output_location,gs://spark-job/task-result, --output_format, json", + "TASK_ARGS": "--output_location,gs://spark-job/task-result, --output_format, json", }, }, spark={ @@ -894,7 +894,7 @@ def __init__(__self__, execution_spec={ "service_account": f"{project.number}-compute@developer.gserviceaccount.com", "args": { - "tas_k__args": "--output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json", + "TASK_ARGS": "--output_location,gs://spark-job-jars-anrajitha/task-result, --output_format, json", }, }, notebook={ diff --git a/sdk/python/pulumi_gcp/dataproc/cluster.py b/sdk/python/pulumi_gcp/dataproc/cluster.py index fa785d6222..1b94b66d3a 100644 --- a/sdk/python/pulumi_gcp/dataproc/cluster.py +++ b/sdk/python/pulumi_gcp/dataproc/cluster.py @@ -400,7 +400,7 @@ def __init__(__self__, "software_config": { "image_version": "2.0.35-debian10", "override_properties": { - "dataproc_dataproc_allow_zero_workers": "true", + "dataproc:dataproc.allow.zero.workers": "true", }, }, "gce_cluster_config": { @@ -533,7 +533,7 @@ def __init__(__self__, "software_config": { "image_version": "2.0.35-debian10", "override_properties": { - "dataproc_dataproc_allow_zero_workers": "true", + "dataproc:dataproc.allow.zero.workers": "true", }, }, "gce_cluster_config": { diff --git a/sdk/python/pulumi_gcp/dataproc/get_autoscaling_policy_iam_policy.py b/sdk/python/pulumi_gcp/dataproc/get_autoscaling_policy_iam_policy.py index c5cdd9fcc0..c8343cb3b0 100644 --- a/sdk/python/pulumi_gcp/dataproc/get_autoscaling_policy_iam_policy.py +++ b/sdk/python/pulumi_gcp/dataproc/get_autoscaling_policy_iam_policy.py @@ -146,9 +146,6 @@ def get_autoscaling_policy_iam_policy(location: Optional[str] = None, policy_data=pulumi.get(__ret__, 'policy_data'), policy_id=pulumi.get(__ret__, 'policy_id'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_autoscaling_policy_iam_policy) def get_autoscaling_policy_iam_policy_output(location: Optional[pulumi.Input[Optional[str]]] = None, policy_id: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -180,4 +177,16 @@ def get_autoscaling_policy_iam_policy_output(location: Optional[pulumi.Input[Opt :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['location'] = location + __args__['policyId'] = policy_id + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:dataproc/getAutoscalingPolicyIamPolicy:getAutoscalingPolicyIamPolicy', __args__, opts=opts, typ=GetAutoscalingPolicyIamPolicyResult) + return __ret__.apply(lambda __response__: GetAutoscalingPolicyIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + policy_data=pulumi.get(__response__, 'policy_data'), + policy_id=pulumi.get(__response__, 'policy_id'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/dataproc/get_cluster_iam_policy.py b/sdk/python/pulumi_gcp/dataproc/get_cluster_iam_policy.py index b642d0bd50..d347981c66 100644 --- a/sdk/python/pulumi_gcp/dataproc/get_cluster_iam_policy.py +++ b/sdk/python/pulumi_gcp/dataproc/get_cluster_iam_policy.py @@ -134,9 +134,6 @@ def get_cluster_iam_policy(cluster: Optional[str] = None, policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project'), region=pulumi.get(__ret__, 'region')) - - -@_utilities.lift_output_func(get_cluster_iam_policy) def get_cluster_iam_policy_output(cluster: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, region: Optional[pulumi.Input[Optional[str]]] = None, @@ -157,4 +154,16 @@ def get_cluster_iam_policy_output(cluster: Optional[pulumi.Input[str]] = None, :param str cluster: The name or relative resource id of the cluster to manage IAM policies for. """ - ... + __args__ = dict() + __args__['cluster'] = cluster + __args__['project'] = project + __args__['region'] = region + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:dataproc/getClusterIamPolicy:getClusterIamPolicy', __args__, opts=opts, typ=GetClusterIamPolicyResult) + return __ret__.apply(lambda __response__: GetClusterIamPolicyResult( + cluster=pulumi.get(__response__, 'cluster'), + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'), + region=pulumi.get(__response__, 'region'))) diff --git a/sdk/python/pulumi_gcp/dataproc/get_job_iam_policy.py b/sdk/python/pulumi_gcp/dataproc/get_job_iam_policy.py index 5aae4169fb..3f963f9f17 100644 --- a/sdk/python/pulumi_gcp/dataproc/get_job_iam_policy.py +++ b/sdk/python/pulumi_gcp/dataproc/get_job_iam_policy.py @@ -134,9 +134,6 @@ def get_job_iam_policy(job_id: Optional[str] = None, policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project'), region=pulumi.get(__ret__, 'region')) - - -@_utilities.lift_output_func(get_job_iam_policy) def get_job_iam_policy_output(job_id: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, region: Optional[pulumi.Input[Optional[str]]] = None, @@ -157,4 +154,16 @@ def get_job_iam_policy_output(job_id: Optional[pulumi.Input[str]] = None, :param str job_id: The name or relative resource id of the job to manage IAM policies for. """ - ... + __args__ = dict() + __args__['jobId'] = job_id + __args__['project'] = project + __args__['region'] = region + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:dataproc/getJobIamPolicy:getJobIamPolicy', __args__, opts=opts, typ=GetJobIamPolicyResult) + return __ret__.apply(lambda __response__: GetJobIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + job_id=pulumi.get(__response__, 'job_id'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'), + region=pulumi.get(__response__, 'region'))) diff --git a/sdk/python/pulumi_gcp/dataproc/get_metastore_federation_iam_policy.py b/sdk/python/pulumi_gcp/dataproc/get_metastore_federation_iam_policy.py index f15ec9a8a8..3a8eea6879 100644 --- a/sdk/python/pulumi_gcp/dataproc/get_metastore_federation_iam_policy.py +++ b/sdk/python/pulumi_gcp/dataproc/get_metastore_federation_iam_policy.py @@ -141,9 +141,6 @@ def get_metastore_federation_iam_policy(federation_id: Optional[str] = None, location=pulumi.get(__ret__, 'location'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_metastore_federation_iam_policy) def get_metastore_federation_iam_policy_output(federation_id: Optional[pulumi.Input[str]] = None, location: Optional[pulumi.Input[Optional[str]]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -170,4 +167,16 @@ def get_metastore_federation_iam_policy_output(federation_id: Optional[pulumi.In :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['federationId'] = federation_id + __args__['location'] = location + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:dataproc/getMetastoreFederationIamPolicy:getMetastoreFederationIamPolicy', __args__, opts=opts, typ=GetMetastoreFederationIamPolicyResult) + return __ret__.apply(lambda __response__: GetMetastoreFederationIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + federation_id=pulumi.get(__response__, 'federation_id'), + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/dataproc/get_metastore_service.py b/sdk/python/pulumi_gcp/dataproc/get_metastore_service.py index 34c2d2b34e..e969eb3418 100644 --- a/sdk/python/pulumi_gcp/dataproc/get_metastore_service.py +++ b/sdk/python/pulumi_gcp/dataproc/get_metastore_service.py @@ -344,9 +344,6 @@ def get_metastore_service(location: Optional[str] = None, telemetry_configs=pulumi.get(__ret__, 'telemetry_configs'), tier=pulumi.get(__ret__, 'tier'), uid=pulumi.get(__ret__, 'uid')) - - -@_utilities.lift_output_func(get_metastore_service) def get_metastore_service_output(location: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, service_id: Optional[pulumi.Input[str]] = None, @@ -372,4 +369,37 @@ def get_metastore_service_output(location: Optional[pulumi.Input[str]] = None, is not provided, the provider project is used. :param str service_id: The ID of the metastore service. """ - ... + __args__ = dict() + __args__['location'] = location + __args__['project'] = project + __args__['serviceId'] = service_id + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:dataproc/getMetastoreService:getMetastoreService', __args__, opts=opts, typ=GetMetastoreServiceResult) + return __ret__.apply(lambda __response__: GetMetastoreServiceResult( + artifact_gcs_uri=pulumi.get(__response__, 'artifact_gcs_uri'), + database_type=pulumi.get(__response__, 'database_type'), + deletion_protection=pulumi.get(__response__, 'deletion_protection'), + effective_labels=pulumi.get(__response__, 'effective_labels'), + encryption_configs=pulumi.get(__response__, 'encryption_configs'), + endpoint_uri=pulumi.get(__response__, 'endpoint_uri'), + hive_metastore_configs=pulumi.get(__response__, 'hive_metastore_configs'), + id=pulumi.get(__response__, 'id'), + labels=pulumi.get(__response__, 'labels'), + location=pulumi.get(__response__, 'location'), + maintenance_windows=pulumi.get(__response__, 'maintenance_windows'), + metadata_integrations=pulumi.get(__response__, 'metadata_integrations'), + name=pulumi.get(__response__, 'name'), + network=pulumi.get(__response__, 'network'), + network_configs=pulumi.get(__response__, 'network_configs'), + port=pulumi.get(__response__, 'port'), + project=pulumi.get(__response__, 'project'), + pulumi_labels=pulumi.get(__response__, 'pulumi_labels'), + release_channel=pulumi.get(__response__, 'release_channel'), + scaling_configs=pulumi.get(__response__, 'scaling_configs'), + scheduled_backups=pulumi.get(__response__, 'scheduled_backups'), + service_id=pulumi.get(__response__, 'service_id'), + state=pulumi.get(__response__, 'state'), + state_message=pulumi.get(__response__, 'state_message'), + telemetry_configs=pulumi.get(__response__, 'telemetry_configs'), + tier=pulumi.get(__response__, 'tier'), + uid=pulumi.get(__response__, 'uid'))) diff --git a/sdk/python/pulumi_gcp/dataproc/get_metastore_service_iam_policy.py b/sdk/python/pulumi_gcp/dataproc/get_metastore_service_iam_policy.py index 0aeb66a2e7..60ee3e5a9b 100644 --- a/sdk/python/pulumi_gcp/dataproc/get_metastore_service_iam_policy.py +++ b/sdk/python/pulumi_gcp/dataproc/get_metastore_service_iam_policy.py @@ -142,9 +142,6 @@ def get_metastore_service_iam_policy(location: Optional[str] = None, policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project'), service_id=pulumi.get(__ret__, 'service_id')) - - -@_utilities.lift_output_func(get_metastore_service_iam_policy) def get_metastore_service_iam_policy_output(location: Optional[pulumi.Input[Optional[str]]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, service_id: Optional[pulumi.Input[str]] = None, @@ -172,4 +169,16 @@ def get_metastore_service_iam_policy_output(location: Optional[pulumi.Input[Opti :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['location'] = location + __args__['project'] = project + __args__['serviceId'] = service_id + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:dataproc/getMetastoreServiceIamPolicy:getMetastoreServiceIamPolicy', __args__, opts=opts, typ=GetMetastoreServiceIamPolicyResult) + return __ret__.apply(lambda __response__: GetMetastoreServiceIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'), + service_id=pulumi.get(__response__, 'service_id'))) diff --git a/sdk/python/pulumi_gcp/dataproc/job.py b/sdk/python/pulumi_gcp/dataproc/job.py index 87bc3cf402..29d8ab3c78 100644 --- a/sdk/python/pulumi_gcp/dataproc/job.py +++ b/sdk/python/pulumi_gcp/dataproc/job.py @@ -640,7 +640,7 @@ def __init__(__self__, "jar_file_uris": ["file:///usr/lib/spark/examples/jars/spark-examples.jar"], "args": ["1000"], "properties": { - "spark_log_conf": "true", + "spark.logConf": "true", }, "logging_config": { "driver_log_levels": { @@ -658,7 +658,7 @@ def __init__(__self__, pyspark_config={ "main_python_file_uri": "gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py", "properties": { - "spark_log_conf": "true", + "spark.logConf": "true", }, }) pulumi.export("sparkStatus", spark.statuses[0].state) @@ -725,7 +725,7 @@ def __init__(__self__, "jar_file_uris": ["file:///usr/lib/spark/examples/jars/spark-examples.jar"], "args": ["1000"], "properties": { - "spark_log_conf": "true", + "spark.logConf": "true", }, "logging_config": { "driver_log_levels": { @@ -743,7 +743,7 @@ def __init__(__self__, pyspark_config={ "main_python_file_uri": "gs://dataproc-examples-2f10d78d114f6aaec76462e3c310f31f/src/pyspark/hello-world/hello-world.py", "properties": { - "spark_log_conf": "true", + "spark.logConf": "true", }, }) pulumi.export("sparkStatus", spark.statuses[0].state) diff --git a/sdk/python/pulumi_gcp/datastream/get_static_ips.py b/sdk/python/pulumi_gcp/datastream/get_static_ips.py index 627aafc85e..e31d555aaa 100644 --- a/sdk/python/pulumi_gcp/datastream/get_static_ips.py +++ b/sdk/python/pulumi_gcp/datastream/get_static_ips.py @@ -112,9 +112,6 @@ def get_static_ips(location: Optional[str] = None, location=pulumi.get(__ret__, 'location'), project=pulumi.get(__ret__, 'project'), static_ips=pulumi.get(__ret__, 'static_ips')) - - -@_utilities.lift_output_func(get_static_ips) def get_static_ips_output(location: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetStaticIpsResult]: @@ -137,4 +134,13 @@ def get_static_ips_output(location: Optional[pulumi.Input[str]] = None, :param str location: The location to list Datastream IPs for. For example: `us-east1`. :param str project: Project from which to list static IP addresses. Defaults to project declared in the provider. """ - ... + __args__ = dict() + __args__['location'] = location + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:datastream/getStaticIps:getStaticIps', __args__, opts=opts, typ=GetStaticIpsResult) + return __ret__.apply(lambda __response__: GetStaticIpsResult( + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + project=pulumi.get(__response__, 'project'), + static_ips=pulumi.get(__response__, 'static_ips'))) diff --git a/sdk/python/pulumi_gcp/diagflow/cx_flow.py b/sdk/python/pulumi_gcp/diagflow/cx_flow.py index 0acdbb8ebc..6dc3a86eef 100644 --- a/sdk/python/pulumi_gcp/diagflow/cx_flow.py +++ b/sdk/python/pulumi_gcp/diagflow/cx_flow.py @@ -714,7 +714,7 @@ def __init__(__self__, "cases": json.dumps([ { "condition": "$sys.func.RAND() < 0.5", - "case_content": [ + "caseContent": [ { "message": { "text": { @@ -815,7 +815,7 @@ def __init__(__self__, "cases": json.dumps([ { "condition": "$sys.func.RAND() < 0.5", - "case_content": [ + "caseContent": [ { "message": { "text": { @@ -1142,7 +1142,7 @@ def __init__(__self__, "cases": json.dumps([ { "condition": "$sys.func.RAND() < 0.5", - "case_content": [ + "caseContent": [ { "message": { "text": { @@ -1243,7 +1243,7 @@ def __init__(__self__, "cases": json.dumps([ { "condition": "$sys.func.RAND() < 0.5", - "case_content": [ + "caseContent": [ { "message": { "text": { diff --git a/sdk/python/pulumi_gcp/diagflow/cx_page.py b/sdk/python/pulumi_gcp/diagflow/cx_page.py index d08d4f3522..5c09f9d63f 100644 --- a/sdk/python/pulumi_gcp/diagflow/cx_page.py +++ b/sdk/python/pulumi_gcp/diagflow/cx_page.py @@ -585,7 +585,7 @@ def __init__(__self__, "cases": json.dumps([ { "condition": "$sys.func.RAND() < 0.5", - "case_content": [ + "caseContent": [ { "message": { "text": { @@ -684,7 +684,7 @@ def __init__(__self__, "cases": json.dumps([ { "condition": "$sys.func.RAND() < 0.5", - "case_content": [ + "caseContent": [ { "message": { "text": { @@ -787,7 +787,7 @@ def __init__(__self__, "cases": json.dumps([ { "condition": "$sys.func.RAND() < 0.5", - "case_content": [ + "caseContent": [ { "message": { "text": { @@ -889,7 +889,7 @@ def __init__(__self__, "cases": json.dumps([ { "condition": "$sys.func.RAND() < 0.5", - "case_content": [ + "caseContent": [ { "message": { "text": { @@ -1009,7 +1009,7 @@ def __init__(__self__, "cases": json.dumps([ { "condition": "$sys.func.RAND() < 0.5", - "case_content": [ + "caseContent": [ { "message": { "text": { @@ -1230,7 +1230,7 @@ def __init__(__self__, "cases": json.dumps([ { "condition": "$sys.func.RAND() < 0.5", - "case_content": [ + "caseContent": [ { "message": { "text": { @@ -1329,7 +1329,7 @@ def __init__(__self__, "cases": json.dumps([ { "condition": "$sys.func.RAND() < 0.5", - "case_content": [ + "caseContent": [ { "message": { "text": { @@ -1432,7 +1432,7 @@ def __init__(__self__, "cases": json.dumps([ { "condition": "$sys.func.RAND() < 0.5", - "case_content": [ + "caseContent": [ { "message": { "text": { @@ -1534,7 +1534,7 @@ def __init__(__self__, "cases": json.dumps([ { "condition": "$sys.func.RAND() < 0.5", - "case_content": [ + "caseContent": [ { "message": { "text": { @@ -1654,7 +1654,7 @@ def __init__(__self__, "cases": json.dumps([ { "condition": "$sys.func.RAND() < 0.5", - "case_content": [ + "caseContent": [ { "message": { "text": { diff --git a/sdk/python/pulumi_gcp/dns/get_keys.py b/sdk/python/pulumi_gcp/dns/get_keys.py index 9a4ac9ee75..893bc5ad35 100644 --- a/sdk/python/pulumi_gcp/dns/get_keys.py +++ b/sdk/python/pulumi_gcp/dns/get_keys.py @@ -140,9 +140,6 @@ def get_keys(managed_zone: Optional[str] = None, managed_zone=pulumi.get(__ret__, 'managed_zone'), project=pulumi.get(__ret__, 'project'), zone_signing_keys=pulumi.get(__ret__, 'zone_signing_keys')) - - -@_utilities.lift_output_func(get_keys) def get_keys_output(managed_zone: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetKeysResult]: @@ -179,4 +176,14 @@ def get_keys_output(managed_zone: Optional[pulumi.Input[str]] = None, :param str managed_zone: The name or id of the Cloud DNS managed zone. :param str project: The ID of the project in which the resource belongs. If `project` is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['managedZone'] = managed_zone + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:dns/getKeys:getKeys', __args__, opts=opts, typ=GetKeysResult) + return __ret__.apply(lambda __response__: GetKeysResult( + id=pulumi.get(__response__, 'id'), + key_signing_keys=pulumi.get(__response__, 'key_signing_keys'), + managed_zone=pulumi.get(__response__, 'managed_zone'), + project=pulumi.get(__response__, 'project'), + zone_signing_keys=pulumi.get(__response__, 'zone_signing_keys'))) diff --git a/sdk/python/pulumi_gcp/dns/get_managed_zone.py b/sdk/python/pulumi_gcp/dns/get_managed_zone.py index ca3877997f..29b668471e 100644 --- a/sdk/python/pulumi_gcp/dns/get_managed_zone.py +++ b/sdk/python/pulumi_gcp/dns/get_managed_zone.py @@ -166,9 +166,6 @@ def get_managed_zone(name: Optional[str] = None, name_servers=pulumi.get(__ret__, 'name_servers'), project=pulumi.get(__ret__, 'project'), visibility=pulumi.get(__ret__, 'visibility')) - - -@_utilities.lift_output_func(get_managed_zone) def get_managed_zone_output(name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetManagedZoneResult]: @@ -196,4 +193,17 @@ def get_managed_zone_output(name: Optional[pulumi.Input[str]] = None, :param str name: A unique name for the resource. :param str project: The ID of the project for the Google Cloud DNS zone. If this is not provided the default project will be used. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:dns/getManagedZone:getManagedZone', __args__, opts=opts, typ=GetManagedZoneResult) + return __ret__.apply(lambda __response__: GetManagedZoneResult( + description=pulumi.get(__response__, 'description'), + dns_name=pulumi.get(__response__, 'dns_name'), + id=pulumi.get(__response__, 'id'), + managed_zone_id=pulumi.get(__response__, 'managed_zone_id'), + name=pulumi.get(__response__, 'name'), + name_servers=pulumi.get(__response__, 'name_servers'), + project=pulumi.get(__response__, 'project'), + visibility=pulumi.get(__response__, 'visibility'))) diff --git a/sdk/python/pulumi_gcp/dns/get_managed_zone_iam_policy.py b/sdk/python/pulumi_gcp/dns/get_managed_zone_iam_policy.py index 8edb361ddd..7f0627c520 100644 --- a/sdk/python/pulumi_gcp/dns/get_managed_zone_iam_policy.py +++ b/sdk/python/pulumi_gcp/dns/get_managed_zone_iam_policy.py @@ -125,9 +125,6 @@ def get_managed_zone_iam_policy(managed_zone: Optional[str] = None, managed_zone=pulumi.get(__ret__, 'managed_zone'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_managed_zone_iam_policy) def get_managed_zone_iam_policy_output(managed_zone: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetManagedZoneIamPolicyResult]: @@ -149,4 +146,14 @@ def get_managed_zone_iam_policy_output(managed_zone: Optional[pulumi.Input[str]] :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['managedZone'] = managed_zone + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:dns/getManagedZoneIamPolicy:getManagedZoneIamPolicy', __args__, opts=opts, typ=GetManagedZoneIamPolicyResult) + return __ret__.apply(lambda __response__: GetManagedZoneIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + managed_zone=pulumi.get(__response__, 'managed_zone'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/dns/get_managed_zones.py b/sdk/python/pulumi_gcp/dns/get_managed_zones.py index 1c79845563..5e552de5ec 100644 --- a/sdk/python/pulumi_gcp/dns/get_managed_zones.py +++ b/sdk/python/pulumi_gcp/dns/get_managed_zones.py @@ -96,9 +96,6 @@ def get_managed_zones(project: Optional[str] = None, id=pulumi.get(__ret__, 'id'), managed_zones=pulumi.get(__ret__, 'managed_zones'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_managed_zones) def get_managed_zones_output(project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetManagedZonesResult]: """ @@ -118,4 +115,11 @@ def get_managed_zones_output(project: Optional[pulumi.Input[Optional[str]]] = No :param str project: The ID of the project containing Google Cloud DNS zones. If this is not provided the default project will be used. """ - ... + __args__ = dict() + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:dns/getManagedZones:getManagedZones', __args__, opts=opts, typ=GetManagedZonesResult) + return __ret__.apply(lambda __response__: GetManagedZonesResult( + id=pulumi.get(__response__, 'id'), + managed_zones=pulumi.get(__response__, 'managed_zones'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/dns/get_record_set.py b/sdk/python/pulumi_gcp/dns/get_record_set.py index d2123b3a02..c185625ac3 100644 --- a/sdk/python/pulumi_gcp/dns/get_record_set.py +++ b/sdk/python/pulumi_gcp/dns/get_record_set.py @@ -155,9 +155,6 @@ def get_record_set(managed_zone: Optional[str] = None, rrdatas=pulumi.get(__ret__, 'rrdatas'), ttl=pulumi.get(__ret__, 'ttl'), type=pulumi.get(__ret__, 'type')) - - -@_utilities.lift_output_func(get_record_set) def get_record_set_output(managed_zone: Optional[pulumi.Input[str]] = None, name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -188,4 +185,18 @@ def get_record_set_output(managed_zone: Optional[pulumi.Input[str]] = None, :param str project: The ID of the project for the Google Cloud. :param str type: The RRSet type. [See this table for supported types](https://cloud.google.com/dns/docs/records#record_type). """ - ... + __args__ = dict() + __args__['managedZone'] = managed_zone + __args__['name'] = name + __args__['project'] = project + __args__['type'] = type + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:dns/getRecordSet:getRecordSet', __args__, opts=opts, typ=GetRecordSetResult) + return __ret__.apply(lambda __response__: GetRecordSetResult( + id=pulumi.get(__response__, 'id'), + managed_zone=pulumi.get(__response__, 'managed_zone'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + rrdatas=pulumi.get(__response__, 'rrdatas'), + ttl=pulumi.get(__response__, 'ttl'), + type=pulumi.get(__response__, 'type'))) diff --git a/sdk/python/pulumi_gcp/endpoints/get_service_consumers_iam_policy.py b/sdk/python/pulumi_gcp/endpoints/get_service_consumers_iam_policy.py index c0fc75d755..d3af9520cc 100644 --- a/sdk/python/pulumi_gcp/endpoints/get_service_consumers_iam_policy.py +++ b/sdk/python/pulumi_gcp/endpoints/get_service_consumers_iam_policy.py @@ -110,13 +110,20 @@ def get_service_consumers_iam_policy(consumer_project: Optional[str] = None, id=pulumi.get(__ret__, 'id'), policy_data=pulumi.get(__ret__, 'policy_data'), service_name=pulumi.get(__ret__, 'service_name')) - - -@_utilities.lift_output_func(get_service_consumers_iam_policy) def get_service_consumers_iam_policy_output(consumer_project: Optional[pulumi.Input[str]] = None, service_name: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetServiceConsumersIamPolicyResult]: """ Retrieves the current IAM policy data for serviceconsumers """ - ... + __args__ = dict() + __args__['consumerProject'] = consumer_project + __args__['serviceName'] = service_name + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:endpoints/getServiceConsumersIamPolicy:getServiceConsumersIamPolicy', __args__, opts=opts, typ=GetServiceConsumersIamPolicyResult) + return __ret__.apply(lambda __response__: GetServiceConsumersIamPolicyResult( + consumer_project=pulumi.get(__response__, 'consumer_project'), + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'), + service_name=pulumi.get(__response__, 'service_name'))) diff --git a/sdk/python/pulumi_gcp/endpoints/get_service_iam_policy.py b/sdk/python/pulumi_gcp/endpoints/get_service_iam_policy.py index 6eb922a286..2440735410 100644 --- a/sdk/python/pulumi_gcp/endpoints/get_service_iam_policy.py +++ b/sdk/python/pulumi_gcp/endpoints/get_service_iam_policy.py @@ -107,9 +107,6 @@ def get_service_iam_policy(service_name: Optional[str] = None, id=pulumi.get(__ret__, 'id'), policy_data=pulumi.get(__ret__, 'policy_data'), service_name=pulumi.get(__ret__, 'service_name')) - - -@_utilities.lift_output_func(get_service_iam_policy) def get_service_iam_policy_output(service_name: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetServiceIamPolicyResult]: """ @@ -124,4 +121,12 @@ def get_service_iam_policy_output(service_name: Optional[pulumi.Input[str]] = No policy = gcp.endpoints.get_service_iam_policy(service_name=endpoints_service["serviceName"]) ``` """ - ... + __args__ = dict() + __args__['serviceName'] = service_name + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:endpoints/getServiceIamPolicy:getServiceIamPolicy', __args__, opts=opts, typ=GetServiceIamPolicyResult) + return __ret__.apply(lambda __response__: GetServiceIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'), + service_name=pulumi.get(__response__, 'service_name'))) diff --git a/sdk/python/pulumi_gcp/filestore/get_instance.py b/sdk/python/pulumi_gcp/filestore/get_instance.py index f799375591..e8a82940ad 100644 --- a/sdk/python/pulumi_gcp/filestore/get_instance.py +++ b/sdk/python/pulumi_gcp/filestore/get_instance.py @@ -258,9 +258,6 @@ def get_instance(location: Optional[str] = None, pulumi_labels=pulumi.get(__ret__, 'pulumi_labels'), tier=pulumi.get(__ret__, 'tier'), zone=pulumi.get(__ret__, 'zone')) - - -@_utilities.lift_output_func(get_instance) def get_instance_output(location: Optional[pulumi.Input[Optional[str]]] = None, name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -290,4 +287,28 @@ def get_instance_output(location: Optional[pulumi.Input[Optional[str]]] = None, :param str project: The project in which the resource belongs. If it is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['location'] = location + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:filestore/getInstance:getInstance', __args__, opts=opts, typ=GetInstanceResult) + return __ret__.apply(lambda __response__: GetInstanceResult( + create_time=pulumi.get(__response__, 'create_time'), + deletion_protection_enabled=pulumi.get(__response__, 'deletion_protection_enabled'), + deletion_protection_reason=pulumi.get(__response__, 'deletion_protection_reason'), + description=pulumi.get(__response__, 'description'), + effective_labels=pulumi.get(__response__, 'effective_labels'), + etag=pulumi.get(__response__, 'etag'), + file_shares=pulumi.get(__response__, 'file_shares'), + id=pulumi.get(__response__, 'id'), + kms_key_name=pulumi.get(__response__, 'kms_key_name'), + labels=pulumi.get(__response__, 'labels'), + location=pulumi.get(__response__, 'location'), + name=pulumi.get(__response__, 'name'), + networks=pulumi.get(__response__, 'networks'), + project=pulumi.get(__response__, 'project'), + protocol=pulumi.get(__response__, 'protocol'), + pulumi_labels=pulumi.get(__response__, 'pulumi_labels'), + tier=pulumi.get(__response__, 'tier'), + zone=pulumi.get(__response__, 'zone'))) diff --git a/sdk/python/pulumi_gcp/firebase/extensions_instance.py b/sdk/python/pulumi_gcp/firebase/extensions_instance.py index 6994b2f497..d4be957f39 100644 --- a/sdk/python/pulumi_gcp/firebase/extensions_instance.py +++ b/sdk/python/pulumi_gcp/firebase/extensions_instance.py @@ -333,20 +333,20 @@ def __init__(__self__, "extension_ref": "firebase/storage-resize-images", "extension_version": "0.2.2", "params": { - "delet_e__origina_l__file": "false", - "mak_e__public": "false", - "imag_e__type": "false", - "i_s__animated": "true", - "functio_n__memory": "1024", - "d_o__backfill": "false", - "im_g__sizes": "200x200", - "im_g__bucket": images.name, + "DELETE_ORIGINAL_FILE": "false", + "MAKE_PUBLIC": "false", + "IMAGE_TYPE": "false", + "IS_ANIMATED": "true", + "FUNCTION_MEMORY": "1024", + "DO_BACKFILL": "false", + "IMG_SIZES": "200x200", + "IMG_BUCKET": images.name, }, "system_params": { - "firebaseextensions_v1beta_function_location": "", - "firebaseextensions_v1beta_function_max_instances": "3000", - "firebaseextensions_v1beta_function_min_instances": "0", - "firebaseextensions_v1beta_function_vpc_connector_egress_settings": "VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED", + "firebaseextensions.v1beta.function/location": "", + "firebaseextensions.v1beta.function/maxInstances": "3000", + "firebaseextensions.v1beta.function/minInstances": "0", + "firebaseextensions.v1beta.function/vpcConnectorEgressSettings": "VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED", }, "allowed_event_types": ["firebase.extensions.storage-resize-images.v1.onCompletion"], "eventarc_channel": "projects/my-project-name/locations//channels/firebase", @@ -412,20 +412,20 @@ def __init__(__self__, "extension_ref": "firebase/storage-resize-images", "extension_version": "0.2.2", "params": { - "delet_e__origina_l__file": "false", - "mak_e__public": "false", - "imag_e__type": "false", - "i_s__animated": "true", - "functio_n__memory": "1024", - "d_o__backfill": "false", - "im_g__sizes": "200x200", - "im_g__bucket": images.name, + "DELETE_ORIGINAL_FILE": "false", + "MAKE_PUBLIC": "false", + "IMAGE_TYPE": "false", + "IS_ANIMATED": "true", + "FUNCTION_MEMORY": "1024", + "DO_BACKFILL": "false", + "IMG_SIZES": "200x200", + "IMG_BUCKET": images.name, }, "system_params": { - "firebaseextensions_v1beta_function_location": "", - "firebaseextensions_v1beta_function_max_instances": "3000", - "firebaseextensions_v1beta_function_min_instances": "0", - "firebaseextensions_v1beta_function_vpc_connector_egress_settings": "VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED", + "firebaseextensions.v1beta.function/location": "", + "firebaseextensions.v1beta.function/maxInstances": "3000", + "firebaseextensions.v1beta.function/minInstances": "0", + "firebaseextensions.v1beta.function/vpcConnectorEgressSettings": "VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED", }, "allowed_event_types": ["firebase.extensions.storage-resize-images.v1.onCompletion"], "eventarc_channel": "projects/my-project-name/locations//channels/firebase", diff --git a/sdk/python/pulumi_gcp/firebase/get_android_app.py b/sdk/python/pulumi_gcp/firebase/get_android_app.py index 810fcb7271..f884c841cf 100644 --- a/sdk/python/pulumi_gcp/firebase/get_android_app.py +++ b/sdk/python/pulumi_gcp/firebase/get_android_app.py @@ -194,9 +194,6 @@ def get_android_app(app_id: Optional[str] = None, project=pulumi.get(__ret__, 'project'), sha1_hashes=pulumi.get(__ret__, 'sha1_hashes'), sha256_hashes=pulumi.get(__ret__, 'sha256_hashes')) - - -@_utilities.lift_output_func(get_android_app) def get_android_app_output(app_id: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetAndroidAppResult]: @@ -210,4 +207,20 @@ def get_android_app_output(app_id: Optional[pulumi.Input[str]] = None, :param str project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['appId'] = app_id + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:firebase/getAndroidApp:getAndroidApp', __args__, opts=opts, typ=GetAndroidAppResult) + return __ret__.apply(lambda __response__: GetAndroidAppResult( + api_key_id=pulumi.get(__response__, 'api_key_id'), + app_id=pulumi.get(__response__, 'app_id'), + deletion_policy=pulumi.get(__response__, 'deletion_policy'), + display_name=pulumi.get(__response__, 'display_name'), + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'), + package_name=pulumi.get(__response__, 'package_name'), + project=pulumi.get(__response__, 'project'), + sha1_hashes=pulumi.get(__response__, 'sha1_hashes'), + sha256_hashes=pulumi.get(__response__, 'sha256_hashes'))) diff --git a/sdk/python/pulumi_gcp/firebase/get_android_app_config.py b/sdk/python/pulumi_gcp/firebase/get_android_app_config.py index 65fb253bce..27a4fde260 100644 --- a/sdk/python/pulumi_gcp/firebase/get_android_app_config.py +++ b/sdk/python/pulumi_gcp/firebase/get_android_app_config.py @@ -100,13 +100,20 @@ def get_android_app_config(app_id: Optional[str] = None, config_filename=pulumi.get(__ret__, 'config_filename'), id=pulumi.get(__ret__, 'id'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_android_app_config) def get_android_app_config_output(app_id: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetAndroidAppConfigResult]: """ Use this data source to access information about an existing resource. """ - ... + __args__ = dict() + __args__['appId'] = app_id + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:firebase/getAndroidAppConfig:getAndroidAppConfig', __args__, opts=opts, typ=GetAndroidAppConfigResult) + return __ret__.apply(lambda __response__: GetAndroidAppConfigResult( + app_id=pulumi.get(__response__, 'app_id'), + config_file_contents=pulumi.get(__response__, 'config_file_contents'), + config_filename=pulumi.get(__response__, 'config_filename'), + id=pulumi.get(__response__, 'id'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/firebase/get_apple_app.py b/sdk/python/pulumi_gcp/firebase/get_apple_app.py index 8aec49a75d..38197d01d0 100644 --- a/sdk/python/pulumi_gcp/firebase/get_apple_app.py +++ b/sdk/python/pulumi_gcp/firebase/get_apple_app.py @@ -180,9 +180,6 @@ def get_apple_app(app_id: Optional[str] = None, name=pulumi.get(__ret__, 'name'), project=pulumi.get(__ret__, 'project'), team_id=pulumi.get(__ret__, 'team_id')) - - -@_utilities.lift_output_func(get_apple_app) def get_apple_app_output(app_id: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetAppleAppResult]: @@ -196,4 +193,19 @@ def get_apple_app_output(app_id: Optional[pulumi.Input[str]] = None, :param str project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['appId'] = app_id + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:firebase/getAppleApp:getAppleApp', __args__, opts=opts, typ=GetAppleAppResult) + return __ret__.apply(lambda __response__: GetAppleAppResult( + api_key_id=pulumi.get(__response__, 'api_key_id'), + app_id=pulumi.get(__response__, 'app_id'), + app_store_id=pulumi.get(__response__, 'app_store_id'), + bundle_id=pulumi.get(__response__, 'bundle_id'), + deletion_policy=pulumi.get(__response__, 'deletion_policy'), + display_name=pulumi.get(__response__, 'display_name'), + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + team_id=pulumi.get(__response__, 'team_id'))) diff --git a/sdk/python/pulumi_gcp/firebase/get_apple_app_config.py b/sdk/python/pulumi_gcp/firebase/get_apple_app_config.py index 2a0b1ad3bd..7b3cfe1ee9 100644 --- a/sdk/python/pulumi_gcp/firebase/get_apple_app_config.py +++ b/sdk/python/pulumi_gcp/firebase/get_apple_app_config.py @@ -112,9 +112,6 @@ def get_apple_app_config(app_id: Optional[str] = None, config_filename=pulumi.get(__ret__, 'config_filename'), id=pulumi.get(__ret__, 'id'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_apple_app_config) def get_apple_app_config_output(app_id: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetAppleAppConfigResult]: @@ -127,4 +124,14 @@ def get_apple_app_config_output(app_id: Optional[pulumi.Input[str]] = None, :param str project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['appId'] = app_id + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:firebase/getAppleAppConfig:getAppleAppConfig', __args__, opts=opts, typ=GetAppleAppConfigResult) + return __ret__.apply(lambda __response__: GetAppleAppConfigResult( + app_id=pulumi.get(__response__, 'app_id'), + config_file_contents=pulumi.get(__response__, 'config_file_contents'), + config_filename=pulumi.get(__response__, 'config_filename'), + id=pulumi.get(__response__, 'id'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/firebase/get_hosting_channel.py b/sdk/python/pulumi_gcp/firebase/get_hosting_channel.py index d9154746e5..b1f0222462 100644 --- a/sdk/python/pulumi_gcp/firebase/get_hosting_channel.py +++ b/sdk/python/pulumi_gcp/firebase/get_hosting_channel.py @@ -159,9 +159,6 @@ def get_hosting_channel(channel_id: Optional[str] = None, retained_release_count=pulumi.get(__ret__, 'retained_release_count'), site_id=pulumi.get(__ret__, 'site_id'), ttl=pulumi.get(__ret__, 'ttl')) - - -@_utilities.lift_output_func(get_hosting_channel) def get_hosting_channel_output(channel_id: Optional[pulumi.Input[str]] = None, site_id: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetHostingChannelResult]: @@ -171,4 +168,19 @@ def get_hosting_channel_output(channel_id: Optional[pulumi.Input[str]] = None, :param str channel_id: The ID of the channel. Use `channel_id = "live"` for the default channel of a site. :param str site_id: The ID of the site this channel belongs to. """ - ... + __args__ = dict() + __args__['channelId'] = channel_id + __args__['siteId'] = site_id + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:firebase/getHostingChannel:getHostingChannel', __args__, opts=opts, typ=GetHostingChannelResult) + return __ret__.apply(lambda __response__: GetHostingChannelResult( + channel_id=pulumi.get(__response__, 'channel_id'), + effective_labels=pulumi.get(__response__, 'effective_labels'), + expire_time=pulumi.get(__response__, 'expire_time'), + id=pulumi.get(__response__, 'id'), + labels=pulumi.get(__response__, 'labels'), + name=pulumi.get(__response__, 'name'), + pulumi_labels=pulumi.get(__response__, 'pulumi_labels'), + retained_release_count=pulumi.get(__response__, 'retained_release_count'), + site_id=pulumi.get(__response__, 'site_id'), + ttl=pulumi.get(__response__, 'ttl'))) diff --git a/sdk/python/pulumi_gcp/firebase/get_web_app.py b/sdk/python/pulumi_gcp/firebase/get_web_app.py index 5800f46e6e..69aa9cdcd1 100644 --- a/sdk/python/pulumi_gcp/firebase/get_web_app.py +++ b/sdk/python/pulumi_gcp/firebase/get_web_app.py @@ -149,9 +149,6 @@ def get_web_app(app_id: Optional[str] = None, id=pulumi.get(__ret__, 'id'), name=pulumi.get(__ret__, 'name'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_web_app) def get_web_app_output(app_id: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetWebAppResult]: @@ -166,4 +163,17 @@ def get_web_app_output(app_id: Optional[pulumi.Input[str]] = None, :param str project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['appId'] = app_id + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:firebase/getWebApp:getWebApp', __args__, opts=opts, typ=GetWebAppResult) + return __ret__.apply(lambda __response__: GetWebAppResult( + api_key_id=pulumi.get(__response__, 'api_key_id'), + app_id=pulumi.get(__response__, 'app_id'), + app_urls=pulumi.get(__response__, 'app_urls'), + deletion_policy=pulumi.get(__response__, 'deletion_policy'), + display_name=pulumi.get(__response__, 'display_name'), + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/firebase/get_web_app_config.py b/sdk/python/pulumi_gcp/firebase/get_web_app_config.py index 5ab6fa6afb..1807144598 100644 --- a/sdk/python/pulumi_gcp/firebase/get_web_app_config.py +++ b/sdk/python/pulumi_gcp/firebase/get_web_app_config.py @@ -193,9 +193,6 @@ def get_web_app_config(project: Optional[str] = None, project=pulumi.get(__ret__, 'project'), storage_bucket=pulumi.get(__ret__, 'storage_bucket'), web_app_id=pulumi.get(__ret__, 'web_app_id')) - - -@_utilities.lift_output_func(get_web_app_config) def get_web_app_config_output(project: Optional[pulumi.Input[Optional[str]]] = None, web_app_id: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetWebAppConfigResult]: @@ -215,4 +212,19 @@ def get_web_app_config_output(project: Optional[pulumi.Input[Optional[str]]] = N - - - """ - ... + __args__ = dict() + __args__['project'] = project + __args__['webAppId'] = web_app_id + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:firebase/getWebAppConfig:getWebAppConfig', __args__, opts=opts, typ=GetWebAppConfigResult) + return __ret__.apply(lambda __response__: GetWebAppConfigResult( + api_key=pulumi.get(__response__, 'api_key'), + auth_domain=pulumi.get(__response__, 'auth_domain'), + database_url=pulumi.get(__response__, 'database_url'), + id=pulumi.get(__response__, 'id'), + location_id=pulumi.get(__response__, 'location_id'), + measurement_id=pulumi.get(__response__, 'measurement_id'), + messaging_sender_id=pulumi.get(__response__, 'messaging_sender_id'), + project=pulumi.get(__response__, 'project'), + storage_bucket=pulumi.get(__response__, 'storage_bucket'), + web_app_id=pulumi.get(__response__, 'web_app_id'))) diff --git a/sdk/python/pulumi_gcp/folder/get_iam_policy.py b/sdk/python/pulumi_gcp/folder/get_iam_policy.py index b0d429d342..190b2f1cb0 100644 --- a/sdk/python/pulumi_gcp/folder/get_iam_policy.py +++ b/sdk/python/pulumi_gcp/folder/get_iam_policy.py @@ -109,9 +109,6 @@ def get_iam_policy(folder: Optional[str] = None, folder=pulumi.get(__ret__, 'folder'), id=pulumi.get(__ret__, 'id'), policy_data=pulumi.get(__ret__, 'policy_data')) - - -@_utilities.lift_output_func(get_iam_policy) def get_iam_policy_output(folder: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetIamPolicyResult]: """ @@ -129,4 +126,12 @@ def get_iam_policy_output(folder: Optional[pulumi.Input[str]] = None, :param str folder: The resource name of the folder the policy is attached to. Its format is folders/{folder_id}. """ - ... + __args__ = dict() + __args__['folder'] = folder + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:folder/getIamPolicy:getIamPolicy', __args__, opts=opts, typ=GetIamPolicyResult) + return __ret__.apply(lambda __response__: GetIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + folder=pulumi.get(__response__, 'folder'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'))) diff --git a/sdk/python/pulumi_gcp/folder/get_organization_policy.py b/sdk/python/pulumi_gcp/folder/get_organization_policy.py index 4d13f51320..ccadc070b4 100644 --- a/sdk/python/pulumi_gcp/folder/get_organization_policy.py +++ b/sdk/python/pulumi_gcp/folder/get_organization_policy.py @@ -161,9 +161,6 @@ def get_organization_policy(constraint: Optional[str] = None, restore_policies=pulumi.get(__ret__, 'restore_policies'), update_time=pulumi.get(__ret__, 'update_time'), version=pulumi.get(__ret__, 'version')) - - -@_utilities.lift_output_func(get_organization_policy) def get_organization_policy_output(constraint: Optional[pulumi.Input[str]] = None, folder: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetOrganizationPolicyResult]: @@ -187,4 +184,18 @@ def get_organization_policy_output(constraint: Optional[pulumi.Input[str]] = Non :param str constraint: (Required) The name of the Constraint the Policy is configuring, for example, `serviceuser.services`. Check out the [complete list of available constraints](https://cloud.google.com/resource-manager/docs/organization-policy/understanding-constraints#available_constraints). :param str folder: The resource name of the folder to set the policy for. Its format is folders/{folder_id}. """ - ... + __args__ = dict() + __args__['constraint'] = constraint + __args__['folder'] = folder + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:folder/getOrganizationPolicy:getOrganizationPolicy', __args__, opts=opts, typ=GetOrganizationPolicyResult) + return __ret__.apply(lambda __response__: GetOrganizationPolicyResult( + boolean_policies=pulumi.get(__response__, 'boolean_policies'), + constraint=pulumi.get(__response__, 'constraint'), + etag=pulumi.get(__response__, 'etag'), + folder=pulumi.get(__response__, 'folder'), + id=pulumi.get(__response__, 'id'), + list_policies=pulumi.get(__response__, 'list_policies'), + restore_policies=pulumi.get(__response__, 'restore_policies'), + update_time=pulumi.get(__response__, 'update_time'), + version=pulumi.get(__response__, 'version'))) diff --git a/sdk/python/pulumi_gcp/gkebackup/get_backup_plan_iam_policy.py b/sdk/python/pulumi_gcp/gkebackup/get_backup_plan_iam_policy.py index 4f3652051f..1cf71eb06e 100644 --- a/sdk/python/pulumi_gcp/gkebackup/get_backup_plan_iam_policy.py +++ b/sdk/python/pulumi_gcp/gkebackup/get_backup_plan_iam_policy.py @@ -142,9 +142,6 @@ def get_backup_plan_iam_policy(location: Optional[str] = None, name=pulumi.get(__ret__, 'name'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_backup_plan_iam_policy) def get_backup_plan_iam_policy_output(location: Optional[pulumi.Input[Optional[str]]] = None, name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -172,4 +169,16 @@ def get_backup_plan_iam_policy_output(location: Optional[pulumi.Input[Optional[s :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['location'] = location + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:gkebackup/getBackupPlanIamPolicy:getBackupPlanIamPolicy', __args__, opts=opts, typ=GetBackupPlanIamPolicyResult) + return __ret__.apply(lambda __response__: GetBackupPlanIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + name=pulumi.get(__response__, 'name'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/gkebackup/get_restore_plan_iam_policy.py b/sdk/python/pulumi_gcp/gkebackup/get_restore_plan_iam_policy.py index b4ded2df75..947142dee0 100644 --- a/sdk/python/pulumi_gcp/gkebackup/get_restore_plan_iam_policy.py +++ b/sdk/python/pulumi_gcp/gkebackup/get_restore_plan_iam_policy.py @@ -142,9 +142,6 @@ def get_restore_plan_iam_policy(location: Optional[str] = None, name=pulumi.get(__ret__, 'name'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_restore_plan_iam_policy) def get_restore_plan_iam_policy_output(location: Optional[pulumi.Input[Optional[str]]] = None, name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -172,4 +169,16 @@ def get_restore_plan_iam_policy_output(location: Optional[pulumi.Input[Optional[ :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['location'] = location + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:gkebackup/getRestorePlanIamPolicy:getRestorePlanIamPolicy', __args__, opts=opts, typ=GetRestorePlanIamPolicyResult) + return __ret__.apply(lambda __response__: GetRestorePlanIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + name=pulumi.get(__response__, 'name'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/gkehub/get_feature_iam_policy.py b/sdk/python/pulumi_gcp/gkehub/get_feature_iam_policy.py index 6686cdb841..b3f57f93c8 100644 --- a/sdk/python/pulumi_gcp/gkehub/get_feature_iam_policy.py +++ b/sdk/python/pulumi_gcp/gkehub/get_feature_iam_policy.py @@ -141,9 +141,6 @@ def get_feature_iam_policy(location: Optional[str] = None, name=pulumi.get(__ret__, 'name'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_feature_iam_policy) def get_feature_iam_policy_output(location: Optional[pulumi.Input[Optional[str]]] = None, name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -170,4 +167,16 @@ def get_feature_iam_policy_output(location: Optional[pulumi.Input[Optional[str]] :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['location'] = location + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:gkehub/getFeatureIamPolicy:getFeatureIamPolicy', __args__, opts=opts, typ=GetFeatureIamPolicyResult) + return __ret__.apply(lambda __response__: GetFeatureIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + name=pulumi.get(__response__, 'name'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/gkehub/get_membership_binding.py b/sdk/python/pulumi_gcp/gkehub/get_membership_binding.py index a75b7295d7..6fb86cb04e 100644 --- a/sdk/python/pulumi_gcp/gkehub/get_membership_binding.py +++ b/sdk/python/pulumi_gcp/gkehub/get_membership_binding.py @@ -208,9 +208,6 @@ def get_membership_binding(location: Optional[str] = None, states=pulumi.get(__ret__, 'states'), uid=pulumi.get(__ret__, 'uid'), update_time=pulumi.get(__ret__, 'update_time')) - - -@_utilities.lift_output_func(get_membership_binding) def get_membership_binding_output(location: Optional[pulumi.Input[str]] = None, membership_binding_id: Optional[pulumi.Input[str]] = None, membership_id: Optional[pulumi.Input[str]] = None, @@ -219,4 +216,26 @@ def get_membership_binding_output(location: Optional[pulumi.Input[str]] = None, """ Use this data source to access information about an existing resource. """ - ... + __args__ = dict() + __args__['location'] = location + __args__['membershipBindingId'] = membership_binding_id + __args__['membershipId'] = membership_id + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:gkehub/getMembershipBinding:getMembershipBinding', __args__, opts=opts, typ=GetMembershipBindingResult) + return __ret__.apply(lambda __response__: GetMembershipBindingResult( + create_time=pulumi.get(__response__, 'create_time'), + delete_time=pulumi.get(__response__, 'delete_time'), + effective_labels=pulumi.get(__response__, 'effective_labels'), + id=pulumi.get(__response__, 'id'), + labels=pulumi.get(__response__, 'labels'), + location=pulumi.get(__response__, 'location'), + membership_binding_id=pulumi.get(__response__, 'membership_binding_id'), + membership_id=pulumi.get(__response__, 'membership_id'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + pulumi_labels=pulumi.get(__response__, 'pulumi_labels'), + scope=pulumi.get(__response__, 'scope'), + states=pulumi.get(__response__, 'states'), + uid=pulumi.get(__response__, 'uid'), + update_time=pulumi.get(__response__, 'update_time'))) diff --git a/sdk/python/pulumi_gcp/gkehub/get_membership_iam_policy.py b/sdk/python/pulumi_gcp/gkehub/get_membership_iam_policy.py index 7b10ef20af..6f8e4869cc 100644 --- a/sdk/python/pulumi_gcp/gkehub/get_membership_iam_policy.py +++ b/sdk/python/pulumi_gcp/gkehub/get_membership_iam_policy.py @@ -142,9 +142,6 @@ def get_membership_iam_policy(location: Optional[str] = None, membership_id=pulumi.get(__ret__, 'membership_id'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_membership_iam_policy) def get_membership_iam_policy_output(location: Optional[pulumi.Input[Optional[str]]] = None, membership_id: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -172,4 +169,16 @@ def get_membership_iam_policy_output(location: Optional[pulumi.Input[Optional[st :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['location'] = location + __args__['membershipId'] = membership_id + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:gkehub/getMembershipIamPolicy:getMembershipIamPolicy', __args__, opts=opts, typ=GetMembershipIamPolicyResult) + return __ret__.apply(lambda __response__: GetMembershipIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + membership_id=pulumi.get(__response__, 'membership_id'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/gkehub/get_scope_iam_policy.py b/sdk/python/pulumi_gcp/gkehub/get_scope_iam_policy.py index 4aaceb4fed..c66baabf17 100644 --- a/sdk/python/pulumi_gcp/gkehub/get_scope_iam_policy.py +++ b/sdk/python/pulumi_gcp/gkehub/get_scope_iam_policy.py @@ -124,9 +124,6 @@ def get_scope_iam_policy(project: Optional[str] = None, policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project'), scope_id=pulumi.get(__ret__, 'scope_id')) - - -@_utilities.lift_output_func(get_scope_iam_policy) def get_scope_iam_policy_output(project: Optional[pulumi.Input[Optional[str]]] = None, scope_id: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetScopeIamPolicyResult]: @@ -147,4 +144,14 @@ def get_scope_iam_policy_output(project: Optional[pulumi.Input[Optional[str]]] = :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['project'] = project + __args__['scopeId'] = scope_id + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:gkehub/getScopeIamPolicy:getScopeIamPolicy', __args__, opts=opts, typ=GetScopeIamPolicyResult) + return __ret__.apply(lambda __response__: GetScopeIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'), + scope_id=pulumi.get(__response__, 'scope_id'))) diff --git a/sdk/python/pulumi_gcp/healthcare/get_consent_store_iam_policy.py b/sdk/python/pulumi_gcp/healthcare/get_consent_store_iam_policy.py index 8272f5abb4..b7ea9ea136 100644 --- a/sdk/python/pulumi_gcp/healthcare/get_consent_store_iam_policy.py +++ b/sdk/python/pulumi_gcp/healthcare/get_consent_store_iam_policy.py @@ -126,9 +126,6 @@ def get_consent_store_iam_policy(consent_store_id: Optional[str] = None, etag=pulumi.get(__ret__, 'etag'), id=pulumi.get(__ret__, 'id'), policy_data=pulumi.get(__ret__, 'policy_data')) - - -@_utilities.lift_output_func(get_consent_store_iam_policy) def get_consent_store_iam_policy_output(consent_store_id: Optional[pulumi.Input[str]] = None, dataset: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetConsentStoreIamPolicyResult]: @@ -151,4 +148,14 @@ def get_consent_store_iam_policy_output(consent_store_id: Optional[pulumi.Input[ 'projects/{project}/locations/{location}/datasets/{dataset}' Used to find the parent resource to bind the IAM policy to """ - ... + __args__ = dict() + __args__['consentStoreId'] = consent_store_id + __args__['dataset'] = dataset + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:healthcare/getConsentStoreIamPolicy:getConsentStoreIamPolicy', __args__, opts=opts, typ=GetConsentStoreIamPolicyResult) + return __ret__.apply(lambda __response__: GetConsentStoreIamPolicyResult( + consent_store_id=pulumi.get(__response__, 'consent_store_id'), + dataset=pulumi.get(__response__, 'dataset'), + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'))) diff --git a/sdk/python/pulumi_gcp/healthcare/get_dataset_iam_policy.py b/sdk/python/pulumi_gcp/healthcare/get_dataset_iam_policy.py index 27ee1874fd..605437ecd1 100644 --- a/sdk/python/pulumi_gcp/healthcare/get_dataset_iam_policy.py +++ b/sdk/python/pulumi_gcp/healthcare/get_dataset_iam_policy.py @@ -112,9 +112,6 @@ def get_dataset_iam_policy(dataset_id: Optional[str] = None, etag=pulumi.get(__ret__, 'etag'), id=pulumi.get(__ret__, 'id'), policy_data=pulumi.get(__ret__, 'policy_data')) - - -@_utilities.lift_output_func(get_dataset_iam_policy) def get_dataset_iam_policy_output(dataset_id: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetDatasetIamPolicyResult]: """ @@ -135,4 +132,12 @@ def get_dataset_iam_policy_output(dataset_id: Optional[pulumi.Input[str]] = None `{location_name}/{dataset_name}`. In the second form, the provider's project setting will be used as a fallback. """ - ... + __args__ = dict() + __args__['datasetId'] = dataset_id + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:healthcare/getDatasetIamPolicy:getDatasetIamPolicy', __args__, opts=opts, typ=GetDatasetIamPolicyResult) + return __ret__.apply(lambda __response__: GetDatasetIamPolicyResult( + dataset_id=pulumi.get(__response__, 'dataset_id'), + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'))) diff --git a/sdk/python/pulumi_gcp/healthcare/get_dicom_store_iam_policy.py b/sdk/python/pulumi_gcp/healthcare/get_dicom_store_iam_policy.py index 4bcb48c000..5f79a5bb2d 100644 --- a/sdk/python/pulumi_gcp/healthcare/get_dicom_store_iam_policy.py +++ b/sdk/python/pulumi_gcp/healthcare/get_dicom_store_iam_policy.py @@ -112,9 +112,6 @@ def get_dicom_store_iam_policy(dicom_store_id: Optional[str] = None, etag=pulumi.get(__ret__, 'etag'), id=pulumi.get(__ret__, 'id'), policy_data=pulumi.get(__ret__, 'policy_data')) - - -@_utilities.lift_output_func(get_dicom_store_iam_policy) def get_dicom_store_iam_policy_output(dicom_store_id: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetDicomStoreIamPolicyResult]: """ @@ -135,4 +132,12 @@ def get_dicom_store_iam_policy_output(dicom_store_id: Optional[pulumi.Input[str] `{location_name}/{dataset_name}/{dicom_store_name}`. In the second form, the provider's project setting will be used as a fallback. """ - ... + __args__ = dict() + __args__['dicomStoreId'] = dicom_store_id + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:healthcare/getDicomStoreIamPolicy:getDicomStoreIamPolicy', __args__, opts=opts, typ=GetDicomStoreIamPolicyResult) + return __ret__.apply(lambda __response__: GetDicomStoreIamPolicyResult( + dicom_store_id=pulumi.get(__response__, 'dicom_store_id'), + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'))) diff --git a/sdk/python/pulumi_gcp/healthcare/get_fhir_store_iam_policy.py b/sdk/python/pulumi_gcp/healthcare/get_fhir_store_iam_policy.py index 98b34588b7..3e4b16693e 100644 --- a/sdk/python/pulumi_gcp/healthcare/get_fhir_store_iam_policy.py +++ b/sdk/python/pulumi_gcp/healthcare/get_fhir_store_iam_policy.py @@ -112,9 +112,6 @@ def get_fhir_store_iam_policy(fhir_store_id: Optional[str] = None, fhir_store_id=pulumi.get(__ret__, 'fhir_store_id'), id=pulumi.get(__ret__, 'id'), policy_data=pulumi.get(__ret__, 'policy_data')) - - -@_utilities.lift_output_func(get_fhir_store_iam_policy) def get_fhir_store_iam_policy_output(fhir_store_id: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetFhirStoreIamPolicyResult]: """ @@ -135,4 +132,12 @@ def get_fhir_store_iam_policy_output(fhir_store_id: Optional[pulumi.Input[str]] `{location_name}/{dataset_name}/{fhir_store_name}`. In the second form, the provider's project setting will be used as a fallback. """ - ... + __args__ = dict() + __args__['fhirStoreId'] = fhir_store_id + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:healthcare/getFhirStoreIamPolicy:getFhirStoreIamPolicy', __args__, opts=opts, typ=GetFhirStoreIamPolicyResult) + return __ret__.apply(lambda __response__: GetFhirStoreIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + fhir_store_id=pulumi.get(__response__, 'fhir_store_id'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'))) diff --git a/sdk/python/pulumi_gcp/healthcare/get_hl7_v2_store_iam_policy.py b/sdk/python/pulumi_gcp/healthcare/get_hl7_v2_store_iam_policy.py index 774203bad1..6334f661d0 100644 --- a/sdk/python/pulumi_gcp/healthcare/get_hl7_v2_store_iam_policy.py +++ b/sdk/python/pulumi_gcp/healthcare/get_hl7_v2_store_iam_policy.py @@ -112,9 +112,6 @@ def get_hl7_v2_store_iam_policy(hl7_v2_store_id: Optional[str] = None, hl7_v2_store_id=pulumi.get(__ret__, 'hl7_v2_store_id'), id=pulumi.get(__ret__, 'id'), policy_data=pulumi.get(__ret__, 'policy_data')) - - -@_utilities.lift_output_func(get_hl7_v2_store_iam_policy) def get_hl7_v2_store_iam_policy_output(hl7_v2_store_id: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetHl7V2StoreIamPolicyResult]: """ @@ -135,4 +132,12 @@ def get_hl7_v2_store_iam_policy_output(hl7_v2_store_id: Optional[pulumi.Input[st `{location_name}/{dataset_name}/{hl7_v2_store_name}`. In the second form, the provider's project setting will be used as a fallback. """ - ... + __args__ = dict() + __args__['hl7V2StoreId'] = hl7_v2_store_id + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:healthcare/getHl7V2StoreIamPolicy:getHl7V2StoreIamPolicy', __args__, opts=opts, typ=GetHl7V2StoreIamPolicyResult) + return __ret__.apply(lambda __response__: GetHl7V2StoreIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + hl7_v2_store_id=pulumi.get(__response__, 'hl7_v2_store_id'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'))) diff --git a/sdk/python/pulumi_gcp/iam/get_rule.py b/sdk/python/pulumi_gcp/iam/get_rule.py index 244fb495d9..d46cbb2c8d 100644 --- a/sdk/python/pulumi_gcp/iam/get_rule.py +++ b/sdk/python/pulumi_gcp/iam/get_rule.py @@ -121,9 +121,6 @@ def get_rule(name: Optional[str] = None, name=pulumi.get(__ret__, 'name'), stage=pulumi.get(__ret__, 'stage'), title=pulumi.get(__ret__, 'title')) - - -@_utilities.lift_output_func(get_rule) def get_rule_output(name: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetRuleResult]: """ @@ -140,4 +137,13 @@ def get_rule_output(name: Optional[pulumi.Input[str]] = None, :param str name: The name of the Role to lookup in the form `roles/{ROLE_NAME}`, `organizations/{ORGANIZATION_ID}/roles/{ROLE_NAME}` or `projects/{PROJECT_ID}/roles/{ROLE_NAME}` """ - ... + __args__ = dict() + __args__['name'] = name + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:iam/getRule:getRule', __args__, opts=opts, typ=GetRuleResult) + return __ret__.apply(lambda __response__: GetRuleResult( + id=pulumi.get(__response__, 'id'), + included_permissions=pulumi.get(__response__, 'included_permissions'), + name=pulumi.get(__response__, 'name'), + stage=pulumi.get(__response__, 'stage'), + title=pulumi.get(__response__, 'title'))) diff --git a/sdk/python/pulumi_gcp/iam/get_testable_permissions.py b/sdk/python/pulumi_gcp/iam/get_testable_permissions.py index b21220c39f..1d6462508d 100644 --- a/sdk/python/pulumi_gcp/iam/get_testable_permissions.py +++ b/sdk/python/pulumi_gcp/iam/get_testable_permissions.py @@ -132,9 +132,6 @@ def get_testable_permissions(custom_support_level: Optional[str] = None, id=pulumi.get(__ret__, 'id'), permissions=pulumi.get(__ret__, 'permissions'), stages=pulumi.get(__ret__, 'stages')) - - -@_utilities.lift_output_func(get_testable_permissions) def get_testable_permissions_output(custom_support_level: Optional[pulumi.Input[Optional[str]]] = None, full_resource_name: Optional[pulumi.Input[str]] = None, stages: Optional[pulumi.Input[Optional[Sequence[str]]]] = None, @@ -162,4 +159,15 @@ def get_testable_permissions_output(custom_support_level: Optional[pulumi.Input[ :param str full_resource_name: See [full resource name documentation](https://cloud.google.com/apis/design/resource_names#full_resource_name) for more detail. :param Sequence[str] stages: The acceptable release stages of the permission in the output. Note that `BETA` does not include permissions in `GA`, but you can specify both with `["GA", "BETA"]` for example. Can be a list of `"ALPHA"`, `"BETA"`, `"GA"`, `"DEPRECATED"`. Default is `["GA"]`. """ - ... + __args__ = dict() + __args__['customSupportLevel'] = custom_support_level + __args__['fullResourceName'] = full_resource_name + __args__['stages'] = stages + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:iam/getTestablePermissions:getTestablePermissions', __args__, opts=opts, typ=GetTestablePermissionsResult) + return __ret__.apply(lambda __response__: GetTestablePermissionsResult( + custom_support_level=pulumi.get(__response__, 'custom_support_level'), + full_resource_name=pulumi.get(__response__, 'full_resource_name'), + id=pulumi.get(__response__, 'id'), + permissions=pulumi.get(__response__, 'permissions'), + stages=pulumi.get(__response__, 'stages'))) diff --git a/sdk/python/pulumi_gcp/iam/get_workload_identity_pool.py b/sdk/python/pulumi_gcp/iam/get_workload_identity_pool.py index b112bfea32..77f5d3876a 100644 --- a/sdk/python/pulumi_gcp/iam/get_workload_identity_pool.py +++ b/sdk/python/pulumi_gcp/iam/get_workload_identity_pool.py @@ -150,9 +150,6 @@ def get_workload_identity_pool(project: Optional[str] = None, project=pulumi.get(__ret__, 'project'), state=pulumi.get(__ret__, 'state'), workload_identity_pool_id=pulumi.get(__ret__, 'workload_identity_pool_id')) - - -@_utilities.lift_output_func(get_workload_identity_pool) def get_workload_identity_pool_output(project: Optional[pulumi.Input[Optional[str]]] = None, workload_identity_pool_id: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetWorkloadIdentityPoolResult]: @@ -176,4 +173,17 @@ def get_workload_identity_pool_output(project: Optional[pulumi.Input[Optional[st - - - """ - ... + __args__ = dict() + __args__['project'] = project + __args__['workloadIdentityPoolId'] = workload_identity_pool_id + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:iam/getWorkloadIdentityPool:getWorkloadIdentityPool', __args__, opts=opts, typ=GetWorkloadIdentityPoolResult) + return __ret__.apply(lambda __response__: GetWorkloadIdentityPoolResult( + description=pulumi.get(__response__, 'description'), + disabled=pulumi.get(__response__, 'disabled'), + display_name=pulumi.get(__response__, 'display_name'), + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + state=pulumi.get(__response__, 'state'), + workload_identity_pool_id=pulumi.get(__response__, 'workload_identity_pool_id'))) diff --git a/sdk/python/pulumi_gcp/iam/get_workload_identity_pool_provider.py b/sdk/python/pulumi_gcp/iam/get_workload_identity_pool_provider.py index 52f1fd74fe..1037af24e8 100644 --- a/sdk/python/pulumi_gcp/iam/get_workload_identity_pool_provider.py +++ b/sdk/python/pulumi_gcp/iam/get_workload_identity_pool_provider.py @@ -226,9 +226,6 @@ def get_workload_identity_pool_provider(project: Optional[str] = None, workload_identity_pool_id=pulumi.get(__ret__, 'workload_identity_pool_id'), workload_identity_pool_provider_id=pulumi.get(__ret__, 'workload_identity_pool_provider_id'), x509s=pulumi.get(__ret__, 'x509s')) - - -@_utilities.lift_output_func(get_workload_identity_pool_provider) def get_workload_identity_pool_provider_output(project: Optional[pulumi.Input[Optional[str]]] = None, workload_identity_pool_id: Optional[pulumi.Input[str]] = None, workload_identity_pool_provider_id: Optional[pulumi.Input[str]] = None, @@ -256,4 +253,25 @@ def get_workload_identity_pool_provider_output(project: Optional[pulumi.Input[Op - - - """ - ... + __args__ = dict() + __args__['project'] = project + __args__['workloadIdentityPoolId'] = workload_identity_pool_id + __args__['workloadIdentityPoolProviderId'] = workload_identity_pool_provider_id + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:iam/getWorkloadIdentityPoolProvider:getWorkloadIdentityPoolProvider', __args__, opts=opts, typ=GetWorkloadIdentityPoolProviderResult) + return __ret__.apply(lambda __response__: GetWorkloadIdentityPoolProviderResult( + attribute_condition=pulumi.get(__response__, 'attribute_condition'), + attribute_mapping=pulumi.get(__response__, 'attribute_mapping'), + aws=pulumi.get(__response__, 'aws'), + description=pulumi.get(__response__, 'description'), + disabled=pulumi.get(__response__, 'disabled'), + display_name=pulumi.get(__response__, 'display_name'), + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'), + oidcs=pulumi.get(__response__, 'oidcs'), + project=pulumi.get(__response__, 'project'), + samls=pulumi.get(__response__, 'samls'), + state=pulumi.get(__response__, 'state'), + workload_identity_pool_id=pulumi.get(__response__, 'workload_identity_pool_id'), + workload_identity_pool_provider_id=pulumi.get(__response__, 'workload_identity_pool_provider_id'), + x509s=pulumi.get(__response__, 'x509s'))) diff --git a/sdk/python/pulumi_gcp/iap/get_app_engine_service_iam_policy.py b/sdk/python/pulumi_gcp/iap/get_app_engine_service_iam_policy.py index 0d117fd45f..e87ff4847b 100644 --- a/sdk/python/pulumi_gcp/iap/get_app_engine_service_iam_policy.py +++ b/sdk/python/pulumi_gcp/iap/get_app_engine_service_iam_policy.py @@ -139,9 +139,6 @@ def get_app_engine_service_iam_policy(app_id: Optional[str] = None, policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project'), service=pulumi.get(__ret__, 'service')) - - -@_utilities.lift_output_func(get_app_engine_service_iam_policy) def get_app_engine_service_iam_policy_output(app_id: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, service: Optional[pulumi.Input[str]] = None, @@ -166,4 +163,16 @@ def get_app_engine_service_iam_policy_output(app_id: Optional[pulumi.Input[str]] If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. :param str service: Service id of the App Engine application Used to find the parent resource to bind the IAM policy to """ - ... + __args__ = dict() + __args__['appId'] = app_id + __args__['project'] = project + __args__['service'] = service + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:iap/getAppEngineServiceIamPolicy:getAppEngineServiceIamPolicy', __args__, opts=opts, typ=GetAppEngineServiceIamPolicyResult) + return __ret__.apply(lambda __response__: GetAppEngineServiceIamPolicyResult( + app_id=pulumi.get(__response__, 'app_id'), + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'), + service=pulumi.get(__response__, 'service'))) diff --git a/sdk/python/pulumi_gcp/iap/get_app_engine_version_iam_policy.py b/sdk/python/pulumi_gcp/iap/get_app_engine_version_iam_policy.py index 528e567534..c34c7ccb10 100644 --- a/sdk/python/pulumi_gcp/iap/get_app_engine_version_iam_policy.py +++ b/sdk/python/pulumi_gcp/iap/get_app_engine_version_iam_policy.py @@ -153,9 +153,6 @@ def get_app_engine_version_iam_policy(app_id: Optional[str] = None, project=pulumi.get(__ret__, 'project'), service=pulumi.get(__ret__, 'service'), version_id=pulumi.get(__ret__, 'version_id')) - - -@_utilities.lift_output_func(get_app_engine_version_iam_policy) def get_app_engine_version_iam_policy_output(app_id: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, service: Optional[pulumi.Input[str]] = None, @@ -183,4 +180,18 @@ def get_app_engine_version_iam_policy_output(app_id: Optional[pulumi.Input[str]] :param str service: Service id of the App Engine application Used to find the parent resource to bind the IAM policy to :param str version_id: Version id of the App Engine application Used to find the parent resource to bind the IAM policy to """ - ... + __args__ = dict() + __args__['appId'] = app_id + __args__['project'] = project + __args__['service'] = service + __args__['versionId'] = version_id + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:iap/getAppEngineVersionIamPolicy:getAppEngineVersionIamPolicy', __args__, opts=opts, typ=GetAppEngineVersionIamPolicyResult) + return __ret__.apply(lambda __response__: GetAppEngineVersionIamPolicyResult( + app_id=pulumi.get(__response__, 'app_id'), + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'), + service=pulumi.get(__response__, 'service'), + version_id=pulumi.get(__response__, 'version_id'))) diff --git a/sdk/python/pulumi_gcp/iap/get_client.py b/sdk/python/pulumi_gcp/iap/get_client.py index 7d6b1b7685..15d4a6bfae 100644 --- a/sdk/python/pulumi_gcp/iap/get_client.py +++ b/sdk/python/pulumi_gcp/iap/get_client.py @@ -118,9 +118,6 @@ def get_client(brand: Optional[str] = None, display_name=pulumi.get(__ret__, 'display_name'), id=pulumi.get(__ret__, 'id'), secret=pulumi.get(__ret__, 'secret')) - - -@_utilities.lift_output_func(get_client) def get_client_output(brand: Optional[pulumi.Input[str]] = None, client_id: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetClientResult]: @@ -142,4 +139,14 @@ def get_client_output(brand: Optional[pulumi.Input[str]] = None, :param str brand: The name of the brand. :param str client_id: The client_id of the brand. """ - ... + __args__ = dict() + __args__['brand'] = brand + __args__['clientId'] = client_id + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:iap/getClient:getClient', __args__, opts=opts, typ=GetClientResult) + return __ret__.apply(lambda __response__: GetClientResult( + brand=pulumi.get(__response__, 'brand'), + client_id=pulumi.get(__response__, 'client_id'), + display_name=pulumi.get(__response__, 'display_name'), + id=pulumi.get(__response__, 'id'), + secret=pulumi.get(__response__, 'secret'))) diff --git a/sdk/python/pulumi_gcp/iap/get_tunnel_dest_group_iam_policy.py b/sdk/python/pulumi_gcp/iap/get_tunnel_dest_group_iam_policy.py index 82ee5d6a33..a48e5339ed 100644 --- a/sdk/python/pulumi_gcp/iap/get_tunnel_dest_group_iam_policy.py +++ b/sdk/python/pulumi_gcp/iap/get_tunnel_dest_group_iam_policy.py @@ -141,9 +141,6 @@ def get_tunnel_dest_group_iam_policy(dest_group: Optional[str] = None, policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project'), region=pulumi.get(__ret__, 'region')) - - -@_utilities.lift_output_func(get_tunnel_dest_group_iam_policy) def get_tunnel_dest_group_iam_policy_output(dest_group: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, region: Optional[pulumi.Input[Optional[str]]] = None, @@ -170,4 +167,16 @@ def get_tunnel_dest_group_iam_policy_output(dest_group: Optional[pulumi.Input[st the value will be parsed from the identifier of the parent resource. If no region is provided in the parent identifier and no region is specified, it is taken from the provider configuration. """ - ... + __args__ = dict() + __args__['destGroup'] = dest_group + __args__['project'] = project + __args__['region'] = region + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:iap/getTunnelDestGroupIamPolicy:getTunnelDestGroupIamPolicy', __args__, opts=opts, typ=GetTunnelDestGroupIamPolicyResult) + return __ret__.apply(lambda __response__: GetTunnelDestGroupIamPolicyResult( + dest_group=pulumi.get(__response__, 'dest_group'), + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'), + region=pulumi.get(__response__, 'region'))) diff --git a/sdk/python/pulumi_gcp/iap/get_tunnel_iam_policy.py b/sdk/python/pulumi_gcp/iap/get_tunnel_iam_policy.py index a7c9771ed1..ce2d16a807 100644 --- a/sdk/python/pulumi_gcp/iap/get_tunnel_iam_policy.py +++ b/sdk/python/pulumi_gcp/iap/get_tunnel_iam_policy.py @@ -111,9 +111,6 @@ def get_tunnel_iam_policy(project: Optional[str] = None, id=pulumi.get(__ret__, 'id'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_tunnel_iam_policy) def get_tunnel_iam_policy_output(project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetTunnelIamPolicyResult]: """ @@ -132,4 +129,12 @@ def get_tunnel_iam_policy_output(project: Optional[pulumi.Input[Optional[str]]] :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:iap/getTunnelIamPolicy:getTunnelIamPolicy', __args__, opts=opts, typ=GetTunnelIamPolicyResult) + return __ret__.apply(lambda __response__: GetTunnelIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/iap/get_tunnel_instance_iam_policy.py b/sdk/python/pulumi_gcp/iap/get_tunnel_instance_iam_policy.py index aa4485741c..ec9b0654b7 100644 --- a/sdk/python/pulumi_gcp/iap/get_tunnel_instance_iam_policy.py +++ b/sdk/python/pulumi_gcp/iap/get_tunnel_instance_iam_policy.py @@ -138,9 +138,6 @@ def get_tunnel_instance_iam_policy(instance: Optional[str] = None, policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project'), zone=pulumi.get(__ret__, 'zone')) - - -@_utilities.lift_output_func(get_tunnel_instance_iam_policy) def get_tunnel_instance_iam_policy_output(instance: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, zone: Optional[pulumi.Input[Optional[str]]] = None, @@ -164,4 +161,16 @@ def get_tunnel_instance_iam_policy_output(instance: Optional[pulumi.Input[str]] :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['instance'] = instance + __args__['project'] = project + __args__['zone'] = zone + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:iap/getTunnelInstanceIamPolicy:getTunnelInstanceIamPolicy', __args__, opts=opts, typ=GetTunnelInstanceIamPolicyResult) + return __ret__.apply(lambda __response__: GetTunnelInstanceIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + instance=pulumi.get(__response__, 'instance'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'), + zone=pulumi.get(__response__, 'zone'))) diff --git a/sdk/python/pulumi_gcp/iap/get_web_backend_service_iam_policy.py b/sdk/python/pulumi_gcp/iap/get_web_backend_service_iam_policy.py index 00ea399e6e..afd4710c9a 100644 --- a/sdk/python/pulumi_gcp/iap/get_web_backend_service_iam_policy.py +++ b/sdk/python/pulumi_gcp/iap/get_web_backend_service_iam_policy.py @@ -125,9 +125,6 @@ def get_web_backend_service_iam_policy(project: Optional[str] = None, policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project'), web_backend_service=pulumi.get(__ret__, 'web_backend_service')) - - -@_utilities.lift_output_func(get_web_backend_service_iam_policy) def get_web_backend_service_iam_policy_output(project: Optional[pulumi.Input[Optional[str]]] = None, web_backend_service: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetWebBackendServiceIamPolicyResult]: @@ -149,4 +146,14 @@ def get_web_backend_service_iam_policy_output(project: Optional[pulumi.Input[Opt If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. :param str web_backend_service: Used to find the parent resource to bind the IAM policy to """ - ... + __args__ = dict() + __args__['project'] = project + __args__['webBackendService'] = web_backend_service + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:iap/getWebBackendServiceIamPolicy:getWebBackendServiceIamPolicy', __args__, opts=opts, typ=GetWebBackendServiceIamPolicyResult) + return __ret__.apply(lambda __response__: GetWebBackendServiceIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'), + web_backend_service=pulumi.get(__response__, 'web_backend_service'))) diff --git a/sdk/python/pulumi_gcp/iap/get_web_iam_policy.py b/sdk/python/pulumi_gcp/iap/get_web_iam_policy.py index 7fe6fdf639..03a36da884 100644 --- a/sdk/python/pulumi_gcp/iap/get_web_iam_policy.py +++ b/sdk/python/pulumi_gcp/iap/get_web_iam_policy.py @@ -111,9 +111,6 @@ def get_web_iam_policy(project: Optional[str] = None, id=pulumi.get(__ret__, 'id'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_web_iam_policy) def get_web_iam_policy_output(project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetWebIamPolicyResult]: """ @@ -132,4 +129,12 @@ def get_web_iam_policy_output(project: Optional[pulumi.Input[Optional[str]]] = N :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:iap/getWebIamPolicy:getWebIamPolicy', __args__, opts=opts, typ=GetWebIamPolicyResult) + return __ret__.apply(lambda __response__: GetWebIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/iap/get_web_region_backend_service_iam_policy.py b/sdk/python/pulumi_gcp/iap/get_web_region_backend_service_iam_policy.py index 803703c12d..5c5d025620 100644 --- a/sdk/python/pulumi_gcp/iap/get_web_region_backend_service_iam_policy.py +++ b/sdk/python/pulumi_gcp/iap/get_web_region_backend_service_iam_policy.py @@ -138,9 +138,6 @@ def get_web_region_backend_service_iam_policy(project: Optional[str] = None, project=pulumi.get(__ret__, 'project'), region=pulumi.get(__ret__, 'region'), web_region_backend_service=pulumi.get(__ret__, 'web_region_backend_service')) - - -@_utilities.lift_output_func(get_web_region_backend_service_iam_policy) def get_web_region_backend_service_iam_policy_output(project: Optional[pulumi.Input[Optional[str]]] = None, region: Optional[pulumi.Input[Optional[str]]] = None, web_region_backend_service: Optional[pulumi.Input[str]] = None, @@ -164,4 +161,16 @@ def get_web_region_backend_service_iam_policy_output(project: Optional[pulumi.In If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. :param str web_region_backend_service: Used to find the parent resource to bind the IAM policy to """ - ... + __args__ = dict() + __args__['project'] = project + __args__['region'] = region + __args__['webRegionBackendService'] = web_region_backend_service + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:iap/getWebRegionBackendServiceIamPolicy:getWebRegionBackendServiceIamPolicy', __args__, opts=opts, typ=GetWebRegionBackendServiceIamPolicyResult) + return __ret__.apply(lambda __response__: GetWebRegionBackendServiceIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'), + region=pulumi.get(__response__, 'region'), + web_region_backend_service=pulumi.get(__response__, 'web_region_backend_service'))) diff --git a/sdk/python/pulumi_gcp/iap/get_web_type_app_engine_iam_policy.py b/sdk/python/pulumi_gcp/iap/get_web_type_app_engine_iam_policy.py index 70fad25e1e..77e6d331cc 100644 --- a/sdk/python/pulumi_gcp/iap/get_web_type_app_engine_iam_policy.py +++ b/sdk/python/pulumi_gcp/iap/get_web_type_app_engine_iam_policy.py @@ -125,9 +125,6 @@ def get_web_type_app_engine_iam_policy(app_id: Optional[str] = None, id=pulumi.get(__ret__, 'id'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_web_type_app_engine_iam_policy) def get_web_type_app_engine_iam_policy_output(app_id: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetWebTypeAppEngineIamPolicyResult]: @@ -149,4 +146,14 @@ def get_web_type_app_engine_iam_policy_output(app_id: Optional[pulumi.Input[str] :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['appId'] = app_id + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:iap/getWebTypeAppEngineIamPolicy:getWebTypeAppEngineIamPolicy', __args__, opts=opts, typ=GetWebTypeAppEngineIamPolicyResult) + return __ret__.apply(lambda __response__: GetWebTypeAppEngineIamPolicyResult( + app_id=pulumi.get(__response__, 'app_id'), + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/iap/get_web_type_compute_iam_policy.py b/sdk/python/pulumi_gcp/iap/get_web_type_compute_iam_policy.py index 16bb807c98..e68e4f90db 100644 --- a/sdk/python/pulumi_gcp/iap/get_web_type_compute_iam_policy.py +++ b/sdk/python/pulumi_gcp/iap/get_web_type_compute_iam_policy.py @@ -111,9 +111,6 @@ def get_web_type_compute_iam_policy(project: Optional[str] = None, id=pulumi.get(__ret__, 'id'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_web_type_compute_iam_policy) def get_web_type_compute_iam_policy_output(project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetWebTypeComputeIamPolicyResult]: """ @@ -132,4 +129,12 @@ def get_web_type_compute_iam_policy_output(project: Optional[pulumi.Input[Option :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:iap/getWebTypeComputeIamPolicy:getWebTypeComputeIamPolicy', __args__, opts=opts, typ=GetWebTypeComputeIamPolicyResult) + return __ret__.apply(lambda __response__: GetWebTypeComputeIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/identityplatform/config.py b/sdk/python/pulumi_gcp/identityplatform/config.py index 622b95a374..21e1f2e9a6 100644 --- a/sdk/python/pulumi_gcp/identityplatform/config.py +++ b/sdk/python/pulumi_gcp/identityplatform/config.py @@ -505,7 +505,7 @@ def __init__(__self__, "phone_number": { "enabled": True, "test_phone_numbers": { - "_11231231234": "000000", + "+11231231234": "000000", }, }, }, @@ -645,7 +645,7 @@ def __init__(__self__, "phone_number": { "enabled": True, "test_phone_numbers": { - "_11231231234": "000000", + "+11231231234": "000000", }, }, }, diff --git a/sdk/python/pulumi_gcp/kms/get_crypto_key_iam_policy.py b/sdk/python/pulumi_gcp/kms/get_crypto_key_iam_policy.py index a96db4846d..4618b7ef5b 100644 --- a/sdk/python/pulumi_gcp/kms/get_crypto_key_iam_policy.py +++ b/sdk/python/pulumi_gcp/kms/get_crypto_key_iam_policy.py @@ -109,9 +109,6 @@ def get_crypto_key_iam_policy(crypto_key_id: Optional[str] = None, etag=pulumi.get(__ret__, 'etag'), id=pulumi.get(__ret__, 'id'), policy_data=pulumi.get(__ret__, 'policy_data')) - - -@_utilities.lift_output_func(get_crypto_key_iam_policy) def get_crypto_key_iam_policy_output(crypto_key_id: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetCryptoKeyIamPolicyResult]: """ @@ -129,4 +126,12 @@ def get_crypto_key_iam_policy_output(crypto_key_id: Optional[pulumi.Input[str]] :param str crypto_key_id: The crypto key ID, in the form """ - ... + __args__ = dict() + __args__['cryptoKeyId'] = crypto_key_id + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:kms/getCryptoKeyIamPolicy:getCryptoKeyIamPolicy', __args__, opts=opts, typ=GetCryptoKeyIamPolicyResult) + return __ret__.apply(lambda __response__: GetCryptoKeyIamPolicyResult( + crypto_key_id=pulumi.get(__response__, 'crypto_key_id'), + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'))) diff --git a/sdk/python/pulumi_gcp/kms/get_crypto_key_latest_version.py b/sdk/python/pulumi_gcp/kms/get_crypto_key_latest_version.py index 53f42c4b20..e5ab2b7bdb 100644 --- a/sdk/python/pulumi_gcp/kms/get_crypto_key_latest_version.py +++ b/sdk/python/pulumi_gcp/kms/get_crypto_key_latest_version.py @@ -183,9 +183,6 @@ def get_crypto_key_latest_version(crypto_key: Optional[str] = None, public_keys=pulumi.get(__ret__, 'public_keys'), state=pulumi.get(__ret__, 'state'), version=pulumi.get(__ret__, 'version')) - - -@_utilities.lift_output_func(get_crypto_key_latest_version) def get_crypto_key_latest_version_output(crypto_key: Optional[pulumi.Input[str]] = None, filter: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetCryptoKeyLatestVersionResult]: @@ -219,4 +216,18 @@ def get_crypto_key_latest_version_output(crypto_key: Optional[pulumi.Input[str]] [See the documentation about using filters](https://cloud.google.com/kms/docs/sorting-and-filtering) """ - ... + __args__ = dict() + __args__['cryptoKey'] = crypto_key + __args__['filter'] = filter + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:kms/getCryptoKeyLatestVersion:getCryptoKeyLatestVersion', __args__, opts=opts, typ=GetCryptoKeyLatestVersionResult) + return __ret__.apply(lambda __response__: GetCryptoKeyLatestVersionResult( + algorithm=pulumi.get(__response__, 'algorithm'), + crypto_key=pulumi.get(__response__, 'crypto_key'), + filter=pulumi.get(__response__, 'filter'), + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'), + protection_level=pulumi.get(__response__, 'protection_level'), + public_keys=pulumi.get(__response__, 'public_keys'), + state=pulumi.get(__response__, 'state'), + version=pulumi.get(__response__, 'version'))) diff --git a/sdk/python/pulumi_gcp/kms/get_crypto_key_versions.py b/sdk/python/pulumi_gcp/kms/get_crypto_key_versions.py index 0cc90014ba..7619912e9d 100644 --- a/sdk/python/pulumi_gcp/kms/get_crypto_key_versions.py +++ b/sdk/python/pulumi_gcp/kms/get_crypto_key_versions.py @@ -135,9 +135,6 @@ def get_crypto_key_versions(crypto_key: Optional[str] = None, id=pulumi.get(__ret__, 'id'), public_keys=pulumi.get(__ret__, 'public_keys'), versions=pulumi.get(__ret__, 'versions')) - - -@_utilities.lift_output_func(get_crypto_key_versions) def get_crypto_key_versions_output(crypto_key: Optional[pulumi.Input[str]] = None, filter: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetCryptoKeyVersionsResult]: @@ -172,4 +169,14 @@ def get_crypto_key_versions_output(crypto_key: Optional[pulumi.Input[str]] = Non [See the documentation about using filters](https://cloud.google.com/kms/docs/sorting-and-filtering) """ - ... + __args__ = dict() + __args__['cryptoKey'] = crypto_key + __args__['filter'] = filter + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:kms/getCryptoKeyVersions:getCryptoKeyVersions', __args__, opts=opts, typ=GetCryptoKeyVersionsResult) + return __ret__.apply(lambda __response__: GetCryptoKeyVersionsResult( + crypto_key=pulumi.get(__response__, 'crypto_key'), + filter=pulumi.get(__response__, 'filter'), + id=pulumi.get(__response__, 'id'), + public_keys=pulumi.get(__response__, 'public_keys'), + versions=pulumi.get(__response__, 'versions'))) diff --git a/sdk/python/pulumi_gcp/kms/get_crypto_keys.py b/sdk/python/pulumi_gcp/kms/get_crypto_keys.py index dd42f1e5bc..df80ebb7c0 100644 --- a/sdk/python/pulumi_gcp/kms/get_crypto_keys.py +++ b/sdk/python/pulumi_gcp/kms/get_crypto_keys.py @@ -114,9 +114,6 @@ def get_crypto_keys(filter: Optional[str] = None, id=pulumi.get(__ret__, 'id'), key_ring=pulumi.get(__ret__, 'key_ring'), keys=pulumi.get(__ret__, 'keys')) - - -@_utilities.lift_output_func(get_crypto_keys) def get_crypto_keys_output(filter: Optional[pulumi.Input[Optional[str]]] = None, key_ring: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetCryptoKeysResult]: @@ -140,4 +137,13 @@ def get_crypto_keys_output(filter: Optional[pulumi.Input[Optional[str]]] = None, [See the documentation about using filters](https://cloud.google.com/kms/docs/sorting-and-filtering) :param str key_ring: The key ring that the keys belongs to. Format: 'projects/{{project}}/locations/{{location}}/keyRings/{{keyRing}}'., """ - ... + __args__ = dict() + __args__['filter'] = filter + __args__['keyRing'] = key_ring + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:kms/getCryptoKeys:getCryptoKeys', __args__, opts=opts, typ=GetCryptoKeysResult) + return __ret__.apply(lambda __response__: GetCryptoKeysResult( + filter=pulumi.get(__response__, 'filter'), + id=pulumi.get(__response__, 'id'), + key_ring=pulumi.get(__response__, 'key_ring'), + keys=pulumi.get(__response__, 'keys'))) diff --git a/sdk/python/pulumi_gcp/kms/get_ekm_connection_iam_policy.py b/sdk/python/pulumi_gcp/kms/get_ekm_connection_iam_policy.py index 4b19a210dc..5468b98dfb 100644 --- a/sdk/python/pulumi_gcp/kms/get_ekm_connection_iam_policy.py +++ b/sdk/python/pulumi_gcp/kms/get_ekm_connection_iam_policy.py @@ -143,9 +143,6 @@ def get_ekm_connection_iam_policy(location: Optional[str] = None, name=pulumi.get(__ret__, 'name'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_ekm_connection_iam_policy) def get_ekm_connection_iam_policy_output(location: Optional[pulumi.Input[Optional[str]]] = None, name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -174,4 +171,16 @@ def get_ekm_connection_iam_policy_output(location: Optional[pulumi.Input[Optiona :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['location'] = location + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:kms/getEkmConnectionIamPolicy:getEkmConnectionIamPolicy', __args__, opts=opts, typ=GetEkmConnectionIamPolicyResult) + return __ret__.apply(lambda __response__: GetEkmConnectionIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + name=pulumi.get(__response__, 'name'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/kms/get_key_ring_iam_policy.py b/sdk/python/pulumi_gcp/kms/get_key_ring_iam_policy.py index f3535fa34b..cf20eb98d8 100644 --- a/sdk/python/pulumi_gcp/kms/get_key_ring_iam_policy.py +++ b/sdk/python/pulumi_gcp/kms/get_key_ring_iam_policy.py @@ -112,9 +112,6 @@ def get_key_ring_iam_policy(key_ring_id: Optional[str] = None, id=pulumi.get(__ret__, 'id'), key_ring_id=pulumi.get(__ret__, 'key_ring_id'), policy_data=pulumi.get(__ret__, 'policy_data')) - - -@_utilities.lift_output_func(get_key_ring_iam_policy) def get_key_ring_iam_policy_output(key_ring_id: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetKeyRingIamPolicyResult]: """ @@ -135,4 +132,12 @@ def get_key_ring_iam_policy_output(key_ring_id: Optional[pulumi.Input[str]] = No `{location_name}/{key_ring_name}`. In the second form, the provider's project setting will be used as a fallback. """ - ... + __args__ = dict() + __args__['keyRingId'] = key_ring_id + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:kms/getKeyRingIamPolicy:getKeyRingIamPolicy', __args__, opts=opts, typ=GetKeyRingIamPolicyResult) + return __ret__.apply(lambda __response__: GetKeyRingIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + key_ring_id=pulumi.get(__response__, 'key_ring_id'), + policy_data=pulumi.get(__response__, 'policy_data'))) diff --git a/sdk/python/pulumi_gcp/kms/get_key_rings.py b/sdk/python/pulumi_gcp/kms/get_key_rings.py index b186651288..61faa65a85 100644 --- a/sdk/python/pulumi_gcp/kms/get_key_rings.py +++ b/sdk/python/pulumi_gcp/kms/get_key_rings.py @@ -106,9 +106,6 @@ def get_key_rings(filter: Optional[str] = None, key_rings=pulumi.get(__ret__, 'key_rings'), location=pulumi.get(__ret__, 'location'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_key_rings) def get_key_rings_output(filter: Optional[pulumi.Input[Optional[str]]] = None, location: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -116,4 +113,15 @@ def get_key_rings_output(filter: Optional[pulumi.Input[Optional[str]]] = None, """ Use this data source to access information about an existing resource. """ - ... + __args__ = dict() + __args__['filter'] = filter + __args__['location'] = location + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:kms/getKeyRings:getKeyRings', __args__, opts=opts, typ=GetKeyRingsResult) + return __ret__.apply(lambda __response__: GetKeyRingsResult( + filter=pulumi.get(__response__, 'filter'), + id=pulumi.get(__response__, 'id'), + key_rings=pulumi.get(__response__, 'key_rings'), + location=pulumi.get(__response__, 'location'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/kms/get_kms_crypto_key.py b/sdk/python/pulumi_gcp/kms/get_kms_crypto_key.py index 91388c963f..b3e0152f23 100644 --- a/sdk/python/pulumi_gcp/kms/get_kms_crypto_key.py +++ b/sdk/python/pulumi_gcp/kms/get_kms_crypto_key.py @@ -235,9 +235,6 @@ def get_kms_crypto_key(key_ring: Optional[str] = None, rotation_period=pulumi.get(__ret__, 'rotation_period'), skip_initial_version_creation=pulumi.get(__ret__, 'skip_initial_version_creation'), version_templates=pulumi.get(__ret__, 'version_templates')) - - -@_utilities.lift_output_func(get_kms_crypto_key) def get_kms_crypto_key_output(key_ring: Optional[pulumi.Input[str]] = None, name: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetKMSCryptoKeyResult]: @@ -267,4 +264,24 @@ def get_kms_crypto_key_output(key_ring: Optional[pulumi.Input[str]] = None, :param str name: The CryptoKey's name. A CryptoKey’s name belonging to the specified Google Cloud Platform KeyRing and match the regular expression `[a-zA-Z0-9_-]{1,63}` """ - ... + __args__ = dict() + __args__['keyRing'] = key_ring + __args__['name'] = name + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:kms/getKMSCryptoKey:getKMSCryptoKey', __args__, opts=opts, typ=GetKMSCryptoKeyResult) + return __ret__.apply(lambda __response__: GetKMSCryptoKeyResult( + crypto_key_backend=pulumi.get(__response__, 'crypto_key_backend'), + destroy_scheduled_duration=pulumi.get(__response__, 'destroy_scheduled_duration'), + effective_labels=pulumi.get(__response__, 'effective_labels'), + id=pulumi.get(__response__, 'id'), + import_only=pulumi.get(__response__, 'import_only'), + key_access_justifications_policies=pulumi.get(__response__, 'key_access_justifications_policies'), + key_ring=pulumi.get(__response__, 'key_ring'), + labels=pulumi.get(__response__, 'labels'), + name=pulumi.get(__response__, 'name'), + primaries=pulumi.get(__response__, 'primaries'), + pulumi_labels=pulumi.get(__response__, 'pulumi_labels'), + purpose=pulumi.get(__response__, 'purpose'), + rotation_period=pulumi.get(__response__, 'rotation_period'), + skip_initial_version_creation=pulumi.get(__response__, 'skip_initial_version_creation'), + version_templates=pulumi.get(__response__, 'version_templates'))) diff --git a/sdk/python/pulumi_gcp/kms/get_kms_crypto_key_version.py b/sdk/python/pulumi_gcp/kms/get_kms_crypto_key_version.py index 4565c94606..accd5fa663 100644 --- a/sdk/python/pulumi_gcp/kms/get_kms_crypto_key_version.py +++ b/sdk/python/pulumi_gcp/kms/get_kms_crypto_key_version.py @@ -172,9 +172,6 @@ def get_kms_crypto_key_version(crypto_key: Optional[str] = None, public_keys=pulumi.get(__ret__, 'public_keys'), state=pulumi.get(__ret__, 'state'), version=pulumi.get(__ret__, 'version')) - - -@_utilities.lift_output_func(get_kms_crypto_key_version) def get_kms_crypto_key_version_output(crypto_key: Optional[pulumi.Input[str]] = None, version: Optional[pulumi.Input[Optional[int]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetKMSCryptoKeyVersionResult]: @@ -204,4 +201,17 @@ def get_kms_crypto_key_version_output(crypto_key: Optional[pulumi.Input[str]] = `kms.CryptoKey` resource/datasource. :param int version: The version number for this CryptoKeyVersion. Defaults to `1`. """ - ... + __args__ = dict() + __args__['cryptoKey'] = crypto_key + __args__['version'] = version + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:kms/getKMSCryptoKeyVersion:getKMSCryptoKeyVersion', __args__, opts=opts, typ=GetKMSCryptoKeyVersionResult) + return __ret__.apply(lambda __response__: GetKMSCryptoKeyVersionResult( + algorithm=pulumi.get(__response__, 'algorithm'), + crypto_key=pulumi.get(__response__, 'crypto_key'), + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'), + protection_level=pulumi.get(__response__, 'protection_level'), + public_keys=pulumi.get(__response__, 'public_keys'), + state=pulumi.get(__response__, 'state'), + version=pulumi.get(__response__, 'version'))) diff --git a/sdk/python/pulumi_gcp/kms/get_kms_key_ring.py b/sdk/python/pulumi_gcp/kms/get_kms_key_ring.py index c584b9de3b..a67edc7ed1 100644 --- a/sdk/python/pulumi_gcp/kms/get_kms_key_ring.py +++ b/sdk/python/pulumi_gcp/kms/get_kms_key_ring.py @@ -121,9 +121,6 @@ def get_kms_key_ring(location: Optional[str] = None, location=pulumi.get(__ret__, 'location'), name=pulumi.get(__ret__, 'name'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_kms_key_ring) def get_kms_key_ring_output(location: Optional[pulumi.Input[str]] = None, name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -157,4 +154,14 @@ def get_kms_key_ring_output(location: Optional[pulumi.Input[str]] = None, :param str project: The project in which the resource belongs. If it is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['location'] = location + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:kms/getKMSKeyRing:getKMSKeyRing', __args__, opts=opts, typ=GetKMSKeyRingResult) + return __ret__.apply(lambda __response__: GetKMSKeyRingResult( + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/kms/get_kms_secret.py b/sdk/python/pulumi_gcp/kms/get_kms_secret.py index 7de4f9b6e2..fb8ef301ca 100644 --- a/sdk/python/pulumi_gcp/kms/get_kms_secret.py +++ b/sdk/python/pulumi_gcp/kms/get_kms_secret.py @@ -169,9 +169,6 @@ def get_kms_secret(additional_authenticated_data: Optional[str] = None, crypto_key=pulumi.get(__ret__, 'crypto_key'), id=pulumi.get(__ret__, 'id'), plaintext=pulumi.get(__ret__, 'plaintext')) - - -@_utilities.lift_output_func(get_kms_secret) def get_kms_secret_output(additional_authenticated_data: Optional[pulumi.Input[Optional[str]]] = None, ciphertext: Optional[pulumi.Input[str]] = None, crypto_key: Optional[pulumi.Input[str]] = None, @@ -240,4 +237,15 @@ def get_kms_secret_output(additional_authenticated_data: Optional[pulumi.Input[O decrypt the provided ciphertext. This is represented by the format `{projectId}/{location}/{keyRingName}/{cryptoKeyName}`. """ - ... + __args__ = dict() + __args__['additionalAuthenticatedData'] = additional_authenticated_data + __args__['ciphertext'] = ciphertext + __args__['cryptoKey'] = crypto_key + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:kms/getKMSSecret:getKMSSecret', __args__, opts=opts, typ=GetKMSSecretResult) + return __ret__.apply(lambda __response__: GetKMSSecretResult( + additional_authenticated_data=pulumi.get(__response__, 'additional_authenticated_data'), + ciphertext=pulumi.get(__response__, 'ciphertext'), + crypto_key=pulumi.get(__response__, 'crypto_key'), + id=pulumi.get(__response__, 'id'), + plaintext=pulumi.get(__response__, 'plaintext'))) diff --git a/sdk/python/pulumi_gcp/kms/get_kms_secret_asymmetric.py b/sdk/python/pulumi_gcp/kms/get_kms_secret_asymmetric.py index c5ba3b1e67..802b4b34f6 100644 --- a/sdk/python/pulumi_gcp/kms/get_kms_secret_asymmetric.py +++ b/sdk/python/pulumi_gcp/kms/get_kms_secret_asymmetric.py @@ -178,9 +178,6 @@ def get_kms_secret_asymmetric(ciphertext: Optional[str] = None, crypto_key_version=pulumi.get(__ret__, 'crypto_key_version'), id=pulumi.get(__ret__, 'id'), plaintext=pulumi.get(__ret__, 'plaintext')) - - -@_utilities.lift_output_func(get_kms_secret_asymmetric) def get_kms_secret_asymmetric_output(ciphertext: Optional[pulumi.Input[str]] = None, crc32: Optional[pulumi.Input[Optional[str]]] = None, crypto_key_version: Optional[pulumi.Input[str]] = None, @@ -255,4 +252,15 @@ def get_kms_secret_asymmetric_output(ciphertext: Optional[pulumi.Input[str]] = N decrypt the provided ciphertext. This is represented by the format `projects/{project}/locations/{location}/keyRings/{keyring}/cryptoKeys/{key}/cryptoKeyVersions/{version}`. """ - ... + __args__ = dict() + __args__['ciphertext'] = ciphertext + __args__['crc32'] = crc32 + __args__['cryptoKeyVersion'] = crypto_key_version + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:kms/getKMSSecretAsymmetric:getKMSSecretAsymmetric', __args__, opts=opts, typ=GetKMSSecretAsymmetricResult) + return __ret__.apply(lambda __response__: GetKMSSecretAsymmetricResult( + ciphertext=pulumi.get(__response__, 'ciphertext'), + crc32=pulumi.get(__response__, 'crc32'), + crypto_key_version=pulumi.get(__response__, 'crypto_key_version'), + id=pulumi.get(__response__, 'id'), + plaintext=pulumi.get(__response__, 'plaintext'))) diff --git a/sdk/python/pulumi_gcp/kms/get_kms_secret_ciphertext.py b/sdk/python/pulumi_gcp/kms/get_kms_secret_ciphertext.py index 44a79db647..fa438b7752 100644 --- a/sdk/python/pulumi_gcp/kms/get_kms_secret_ciphertext.py +++ b/sdk/python/pulumi_gcp/kms/get_kms_secret_ciphertext.py @@ -159,9 +159,6 @@ def get_kms_secret_ciphertext(crypto_key: Optional[str] = None, crypto_key=pulumi.get(__ret__, 'crypto_key'), id=pulumi.get(__ret__, 'id'), plaintext=pulumi.get(__ret__, 'plaintext')) - - -@_utilities.lift_output_func(get_kms_secret_ciphertext) def get_kms_secret_ciphertext_output(crypto_key: Optional[pulumi.Input[str]] = None, plaintext: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetKMSSecretCiphertextResult]: @@ -231,4 +228,13 @@ def get_kms_secret_ciphertext_output(crypto_key: Optional[pulumi.Input[str]] = N `{projectId}/{location}/{keyRingName}/{cryptoKeyName}`. :param str plaintext: The plaintext to be encrypted """ - ... + __args__ = dict() + __args__['cryptoKey'] = crypto_key + __args__['plaintext'] = plaintext + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:kms/getKMSSecretCiphertext:getKMSSecretCiphertext', __args__, opts=opts, typ=GetKMSSecretCiphertextResult) + return __ret__.apply(lambda __response__: GetKMSSecretCiphertextResult( + ciphertext=pulumi.get(__response__, 'ciphertext'), + crypto_key=pulumi.get(__response__, 'crypto_key'), + id=pulumi.get(__response__, 'id'), + plaintext=pulumi.get(__response__, 'plaintext'))) diff --git a/sdk/python/pulumi_gcp/logging/get_folder_settings.py b/sdk/python/pulumi_gcp/logging/get_folder_settings.py index 728ef54e63..549a5dcb31 100644 --- a/sdk/python/pulumi_gcp/logging/get_folder_settings.py +++ b/sdk/python/pulumi_gcp/logging/get_folder_settings.py @@ -174,9 +174,6 @@ def get_folder_settings(folder: Optional[str] = None, logging_service_account_id=pulumi.get(__ret__, 'logging_service_account_id'), name=pulumi.get(__ret__, 'name'), storage_location=pulumi.get(__ret__, 'storage_location')) - - -@_utilities.lift_output_func(get_folder_settings) def get_folder_settings_output(folder: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetFolderSettingsResult]: """ @@ -201,4 +198,16 @@ def get_folder_settings_output(folder: Optional[pulumi.Input[str]] = None, :param str folder: The ID of the folder for which to retrieve settings. """ - ... + __args__ = dict() + __args__['folder'] = folder + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:logging/getFolderSettings:getFolderSettings', __args__, opts=opts, typ=GetFolderSettingsResult) + return __ret__.apply(lambda __response__: GetFolderSettingsResult( + disable_default_sink=pulumi.get(__response__, 'disable_default_sink'), + folder=pulumi.get(__response__, 'folder'), + id=pulumi.get(__response__, 'id'), + kms_key_name=pulumi.get(__response__, 'kms_key_name'), + kms_service_account_id=pulumi.get(__response__, 'kms_service_account_id'), + logging_service_account_id=pulumi.get(__response__, 'logging_service_account_id'), + name=pulumi.get(__response__, 'name'), + storage_location=pulumi.get(__response__, 'storage_location'))) diff --git a/sdk/python/pulumi_gcp/logging/get_log_view_iam_policy.py b/sdk/python/pulumi_gcp/logging/get_log_view_iam_policy.py index c8979d5434..ce0215fc7d 100644 --- a/sdk/python/pulumi_gcp/logging/get_log_view_iam_policy.py +++ b/sdk/python/pulumi_gcp/logging/get_log_view_iam_policy.py @@ -154,9 +154,6 @@ def get_log_view_iam_policy(bucket: Optional[str] = None, name=pulumi.get(__ret__, 'name'), parent=pulumi.get(__ret__, 'parent'), policy_data=pulumi.get(__ret__, 'policy_data')) - - -@_utilities.lift_output_func(get_log_view_iam_policy) def get_log_view_iam_policy_output(bucket: Optional[pulumi.Input[str]] = None, location: Optional[pulumi.Input[Optional[str]]] = None, name: Optional[pulumi.Input[str]] = None, @@ -185,4 +182,18 @@ def get_log_view_iam_policy_output(bucket: Optional[pulumi.Input[str]] = None, :param str name: Used to find the parent resource to bind the IAM policy to :param str parent: The parent of the resource. Used to find the parent resource to bind the IAM policy to """ - ... + __args__ = dict() + __args__['bucket'] = bucket + __args__['location'] = location + __args__['name'] = name + __args__['parent'] = parent + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:logging/getLogViewIamPolicy:getLogViewIamPolicy', __args__, opts=opts, typ=GetLogViewIamPolicyResult) + return __ret__.apply(lambda __response__: GetLogViewIamPolicyResult( + bucket=pulumi.get(__response__, 'bucket'), + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + name=pulumi.get(__response__, 'name'), + parent=pulumi.get(__response__, 'parent'), + policy_data=pulumi.get(__response__, 'policy_data'))) diff --git a/sdk/python/pulumi_gcp/logging/get_organization_settings.py b/sdk/python/pulumi_gcp/logging/get_organization_settings.py index 4b184f1747..eff16ec5f5 100644 --- a/sdk/python/pulumi_gcp/logging/get_organization_settings.py +++ b/sdk/python/pulumi_gcp/logging/get_organization_settings.py @@ -174,9 +174,6 @@ def get_organization_settings(organization: Optional[str] = None, name=pulumi.get(__ret__, 'name'), organization=pulumi.get(__ret__, 'organization'), storage_location=pulumi.get(__ret__, 'storage_location')) - - -@_utilities.lift_output_func(get_organization_settings) def get_organization_settings_output(organization: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetOrganizationSettingsResult]: """ @@ -201,4 +198,16 @@ def get_organization_settings_output(organization: Optional[pulumi.Input[str]] = :param str organization: The ID of the organization for which to retrieve settings. """ - ... + __args__ = dict() + __args__['organization'] = organization + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:logging/getOrganizationSettings:getOrganizationSettings', __args__, opts=opts, typ=GetOrganizationSettingsResult) + return __ret__.apply(lambda __response__: GetOrganizationSettingsResult( + disable_default_sink=pulumi.get(__response__, 'disable_default_sink'), + id=pulumi.get(__response__, 'id'), + kms_key_name=pulumi.get(__response__, 'kms_key_name'), + kms_service_account_id=pulumi.get(__response__, 'kms_service_account_id'), + logging_service_account_id=pulumi.get(__response__, 'logging_service_account_id'), + name=pulumi.get(__response__, 'name'), + organization=pulumi.get(__response__, 'organization'), + storage_location=pulumi.get(__response__, 'storage_location'))) diff --git a/sdk/python/pulumi_gcp/logging/get_project_cmek_settings.py b/sdk/python/pulumi_gcp/logging/get_project_cmek_settings.py index 61bf8abab2..8b5989e9d7 100644 --- a/sdk/python/pulumi_gcp/logging/get_project_cmek_settings.py +++ b/sdk/python/pulumi_gcp/logging/get_project_cmek_settings.py @@ -162,9 +162,6 @@ def get_project_cmek_settings(kms_key_name: Optional[str] = None, name=pulumi.get(__ret__, 'name'), project=pulumi.get(__ret__, 'project'), service_account_id=pulumi.get(__ret__, 'service_account_id')) - - -@_utilities.lift_output_func(get_project_cmek_settings) def get_project_cmek_settings_output(kms_key_name: Optional[pulumi.Input[Optional[str]]] = None, project: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetProjectCmekSettingsResult]: @@ -196,4 +193,15 @@ def get_project_cmek_settings_output(kms_key_name: Optional[pulumi.Input[Optiona See [Enabling CMEK for Logging Buckets](https://cloud.google.com/logging/docs/routing/managed-encryption-storage) for more information. :param str project: The ID of the project. """ - ... + __args__ = dict() + __args__['kmsKeyName'] = kms_key_name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:logging/getProjectCmekSettings:getProjectCmekSettings', __args__, opts=opts, typ=GetProjectCmekSettingsResult) + return __ret__.apply(lambda __response__: GetProjectCmekSettingsResult( + id=pulumi.get(__response__, 'id'), + kms_key_name=pulumi.get(__response__, 'kms_key_name'), + kms_key_version_name=pulumi.get(__response__, 'kms_key_version_name'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + service_account_id=pulumi.get(__response__, 'service_account_id'))) diff --git a/sdk/python/pulumi_gcp/logging/get_project_settings.py b/sdk/python/pulumi_gcp/logging/get_project_settings.py index e462017b13..93b1cdf192 100644 --- a/sdk/python/pulumi_gcp/logging/get_project_settings.py +++ b/sdk/python/pulumi_gcp/logging/get_project_settings.py @@ -174,9 +174,6 @@ def get_project_settings(project: Optional[str] = None, name=pulumi.get(__ret__, 'name'), project=pulumi.get(__ret__, 'project'), storage_location=pulumi.get(__ret__, 'storage_location')) - - -@_utilities.lift_output_func(get_project_settings) def get_project_settings_output(project: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetProjectSettingsResult]: """ @@ -201,4 +198,16 @@ def get_project_settings_output(project: Optional[pulumi.Input[str]] = None, :param str project: The ID of the project for which to retrieve settings. """ - ... + __args__ = dict() + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:logging/getProjectSettings:getProjectSettings', __args__, opts=opts, typ=GetProjectSettingsResult) + return __ret__.apply(lambda __response__: GetProjectSettingsResult( + disable_default_sink=pulumi.get(__response__, 'disable_default_sink'), + id=pulumi.get(__response__, 'id'), + kms_key_name=pulumi.get(__response__, 'kms_key_name'), + kms_service_account_id=pulumi.get(__response__, 'kms_service_account_id'), + logging_service_account_id=pulumi.get(__response__, 'logging_service_account_id'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + storage_location=pulumi.get(__response__, 'storage_location'))) diff --git a/sdk/python/pulumi_gcp/logging/get_sink.py b/sdk/python/pulumi_gcp/logging/get_sink.py index 9ca437cc62..543f0c7f71 100644 --- a/sdk/python/pulumi_gcp/logging/get_sink.py +++ b/sdk/python/pulumi_gcp/logging/get_sink.py @@ -186,9 +186,6 @@ def get_sink(id: Optional[str] = None, id=pulumi.get(__ret__, 'id'), name=pulumi.get(__ret__, 'name'), writer_identity=pulumi.get(__ret__, 'writer_identity')) - - -@_utilities.lift_output_func(get_sink) def get_sink_output(id: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetSinkResult]: """ @@ -217,4 +214,17 @@ def get_sink_output(id: Optional[pulumi.Input[str]] = None, - `billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_NAME]` - `folders/[FOLDER_ID]/sinks/[SINK_NAME]` """ - ... + __args__ = dict() + __args__['id'] = id + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:logging/getSink:getSink', __args__, opts=opts, typ=GetSinkResult) + return __ret__.apply(lambda __response__: GetSinkResult( + bigquery_options=pulumi.get(__response__, 'bigquery_options'), + description=pulumi.get(__response__, 'description'), + destination=pulumi.get(__response__, 'destination'), + disabled=pulumi.get(__response__, 'disabled'), + exclusions=pulumi.get(__response__, 'exclusions'), + filter=pulumi.get(__response__, 'filter'), + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'), + writer_identity=pulumi.get(__response__, 'writer_identity'))) diff --git a/sdk/python/pulumi_gcp/monitoring/get_app_engine_service.py b/sdk/python/pulumi_gcp/monitoring/get_app_engine_service.py index 3ba2ce0503..3e35b337fc 100644 --- a/sdk/python/pulumi_gcp/monitoring/get_app_engine_service.py +++ b/sdk/python/pulumi_gcp/monitoring/get_app_engine_service.py @@ -205,9 +205,6 @@ def get_app_engine_service(module_id: Optional[str] = None, service_id=pulumi.get(__ret__, 'service_id'), telemetries=pulumi.get(__ret__, 'telemetries'), user_labels=pulumi.get(__ret__, 'user_labels')) - - -@_utilities.lift_output_func(get_app_engine_service) def get_app_engine_service_output(module_id: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetAppEngineServiceResult]: @@ -275,4 +272,17 @@ def get_app_engine_service_output(module_id: Optional[pulumi.Input[str]] = None, :param str project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['moduleId'] = module_id + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:monitoring/getAppEngineService:getAppEngineService', __args__, opts=opts, typ=GetAppEngineServiceResult) + return __ret__.apply(lambda __response__: GetAppEngineServiceResult( + display_name=pulumi.get(__response__, 'display_name'), + id=pulumi.get(__response__, 'id'), + module_id=pulumi.get(__response__, 'module_id'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + service_id=pulumi.get(__response__, 'service_id'), + telemetries=pulumi.get(__response__, 'telemetries'), + user_labels=pulumi.get(__response__, 'user_labels'))) diff --git a/sdk/python/pulumi_gcp/monitoring/get_cluster_istio_service.py b/sdk/python/pulumi_gcp/monitoring/get_cluster_istio_service.py index 254a6b1e0c..56f1f2159b 100644 --- a/sdk/python/pulumi_gcp/monitoring/get_cluster_istio_service.py +++ b/sdk/python/pulumi_gcp/monitoring/get_cluster_istio_service.py @@ -223,9 +223,6 @@ def get_cluster_istio_service(cluster_name: Optional[str] = None, service_namespace=pulumi.get(__ret__, 'service_namespace'), telemetries=pulumi.get(__ret__, 'telemetries'), user_labels=pulumi.get(__ret__, 'user_labels')) - - -@_utilities.lift_output_func(get_cluster_istio_service) def get_cluster_istio_service_output(cluster_name: Optional[pulumi.Input[str]] = None, location: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -278,4 +275,23 @@ def get_cluster_istio_service_output(cluster_name: Optional[pulumi.Input[str]] = :param str service_namespace: The namespace of the Istio service underlying this service. Corresponds to the destination_service_namespace metric label in Istio metrics. """ - ... + __args__ = dict() + __args__['clusterName'] = cluster_name + __args__['location'] = location + __args__['project'] = project + __args__['serviceName'] = service_name + __args__['serviceNamespace'] = service_namespace + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:monitoring/getClusterIstioService:getClusterIstioService', __args__, opts=opts, typ=GetClusterIstioServiceResult) + return __ret__.apply(lambda __response__: GetClusterIstioServiceResult( + cluster_name=pulumi.get(__response__, 'cluster_name'), + display_name=pulumi.get(__response__, 'display_name'), + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + service_id=pulumi.get(__response__, 'service_id'), + service_name=pulumi.get(__response__, 'service_name'), + service_namespace=pulumi.get(__response__, 'service_namespace'), + telemetries=pulumi.get(__response__, 'telemetries'), + user_labels=pulumi.get(__response__, 'user_labels'))) diff --git a/sdk/python/pulumi_gcp/monitoring/get_istio_canonical_service.py b/sdk/python/pulumi_gcp/monitoring/get_istio_canonical_service.py index bd1df1ce00..9acaf4d539 100644 --- a/sdk/python/pulumi_gcp/monitoring/get_istio_canonical_service.py +++ b/sdk/python/pulumi_gcp/monitoring/get_istio_canonical_service.py @@ -208,9 +208,6 @@ def get_istio_canonical_service(canonical_service: Optional[str] = None, service_id=pulumi.get(__ret__, 'service_id'), telemetries=pulumi.get(__ret__, 'telemetries'), user_labels=pulumi.get(__ret__, 'user_labels')) - - -@_utilities.lift_output_func(get_istio_canonical_service) def get_istio_canonical_service_output(canonical_service: Optional[pulumi.Input[str]] = None, canonical_service_namespace: Optional[pulumi.Input[str]] = None, mesh_uid: Optional[pulumi.Input[str]] = None, @@ -259,4 +256,21 @@ def get_istio_canonical_service_output(canonical_service: Optional[pulumi.Input[ :param str project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['canonicalService'] = canonical_service + __args__['canonicalServiceNamespace'] = canonical_service_namespace + __args__['meshUid'] = mesh_uid + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:monitoring/getIstioCanonicalService:getIstioCanonicalService', __args__, opts=opts, typ=GetIstioCanonicalServiceResult) + return __ret__.apply(lambda __response__: GetIstioCanonicalServiceResult( + canonical_service=pulumi.get(__response__, 'canonical_service'), + canonical_service_namespace=pulumi.get(__response__, 'canonical_service_namespace'), + display_name=pulumi.get(__response__, 'display_name'), + id=pulumi.get(__response__, 'id'), + mesh_uid=pulumi.get(__response__, 'mesh_uid'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + service_id=pulumi.get(__response__, 'service_id'), + telemetries=pulumi.get(__response__, 'telemetries'), + user_labels=pulumi.get(__response__, 'user_labels'))) diff --git a/sdk/python/pulumi_gcp/monitoring/get_mesh_istio_service.py b/sdk/python/pulumi_gcp/monitoring/get_mesh_istio_service.py index 1e21b52f5c..98d08beb15 100644 --- a/sdk/python/pulumi_gcp/monitoring/get_mesh_istio_service.py +++ b/sdk/python/pulumi_gcp/monitoring/get_mesh_istio_service.py @@ -208,9 +208,6 @@ def get_mesh_istio_service(mesh_uid: Optional[str] = None, service_namespace=pulumi.get(__ret__, 'service_namespace'), telemetries=pulumi.get(__ret__, 'telemetries'), user_labels=pulumi.get(__ret__, 'user_labels')) - - -@_utilities.lift_output_func(get_mesh_istio_service) def get_mesh_istio_service_output(mesh_uid: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, service_name: Optional[pulumi.Input[str]] = None, @@ -259,4 +256,21 @@ def get_mesh_istio_service_output(mesh_uid: Optional[pulumi.Input[str]] = None, :param str service_namespace: The namespace of the Istio service underlying this service. Corresponds to the destination_service_namespace metric label in Istio metrics. """ - ... + __args__ = dict() + __args__['meshUid'] = mesh_uid + __args__['project'] = project + __args__['serviceName'] = service_name + __args__['serviceNamespace'] = service_namespace + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:monitoring/getMeshIstioService:getMeshIstioService', __args__, opts=opts, typ=GetMeshIstioServiceResult) + return __ret__.apply(lambda __response__: GetMeshIstioServiceResult( + display_name=pulumi.get(__response__, 'display_name'), + id=pulumi.get(__response__, 'id'), + mesh_uid=pulumi.get(__response__, 'mesh_uid'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + service_id=pulumi.get(__response__, 'service_id'), + service_name=pulumi.get(__response__, 'service_name'), + service_namespace=pulumi.get(__response__, 'service_namespace'), + telemetries=pulumi.get(__response__, 'telemetries'), + user_labels=pulumi.get(__response__, 'user_labels'))) diff --git a/sdk/python/pulumi_gcp/monitoring/get_notification_channel.py b/sdk/python/pulumi_gcp/monitoring/get_notification_channel.py index ca75bf44d4..2b7b9273e4 100644 --- a/sdk/python/pulumi_gcp/monitoring/get_notification_channel.py +++ b/sdk/python/pulumi_gcp/monitoring/get_notification_channel.py @@ -249,9 +249,6 @@ def get_notification_channel(display_name: Optional[str] = None, type=pulumi.get(__ret__, 'type'), user_labels=pulumi.get(__ret__, 'user_labels'), verification_status=pulumi.get(__ret__, 'verification_status')) - - -@_utilities.lift_output_func(get_notification_channel) def get_notification_channel_output(display_name: Optional[pulumi.Input[Optional[str]]] = None, labels: Optional[pulumi.Input[Optional[Mapping[str, str]]]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -311,4 +308,24 @@ def get_notification_channel_output(display_name: Optional[pulumi.Input[Optional Other optional fields include: :param Mapping[str, str] user_labels: User-provided key-value labels to filter by. """ - ... + __args__ = dict() + __args__['displayName'] = display_name + __args__['labels'] = labels + __args__['project'] = project + __args__['type'] = type + __args__['userLabels'] = user_labels + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:monitoring/getNotificationChannel:getNotificationChannel', __args__, opts=opts, typ=GetNotificationChannelResult) + return __ret__.apply(lambda __response__: GetNotificationChannelResult( + description=pulumi.get(__response__, 'description'), + display_name=pulumi.get(__response__, 'display_name'), + enabled=pulumi.get(__response__, 'enabled'), + force_delete=pulumi.get(__response__, 'force_delete'), + id=pulumi.get(__response__, 'id'), + labels=pulumi.get(__response__, 'labels'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + sensitive_labels=pulumi.get(__response__, 'sensitive_labels'), + type=pulumi.get(__response__, 'type'), + user_labels=pulumi.get(__response__, 'user_labels'), + verification_status=pulumi.get(__response__, 'verification_status'))) diff --git a/sdk/python/pulumi_gcp/monitoring/get_secret_version.py b/sdk/python/pulumi_gcp/monitoring/get_secret_version.py index 3f875df3f6..73c6c91aad 100644 --- a/sdk/python/pulumi_gcp/monitoring/get_secret_version.py +++ b/sdk/python/pulumi_gcp/monitoring/get_secret_version.py @@ -180,9 +180,6 @@ def get_secret_version(project: Optional[str] = None, secret=pulumi.get(__ret__, 'secret'), secret_data=pulumi.get(__ret__, 'secret_data'), version=pulumi.get(__ret__, 'version')) - - -@_utilities.lift_output_func(get_secret_version) def get_secret_version_output(project: Optional[pulumi.Input[Optional[str]]] = None, secret: Optional[pulumi.Input[str]] = None, version: Optional[pulumi.Input[Optional[str]]] = None, @@ -207,4 +204,19 @@ def get_secret_version_output(project: Optional[pulumi.Input[Optional[str]]] = N is not provided, the latest version is retrieved. """ pulumi.log.warn("""get_secret_version is deprecated: gcp.monitoring.getSecretVersion has been deprecated in favor of gcp.secretmanager.getSecretVersion""") - ... + __args__ = dict() + __args__['project'] = project + __args__['secret'] = secret + __args__['version'] = version + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:monitoring/getSecretVersion:getSecretVersion', __args__, opts=opts, typ=GetSecretVersionResult) + return __ret__.apply(lambda __response__: GetSecretVersionResult( + create_time=pulumi.get(__response__, 'create_time'), + destroy_time=pulumi.get(__response__, 'destroy_time'), + enabled=pulumi.get(__response__, 'enabled'), + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + secret=pulumi.get(__response__, 'secret'), + secret_data=pulumi.get(__response__, 'secret_data'), + version=pulumi.get(__response__, 'version'))) diff --git a/sdk/python/pulumi_gcp/monitoring/get_uptime_check_i_ps.py b/sdk/python/pulumi_gcp/monitoring/get_uptime_check_i_ps.py index 3d7392cd26..aec8727546 100644 --- a/sdk/python/pulumi_gcp/monitoring/get_uptime_check_i_ps.py +++ b/sdk/python/pulumi_gcp/monitoring/get_uptime_check_i_ps.py @@ -84,9 +84,6 @@ def get_uptime_check_i_ps(opts: Optional[pulumi.InvokeOptions] = None) -> Awaita return AwaitableGetUptimeCheckIPsResult( id=pulumi.get(__ret__, 'id'), uptime_check_ips=pulumi.get(__ret__, 'uptime_check_ips')) - - -@_utilities.lift_output_func(get_uptime_check_i_ps) def get_uptime_check_i_ps_output(opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetUptimeCheckIPsResult]: """ Returns the list of IP addresses that checkers run from. For more information see @@ -102,4 +99,9 @@ def get_uptime_check_i_ps_output(opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.export("ipList", ips.uptime_check_ips) ``` """ - ... + __args__ = dict() + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:monitoring/getUptimeCheckIPs:getUptimeCheckIPs', __args__, opts=opts, typ=GetUptimeCheckIPsResult) + return __ret__.apply(lambda __response__: GetUptimeCheckIPsResult( + id=pulumi.get(__response__, 'id'), + uptime_check_ips=pulumi.get(__response__, 'uptime_check_ips'))) diff --git a/sdk/python/pulumi_gcp/networksecurity/get_address_group_iam_policy.py b/sdk/python/pulumi_gcp/networksecurity/get_address_group_iam_policy.py index c2093b59ba..274aea2527 100644 --- a/sdk/python/pulumi_gcp/networksecurity/get_address_group_iam_policy.py +++ b/sdk/python/pulumi_gcp/networksecurity/get_address_group_iam_policy.py @@ -131,9 +131,6 @@ def get_address_group_iam_policy(location: Optional[str] = None, name=pulumi.get(__ret__, 'name'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_address_group_iam_policy) def get_address_group_iam_policy_output(location: Optional[pulumi.Input[Optional[str]]] = None, name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -150,4 +147,16 @@ def get_address_group_iam_policy_output(location: Optional[pulumi.Input[Optional :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['location'] = location + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:networksecurity/getAddressGroupIamPolicy:getAddressGroupIamPolicy', __args__, opts=opts, typ=GetAddressGroupIamPolicyResult) + return __ret__.apply(lambda __response__: GetAddressGroupIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + name=pulumi.get(__response__, 'name'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/networkservices/edge_cache_service.py b/sdk/python/pulumi_gcp/networkservices/edge_cache_service.py index e521864955..4fd75043b0 100644 --- a/sdk/python/pulumi_gcp/networkservices/edge_cache_service.py +++ b/sdk/python/pulumi_gcp/networkservices/edge_cache_service.py @@ -755,7 +755,7 @@ def __init__(__self__, "negative_caching": True, "signed_request_mode": "DISABLED", "negative_caching_policy": { - "_500": "3000s", + "500": "3000s", }, }, "url_rewrite": { @@ -1188,7 +1188,7 @@ def __init__(__self__, "negative_caching": True, "signed_request_mode": "DISABLED", "negative_caching_policy": { - "_500": "3000s", + "500": "3000s", }, }, "url_rewrite": { diff --git a/sdk/python/pulumi_gcp/networkservices/http_route.py b/sdk/python/pulumi_gcp/networkservices/http_route.py index e1a2b4bdf1..ef4f62480d 100644 --- a/sdk/python/pulumi_gcp/networkservices/http_route.py +++ b/sdk/python/pulumi_gcp/networkservices/http_route.py @@ -594,7 +594,7 @@ def __init__(__self__, "type": "json", }, "add": { - "minor_version": "1", + "minor-version": "1", }, "removes": ["arg"], }, @@ -604,7 +604,7 @@ def __init__(__self__, "type": "json", }, "add": { - "minor_version": "1", + "minor-version": "1", }, "removes": ["removearg"], }, @@ -879,7 +879,7 @@ def __init__(__self__, "type": "json", }, "add": { - "minor_version": "1", + "minor-version": "1", }, "removes": ["arg"], }, @@ -889,7 +889,7 @@ def __init__(__self__, "type": "json", }, "add": { - "minor_version": "1", + "minor-version": "1", }, "removes": ["removearg"], }, diff --git a/sdk/python/pulumi_gcp/notebooks/get_instance_iam_policy.py b/sdk/python/pulumi_gcp/notebooks/get_instance_iam_policy.py index c28abbc703..44729046ae 100644 --- a/sdk/python/pulumi_gcp/notebooks/get_instance_iam_policy.py +++ b/sdk/python/pulumi_gcp/notebooks/get_instance_iam_policy.py @@ -141,9 +141,6 @@ def get_instance_iam_policy(instance_name: Optional[str] = None, location=pulumi.get(__ret__, 'location'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_instance_iam_policy) def get_instance_iam_policy_output(instance_name: Optional[pulumi.Input[str]] = None, location: Optional[pulumi.Input[Optional[str]]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -170,4 +167,16 @@ def get_instance_iam_policy_output(instance_name: Optional[pulumi.Input[str]] = :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['instanceName'] = instance_name + __args__['location'] = location + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:notebooks/getInstanceIamPolicy:getInstanceIamPolicy', __args__, opts=opts, typ=GetInstanceIamPolicyResult) + return __ret__.apply(lambda __response__: GetInstanceIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + instance_name=pulumi.get(__response__, 'instance_name'), + location=pulumi.get(__response__, 'location'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/notebooks/get_runtime_iam_policy.py b/sdk/python/pulumi_gcp/notebooks/get_runtime_iam_policy.py index 1aaf77c2ff..9e27a7dfa3 100644 --- a/sdk/python/pulumi_gcp/notebooks/get_runtime_iam_policy.py +++ b/sdk/python/pulumi_gcp/notebooks/get_runtime_iam_policy.py @@ -141,9 +141,6 @@ def get_runtime_iam_policy(location: Optional[str] = None, policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project'), runtime_name=pulumi.get(__ret__, 'runtime_name')) - - -@_utilities.lift_output_func(get_runtime_iam_policy) def get_runtime_iam_policy_output(location: Optional[pulumi.Input[Optional[str]]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, runtime_name: Optional[pulumi.Input[str]] = None, @@ -170,4 +167,16 @@ def get_runtime_iam_policy_output(location: Optional[pulumi.Input[Optional[str]] If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. :param str runtime_name: Used to find the parent resource to bind the IAM policy to """ - ... + __args__ = dict() + __args__['location'] = location + __args__['project'] = project + __args__['runtimeName'] = runtime_name + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:notebooks/getRuntimeIamPolicy:getRuntimeIamPolicy', __args__, opts=opts, typ=GetRuntimeIamPolicyResult) + return __ret__.apply(lambda __response__: GetRuntimeIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'), + runtime_name=pulumi.get(__response__, 'runtime_name'))) diff --git a/sdk/python/pulumi_gcp/organizations/get_active_folder.py b/sdk/python/pulumi_gcp/organizations/get_active_folder.py index 703891909e..0a21ecb83c 100644 --- a/sdk/python/pulumi_gcp/organizations/get_active_folder.py +++ b/sdk/python/pulumi_gcp/organizations/get_active_folder.py @@ -123,9 +123,6 @@ def get_active_folder(api_method: Optional[str] = None, id=pulumi.get(__ret__, 'id'), name=pulumi.get(__ret__, 'name'), parent=pulumi.get(__ret__, 'parent')) - - -@_utilities.lift_output_func(get_active_folder) def get_active_folder_output(api_method: Optional[pulumi.Input[Optional[str]]] = None, display_name: Optional[pulumi.Input[str]] = None, parent: Optional[pulumi.Input[str]] = None, @@ -148,4 +145,15 @@ def get_active_folder_output(api_method: Optional[pulumi.Input[Optional[str]]] = :param str display_name: The folder's display name. :param str parent: The resource name of the parent Folder or Organization. """ - ... + __args__ = dict() + __args__['apiMethod'] = api_method + __args__['displayName'] = display_name + __args__['parent'] = parent + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:organizations/getActiveFolder:getActiveFolder', __args__, opts=opts, typ=GetActiveFolderResult) + return __ret__.apply(lambda __response__: GetActiveFolderResult( + api_method=pulumi.get(__response__, 'api_method'), + display_name=pulumi.get(__response__, 'display_name'), + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'), + parent=pulumi.get(__response__, 'parent'))) diff --git a/sdk/python/pulumi_gcp/organizations/get_billing_account.py b/sdk/python/pulumi_gcp/organizations/get_billing_account.py index 9fbeeb4a8e..9a2a3bbb62 100644 --- a/sdk/python/pulumi_gcp/organizations/get_billing_account.py +++ b/sdk/python/pulumi_gcp/organizations/get_billing_account.py @@ -156,9 +156,6 @@ def get_billing_account(billing_account: Optional[str] = None, name=pulumi.get(__ret__, 'name'), open=pulumi.get(__ret__, 'open'), project_ids=pulumi.get(__ret__, 'project_ids')) - - -@_utilities.lift_output_func(get_billing_account) def get_billing_account_output(billing_account: Optional[pulumi.Input[Optional[str]]] = None, display_name: Optional[pulumi.Input[Optional[str]]] = None, lookup_projects: Optional[pulumi.Input[Optional[bool]]] = None, @@ -189,4 +186,18 @@ def get_billing_account_output(billing_account: Optional[pulumi.Input[Optional[s > **NOTE:** One of `billing_account` or `display_name` must be specified. :param bool open: `true` if the billing account is open, `false` if the billing account is closed. """ - ... + __args__ = dict() + __args__['billingAccount'] = billing_account + __args__['displayName'] = display_name + __args__['lookupProjects'] = lookup_projects + __args__['open'] = open + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:organizations/getBillingAccount:getBillingAccount', __args__, opts=opts, typ=GetBillingAccountResult) + return __ret__.apply(lambda __response__: GetBillingAccountResult( + billing_account=pulumi.get(__response__, 'billing_account'), + display_name=pulumi.get(__response__, 'display_name'), + id=pulumi.get(__response__, 'id'), + lookup_projects=pulumi.get(__response__, 'lookup_projects'), + name=pulumi.get(__response__, 'name'), + open=pulumi.get(__response__, 'open'), + project_ids=pulumi.get(__response__, 'project_ids'))) diff --git a/sdk/python/pulumi_gcp/organizations/get_client_config.py b/sdk/python/pulumi_gcp/organizations/get_client_config.py index 9e53e92e25..f4056f60b0 100644 --- a/sdk/python/pulumi_gcp/organizations/get_client_config.py +++ b/sdk/python/pulumi_gcp/organizations/get_client_config.py @@ -129,9 +129,6 @@ def get_client_config(opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableG project=pulumi.get(__ret__, 'project'), region=pulumi.get(__ret__, 'region'), zone=pulumi.get(__ret__, 'zone')) - - -@_utilities.lift_output_func(get_client_config) def get_client_config_output(opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetClientConfigResult]: """ ## Example Usage @@ -144,4 +141,13 @@ def get_client_config_output(opts: Optional[pulumi.InvokeOptions] = None) -> pul pulumi.export("project", current.project) ``` """ - ... + __args__ = dict() + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:organizations/getClientConfig:getClientConfig', __args__, opts=opts, typ=GetClientConfigResult) + return __ret__.apply(lambda __response__: GetClientConfigResult( + access_token=pulumi.get(__response__, 'access_token'), + default_labels=pulumi.get(__response__, 'default_labels'), + id=pulumi.get(__response__, 'id'), + project=pulumi.get(__response__, 'project'), + region=pulumi.get(__response__, 'region'), + zone=pulumi.get(__response__, 'zone'))) diff --git a/sdk/python/pulumi_gcp/organizations/get_client_open_id_user_info.py b/sdk/python/pulumi_gcp/organizations/get_client_open_id_user_info.py index 6f679313f2..082d387eed 100644 --- a/sdk/python/pulumi_gcp/organizations/get_client_open_id_user_info.py +++ b/sdk/python/pulumi_gcp/organizations/get_client_open_id_user_info.py @@ -91,9 +91,6 @@ def get_client_open_id_user_info(opts: Optional[pulumi.InvokeOptions] = None) -> return AwaitableGetClientOpenIdUserInfoResult( email=pulumi.get(__ret__, 'email'), id=pulumi.get(__ret__, 'id')) - - -@_utilities.lift_output_func(get_client_open_id_user_info) def get_client_open_id_user_info_output(opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetClientOpenIdUserInfoResult]: """ Get OpenID userinfo about the credentials used with the Google provider, @@ -120,4 +117,9 @@ def get_client_open_id_user_info_output(opts: Optional[pulumi.InvokeOptions] = N pulumi.export("my-email", me.email) ``` """ - ... + __args__ = dict() + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:organizations/getClientOpenIdUserInfo:getClientOpenIdUserInfo', __args__, opts=opts, typ=GetClientOpenIdUserInfoResult) + return __ret__.apply(lambda __response__: GetClientOpenIdUserInfoResult( + email=pulumi.get(__response__, 'email'), + id=pulumi.get(__response__, 'id'))) diff --git a/sdk/python/pulumi_gcp/organizations/get_folder.py b/sdk/python/pulumi_gcp/organizations/get_folder.py index c3aea49968..80d0ca658a 100644 --- a/sdk/python/pulumi_gcp/organizations/get_folder.py +++ b/sdk/python/pulumi_gcp/organizations/get_folder.py @@ -196,9 +196,6 @@ def get_folder(folder: Optional[str] = None, name=pulumi.get(__ret__, 'name'), organization=pulumi.get(__ret__, 'organization'), parent=pulumi.get(__ret__, 'parent')) - - -@_utilities.lift_output_func(get_folder) def get_folder_output(folder: Optional[pulumi.Input[str]] = None, lookup_organization: Optional[pulumi.Input[Optional[bool]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetFolderResult]: @@ -220,4 +217,20 @@ def get_folder_output(folder: Optional[pulumi.Input[str]] = None, :param str folder: The name of the Folder in the form `{folder_id}` or `folders/{folder_id}`. :param bool lookup_organization: `true` to find the organization that the folder belongs, `false` to avoid the lookup. It searches up the tree. (defaults to `false`) """ - ... + __args__ = dict() + __args__['folder'] = folder + __args__['lookupOrganization'] = lookup_organization + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:organizations/getFolder:getFolder', __args__, opts=opts, typ=GetFolderResult) + return __ret__.apply(lambda __response__: GetFolderResult( + create_time=pulumi.get(__response__, 'create_time'), + deletion_protection=pulumi.get(__response__, 'deletion_protection'), + display_name=pulumi.get(__response__, 'display_name'), + folder=pulumi.get(__response__, 'folder'), + folder_id=pulumi.get(__response__, 'folder_id'), + id=pulumi.get(__response__, 'id'), + lifecycle_state=pulumi.get(__response__, 'lifecycle_state'), + lookup_organization=pulumi.get(__response__, 'lookup_organization'), + name=pulumi.get(__response__, 'name'), + organization=pulumi.get(__response__, 'organization'), + parent=pulumi.get(__response__, 'parent'))) diff --git a/sdk/python/pulumi_gcp/organizations/get_folders.py b/sdk/python/pulumi_gcp/organizations/get_folders.py index e1d282f702..7c52bd2c55 100644 --- a/sdk/python/pulumi_gcp/organizations/get_folders.py +++ b/sdk/python/pulumi_gcp/organizations/get_folders.py @@ -102,9 +102,6 @@ def get_folders(parent_id: Optional[str] = None, folders=pulumi.get(__ret__, 'folders'), id=pulumi.get(__ret__, 'id'), parent_id=pulumi.get(__ret__, 'parent_id')) - - -@_utilities.lift_output_func(get_folders) def get_folders_output(parent_id: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetFoldersResult]: """ @@ -127,4 +124,11 @@ def get_folders_output(parent_id: Optional[pulumi.Input[str]] = None, :param str parent_id: A string parent as defined in the [REST API](https://cloud.google.com/resource-manager/reference/rest/v3/folders/list#query-parameters). """ - ... + __args__ = dict() + __args__['parentId'] = parent_id + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:organizations/getFolders:getFolders', __args__, opts=opts, typ=GetFoldersResult) + return __ret__.apply(lambda __response__: GetFoldersResult( + folders=pulumi.get(__response__, 'folders'), + id=pulumi.get(__response__, 'id'), + parent_id=pulumi.get(__response__, 'parent_id'))) diff --git a/sdk/python/pulumi_gcp/organizations/get_iam_policy.py b/sdk/python/pulumi_gcp/organizations/get_iam_policy.py index 1b18338073..80f64d04a3 100644 --- a/sdk/python/pulumi_gcp/organizations/get_iam_policy.py +++ b/sdk/python/pulumi_gcp/organizations/get_iam_policy.py @@ -111,9 +111,6 @@ def get_iam_policy(audit_configs: Optional[Sequence[Union['GetIAMPolicyAuditConf bindings=pulumi.get(__ret__, 'bindings'), id=pulumi.get(__ret__, 'id'), policy_data=pulumi.get(__ret__, 'policy_data')) - - -@_utilities.lift_output_func(get_iam_policy) def get_iam_policy_output(audit_configs: Optional[pulumi.Input[Optional[Sequence[Union['GetIAMPolicyAuditConfigArgs', 'GetIAMPolicyAuditConfigArgsDict']]]]] = None, bindings: Optional[pulumi.Input[Optional[Sequence[Union['GetIAMPolicyBindingArgs', 'GetIAMPolicyBindingArgsDict']]]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetIAMPolicyResult]: @@ -132,4 +129,13 @@ def get_iam_policy_output(audit_configs: Optional[pulumi.Input[Optional[Sequence Each document configuration must have one or more `binding` blocks, which each accept the following arguments: """ - ... + __args__ = dict() + __args__['auditConfigs'] = audit_configs + __args__['bindings'] = bindings + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:organizations/getIAMPolicy:getIAMPolicy', __args__, opts=opts, typ=GetIAMPolicyResult) + return __ret__.apply(lambda __response__: GetIAMPolicyResult( + audit_configs=pulumi.get(__response__, 'audit_configs'), + bindings=pulumi.get(__response__, 'bindings'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'))) diff --git a/sdk/python/pulumi_gcp/organizations/get_organization.py b/sdk/python/pulumi_gcp/organizations/get_organization.py index ffa97772b5..ba08f24c44 100644 --- a/sdk/python/pulumi_gcp/organizations/get_organization.py +++ b/sdk/python/pulumi_gcp/organizations/get_organization.py @@ -164,9 +164,6 @@ def get_organization(domain: Optional[str] = None, name=pulumi.get(__ret__, 'name'), org_id=pulumi.get(__ret__, 'org_id'), organization=pulumi.get(__ret__, 'organization')) - - -@_utilities.lift_output_func(get_organization) def get_organization_output(domain: Optional[pulumi.Input[Optional[str]]] = None, organization: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetOrganizationResult]: @@ -189,4 +186,17 @@ def get_organization_output(domain: Optional[pulumi.Input[Optional[str]]] = None > **NOTE:** One of `organization` or `domain` must be specified. :param str organization: The Organization's numeric ID, including an optional `organizations/` prefix. """ - ... + __args__ = dict() + __args__['domain'] = domain + __args__['organization'] = organization + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:organizations/getOrganization:getOrganization', __args__, opts=opts, typ=GetOrganizationResult) + return __ret__.apply(lambda __response__: GetOrganizationResult( + create_time=pulumi.get(__response__, 'create_time'), + directory_customer_id=pulumi.get(__response__, 'directory_customer_id'), + domain=pulumi.get(__response__, 'domain'), + id=pulumi.get(__response__, 'id'), + lifecycle_state=pulumi.get(__response__, 'lifecycle_state'), + name=pulumi.get(__response__, 'name'), + org_id=pulumi.get(__response__, 'org_id'), + organization=pulumi.get(__response__, 'organization'))) diff --git a/sdk/python/pulumi_gcp/organizations/get_project.py b/sdk/python/pulumi_gcp/organizations/get_project.py index ea4c001124..e7305639fc 100644 --- a/sdk/python/pulumi_gcp/organizations/get_project.py +++ b/sdk/python/pulumi_gcp/organizations/get_project.py @@ -199,9 +199,6 @@ def get_project(project_id: Optional[str] = None, project_id=pulumi.get(__ret__, 'project_id'), pulumi_labels=pulumi.get(__ret__, 'pulumi_labels'), tags=pulumi.get(__ret__, 'tags')) - - -@_utilities.lift_output_func(get_project) def get_project_output(project_id: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetProjectResult]: """ @@ -222,4 +219,21 @@ def get_project_output(project_id: Optional[pulumi.Input[Optional[str]]] = None, :param str project_id: The project ID. If it is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['projectId'] = project_id + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:organizations/getProject:getProject', __args__, opts=opts, typ=GetProjectResult) + return __ret__.apply(lambda __response__: GetProjectResult( + auto_create_network=pulumi.get(__response__, 'auto_create_network'), + billing_account=pulumi.get(__response__, 'billing_account'), + deletion_policy=pulumi.get(__response__, 'deletion_policy'), + effective_labels=pulumi.get(__response__, 'effective_labels'), + folder_id=pulumi.get(__response__, 'folder_id'), + id=pulumi.get(__response__, 'id'), + labels=pulumi.get(__response__, 'labels'), + name=pulumi.get(__response__, 'name'), + number=pulumi.get(__response__, 'number'), + org_id=pulumi.get(__response__, 'org_id'), + project_id=pulumi.get(__response__, 'project_id'), + pulumi_labels=pulumi.get(__response__, 'pulumi_labels'), + tags=pulumi.get(__response__, 'tags'))) diff --git a/sdk/python/pulumi_gcp/osconfig/os_policy_assignment.py b/sdk/python/pulumi_gcp/osconfig/os_policy_assignment.py index 5a79e1e50a..5f204f5261 100644 --- a/sdk/python/pulumi_gcp/osconfig/os_policy_assignment.py +++ b/sdk/python/pulumi_gcp/osconfig/os_policy_assignment.py @@ -498,12 +498,12 @@ def __init__(__self__, "all": False, "exclusion_labels": [{ "labels": { - "label_two": "value-two", + "label-two": "value-two", }, }], "inclusion_labels": [{ "labels": { - "label_one": "value-one", + "label-one": "value-one", }, }], "inventories": [{ @@ -648,12 +648,12 @@ def __init__(__self__, "all": False, "exclusion_labels": [{ "labels": { - "label_two": "value-two", + "label-two": "value-two", }, }], "inclusion_labels": [{ "labels": { - "label_one": "value-one", + "label-one": "value-one", }, }], "inventories": [{ diff --git a/sdk/python/pulumi_gcp/projects/get_iam_policy.py b/sdk/python/pulumi_gcp/projects/get_iam_policy.py index 66b198248b..7e26b7e14f 100644 --- a/sdk/python/pulumi_gcp/projects/get_iam_policy.py +++ b/sdk/python/pulumi_gcp/projects/get_iam_policy.py @@ -110,9 +110,6 @@ def get_iam_policy(project: Optional[str] = None, id=pulumi.get(__ret__, 'id'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_iam_policy) def get_iam_policy_output(project: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetIamPolicyResult]: """ @@ -131,4 +128,12 @@ def get_iam_policy_output(project: Optional[pulumi.Input[str]] = None, :param str project: The project id of the target project. This is not inferred from the provider. """ - ... + __args__ = dict() + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:projects/getIamPolicy:getIamPolicy', __args__, opts=opts, typ=GetIamPolicyResult) + return __ret__.apply(lambda __response__: GetIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/projects/get_organization_policy.py b/sdk/python/pulumi_gcp/projects/get_organization_policy.py index bdb33ae1b2..0e98aa7d35 100644 --- a/sdk/python/pulumi_gcp/projects/get_organization_policy.py +++ b/sdk/python/pulumi_gcp/projects/get_organization_policy.py @@ -161,9 +161,6 @@ def get_organization_policy(constraint: Optional[str] = None, restore_policies=pulumi.get(__ret__, 'restore_policies'), update_time=pulumi.get(__ret__, 'update_time'), version=pulumi.get(__ret__, 'version')) - - -@_utilities.lift_output_func(get_organization_policy) def get_organization_policy_output(constraint: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetOrganizationPolicyResult]: @@ -187,4 +184,18 @@ def get_organization_policy_output(constraint: Optional[pulumi.Input[str]] = Non :param str constraint: (Required) The name of the Constraint the Policy is configuring, for example, `serviceuser.services`. Check out the [complete list of available constraints](https://cloud.google.com/resource-manager/docs/organization-policy/understanding-constraints#available_constraints). :param str project: The project ID. """ - ... + __args__ = dict() + __args__['constraint'] = constraint + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:projects/getOrganizationPolicy:getOrganizationPolicy', __args__, opts=opts, typ=GetOrganizationPolicyResult) + return __ret__.apply(lambda __response__: GetOrganizationPolicyResult( + boolean_policies=pulumi.get(__response__, 'boolean_policies'), + constraint=pulumi.get(__response__, 'constraint'), + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + list_policies=pulumi.get(__response__, 'list_policies'), + project=pulumi.get(__response__, 'project'), + restore_policies=pulumi.get(__response__, 'restore_policies'), + update_time=pulumi.get(__response__, 'update_time'), + version=pulumi.get(__response__, 'version'))) diff --git a/sdk/python/pulumi_gcp/projects/get_project.py b/sdk/python/pulumi_gcp/projects/get_project.py index 16744bd678..6b8e4bc4bc 100644 --- a/sdk/python/pulumi_gcp/projects/get_project.py +++ b/sdk/python/pulumi_gcp/projects/get_project.py @@ -102,9 +102,6 @@ def get_project(filter: Optional[str] = None, filter=pulumi.get(__ret__, 'filter'), id=pulumi.get(__ret__, 'id'), projects=pulumi.get(__ret__, 'projects')) - - -@_utilities.lift_output_func(get_project) def get_project_output(filter: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetProjectResult]: """ @@ -127,4 +124,11 @@ def get_project_output(filter: Optional[pulumi.Input[str]] = None, :param str filter: A string filter as defined in the [REST API](https://cloud.google.com/resource-manager/reference/rest/v1/projects/list#query-parameters). """ - ... + __args__ = dict() + __args__['filter'] = filter + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:projects/getProject:getProject', __args__, opts=opts, typ=GetProjectResult) + return __ret__.apply(lambda __response__: GetProjectResult( + filter=pulumi.get(__response__, 'filter'), + id=pulumi.get(__response__, 'id'), + projects=pulumi.get(__response__, 'projects'))) diff --git a/sdk/python/pulumi_gcp/projects/get_project_service.py b/sdk/python/pulumi_gcp/projects/get_project_service.py index 6cda03a527..2b69417d7c 100644 --- a/sdk/python/pulumi_gcp/projects/get_project_service.py +++ b/sdk/python/pulumi_gcp/projects/get_project_service.py @@ -141,9 +141,6 @@ def get_project_service(project: Optional[str] = None, id=pulumi.get(__ret__, 'id'), project=pulumi.get(__ret__, 'project'), service=pulumi.get(__ret__, 'service')) - - -@_utilities.lift_output_func(get_project_service) def get_project_service_output(project: Optional[pulumi.Input[Optional[str]]] = None, service: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetProjectServiceResult]: @@ -178,4 +175,15 @@ def get_project_service_output(project: Optional[pulumi.Input[Optional[str]]] = - - - """ - ... + __args__ = dict() + __args__['project'] = project + __args__['service'] = service + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:projects/getProjectService:getProjectService', __args__, opts=opts, typ=GetProjectServiceResult) + return __ret__.apply(lambda __response__: GetProjectServiceResult( + check_if_service_has_usage_on_destroy=pulumi.get(__response__, 'check_if_service_has_usage_on_destroy'), + disable_dependent_services=pulumi.get(__response__, 'disable_dependent_services'), + disable_on_destroy=pulumi.get(__response__, 'disable_on_destroy'), + id=pulumi.get(__response__, 'id'), + project=pulumi.get(__response__, 'project'), + service=pulumi.get(__response__, 'service'))) diff --git a/sdk/python/pulumi_gcp/pubsub/get_schema_iam_policy.py b/sdk/python/pulumi_gcp/pubsub/get_schema_iam_policy.py index 76a499de2f..8200b8ddff 100644 --- a/sdk/python/pulumi_gcp/pubsub/get_schema_iam_policy.py +++ b/sdk/python/pulumi_gcp/pubsub/get_schema_iam_policy.py @@ -125,9 +125,6 @@ def get_schema_iam_policy(project: Optional[str] = None, policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project'), schema=pulumi.get(__ret__, 'schema')) - - -@_utilities.lift_output_func(get_schema_iam_policy) def get_schema_iam_policy_output(project: Optional[pulumi.Input[Optional[str]]] = None, schema: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetSchemaIamPolicyResult]: @@ -149,4 +146,14 @@ def get_schema_iam_policy_output(project: Optional[pulumi.Input[Optional[str]]] If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. :param str schema: Used to find the parent resource to bind the IAM policy to """ - ... + __args__ = dict() + __args__['project'] = project + __args__['schema'] = schema + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:pubsub/getSchemaIamPolicy:getSchemaIamPolicy', __args__, opts=opts, typ=GetSchemaIamPolicyResult) + return __ret__.apply(lambda __response__: GetSchemaIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'), + schema=pulumi.get(__response__, 'schema'))) diff --git a/sdk/python/pulumi_gcp/pubsub/get_subscription.py b/sdk/python/pulumi_gcp/pubsub/get_subscription.py index 784ef22b35..4716f79531 100644 --- a/sdk/python/pulumi_gcp/pubsub/get_subscription.py +++ b/sdk/python/pulumi_gcp/pubsub/get_subscription.py @@ -262,9 +262,6 @@ def get_subscription(name: Optional[str] = None, retain_acked_messages=pulumi.get(__ret__, 'retain_acked_messages'), retry_policies=pulumi.get(__ret__, 'retry_policies'), topic=pulumi.get(__ret__, 'topic')) - - -@_utilities.lift_output_func(get_subscription) def get_subscription_output(name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetSubscriptionResult]: @@ -289,4 +286,28 @@ def get_subscription_output(name: Optional[pulumi.Input[str]] = None, :param str project: The project in which the resource belongs. If it is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:pubsub/getSubscription:getSubscription', __args__, opts=opts, typ=GetSubscriptionResult) + return __ret__.apply(lambda __response__: GetSubscriptionResult( + ack_deadline_seconds=pulumi.get(__response__, 'ack_deadline_seconds'), + bigquery_configs=pulumi.get(__response__, 'bigquery_configs'), + cloud_storage_configs=pulumi.get(__response__, 'cloud_storage_configs'), + dead_letter_policies=pulumi.get(__response__, 'dead_letter_policies'), + effective_labels=pulumi.get(__response__, 'effective_labels'), + enable_exactly_once_delivery=pulumi.get(__response__, 'enable_exactly_once_delivery'), + enable_message_ordering=pulumi.get(__response__, 'enable_message_ordering'), + expiration_policies=pulumi.get(__response__, 'expiration_policies'), + filter=pulumi.get(__response__, 'filter'), + id=pulumi.get(__response__, 'id'), + labels=pulumi.get(__response__, 'labels'), + message_retention_duration=pulumi.get(__response__, 'message_retention_duration'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + pulumi_labels=pulumi.get(__response__, 'pulumi_labels'), + push_configs=pulumi.get(__response__, 'push_configs'), + retain_acked_messages=pulumi.get(__response__, 'retain_acked_messages'), + retry_policies=pulumi.get(__response__, 'retry_policies'), + topic=pulumi.get(__response__, 'topic'))) diff --git a/sdk/python/pulumi_gcp/pubsub/get_subscription_iam_policy.py b/sdk/python/pulumi_gcp/pubsub/get_subscription_iam_policy.py index 984611a872..9aad51b727 100644 --- a/sdk/python/pulumi_gcp/pubsub/get_subscription_iam_policy.py +++ b/sdk/python/pulumi_gcp/pubsub/get_subscription_iam_policy.py @@ -123,9 +123,6 @@ def get_subscription_iam_policy(project: Optional[str] = None, policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project'), subscription=pulumi.get(__ret__, 'subscription')) - - -@_utilities.lift_output_func(get_subscription_iam_policy) def get_subscription_iam_policy_output(project: Optional[pulumi.Input[Optional[str]]] = None, subscription: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetSubscriptionIamPolicyResult]: @@ -146,4 +143,14 @@ def get_subscription_iam_policy_output(project: Optional[pulumi.Input[Optional[s is not provided, the provider project is used. :param str subscription: The subscription name or id to bind to attach IAM policy to. """ - ... + __args__ = dict() + __args__['project'] = project + __args__['subscription'] = subscription + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:pubsub/getSubscriptionIamPolicy:getSubscriptionIamPolicy', __args__, opts=opts, typ=GetSubscriptionIamPolicyResult) + return __ret__.apply(lambda __response__: GetSubscriptionIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'), + subscription=pulumi.get(__response__, 'subscription'))) diff --git a/sdk/python/pulumi_gcp/pubsub/get_topic.py b/sdk/python/pulumi_gcp/pubsub/get_topic.py index 59fc19bf2f..04c7336d2f 100644 --- a/sdk/python/pulumi_gcp/pubsub/get_topic.py +++ b/sdk/python/pulumi_gcp/pubsub/get_topic.py @@ -182,9 +182,6 @@ def get_topic(name: Optional[str] = None, project=pulumi.get(__ret__, 'project'), pulumi_labels=pulumi.get(__ret__, 'pulumi_labels'), schema_settings=pulumi.get(__ret__, 'schema_settings')) - - -@_utilities.lift_output_func(get_topic) def get_topic_output(name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetTopicResult]: @@ -209,4 +206,20 @@ def get_topic_output(name: Optional[pulumi.Input[str]] = None, :param str project: The project in which the resource belongs. If it is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:pubsub/getTopic:getTopic', __args__, opts=opts, typ=GetTopicResult) + return __ret__.apply(lambda __response__: GetTopicResult( + effective_labels=pulumi.get(__response__, 'effective_labels'), + id=pulumi.get(__response__, 'id'), + ingestion_data_source_settings=pulumi.get(__response__, 'ingestion_data_source_settings'), + kms_key_name=pulumi.get(__response__, 'kms_key_name'), + labels=pulumi.get(__response__, 'labels'), + message_retention_duration=pulumi.get(__response__, 'message_retention_duration'), + message_storage_policies=pulumi.get(__response__, 'message_storage_policies'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + pulumi_labels=pulumi.get(__response__, 'pulumi_labels'), + schema_settings=pulumi.get(__response__, 'schema_settings'))) diff --git a/sdk/python/pulumi_gcp/pubsub/get_topic_iam_policy.py b/sdk/python/pulumi_gcp/pubsub/get_topic_iam_policy.py index 47377413f6..8912c03e48 100644 --- a/sdk/python/pulumi_gcp/pubsub/get_topic_iam_policy.py +++ b/sdk/python/pulumi_gcp/pubsub/get_topic_iam_policy.py @@ -125,9 +125,6 @@ def get_topic_iam_policy(project: Optional[str] = None, policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project'), topic=pulumi.get(__ret__, 'topic')) - - -@_utilities.lift_output_func(get_topic_iam_policy) def get_topic_iam_policy_output(project: Optional[pulumi.Input[Optional[str]]] = None, topic: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetTopicIamPolicyResult]: @@ -149,4 +146,14 @@ def get_topic_iam_policy_output(project: Optional[pulumi.Input[Optional[str]]] = If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. :param str topic: Used to find the parent resource to bind the IAM policy to """ - ... + __args__ = dict() + __args__['project'] = project + __args__['topic'] = topic + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:pubsub/getTopicIamPolicy:getTopicIamPolicy', __args__, opts=opts, typ=GetTopicIamPolicyResult) + return __ret__.apply(lambda __response__: GetTopicIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'), + topic=pulumi.get(__response__, 'topic'))) diff --git a/sdk/python/pulumi_gcp/pubsub/subscription.py b/sdk/python/pulumi_gcp/pubsub/subscription.py index b44a56af8a..c6936bdb00 100644 --- a/sdk/python/pulumi_gcp/pubsub/subscription.py +++ b/sdk/python/pulumi_gcp/pubsub/subscription.py @@ -909,7 +909,7 @@ def __init__(__self__, push_config={ "push_endpoint": "https://example.com/push", "attributes": { - "x_goog_version": "v1", + "x-goog-version": "v1", }, }) ``` @@ -1373,7 +1373,7 @@ def __init__(__self__, push_config={ "push_endpoint": "https://example.com/push", "attributes": { - "x_goog_version": "v1", + "x-goog-version": "v1", }, }) ``` diff --git a/sdk/python/pulumi_gcp/redis/get_instance.py b/sdk/python/pulumi_gcp/redis/get_instance.py index 9de50370a4..d7cc687307 100644 --- a/sdk/python/pulumi_gcp/redis/get_instance.py +++ b/sdk/python/pulumi_gcp/redis/get_instance.py @@ -447,9 +447,6 @@ def get_instance(name: Optional[str] = None, server_ca_certs=pulumi.get(__ret__, 'server_ca_certs'), tier=pulumi.get(__ret__, 'tier'), transit_encryption_mode=pulumi.get(__ret__, 'transit_encryption_mode')) - - -@_utilities.lift_output_func(get_instance) def get_instance_output(name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, region: Optional[pulumi.Input[Optional[str]]] = None, @@ -478,4 +475,47 @@ def get_instance_output(name: Optional[pulumi.Input[str]] = None, :param str region: The region in which the resource belongs. If it is not provided, the provider region is used. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + __args__['region'] = region + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:redis/getInstance:getInstance', __args__, opts=opts, typ=GetInstanceResult) + return __ret__.apply(lambda __response__: GetInstanceResult( + alternative_location_id=pulumi.get(__response__, 'alternative_location_id'), + auth_enabled=pulumi.get(__response__, 'auth_enabled'), + auth_string=pulumi.get(__response__, 'auth_string'), + authorized_network=pulumi.get(__response__, 'authorized_network'), + connect_mode=pulumi.get(__response__, 'connect_mode'), + create_time=pulumi.get(__response__, 'create_time'), + current_location_id=pulumi.get(__response__, 'current_location_id'), + customer_managed_key=pulumi.get(__response__, 'customer_managed_key'), + display_name=pulumi.get(__response__, 'display_name'), + effective_labels=pulumi.get(__response__, 'effective_labels'), + host=pulumi.get(__response__, 'host'), + id=pulumi.get(__response__, 'id'), + labels=pulumi.get(__response__, 'labels'), + location_id=pulumi.get(__response__, 'location_id'), + maintenance_policies=pulumi.get(__response__, 'maintenance_policies'), + maintenance_schedules=pulumi.get(__response__, 'maintenance_schedules'), + maintenance_version=pulumi.get(__response__, 'maintenance_version'), + memory_size_gb=pulumi.get(__response__, 'memory_size_gb'), + name=pulumi.get(__response__, 'name'), + nodes=pulumi.get(__response__, 'nodes'), + persistence_configs=pulumi.get(__response__, 'persistence_configs'), + persistence_iam_identity=pulumi.get(__response__, 'persistence_iam_identity'), + port=pulumi.get(__response__, 'port'), + project=pulumi.get(__response__, 'project'), + pulumi_labels=pulumi.get(__response__, 'pulumi_labels'), + read_endpoint=pulumi.get(__response__, 'read_endpoint'), + read_endpoint_port=pulumi.get(__response__, 'read_endpoint_port'), + read_replicas_mode=pulumi.get(__response__, 'read_replicas_mode'), + redis_configs=pulumi.get(__response__, 'redis_configs'), + redis_version=pulumi.get(__response__, 'redis_version'), + region=pulumi.get(__response__, 'region'), + replica_count=pulumi.get(__response__, 'replica_count'), + reserved_ip_range=pulumi.get(__response__, 'reserved_ip_range'), + secondary_ip_range=pulumi.get(__response__, 'secondary_ip_range'), + server_ca_certs=pulumi.get(__response__, 'server_ca_certs'), + tier=pulumi.get(__response__, 'tier'), + transit_encryption_mode=pulumi.get(__response__, 'transit_encryption_mode'))) diff --git a/sdk/python/pulumi_gcp/runtimeconfig/get_config.py b/sdk/python/pulumi_gcp/runtimeconfig/get_config.py index 7c6fbc36b3..1da8ec876e 100644 --- a/sdk/python/pulumi_gcp/runtimeconfig/get_config.py +++ b/sdk/python/pulumi_gcp/runtimeconfig/get_config.py @@ -107,9 +107,6 @@ def get_config(name: Optional[str] = None, id=pulumi.get(__ret__, 'id'), name=pulumi.get(__ret__, 'name'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_config) def get_config_output(name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetConfigResult]: @@ -130,4 +127,13 @@ def get_config_output(name: Optional[pulumi.Input[str]] = None, :param str project: The project in which the resource belongs. If it is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:runtimeconfig/getConfig:getConfig', __args__, opts=opts, typ=GetConfigResult) + return __ret__.apply(lambda __response__: GetConfigResult( + description=pulumi.get(__response__, 'description'), + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/runtimeconfig/get_config_iam_policy.py b/sdk/python/pulumi_gcp/runtimeconfig/get_config_iam_policy.py index e835d621b3..fd3fc940f3 100644 --- a/sdk/python/pulumi_gcp/runtimeconfig/get_config_iam_policy.py +++ b/sdk/python/pulumi_gcp/runtimeconfig/get_config_iam_policy.py @@ -114,9 +114,6 @@ def get_config_iam_policy(config: Optional[str] = None, id=pulumi.get(__ret__, 'id'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_config_iam_policy) def get_config_iam_policy_output(config: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetConfigIamPolicyResult]: @@ -127,4 +124,14 @@ def get_config_iam_policy_output(config: Optional[pulumi.Input[str]] = None, :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['config'] = config + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:runtimeconfig/getConfigIamPolicy:getConfigIamPolicy', __args__, opts=opts, typ=GetConfigIamPolicyResult) + return __ret__.apply(lambda __response__: GetConfigIamPolicyResult( + config=pulumi.get(__response__, 'config'), + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/runtimeconfig/get_variable.py b/sdk/python/pulumi_gcp/runtimeconfig/get_variable.py index 6dddde73a1..ea3b71f9f1 100644 --- a/sdk/python/pulumi_gcp/runtimeconfig/get_variable.py +++ b/sdk/python/pulumi_gcp/runtimeconfig/get_variable.py @@ -141,9 +141,6 @@ def get_variable(name: Optional[str] = None, text=pulumi.get(__ret__, 'text'), update_time=pulumi.get(__ret__, 'update_time'), value=pulumi.get(__ret__, 'value')) - - -@_utilities.lift_output_func(get_variable) def get_variable_output(name: Optional[pulumi.Input[str]] = None, parent: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -167,4 +164,17 @@ def get_variable_output(name: Optional[pulumi.Input[str]] = None, :param str project: The project in which the resource belongs. If it is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['parent'] = parent + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:runtimeconfig/getVariable:getVariable', __args__, opts=opts, typ=GetVariableResult) + return __ret__.apply(lambda __response__: GetVariableResult( + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'), + parent=pulumi.get(__response__, 'parent'), + project=pulumi.get(__response__, 'project'), + text=pulumi.get(__response__, 'text'), + update_time=pulumi.get(__response__, 'update_time'), + value=pulumi.get(__response__, 'value'))) diff --git a/sdk/python/pulumi_gcp/secretmanager/get_regional_secret.py b/sdk/python/pulumi_gcp/secretmanager/get_regional_secret.py index ee1b66210c..2b781a69b9 100644 --- a/sdk/python/pulumi_gcp/secretmanager/get_regional_secret.py +++ b/sdk/python/pulumi_gcp/secretmanager/get_regional_secret.py @@ -251,9 +251,6 @@ def get_regional_secret(location: Optional[str] = None, ttl=pulumi.get(__ret__, 'ttl'), version_aliases=pulumi.get(__ret__, 'version_aliases'), version_destroy_ttl=pulumi.get(__ret__, 'version_destroy_ttl')) - - -@_utilities.lift_output_func(get_regional_secret) def get_regional_secret_output(location: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, secret_id: Optional[pulumi.Input[str]] = None, @@ -276,4 +273,28 @@ def get_regional_secret_output(location: Optional[pulumi.Input[str]] = None, :param str project: The ID of the project in which the resource belongs. :param str secret_id: The name of the regional secret. """ - ... + __args__ = dict() + __args__['location'] = location + __args__['project'] = project + __args__['secretId'] = secret_id + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:secretmanager/getRegionalSecret:getRegionalSecret', __args__, opts=opts, typ=GetRegionalSecretResult) + return __ret__.apply(lambda __response__: GetRegionalSecretResult( + annotations=pulumi.get(__response__, 'annotations'), + create_time=pulumi.get(__response__, 'create_time'), + customer_managed_encryptions=pulumi.get(__response__, 'customer_managed_encryptions'), + effective_annotations=pulumi.get(__response__, 'effective_annotations'), + effective_labels=pulumi.get(__response__, 'effective_labels'), + expire_time=pulumi.get(__response__, 'expire_time'), + id=pulumi.get(__response__, 'id'), + labels=pulumi.get(__response__, 'labels'), + location=pulumi.get(__response__, 'location'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + pulumi_labels=pulumi.get(__response__, 'pulumi_labels'), + rotations=pulumi.get(__response__, 'rotations'), + secret_id=pulumi.get(__response__, 'secret_id'), + topics=pulumi.get(__response__, 'topics'), + ttl=pulumi.get(__response__, 'ttl'), + version_aliases=pulumi.get(__response__, 'version_aliases'), + version_destroy_ttl=pulumi.get(__response__, 'version_destroy_ttl'))) diff --git a/sdk/python/pulumi_gcp/secretmanager/get_regional_secret_iam_policy.py b/sdk/python/pulumi_gcp/secretmanager/get_regional_secret_iam_policy.py index 3e941902ad..5f303a886a 100644 --- a/sdk/python/pulumi_gcp/secretmanager/get_regional_secret_iam_policy.py +++ b/sdk/python/pulumi_gcp/secretmanager/get_regional_secret_iam_policy.py @@ -141,9 +141,6 @@ def get_regional_secret_iam_policy(location: Optional[str] = None, policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project'), secret_id=pulumi.get(__ret__, 'secret_id')) - - -@_utilities.lift_output_func(get_regional_secret_iam_policy) def get_regional_secret_iam_policy_output(location: Optional[pulumi.Input[Optional[str]]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, secret_id: Optional[pulumi.Input[str]] = None, @@ -170,4 +167,16 @@ def get_regional_secret_iam_policy_output(location: Optional[pulumi.Input[Option :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['location'] = location + __args__['project'] = project + __args__['secretId'] = secret_id + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:secretmanager/getRegionalSecretIamPolicy:getRegionalSecretIamPolicy', __args__, opts=opts, typ=GetRegionalSecretIamPolicyResult) + return __ret__.apply(lambda __response__: GetRegionalSecretIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'), + secret_id=pulumi.get(__response__, 'secret_id'))) diff --git a/sdk/python/pulumi_gcp/secretmanager/get_regional_secret_version.py b/sdk/python/pulumi_gcp/secretmanager/get_regional_secret_version.py index d9c09cc488..c3459d4788 100644 --- a/sdk/python/pulumi_gcp/secretmanager/get_regional_secret_version.py +++ b/sdk/python/pulumi_gcp/secretmanager/get_regional_secret_version.py @@ -207,9 +207,6 @@ def get_regional_secret_version(location: Optional[str] = None, secret=pulumi.get(__ret__, 'secret'), secret_data=pulumi.get(__ret__, 'secret_data'), version=pulumi.get(__ret__, 'version')) - - -@_utilities.lift_output_func(get_regional_secret_version) def get_regional_secret_version_output(location: Optional[pulumi.Input[Optional[str]]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, secret: Optional[pulumi.Input[str]] = None, @@ -238,4 +235,22 @@ def get_regional_secret_version_output(location: Optional[pulumi.Input[Optional[ :param str version: The version of the regional secret to get. If it is not provided, the latest version is retrieved. """ - ... + __args__ = dict() + __args__['location'] = location + __args__['project'] = project + __args__['secret'] = secret + __args__['version'] = version + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:secretmanager/getRegionalSecretVersion:getRegionalSecretVersion', __args__, opts=opts, typ=GetRegionalSecretVersionResult) + return __ret__.apply(lambda __response__: GetRegionalSecretVersionResult( + create_time=pulumi.get(__response__, 'create_time'), + customer_managed_encryptions=pulumi.get(__response__, 'customer_managed_encryptions'), + destroy_time=pulumi.get(__response__, 'destroy_time'), + enabled=pulumi.get(__response__, 'enabled'), + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + secret=pulumi.get(__response__, 'secret'), + secret_data=pulumi.get(__response__, 'secret_data'), + version=pulumi.get(__response__, 'version'))) diff --git a/sdk/python/pulumi_gcp/secretmanager/get_secret.py b/sdk/python/pulumi_gcp/secretmanager/get_secret.py index 41705b579d..56605dcc2d 100644 --- a/sdk/python/pulumi_gcp/secretmanager/get_secret.py +++ b/sdk/python/pulumi_gcp/secretmanager/get_secret.py @@ -237,9 +237,6 @@ def get_secret(project: Optional[str] = None, ttl=pulumi.get(__ret__, 'ttl'), version_aliases=pulumi.get(__ret__, 'version_aliases'), version_destroy_ttl=pulumi.get(__ret__, 'version_destroy_ttl')) - - -@_utilities.lift_output_func(get_secret) def get_secret_output(project: Optional[pulumi.Input[Optional[str]]] = None, secret_id: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetSecretResult]: @@ -259,4 +256,26 @@ def get_secret_output(project: Optional[pulumi.Input[Optional[str]]] = None, :param str project: The ID of the project in which the resource belongs. :param str secret_id: The name of the secret. """ - ... + __args__ = dict() + __args__['project'] = project + __args__['secretId'] = secret_id + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:secretmanager/getSecret:getSecret', __args__, opts=opts, typ=GetSecretResult) + return __ret__.apply(lambda __response__: GetSecretResult( + annotations=pulumi.get(__response__, 'annotations'), + create_time=pulumi.get(__response__, 'create_time'), + effective_annotations=pulumi.get(__response__, 'effective_annotations'), + effective_labels=pulumi.get(__response__, 'effective_labels'), + expire_time=pulumi.get(__response__, 'expire_time'), + id=pulumi.get(__response__, 'id'), + labels=pulumi.get(__response__, 'labels'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + pulumi_labels=pulumi.get(__response__, 'pulumi_labels'), + replications=pulumi.get(__response__, 'replications'), + rotations=pulumi.get(__response__, 'rotations'), + secret_id=pulumi.get(__response__, 'secret_id'), + topics=pulumi.get(__response__, 'topics'), + ttl=pulumi.get(__response__, 'ttl'), + version_aliases=pulumi.get(__response__, 'version_aliases'), + version_destroy_ttl=pulumi.get(__response__, 'version_destroy_ttl'))) diff --git a/sdk/python/pulumi_gcp/secretmanager/get_secret_iam_policy.py b/sdk/python/pulumi_gcp/secretmanager/get_secret_iam_policy.py index 417be9ab09..e93a5fce3e 100644 --- a/sdk/python/pulumi_gcp/secretmanager/get_secret_iam_policy.py +++ b/sdk/python/pulumi_gcp/secretmanager/get_secret_iam_policy.py @@ -124,9 +124,6 @@ def get_secret_iam_policy(project: Optional[str] = None, policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project'), secret_id=pulumi.get(__ret__, 'secret_id')) - - -@_utilities.lift_output_func(get_secret_iam_policy) def get_secret_iam_policy_output(project: Optional[pulumi.Input[Optional[str]]] = None, secret_id: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetSecretIamPolicyResult]: @@ -147,4 +144,14 @@ def get_secret_iam_policy_output(project: Optional[pulumi.Input[Optional[str]]] :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['project'] = project + __args__['secretId'] = secret_id + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:secretmanager/getSecretIamPolicy:getSecretIamPolicy', __args__, opts=opts, typ=GetSecretIamPolicyResult) + return __ret__.apply(lambda __response__: GetSecretIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'), + secret_id=pulumi.get(__response__, 'secret_id'))) diff --git a/sdk/python/pulumi_gcp/secretmanager/get_secret_version.py b/sdk/python/pulumi_gcp/secretmanager/get_secret_version.py index 3cda52e7e2..eaa132838a 100644 --- a/sdk/python/pulumi_gcp/secretmanager/get_secret_version.py +++ b/sdk/python/pulumi_gcp/secretmanager/get_secret_version.py @@ -177,9 +177,6 @@ def get_secret_version(project: Optional[str] = None, secret=pulumi.get(__ret__, 'secret'), secret_data=pulumi.get(__ret__, 'secret_data'), version=pulumi.get(__ret__, 'version')) - - -@_utilities.lift_output_func(get_secret_version) def get_secret_version_output(project: Optional[pulumi.Input[Optional[str]]] = None, secret: Optional[pulumi.Input[str]] = None, version: Optional[pulumi.Input[Optional[str]]] = None, @@ -203,4 +200,19 @@ def get_secret_version_output(project: Optional[pulumi.Input[Optional[str]]] = N :param str version: The version of the secret to get. If it is not provided, the latest version is retrieved. """ - ... + __args__ = dict() + __args__['project'] = project + __args__['secret'] = secret + __args__['version'] = version + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:secretmanager/getSecretVersion:getSecretVersion', __args__, opts=opts, typ=GetSecretVersionResult) + return __ret__.apply(lambda __response__: GetSecretVersionResult( + create_time=pulumi.get(__response__, 'create_time'), + destroy_time=pulumi.get(__response__, 'destroy_time'), + enabled=pulumi.get(__response__, 'enabled'), + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + secret=pulumi.get(__response__, 'secret'), + secret_data=pulumi.get(__response__, 'secret_data'), + version=pulumi.get(__response__, 'version'))) diff --git a/sdk/python/pulumi_gcp/secretmanager/get_secret_version_access.py b/sdk/python/pulumi_gcp/secretmanager/get_secret_version_access.py index 5ee4831d86..8aad912f9a 100644 --- a/sdk/python/pulumi_gcp/secretmanager/get_secret_version_access.py +++ b/sdk/python/pulumi_gcp/secretmanager/get_secret_version_access.py @@ -138,9 +138,6 @@ def get_secret_version_access(project: Optional[str] = None, secret=pulumi.get(__ret__, 'secret'), secret_data=pulumi.get(__ret__, 'secret_data'), version=pulumi.get(__ret__, 'version')) - - -@_utilities.lift_output_func(get_secret_version_access) def get_secret_version_access_output(project: Optional[pulumi.Input[Optional[str]]] = None, secret: Optional[pulumi.Input[str]] = None, version: Optional[pulumi.Input[Optional[str]]] = None, @@ -164,4 +161,16 @@ def get_secret_version_access_output(project: Optional[pulumi.Input[Optional[str :param str version: The version of the secret to get. If it is not provided, the latest version is retrieved. """ - ... + __args__ = dict() + __args__['project'] = project + __args__['secret'] = secret + __args__['version'] = version + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:secretmanager/getSecretVersionAccess:getSecretVersionAccess', __args__, opts=opts, typ=GetSecretVersionAccessResult) + return __ret__.apply(lambda __response__: GetSecretVersionAccessResult( + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + secret=pulumi.get(__response__, 'secret'), + secret_data=pulumi.get(__response__, 'secret_data'), + version=pulumi.get(__response__, 'version'))) diff --git a/sdk/python/pulumi_gcp/secretmanager/get_secrets.py b/sdk/python/pulumi_gcp/secretmanager/get_secrets.py index 30d4b6133d..f95c988ea7 100644 --- a/sdk/python/pulumi_gcp/secretmanager/get_secrets.py +++ b/sdk/python/pulumi_gcp/secretmanager/get_secrets.py @@ -113,9 +113,6 @@ def get_secrets(filter: Optional[str] = None, id=pulumi.get(__ret__, 'id'), project=pulumi.get(__ret__, 'project'), secrets=pulumi.get(__ret__, 'secrets')) - - -@_utilities.lift_output_func(get_secrets) def get_secrets_output(filter: Optional[pulumi.Input[Optional[str]]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetSecretsResult]: @@ -135,4 +132,13 @@ def get_secrets_output(filter: Optional[pulumi.Input[Optional[str]]] = None, :param str filter: Filter string, adhering to the rules in [List-operation filtering](https://cloud.google.com/secret-manager/docs/filtering). List only secrets matching the filter. If filter is empty, all secrets are listed. :param str project: The ID of the project. """ - ... + __args__ = dict() + __args__['filter'] = filter + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:secretmanager/getSecrets:getSecrets', __args__, opts=opts, typ=GetSecretsResult) + return __ret__.apply(lambda __response__: GetSecretsResult( + filter=pulumi.get(__response__, 'filter'), + id=pulumi.get(__response__, 'id'), + project=pulumi.get(__response__, 'project'), + secrets=pulumi.get(__response__, 'secrets'))) diff --git a/sdk/python/pulumi_gcp/securesourcemanager/get_instance_iam_policy.py b/sdk/python/pulumi_gcp/securesourcemanager/get_instance_iam_policy.py index bffda65f77..305415130f 100644 --- a/sdk/python/pulumi_gcp/securesourcemanager/get_instance_iam_policy.py +++ b/sdk/python/pulumi_gcp/securesourcemanager/get_instance_iam_policy.py @@ -143,9 +143,6 @@ def get_instance_iam_policy(instance_id: Optional[str] = None, location=pulumi.get(__ret__, 'location'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_instance_iam_policy) def get_instance_iam_policy_output(instance_id: Optional[pulumi.Input[str]] = None, location: Optional[pulumi.Input[Optional[str]]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -174,4 +171,16 @@ def get_instance_iam_policy_output(instance_id: Optional[pulumi.Input[str]] = No :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['instanceId'] = instance_id + __args__['location'] = location + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:securesourcemanager/getInstanceIamPolicy:getInstanceIamPolicy', __args__, opts=opts, typ=GetInstanceIamPolicyResult) + return __ret__.apply(lambda __response__: GetInstanceIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + instance_id=pulumi.get(__response__, 'instance_id'), + location=pulumi.get(__response__, 'location'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/securesourcemanager/get_repository_iam_policy.py b/sdk/python/pulumi_gcp/securesourcemanager/get_repository_iam_policy.py index df6aaac8c7..1f77d3c245 100644 --- a/sdk/python/pulumi_gcp/securesourcemanager/get_repository_iam_policy.py +++ b/sdk/python/pulumi_gcp/securesourcemanager/get_repository_iam_policy.py @@ -143,9 +143,6 @@ def get_repository_iam_policy(location: Optional[str] = None, policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project'), repository_id=pulumi.get(__ret__, 'repository_id')) - - -@_utilities.lift_output_func(get_repository_iam_policy) def get_repository_iam_policy_output(location: Optional[pulumi.Input[Optional[str]]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, repository_id: Optional[pulumi.Input[str]] = None, @@ -174,4 +171,16 @@ def get_repository_iam_policy_output(location: Optional[pulumi.Input[Optional[st :param str repository_id: The ID for the Repository. Used to find the parent resource to bind the IAM policy to """ - ... + __args__ = dict() + __args__['location'] = location + __args__['project'] = project + __args__['repositoryId'] = repository_id + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:securesourcemanager/getRepositoryIamPolicy:getRepositoryIamPolicy', __args__, opts=opts, typ=GetRepositoryIamPolicyResult) + return __ret__.apply(lambda __response__: GetRepositoryIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'), + repository_id=pulumi.get(__response__, 'repository_id'))) diff --git a/sdk/python/pulumi_gcp/securitycenter/get_source_iam_policy.py b/sdk/python/pulumi_gcp/securitycenter/get_source_iam_policy.py index cec960ced8..b14914aa54 100644 --- a/sdk/python/pulumi_gcp/securitycenter/get_source_iam_policy.py +++ b/sdk/python/pulumi_gcp/securitycenter/get_source_iam_policy.py @@ -122,9 +122,6 @@ def get_source_iam_policy(organization: Optional[str] = None, organization=pulumi.get(__ret__, 'organization'), policy_data=pulumi.get(__ret__, 'policy_data'), source=pulumi.get(__ret__, 'source')) - - -@_utilities.lift_output_func(get_source_iam_policy) def get_source_iam_policy_output(organization: Optional[pulumi.Input[str]] = None, source: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetSourceIamPolicyResult]: @@ -143,4 +140,14 @@ def get_source_iam_policy_output(organization: Optional[pulumi.Input[str]] = Non :param str source: Used to find the parent resource to bind the IAM policy to """ - ... + __args__ = dict() + __args__['organization'] = organization + __args__['source'] = source + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:securitycenter/getSourceIamPolicy:getSourceIamPolicy', __args__, opts=opts, typ=GetSourceIamPolicyResult) + return __ret__.apply(lambda __response__: GetSourceIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + organization=pulumi.get(__response__, 'organization'), + policy_data=pulumi.get(__response__, 'policy_data'), + source=pulumi.get(__response__, 'source'))) diff --git a/sdk/python/pulumi_gcp/securitycenter/get_v2_organization_source_iam_policy.py b/sdk/python/pulumi_gcp/securitycenter/get_v2_organization_source_iam_policy.py index a64a5a6172..5c2f898680 100644 --- a/sdk/python/pulumi_gcp/securitycenter/get_v2_organization_source_iam_policy.py +++ b/sdk/python/pulumi_gcp/securitycenter/get_v2_organization_source_iam_policy.py @@ -122,9 +122,6 @@ def get_v2_organization_source_iam_policy(organization: Optional[str] = None, organization=pulumi.get(__ret__, 'organization'), policy_data=pulumi.get(__ret__, 'policy_data'), source=pulumi.get(__ret__, 'source')) - - -@_utilities.lift_output_func(get_v2_organization_source_iam_policy) def get_v2_organization_source_iam_policy_output(organization: Optional[pulumi.Input[str]] = None, source: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetV2OrganizationSourceIamPolicyResult]: @@ -143,4 +140,14 @@ def get_v2_organization_source_iam_policy_output(organization: Optional[pulumi.I :param str source: Used to find the parent resource to bind the IAM policy to """ - ... + __args__ = dict() + __args__['organization'] = organization + __args__['source'] = source + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:securitycenter/getV2OrganizationSourceIamPolicy:getV2OrganizationSourceIamPolicy', __args__, opts=opts, typ=GetV2OrganizationSourceIamPolicyResult) + return __ret__.apply(lambda __response__: GetV2OrganizationSourceIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + organization=pulumi.get(__response__, 'organization'), + policy_data=pulumi.get(__response__, 'policy_data'), + source=pulumi.get(__response__, 'source'))) diff --git a/sdk/python/pulumi_gcp/serviceaccount/get_account.py b/sdk/python/pulumi_gcp/serviceaccount/get_account.py index 608c10dce9..5521c01a8d 100644 --- a/sdk/python/pulumi_gcp/serviceaccount/get_account.py +++ b/sdk/python/pulumi_gcp/serviceaccount/get_account.py @@ -191,9 +191,6 @@ def get_account(account_id: Optional[str] = None, name=pulumi.get(__ret__, 'name'), project=pulumi.get(__ret__, 'project'), unique_id=pulumi.get(__ret__, 'unique_id')) - - -@_utilities.lift_output_func(get_account) def get_account_output(account_id: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetAccountResult]: @@ -241,4 +238,17 @@ def get_account_output(account_id: Optional[pulumi.Input[str]] = None, :param str project: The ID of the project that the service account is present in. Defaults to the provider project configuration. """ - ... + __args__ = dict() + __args__['accountId'] = account_id + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:serviceaccount/getAccount:getAccount', __args__, opts=opts, typ=GetAccountResult) + return __ret__.apply(lambda __response__: GetAccountResult( + account_id=pulumi.get(__response__, 'account_id'), + display_name=pulumi.get(__response__, 'display_name'), + email=pulumi.get(__response__, 'email'), + id=pulumi.get(__response__, 'id'), + member=pulumi.get(__response__, 'member'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + unique_id=pulumi.get(__response__, 'unique_id'))) diff --git a/sdk/python/pulumi_gcp/serviceaccount/get_account_access_token.py b/sdk/python/pulumi_gcp/serviceaccount/get_account_access_token.py index 41d69e67cc..e188b0e0f5 100644 --- a/sdk/python/pulumi_gcp/serviceaccount/get_account_access_token.py +++ b/sdk/python/pulumi_gcp/serviceaccount/get_account_access_token.py @@ -166,9 +166,6 @@ def get_account_access_token(delegates: Optional[Sequence[str]] = None, lifetime=pulumi.get(__ret__, 'lifetime'), scopes=pulumi.get(__ret__, 'scopes'), target_service_account=pulumi.get(__ret__, 'target_service_account')) - - -@_utilities.lift_output_func(get_account_access_token) def get_account_access_token_output(delegates: Optional[pulumi.Input[Optional[Sequence[str]]]] = None, lifetime: Optional[pulumi.Input[Optional[str]]] = None, scopes: Optional[pulumi.Input[Sequence[str]]] = None, @@ -223,4 +220,17 @@ def get_account_access_token_output(delegates: Optional[pulumi.Input[Optional[Se :param Sequence[str] scopes: The scopes the new credential should have (e.g. `["cloud-platform"]`) :param str target_service_account: The service account _to_ impersonate (e.g. `service_B@your-project-id.iam.gserviceaccount.com`) """ - ... + __args__ = dict() + __args__['delegates'] = delegates + __args__['lifetime'] = lifetime + __args__['scopes'] = scopes + __args__['targetServiceAccount'] = target_service_account + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:serviceaccount/getAccountAccessToken:getAccountAccessToken', __args__, opts=opts, typ=GetAccountAccessTokenResult) + return __ret__.apply(lambda __response__: GetAccountAccessTokenResult( + access_token=pulumi.get(__response__, 'access_token'), + delegates=pulumi.get(__response__, 'delegates'), + id=pulumi.get(__response__, 'id'), + lifetime=pulumi.get(__response__, 'lifetime'), + scopes=pulumi.get(__response__, 'scopes'), + target_service_account=pulumi.get(__response__, 'target_service_account'))) diff --git a/sdk/python/pulumi_gcp/serviceaccount/get_account_id_token.py b/sdk/python/pulumi_gcp/serviceaccount/get_account_id_token.py index 245be7d855..df04535229 100644 --- a/sdk/python/pulumi_gcp/serviceaccount/get_account_id_token.py +++ b/sdk/python/pulumi_gcp/serviceaccount/get_account_id_token.py @@ -183,9 +183,6 @@ def get_account_id_token(delegates: Optional[Sequence[str]] = None, include_email=pulumi.get(__ret__, 'include_email'), target_audience=pulumi.get(__ret__, 'target_audience'), target_service_account=pulumi.get(__ret__, 'target_service_account')) - - -@_utilities.lift_output_func(get_account_id_token) def get_account_id_token_output(delegates: Optional[pulumi.Input[Optional[Sequence[str]]]] = None, include_email: Optional[pulumi.Input[Optional[bool]]] = None, target_audience: Optional[pulumi.Input[str]] = None, @@ -257,4 +254,17 @@ def get_account_id_token_output(delegates: Optional[pulumi.Input[Optional[Sequen :param str target_audience: The audience claim for the `id_token`. :param str target_service_account: The email of the service account being impersonated. Used only when using impersonation mode. """ - ... + __args__ = dict() + __args__['delegates'] = delegates + __args__['includeEmail'] = include_email + __args__['targetAudience'] = target_audience + __args__['targetServiceAccount'] = target_service_account + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:serviceaccount/getAccountIdToken:getAccountIdToken', __args__, opts=opts, typ=GetAccountIdTokenResult) + return __ret__.apply(lambda __response__: GetAccountIdTokenResult( + delegates=pulumi.get(__response__, 'delegates'), + id=pulumi.get(__response__, 'id'), + id_token=pulumi.get(__response__, 'id_token'), + include_email=pulumi.get(__response__, 'include_email'), + target_audience=pulumi.get(__response__, 'target_audience'), + target_service_account=pulumi.get(__response__, 'target_service_account'))) diff --git a/sdk/python/pulumi_gcp/serviceaccount/get_account_jwt.py b/sdk/python/pulumi_gcp/serviceaccount/get_account_jwt.py index 842c85f588..00a373f452 100644 --- a/sdk/python/pulumi_gcp/serviceaccount/get_account_jwt.py +++ b/sdk/python/pulumi_gcp/serviceaccount/get_account_jwt.py @@ -144,9 +144,6 @@ def get_account_jwt(delegates: Optional[Sequence[str]] = None, jwt=pulumi.get(__ret__, 'jwt'), payload=pulumi.get(__ret__, 'payload'), target_service_account=pulumi.get(__ret__, 'target_service_account')) - - -@_utilities.lift_output_func(get_account_jwt) def get_account_jwt_output(delegates: Optional[pulumi.Input[Optional[Sequence[str]]]] = None, expires_in: Optional[pulumi.Input[Optional[int]]] = None, payload: Optional[pulumi.Input[str]] = None, @@ -179,4 +176,17 @@ def get_account_jwt_output(delegates: Optional[pulumi.Input[Optional[Sequence[st :param str payload: The JSON-encoded JWT claims set to include in the self-signed JWT. :param str target_service_account: The email of the service account that will sign the JWT. """ - ... + __args__ = dict() + __args__['delegates'] = delegates + __args__['expiresIn'] = expires_in + __args__['payload'] = payload + __args__['targetServiceAccount'] = target_service_account + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:serviceaccount/getAccountJwt:getAccountJwt', __args__, opts=opts, typ=GetAccountJwtResult) + return __ret__.apply(lambda __response__: GetAccountJwtResult( + delegates=pulumi.get(__response__, 'delegates'), + expires_in=pulumi.get(__response__, 'expires_in'), + id=pulumi.get(__response__, 'id'), + jwt=pulumi.get(__response__, 'jwt'), + payload=pulumi.get(__response__, 'payload'), + target_service_account=pulumi.get(__response__, 'target_service_account'))) diff --git a/sdk/python/pulumi_gcp/serviceaccount/get_account_key.py b/sdk/python/pulumi_gcp/serviceaccount/get_account_key.py index 0fcf8a3416..d5f6f43f61 100644 --- a/sdk/python/pulumi_gcp/serviceaccount/get_account_key.py +++ b/sdk/python/pulumi_gcp/serviceaccount/get_account_key.py @@ -138,9 +138,6 @@ def get_account_key(name: Optional[str] = None, project=pulumi.get(__ret__, 'project'), public_key=pulumi.get(__ret__, 'public_key'), public_key_type=pulumi.get(__ret__, 'public_key_type')) - - -@_utilities.lift_output_func(get_account_key) def get_account_key_output(name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, public_key_type: Optional[pulumi.Input[Optional[str]]] = None, @@ -168,4 +165,16 @@ def get_account_key_output(name: Optional[pulumi.Input[str]] = None, Defaults to the provider project configuration. :param str public_key_type: The output format of the public key requested. TYPE_X509_PEM_FILE is the default output format. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + __args__['publicKeyType'] = public_key_type + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:serviceaccount/getAccountKey:getAccountKey', __args__, opts=opts, typ=GetAccountKeyResult) + return __ret__.apply(lambda __response__: GetAccountKeyResult( + id=pulumi.get(__response__, 'id'), + key_algorithm=pulumi.get(__response__, 'key_algorithm'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + public_key=pulumi.get(__response__, 'public_key'), + public_key_type=pulumi.get(__response__, 'public_key_type'))) diff --git a/sdk/python/pulumi_gcp/serviceaccount/get_iam_policy.py b/sdk/python/pulumi_gcp/serviceaccount/get_iam_policy.py index 08149f02d7..c5583e344a 100644 --- a/sdk/python/pulumi_gcp/serviceaccount/get_iam_policy.py +++ b/sdk/python/pulumi_gcp/serviceaccount/get_iam_policy.py @@ -109,9 +109,6 @@ def get_iam_policy(service_account_id: Optional[str] = None, id=pulumi.get(__ret__, 'id'), policy_data=pulumi.get(__ret__, 'policy_data'), service_account_id=pulumi.get(__ret__, 'service_account_id')) - - -@_utilities.lift_output_func(get_iam_policy) def get_iam_policy_output(service_account_id: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetIamPolicyResult]: """ @@ -129,4 +126,12 @@ def get_iam_policy_output(service_account_id: Optional[pulumi.Input[str]] = None :param str service_account_id: The fully-qualified name of the service account to apply policy to. """ - ... + __args__ = dict() + __args__['serviceAccountId'] = service_account_id + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:serviceaccount/getIamPolicy:getIamPolicy', __args__, opts=opts, typ=GetIamPolicyResult) + return __ret__.apply(lambda __response__: GetIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'), + service_account_id=pulumi.get(__response__, 'service_account_id'))) diff --git a/sdk/python/pulumi_gcp/servicedirectory/get_namespace_iam_policy.py b/sdk/python/pulumi_gcp/servicedirectory/get_namespace_iam_policy.py index 85c0670706..cf3235a398 100644 --- a/sdk/python/pulumi_gcp/servicedirectory/get_namespace_iam_policy.py +++ b/sdk/python/pulumi_gcp/servicedirectory/get_namespace_iam_policy.py @@ -100,9 +100,6 @@ def get_namespace_iam_policy(name: Optional[str] = None, id=pulumi.get(__ret__, 'id'), name=pulumi.get(__ret__, 'name'), policy_data=pulumi.get(__ret__, 'policy_data')) - - -@_utilities.lift_output_func(get_namespace_iam_policy) def get_namespace_iam_policy_output(name: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetNamespaceIamPolicyResult]: """ @@ -110,4 +107,12 @@ def get_namespace_iam_policy_output(name: Optional[pulumi.Input[str]] = None, :param str name: Used to find the parent resource to bind the IAM policy to """ - ... + __args__ = dict() + __args__['name'] = name + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:servicedirectory/getNamespaceIamPolicy:getNamespaceIamPolicy', __args__, opts=opts, typ=GetNamespaceIamPolicyResult) + return __ret__.apply(lambda __response__: GetNamespaceIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'), + policy_data=pulumi.get(__response__, 'policy_data'))) diff --git a/sdk/python/pulumi_gcp/servicedirectory/get_service_iam_policy.py b/sdk/python/pulumi_gcp/servicedirectory/get_service_iam_policy.py index 37e1e8bb5c..0609e56e69 100644 --- a/sdk/python/pulumi_gcp/servicedirectory/get_service_iam_policy.py +++ b/sdk/python/pulumi_gcp/servicedirectory/get_service_iam_policy.py @@ -100,9 +100,6 @@ def get_service_iam_policy(name: Optional[str] = None, id=pulumi.get(__ret__, 'id'), name=pulumi.get(__ret__, 'name'), policy_data=pulumi.get(__ret__, 'policy_data')) - - -@_utilities.lift_output_func(get_service_iam_policy) def get_service_iam_policy_output(name: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetServiceIamPolicyResult]: """ @@ -110,4 +107,12 @@ def get_service_iam_policy_output(name: Optional[pulumi.Input[str]] = None, :param str name: Used to find the parent resource to bind the IAM policy to """ - ... + __args__ = dict() + __args__['name'] = name + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:servicedirectory/getServiceIamPolicy:getServiceIamPolicy', __args__, opts=opts, typ=GetServiceIamPolicyResult) + return __ret__.apply(lambda __response__: GetServiceIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'), + policy_data=pulumi.get(__response__, 'policy_data'))) diff --git a/sdk/python/pulumi_gcp/servicenetworking/get_peered_dns_domain.py b/sdk/python/pulumi_gcp/servicenetworking/get_peered_dns_domain.py index 7c82bafe09..1661d61f17 100644 --- a/sdk/python/pulumi_gcp/servicenetworking/get_peered_dns_domain.py +++ b/sdk/python/pulumi_gcp/servicenetworking/get_peered_dns_domain.py @@ -127,9 +127,6 @@ def get_peered_dns_domain(name: Optional[str] = None, parent=pulumi.get(__ret__, 'parent'), project=pulumi.get(__ret__, 'project'), service=pulumi.get(__ret__, 'service')) - - -@_utilities.lift_output_func(get_peered_dns_domain) def get_peered_dns_domain_output(name: Optional[pulumi.Input[str]] = None, network: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[str]] = None, @@ -138,4 +135,18 @@ def get_peered_dns_domain_output(name: Optional[pulumi.Input[str]] = None, """ Use this data source to access information about an existing resource. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['network'] = network + __args__['project'] = project + __args__['service'] = service + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:servicenetworking/getPeeredDnsDomain:getPeeredDnsDomain', __args__, opts=opts, typ=GetPeeredDnsDomainResult) + return __ret__.apply(lambda __response__: GetPeeredDnsDomainResult( + dns_suffix=pulumi.get(__response__, 'dns_suffix'), + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'), + network=pulumi.get(__response__, 'network'), + parent=pulumi.get(__response__, 'parent'), + project=pulumi.get(__response__, 'project'), + service=pulumi.get(__response__, 'service'))) diff --git a/sdk/python/pulumi_gcp/siteverification/get_token.py b/sdk/python/pulumi_gcp/siteverification/get_token.py index 95867aaa4c..921ca2b4fe 100644 --- a/sdk/python/pulumi_gcp/siteverification/get_token.py +++ b/sdk/python/pulumi_gcp/siteverification/get_token.py @@ -158,9 +158,6 @@ def get_token(identifier: Optional[str] = None, token=pulumi.get(__ret__, 'token'), type=pulumi.get(__ret__, 'type'), verification_method=pulumi.get(__ret__, 'verification_method')) - - -@_utilities.lift_output_func(get_token) def get_token_output(identifier: Optional[pulumi.Input[str]] = None, type: Optional[pulumi.Input[str]] = None, verification_method: Optional[pulumi.Input[str]] = None, @@ -218,4 +215,15 @@ def get_token_output(identifier: Optional[pulumi.Input[str]] = None, - - - """ - ... + __args__ = dict() + __args__['identifier'] = identifier + __args__['type'] = type + __args__['verificationMethod'] = verification_method + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:siteverification/getToken:getToken', __args__, opts=opts, typ=GetTokenResult) + return __ret__.apply(lambda __response__: GetTokenResult( + id=pulumi.get(__response__, 'id'), + identifier=pulumi.get(__response__, 'identifier'), + token=pulumi.get(__response__, 'token'), + type=pulumi.get(__response__, 'type'), + verification_method=pulumi.get(__response__, 'verification_method'))) diff --git a/sdk/python/pulumi_gcp/sourcerepo/get_repository.py b/sdk/python/pulumi_gcp/sourcerepo/get_repository.py index 6052dc8db3..dd04f1af91 100644 --- a/sdk/python/pulumi_gcp/sourcerepo/get_repository.py +++ b/sdk/python/pulumi_gcp/sourcerepo/get_repository.py @@ -130,9 +130,6 @@ def get_repository(name: Optional[str] = None, pubsub_configs=pulumi.get(__ret__, 'pubsub_configs'), size=pulumi.get(__ret__, 'size'), url=pulumi.get(__ret__, 'url')) - - -@_utilities.lift_output_func(get_repository) def get_repository_output(name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetRepositoryResult]: @@ -155,4 +152,15 @@ def get_repository_output(name: Optional[pulumi.Input[str]] = None, :param str name: Resource name of the repository. The repo name may contain slashes. eg, `name/with/slash` :param str project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:sourcerepo/getRepository:getRepository', __args__, opts=opts, typ=GetRepositoryResult) + return __ret__.apply(lambda __response__: GetRepositoryResult( + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + pubsub_configs=pulumi.get(__response__, 'pubsub_configs'), + size=pulumi.get(__response__, 'size'), + url=pulumi.get(__response__, 'url'))) diff --git a/sdk/python/pulumi_gcp/sourcerepo/get_repository_iam_policy.py b/sdk/python/pulumi_gcp/sourcerepo/get_repository_iam_policy.py index e2c080eefe..09eb23259c 100644 --- a/sdk/python/pulumi_gcp/sourcerepo/get_repository_iam_policy.py +++ b/sdk/python/pulumi_gcp/sourcerepo/get_repository_iam_policy.py @@ -125,9 +125,6 @@ def get_repository_iam_policy(project: Optional[str] = None, policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project'), repository=pulumi.get(__ret__, 'repository')) - - -@_utilities.lift_output_func(get_repository_iam_policy) def get_repository_iam_policy_output(project: Optional[pulumi.Input[Optional[str]]] = None, repository: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetRepositoryIamPolicyResult]: @@ -149,4 +146,14 @@ def get_repository_iam_policy_output(project: Optional[pulumi.Input[Optional[str If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. :param str repository: Used to find the parent resource to bind the IAM policy to """ - ... + __args__ = dict() + __args__['project'] = project + __args__['repository'] = repository + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:sourcerepo/getRepositoryIamPolicy:getRepositoryIamPolicy', __args__, opts=opts, typ=GetRepositoryIamPolicyResult) + return __ret__.apply(lambda __response__: GetRepositoryIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'), + repository=pulumi.get(__response__, 'repository'))) diff --git a/sdk/python/pulumi_gcp/spanner/get_database_iam_policy.py b/sdk/python/pulumi_gcp/spanner/get_database_iam_policy.py index 07be5a3c21..60635955a0 100644 --- a/sdk/python/pulumi_gcp/spanner/get_database_iam_policy.py +++ b/sdk/python/pulumi_gcp/spanner/get_database_iam_policy.py @@ -138,9 +138,6 @@ def get_database_iam_policy(database: Optional[str] = None, instance=pulumi.get(__ret__, 'instance'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_database_iam_policy) def get_database_iam_policy_output(database: Optional[pulumi.Input[str]] = None, instance: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -165,4 +162,16 @@ def get_database_iam_policy_output(database: Optional[pulumi.Input[str]] = None, :param str project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['database'] = database + __args__['instance'] = instance + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:spanner/getDatabaseIamPolicy:getDatabaseIamPolicy', __args__, opts=opts, typ=GetDatabaseIamPolicyResult) + return __ret__.apply(lambda __response__: GetDatabaseIamPolicyResult( + database=pulumi.get(__response__, 'database'), + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + instance=pulumi.get(__response__, 'instance'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/spanner/get_instance.py b/sdk/python/pulumi_gcp/spanner/get_instance.py index 4855a93d27..c66d39982c 100644 --- a/sdk/python/pulumi_gcp/spanner/get_instance.py +++ b/sdk/python/pulumi_gcp/spanner/get_instance.py @@ -214,9 +214,6 @@ def get_instance(config: Optional[str] = None, project=pulumi.get(__ret__, 'project'), pulumi_labels=pulumi.get(__ret__, 'pulumi_labels'), state=pulumi.get(__ret__, 'state')) - - -@_utilities.lift_output_func(get_instance) def get_instance_output(config: Optional[pulumi.Input[Optional[str]]] = None, display_name: Optional[pulumi.Input[Optional[str]]] = None, name: Optional[pulumi.Input[str]] = None, @@ -241,4 +238,25 @@ def get_instance_output(config: Optional[pulumi.Input[Optional[str]]] = None, :param str project: The project in which the resource belongs. If it is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['config'] = config + __args__['displayName'] = display_name + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:spanner/getInstance:getInstance', __args__, opts=opts, typ=GetInstanceResult) + return __ret__.apply(lambda __response__: GetInstanceResult( + autoscaling_configs=pulumi.get(__response__, 'autoscaling_configs'), + config=pulumi.get(__response__, 'config'), + display_name=pulumi.get(__response__, 'display_name'), + edition=pulumi.get(__response__, 'edition'), + effective_labels=pulumi.get(__response__, 'effective_labels'), + force_destroy=pulumi.get(__response__, 'force_destroy'), + id=pulumi.get(__response__, 'id'), + labels=pulumi.get(__response__, 'labels'), + name=pulumi.get(__response__, 'name'), + num_nodes=pulumi.get(__response__, 'num_nodes'), + processing_units=pulumi.get(__response__, 'processing_units'), + project=pulumi.get(__response__, 'project'), + pulumi_labels=pulumi.get(__response__, 'pulumi_labels'), + state=pulumi.get(__response__, 'state'))) diff --git a/sdk/python/pulumi_gcp/spanner/get_instance_iam_policy.py b/sdk/python/pulumi_gcp/spanner/get_instance_iam_policy.py index 61b2d39a27..36bf3143c5 100644 --- a/sdk/python/pulumi_gcp/spanner/get_instance_iam_policy.py +++ b/sdk/python/pulumi_gcp/spanner/get_instance_iam_policy.py @@ -124,9 +124,6 @@ def get_instance_iam_policy(instance: Optional[str] = None, instance=pulumi.get(__ret__, 'instance'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_instance_iam_policy) def get_instance_iam_policy_output(instance: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetInstanceIamPolicyResult]: @@ -148,4 +145,14 @@ def get_instance_iam_policy_output(instance: Optional[pulumi.Input[str]] = None, :param str project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['instance'] = instance + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:spanner/getInstanceIamPolicy:getInstanceIamPolicy', __args__, opts=opts, typ=GetInstanceIamPolicyResult) + return __ret__.apply(lambda __response__: GetInstanceIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + instance=pulumi.get(__response__, 'instance'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/sql/get_backup_run.py b/sdk/python/pulumi_gcp/sql/get_backup_run.py index 7bc5b85801..d145966938 100644 --- a/sdk/python/pulumi_gcp/sql/get_backup_run.py +++ b/sdk/python/pulumi_gcp/sql/get_backup_run.py @@ -166,9 +166,6 @@ def get_backup_run(backup_id: Optional[int] = None, project=pulumi.get(__ret__, 'project'), start_time=pulumi.get(__ret__, 'start_time'), status=pulumi.get(__ret__, 'status')) - - -@_utilities.lift_output_func(get_backup_run) def get_backup_run_output(backup_id: Optional[pulumi.Input[Optional[int]]] = None, instance: Optional[pulumi.Input[str]] = None, most_recent: Optional[pulumi.Input[Optional[bool]]] = None, @@ -196,4 +193,19 @@ def get_backup_run_output(backup_id: Optional[pulumi.Input[Optional[int]]] = Non :param str project: The project to list instances for. If it is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['backupId'] = backup_id + __args__['instance'] = instance + __args__['mostRecent'] = most_recent + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:sql/getBackupRun:getBackupRun', __args__, opts=opts, typ=GetBackupRunResult) + return __ret__.apply(lambda __response__: GetBackupRunResult( + backup_id=pulumi.get(__response__, 'backup_id'), + id=pulumi.get(__response__, 'id'), + instance=pulumi.get(__response__, 'instance'), + location=pulumi.get(__response__, 'location'), + most_recent=pulumi.get(__response__, 'most_recent'), + project=pulumi.get(__response__, 'project'), + start_time=pulumi.get(__response__, 'start_time'), + status=pulumi.get(__response__, 'status'))) diff --git a/sdk/python/pulumi_gcp/sql/get_ca_certs.py b/sdk/python/pulumi_gcp/sql/get_ca_certs.py index 27bdd1b362..372644bab2 100644 --- a/sdk/python/pulumi_gcp/sql/get_ca_certs.py +++ b/sdk/python/pulumi_gcp/sql/get_ca_certs.py @@ -117,9 +117,6 @@ def get_ca_certs(instance: Optional[str] = None, id=pulumi.get(__ret__, 'id'), instance=pulumi.get(__ret__, 'instance'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_ca_certs) def get_ca_certs_output(instance: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetCaCertsResult]: @@ -133,4 +130,14 @@ def get_ca_certs_output(instance: Optional[pulumi.Input[str]] = None, :param str instance: The name or self link of the instance. :param str project: The ID of the project in which the resource belongs. If `project` is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['instance'] = instance + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:sql/getCaCerts:getCaCerts', __args__, opts=opts, typ=GetCaCertsResult) + return __ret__.apply(lambda __response__: GetCaCertsResult( + active_version=pulumi.get(__response__, 'active_version'), + certs=pulumi.get(__response__, 'certs'), + id=pulumi.get(__response__, 'id'), + instance=pulumi.get(__response__, 'instance'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/sql/get_database.py b/sdk/python/pulumi_gcp/sql/get_database.py index 3229cb8b38..85830079ab 100644 --- a/sdk/python/pulumi_gcp/sql/get_database.py +++ b/sdk/python/pulumi_gcp/sql/get_database.py @@ -150,9 +150,6 @@ def get_database(instance: Optional[str] = None, name=pulumi.get(__ret__, 'name'), project=pulumi.get(__ret__, 'project'), self_link=pulumi.get(__ret__, 'self_link')) - - -@_utilities.lift_output_func(get_database) def get_database_output(instance: Optional[pulumi.Input[str]] = None, name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -175,4 +172,18 @@ def get_database_output(instance: Optional[pulumi.Input[str]] = None, :param str name: The name of the database. :param str project: The ID of the project in which the instance belongs. """ - ... + __args__ = dict() + __args__['instance'] = instance + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:sql/getDatabase:getDatabase', __args__, opts=opts, typ=GetDatabaseResult) + return __ret__.apply(lambda __response__: GetDatabaseResult( + charset=pulumi.get(__response__, 'charset'), + collation=pulumi.get(__response__, 'collation'), + deletion_policy=pulumi.get(__response__, 'deletion_policy'), + id=pulumi.get(__response__, 'id'), + instance=pulumi.get(__response__, 'instance'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + self_link=pulumi.get(__response__, 'self_link'))) diff --git a/sdk/python/pulumi_gcp/sql/get_database_instance.py b/sdk/python/pulumi_gcp/sql/get_database_instance.py index 1987b8ac43..71d9c3a965 100644 --- a/sdk/python/pulumi_gcp/sql/get_database_instance.py +++ b/sdk/python/pulumi_gcp/sql/get_database_instance.py @@ -327,9 +327,6 @@ def get_database_instance(name: Optional[str] = None, server_ca_certs=pulumi.get(__ret__, 'server_ca_certs'), service_account_email_address=pulumi.get(__ret__, 'service_account_email_address'), settings=pulumi.get(__ret__, 'settings')) - - -@_utilities.lift_output_func(get_database_instance) def get_database_instance_output(name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetDatabaseInstanceResult]: @@ -349,4 +346,35 @@ def get_database_instance_output(name: Optional[pulumi.Input[str]] = None, :param str name: The name of the instance. :param str project: The ID of the project in which the resource belongs. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:sql/getDatabaseInstance:getDatabaseInstance', __args__, opts=opts, typ=GetDatabaseInstanceResult) + return __ret__.apply(lambda __response__: GetDatabaseInstanceResult( + available_maintenance_versions=pulumi.get(__response__, 'available_maintenance_versions'), + clones=pulumi.get(__response__, 'clones'), + connection_name=pulumi.get(__response__, 'connection_name'), + database_version=pulumi.get(__response__, 'database_version'), + deletion_protection=pulumi.get(__response__, 'deletion_protection'), + dns_name=pulumi.get(__response__, 'dns_name'), + encryption_key_name=pulumi.get(__response__, 'encryption_key_name'), + first_ip_address=pulumi.get(__response__, 'first_ip_address'), + id=pulumi.get(__response__, 'id'), + instance_type=pulumi.get(__response__, 'instance_type'), + ip_addresses=pulumi.get(__response__, 'ip_addresses'), + maintenance_version=pulumi.get(__response__, 'maintenance_version'), + master_instance_name=pulumi.get(__response__, 'master_instance_name'), + name=pulumi.get(__response__, 'name'), + private_ip_address=pulumi.get(__response__, 'private_ip_address'), + project=pulumi.get(__response__, 'project'), + psc_service_attachment_link=pulumi.get(__response__, 'psc_service_attachment_link'), + public_ip_address=pulumi.get(__response__, 'public_ip_address'), + region=pulumi.get(__response__, 'region'), + replica_configurations=pulumi.get(__response__, 'replica_configurations'), + restore_backup_contexts=pulumi.get(__response__, 'restore_backup_contexts'), + root_password=pulumi.get(__response__, 'root_password'), + self_link=pulumi.get(__response__, 'self_link'), + server_ca_certs=pulumi.get(__response__, 'server_ca_certs'), + service_account_email_address=pulumi.get(__response__, 'service_account_email_address'), + settings=pulumi.get(__response__, 'settings'))) diff --git a/sdk/python/pulumi_gcp/sql/get_database_instance_latest_recovery_time.py b/sdk/python/pulumi_gcp/sql/get_database_instance_latest_recovery_time.py index 3190f3374d..083a2f90dc 100644 --- a/sdk/python/pulumi_gcp/sql/get_database_instance_latest_recovery_time.py +++ b/sdk/python/pulumi_gcp/sql/get_database_instance_latest_recovery_time.py @@ -119,9 +119,6 @@ def get_database_instance_latest_recovery_time(instance: Optional[str] = None, instance=pulumi.get(__ret__, 'instance'), latest_recovery_time=pulumi.get(__ret__, 'latest_recovery_time'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_database_instance_latest_recovery_time) def get_database_instance_latest_recovery_time_output(instance: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetDatabaseInstanceLatestRecoveryTimeResult]: @@ -145,4 +142,13 @@ def get_database_instance_latest_recovery_time_output(instance: Optional[pulumi. :param str instance: The name of the instance. :param str project: The ID of the project in which the resource belongs. """ - ... + __args__ = dict() + __args__['instance'] = instance + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:sql/getDatabaseInstanceLatestRecoveryTime:getDatabaseInstanceLatestRecoveryTime', __args__, opts=opts, typ=GetDatabaseInstanceLatestRecoveryTimeResult) + return __ret__.apply(lambda __response__: GetDatabaseInstanceLatestRecoveryTimeResult( + id=pulumi.get(__response__, 'id'), + instance=pulumi.get(__response__, 'instance'), + latest_recovery_time=pulumi.get(__response__, 'latest_recovery_time'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/sql/get_database_instances.py b/sdk/python/pulumi_gcp/sql/get_database_instances.py index 4f9c24bc51..c33cb26bbe 100644 --- a/sdk/python/pulumi_gcp/sql/get_database_instances.py +++ b/sdk/python/pulumi_gcp/sql/get_database_instances.py @@ -159,9 +159,6 @@ def get_database_instances(database_version: Optional[str] = None, state=pulumi.get(__ret__, 'state'), tier=pulumi.get(__ret__, 'tier'), zone=pulumi.get(__ret__, 'zone')) - - -@_utilities.lift_output_func(get_database_instances) def get_database_instances_output(database_version: Optional[pulumi.Input[Optional[str]]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, region: Optional[pulumi.Input[Optional[str]]] = None, @@ -189,4 +186,21 @@ def get_database_instances_output(database_version: Optional[pulumi.Input[Option :param str tier: To filter out the Cloud SQL instances based on the tier(or machine type) of the database instances. :param str zone: To filter out the Cloud SQL instances which are located in the specified zone. This zone refers to the Compute Engine zone that the instance is currently serving from. """ - ... + __args__ = dict() + __args__['databaseVersion'] = database_version + __args__['project'] = project + __args__['region'] = region + __args__['state'] = state + __args__['tier'] = tier + __args__['zone'] = zone + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:sql/getDatabaseInstances:getDatabaseInstances', __args__, opts=opts, typ=GetDatabaseInstancesResult) + return __ret__.apply(lambda __response__: GetDatabaseInstancesResult( + database_version=pulumi.get(__response__, 'database_version'), + id=pulumi.get(__response__, 'id'), + instances=pulumi.get(__response__, 'instances'), + project=pulumi.get(__response__, 'project'), + region=pulumi.get(__response__, 'region'), + state=pulumi.get(__response__, 'state'), + tier=pulumi.get(__response__, 'tier'), + zone=pulumi.get(__response__, 'zone'))) diff --git a/sdk/python/pulumi_gcp/sql/get_databases.py b/sdk/python/pulumi_gcp/sql/get_databases.py index 93610b9dbe..49694f955d 100644 --- a/sdk/python/pulumi_gcp/sql/get_databases.py +++ b/sdk/python/pulumi_gcp/sql/get_databases.py @@ -108,9 +108,6 @@ def get_databases(instance: Optional[str] = None, id=pulumi.get(__ret__, 'id'), instance=pulumi.get(__ret__, 'instance'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_databases) def get_databases_output(instance: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetDatabasesResult]: @@ -131,4 +128,13 @@ def get_databases_output(instance: Optional[pulumi.Input[str]] = None, > **Note** This datasource performs client-side sorting to provide consistent ordering of the databases. """ - ... + __args__ = dict() + __args__['instance'] = instance + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:sql/getDatabases:getDatabases', __args__, opts=opts, typ=GetDatabasesResult) + return __ret__.apply(lambda __response__: GetDatabasesResult( + databases=pulumi.get(__response__, 'databases'), + id=pulumi.get(__response__, 'id'), + instance=pulumi.get(__response__, 'instance'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/sql/get_tiers.py b/sdk/python/pulumi_gcp/sql/get_tiers.py index 79f6ec87b2..e7e1741ead 100644 --- a/sdk/python/pulumi_gcp/sql/get_tiers.py +++ b/sdk/python/pulumi_gcp/sql/get_tiers.py @@ -102,9 +102,6 @@ def get_tiers(project: Optional[str] = None, id=pulumi.get(__ret__, 'id'), project=pulumi.get(__ret__, 'project'), tiers=pulumi.get(__ret__, 'tiers')) - - -@_utilities.lift_output_func(get_tiers) def get_tiers_output(project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetTiersResult]: """ @@ -127,4 +124,11 @@ def get_tiers_output(project: Optional[pulumi.Input[Optional[str]]] = None, :param str project: The Project ID for which to list tiers. If `project` is not provided, the project defined within the default provider configuration is used. """ - ... + __args__ = dict() + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:sql/getTiers:getTiers', __args__, opts=opts, typ=GetTiersResult) + return __ret__.apply(lambda __response__: GetTiersResult( + id=pulumi.get(__response__, 'id'), + project=pulumi.get(__response__, 'project'), + tiers=pulumi.get(__response__, 'tiers'))) diff --git a/sdk/python/pulumi_gcp/storage/get_bucket.py b/sdk/python/pulumi_gcp/storage/get_bucket.py index 99582824f1..aa65ead9fc 100644 --- a/sdk/python/pulumi_gcp/storage/get_bucket.py +++ b/sdk/python/pulumi_gcp/storage/get_bucket.py @@ -350,9 +350,6 @@ def get_bucket(name: Optional[str] = None, url=pulumi.get(__ret__, 'url'), versionings=pulumi.get(__ret__, 'versionings'), websites=pulumi.get(__ret__, 'websites')) - - -@_utilities.lift_output_func(get_bucket) def get_bucket_output(name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetBucketResult]: @@ -375,4 +372,37 @@ def get_bucket_output(name: Optional[pulumi.Input[str]] = None, :param str name: The name of the bucket. :param str project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. If no value is supplied in the configuration or through provider defaults then the data source will use the Compute API to find the project id that corresponds to the project number returned from the Storage API. Supplying a value for `project` doesn't influence retrieving data about the bucket but it can be used to prevent use of the Compute API. If you do provide a `project` value ensure that it is the correct value for that bucket; the data source will not check that the project id and project number match. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:storage/getBucket:getBucket', __args__, opts=opts, typ=GetBucketResult) + return __ret__.apply(lambda __response__: GetBucketResult( + autoclasses=pulumi.get(__response__, 'autoclasses'), + cors=pulumi.get(__response__, 'cors'), + custom_placement_configs=pulumi.get(__response__, 'custom_placement_configs'), + default_event_based_hold=pulumi.get(__response__, 'default_event_based_hold'), + effective_labels=pulumi.get(__response__, 'effective_labels'), + enable_object_retention=pulumi.get(__response__, 'enable_object_retention'), + encryptions=pulumi.get(__response__, 'encryptions'), + force_destroy=pulumi.get(__response__, 'force_destroy'), + id=pulumi.get(__response__, 'id'), + labels=pulumi.get(__response__, 'labels'), + lifecycle_rules=pulumi.get(__response__, 'lifecycle_rules'), + location=pulumi.get(__response__, 'location'), + loggings=pulumi.get(__response__, 'loggings'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + project_number=pulumi.get(__response__, 'project_number'), + public_access_prevention=pulumi.get(__response__, 'public_access_prevention'), + pulumi_labels=pulumi.get(__response__, 'pulumi_labels'), + requester_pays=pulumi.get(__response__, 'requester_pays'), + retention_policies=pulumi.get(__response__, 'retention_policies'), + rpo=pulumi.get(__response__, 'rpo'), + self_link=pulumi.get(__response__, 'self_link'), + soft_delete_policies=pulumi.get(__response__, 'soft_delete_policies'), + storage_class=pulumi.get(__response__, 'storage_class'), + uniform_bucket_level_access=pulumi.get(__response__, 'uniform_bucket_level_access'), + url=pulumi.get(__response__, 'url'), + versionings=pulumi.get(__response__, 'versionings'), + websites=pulumi.get(__response__, 'websites'))) diff --git a/sdk/python/pulumi_gcp/storage/get_bucket_iam_policy.py b/sdk/python/pulumi_gcp/storage/get_bucket_iam_policy.py index 5caef768b2..d4eae92b21 100644 --- a/sdk/python/pulumi_gcp/storage/get_bucket_iam_policy.py +++ b/sdk/python/pulumi_gcp/storage/get_bucket_iam_policy.py @@ -110,9 +110,6 @@ def get_bucket_iam_policy(bucket: Optional[str] = None, etag=pulumi.get(__ret__, 'etag'), id=pulumi.get(__ret__, 'id'), policy_data=pulumi.get(__ret__, 'policy_data')) - - -@_utilities.lift_output_func(get_bucket_iam_policy) def get_bucket_iam_policy_output(bucket: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetBucketIamPolicyResult]: """ @@ -130,4 +127,12 @@ def get_bucket_iam_policy_output(bucket: Optional[pulumi.Input[str]] = None, :param str bucket: Used to find the parent resource to bind the IAM policy to """ - ... + __args__ = dict() + __args__['bucket'] = bucket + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:storage/getBucketIamPolicy:getBucketIamPolicy', __args__, opts=opts, typ=GetBucketIamPolicyResult) + return __ret__.apply(lambda __response__: GetBucketIamPolicyResult( + bucket=pulumi.get(__response__, 'bucket'), + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'))) diff --git a/sdk/python/pulumi_gcp/storage/get_bucket_object.py b/sdk/python/pulumi_gcp/storage/get_bucket_object.py index ad7f22797d..a8aa4565ac 100644 --- a/sdk/python/pulumi_gcp/storage/get_bucket_object.py +++ b/sdk/python/pulumi_gcp/storage/get_bucket_object.py @@ -355,9 +355,6 @@ def get_bucket_object(bucket: Optional[str] = None, source=pulumi.get(__ret__, 'source'), storage_class=pulumi.get(__ret__, 'storage_class'), temporary_hold=pulumi.get(__ret__, 'temporary_hold')) - - -@_utilities.lift_output_func(get_bucket_object) def get_bucket_object_output(bucket: Optional[pulumi.Input[Optional[str]]] = None, name: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetBucketObjectResult]: @@ -383,4 +380,33 @@ def get_bucket_object_output(bucket: Optional[pulumi.Input[Optional[str]]] = Non :param str bucket: The name of the containing bucket. :param str name: The name of the object. """ - ... + __args__ = dict() + __args__['bucket'] = bucket + __args__['name'] = name + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:storage/getBucketObject:getBucketObject', __args__, opts=opts, typ=GetBucketObjectResult) + return __ret__.apply(lambda __response__: GetBucketObjectResult( + bucket=pulumi.get(__response__, 'bucket'), + cache_control=pulumi.get(__response__, 'cache_control'), + content=pulumi.get(__response__, 'content'), + content_disposition=pulumi.get(__response__, 'content_disposition'), + content_encoding=pulumi.get(__response__, 'content_encoding'), + content_language=pulumi.get(__response__, 'content_language'), + content_type=pulumi.get(__response__, 'content_type'), + crc32c=pulumi.get(__response__, 'crc32c'), + customer_encryptions=pulumi.get(__response__, 'customer_encryptions'), + detect_md5hash=pulumi.get(__response__, 'detect_md5hash'), + event_based_hold=pulumi.get(__response__, 'event_based_hold'), + generation=pulumi.get(__response__, 'generation'), + id=pulumi.get(__response__, 'id'), + kms_key_name=pulumi.get(__response__, 'kms_key_name'), + md5hash=pulumi.get(__response__, 'md5hash'), + media_link=pulumi.get(__response__, 'media_link'), + metadata=pulumi.get(__response__, 'metadata'), + name=pulumi.get(__response__, 'name'), + output_name=pulumi.get(__response__, 'output_name'), + retentions=pulumi.get(__response__, 'retentions'), + self_link=pulumi.get(__response__, 'self_link'), + source=pulumi.get(__response__, 'source'), + storage_class=pulumi.get(__response__, 'storage_class'), + temporary_hold=pulumi.get(__response__, 'temporary_hold'))) diff --git a/sdk/python/pulumi_gcp/storage/get_bucket_object_content.py b/sdk/python/pulumi_gcp/storage/get_bucket_object_content.py index 9328e0fd6a..608f033911 100644 --- a/sdk/python/pulumi_gcp/storage/get_bucket_object_content.py +++ b/sdk/python/pulumi_gcp/storage/get_bucket_object_content.py @@ -322,9 +322,6 @@ def get_bucket_object_content(bucket: Optional[str] = None, source=pulumi.get(__ret__, 'source'), storage_class=pulumi.get(__ret__, 'storage_class'), temporary_hold=pulumi.get(__ret__, 'temporary_hold')) - - -@_utilities.lift_output_func(get_bucket_object_content) def get_bucket_object_content_output(bucket: Optional[pulumi.Input[str]] = None, content: Optional[pulumi.Input[Optional[str]]] = None, name: Optional[pulumi.Input[str]] = None, @@ -355,4 +352,34 @@ def get_bucket_object_content_output(bucket: Optional[pulumi.Input[str]] = None, :param str content: (Computed) [Content-Language](https://tools.ietf.org/html/rfc7231#section-3.1.3.2) of the object content. :param str name: The name of the object. """ - ... + __args__ = dict() + __args__['bucket'] = bucket + __args__['content'] = content + __args__['name'] = name + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:storage/getBucketObjectContent:getBucketObjectContent', __args__, opts=opts, typ=GetBucketObjectContentResult) + return __ret__.apply(lambda __response__: GetBucketObjectContentResult( + bucket=pulumi.get(__response__, 'bucket'), + cache_control=pulumi.get(__response__, 'cache_control'), + content=pulumi.get(__response__, 'content'), + content_disposition=pulumi.get(__response__, 'content_disposition'), + content_encoding=pulumi.get(__response__, 'content_encoding'), + content_language=pulumi.get(__response__, 'content_language'), + content_type=pulumi.get(__response__, 'content_type'), + crc32c=pulumi.get(__response__, 'crc32c'), + customer_encryptions=pulumi.get(__response__, 'customer_encryptions'), + detect_md5hash=pulumi.get(__response__, 'detect_md5hash'), + event_based_hold=pulumi.get(__response__, 'event_based_hold'), + generation=pulumi.get(__response__, 'generation'), + id=pulumi.get(__response__, 'id'), + kms_key_name=pulumi.get(__response__, 'kms_key_name'), + md5hash=pulumi.get(__response__, 'md5hash'), + media_link=pulumi.get(__response__, 'media_link'), + metadata=pulumi.get(__response__, 'metadata'), + name=pulumi.get(__response__, 'name'), + output_name=pulumi.get(__response__, 'output_name'), + retentions=pulumi.get(__response__, 'retentions'), + self_link=pulumi.get(__response__, 'self_link'), + source=pulumi.get(__response__, 'source'), + storage_class=pulumi.get(__response__, 'storage_class'), + temporary_hold=pulumi.get(__response__, 'temporary_hold'))) diff --git a/sdk/python/pulumi_gcp/storage/get_bucket_objects.py b/sdk/python/pulumi_gcp/storage/get_bucket_objects.py index 4b104d6133..5c145e8ae4 100644 --- a/sdk/python/pulumi_gcp/storage/get_bucket_objects.py +++ b/sdk/python/pulumi_gcp/storage/get_bucket_objects.py @@ -127,9 +127,6 @@ def get_bucket_objects(bucket: Optional[str] = None, id=pulumi.get(__ret__, 'id'), match_glob=pulumi.get(__ret__, 'match_glob'), prefix=pulumi.get(__ret__, 'prefix')) - - -@_utilities.lift_output_func(get_bucket_objects) def get_bucket_objects_output(bucket: Optional[pulumi.Input[str]] = None, match_glob: Optional[pulumi.Input[Optional[str]]] = None, prefix: Optional[pulumi.Input[Optional[str]]] = None, @@ -155,4 +152,15 @@ def get_bucket_objects_output(bucket: Optional[pulumi.Input[str]] = None, :param str match_glob: A glob pattern used to filter results (for example, `foo*bar`). :param str prefix: Filter results to include only objects whose names begin with this prefix. """ - ... + __args__ = dict() + __args__['bucket'] = bucket + __args__['matchGlob'] = match_glob + __args__['prefix'] = prefix + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:storage/getBucketObjects:getBucketObjects', __args__, opts=opts, typ=GetBucketObjectsResult) + return __ret__.apply(lambda __response__: GetBucketObjectsResult( + bucket=pulumi.get(__response__, 'bucket'), + bucket_objects=pulumi.get(__response__, 'bucket_objects'), + id=pulumi.get(__response__, 'id'), + match_glob=pulumi.get(__response__, 'match_glob'), + prefix=pulumi.get(__response__, 'prefix'))) diff --git a/sdk/python/pulumi_gcp/storage/get_buckets.py b/sdk/python/pulumi_gcp/storage/get_buckets.py index 32a78536c8..cdc70938c3 100644 --- a/sdk/python/pulumi_gcp/storage/get_buckets.py +++ b/sdk/python/pulumi_gcp/storage/get_buckets.py @@ -114,9 +114,6 @@ def get_buckets(prefix: Optional[str] = None, id=pulumi.get(__ret__, 'id'), prefix=pulumi.get(__ret__, 'prefix'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_buckets) def get_buckets_output(prefix: Optional[pulumi.Input[Optional[str]]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetBucketsResult]: @@ -140,4 +137,13 @@ def get_buckets_output(prefix: Optional[pulumi.Input[Optional[str]]] = None, :param str prefix: Filter results to buckets whose names begin with this prefix. :param str project: The ID of the project. If it is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['prefix'] = prefix + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:storage/getBuckets:getBuckets', __args__, opts=opts, typ=GetBucketsResult) + return __ret__.apply(lambda __response__: GetBucketsResult( + buckets=pulumi.get(__response__, 'buckets'), + id=pulumi.get(__response__, 'id'), + prefix=pulumi.get(__response__, 'prefix'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/storage/get_managed_folder_iam_policy.py b/sdk/python/pulumi_gcp/storage/get_managed_folder_iam_policy.py index 56807b7688..e849e5e4df 100644 --- a/sdk/python/pulumi_gcp/storage/get_managed_folder_iam_policy.py +++ b/sdk/python/pulumi_gcp/storage/get_managed_folder_iam_policy.py @@ -103,13 +103,20 @@ def get_managed_folder_iam_policy(bucket: Optional[str] = None, id=pulumi.get(__ret__, 'id'), managed_folder=pulumi.get(__ret__, 'managed_folder'), policy_data=pulumi.get(__ret__, 'policy_data')) - - -@_utilities.lift_output_func(get_managed_folder_iam_policy) def get_managed_folder_iam_policy_output(bucket: Optional[pulumi.Input[str]] = None, managed_folder: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetManagedFolderIamPolicyResult]: """ Use this data source to access information about an existing resource. """ - ... + __args__ = dict() + __args__['bucket'] = bucket + __args__['managedFolder'] = managed_folder + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:storage/getManagedFolderIamPolicy:getManagedFolderIamPolicy', __args__, opts=opts, typ=GetManagedFolderIamPolicyResult) + return __ret__.apply(lambda __response__: GetManagedFolderIamPolicyResult( + bucket=pulumi.get(__response__, 'bucket'), + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + managed_folder=pulumi.get(__response__, 'managed_folder'), + policy_data=pulumi.get(__response__, 'policy_data'))) diff --git a/sdk/python/pulumi_gcp/storage/get_object_signed_url.py b/sdk/python/pulumi_gcp/storage/get_object_signed_url.py index 4760e5f0ce..2e228ea2c2 100644 --- a/sdk/python/pulumi_gcp/storage/get_object_signed_url.py +++ b/sdk/python/pulumi_gcp/storage/get_object_signed_url.py @@ -216,9 +216,6 @@ def get_object_signed_url(bucket: Optional[str] = None, id=pulumi.get(__ret__, 'id'), path=pulumi.get(__ret__, 'path'), signed_url=pulumi.get(__ret__, 'signed_url')) - - -@_utilities.lift_output_func(get_object_signed_url) def get_object_signed_url_output(bucket: Optional[pulumi.Input[str]] = None, content_md5: Optional[pulumi.Input[Optional[str]]] = None, content_type: Optional[pulumi.Input[Optional[str]]] = None, @@ -279,4 +276,25 @@ def get_object_signed_url_output(bucket: Optional[pulumi.Input[str]] = None, :param str http_method: What HTTP Method will the signed URL allow (defaults to `GET`) :param str path: The full path to the object inside the bucket """ - ... + __args__ = dict() + __args__['bucket'] = bucket + __args__['contentMd5'] = content_md5 + __args__['contentType'] = content_type + __args__['credentials'] = credentials + __args__['duration'] = duration + __args__['extensionHeaders'] = extension_headers + __args__['httpMethod'] = http_method + __args__['path'] = path + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:storage/getObjectSignedUrl:getObjectSignedUrl', __args__, opts=opts, typ=GetObjectSignedUrlResult) + return __ret__.apply(lambda __response__: GetObjectSignedUrlResult( + bucket=pulumi.get(__response__, 'bucket'), + content_md5=pulumi.get(__response__, 'content_md5'), + content_type=pulumi.get(__response__, 'content_type'), + credentials=pulumi.get(__response__, 'credentials'), + duration=pulumi.get(__response__, 'duration'), + extension_headers=pulumi.get(__response__, 'extension_headers'), + http_method=pulumi.get(__response__, 'http_method'), + id=pulumi.get(__response__, 'id'), + path=pulumi.get(__response__, 'path'), + signed_url=pulumi.get(__response__, 'signed_url'))) diff --git a/sdk/python/pulumi_gcp/storage/get_project_service_account.py b/sdk/python/pulumi_gcp/storage/get_project_service_account.py index 62543ae595..c51d9b9e80 100644 --- a/sdk/python/pulumi_gcp/storage/get_project_service_account.py +++ b/sdk/python/pulumi_gcp/storage/get_project_service_account.py @@ -181,9 +181,6 @@ def get_project_service_account(project: Optional[str] = None, member=pulumi.get(__ret__, 'member'), project=pulumi.get(__ret__, 'project'), user_project=pulumi.get(__ret__, 'user_project')) - - -@_utilities.lift_output_func(get_project_service_account) def get_project_service_account_output(project: Optional[pulumi.Input[Optional[str]]] = None, user_project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetProjectServiceAccountResult]: @@ -261,4 +258,14 @@ def get_project_service_account_output(project: Optional[pulumi.Input[Optional[s :param str user_project: The project the lookup originates from. This field is used if you are making the request from a different account than the one you are finding the service account for. """ - ... + __args__ = dict() + __args__['project'] = project + __args__['userProject'] = user_project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:storage/getProjectServiceAccount:getProjectServiceAccount', __args__, opts=opts, typ=GetProjectServiceAccountResult) + return __ret__.apply(lambda __response__: GetProjectServiceAccountResult( + email_address=pulumi.get(__response__, 'email_address'), + id=pulumi.get(__response__, 'id'), + member=pulumi.get(__response__, 'member'), + project=pulumi.get(__response__, 'project'), + user_project=pulumi.get(__response__, 'user_project'))) diff --git a/sdk/python/pulumi_gcp/storage/get_transfer_project_service_account.py b/sdk/python/pulumi_gcp/storage/get_transfer_project_service_account.py index 0d8994396a..c7aa0511a5 100644 --- a/sdk/python/pulumi_gcp/storage/get_transfer_project_service_account.py +++ b/sdk/python/pulumi_gcp/storage/get_transfer_project_service_account.py @@ -123,9 +123,6 @@ def get_transfer_project_service_account(project: Optional[str] = None, member=pulumi.get(__ret__, 'member'), project=pulumi.get(__ret__, 'project'), subject_id=pulumi.get(__ret__, 'subject_id')) - - -@_utilities.lift_output_func(get_transfer_project_service_account) def get_transfer_project_service_account_output(project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetTransferProjectServiceAccountResult]: """ @@ -144,4 +141,13 @@ def get_transfer_project_service_account_output(project: Optional[pulumi.Input[O :param str project: The project ID. If it is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:storage/getTransferProjectServiceAccount:getTransferProjectServiceAccount', __args__, opts=opts, typ=GetTransferProjectServiceAccountResult) + return __ret__.apply(lambda __response__: GetTransferProjectServiceAccountResult( + email=pulumi.get(__response__, 'email'), + id=pulumi.get(__response__, 'id'), + member=pulumi.get(__response__, 'member'), + project=pulumi.get(__response__, 'project'), + subject_id=pulumi.get(__response__, 'subject_id'))) diff --git a/sdk/python/pulumi_gcp/storage/get_transfer_project_servie_account.py b/sdk/python/pulumi_gcp/storage/get_transfer_project_servie_account.py index 6f024c9162..5cf04567a5 100644 --- a/sdk/python/pulumi_gcp/storage/get_transfer_project_servie_account.py +++ b/sdk/python/pulumi_gcp/storage/get_transfer_project_servie_account.py @@ -126,9 +126,6 @@ def get_transfer_project_servie_account(project: Optional[str] = None, member=pulumi.get(__ret__, 'member'), project=pulumi.get(__ret__, 'project'), subject_id=pulumi.get(__ret__, 'subject_id')) - - -@_utilities.lift_output_func(get_transfer_project_servie_account) def get_transfer_project_servie_account_output(project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetTransferProjectServieAccountResult]: """ @@ -148,4 +145,13 @@ def get_transfer_project_servie_account_output(project: Optional[pulumi.Input[Op :param str project: The project ID. If it is not provided, the provider project is used. """ pulumi.log.warn("""get_transfer_project_servie_account is deprecated: gcp.storage.getTransferProjectServieAccount has been deprecated in favor of gcp.storage.getTransferProjectServiceAccount""") - ... + __args__ = dict() + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:storage/getTransferProjectServieAccount:getTransferProjectServieAccount', __args__, opts=opts, typ=GetTransferProjectServieAccountResult) + return __ret__.apply(lambda __response__: GetTransferProjectServieAccountResult( + email=pulumi.get(__response__, 'email'), + id=pulumi.get(__response__, 'id'), + member=pulumi.get(__response__, 'member'), + project=pulumi.get(__response__, 'project'), + subject_id=pulumi.get(__response__, 'subject_id'))) diff --git a/sdk/python/pulumi_gcp/tags/get_tag_key.py b/sdk/python/pulumi_gcp/tags/get_tag_key.py index 01cda62bcd..221e2f10f8 100644 --- a/sdk/python/pulumi_gcp/tags/get_tag_key.py +++ b/sdk/python/pulumi_gcp/tags/get_tag_key.py @@ -168,9 +168,6 @@ def get_tag_key(parent: Optional[str] = None, parent=pulumi.get(__ret__, 'parent'), short_name=pulumi.get(__ret__, 'short_name'), update_time=pulumi.get(__ret__, 'update_time')) - - -@_utilities.lift_output_func(get_tag_key) def get_tag_key_output(parent: Optional[pulumi.Input[str]] = None, short_name: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetTagKeyResult]: @@ -198,4 +195,17 @@ def get_tag_key_output(parent: Optional[pulumi.Input[str]] = None, :param str parent: The resource name of the parent organization or project. It can be in format `organizations/{org_id}` or `projects/{project_id_or_number}`. :param str short_name: The tag key's short_name. """ - ... + __args__ = dict() + __args__['parent'] = parent + __args__['shortName'] = short_name + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:tags/getTagKey:getTagKey', __args__, opts=opts, typ=GetTagKeyResult) + return __ret__.apply(lambda __response__: GetTagKeyResult( + create_time=pulumi.get(__response__, 'create_time'), + description=pulumi.get(__response__, 'description'), + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'), + namespaced_name=pulumi.get(__response__, 'namespaced_name'), + parent=pulumi.get(__response__, 'parent'), + short_name=pulumi.get(__response__, 'short_name'), + update_time=pulumi.get(__response__, 'update_time'))) diff --git a/sdk/python/pulumi_gcp/tags/get_tag_key_iam_policy.py b/sdk/python/pulumi_gcp/tags/get_tag_key_iam_policy.py index cf36d8a0d4..e17af335ef 100644 --- a/sdk/python/pulumi_gcp/tags/get_tag_key_iam_policy.py +++ b/sdk/python/pulumi_gcp/tags/get_tag_key_iam_policy.py @@ -110,9 +110,6 @@ def get_tag_key_iam_policy(tag_key: Optional[str] = None, id=pulumi.get(__ret__, 'id'), policy_data=pulumi.get(__ret__, 'policy_data'), tag_key=pulumi.get(__ret__, 'tag_key')) - - -@_utilities.lift_output_func(get_tag_key_iam_policy) def get_tag_key_iam_policy_output(tag_key: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetTagKeyIamPolicyResult]: """ @@ -130,4 +127,12 @@ def get_tag_key_iam_policy_output(tag_key: Optional[pulumi.Input[str]] = None, :param str tag_key: Used to find the parent resource to bind the IAM policy to """ - ... + __args__ = dict() + __args__['tagKey'] = tag_key + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:tags/getTagKeyIamPolicy:getTagKeyIamPolicy', __args__, opts=opts, typ=GetTagKeyIamPolicyResult) + return __ret__.apply(lambda __response__: GetTagKeyIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'), + tag_key=pulumi.get(__response__, 'tag_key'))) diff --git a/sdk/python/pulumi_gcp/tags/get_tag_keys.py b/sdk/python/pulumi_gcp/tags/get_tag_keys.py index 65d7fe8e1b..29f6922396 100644 --- a/sdk/python/pulumi_gcp/tags/get_tag_keys.py +++ b/sdk/python/pulumi_gcp/tags/get_tag_keys.py @@ -103,9 +103,6 @@ def get_tag_keys(parent: Optional[str] = None, id=pulumi.get(__ret__, 'id'), keys=pulumi.get(__ret__, 'keys'), parent=pulumi.get(__ret__, 'parent')) - - -@_utilities.lift_output_func(get_tag_keys) def get_tag_keys_output(parent: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetTagKeysResult]: """ @@ -129,4 +126,11 @@ def get_tag_keys_output(parent: Optional[pulumi.Input[str]] = None, :param str parent: The resource name of the parent organization or project. It can be in format `organizations/{org_id}` or `projects/{project_id_or_number}`. """ - ... + __args__ = dict() + __args__['parent'] = parent + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:tags/getTagKeys:getTagKeys', __args__, opts=opts, typ=GetTagKeysResult) + return __ret__.apply(lambda __response__: GetTagKeysResult( + id=pulumi.get(__response__, 'id'), + keys=pulumi.get(__response__, 'keys'), + parent=pulumi.get(__response__, 'parent'))) diff --git a/sdk/python/pulumi_gcp/tags/get_tag_value.py b/sdk/python/pulumi_gcp/tags/get_tag_value.py index 401f421140..46d0024660 100644 --- a/sdk/python/pulumi_gcp/tags/get_tag_value.py +++ b/sdk/python/pulumi_gcp/tags/get_tag_value.py @@ -161,9 +161,6 @@ def get_tag_value(parent: Optional[str] = None, parent=pulumi.get(__ret__, 'parent'), short_name=pulumi.get(__ret__, 'short_name'), update_time=pulumi.get(__ret__, 'update_time')) - - -@_utilities.lift_output_func(get_tag_value) def get_tag_value_output(parent: Optional[pulumi.Input[str]] = None, short_name: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetTagValueResult]: @@ -184,4 +181,17 @@ def get_tag_value_output(parent: Optional[pulumi.Input[str]] = None, :param str parent: The resource name of the parent tagKey in format `tagKey/{name}`. :param str short_name: The tag value's short_name. """ - ... + __args__ = dict() + __args__['parent'] = parent + __args__['shortName'] = short_name + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:tags/getTagValue:getTagValue', __args__, opts=opts, typ=GetTagValueResult) + return __ret__.apply(lambda __response__: GetTagValueResult( + create_time=pulumi.get(__response__, 'create_time'), + description=pulumi.get(__response__, 'description'), + id=pulumi.get(__response__, 'id'), + name=pulumi.get(__response__, 'name'), + namespaced_name=pulumi.get(__response__, 'namespaced_name'), + parent=pulumi.get(__response__, 'parent'), + short_name=pulumi.get(__response__, 'short_name'), + update_time=pulumi.get(__response__, 'update_time'))) diff --git a/sdk/python/pulumi_gcp/tags/get_tag_value_iam_policy.py b/sdk/python/pulumi_gcp/tags/get_tag_value_iam_policy.py index e4b788e987..6b869b3bd4 100644 --- a/sdk/python/pulumi_gcp/tags/get_tag_value_iam_policy.py +++ b/sdk/python/pulumi_gcp/tags/get_tag_value_iam_policy.py @@ -110,9 +110,6 @@ def get_tag_value_iam_policy(tag_value: Optional[str] = None, id=pulumi.get(__ret__, 'id'), policy_data=pulumi.get(__ret__, 'policy_data'), tag_value=pulumi.get(__ret__, 'tag_value')) - - -@_utilities.lift_output_func(get_tag_value_iam_policy) def get_tag_value_iam_policy_output(tag_value: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetTagValueIamPolicyResult]: """ @@ -130,4 +127,12 @@ def get_tag_value_iam_policy_output(tag_value: Optional[pulumi.Input[str]] = Non :param str tag_value: Used to find the parent resource to bind the IAM policy to """ - ... + __args__ = dict() + __args__['tagValue'] = tag_value + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:tags/getTagValueIamPolicy:getTagValueIamPolicy', __args__, opts=opts, typ=GetTagValueIamPolicyResult) + return __ret__.apply(lambda __response__: GetTagValueIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'), + tag_value=pulumi.get(__response__, 'tag_value'))) diff --git a/sdk/python/pulumi_gcp/tags/get_tag_values.py b/sdk/python/pulumi_gcp/tags/get_tag_values.py index 639cdbc85d..3e5abdc72f 100644 --- a/sdk/python/pulumi_gcp/tags/get_tag_values.py +++ b/sdk/python/pulumi_gcp/tags/get_tag_values.py @@ -97,9 +97,6 @@ def get_tag_values(parent: Optional[str] = None, id=pulumi.get(__ret__, 'id'), parent=pulumi.get(__ret__, 'parent'), values=pulumi.get(__ret__, 'values')) - - -@_utilities.lift_output_func(get_tag_values) def get_tag_values_output(parent: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetTagValuesResult]: """ @@ -117,4 +114,11 @@ def get_tag_values_output(parent: Optional[pulumi.Input[str]] = None, :param str parent: The resource name of the parent tagKey in format `tagKey/{name}`. """ - ... + __args__ = dict() + __args__['parent'] = parent + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:tags/getTagValues:getTagValues', __args__, opts=opts, typ=GetTagValuesResult) + return __ret__.apply(lambda __response__: GetTagValuesResult( + id=pulumi.get(__response__, 'id'), + parent=pulumi.get(__response__, 'parent'), + values=pulumi.get(__response__, 'values'))) diff --git a/sdk/python/pulumi_gcp/tpu/get_tensorflow_versions.py b/sdk/python/pulumi_gcp/tpu/get_tensorflow_versions.py index 0d4863e340..9c40f693ac 100644 --- a/sdk/python/pulumi_gcp/tpu/get_tensorflow_versions.py +++ b/sdk/python/pulumi_gcp/tpu/get_tensorflow_versions.py @@ -126,9 +126,6 @@ def get_tensorflow_versions(project: Optional[str] = None, project=pulumi.get(__ret__, 'project'), versions=pulumi.get(__ret__, 'versions'), zone=pulumi.get(__ret__, 'zone')) - - -@_utilities.lift_output_func(get_tensorflow_versions) def get_tensorflow_versions_output(project: Optional[pulumi.Input[Optional[str]]] = None, zone: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetTensorflowVersionsResult]: @@ -165,4 +162,13 @@ def get_tensorflow_versions_output(project: Optional[pulumi.Input[Optional[str]] :param str zone: The zone to list versions for. If it is not provided, the provider zone is used. """ - ... + __args__ = dict() + __args__['project'] = project + __args__['zone'] = zone + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:tpu/getTensorflowVersions:getTensorflowVersions', __args__, opts=opts, typ=GetTensorflowVersionsResult) + return __ret__.apply(lambda __response__: GetTensorflowVersionsResult( + id=pulumi.get(__response__, 'id'), + project=pulumi.get(__response__, 'project'), + versions=pulumi.get(__response__, 'versions'), + zone=pulumi.get(__response__, 'zone'))) diff --git a/sdk/python/pulumi_gcp/tpu/get_v2_accelerator_types.py b/sdk/python/pulumi_gcp/tpu/get_v2_accelerator_types.py index 7e05e948f1..f0c9682508 100644 --- a/sdk/python/pulumi_gcp/tpu/get_v2_accelerator_types.py +++ b/sdk/python/pulumi_gcp/tpu/get_v2_accelerator_types.py @@ -126,9 +126,6 @@ def get_v2_accelerator_types(project: Optional[str] = None, project=pulumi.get(__ret__, 'project'), types=pulumi.get(__ret__, 'types'), zone=pulumi.get(__ret__, 'zone')) - - -@_utilities.lift_output_func(get_v2_accelerator_types) def get_v2_accelerator_types_output(project: Optional[pulumi.Input[Optional[str]]] = None, zone: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetV2AcceleratorTypesResult]: @@ -165,4 +162,13 @@ def get_v2_accelerator_types_output(project: Optional[pulumi.Input[Optional[str] :param str zone: The zone to list types for. If it is not provided, the provider zone is used. """ - ... + __args__ = dict() + __args__['project'] = project + __args__['zone'] = zone + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:tpu/getV2AcceleratorTypes:getV2AcceleratorTypes', __args__, opts=opts, typ=GetV2AcceleratorTypesResult) + return __ret__.apply(lambda __response__: GetV2AcceleratorTypesResult( + id=pulumi.get(__response__, 'id'), + project=pulumi.get(__response__, 'project'), + types=pulumi.get(__response__, 'types'), + zone=pulumi.get(__response__, 'zone'))) diff --git a/sdk/python/pulumi_gcp/tpu/get_v2_runtime_versions.py b/sdk/python/pulumi_gcp/tpu/get_v2_runtime_versions.py index 53f8e1613e..adb28abbba 100644 --- a/sdk/python/pulumi_gcp/tpu/get_v2_runtime_versions.py +++ b/sdk/python/pulumi_gcp/tpu/get_v2_runtime_versions.py @@ -124,9 +124,6 @@ def get_v2_runtime_versions(project: Optional[str] = None, project=pulumi.get(__ret__, 'project'), versions=pulumi.get(__ret__, 'versions'), zone=pulumi.get(__ret__, 'zone')) - - -@_utilities.lift_output_func(get_v2_runtime_versions) def get_v2_runtime_versions_output(project: Optional[pulumi.Input[Optional[str]]] = None, zone: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetV2RuntimeVersionsResult]: @@ -161,4 +158,13 @@ def get_v2_runtime_versions_output(project: Optional[pulumi.Input[Optional[str]] :param str zone: The zone to list versions for. If it is not provided, the provider zone is used. """ - ... + __args__ = dict() + __args__['project'] = project + __args__['zone'] = zone + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:tpu/getV2RuntimeVersions:getV2RuntimeVersions', __args__, opts=opts, typ=GetV2RuntimeVersionsResult) + return __ret__.apply(lambda __response__: GetV2RuntimeVersionsResult( + id=pulumi.get(__response__, 'id'), + project=pulumi.get(__response__, 'project'), + versions=pulumi.get(__response__, 'versions'), + zone=pulumi.get(__response__, 'zone'))) diff --git a/sdk/python/pulumi_gcp/vertex/get_ai_endpoint_iam_policy.py b/sdk/python/pulumi_gcp/vertex/get_ai_endpoint_iam_policy.py index 7b9f0d0b6a..7ca38436e6 100644 --- a/sdk/python/pulumi_gcp/vertex/get_ai_endpoint_iam_policy.py +++ b/sdk/python/pulumi_gcp/vertex/get_ai_endpoint_iam_policy.py @@ -129,9 +129,6 @@ def get_ai_endpoint_iam_policy(endpoint: Optional[str] = None, location=pulumi.get(__ret__, 'location'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_ai_endpoint_iam_policy) def get_ai_endpoint_iam_policy_output(endpoint: Optional[pulumi.Input[str]] = None, location: Optional[pulumi.Input[Optional[str]]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -146,4 +143,16 @@ def get_ai_endpoint_iam_policy_output(endpoint: Optional[pulumi.Input[str]] = No :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['endpoint'] = endpoint + __args__['location'] = location + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:vertex/getAiEndpointIamPolicy:getAiEndpointIamPolicy', __args__, opts=opts, typ=GetAiEndpointIamPolicyResult) + return __ret__.apply(lambda __response__: GetAiEndpointIamPolicyResult( + endpoint=pulumi.get(__response__, 'endpoint'), + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/vertex/get_ai_featurestore_entitytype_iam_policy.py b/sdk/python/pulumi_gcp/vertex/get_ai_featurestore_entitytype_iam_policy.py index 4d957954b6..405a317e61 100644 --- a/sdk/python/pulumi_gcp/vertex/get_ai_featurestore_entitytype_iam_policy.py +++ b/sdk/python/pulumi_gcp/vertex/get_ai_featurestore_entitytype_iam_policy.py @@ -113,9 +113,6 @@ def get_ai_featurestore_entitytype_iam_policy(entitytype: Optional[str] = None, featurestore=pulumi.get(__ret__, 'featurestore'), id=pulumi.get(__ret__, 'id'), policy_data=pulumi.get(__ret__, 'policy_data')) - - -@_utilities.lift_output_func(get_ai_featurestore_entitytype_iam_policy) def get_ai_featurestore_entitytype_iam_policy_output(entitytype: Optional[pulumi.Input[str]] = None, featurestore: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetAiFeaturestoreEntitytypeIamPolicyResult]: @@ -125,4 +122,14 @@ def get_ai_featurestore_entitytype_iam_policy_output(entitytype: Optional[pulumi :param str entitytype: Used to find the parent resource to bind the IAM policy to :param str featurestore: The name of the Featurestore to use, in the format projects/{project}/locations/{location}/featurestores/{featurestore}. Used to find the parent resource to bind the IAM policy to """ - ... + __args__ = dict() + __args__['entitytype'] = entitytype + __args__['featurestore'] = featurestore + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:vertex/getAiFeaturestoreEntitytypeIamPolicy:getAiFeaturestoreEntitytypeIamPolicy', __args__, opts=opts, typ=GetAiFeaturestoreEntitytypeIamPolicyResult) + return __ret__.apply(lambda __response__: GetAiFeaturestoreEntitytypeIamPolicyResult( + entitytype=pulumi.get(__response__, 'entitytype'), + etag=pulumi.get(__response__, 'etag'), + featurestore=pulumi.get(__response__, 'featurestore'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'))) diff --git a/sdk/python/pulumi_gcp/vertex/get_ai_featurestore_iam_policy.py b/sdk/python/pulumi_gcp/vertex/get_ai_featurestore_iam_policy.py index a93d11e7e5..3c6ff54729 100644 --- a/sdk/python/pulumi_gcp/vertex/get_ai_featurestore_iam_policy.py +++ b/sdk/python/pulumi_gcp/vertex/get_ai_featurestore_iam_policy.py @@ -129,9 +129,6 @@ def get_ai_featurestore_iam_policy(featurestore: Optional[str] = None, policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project'), region=pulumi.get(__ret__, 'region')) - - -@_utilities.lift_output_func(get_ai_featurestore_iam_policy) def get_ai_featurestore_iam_policy_output(featurestore: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, region: Optional[pulumi.Input[Optional[str]]] = None, @@ -146,4 +143,16 @@ def get_ai_featurestore_iam_policy_output(featurestore: Optional[pulumi.Input[st the value will be parsed from the identifier of the parent resource. If no region is provided in the parent identifier and no region is specified, it is taken from the provider configuration. """ - ... + __args__ = dict() + __args__['featurestore'] = featurestore + __args__['project'] = project + __args__['region'] = region + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:vertex/getAiFeaturestoreIamPolicy:getAiFeaturestoreIamPolicy', __args__, opts=opts, typ=GetAiFeaturestoreIamPolicyResult) + return __ret__.apply(lambda __response__: GetAiFeaturestoreIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + featurestore=pulumi.get(__response__, 'featurestore'), + id=pulumi.get(__response__, 'id'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'), + region=pulumi.get(__response__, 'region'))) diff --git a/sdk/python/pulumi_gcp/vertex/get_ai_index.py b/sdk/python/pulumi_gcp/vertex/get_ai_index.py index 5df57f2e00..5809214eee 100644 --- a/sdk/python/pulumi_gcp/vertex/get_ai_index.py +++ b/sdk/python/pulumi_gcp/vertex/get_ai_index.py @@ -233,9 +233,6 @@ def get_ai_index(name: Optional[str] = None, pulumi_labels=pulumi.get(__ret__, 'pulumi_labels'), region=pulumi.get(__ret__, 'region'), update_time=pulumi.get(__ret__, 'update_time')) - - -@_utilities.lift_output_func(get_ai_index) def get_ai_index_output(name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, region: Optional[pulumi.Input[str]] = None, @@ -250,4 +247,27 @@ def get_ai_index_output(name: Optional[pulumi.Input[str]] = None, - - - """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + __args__['region'] = region + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:vertex/getAiIndex:getAiIndex', __args__, opts=opts, typ=GetAiIndexResult) + return __ret__.apply(lambda __response__: GetAiIndexResult( + create_time=pulumi.get(__response__, 'create_time'), + deployed_indexes=pulumi.get(__response__, 'deployed_indexes'), + description=pulumi.get(__response__, 'description'), + display_name=pulumi.get(__response__, 'display_name'), + effective_labels=pulumi.get(__response__, 'effective_labels'), + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + index_stats=pulumi.get(__response__, 'index_stats'), + index_update_method=pulumi.get(__response__, 'index_update_method'), + labels=pulumi.get(__response__, 'labels'), + metadata_schema_uri=pulumi.get(__response__, 'metadata_schema_uri'), + metadatas=pulumi.get(__response__, 'metadatas'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + pulumi_labels=pulumi.get(__response__, 'pulumi_labels'), + region=pulumi.get(__response__, 'region'), + update_time=pulumi.get(__response__, 'update_time'))) diff --git a/sdk/python/pulumi_gcp/vmwareengine/get_cluster.py b/sdk/python/pulumi_gcp/vmwareengine/get_cluster.py index b8cf85b09c..fc224f15a0 100644 --- a/sdk/python/pulumi_gcp/vmwareengine/get_cluster.py +++ b/sdk/python/pulumi_gcp/vmwareengine/get_cluster.py @@ -141,9 +141,6 @@ def get_cluster(name: Optional[str] = None, parent=pulumi.get(__ret__, 'parent'), state=pulumi.get(__ret__, 'state'), uid=pulumi.get(__ret__, 'uid')) - - -@_utilities.lift_output_func(get_cluster) def get_cluster_output(name: Optional[pulumi.Input[str]] = None, parent: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetClusterResult]: @@ -167,4 +164,16 @@ def get_cluster_output(name: Optional[pulumi.Input[str]] = None, :param str name: Name of the resource. :param str parent: The resource name of the private cloud that this cluster belongs. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['parent'] = parent + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:vmwareengine/getCluster:getCluster', __args__, opts=opts, typ=GetClusterResult) + return __ret__.apply(lambda __response__: GetClusterResult( + id=pulumi.get(__response__, 'id'), + management=pulumi.get(__response__, 'management'), + name=pulumi.get(__response__, 'name'), + node_type_configs=pulumi.get(__response__, 'node_type_configs'), + parent=pulumi.get(__response__, 'parent'), + state=pulumi.get(__response__, 'state'), + uid=pulumi.get(__response__, 'uid'))) diff --git a/sdk/python/pulumi_gcp/vmwareengine/get_external_access_rule.py b/sdk/python/pulumi_gcp/vmwareengine/get_external_access_rule.py index c70b0c7196..012787bdc2 100644 --- a/sdk/python/pulumi_gcp/vmwareengine/get_external_access_rule.py +++ b/sdk/python/pulumi_gcp/vmwareengine/get_external_access_rule.py @@ -221,9 +221,6 @@ def get_external_access_rule(name: Optional[str] = None, state=pulumi.get(__ret__, 'state'), uid=pulumi.get(__ret__, 'uid'), update_time=pulumi.get(__ret__, 'update_time')) - - -@_utilities.lift_output_func(get_external_access_rule) def get_external_access_rule_output(name: Optional[pulumi.Input[str]] = None, parent: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetExternalAccessRuleResult]: @@ -247,4 +244,24 @@ def get_external_access_rule_output(name: Optional[pulumi.Input[str]] = None, :param str name: Name of the resource. :param str parent: The resource name of the network policy that this cluster belongs. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['parent'] = parent + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:vmwareengine/getExternalAccessRule:getExternalAccessRule', __args__, opts=opts, typ=GetExternalAccessRuleResult) + return __ret__.apply(lambda __response__: GetExternalAccessRuleResult( + action=pulumi.get(__response__, 'action'), + create_time=pulumi.get(__response__, 'create_time'), + description=pulumi.get(__response__, 'description'), + destination_ip_ranges=pulumi.get(__response__, 'destination_ip_ranges'), + destination_ports=pulumi.get(__response__, 'destination_ports'), + id=pulumi.get(__response__, 'id'), + ip_protocol=pulumi.get(__response__, 'ip_protocol'), + name=pulumi.get(__response__, 'name'), + parent=pulumi.get(__response__, 'parent'), + priority=pulumi.get(__response__, 'priority'), + source_ip_ranges=pulumi.get(__response__, 'source_ip_ranges'), + source_ports=pulumi.get(__response__, 'source_ports'), + state=pulumi.get(__response__, 'state'), + uid=pulumi.get(__response__, 'uid'), + update_time=pulumi.get(__response__, 'update_time'))) diff --git a/sdk/python/pulumi_gcp/vmwareengine/get_external_address.py b/sdk/python/pulumi_gcp/vmwareengine/get_external_address.py index 55dd00b004..7b1580e388 100644 --- a/sdk/python/pulumi_gcp/vmwareengine/get_external_address.py +++ b/sdk/python/pulumi_gcp/vmwareengine/get_external_address.py @@ -170,9 +170,6 @@ def get_external_address(name: Optional[str] = None, state=pulumi.get(__ret__, 'state'), uid=pulumi.get(__ret__, 'uid'), update_time=pulumi.get(__ret__, 'update_time')) - - -@_utilities.lift_output_func(get_external_address) def get_external_address_output(name: Optional[pulumi.Input[str]] = None, parent: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetExternalAddressResult]: @@ -196,4 +193,19 @@ def get_external_address_output(name: Optional[pulumi.Input[str]] = None, :param str name: Name of the resource. :param str parent: The resource name of the private cloud that this cluster belongs. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['parent'] = parent + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:vmwareengine/getExternalAddress:getExternalAddress', __args__, opts=opts, typ=GetExternalAddressResult) + return __ret__.apply(lambda __response__: GetExternalAddressResult( + create_time=pulumi.get(__response__, 'create_time'), + description=pulumi.get(__response__, 'description'), + external_ip=pulumi.get(__response__, 'external_ip'), + id=pulumi.get(__response__, 'id'), + internal_ip=pulumi.get(__response__, 'internal_ip'), + name=pulumi.get(__response__, 'name'), + parent=pulumi.get(__response__, 'parent'), + state=pulumi.get(__response__, 'state'), + uid=pulumi.get(__response__, 'uid'), + update_time=pulumi.get(__response__, 'update_time'))) diff --git a/sdk/python/pulumi_gcp/vmwareengine/get_network.py b/sdk/python/pulumi_gcp/vmwareengine/get_network.py index 8e6b1938a1..e202989448 100644 --- a/sdk/python/pulumi_gcp/vmwareengine/get_network.py +++ b/sdk/python/pulumi_gcp/vmwareengine/get_network.py @@ -166,9 +166,6 @@ def get_network(location: Optional[str] = None, type=pulumi.get(__ret__, 'type'), uid=pulumi.get(__ret__, 'uid'), vpc_networks=pulumi.get(__ret__, 'vpc_networks')) - - -@_utilities.lift_output_func(get_network) def get_network_output(location: Optional[pulumi.Input[str]] = None, name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -196,4 +193,19 @@ def get_network_output(location: Optional[pulumi.Input[str]] = None, :param str name: Name of the resource. :param str project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['location'] = location + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:vmwareengine/getNetwork:getNetwork', __args__, opts=opts, typ=GetNetworkResult) + return __ret__.apply(lambda __response__: GetNetworkResult( + description=pulumi.get(__response__, 'description'), + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + state=pulumi.get(__response__, 'state'), + type=pulumi.get(__response__, 'type'), + uid=pulumi.get(__response__, 'uid'), + vpc_networks=pulumi.get(__response__, 'vpc_networks'))) diff --git a/sdk/python/pulumi_gcp/vmwareengine/get_network_peering.py b/sdk/python/pulumi_gcp/vmwareengine/get_network_peering.py index 696bc54996..ae92bbcbf7 100644 --- a/sdk/python/pulumi_gcp/vmwareengine/get_network_peering.py +++ b/sdk/python/pulumi_gcp/vmwareengine/get_network_peering.py @@ -238,9 +238,6 @@ def get_network_peering(name: Optional[str] = None, update_time=pulumi.get(__ret__, 'update_time'), vmware_engine_network=pulumi.get(__ret__, 'vmware_engine_network'), vmware_engine_network_canonical=pulumi.get(__ret__, 'vmware_engine_network_canonical')) - - -@_utilities.lift_output_func(get_network_peering) def get_network_peering_output(name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetNetworkPeeringResult]: @@ -262,4 +259,26 @@ def get_network_peering_output(name: Optional[pulumi.Input[str]] = None, :param str name: Name of the resource. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:vmwareengine/getNetworkPeering:getNetworkPeering', __args__, opts=opts, typ=GetNetworkPeeringResult) + return __ret__.apply(lambda __response__: GetNetworkPeeringResult( + create_time=pulumi.get(__response__, 'create_time'), + description=pulumi.get(__response__, 'description'), + export_custom_routes=pulumi.get(__response__, 'export_custom_routes'), + export_custom_routes_with_public_ip=pulumi.get(__response__, 'export_custom_routes_with_public_ip'), + id=pulumi.get(__response__, 'id'), + import_custom_routes=pulumi.get(__response__, 'import_custom_routes'), + import_custom_routes_with_public_ip=pulumi.get(__response__, 'import_custom_routes_with_public_ip'), + name=pulumi.get(__response__, 'name'), + peer_network=pulumi.get(__response__, 'peer_network'), + peer_network_type=pulumi.get(__response__, 'peer_network_type'), + project=pulumi.get(__response__, 'project'), + state=pulumi.get(__response__, 'state'), + state_details=pulumi.get(__response__, 'state_details'), + uid=pulumi.get(__response__, 'uid'), + update_time=pulumi.get(__response__, 'update_time'), + vmware_engine_network=pulumi.get(__response__, 'vmware_engine_network'), + vmware_engine_network_canonical=pulumi.get(__response__, 'vmware_engine_network_canonical'))) diff --git a/sdk/python/pulumi_gcp/vmwareengine/get_network_policy.py b/sdk/python/pulumi_gcp/vmwareengine/get_network_policy.py index 750d677086..0fdab90361 100644 --- a/sdk/python/pulumi_gcp/vmwareengine/get_network_policy.py +++ b/sdk/python/pulumi_gcp/vmwareengine/get_network_policy.py @@ -203,9 +203,6 @@ def get_network_policy(location: Optional[str] = None, update_time=pulumi.get(__ret__, 'update_time'), vmware_engine_network=pulumi.get(__ret__, 'vmware_engine_network'), vmware_engine_network_canonical=pulumi.get(__ret__, 'vmware_engine_network_canonical')) - - -@_utilities.lift_output_func(get_network_policy) def get_network_policy_output(location: Optional[pulumi.Input[str]] = None, name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -230,4 +227,23 @@ def get_network_policy_output(location: Optional[pulumi.Input[str]] = None, :param str location: Location of the resource. :param str name: Name of the resource. """ - ... + __args__ = dict() + __args__['location'] = location + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:vmwareengine/getNetworkPolicy:getNetworkPolicy', __args__, opts=opts, typ=GetNetworkPolicyResult) + return __ret__.apply(lambda __response__: GetNetworkPolicyResult( + create_time=pulumi.get(__response__, 'create_time'), + description=pulumi.get(__response__, 'description'), + edge_services_cidr=pulumi.get(__response__, 'edge_services_cidr'), + external_ips=pulumi.get(__response__, 'external_ips'), + id=pulumi.get(__response__, 'id'), + internet_accesses=pulumi.get(__response__, 'internet_accesses'), + location=pulumi.get(__response__, 'location'), + name=pulumi.get(__response__, 'name'), + project=pulumi.get(__response__, 'project'), + uid=pulumi.get(__response__, 'uid'), + update_time=pulumi.get(__response__, 'update_time'), + vmware_engine_network=pulumi.get(__response__, 'vmware_engine_network'), + vmware_engine_network_canonical=pulumi.get(__response__, 'vmware_engine_network_canonical'))) diff --git a/sdk/python/pulumi_gcp/vmwareengine/get_nsx_credentials.py b/sdk/python/pulumi_gcp/vmwareengine/get_nsx_credentials.py index 010f3df2a4..56693f9ce9 100644 --- a/sdk/python/pulumi_gcp/vmwareengine/get_nsx_credentials.py +++ b/sdk/python/pulumi_gcp/vmwareengine/get_nsx_credentials.py @@ -112,9 +112,6 @@ def get_nsx_credentials(parent: Optional[str] = None, parent=pulumi.get(__ret__, 'parent'), password=pulumi.get(__ret__, 'password'), username=pulumi.get(__ret__, 'username')) - - -@_utilities.lift_output_func(get_nsx_credentials) def get_nsx_credentials_output(parent: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetNsxCredentialsResult]: """ @@ -135,4 +132,12 @@ def get_nsx_credentials_output(parent: Optional[pulumi.Input[str]] = None, :param str parent: The resource name of the private cloud which contains the NSX. """ - ... + __args__ = dict() + __args__['parent'] = parent + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:vmwareengine/getNsxCredentials:getNsxCredentials', __args__, opts=opts, typ=GetNsxCredentialsResult) + return __ret__.apply(lambda __response__: GetNsxCredentialsResult( + id=pulumi.get(__response__, 'id'), + parent=pulumi.get(__response__, 'parent'), + password=pulumi.get(__response__, 'password'), + username=pulumi.get(__response__, 'username'))) diff --git a/sdk/python/pulumi_gcp/vmwareengine/get_private_cloud.py b/sdk/python/pulumi_gcp/vmwareengine/get_private_cloud.py index 87fcccf455..bbaffc93cb 100644 --- a/sdk/python/pulumi_gcp/vmwareengine/get_private_cloud.py +++ b/sdk/python/pulumi_gcp/vmwareengine/get_private_cloud.py @@ -227,9 +227,6 @@ def get_private_cloud(location: Optional[str] = None, type=pulumi.get(__ret__, 'type'), uid=pulumi.get(__ret__, 'uid'), vcenters=pulumi.get(__ret__, 'vcenters')) - - -@_utilities.lift_output_func(get_private_cloud) def get_private_cloud_output(location: Optional[pulumi.Input[str]] = None, name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -258,4 +255,25 @@ def get_private_cloud_output(location: Optional[pulumi.Input[str]] = None, :param str project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. """ - ... + __args__ = dict() + __args__['location'] = location + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:vmwareengine/getPrivateCloud:getPrivateCloud', __args__, opts=opts, typ=GetPrivateCloudResult) + return __ret__.apply(lambda __response__: GetPrivateCloudResult( + deletion_delay_hours=pulumi.get(__response__, 'deletion_delay_hours'), + description=pulumi.get(__response__, 'description'), + hcxes=pulumi.get(__response__, 'hcxes'), + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + management_clusters=pulumi.get(__response__, 'management_clusters'), + name=pulumi.get(__response__, 'name'), + network_configs=pulumi.get(__response__, 'network_configs'), + nsxes=pulumi.get(__response__, 'nsxes'), + project=pulumi.get(__response__, 'project'), + send_deletion_delay_hours_if_zero=pulumi.get(__response__, 'send_deletion_delay_hours_if_zero'), + state=pulumi.get(__response__, 'state'), + type=pulumi.get(__response__, 'type'), + uid=pulumi.get(__response__, 'uid'), + vcenters=pulumi.get(__response__, 'vcenters'))) diff --git a/sdk/python/pulumi_gcp/vmwareengine/get_subnet.py b/sdk/python/pulumi_gcp/vmwareengine/get_subnet.py index 899ad2ac66..00e8a1157f 100644 --- a/sdk/python/pulumi_gcp/vmwareengine/get_subnet.py +++ b/sdk/python/pulumi_gcp/vmwareengine/get_subnet.py @@ -213,9 +213,6 @@ def get_subnet(name: Optional[str] = None, uid=pulumi.get(__ret__, 'uid'), update_time=pulumi.get(__ret__, 'update_time'), vlan_id=pulumi.get(__ret__, 'vlan_id')) - - -@_utilities.lift_output_func(get_subnet) def get_subnet_output(name: Optional[pulumi.Input[str]] = None, parent: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetSubnetResult]: @@ -241,4 +238,23 @@ def get_subnet_output(name: Optional[pulumi.Input[str]] = None, Management subnets have arbitary names including "vmotion", "vsan", "system-management" etc. More details about subnet names can be found on the cloud console. :param str parent: The resource name of the private cloud that this subnet belongs. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['parent'] = parent + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:vmwareengine/getSubnet:getSubnet', __args__, opts=opts, typ=GetSubnetResult) + return __ret__.apply(lambda __response__: GetSubnetResult( + create_time=pulumi.get(__response__, 'create_time'), + dhcp_address_ranges=pulumi.get(__response__, 'dhcp_address_ranges'), + gateway_id=pulumi.get(__response__, 'gateway_id'), + gateway_ip=pulumi.get(__response__, 'gateway_ip'), + id=pulumi.get(__response__, 'id'), + ip_cidr_range=pulumi.get(__response__, 'ip_cidr_range'), + name=pulumi.get(__response__, 'name'), + parent=pulumi.get(__response__, 'parent'), + standard_config=pulumi.get(__response__, 'standard_config'), + state=pulumi.get(__response__, 'state'), + type=pulumi.get(__response__, 'type'), + uid=pulumi.get(__response__, 'uid'), + update_time=pulumi.get(__response__, 'update_time'), + vlan_id=pulumi.get(__response__, 'vlan_id'))) diff --git a/sdk/python/pulumi_gcp/vmwareengine/get_vcenter_credentials.py b/sdk/python/pulumi_gcp/vmwareengine/get_vcenter_credentials.py index 3db027c534..5e062f2700 100644 --- a/sdk/python/pulumi_gcp/vmwareengine/get_vcenter_credentials.py +++ b/sdk/python/pulumi_gcp/vmwareengine/get_vcenter_credentials.py @@ -112,9 +112,6 @@ def get_vcenter_credentials(parent: Optional[str] = None, parent=pulumi.get(__ret__, 'parent'), password=pulumi.get(__ret__, 'password'), username=pulumi.get(__ret__, 'username')) - - -@_utilities.lift_output_func(get_vcenter_credentials) def get_vcenter_credentials_output(parent: Optional[pulumi.Input[str]] = None, opts: Optional[pulumi.InvokeOptions] = None) -> pulumi.Output[GetVcenterCredentialsResult]: """ @@ -135,4 +132,12 @@ def get_vcenter_credentials_output(parent: Optional[pulumi.Input[str]] = None, :param str parent: The resource name of the private cloud which contains the Vcenter. """ - ... + __args__ = dict() + __args__['parent'] = parent + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:vmwareengine/getVcenterCredentials:getVcenterCredentials', __args__, opts=opts, typ=GetVcenterCredentialsResult) + return __ret__.apply(lambda __response__: GetVcenterCredentialsResult( + id=pulumi.get(__response__, 'id'), + parent=pulumi.get(__response__, 'parent'), + password=pulumi.get(__response__, 'password'), + username=pulumi.get(__response__, 'username'))) diff --git a/sdk/python/pulumi_gcp/vpcaccess/get_connector.py b/sdk/python/pulumi_gcp/vpcaccess/get_connector.py index 0826ee74ba..38da4d21b4 100644 --- a/sdk/python/pulumi_gcp/vpcaccess/get_connector.py +++ b/sdk/python/pulumi_gcp/vpcaccess/get_connector.py @@ -237,9 +237,6 @@ def get_connector(name: Optional[str] = None, self_link=pulumi.get(__ret__, 'self_link'), state=pulumi.get(__ret__, 'state'), subnets=pulumi.get(__ret__, 'subnets')) - - -@_utilities.lift_output_func(get_connector) def get_connector_output(name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, region: Optional[pulumi.Input[Optional[str]]] = None, @@ -278,4 +275,25 @@ def get_connector_output(name: Optional[pulumi.Input[str]] = None, :param str region: The region in which the resource belongs. If it is not provided, the provider region is used. """ - ... + __args__ = dict() + __args__['name'] = name + __args__['project'] = project + __args__['region'] = region + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:vpcaccess/getConnector:getConnector', __args__, opts=opts, typ=GetConnectorResult) + return __ret__.apply(lambda __response__: GetConnectorResult( + connected_projects=pulumi.get(__response__, 'connected_projects'), + id=pulumi.get(__response__, 'id'), + ip_cidr_range=pulumi.get(__response__, 'ip_cidr_range'), + machine_type=pulumi.get(__response__, 'machine_type'), + max_instances=pulumi.get(__response__, 'max_instances'), + max_throughput=pulumi.get(__response__, 'max_throughput'), + min_instances=pulumi.get(__response__, 'min_instances'), + min_throughput=pulumi.get(__response__, 'min_throughput'), + name=pulumi.get(__response__, 'name'), + network=pulumi.get(__response__, 'network'), + project=pulumi.get(__response__, 'project'), + region=pulumi.get(__response__, 'region'), + self_link=pulumi.get(__response__, 'self_link'), + state=pulumi.get(__response__, 'state'), + subnets=pulumi.get(__response__, 'subnets'))) diff --git a/sdk/python/pulumi_gcp/workbench/get_instance_iam_policy.py b/sdk/python/pulumi_gcp/workbench/get_instance_iam_policy.py index f622acfa81..e68b2ed809 100644 --- a/sdk/python/pulumi_gcp/workbench/get_instance_iam_policy.py +++ b/sdk/python/pulumi_gcp/workbench/get_instance_iam_policy.py @@ -141,9 +141,6 @@ def get_instance_iam_policy(location: Optional[str] = None, name=pulumi.get(__ret__, 'name'), policy_data=pulumi.get(__ret__, 'policy_data'), project=pulumi.get(__ret__, 'project')) - - -@_utilities.lift_output_func(get_instance_iam_policy) def get_instance_iam_policy_output(location: Optional[pulumi.Input[Optional[str]]] = None, name: Optional[pulumi.Input[str]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, @@ -170,4 +167,16 @@ def get_instance_iam_policy_output(location: Optional[pulumi.Input[Optional[str] :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['location'] = location + __args__['name'] = name + __args__['project'] = project + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:workbench/getInstanceIamPolicy:getInstanceIamPolicy', __args__, opts=opts, typ=GetInstanceIamPolicyResult) + return __ret__.apply(lambda __response__: GetInstanceIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + name=pulumi.get(__response__, 'name'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'))) diff --git a/sdk/python/pulumi_gcp/workstations/get_workstation_config_iam_policy.py b/sdk/python/pulumi_gcp/workstations/get_workstation_config_iam_policy.py index 4daf3c463f..83f4f43510 100644 --- a/sdk/python/pulumi_gcp/workstations/get_workstation_config_iam_policy.py +++ b/sdk/python/pulumi_gcp/workstations/get_workstation_config_iam_policy.py @@ -141,9 +141,6 @@ def get_workstation_config_iam_policy(location: Optional[str] = None, project=pulumi.get(__ret__, 'project'), workstation_cluster_id=pulumi.get(__ret__, 'workstation_cluster_id'), workstation_config_id=pulumi.get(__ret__, 'workstation_config_id')) - - -@_utilities.lift_output_func(get_workstation_config_iam_policy) def get_workstation_config_iam_policy_output(location: Optional[pulumi.Input[Optional[str]]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, workstation_cluster_id: Optional[pulumi.Input[str]] = None, @@ -159,4 +156,18 @@ def get_workstation_config_iam_policy_output(location: Optional[pulumi.Input[Opt :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['location'] = location + __args__['project'] = project + __args__['workstationClusterId'] = workstation_cluster_id + __args__['workstationConfigId'] = workstation_config_id + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:workstations/getWorkstationConfigIamPolicy:getWorkstationConfigIamPolicy', __args__, opts=opts, typ=GetWorkstationConfigIamPolicyResult) + return __ret__.apply(lambda __response__: GetWorkstationConfigIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'), + workstation_cluster_id=pulumi.get(__response__, 'workstation_cluster_id'), + workstation_config_id=pulumi.get(__response__, 'workstation_config_id'))) diff --git a/sdk/python/pulumi_gcp/workstations/get_workstation_iam_policy.py b/sdk/python/pulumi_gcp/workstations/get_workstation_iam_policy.py index 9c02a6fd66..75d8189161 100644 --- a/sdk/python/pulumi_gcp/workstations/get_workstation_iam_policy.py +++ b/sdk/python/pulumi_gcp/workstations/get_workstation_iam_policy.py @@ -153,9 +153,6 @@ def get_workstation_iam_policy(location: Optional[str] = None, workstation_cluster_id=pulumi.get(__ret__, 'workstation_cluster_id'), workstation_config_id=pulumi.get(__ret__, 'workstation_config_id'), workstation_id=pulumi.get(__ret__, 'workstation_id')) - - -@_utilities.lift_output_func(get_workstation_iam_policy) def get_workstation_iam_policy_output(location: Optional[pulumi.Input[Optional[str]]] = None, project: Optional[pulumi.Input[Optional[str]]] = None, workstation_cluster_id: Optional[pulumi.Input[str]] = None, @@ -172,4 +169,20 @@ def get_workstation_iam_policy_output(location: Optional[pulumi.Input[Optional[s :param str project: The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used. """ - ... + __args__ = dict() + __args__['location'] = location + __args__['project'] = project + __args__['workstationClusterId'] = workstation_cluster_id + __args__['workstationConfigId'] = workstation_config_id + __args__['workstationId'] = workstation_id + opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts) + __ret__ = pulumi.runtime.invoke_output('gcp:workstations/getWorkstationIamPolicy:getWorkstationIamPolicy', __args__, opts=opts, typ=GetWorkstationIamPolicyResult) + return __ret__.apply(lambda __response__: GetWorkstationIamPolicyResult( + etag=pulumi.get(__response__, 'etag'), + id=pulumi.get(__response__, 'id'), + location=pulumi.get(__response__, 'location'), + policy_data=pulumi.get(__response__, 'policy_data'), + project=pulumi.get(__response__, 'project'), + workstation_cluster_id=pulumi.get(__response__, 'workstation_cluster_id'), + workstation_config_id=pulumi.get(__response__, 'workstation_config_id'), + workstation_id=pulumi.get(__response__, 'workstation_id'))) diff --git a/sdk/python/pulumi_gcp/workstations/workstation_config.py b/sdk/python/pulumi_gcp/workstations/workstation_config.py index 72e61347c6..b66faaee15 100644 --- a/sdk/python/pulumi_gcp/workstations/workstation_config.py +++ b/sdk/python/pulumi_gcp/workstations/workstation_config.py @@ -917,7 +917,7 @@ def __init__(__self__, tagKey1Name=tag_key1.name, tagValue1Name=tag_value1.name ).apply(lambda resolved_outputs: { - "": f"tagValues/{resolved_outputs['tagValue1Name']}", + f"tagKeys/{resolved_outputs['tagKey1Name']}": f"tagValues/{resolved_outputs['tagValue1Name']}", }) , }, @@ -963,8 +963,8 @@ def __init__(__self__, container={ "image": "intellij", "env": { - "name": "FOO", - "babe": "bar", + "NAME": "FOO", + "BABE": "bar", }, }) ``` @@ -1380,7 +1380,7 @@ def __init__(__self__, tagKey1Name=tag_key1.name, tagValue1Name=tag_value1.name ).apply(lambda resolved_outputs: { - "": f"tagValues/{resolved_outputs['tagValue1Name']}", + f"tagKeys/{resolved_outputs['tagKey1Name']}": f"tagValues/{resolved_outputs['tagValue1Name']}", }) , }, @@ -1426,8 +1426,8 @@ def __init__(__self__, container={ "image": "intellij", "env": { - "name": "FOO", - "babe": "bar", + "NAME": "FOO", + "BABE": "bar", }, }) ```